add read me

This commit is contained in:
2026-01-09 10:28:44 +11:00
commit edaf914b73
13417 changed files with 2952119 additions and 0 deletions

View File

@@ -0,0 +1 @@
pip

View File

@@ -0,0 +1,127 @@
Metadata-Version: 2.4
Name: av
Version: 16.0.1
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/discussions/new?category=4-bugs
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,291 @@
../../../bin/pyav,sha256=x0n8kSVzjvyXa1VaW_E8W6FyKqIcmwH4cY4irAeMcPw,233
av-16.0.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
av-16.0.1.dist-info/METADATA,sha256=LY2g9jI9UXPmO1T4sRe4z8sBSdTG1EMwlgdXLzdRfDE,4622
av-16.0.1.dist-info/RECORD,,
av-16.0.1.dist-info/WHEEL,sha256=VXvNKn6nFeCM45GEUrNLJOO_J_e-cNJphGt9rWFxyE0,113
av-16.0.1.dist-info/entry_points.txt,sha256=3XMdM30ih673nLSRVzDsHLBmGYNlt7wQ1xyW8xoHAzg,42
av-16.0.1.dist-info/licenses/AUTHORS.py,sha256=HA7RJjdln4hiB55jT_if_uzfu3hfGt48IOipdGfhwnE,3119
av-16.0.1.dist-info/licenses/AUTHORS.rst,sha256=DVUnHCG21CTnHdm8AGiCTLdEAmFUwi-ka9luG7HYpTk,5454
av-16.0.1.dist-info/licenses/LICENSE.txt,sha256=dq8EYf-5LhnxwURJ6VVX2Dot-qG68gLUnl8dh0bA2hk,1505
av-16.0.1.dist-info/licenses/__pycache__/AUTHORS.cpython-312.pyc,,
av-16.0.1.dist-info/top_level.txt,sha256=TuQF-stvFHN8ilfr36ctqc7_MR5IOhUqrR0i6i5gNR8,3
av.libs/libSvtAv1Enc-28ac1713.so.3.1.0,sha256=GFLYMvH2N15z8OqZ-r6csYx_1uAk0w57Ck5R8o6DIDY,7840049
av.libs/libXau-154567c4.so.6.0.0,sha256=BUhNJL94y47QMWnxywZyBNgpy3ryHeiCBADSnRFeQyA,22081
av.libs/libaom-170d518b.so.3.11.0,sha256=6BnSh0OjTofRbo9PqMRThiKfByK8HudjeHWAhfMovZw,7731785
av.libs/libasound-d5229d1a.so.2.0.0,sha256=48lYxYoOsBKkj7mriPy-FkAnqKvUhkeHa0z7MnFBgA8,1162329
av.libs/libavcodec-49be5967.so.62.11.100,sha256=lFeq45Fc9V41wZjklrDu6b_txIy3JNgQvgbwHAVNumg,18738665
av.libs/libavdevice-91584ae1.so.62.1.100,sha256=jVLKs7EqOpVQTYOk73G1G7unlfc9kdfuPxRE3p5u-iE,115705
av.libs/libavfilter-b680d008.so.11.4.100,sha256=lDbAzgqQjsE-ZlqvtSOIU2HT67NXbz0JaFb3AwAyQfw,5369569
av.libs/libavformat-5bf2a196.so.62.3.100,sha256=gJ84t2P3LeiE8ntJM2OsQZ0Ufd0GPYQfZ7E1HP_rLMI,2916969
av.libs/libavutil-b5680d75.so.60.8.100,sha256=bUt3Icn5lrfWCSNh7IV_8o0HQtyB7KQ8tEGYV062J5k,1107209
av.libs/libdav1d-f1894f21.so.7.0.0,sha256=zWqftXUmdkcy9YsouCqeFysuZnOHGgAIoOjFJNKC9Ro,2024769
av.libs/libdrm-b0291a67.so.2.4.0,sha256=K48ZAlNAuvSdX7i2toETxCm6886w4E17JmP2c8RM2-0,96417
av.libs/libgmp-29b2ba5e.so.10.5.0,sha256=UlfITPuuWSTHCZBGupJOsO4V1T1OmgINAOTjQWnVo6o,515785
av.libs/libgnutls-cd598300.so.30.40.3,sha256=MeiJ4LqerYM7S8TA8LZuFy4uzEefL60iQHefreWC6BA,2301097
av.libs/libhogweed-033e28eb.so.6.10,sha256=SVNF97h-mVw3uKmXuHS9Dl4Zdf_0s5hsUuGpLx5YDIo,320913
av.libs/libmp3lame-68ba0ecb.so.0.0.0,sha256=ihQb_m1shl6HB1pHRqqAWzt7iASyGyBZYvw4mCy5o5E,421105
av.libs/libmvec-2-583a17db.28.so,sha256=gJCHsIqb2jd5magjh0vjdpiftHdmakfBQ8siW3MXa_U,181969
av.libs/libnettle-a4970681.so.8.10,sha256=02If1MrYm_jmIvUdzL46O5ti4rDhnDB-BEcBCZZf_Vo,359689
av.libs/libogg-9af999c3.so.0.8.5,sha256=gSH-iBEeba-98MgMOam1TivICA6bLB8MyoZXK_X0sCM,43041
av.libs/libopencore-amrnb-e5261d48.so.0.0.3,sha256=oLSSdw0ZoDstVmqL0l1F5TKIp7pMladPS0bCTzzbhi0,172889
av.libs/libopencore-amrwb-157aa25e.so.0.0.3,sha256=fZBBJ-B5yn5t8HE37_q7skhlF8ug_ES52hwluWya79Y,90801
av.libs/libopenh264-7bd47c3a.so.2.6.0,sha256=VforiiI52wNjrP_cuYoBdrCfBrEQy260EEQErqbr72A,1211297
av.libs/libopus-a676965d.so.0.10.1,sha256=bEpm_U0lYDemjAGo4seqO4tvwiKd6m1UOVtXC0zwy_w,408617
av.libs/libsharpyuv-2777c64a.so.0.1.1,sha256=fMFfbY3lqz8nLnykVLzhs6ByOHsOFmd49cSoXktNOH4,50153
av.libs/libspeex-dd5a2d1c.so.1.5.2,sha256=F8OrOnyXYhOpY-2oyuQkVsPGCWy6kOFQo2MET9AYMkY,116697
av.libs/libswresample-30318904.so.6.1.100,sha256=f-VWaKT8rrWiLr2Io9X4OulPC4je0k5hNtw695QAsqQ,152841
av.libs/libswscale-84584c6b.so.9.1.100,sha256=MA8qtQpsTaxI61iorQ9FD0bsMjS_i_FjyDH8b96350o,1714009
av.libs/libtwolame-dfe0c2c6.so.0.0.0,sha256=B2HNVrU5VUcIRu_9FVbbX8vDsip11Pb9qe5Y9K5Ua4Q,143489
av.libs/libunistring-7eaffe9f.so.5.2.0,sha256=e3FKKMXRiSITTybLC-uh0-0BqZUMYiqmgFv4WF1OVg0,2028817
av.libs/libvorbis-7463f6bd.so.0.4.9,sha256=I77q5pHptLY45NwDDjsB5aV3u_gbsrDdd-smx5sIuU8,260897
av.libs/libvorbisenc-131c2ed7.so.2.0.12,sha256=H269ysnrj1727PJWO1ye7yymlBZtnupCpf04TKHpUCc,709041
av.libs/libvpx-09740bc5.so.11.0.0,sha256=GLswYstlRCBBhXINzSNDGfg2OJ_p8Byc5eKI04zw9tw,2344985
av.libs/libwebp-bc89f640.so.7.1.10,sha256=idr9Pg4jJlSJ6N49R8L0_kAT3kmPvtZS42VlLQL9ubk,735321
av.libs/libwebpmux-601b9199.so.3.1.1,sha256=pDCJVXA5NNsPwuhvwJa2HUoJobH16M60tBhNRya57yA,64329
av.libs/libx264-d3456b32.so.165,sha256=G1N_zBgExzrGtC7nmBfrFIufN2uxZKcU-9MDMb9D0iM,2288385
av.libs/libx265-169666e3.so.215,sha256=3a9APrBwnURx3XR2DRLZsT4MtbBTKyeEHJcaM8EAHf0,20636217
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=vyVYmmX6SWbLgVSEwkgacV-oBVuFAlYMJDdLU74UBNs,2122
av/__main__.py,sha256=x6yMMfLGUHLly2_PlYwsHr1fsZIvaauzPVe3ZAVAuCM,1568
av/__pycache__/__init__.cpython-312.pyc,,
av/__pycache__/__main__.cpython-312.pyc,,
av/__pycache__/about.cpython-312.pyc,,
av/__pycache__/datasets.cpython-312.pyc,,
av/__pycache__/frame.cpython-312.pyc,,
av/__pycache__/packet.cpython-312.pyc,,
av/__pycache__/stream.cpython-312.pyc,,
av/__pycache__/utils.cpython-312.pyc,,
av/_core.cpython-312-x86_64-linux-gnu.so,sha256=XCOnnbqbLnyRFfB9WHZsUmh2vILYSmCzyJZQHdHxDB0,175081
av/_core.pyi,sha256=FAlEwvbG4HgiXmupnWpi1jebTWRqVvE8QFOTxZhqbp0,251
av/_core.pyx,sha256=Pp1hNFI634a9KnLGbCnqsvaDzj7nKEJmUftnuNC3Rac,1963
av/about.py,sha256=pKZRnqKTWlBE8mxm2Y4CPo9rHFcCp8imZyXX-ZOVlAQ,23
av/audio/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/audio/__init__.py,sha256=iqa8GHOGWz_CvVGp1WahggT77Wez0vXxBRSYSBE2rzM,62
av/audio/__init__.pyi,sha256=dl9gWskpaZ1gGDhi3L1tFUPyDFeLmk26DQ1D17jX1yY,259
av/audio/__pycache__/__init__.cpython-312.pyc,,
av/audio/__pycache__/codeccontext.cpython-312.pyc,,
av/audio/__pycache__/format.cpython-312.pyc,,
av/audio/__pycache__/frame.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.cpython-312-x86_64-linux-gnu.so,sha256=KGpg2KVPFHZ_T1woWGrT7zs7mDKBsrFVILklTOEd98o,383857
av/audio/codeccontext.pxd,sha256=Yf6KxyJRo33v_ceKrqlk404otGtTvxZY-q3W_TISF6M,334
av/audio/codeccontext.py,sha256=WdusdT8hN_Y7h4DLur8EFbicQtXeP-kQz_Rk7KLe6ps,3011
av/audio/codeccontext.pyi,sha256=k-_y8gFQGb8PfDRQQrQ3ygXpLKNRWv1VlcL8Keua-58,1014
av/audio/fifo.cpython-312-x86_64-linux-gnu.so,sha256=UXd3cdTA1VKRiKz6TZg2HcTl5BmpcvnMZZ2o7tjhJ-4,670841
av/audio/fifo.pxd,sha256=ZTO40EMP15fO1Adm34Qh4TzgQDXeVLLAn08DQlF5Q9c,461
av/audio/fifo.pyi,sha256=I_nzPMFexnhzLcPZVjFQvIMevxrEHsEQxSjKmBdvh4E,712
av/audio/fifo.pyx,sha256=FihUiMP6mq0wWTwZ6hfivyNoRWqPcHFJpxPg7xxqHRQ,6631
av/audio/format.cpython-312-x86_64-linux-gnu.so,sha256=pAjUUsQ3RIygZOzR8kvjrYISF2ftrKKrlH00vQfUgtQ,322665
av/audio/format.pxd,sha256=vDyHNUlO76PM9Yo8mMxMxJPsa2KRJg4d9_Klq84PNW4,148
av/audio/format.py,sha256=zi2EgeltYjY3KD6JNJA_o956AEBWSfmFVQCGMThbqxs,3569
av/audio/format.pyi,sha256=SrRDgZkJ8kzKtywq2htlbJKK3d2ae9PIL-Qcnyoui8s,236
av/audio/frame.cpython-312-x86_64-linux-gnu.so,sha256=C78GL9oHpLkGBw0q_JEN8-K5ot6pao9xsE47YAQRdns,937505
av/audio/frame.pxd,sha256=yRuyThzIm-1HI5qCGAQkhawW77vKaDTADBfb793C5Zc,739
av/audio/frame.py,sha256=N0YAANHYXipQp64HRGdfs2qSOMC7UMp8Lwng_JLEmGs,6038
av/audio/frame.pyi,sha256=p1VeBhOkXSn7X87pT1wRvbkidKdQoWy4CV8eWXCqYoM,1419
av/audio/layout.cpython-312-x86_64-linux-gnu.so,sha256=j6qftLCjnlU5_RtwVchqdBWv1nhpX8dR7jFwCvOKrwM,622385
av/audio/layout.pxd,sha256=KUqev70Dwc-bH3IBWbhO_U3k_QQk_BNnUE5hy2XAasw,197
av/audio/layout.pyi,sha256=cc0Y9RCsei824HWwZUt00tYAus92FKgIHuUk07lpEZw,250
av/audio/layout.pyx,sha256=e3MGPdqf5HwAHy4B2-xSNfKaDrUETcBnXTkMgAFGf-8,2563
av/audio/plane.cpython-312-x86_64-linux-gnu.so,sha256=36p7UHHfYTLobbpjf0H8IyO6uYil66dbyFyNZBDg8Ig,305825
av/audio/plane.pxd,sha256=H1vKYhmpwMOlz47ba0HeeMamzgeFfvxX7y_M1fZqrr0,132
av/audio/plane.py,sha256=xHBeo8JxkNchqMDElipRKS3kFU_NVWOhAtjHNmBXDPU,407
av/audio/plane.pyi,sha256=84IuSlDcyAhLh1wR-QPer4s0mfFVvF-yc88v0qfPntQ,74
av/audio/resampler.cpython-312-x86_64-linux-gnu.so,sha256=znewnP733_mjlBGmi0bjgiAxplYJl_HrHz9ZjZLsu88,679137
av/audio/resampler.pxd,sha256=SbWg7wXGtLNTs34Bc4Hh-5mhmFdTq45Qc4AuzBgdBGE,490
av/audio/resampler.py,sha256=egp5VufU_wKWosvJyzmc8ssp7hj3ZnpPL8imO3CGQdM,4135
av/audio/resampler.pyi,sha256=dVyEvLOJ3IUN3AXsSYfg77H2Yaz2sIW38sJASH5fHRg,542
av/audio/stream.cpython-312-x86_64-linux-gnu.so,sha256=_ByjIzclH7SB0A4v5cUbOH2LgU-ZO8ZrSjkoKGqqBUQ,412569
av/audio/stream.pxd,sha256=E38lNdZrVkiNbVLUJo8sgqFLQYb_UVTjOLmhM-cjbbg,209
av/audio/stream.py,sha256=-NvUkvNipTZN2Jbz7VQeFvp8fUFhXnIv3jgj6uDe-Qc,1325
av/audio/stream.pyi,sha256=9OcxV5qNCwxGBN1vrommvbMfDwHtuumEPsujVw2ysbI,989
av/bitstream.cpython-312-x86_64-linux-gnu.so,sha256=cw1dP9XA2Hv2Kvn88bczX2QUaHcBqwJgshUx3JkDkFo,375873
av/bitstream.pxd,sha256=hi30kwIdgdCQEVjtUqXo2L4gioHU_1_yWgKu3SqCgTc,184
av/bitstream.pyi,sha256=CuumhPlDJV91iKtUpJDcuvPxighE9q2FzYmc0qtIN7A,389
av/bitstream.pyx,sha256=_IvPB1m8QjJolPIGKTasp1p-EaDeP3rLZrBMvIOWh7U,2800
av/buffer.cpython-312-x86_64-linux-gnu.so,sha256=fSATdOu9M3ycBWQQ_FgKD5KZ10fRJtJkXEEjwd6m4Uo,425049
av/buffer.pxd,sha256=lUJVzgIKsCMeTie-IXPdOQGBpjI03U23fgbJ7506KIY,126
av/buffer.pyi,sha256=0JCfkCBhhP3a3-_1AIhMf4sbNYJ1Uyy8GOrQ5-U4EVs,316
av/buffer.pyx,sha256=hgOxpL2e3TVLd2ZU1IGd024AB7XZrV9EDZXADOrTzCA,1634
av/bytesource.cpython-312-x86_64-linux-gnu.so,sha256=TDxYTAzEp1WTsgXG7KgeHPj-4yxDifif8V7YZRASuXw,244465
av/bytesource.pxd,sha256=dXfcjCPLXEQ4dCE12Cdo9t0kE-A_m5S6VW_fFxRRfuc,241
av/bytesource.pyx,sha256=p1udLm_mdJGX13GF3S9cPodmA3ZRMOfGe4POuhyZnVM,1095
av/codec/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/codec/__init__.py,sha256=e7SWLDOAb_79kT3sp20aZsXshp4s1UfJt2mocwfM7HM,255
av/codec/__pycache__/__init__.cpython-312.pyc,,
av/codec/codec.cpython-312-x86_64-linux-gnu.so,sha256=ABogehOEiTa1COxOGaOC9Z8K7Sfa7SATr3aIDpWd2sk,909193
av/codec/codec.pxd,sha256=0yZubvg-MpyJ4t2JalN-BIxKB_zJM1VcG4s3iZpy_Is,263
av/codec/codec.pyi,sha256=vN8ZuIH4hxrFB1DxFvbKwk9VCYOHOF3kMq_GGrjuzUw,3547
av/codec/codec.pyx,sha256=ZSN99iQnkATFytiQwgZ676geTMRcHiasPork19J3KuQ,10865
av/codec/context.cpython-312-x86_64-linux-gnu.so,sha256=n7DF_kpqfi-H1i_2H3Zo3beY645SFfl3FfENi-X7WJQ,1388801
av/codec/context.pxd,sha256=RZLAXl2DBzhH7KiWMNqILO_Iv9TBMD9G2uTwxLC-nIQ,2429
av/codec/context.pyi,sha256=_x1oFKsf9zY7zM1PIOb4m2i1P_Apw9eUuApFZae9eKI,3465
av/codec/context.pyx,sha256=kgKtEqEDILpo_ELOH1EASoRUuqtG3kz_JrIyY4P2bQg,22088
av/codec/hwaccel.cpython-312-x86_64-linux-gnu.so,sha256=ymkqN6pMkX2Pb7vzSu8Vczkdl0B8q7-OM2y1YPac5vA,831145
av/codec/hwaccel.pxd,sha256=SXmE3TP45OgVtYIK8MrKIP4CA7GuZHhcjJqynpsZY_8,510
av/codec/hwaccel.pyi,sha256=pT6JZTYAZJXwuvHXbCbtmHUYxdx_arhitgMX8s6kZfk,1317
av/codec/hwaccel.pyx,sha256=fJP4ZhUYctqunsNIX14hEw8aYoAsgHRk3vE4Cqnkzfg,5078
av/container/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/container/__init__.py,sha256=71UExHmjXzXjVvUlD2ivW72Vb7FUW98ohbB4OLtMQ9I,111
av/container/__init__.pyi,sha256=OvEGnWBxXGuuGVG9n8raY8mfhsO5JKM7PiG9NF1xHzQ,63
av/container/__pycache__/__init__.cpython-312.pyc,,
av/container/__pycache__/output.cpython-312.pyc,,
av/container/core.cpython-312-x86_64-linux-gnu.so,sha256=jWZeoDBXdbbcE3ubs0pt1e3pxDf4KOfeEcr5ymdtm9g,1323281
av/container/core.pxd,sha256=UmsLehwM7r9t34JVnQ3RXpYrfVrEOCwUvH8-hiNZ-uY,1299
av/container/core.pyi,sha256=tmTPCEnLkxRDI7md9dKVEQawCUhAiI-SYwRAI3oHAsg,5344
av/container/core.pyx,sha256=_KlgyUGuLrLk4T2Dz73ijGN_58yiB89wLy_ZIuAulfs,19288
av/container/input.cpython-312-x86_64-linux-gnu.so,sha256=689-A0r55IT1VrRP1l76tYvE-XkwFt_eHzP6xxkq3-g,933801
av/container/input.pxd,sha256=2K4YyQsAw_4l8RH3itgAW4Chguiw2k9QKwMmNnm3Jqk,163
av/container/input.pyi,sha256=EK5c2mvUIsbH9o9oU9TtqHyD6oCw1HgF93hWLktmT2c,1610
av/container/input.pyx,sha256=6aK7T_LTNWlsicC9yQ2DHjICp7_FLFZg1lsTk0wGPQQ,11002
av/container/output.cpython-312-x86_64-linux-gnu.so,sha256=qlUDoyjcjRKdZHpUHpl69XhUcp4T22BltSAy9rbZ4x0,1118329
av/container/output.pxd,sha256=3EcLHMR9t0Buab6yEH1YRbVBUudi8e1KhcReNlnx2OE,243
av/container/output.py,sha256=ZxsT9uhZ354HgijBR7jdasnYj_FVj3dy_PIHVNOUGyY,18286
av/container/output.pyi,sha256=62tRYgzrVkkOgJdBjLaMb0vGaLOdqSAYrprHj2tv_bM,2007
av/container/pyio.cpython-312-x86_64-linux-gnu.so,sha256=S3uVQhDJtosDcwo6zA57RRPL4ygkXCo_eSaU1g6Njo4,625769
av/container/pyio.pxd,sha256=Q1wOsyR09k5h4dS-wjk_CjkASabD3hDQ71W8FXvGjTQ,729
av/container/pyio.pyx,sha256=O5nZZPEC_n4tkEgpUUwH9D15l87DGjfnAtyw4rfDGFU,5318
av/container/streams.cpython-312-x86_64-linux-gnu.so,sha256=dI_7qOK60TpI2hAtVOfu3IHe8HbTH2OAjCFygOC1Ew8,904801
av/container/streams.pxd,sha256=3sO8KT2Gp3PZi66YOAOuPbWtf9yoxJnV7aNuX41aeCA,514
av/container/streams.pyi,sha256=LOFPhMOKkfBp7zPXSkikocXnBfxdr21_FjUOz9wSgBs,1170
av/container/streams.pyx,sha256=7_7cRiTq8B43nEg4THdSvKnHlilXV__CP-Jm7XGUTms,5376
av/datasets.py,sha256=crxN4-UwGSOG6eHNfli7kSnOgwc3SK8fnY-p8Hje4Cc,3094
av/descriptor.cpython-312-x86_64-linux-gnu.so,sha256=mZ8cJxgMPodDBdeL5C5FlULANNW-kiXvvaYrRdP6jWo,281425
av/descriptor.pxd,sha256=nav7Vs2kmV1G4HpMBTSBR2TPtPsGZ5uYUMh1tfTmSHA,519
av/descriptor.pyi,sha256=MuNobj8b0buKrhZ3cjdnZe3ggOLsDuUxGN-JD6iDbZo,121
av/descriptor.pyx,sha256=qxbvdGZukrK2bkLQlzrl-Auh-tts__9_y74kJcfD6Gw,2261
av/dictionary.cpython-312-x86_64-linux-gnu.so,sha256=5ZAok5aLVOkSHfnulYNzOP5tdPOD8HsajTWApccCr9Q,573185
av/dictionary.pxd,sha256=iE0ZE3ZT5NDsmiT9HLQ8ACQxUvv6RhzSB5u3NeFRI3o,174
av/dictionary.pyi,sha256=a51nyivuIlouh2LqbxHjnv9cQneros71w4a9Xzhxh-o,388
av/dictionary.pyx,sha256=aW5-O5YBxV9IiHfueoo7SqI8PFytanQFtu31675C1kE,1558
av/error.cpython-312-x86_64-linux-gnu.so,sha256=b5gerD6IENFoiiZZAPz8k7JZ6dMj7NXv-dWE_S4uaok,1511345
av/error.pxd,sha256=07gJZT8560oSMfM24pm8jMTtTp4O3X_GPxLmOyypmd0,89
av/error.pyi,sha256=0P_nZk30a2cLkpQWbvRK7TkIN55_3YSWDbkaIEeTM3s,3200
av/error.pyx,sha256=lEVvm8dTBFukcbUIc8WXoLWnfaDCo2E1-8dW5vQPtDc,12443
av/filter/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/filter/__init__.py,sha256=dBNbMlLa3dn9Nc6PvLz8WLoGHsQzPh1SLCT-7bGNHj4,118
av/filter/__init__.pyi,sha256=Jkfg79hkGdMuvHM5_rIK_YyP1flJJqlpSrV6w-znzig,90
av/filter/__pycache__/__init__.cpython-312.pyc,,
av/filter/__pycache__/loudnorm.cpython-312.pyc,,
av/filter/context.cpython-312-x86_64-linux-gnu.so,sha256=STiFftgBo3He_SFNcDSHNG0lZp5yLg0pffrOnVyfijw,1892737
av/filter/context.pxd,sha256=ytFXp6WCjHWm89b2hs4xQpVEv9H9MqiOQFtYhrCyxho,388
av/filter/context.pyi,sha256=Mm1IwQXDdSoQjnebdIE5EDInxWHWj9HPDNSbFrVtOzg,559
av/filter/context.pyx,sha256=5Ua9b4X83cGfsYyRL-zl3oc_LzRBXxL-w9o3Mel_iqk,5357
av/filter/filter.cpython-312-x86_64-linux-gnu.so,sha256=O57BCYzZBjleC67gozb1GZg8KWuwC0Ztpc2sdSNu2Wo,289681
av/filter/filter.pxd,sha256=ArARpXHdaAd2fz5BdZRV-wIf5AhkjynBi_eXah_G5CI,248
av/filter/filter.pyi,sha256=WkyNYrWPl55vEfdLhUknJvlXqnbn90PvX5cKQfV9IkY,274
av/filter/filter.pyx,sha256=BJXG3S4gZ_Y2J6Gk0SEEbu3gFm7kp8qy0pFp_b6H1co,1856
av/filter/graph.cpython-312-x86_64-linux-gnu.so,sha256=3RhchrF8pyMsZEPGzDcl6P56414gbFUezbI9dXYqjgc,1097345
av/filter/graph.pxd,sha256=keZlIspoOPiIqSR9_Fk2xXo3PFgwLON1oKbIVWHfxUk,518
av/filter/graph.pyi,sha256=jnxZF-9DLv6uaHY9u33a26GMUpLPBxrTUom6_IxIviI,1660
av/filter/graph.pyx,sha256=7GcNll-kucbjk5-x_DYn7YM41VEt7FM8GyyDlfrsDCA,8216
av/filter/link.cpython-312-x86_64-linux-gnu.so,sha256=JzxuzjJQ_A6ltwIo2luCWu9bd6bF5cDEN5MKTR5eMTk,576553
av/filter/link.pxd,sha256=6E81ZTfhzDGO1hyKI9yv44reGnIx2cIR7N3svvLkJRk,793
av/filter/link.pyi,sha256=UtgqwA_9EV5w311swXpS9pwZzruTl-nHtU7-hpEt5u4,27
av/filter/link.pyx,sha256=0TgkHkRlDhytnNfjImsN4YNFqRxc-vdweXEnwplmc7U,3816
av/filter/loudnorm.cpython-312-x86_64-linux-gnu.so,sha256=-u9TO21C0t2NAtZGa62Cqnede8XyrCeIQgPpVW6q1x4,351841
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=A9Kf7JAkuOuGFka0Vk-qqMKo5GJ_pXATLvL1xL8ZO1E,6172
av/filter/loudnorm_impl.h,sha256=QmUqnvobMbPSmas5haev86WCVAs_a6iXaAZPwx-iVAk,240
av/format.cpython-312-x86_64-linux-gnu.so,sha256=BP0h2EyHq468AcB4w6M2U-4I0ma1D_oIEHWeUc5RoZo,437681
av/format.pxd,sha256=7g7FhC8pBeFxDNErwJVQUnGtNaK1QnPbqwYMH-R9FmE,234
av/format.pyi,sha256=dh49OMLec0IadFEiQxZ0-VKyu9eP0NDI1yDk8HrU6RY,1403
av/format.pyx,sha256=b-2nl9uP34rIQ-Oyou_JvIWjXeomG9S1SVnfROoMOOQ,5557
av/frame.cpython-312-x86_64-linux-gnu.so,sha256=2ER6tnM2Tcj_ksAJISNqcPf0-mxCPrzMLhh_IvCUeLA,445689
av/frame.pxd,sha256=MdtAffABVLDFi_c5oQFm3lT-n6xVbya8IBEsppbf6tU,411
av/frame.py,sha256=adcXyXyhNzSzv_AoR0FxTpsIONCcNujILcxOiiQOVK0,5773
av/frame.pyi,sha256=tyk7ffzDSOY6IiOXDeu1GThIguICv9Eb_wwZjULFMLE,532
av/logging.cpython-312-x86_64-linux-gnu.so,sha256=MHu2znKri2gLBCoFnIjFpFM0d7IUvkMBAKsz9KBvsSI,1080969
av/logging.pxd,sha256=9WCF9ygPhR9OO5RxYNHBa6Mz_KqGWNFbIr1D54r2B8o,24
av/logging.pyi,sha256=Afqq5ud46eh617UM6b_D3xpIisdz9uyxvKK4rK1n6RA,885
av/logging.pyx,sha256=GcYQ1VXNMFaN4L4EdwFv0Yq5vsy9s2GOlgbb4LUkCy0,9086
av/opaque.cpython-312-x86_64-linux-gnu.so,sha256=ASgDELmbyPBEG8Vyxp4aUeWaP-m1POhyS4EcMTzNqd4,248529
av/opaque.pxd,sha256=fgurFwzs2wpH2HxocfGnfkBZYdeJ50c_N2GHiyqmaUE,237
av/opaque.pyx,sha256=rfvNiUOeMQHvKH3TEBENYH69gJa1iiEpGOO8ktWQYHA,1321
av/option.cpython-312-x86_64-linux-gnu.so,sha256=HK4YvjLCKTzYLikgcZAoDDn8J7i_HsBa5srQo_Ul2sQ,609353
av/option.pxd,sha256=J3fikrPq554_N2x4tw0b0n9LDY-TqFd-wXXrhAkSoEA,366
av/option.pyi,sha256=6AsH7tnWJvOmHnMrofKg4lNNJcB6zI6AfM3G7GxkgPk,1313
av/option.pyx,sha256=fyAVspirDLMR43GEk02yn7hhlALOjlA0I7WxiurM6Y0,5341
av/packet.cpython-312-x86_64-linux-gnu.so,sha256=GFgzDCRPQ3dnVXgB4d-RlNEPTBGbcDMT2rhhBHWbUW4,1151025
av/packet.pxd,sha256=bt9HEX1sQmCtYKqzc3rd-HQProT6PNEvIz3kb20AiVk,540
av/packet.py,sha256=Jl5Br_A5ke4V-9RX8YmSLfUX5lDzsAEEYot4e9tYHhA,12847
av/packet.pyi,sha256=crDrOoH7U80GzQUGyJLFRmqXV8LlaNUqack_2AHo0jw,2349
av/plane.cpython-312-x86_64-linux-gnu.so,sha256=Gq5YtqC7LzivJSOVeZDLIsS6I5l120v8-oqOEoEBMAE,338753
av/plane.pxd,sha256=qtt0qmUOXmL5Ak8TlFYCLi4oiesC1kU4Ilesqk7hNlY,196
av/plane.pyi,sha256=qJLw7M73ekThXf05LqTllf1BLIfF3gckxEy6rEjKx4U,169
av/plane.pyx,sha256=G4H5tIhDU2Wonb0vjnq0pPraIMHunIjx8vvhpb3Uxi0,564
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/motionvectors.cpython-312-x86_64-linux-gnu.so,sha256=HGXSLS7lSLrs72O2nDMRKVy1b1QkqwNlM7rmyFTEgTY,630001
av/sidedata/motionvectors.pxd,sha256=Ly2xMmZ0Bj1An5-eYViZgNhJtSgSkSI7E78EiS4PKkE,266
av/sidedata/motionvectors.pyi,sha256=InIFdsNMbPU0apf_ufDtKoD0KAr0VCXaPkwGD9fLHCg,597
av/sidedata/motionvectors.pyx,sha256=uL8-qj1Gc6dRa0BcD7uPSeAS5USx39gtE5F-yzgvzfc,2635
av/sidedata/sidedata.cpython-312-x86_64-linux-gnu.so,sha256=tUPfJ0AF2Hh6384djYC6pFvJLg6wIzGDFKP3H_A0RjY,757129
av/sidedata/sidedata.pxd,sha256=-nf7Z4mgF5wkE15wnGgWgEBXLa0lqAYXgEy0MzTsp3c,453
av/sidedata/sidedata.pyi,sha256=MaoM-BKdFEQoZ2muFfC4Qxkg3Q4b_sFyGXY7tGLRjHs,1969
av/sidedata/sidedata.pyx,sha256=8t5m2lilraqC7sRetEunI075DpvtVjcUyIypyQRLRTM,4059
av/stream.cpython-312-x86_64-linux-gnu.so,sha256=_bo8q-O4zP7fNwrHHsu1uSyK7Bx3tB8wfv8RdwJTV9w,736665
av/stream.pxd,sha256=2wQlEsMfYXSblE01_V9wQq3QVfNY7W1q04xyAB_pNJc,687
av/stream.py,sha256=YZTyuO0FYNdaEApzfdbZcMzZ7OFaaWIzlmIhlEEPk34,8963
av/stream.pyi,sha256=0JBI7Rtxiw_VEj4r9IpP0vF32s2fVaW17uHESeOrl8Y,1637
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.cpython-312-x86_64-linux-gnu.so,sha256=ewb8RHnGkfmD8bO-ndaXCIpjv5L_qZ3fb-chzBFCves,338673
av/subtitles/codeccontext.pxd,sha256=ToN7m0-nP5bu_w4eNYVmF0dat2Uw9haNvdPXmJEW9ZQ,161
av/subtitles/codeccontext.py,sha256=-qJlyfs0SNPKX4_r5p9A5kaiKbi22vfrIHZOReo8xN4,1483
av/subtitles/codeccontext.pyi,sha256=fNB5ifrFRnYJJEnwLvr-d0CyAQ4LcImkHAI_GuF9SPw,283
av/subtitles/stream.cpython-312-x86_64-linux-gnu.so,sha256=DZeKHPT1QgdzlIyjaULvDgI3cZgE14NZyGAgeYsTbJQ,309985
av/subtitles/stream.pxd,sha256=Lo4RBTTOWErzKgNqc07AoNDaAgkUsF_Q25DJaAIo52Y,137
av/subtitles/stream.py,sha256=oHh-MfswcHZUE7ZYiO6H0sIB206eG2qZbK90O2wI25k,631
av/subtitles/stream.pyi,sha256=rGoPESxKYF9DD9f0PeMkLd-QwT01D-GA-dhwF60gtwM,343
av/subtitles/subtitle.cpython-312-x86_64-linux-gnu.so,sha256=xbXSIsFw4IiQISH3ORfkwc-eQ9Qxi8-X1ZxBCesoDkE,1040097
av/subtitles/subtitle.pxd,sha256=SE6M-1ylGQB6F0xnUwLTs7xODznkIs81MYKsVrzGBd0,592
av/subtitles/subtitle.py,sha256=PcyGlzfLvP7sf9hxVHFWPXLouHmcL43ioR5M9L7-El0,6549
av/subtitles/subtitle.pyi,sha256=XHFT-7hgtc4ISnTrt6eslSiFCcc0xt1312LUnVEIjNk,804
av/utils.cpython-312-x86_64-linux-gnu.so,sha256=6Rylduqo5uSRelFH7eoANnNV-ZpdgPe4AVe3Gxzp7Uc,277393
av/utils.pxd,sha256=NGyU6Ve4JWjw2Epk0-8se5D3FRUm56VhL72j-V6AJiA,366
av/utils.py,sha256=OUS9esw234uypwIfdvEpH_5dnFkrKXmAfxh-CduTopg,2194
av/video/__init__.pxd,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
av/video/__init__.py,sha256=BRH_qu6VrLKnGq1hpmXmYQVO_o-r32fnsR-V6NmbLis,62
av/video/__init__.pyi,sha256=zTUgi5b-SF1D9iR0IFZjjWmnrWikVSk6Sn5P4NAj0mA,262
av/video/__pycache__/__init__.cpython-312.pyc,,
av/video/__pycache__/frame.cpython-312.pyc,,
av/video/__pycache__/stream.cpython-312.pyc,,
av/video/codeccontext.cpython-312-x86_64-linux-gnu.so,sha256=V0zkQFrBJ9Rf2tbRW4Uce3We8hy4Mwuc6eHqWLl-QN4,752889
av/video/codeccontext.pxd,sha256=oz4_h35qFb75ZA6nI6TNwMB_eJ88Ox09B2IYixZUPz8,1060
av/video/codeccontext.pyi,sha256=V3D3vRTGUJlZM7UGqv5L4XEdYwX9BIbtYNUmKCMJfEo,968
av/video/codeccontext.pyx,sha256=jJchPDcoUZcANewh389oE4_TJcvPCJ_4Y3uHdEFAn8o,10817
av/video/format.cpython-312-x86_64-linux-gnu.so,sha256=MjCeMVe-ttD-qkP_wj5eRxNwizk14wfmmY_HnI44Q8k,884441
av/video/format.pxd,sha256=jyu_VoT833m7msVQ3PGRfZ6r_-2PLbDSMJ5O9ZCQyPQ,727
av/video/format.pyi,sha256=Y7yBiLV-CM03fdGWv1MFIolKlnaQmKDx3RSiJb7Nkwc,775
av/video/format.pyx,sha256=SqOJlcpP3iG4oHvIkrKqkhGTwtExbyOEDtKnmG2Xq2E,5935
av/video/frame.cpython-312-x86_64-linux-gnu.so,sha256=yN_oHaiSH5OgHfqDy6UL9GW4K4QpFm04hpXR-VFsIRM,3674641
av/video/frame.pxd,sha256=gokpywvvSu3Y9VbWXyitNg9pdNdp78xlot8vOX7Smy4,659
av/video/frame.py,sha256=tuAdWFVWfq1QeM77ck-hkX0FykwH6vFPJa5JxFqmhm0,42092
av/video/frame.pyi,sha256=Htcf_xEV2eW_hy2gR5EMbaIPme1JRjwFOSm5S0HZnx4,2280
av/video/plane.cpython-312-x86_64-linux-gnu.so,sha256=tNojEujNVzptDZVieY-aFVru9C5Ph6SakN6QcrGQ6cg,400377
av/video/plane.pxd,sha256=K7jqsI_cz-zPl6-UMS-6zNLSj3gD9BuLC_deNnegPC0,193
av/video/plane.pyi,sha256=x-RqS_bUUBPv2ymfroBYEz4ROsEw1bpxlnKe5GEvbZ8,223
av/video/plane.pyx,sha256=iZ4OktKHSQNp0o2cPcWul-Fg4vwWqjaaMUHoR0nzlBQ,1294
av/video/reformatter.cpython-312-x86_64-linux-gnu.so,sha256=cNOasha8nH6NxudGxlHAJJdlsoTDBKJB_F7rOlUyWNY,716241
av/video/reformatter.pxd,sha256=ugLZ44hKS8-OYLJCsvfLrL1OhtQzMPI-oqCvrYhpRuc,373
av/video/reformatter.pyi,sha256=y1P3nKYoC7CkTiPw36r0FtRb_VHOJc5Xdaj4J4FDpRY,1382
av/video/reformatter.pyx,sha256=RxPKyC9vTKpnFEui0zgGcKvYMsAIjeZgc-G72XpJSaQ,8419
av/video/stream.cpython-312-x86_64-linux-gnu.so,sha256=gnK8SjUbeNoJbaMujApzVSZhDYLeYXYQMvplkoFssuU,527417
av/video/stream.pxd,sha256=-VhPgrv_87HGxdBkfwR5qIO3jwwyQqMwRvbTH7cunuA,209
av/video/stream.py,sha256=lhKMwJs1gTn_0j5cxE7iE0vtdqk6mUb3fQmJRrrP9KA,3972
av/video/stream.pyi,sha256=JZKIjhHzj90bs-_iN9dP6pmw1M3TSPbp_XlD73Cv7H4,1187

View File

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

View File

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

View File

@@ -0,0 +1,111 @@
import math
import subprocess
print(
"""Contributors
============
All contributors (by number of commits):
"""
)
email_map = {
# 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",
}
name_map = {
"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_map = {
"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",
}
email_count = {}
for line in (
subprocess.check_output(["git", "log", "--format=%aN,%aE"]).decode().splitlines()
):
name, email = line.strip().rsplit(",", 1)
email = email_map.get(email, email)
if not email:
continue
names = name_map.setdefault(email, set())
if isinstance(names, set):
names.add(name)
email_count[email] = email_count.get(email, 0) + 1
last = None
block_i = 0
for email, count in sorted(email_count.items(), key=lambda x: (-x[1], x[0])):
# This is the natural log, because of course it should be. ;)
order = int(math.log(count))
if last and last != order:
block_i += 1
print()
last = order
names = name_map[email]
if isinstance(names, set):
name = ", ".join(sorted(names))
else:
name = names
github = github_map.get(email)
# The '-' vs '*' is so that Sphinx treats them as different lists, and
# introduces a gap between them.
if github:
print(
"%s %s <%s>; `@%s <https://github.com/%s>`_"
% ("-*"[block_i % 2], name, email, github, github)
)
else:
print(
"%s %s <%s>"
% (
"-*"[block_i % 2],
name,
email,
)
)

View File

@@ -0,0 +1,117 @@
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>`_
* 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>
* JoeUgly <41972063+JoeUgly@users.noreply.github.com>
* Justin Wong <46082645+uvjustin@users.noreply.github.com>
* Mark Harfouche <mark.harfouche@gmail.com>
- Alba Mendez <me@alba.sh>
- 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>
- Santtu Keskinen <santtu.keskinen@gmail.com>
- velsinki <40809145+velsinki@users.noreply.github.com>
- Curtis Doty <Curtis@GreenKey.net>
- 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>
- Lukas Geiger <lukas.geiger94@gmail.com>
- Matthew Lai <m@matthewlai.ca>
- 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>
* 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>
* 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>`_
* Kim Minjong <make.dirty.code@gmail.com>
* Martin Larralde <martin.larralde@ens-cachan.fr>
* Simon-Martin Schröder <martin.schroeder@nerdluecht.de>
* Matteo Destro <matteo.est@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>
* Benjamin Chrétien <2742231+bchretien@users.noreply.github.com>
* davidplowman <38045873+davidplowman@users.noreply.github.com>
* Hanz <40712686+HanzCEO@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>
* 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>
* Johan Jeppsson Karlin <johjep@gmail.com>
* Kian-Meng Ang <kianmeng@cpan.org>
* Philipp Klaus <klaus@physik.uni-frankfurt.de>
* Marcell Pardavi <marcell.pardavi@gmail.com>
* Matteo Destro <matteo@cerrion.com>
* Mattias Wadman <mattias.wadman@gmail.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>
* 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.