Voice et bot modif

This commit is contained in:
pi 2026-06-16 17:09:34 +00:00
parent 189d56026b
commit 7333a22bcd
10774 changed files with 634644 additions and 933308 deletions

View file

@ -0,0 +1 @@
pip

View file

@ -0,0 +1,127 @@
Metadata-Version: 2.4
Name: av
Version: 17.1.0
Summary: Pythonic bindings for FFmpeg's libraries.
Author-email: WyattBlue <wyattblue@auto-editor.com>, Jeremy Lainé <jeremy.laine@m4x.org>
License-Expression: BSD-3-Clause
Project-URL: Bug Tracker, https://github.com/PyAV-Org/PyAV/issues
Project-URL: Source Code, https://github.com/PyAV-Org/PyAV
Project-URL: homepage, https://pyav.basswood-io.com
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: POSIX
Classifier: Operating System :: Unix
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Cython
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Multimedia :: Sound/Audio
Classifier: Topic :: Multimedia :: Sound/Audio :: Conversion
Classifier: Topic :: Multimedia :: Video
Classifier: Topic :: Multimedia :: Video :: Conversion
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE.txt
License-File: AUTHORS.py
License-File: AUTHORS.rst
Dynamic: license-file
PyAV
====
PyAV is a Pythonic binding for the [FFmpeg][ffmpeg] libraries. We aim to provide all of the power and control of the underlying library, but manage the gritty details as much as possible.
---
[![GitHub Test Status][github-tests-badge]][github-tests] [![Documentation][docs-badge]][docs] [![Python Package Index][pypi-badge]][pypi] [![Conda Forge][conda-badge]][conda]
PyAV is for direct and precise access to your media via containers, streams, packets, codecs, and frames. It exposes a few transformations of that data, and helps you get your data to/from other packages (e.g. Numpy and Pillow).
This power does come with some responsibility as working with media is horrendously complicated and PyAV can't abstract it away or make all the best decisions for you. If the `ffmpeg` command does the job without you bending over backwards, PyAV is likely going to be more of a hindrance than a help.
But where you can't work without it, PyAV is a critical tool.
Installation
------------
Binary wheels are provided on [PyPI][pypi] for Linux, MacOS and Windows linked against the latest stable version of ffmpeg. You can install these wheels by running:
```bash
pip install av
```
Another way of installing PyAV is via [conda-forge][conda-forge]:
```bash
conda install av -c conda-forge
```
See the [Conda install][conda-install] docs to get started with (mini)Conda.
Alternative installation methods
--------------------------------
Due to the complexity of the dependencies, PyAV is not always the easiest Python package to install from source. If you want to use your existing ffmpeg (must be the correct major version), the source version of PyAV is on [PyPI][pypi]:
> [!WARNING]
> You must be in a posix env, and have the correct version of ffmpeg installed on your system.
```bash
pip install av --no-binary av
```
Installing From Source
----------------------
Here's how to build PyAV from source. You must use [MSYS2](https://www.msys2.org/) when using Windows.
```bash
git clone https://github.com/PyAV-Org/PyAV.git
cd PyAV
source scripts/activate.sh
# Build ffmpeg from source. You can skip this step
# if ffmpeg is already installed.
./scripts/build-deps
# Build PyAV
make
# Testing
make test
# Install globally
deactivate
pip install .
```
---
Have fun, [read the docs][docs], [come chat with us][discuss], and good luck!
[conda-badge]: https://img.shields.io/conda/vn/conda-forge/av.svg?colorB=CCB39A
[conda]: https://anaconda.org/conda-forge/av
[docs-badge]: https://img.shields.io/badge/docs-on%20pyav.basswood--io.com-blue.svg
[docs]: https://pyav.basswood-io.com
[pypi-badge]: https://img.shields.io/pypi/v/av.svg?colorB=CCB39A
[pypi]: https://pypi.org/project/av
[discuss]: https://github.com/PyAV-Org/PyAV/discussions
[github-tests-badge]: https://github.com/PyAV-Org/PyAV/workflows/tests/badge.svg
[github-tests]: https://github.com/PyAV-Org/PyAV/actions?workflow=tests
[github]: https://github.com/PyAV-Org/PyAV
[ffmpeg]: https://ffmpeg.org/
[conda-forge]: https://conda-forge.github.io/
[conda-install]: https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html

View file

@ -0,0 +1,317 @@
../../../bin/pyav,sha256=V3_WjisCH6Da3SBdb5QhQieAAMANLAHwZUEMhSu9PIE,229
av-17.1.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
av-17.1.0.dist-info/METADATA,sha256=icLfisEQuey0LC6JWPu26d3P56lMXX3MJ3dfQ8dCxBA,4597
av-17.1.0.dist-info/RECORD,,
av-17.1.0.dist-info/WHEEL,sha256=-U_0ABZGYhgPVNn1v3hY3wqD3BLw1AnG3Ig7mDHAcwg,112
av-17.1.0.dist-info/entry_points.txt,sha256=3XMdM30ih673nLSRVzDsHLBmGYNlt7wQ1xyW8xoHAzg,42
av-17.1.0.dist-info/licenses/AUTHORS.py,sha256=Tsbg3KPQcDrr77OG0-tu0UoF2W_osKoItSwtKVGBf-w,5558
av-17.1.0.dist-info/licenses/AUTHORS.rst,sha256=rbOps1qLdLtZcybex3XXSp95tN7KxU2iZqndsgtdoUI,5996
av-17.1.0.dist-info/licenses/LICENSE.txt,sha256=dq8EYf-5LhnxwURJ6VVX2Dot-qG68gLUnl8dh0bA2hk,1505
av-17.1.0.dist-info/licenses/__pycache__/AUTHORS.cpython-312.pyc,,
av-17.1.0.dist-info/sboms/auditwheel.cdx.json,sha256=vewYz8iH2AM7XSsr4hR4IO4zVrjHjjikXGd6lwuo4lw,3465
av-17.1.0.dist-info/top_level.txt,sha256=TuQF-stvFHN8ilfr36ctqc7_MR5IOhUqrR0i6i5gNR8,3
av.libs/libSvtAv1Enc-9393c086.so.4.1.0,sha256=nLX1cZYUNCfF8WX5i4ihdOBsWS5aiEUH9a3NiyBHJBQ,7061777
av.libs/libXau-154567c4.so.6.0.0,sha256=BUhNJL94y47QMWnxywZyBNgpy3ryHeiCBADSnRFeQyA,22081
av.libs/libasound-c7818c60.so.2.0.0,sha256=te_BfMX691jtFVTtOsQyLgOkO2tJAN7LdwAuRpSq-nA,1162289
av.libs/libavcodec-c3f15378.so.62.28.101,sha256=ukRgcwltmBHjM51raycjsnqs8gWW7McuePNmz6ocGcw,18778641
av.libs/libavdevice-2cf5cc3f.so.62.3.101,sha256=pgRfg7mWgbAI4Wjnn_obV_-8IOwRuFqpyR_Q7gy7294,115697
av.libs/libavfilter-38c1812d.so.11.14.101,sha256=2CEYiJNcYn3U3dLhwUQ2Q8MN6rY19r6Kny0kc2TZdC8,5443969
av.libs/libavformat-ec222fac.so.62.12.101,sha256=nDCuAIlsSA_G9cyX0jKaZ7FaO6qeqhqz4w0TLt8EokQ,2958497
av.libs/libavutil-04440b0f.so.60.26.101,sha256=Oph70C-cQFgDQKWiOhu4HSm-G-tYx1ly4NrGHJnfohU,1091313
av.libs/libdav1d-f4b27961.so.7.0.0,sha256=sYnn4EKxIx5RzyjqxPVUyNpSohPKUZcT3XxB2fhJhFE,2024729
av.libs/libdrm-b0291a67.so.2.4.0,sha256=K48ZAlNAuvSdX7i2toETxCm6886w4E17JmP2c8RM2-0,96417
av.libs/libgmp-8c6c054f.so.10.5.0,sha256=POyCYSCU4iNC0ytLoiulgtibSmj_goe7CJ0n4TPcOl4,511649
av.libs/libgnutls-71454fd1.so.30.42.0,sha256=qrv0u2_jBYWsDHBNS1BaspobS437MKsr-JKNxYrGPWY,2416425
av.libs/libhogweed-006f41d4.so.6.11,sha256=goecS3wrzYPWfjUIwwCJr6OY5WLc-_IVi0UeIiOhgbA,320913
av.libs/libmp3lame-8f9e436f.so.0.0.0,sha256=bMjkcPVkTCP3Qbfxfzi6C5VwAneDbXsjBSgLf-3yItY,421065
av.libs/libnettle-71a806b4.so.8.11,sha256=OoCcTRU8wS1FhvrX8fwQW9fmNV9-O5xxl34Ya1bgV8E,359649
av.libs/libopencore-amrnb-d72c52e2.so.0.0.5,sha256=kMlnxMZcS4gFbZbIhpg53b-ghS2o_PnIb3DVjzQBtQ8,172849
av.libs/libopencore-amrwb-1b0ca122.so.0.0.5,sha256=rkqphHJ3tNeu98L1QSyGCDTdDfdPpv6cVI-YHUuFNcg,90761
av.libs/libopus-114e2b1a.so.0.11.1,sha256=lpTrqVEREqoylszIbP5d9gQGgz8DsaVrAI5_BDGlFQc,433329
av.libs/libsharpyuv-48a062bd.so.0.1.2,sha256=VABEfQyHqU4nOfVr2RWmIseEkHmbWqLPNs4Yp9uOeYY,50153
av.libs/libswresample-e1033d35.so.6.3.101,sha256=G3SkKqMlnWid6SGJ5Fos2CTQePgBdEvvzEG8kQ2_TQU,148745
av.libs/libswscale-15608d2f.so.9.5.101,sha256=uoTnhdRPwCrujFTsA7F9CRzAgPd6iMzX8jp7ZAXW3UY,2013305
av.libs/libunistring-9e529e5a.so.5.2.1,sha256=kSzzPVpjQ-PIaSRvmIxmCaKtHiCFXhcV0wbW2KMNqAA,2045377
av.libs/libvpl-e4e9cae8.so.2.16,sha256=rPABXJx1HiJgkjZq2hQLBeizH4EgvUQ-RJRAWm2gkZ4,428369
av.libs/libvpx-edb6de90.so.12.0.0,sha256=_Ie8PHxnR_L3banKPy9VdAb1NszOIlLSsBOWHoOu4Ic,2344937
av.libs/libwebp-0c5118d0.so.7.2.0,sha256=KFSwxqeXV10Dxn2Rtw9b0tgtLOMOYt6tQRKxzuvL-5g,747633
av.libs/libwebpmux-e1880640.so.3.1.2,sha256=b_J1mviieLVkRRID3qNrUHfhLfuuTHAFJVFtSYSojZE,64329
av.libs/libx264-d6533a8d.so.165,sha256=VYfS0GCRTi5SaU41cDp8jyDzFD6vqVZwbgiQSd87WAs,2177713
av.libs/libx265-f5385bb8.so.216,sha256=4wThs7Y2fpAoN7mgDQvFuQ2Dpw4fu2myfzTYyXDEt2U,20591817
av.libs/libxcb-5ddf6756.so.1.1.0,sha256=LzS0BrO8-e9A3waYRgDBJHMxRM5Le9qhViLlj57yfdg,280065
av.libs/libxcb-shape-7716c890.so.0.0.0,sha256=M96R5R2DQdH1Q9WSAkesG13XhNJo01f3Gym1TsByegc,25865
av.libs/libxcb-shm-0be6dfbf.so.0.0.0,sha256=i9sHx7PzMbqniF_KNxUXR96cKsAa5E1YdicerlVh8lQ,26329
av.libs/libxcb-xfixes-6de855b8.so.0.0.0,sha256=GkmekzVrEdJMRJF3VIt7GumTpJpTf38mn9R3AU6pPpk,57617
av/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/__init__.py,sha256=vyggkKciHoepXPZUQvVpRRpN-EXIGWAxLkZRZkMMhKI,2249
av/__main__.py,sha256=x6yMMfLGUHLly2_PlYwsHr1fsZIvaauzPVe3ZAVAuCM,1568
av/__pycache__/__init__.cpython-312.pyc,,
av/__pycache__/__main__.cpython-312.pyc,,
av/__pycache__/_core.cpython-312.pyc,,
av/__pycache__/about.cpython-312.pyc,,
av/__pycache__/bitstream.cpython-312.pyc,,
av/__pycache__/buffer.cpython-312.pyc,,
av/__pycache__/datasets.cpython-312.pyc,,
av/__pycache__/device.cpython-312.pyc,,
av/__pycache__/dictionary.cpython-312.pyc,,
av/__pycache__/error.cpython-312.pyc,,
av/__pycache__/format.cpython-312.pyc,,
av/__pycache__/frame.cpython-312.pyc,,
av/__pycache__/index.cpython-312.pyc,,
av/__pycache__/logging.cpython-312.pyc,,
av/__pycache__/opaque.cpython-312.pyc,,
av/__pycache__/packet.cpython-312.pyc,,
av/__pycache__/plane.cpython-312.pyc,,
av/__pycache__/stream.cpython-312.pyc,,
av/__pycache__/utils.cpython-312.pyc,,
av/_core.abi3.so,sha256=KaWL82uTq9z-Ar57EqcLB3UzdiKI7MS6PO3aRaLBLyo,154833
av/_core.pxd,sha256=uMyjqyDhhL57NCdDjWp-s-1HCxG8E0ebfrjfwQ00qpA,316
av/_core.py,sha256=M2OoJt4fkxgYYXNOvbvk8OsV4D7dd3gv0TZhs10_3wA,1945
av/_core.pyi,sha256=FAlEwvbG4HgiXmupnWpi1jebTWRqVvE8QFOTxZhqbp0,251
av/about.py,sha256=xUHx-wsQuyzyIcA8cLOlUeTP4tcLv4ugTAke4mQ8onY,23
av/audio/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/audio/__init__.py,sha256=cKjwtg1eO9LUrcUit-ELFZH1wVtPv8NFLpiyufJA680,91
av/audio/__init__.pyi,sha256=dl9gWskpaZ1gGDhi3L1tFUPyDFeLmk26DQ1D17jX1yY,259
av/audio/__pycache__/__init__.cpython-312.pyc,,
av/audio/__pycache__/codeccontext.cpython-312.pyc,,
av/audio/__pycache__/fifo.cpython-312.pyc,,
av/audio/__pycache__/format.cpython-312.pyc,,
av/audio/__pycache__/frame.cpython-312.pyc,,
av/audio/__pycache__/layout.cpython-312.pyc,,
av/audio/__pycache__/plane.cpython-312.pyc,,
av/audio/__pycache__/resampler.cpython-312.pyc,,
av/audio/__pycache__/stream.cpython-312.pyc,,
av/audio/codeccontext.abi3.so,sha256=cDLQfYP82l3EXKXTiii7gHEOhfMKfSaoeVvdYb76bU0,334721
av/audio/codeccontext.pxd,sha256=Yf6KxyJRo33v_ceKrqlk404otGtTvxZY-q3W_TISF6M,334
av/audio/codeccontext.py,sha256=bEDbidpCHIgdSYPu_sTNs9jjQFTPf9AyOORLoGIOElk,3033
av/audio/codeccontext.pyi,sha256=k-_y8gFQGb8PfDRQQrQ3ygXpLKNRWv1VlcL8Keua-58,1014
av/audio/fifo.abi3.so,sha256=DypaVXyWpScC-caMkzUP2tNE24oBUWuGDJ0i2VK05y8,503033
av/audio/fifo.pxd,sha256=ZTO40EMP15fO1Adm34Qh4TzgQDXeVLLAn08DQlF5Q9c,461
av/audio/fifo.py,sha256=k9s4mdnTO6BPE56O-ASXigBUyvZd1zTYCEQ__aFPPxg,7200
av/audio/fifo.pyi,sha256=I_nzPMFexnhzLcPZVjFQvIMevxrEHsEQxSjKmBdvh4E,712
av/audio/format.abi3.so,sha256=ax0jbnnjpFEZuwGJqnwZ8TwvZffHJRVyJJujXn2Zmnk,220257
av/audio/format.pxd,sha256=vDyHNUlO76PM9Yo8mMxMxJPsa2KRJg4d9_Klq84PNW4,148
av/audio/format.py,sha256=2kB8ndKkELpN7E803KnY13Q1DD0JiQAvYmqezKhdKqQ,3629
av/audio/format.pyi,sha256=SrRDgZkJ8kzKtywq2htlbJKK3d2ae9PIL-Qcnyoui8s,236
av/audio/frame.abi3.so,sha256=QFEvO8_GACIeCIZAnrU56fqvHDusMA7oN-sDKYvBMzE,655001
av/audio/frame.pxd,sha256=yRuyThzIm-1HI5qCGAQkhawW77vKaDTADBfb793C5Zc,739
av/audio/frame.py,sha256=ErZJplmdIDZlLdJ__RyZSqyEQE7wPeJbg4_cQkFlTSw,6076
av/audio/frame.pyi,sha256=p1VeBhOkXSn7X87pT1wRvbkidKdQoWy4CV8eWXCqYoM,1419
av/audio/layout.abi3.so,sha256=iBi0re9kdIdwiQA0PKhCtWMw7nqG17h2L1HtT5wlPUY,380585
av/audio/layout.pxd,sha256=YQDkPvukGLIRgvHmWFpMKYCqyYWbpMZoQdGmMuy9peE,148
av/audio/layout.py,sha256=9X-epVscUsJn44i7QDpB9MP7x08XjWyPYRl6DI_e0X4,3227
av/audio/layout.pyi,sha256=cc0Y9RCsei824HWwZUt00tYAus92FKgIHuUk07lpEZw,250
av/audio/plane.abi3.so,sha256=le8oQcZR1ZuGHs2QDBg4P6asnFMBsOESgIEtpvDA_-U,277281
av/audio/plane.pxd,sha256=H1vKYhmpwMOlz47ba0HeeMamzgeFfvxX7y_M1fZqrr0,132
av/audio/plane.py,sha256=7tPNSBKjRk5q4zqciYZr8TPFsXL7d_Afs7gAlvaHfIk,421
av/audio/plane.pyi,sha256=84IuSlDcyAhLh1wR-QPer4s0mfFVvF-yc88v0qfPntQ,74
av/audio/resampler.abi3.so,sha256=1B4vPmyMESril2LgU2OCzEpLdKr8nyazRFeOBYcPhgA,507297
av/audio/resampler.pxd,sha256=SbWg7wXGtLNTs34Bc4Hh-5mhmFdTq45Qc4AuzBgdBGE,490
av/audio/resampler.py,sha256=khcRspEQq9j9nt1MaNBzT-rAWNtH1q4FFFYEU5v_Ro0,4089
av/audio/resampler.pyi,sha256=dVyEvLOJ3IUN3AXsSYfg77H2Yaz2sIW38sJASH5fHRg,542
av/audio/stream.abi3.so,sha256=NSqmmCXLgMl5n20QrREiI4tWp2q4HbUU8_T5P4X-8fo,330729
av/audio/stream.pxd,sha256=E38lNdZrVkiNbVLUJo8sgqFLQYb_UVTjOLmhM-cjbbg,209
av/audio/stream.py,sha256=Evy2eYCN-wBw7EyFbJFmTVVADRPrtVszVwwuWUS8Q9g,1628
av/audio/stream.pyi,sha256=9OcxV5qNCwxGBN1vrommvbMfDwHtuumEPsujVw2ysbI,989
av/bitstream.abi3.so,sha256=weKRkCxWhoLs5_VCSH6muLbjcV2MCZ3xXWl9L9k2shk,285769
av/bitstream.pxd,sha256=hi30kwIdgdCQEVjtUqXo2L4gioHU_1_yWgKu3SqCgTc,184
av/bitstream.py,sha256=jaDTJdPFYu4M14FA9hioVjuevfOmxR1-A9ZEhnVgkV0,3313
av/bitstream.pyi,sha256=CuumhPlDJV91iKtUpJDcuvPxighE9q2FzYmc0qtIN7A,389
av/buffer.abi3.so,sha256=MBEgBuD8ioDuUi41bPFxszKuzWij7qUhBYKuGYpx7Gw,335121
av/buffer.pxd,sha256=KYPVOIDVZ-RTj-tSPRrYxyGIgrekKXt3kQSquZb6Ycw,363
av/buffer.py,sha256=2cUibrqxK1jPPYAqehLzYY8RYplDdpHsMRDxBzAosvM,2900
av/buffer.pyi,sha256=0JCfkCBhhP3a3-_1AIhMf4sbNYJ1Uyy8GOrQ5-U4EVs,316
av/codec/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/codec/__init__.py,sha256=vOJ3lfD1Z0iSXqq4bED5mCDocxBo7YJCujk3-1N9SYQ,298
av/codec/__pycache__/__init__.cpython-312.pyc,,
av/codec/__pycache__/codec.cpython-312.pyc,,
av/codec/__pycache__/context.cpython-312.pyc,,
av/codec/__pycache__/hwaccel.cpython-312.pyc,,
av/codec/codec.abi3.so,sha256=30CR1REgi-7b4gdViNmlb04JsyGgCZs8q4Erh8ukC_c,659417
av/codec/codec.pxd,sha256=0yZubvg-MpyJ4t2JalN-BIxKB_zJM1VcG4s3iZpy_Is,263
av/codec/codec.py,sha256=-U_OeiGpajjVJvCc4vB3l1sO7_ZXM7EGaeIM0EFNMgc,13948
av/codec/codec.pyi,sha256=6PSfYZ1zKzm3Ks7HA4k06dK9tNqiUezDGi3GxXxBJBk,4716
av/codec/context.abi3.so,sha256=m-9ok9NmkviSwSGOj1548AsQz6ZtEZIaUvCUBdj_8cI,1204473
av/codec/context.pxd,sha256=s9aYw4PhlB_1eLk3_xO0PKmNwY49D--sya9cCLs6Tio,2500
av/codec/context.py,sha256=rZXwZl-PUKRVJMITUKOhKR39T6-4Ks8KPk_9Maigf2g,24736
av/codec/context.pyi,sha256=7NgxSKjx8ha9XpTSDufWNNlOp8CEpRaeSlRPEHBNtao,3489
av/codec/hwaccel.abi3.so,sha256=yp1faiztcn2OpThAwZPCwVPQmJycKHrPGh4864VvwO0,638769
av/codec/hwaccel.pxd,sha256=TkULWTlVpZLOh1jO4BsoqsXy-5WNVXsYWYLR0G_UmWQ,595
av/codec/hwaccel.py,sha256=szSAcz08Vv7x-QhoaLXKn4uTKrD09y_lf4x60QihqQE,5989
av/codec/hwaccel.pyi,sha256=41bocToAsL_EGlqZ1TmuMlj5oZtW7VCCbPnKyErZieY,1493
av/container/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/container/__init__.py,sha256=_GTpNeXz0bo93otTZ3v6fhS9238ZjOobn3CRQv2dd94,148
av/container/__init__.pyi,sha256=OvEGnWBxXGuuGVG9n8raY8mfhsO5JKM7PiG9NF1xHzQ,63
av/container/__pycache__/__init__.cpython-312.pyc,,
av/container/__pycache__/core.cpython-312.pyc,,
av/container/__pycache__/input.cpython-312.pyc,,
av/container/__pycache__/output.cpython-312.pyc,,
av/container/__pycache__/pyio.cpython-312.pyc,,
av/container/__pycache__/streams.cpython-312.pyc,,
av/container/core.abi3.so,sha256=iIeaJ0-I8F8IRqrKCQaVfQhHswpC4f3Ddiu20-WjC-0,1057097
av/container/core.pxd,sha256=4XQTllGfo_8SlO0PUaflJwgiTmAxEO5UuOAYGmn5gGU,1342
av/container/core.py,sha256=k-h5nHbTvgYl51Cin1kbe1S1pIPyUFIOVo0en_OG9-A,22015
av/container/core.pyi,sha256=P78wYuSBoJbzyMDVzFU9S-mCVzpqmW-PShl4vkOZ_Ng,5310
av/container/input.abi3.so,sha256=Z0UIFkh9Bug9MjcU7aWpHTy4aNfy-lxjmPkt6P3iiPM,671737
av/container/input.pxd,sha256=57CHqOcDRcXRvPinfLwG8Z83FI3hjGGTT07SDQqNMws,162
av/container/input.py,sha256=KXzU_WsZxbW1HZAdmgx9Gz2MOSIyTshS84aRftHkD6g,12032
av/container/input.pyi,sha256=wIl7b-Mb0AWG9YX0eAuIH0IXxMlykrbCrfdXORPiVY8,3083
av/container/output.abi3.so,sha256=y3kV2JlYco5ZYfnxLW15J4pq2NPnmKOieSldZSzeaeY,1007793
av/container/output.pxd,sha256=5A0l7ZNR0SOrA5PjwHIYllKYcnaWxSHBgtmOjyqObM8,199
av/container/output.py,sha256=L_PkvUyvo-4oO_g13NEK2NlCIim4DJAuABnrLAre5zU,22698
av/container/output.pyi,sha256=ZgWgGOlxILO55JUUGQV-xp6qHDeJArBTRxhIgU6ozjw,2113
av/container/pyio.abi3.so,sha256=bIzoJAa4bKOXLgVY5tjPcMhu8N2PN7LSwom8VhiR9ZU,380041
av/container/pyio.pxd,sha256=Q1wOsyR09k5h4dS-wjk_CjkASabD3hDQ71W8FXvGjTQ,729
av/container/pyio.py,sha256=yoa1EhrDWPYPIZml_Hp320vghWLR2bSYTNlwEuwGa-c,6329
av/container/streams.abi3.so,sha256=dzJjv0jpYOP6OJZ3fCqTDmi0BuWq9incvxyc3Kt4O-o,655001
av/container/streams.pxd,sha256=iHkTkzM1Ybs6VIuRfPuRkXFK1gayI3li95G-euLEmSY,151
av/container/streams.py,sha256=ulTig1f-lCmycDJ5WuBGFpYucaszcKvNC8M0NiNGZMY,5312
av/container/streams.pyi,sha256=iuiJVhIlU-j6CtknPXxmxtePZ1aj7Ad0HnKsl4mTe_M,1140
av/datasets.py,sha256=crxN4-UwGSOG6eHNfli7kSnOgwc3SK8fnY-p8Hje4Cc,3094
av/device.abi3.so,sha256=EzI3BSEycP3LrTO43AjCtPYunRrSX_WnEaSB_vgTnUM,569225
av/device.py,sha256=HBpdY2GDcrq24V3R4UYn6kumlOIhJTOJc9Euc6RiHRg,6334
av/device.pyi,sha256=Ak39HPSoHGutW2UYt6_kxcZU7izvegAZf8axEOpv208,516
av/dictionary.abi3.so,sha256=86U2CTw3UdN_rx6n9qLilYFdy3zITYazSK_j0vwILho,474857
av/dictionary.pxd,sha256=zNNJW_zfBKILR23fwcUffhXjK2SFS316H_bbbKGOa2Y,168
av/dictionary.py,sha256=odsCuz3YOn21-I0IaX4tCPQ9bZ28xOWM9VF25O3Ehbk,2299
av/dictionary.pyi,sha256=bf3eGEu0DwMJvWm4ulnVkJrqHFMqREa76SDceO-wVks,605
av/error.abi3.so,sha256=FsKRf6WuRwOQZHFuMwuhyhpNaeQ14f61auZB86mtQ3A,1089553
av/error.pxd,sha256=pIFybV6fBCAI3IveFVMnEv_9S_f8xv1ZCwRYHvbLaVQ,88
av/error.py,sha256=5T9fI20pP-RbJmeb5yEc0CBeNUcIrPm_LaBM2cKzMGc,11999
av/error.pyi,sha256=ohKxnWMullPZ8ntE2inFQ7FrGNmitxNxFWW3Q3hdYDc,3213
av/filter/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/filter/__init__.py,sha256=3PhVQg5b52PMmAaJf2pmMKbScTvo7cvKSa_1Zprd0gk,117
av/filter/__init__.pyi,sha256=Jkfg79hkGdMuvHM5_rIK_YyP1flJJqlpSrV6w-znzig,90
av/filter/__pycache__/__init__.cpython-312.pyc,,
av/filter/__pycache__/context.cpython-312.pyc,,
av/filter/__pycache__/filter.cpython-312.pyc,,
av/filter/__pycache__/graph.cpython-312.pyc,,
av/filter/__pycache__/link.cpython-312.pyc,,
av/filter/__pycache__/loudnorm.cpython-312.pyc,,
av/filter/context.abi3.so,sha256=ki18YOFPmN_oHSZsKfIKi6N2x8s1x5d_RV82jN-baXI,1630793
av/filter/context.pxd,sha256=ytFXp6WCjHWm89b2hs4xQpVEv9H9MqiOQFtYhrCyxho,388
av/filter/context.py,sha256=l2SRAc6_M6C9VYA-f1OnyFhLRIkqpqG7sYHY8zA_AS4,5873
av/filter/context.pyi,sha256=Mm1IwQXDdSoQjnebdIE5EDInxWHWj9HPDNSbFrVtOzg,559
av/filter/filter.abi3.so,sha256=niLv2XET-FJNYkpycZNDglvzonLSfmbmi5RPTxy27Ao,224193
av/filter/filter.pxd,sha256=5w87wK9ugRAc8qUHPJ5f-iB0MW3aIHXk1BiaF4jqTNM,175
av/filter/filter.py,sha256=h0OMjEcDdu4hCdP2fEuPj-V_1IPmAgTkr1MYRzmVZAc,1639
av/filter/filter.pyi,sha256=Poi6pctZayAf1g23SAzu8LqZCXUuzn74Zv7m966YL58,141
av/filter/graph.abi3.so,sha256=6J1Jp_Ge6rJrZjqAi1YflnjwJRso3HdN1q49mIhcXQM,790281
av/filter/graph.pxd,sha256=cd1UIcvghDMORxJ-qtm0fsTc3rtTEIvUKdM65BH0KSo,600
av/filter/graph.py,sha256=4cSbAxm1o7I8PzPEQGy_a9oaqkMiUlJjEfEQJVXUB60,9379
av/filter/graph.pyi,sha256=VZN2ltBYNMBjcjfaNO5vZG9wfZDAYYXAZjZUxX0ih10,1677
av/filter/link.abi3.so,sha256=ivd7tlonM_1YBqC8BeGd-YnCuxnbuybcNkXs3_fZck0,425185
av/filter/link.pxd,sha256=qyA9oQF1M975aafIF1X5JpD6TW-3R8B8VTHckbQKEZU,786
av/filter/link.py,sha256=UmXTU3ZtwM3100Mut1B0h6kjyqbQA_HGWnHQwlawiMk,4537
av/filter/link.pyi,sha256=UtgqwA_9EV5w311swXpS9pwZzruTl-nHtU7-hpEt5u4,27
av/filter/loudnorm.abi3.so,sha256=8Gca5ebMY-qYr4Frp4Q-kRSOXVtC8I1lfk7NHVv9p2k,306785
av/filter/loudnorm.pxd,sha256=mrKiGSe6WnIrMkDJU8uj1fs0Iwz_kxFPDL_NmnveyUE,464
av/filter/loudnorm.py,sha256=OuTHzqHjkKOkOcKP3Pus2SXr_Giw4ZwaDToHxo5sfvU,1439
av/filter/loudnorm.pyi,sha256=N_HuXpQlTaZLpnKjfqMk68ac3djymdy3x_9en33sA74,106
av/filter/loudnorm_impl.c,sha256=2ixg15rxo_m92kdwuCvYhkQF8NB_LV_RSEVNyZKtVRw,6251
av/filter/loudnorm_impl.h,sha256=QmUqnvobMbPSmas5haev86WCVAs_a6iXaAZPwx-iVAk,240
av/format.abi3.so,sha256=YuuGs5jwPP09F24lCcGXQPWCC2TKcXWbG3jNLdZ6b8c,314569
av/format.pxd,sha256=VbCPLqdb49zGSiOdyc4nk1IQA7JD1VChFyshmjV8mu4,258
av/format.py,sha256=7bz0zL_-2EjpQUR1Hg0qkJkIwo0kZEXHpGvIU7DXV4E,5571
av/format.pyi,sha256=dh49OMLec0IadFEiQxZ0-VKyu9eP0NDI1yDk8HrU6RY,1403
av/frame.abi3.so,sha256=48xNBHTwwslWe-BN9hDsHi3l3fqQFxkUPxOc8U5dTKE,367761
av/frame.pxd,sha256=MdtAffABVLDFi_c5oQFm3lT-n6xVbya8IBEsppbf6tU,411
av/frame.py,sha256=vObiqHSJK26RP2AdL8pC9q3XvvRqgog_yUd6BUFOl_M,5801
av/frame.pyi,sha256=tyk7ffzDSOY6IiOXDeu1GThIguICv9Eb_wwZjULFMLE,532
av/index.abi3.so,sha256=K6wtBzCpFNbOUR1_TiE5KW8Sno3Om9F5MlMyLItq25w,548609
av/index.pxd,sha256=rPkSQuLLTZfmLFnRCzhEoj_y1WIDsflw2zmMy2YNCIw,290
av/index.py,sha256=E_SscIwgHeKGTbZk1ywpuMdreK1i8w-QQCKA5Xvb5k4,4288
av/index.pyi,sha256=Y7Y-_CoaScDyAzZWVW4uURzwD1Z6cRBBawD-R43Mv_Y,559
av/logging.abi3.so,sha256=XfW3zaY55orGdrl4DiU9tdnKnDcvoVLNvA_m5fH5l6I,646993
av/logging.pxd,sha256=tFpeiXuAHyp6bhB0pBnmpHqG3gL3mXW4pNl6SSXQeNI,319
av/logging.py,sha256=ybuJeXaQJPQcpyG4gReUMn2wparbWGSLB8CI5GLil0M,10388
av/logging.pyi,sha256=Afqq5ud46eh617UM6b_D3xpIisdz9uyxvKK4rK1n6RA,885
av/opaque.abi3.so,sha256=Uf6ZjgCSVZo_lCtqp2E5WMoaIz-5LhhzukkezoT4Ak0,211833
av/opaque.pxd,sha256=vRgs17rMhB8CuiZ450z30WmSi6VMTiirDQr8ykLPwJs,236
av/opaque.py,sha256=9YwOMEm3CfLK2eq-F59XXqdRQ1uIo1MDjYHU4U177og,1741
av/packet.abi3.so,sha256=nP47j1k1sdu-EvGu5e7aehtyEXGdNTfO4C7Vqqc0zv0,884705
av/packet.pxd,sha256=7L5wqv7vzE4yZUwAAcducxIdIVMvVXrqSKprNrTGiIo,561
av/packet.py,sha256=KX91fT4iKg1cBLPjPYU-bhSiHRc5U1ZzEwHwbL3C3-g,14054
av/packet.pyi,sha256=s91OVOX0OK65OF0zC-d2e1tlwjA2vSJF7inTQIO1zto,3232
av/plane.abi3.so,sha256=XPBwB6NTsPKUpSwJnsHlpD-suQYLhDTSafC4P_tdQv4,297817
av/plane.pxd,sha256=eOzjPaCDVvvaygHiTXmm477_bmwZZ5bDo4gqKZczvxE,194
av/plane.py,sha256=FFCfzCS3XmzjQuHjFhmWWtPkoxMIirsz-O980CGn-nQ,626
av/plane.pyi,sha256=qJLw7M73ekThXf05LqTllf1BLIfF3gckxEy6rEjKx4U,169
av/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/sidedata/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/sidedata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/sidedata/__pycache__/__init__.cpython-312.pyc,,
av/sidedata/__pycache__/encparams.cpython-312.pyc,,
av/sidedata/__pycache__/motionvectors.cpython-312.pyc,,
av/sidedata/__pycache__/sidedata.cpython-312.pyc,,
av/sidedata/encparams.abi3.so,sha256=B8VynCVnMQHN7KXcH2jbTfdEPdn_g46uvJkZ0dlzcdQ,511201
av/sidedata/encparams.pxd,sha256=1ovAOjIZKwCm9KV_lxtY9kmUqNuuwmWI0nktf4hiRe0,181
av/sidedata/encparams.py,sha256=Xg86RTjso4gXAwaIdSHmvOjO2VuBrWG5wUJadWbfVvE,6047
av/sidedata/encparams.pyi,sha256=BebTdGqqzNLY8_7hkrW2poXWMuIeY4O-kBSXVvh0mUo,571
av/sidedata/motionvectors.abi3.so,sha256=sm9PJqfx-d6mggQrkw3ya79yUnAZSWeGAx7eHMXZ-Og,622281
av/sidedata/motionvectors.pxd,sha256=QetgIOGElsOMJokp9KIvYM0pH2L8x5cR995HaNZc1Eo,269
av/sidedata/motionvectors.py,sha256=Toavw_91yx92lleFT8U0FZowmeQSN3k95wrrIQkL0uU,3557
av/sidedata/motionvectors.pyi,sha256=p_9dVgneh52OdrdK4CRdZYg2ACZHrlRwEcbrbLH3rqA,536
av/sidedata/sidedata.abi3.so,sha256=dmdrbxYHU2lY5i8R-CQGgTFO8vXaR8XPLsNGoCOwyG0,544161
av/sidedata/sidedata.pxd,sha256=OWx1tWeGoYHPLgRzFZbVBAe9WPHvLSeDVv4Wd5Q06AY,447
av/sidedata/sidedata.py,sha256=Fsmqu4ESFUH5J9F4czb54AR8jmUGIEOQ9N6KPM_Ot64,4671
av/sidedata/sidedata.pyi,sha256=MaoM-BKdFEQoZ2muFfC4Qxkg3Q4b_sFyGXY7tGLRjHs,1969
av/stream.abi3.so,sha256=vbEzcuVBxWpxCc9cgWZ305_ivlxwXeJ3PNxYFj__S2Y,585089
av/stream.pxd,sha256=kV-xU37bzdL1PMCPh66SYuPfZbqYHH5MLFv2EIj8WcA,768
av/stream.py,sha256=UuZhLDj3dWz2TKGnYHORoU554ggoqWfkNGhkRTQVabo,9932
av/stream.pyi,sha256=7frqrvvwTOk6ImtQ_iKsdep0wW1_FlVMjAopeykKjUY,1966
av/subtitles/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/subtitles/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/subtitles/__pycache__/__init__.cpython-312.pyc,,
av/subtitles/__pycache__/codeccontext.cpython-312.pyc,,
av/subtitles/__pycache__/stream.cpython-312.pyc,,
av/subtitles/__pycache__/subtitle.cpython-312.pyc,,
av/subtitles/codeccontext.abi3.so,sha256=JBZGR1fMdY-lOY1Ov2ogtNBTO2zWDwYQVA13UX8diBk,326593
av/subtitles/codeccontext.pxd,sha256=lrG4G4JEvUyWbVFtqXv7u_9f8SH1kTgBLNqAJHvclbk,235
av/subtitles/codeccontext.py,sha256=IzfeuX5NEJmWeBaYuQMNGKDG5ukFtc2VTjpL1kclkY8,4722
av/subtitles/codeccontext.pyi,sha256=HcPuzR5BuwD0Ph4OnUHfIUXJFqeuN6pjo1N0886v0ao,385
av/subtitles/stream.abi3.so,sha256=hJ0xY2hi0UH8ZVItpQBn6qmGTb3q9R3RH2ST7rjoMA4,256777
av/subtitles/stream.pxd,sha256=Lo4RBTTOWErzKgNqc07AoNDaAgkUsF_Q25DJaAIo52Y,137
av/subtitles/stream.py,sha256=r0gPhz3vP5VRiOuGM_sL8uS3nDRmSlPp9h8MiscWoDI,645
av/subtitles/stream.pyi,sha256=rGoPESxKYF9DD9f0PeMkLd-QwT01D-GA-dhwF60gtwM,343
av/subtitles/subtitle.abi3.so,sha256=nEZ10NoPXx6lUyTiuPmqvjOqFj7teXyViiRVQIx6omc,966385
av/subtitles/subtitle.pxd,sha256=N_QwXo5kimdZY-T2SxIowRkqiD38qHA4MEjOaZD619A,590
av/subtitles/subtitle.py,sha256=Vef8bw1ffc5UbxdjX8NA0ro9c2-rP3_8AeFlq8opsVo,10151
av/subtitles/subtitle.pyi,sha256=DXZ_0nKzZcGOnzKlS1AWGXPdAb8FiG5xdJqDQx-SgLk,984
av/utils.abi3.so,sha256=Y_NzrTI1waIUkq2ZNY7BDe3OvUxL5XhxyDpGpOTp2X0,232353
av/utils.pxd,sha256=NGyU6Ve4JWjw2Epk0-8se5D3FRUm56VhL72j-V6AJiA,366
av/utils.py,sha256=F1DNSuNIRbtF9-1blgXPKgBlCVSCPpD3vPFyGvnify4,2008
av/video/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/video/__init__.py,sha256=Vq396L7PMjMhTDhvFZPbcLqU9mgdAR82NWk1K08QH64,91
av/video/__init__.pyi,sha256=zTUgi5b-SF1D9iR0IFZjjWmnrWikVSk6Sn5P4NAj0mA,262
av/video/__pycache__/__init__.cpython-312.pyc,,
av/video/__pycache__/codeccontext.cpython-312.pyc,,
av/video/__pycache__/format.cpython-312.pyc,,
av/video/__pycache__/frame.cpython-312.pyc,,
av/video/__pycache__/plane.cpython-312.pyc,,
av/video/__pycache__/reformatter.cpython-312.pyc,,
av/video/__pycache__/stream.cpython-312.pyc,,
av/video/codeccontext.abi3.so,sha256=MVPGHVbHJapf6BngHmPosQQ9f3dhMFZKVY8YlMpppTA,625881
av/video/codeccontext.pxd,sha256=vLe2JHf4XxfOwXmJOFLAcVBfe4Me773ZnXpiLngmD2c,875
av/video/codeccontext.py,sha256=fvVox-YN84itXJs34wH-BSQkuPAqEJS5jKVNNzecR7g,11860
av/video/codeccontext.pyi,sha256=ord9zvT5MUveSivTg1hWrHOACywxNf5qDlrrTwjGcmY,991
av/video/format.abi3.so,sha256=u3259XCi-vhgvSeFTAq4Uglvl-7Jjm3ihmEsNAJ-jQU,626401
av/video/format.pxd,sha256=hUqOV0DEGy8yRhfX1e2I246BcBwaGOWrixhNazO2v-g,686
av/video/format.py,sha256=d4T5dvkIT7aE1bZcddD2MiesAwf2Lzh9BB29ZijvEL8,6175
av/video/format.pyi,sha256=XGTdOgcr5YMTR30ozRd9A8KC0NZVhXHl5hh9CxDdcjY,805
av/video/frame.abi3.so,sha256=YwKj-n9UN9BwSG0w0ndZr2pe7Lwyd9luio1_CEP1c0s,3564513
av/video/frame.pxd,sha256=3VYbrytXp62lxGauju6ormIkLK9mL7yOFdvGVxAk-TQ,869
av/video/frame.py,sha256=oOJV95C5zdZA9S4hc1RnTBlpjF5YFHzPLzzmc8igg3Y,59254
av/video/frame.pyi,sha256=_d8xiGAmlt-YEvA4C7fkFsUr9UGmYoNKJBbxKPZL2fQ,3067
av/video/plane.abi3.so,sha256=Qd6ps0pijgl9wtDw0owR53MsgIvtKQ7iD8wn6jHSpwU,527745
av/video/plane.pxd,sha256=g3qjx6-1cSlBNnFS2Mif4iBkD_VvHA92D_SvbUTd3DY,772
av/video/plane.py,sha256=ICLTU998bK-un16p8stBAPvPzRuHPIzc5mVzFxHbhAU,10667
av/video/plane.pyi,sha256=26hYzC63EN31pFyR3GTndf5uYc43vH2zWMaXLS_wMl0,385
av/video/reformatter.abi3.so,sha256=YqflLRittCeWAAinl1bysiBIC__59DQo3rWAIc0Qhh0,585025
av/video/reformatter.pxd,sha256=vR4FvP-xns3o6U8tKN65lNOOrCUZowYAy7HvRk72dv0,1291
av/video/reformatter.py,sha256=Z-aXlQ92e2eSBhef3mHst9f3IHo6jrBubOVUQSn0uFY,12697
av/video/reformatter.pyi,sha256=0ikHmHcxY0B3LcQ5X-OBoyqag93qIpoin79q-t82p10,2466
av/video/stream.abi3.so,sha256=lKQj1EvMIcFc-xVahlYUpRIe1iQO_i9__dsb-nxCUvA,474585
av/video/stream.pxd,sha256=6z65wy60rKFRpN0rjWd4smgnPOd6P6EzNh3umZenD9c,528
av/video/stream.py,sha256=xFGIjd-R24ja_Y-hrd3CrCa8vpiKFGtRHfM46qtzwiE,6884
av/video/stream.pyi,sha256=bFX706QESMaHSi3A2d-wEKaAM4TN-a5vqEQmOuadb50,1416

View file

@ -0,0 +1,5 @@
Wheel-Version: 1.0
Generator: setuptools (82.0.1)
Root-Is-Purelib: false
Tag: cp311-abi3-manylinux_2_28_x86_64

View file

@ -0,0 +1,2 @@
[console_scripts]
pyav = av.__main__:main

View file

@ -0,0 +1,182 @@
""" Generate the AUTHORS.rst file from git commit history.
This module reads git commit logs and produces a formatted list of contributors
grouped by their contribution count, mapping email aliases and GitHub usernames.
"""
from dataclasses import dataclass
import math
import subprocess # noqa: S404
def main() -> None:
""" Generate and print the AUTHORS.rst content. """
contributors = get_git_contributors()
print_contributors(contributors)
# ------------------------------------------------------------------------------
EMAIL_ALIASES: dict[str, str | None] = {
# Maintainers.
"git@mikeboers.com": "github@mikeboers.com",
"mboers@keypics.com": "github@mikeboers.com",
"mikeb@loftysky.com": "github@mikeboers.com",
"mikeb@markmedia.co": "github@mikeboers.com",
"westernx@mikeboers.com": "github@mikeboers.com",
# Junk.
"mark@mark-VirtualBox.(none)": None,
# Aliases.
"a.davoudi@aut.ac.ir": "davoudialireza@gmail.com",
"tcaswell@bnl.gov": "tcaswell@gmail.com",
"xxr3376@gmail.com": "xxr@megvii.com",
"dallan@pha.jhu.edu": "daniel.b.allan@gmail.com",
"61652821+laggykiller@users.noreply.github.com": "chaudominic2@gmail.com",
}
CANONICAL_NAMES: dict[str, str] = {
"caspervdw@gmail.com": "Casper van der Wel",
"daniel.b.allan@gmail.com": "Dan Allan",
"mgoacolou@cls.fr": "Manuel Goacolou",
"mindmark@gmail.com": "Mark Reid",
"moritzkassner@gmail.com": "Moritz Kassner",
"vidartf@gmail.com": "Vidar Tonaas Fauske",
"xxr@megvii.com": "Xinran Xu",
}
GITHUB_USERNAMES: dict[str, str] = {
"billy.shambrook@gmail.com": "billyshambrook",
"daniel.b.allan@gmail.com": "danielballan",
"davoudialireza@gmail.com": "adavoudi",
"github@mikeboers.com": "mikeboers",
"jeremy.laine@m4x.org": "jlaine",
"kalle.litterfeldt@gmail.com": "litterfeldt",
"mindmark@gmail.com": "markreidvfx",
"moritzkassner@gmail.com": "mkassner",
"rush@logic.cz": "radek-senfeld",
"self@brendanlong.com": "brendanlong",
"tcaswell@gmail.com": "tacaswell",
"ulrik.mikaelsson@magine.com": "rawler",
"vidartf@gmail.com": "vidartf",
"willpatera@gmail.com": "willpatera",
"xxr@megvii.com": "xxr3376",
"chaudominic2@gmail.com": "laggykiller",
"wyattblue@auto-editor.com": "WyattBlue",
"Curtis@GreenKey.net": "dotysan",
}
@dataclass
class Contributor:
""" Represents a contributor with their email, names, and GitHub username. """
email: str
names: set[str]
github: str | None = None
commit_count: int = 0
@property
def display_name(self) -> str:
""" Return the formatted display name for the contributor.
Returns:
Comma-separated sorted list of contributor names.
"""
return ", ".join(sorted(self.names))
def format_line(self, bullet: str) -> str:
""" Format the contributor line for RST output.
Args:
bullet: The bullet character to use (- or *).
Returns:
Formatted RST line with contributor info.
"""
if self.github:
return (
f"{bullet} {self.display_name} <{self.email}>; "
f"`@{self.github} <https://github.com/{self.github}>`_"
)
return f"{bullet} {self.display_name} <{self.email}>"
def get_git_contributors() -> dict[str, Contributor]:
""" Parse git log and return contributors grouped by canonical email.
Returns:
Dictionary mapping canonical emails to Contributor objects.
"""
contributors: dict[str, Contributor] = {}
git_log = subprocess.check_output(
["git", "log", "--format=%aN,%aE"], # noqa: S607
text=True,
).splitlines()
for line in git_log:
name, email = line.strip().rsplit(",", 1)
canonical_email = EMAIL_ALIASES.get(email, email)
if not canonical_email:
continue
if canonical_email not in contributors:
contributors[canonical_email] = Contributor(
email=canonical_email,
names=set(),
github=GITHUB_USERNAMES.get(canonical_email),
)
contributor = contributors[canonical_email]
contributor.names.add(name)
contributor.commit_count += 1
for email, canonical_name in CANONICAL_NAMES.items():
if email in contributors:
contributors[email].names = {canonical_name}
return contributors
def print_contributors(contributors: dict[str, Contributor]) -> None:
"""Print contributors grouped by logarithmic order of commits.
Args:
contributors: Dictionary of contributors to print.
"""
print("""\
Contributors
============
All contributors (by number of commits):
""".replace(" ", ""))
sorted_contributors = sorted(
contributors.values(),
key=lambda c: (-c.commit_count, c.email),
)
last_order: int | None = None
block_index = 0
for contributor in sorted_contributors:
# This is the natural log, because of course it should be. ;)
order = int(math.log(contributor.commit_count))
if last_order and last_order != order:
block_index += 1
print()
last_order = order
# The '-' vs '*' is so that Sphinx treats them as different lists, and
# introduces a gap between them.
bullet = "-*"[block_index % 2]
print(contributor.format_line(bullet))
if __name__ == "__main__":
main()

View file

@ -0,0 +1,129 @@
Contributors
============
All contributors (by number of commits):
- Mike Boers <github@mikeboers.com>; `@mikeboers <https://github.com/mikeboers>`_
- WyattBlue <wyattblue@auto-editor.com>; `@WyattBlue <https://github.com/WyattBlue>`_
* Jeremy Lainé <jeremy.laine@m4x.org>; `@jlaine <https://github.com/jlaine>`_
- Mark Reid <mindmark@gmail.com>; `@markreidvfx <https://github.com/markreidvfx>`_
* Lukas Geiger <lukas.geiger94@gmail.com>
- Vidar Tonaas Fauske <vidartf@gmail.com>; `@vidartf <https://github.com/vidartf>`_
- laggykiller <chaudominic2@gmail.com>; `@laggykiller <https://github.com/laggykiller>`_
- Billy Shambrook <billy.shambrook@gmail.com>; `@billyshambrook <https://github.com/billyshambrook>`_
- Casper van der Wel <caspervdw@gmail.com>
- Philip de Nier <philipn@rd.bbc.co.uk>
- Tadas Dailyda <tadas@dailyda.com>
- Dave Johansen <davejohansen@gmail.com>
- Mark Harfouche <mark.harfouche@gmail.com>
- JoeUgly <41972063+JoeUgly@users.noreply.github.com>
- Justin Wong <46082645+uvjustin@users.noreply.github.com>
- Santtu Keskinen <santtu.keskinen@gmail.com>
* Alba Mendez <me@alba.sh>
* Curtis Doty <Curtis@GreenKey.net>; `@dotysan <https://github.com/dotysan>`_
* Xinran Xu <xxr@megvii.com>; `@xxr3376 <https://github.com/xxr3376>`_
* z-khan <zohaibkh_27@yahoo.com>
* Marc Mueller <30130371+cdce8p@users.noreply.github.com>
* Dan Allan <daniel.b.allan@gmail.com>; `@danielballan <https://github.com/danielballan>`_
* Moonsik Park <moonsik.park@estsoft.com>
* velsinki <40809145+velsinki@users.noreply.github.com>
* Christoph Rackwitz <christoph.rackwitz@gmail.com>
* David Plowman <david.plowman@raspberrypi.com>
* Alireza Davoudi <davoudialireza@gmail.com>; `@adavoudi <https://github.com/adavoudi>`_
* Jonathan Drolet <jonathan.drolet@riedel.net>
* Matthew Lai <m@matthewlai.ca>
* Kim Minjong <make.dirty.code@gmail.com>
* Moritz Kassner <moritzkassner@gmail.com>; `@mkassner <https://github.com/mkassner>`_
* Thomas A Caswell <tcaswell@gmail.com>; `@tacaswell <https://github.com/tacaswell>`_
* Ulrik Mikaelsson <ulrik.mikaelsson@magine.com>; `@rawler <https://github.com/rawler>`_
* Wel C. van der <wel@Physics.LeidenUniv.nl>
* Will Patera <willpatera@gmail.com>; `@willpatera <https://github.com/willpatera>`_
- zzjjbb <31069326+zzjjbb@users.noreply.github.com>
- Joe Schiff <41972063+JoeSchiff@users.noreply.github.com>
- Nils DEYBACH <68770774+ndeybach@users.noreply.github.com>
- Dexer <73297572+DexerBR@users.noreply.github.com>
- DE-AI <81620697+DE-AI@users.noreply.github.com>
- rutsh <Eugene.Krokhalev@gmail.com>
- Felix Vollmer <FelixVollmer@gmail.com>
- Benedikt Lorch, benedikt-grl <benedikt@getreallabs.com>
- Santiago Castro <bryant1410@gmail.com>
- Christian Clauss <cclauss@me.com>
- Ihor Liubymov <ihor.liubymov@ring.com>
- Johannes Erdfelt <johannes@erdfelt.com>
- Karl Litterfeldt <kalle.litterfeldt@gmail.com>; `@litterfeldt <https://github.com/litterfeldt>`_
- Leon White <l.white@interstellarlab.earth>
- Martin Larralde <martin.larralde@ens-cachan.fr>
- Simon-Martin Schröder <martin.schroeder@nerdluecht.de>
- Matteo Destro <matteo.est@gmail.com>
- Mattias Wadman <mattias.wadman@gmail.com>
- mephi42 <mephi42@gmail.com>
- Miles Kaufmann <mkfmnn@gmail.com>
- Nathan Goldbaum <nathan.goldbaum@gmail.com>
- Pablo Prietz <pablo@prietz.org>
- Andrew Wason <rectalogic@rectalogic.com>
- Radek Senfeld <rush@logic.cz>; `@radek-senfeld <https://github.com/radek-senfeld>`_
- robinechuca <serveurpython.oz@gmail.com>
- Nick <24689722+ntjohnson1@users.noreply.github.com>
- Benjamin Chrétien <2742231+bchretien@users.noreply.github.com>
- 吴小白 <296015668@qq.com>
- davidplowman <38045873+davidplowman@users.noreply.github.com>
- Hanz <40712686+HanzCEO@users.noreply.github.com>
- Clay Castronovo <42858023+clayy24@users.noreply.github.com>
- Kesh Ikuma <79113787+tikuma-lsuhsc@users.noreply.github.com>
- Artturin <Artturin@artturin.com>
- Ian Lee <IanLee1521@gmail.com>
- Ryan Huang <NPN@users.noreply.github.com>
- Arthur Barros <arthbarros@gmail.com>
- bdavid-evertz <bdavid@evertz.com>
- Carlos Ruiz <carlos.r.domin@gmail.com>
- Carlos Ruiz <carlos.ruiz.dominguez@west.cmu.edu>
- Maxime Desroches <desroches.maxime@gmail.com>
- egao1980 <egao1980@gmail.com>
- Eric Kalosa-Kenyon <ekalosak@gmail.com>
- elxy <elxy@outlook.com>
- Gemfield <gemfield@civilnet.cn>
- henri-gasc <henri.gasc@eurecom.fr>
- Jonathan Martin <homerunisgood@hotmail.com>
- HotariTobu <hotari24tools@gmail.com>
- Joshua <jbree@users.noreply.github.com>
- Johan Jeppsson Karlin <johjep@gmail.com>
- Kazuki Oikawa <k@oikw.org>
- Kian-Meng Ang <kianmeng@cpan.org>
- Philipp Klaus <klaus@physik.uni-frankfurt.de>
- Marcell Pardavi <marcell.pardavi@gmail.com>
- Matteo Destro <matteo@cerrion.com>
- Max Ehrlich <max.ehr@gmail.com>
- Manuel Goacolou <mgoacolou@cls.fr>
- Julian Schweizer <neuneck@gmail.com>
- Nikhil Idiculla <nikhilidiculla@gmail.com>
- Ömer Sezgin Uğurlu <omer@ugurlu.org>
- Orivej Desh <orivej@gmx.fr>
- Philipp Krähenbühl <philkr@users.noreply.github.com>
- Mattia Procopio <promat85@gmail.com>
- Max Ehrlich <queuecumber@protonmail.com>
- ramoncaldeira <ramoncaldeira_328@hotmail.com>
- Roland van Laar <roland@rolandvanlaar.nl>
- Santiago Castro <sacastro@umich.edu>
- Kengo Sawatsu <seattleserv0@gmail.com>
- FirefoxMetzger <sebastian@wallkoetter.net>
- hyenal <sebastien.ehrhardt@gmail.com>
- Brendan Long <self@brendanlong.com>; `@brendanlong <https://github.com/brendanlong>`_
- Семён Марьясин <simeon@maryasin.name>
- Stephen.Y <stepheny@users.noreply.github.com>
- Tom Flanagan <theknio@gmail.com>
- Tim O'Shea <tim.oshea753@gmail.com>
- Tim Ahpee <timah@blackmagicdesign.com>
- Jonas Tingeborn <tinjon@gmail.com>
- Pino Toscano <toscano.pino@tiscali.it>
- Ulrik Mikaelsson <ulrikm@spotify.com>
- Vasiliy Kotov <vasiliy.kotov@itechart-group.com>
- Koichi Akabe <vbkaisetsu@gmail.com>
- David Joy <videan42@gmail.com>
- Sviatoslav Sydorenko (Святослав Сидоренко) <webknjaz@redhat.com>
- Jiabei Zhu <zjb@bu.edu>

View file

@ -0,0 +1,23 @@
Copyright retained by original committers. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the project nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -0,0 +1 @@
{"bomFormat": "CycloneDX", "specVersion": "1.4", "version": 1, "metadata": {"component": {"type": "library", "bom-ref": "pkg:pypi/av@17.1.0?file_name=av-17.1.0-cp311-abi3-manylinux_2_28_x86_64.whl", "name": "av", "version": "17.1.0", "purl": "pkg:pypi/av@17.1.0?file_name=av-17.1.0-cp311-abi3-manylinux_2_28_x86_64.whl"}, "tools": [{"name": "auditwheel", "version": "6.6.0"}]}, "components": [{"type": "library", "bom-ref": "pkg:pypi/av@17.1.0?file_name=av-17.1.0-cp311-abi3-manylinux_2_28_x86_64.whl", "name": "av", "version": "17.1.0", "purl": "pkg:pypi/av@17.1.0?file_name=av-17.1.0-cp311-abi3-manylinux_2_28_x86_64.whl"}, {"type": "library", "bom-ref": "pkg:rpm/almalinux/libxcb@1.13.1-1.el8#62b69720e9664025a12f9971b2872f61b0b8acd3de00cc9ecfe351773c62ed91", "name": "libxcb", "version": "1.13.1-1.el8", "purl": "pkg:rpm/almalinux/libxcb@1.13.1-1.el8"}, {"type": "library", "bom-ref": "pkg:rpm/almalinux/libxcb@1.13.1-1.el8#124885c4e4c50f1f62c2e8972a17cf0a611aaab3f5850992677a7161cb660e66", "name": "libxcb", "version": "1.13.1-1.el8", "purl": "pkg:rpm/almalinux/libxcb@1.13.1-1.el8"}, {"type": "library", "bom-ref": "pkg:rpm/almalinux/libXau@1.0.9-3.el8#ac77887fa9a50833ff7a34d7e27ebe243468552bc94f6628693cb1dfdaf102e7", "name": "libXau", "version": "1.0.9-3.el8", "purl": "pkg:rpm/almalinux/libXau@1.0.9-3.el8"}, {"type": "library", "bom-ref": "pkg:rpm/almalinux/libxcb@1.13.1-1.el8#6c32c0eb1fdae8b53d48bf63b90db8c0dc1591ca2eb752e841996904a55c6e78", "name": "libxcb", "version": "1.13.1-1.el8", "purl": "pkg:rpm/almalinux/libxcb@1.13.1-1.el8"}, {"type": "library", "bom-ref": "pkg:rpm/almalinux/libxcb@1.13.1-1.el8#66bec2d3d7dd69fd6c3ff19cd0da52ae820f936812e127f411c783ca1df43a13", "name": "libxcb", "version": "1.13.1-1.el8", "purl": "pkg:rpm/almalinux/libxcb@1.13.1-1.el8"}, {"type": "library", "bom-ref": "pkg:rpm/almalinux/libdrm@2.4.115-2.el8#6bf0a77f707216e85f075c14376973902bc63a98d0556326cace0b2199df53cc", "name": "libdrm", "version": "2.4.115-2.el8", "purl": "pkg:rpm/almalinux/libdrm@2.4.115-2.el8"}], "dependencies": [{"ref": "pkg:pypi/av@17.1.0?file_name=av-17.1.0-cp311-abi3-manylinux_2_28_x86_64.whl", "dependsOn": ["pkg:rpm/almalinux/libxcb@1.13.1-1.el8#62b69720e9664025a12f9971b2872f61b0b8acd3de00cc9ecfe351773c62ed91", "pkg:rpm/almalinux/libxcb@1.13.1-1.el8#124885c4e4c50f1f62c2e8972a17cf0a611aaab3f5850992677a7161cb660e66", "pkg:rpm/almalinux/libXau@1.0.9-3.el8#ac77887fa9a50833ff7a34d7e27ebe243468552bc94f6628693cb1dfdaf102e7", "pkg:rpm/almalinux/libxcb@1.13.1-1.el8#6c32c0eb1fdae8b53d48bf63b90db8c0dc1591ca2eb752e841996904a55c6e78", "pkg:rpm/almalinux/libxcb@1.13.1-1.el8#66bec2d3d7dd69fd6c3ff19cd0da52ae820f936812e127f411c783ca1df43a13", "pkg:rpm/almalinux/libdrm@2.4.115-2.el8#6bf0a77f707216e85f075c14376973902bc63a98d0556326cace0b2199df53cc"]}, {"ref": "pkg:rpm/almalinux/libxcb@1.13.1-1.el8#62b69720e9664025a12f9971b2872f61b0b8acd3de00cc9ecfe351773c62ed91"}, {"ref": "pkg:rpm/almalinux/libxcb@1.13.1-1.el8#124885c4e4c50f1f62c2e8972a17cf0a611aaab3f5850992677a7161cb660e66"}, {"ref": "pkg:rpm/almalinux/libXau@1.0.9-3.el8#ac77887fa9a50833ff7a34d7e27ebe243468552bc94f6628693cb1dfdaf102e7"}, {"ref": "pkg:rpm/almalinux/libxcb@1.13.1-1.el8#6c32c0eb1fdae8b53d48bf63b90db8c0dc1591ca2eb752e841996904a55c6e78"}, {"ref": "pkg:rpm/almalinux/libxcb@1.13.1-1.el8#66bec2d3d7dd69fd6c3ff19cd0da52ae820f936812e127f411c783ca1df43a13"}, {"ref": "pkg:rpm/almalinux/libdrm@2.4.115-2.el8#6bf0a77f707216e85f075c14376973902bc63a98d0556326cace0b2199df53cc"}]}