Skip to content

Commit

Permalink
setup: Python 3.13 support
Browse files Browse the repository at this point in the history
We need to pull in a pre-release cffi package on 3.13 otherwise
we get build time errors.
  • Loading branch information
indygreg committed May 26, 2024
1 parent 42cc141 commit f90e2bb
Show file tree
Hide file tree
Showing 7 changed files with 240 additions and 9 deletions.
20 changes: 16 additions & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ jobs:
- '3.10'
- '3.11'
- '3.12'
- '3.13'
arch:
- 'arm64'
- 'x86'
Expand Down Expand Up @@ -49,7 +50,8 @@ jobs:
env:
# Enable fuzzing tests, other expensive tests.
ZSTD_SLOW_TESTS: '1'
# Make all compile warnings fatal.
# Make all compile warnings fatal except on 3.13, which has some deprecations
# at the moment.
ZSTD_WARNINGS_AS_ERRORS: '1'
# More thorough fuzzing coverage.
HYPOTHESIS_PROFILE: 'ci'
Expand All @@ -61,6 +63,7 @@ jobs:
with:
python-version: ${{ matrix.py }}
architecture: ${{ matrix.arch }}
allow-prereleases: ${{ matrix.py == '3.13' && true || false }}

- name: Install Rust
if: matrix.arch == 'x64'
Expand All @@ -71,17 +74,26 @@ jobs:
- uses: actions/checkout@v4

- name: Install Dependencies
if: matrix.py != '3.13'
shell: bash
run: |
python -m pip install --require-hashes -r ci/requirements.txt
# TODO remove once cffi 1.17 is released and is part of requirements.txt.
- name: Install Dependencies (Python 3.13)
if: matrix.py == '3.13'
shell: bash
run: |
python -m pip install --require-hashes -r ci/requirements.313.txt
# TODO enable once PyO3 supports 3.13.
- name: Build (Rust)
if: matrix.arch == 'x64'
if: matrix.arch == 'x64' && matrix.py != '3.13'
run: |
python -m pip install --config-setting='--build-option=--rust-backend' -e .
python -m pip install --config-settings='--build-option=--rust-backend' -e .
- name: Build (No Rust)
if: matrix.arch != 'x64'
if: matrix.arch != 'x64' || matrix.py == '3.13'
run: |
python -m pip install -e .
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/typing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,14 @@ jobs:
- '3.10'
- '3.11'
- '3.12'
- '3.13'
runs-on: 'ubuntu-22.04'
steps:
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.py }}
allow-prereleases: ${{ matrix.py == '3.13' && true || false }}

- uses: actions/checkout@v4

Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/wheel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ jobs:
- 'cp310-cp310'
- 'cp311-cp311'
- 'cp312-cp312'
- 'cp313-cp313'
runs-on: 'ubuntu-22.04'
steps:
- uses: actions/checkout@v4
Expand Down Expand Up @@ -49,6 +50,7 @@ jobs:
- 'cp310'
- 'cp311'
- 'cp312'
- 'cp313'
arch:
- 'arm64'
- 'x86_64'
Expand Down Expand Up @@ -91,6 +93,7 @@ jobs:
- '3.10'
- '3.11'
- '3.12'
- '3.13'
arch:
- 'x86'
- 'x64'
Expand All @@ -103,6 +106,7 @@ jobs:
with:
python-version: ${{ matrix.py }}
architecture: ${{ matrix.arch }}
allow-prereleases: ${{ matrix.py == '3.13' && true || false }}

- uses: actions/checkout@v4

Expand Down
193 changes: 193 additions & 0 deletions ci/requirements.313.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
#
# This file is autogenerated by pip-compile with Python 3.13
# by the following command:
#
# pip-compile --generate-hashes --output-file=ci/requirements.313.txt --pre ci/requirements.in
#
atomicwrites==1.4.1 \
--hash=sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11
# via -r ci/requirements.in
attrs==23.2.0 \
--hash=sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30 \
--hash=sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1
# via hypothesis
bashlex==0.18 \
--hash=sha256:5bb03a01c6d5676338c36fd1028009c8ad07e7d61d8a1ce3f513b7fff52796ee \
--hash=sha256:91d73a23a3e51711919c1c899083890cdecffc91d8c088942725ac13e9dcfffa
# via cibuildwheel
bracex==2.4 \
--hash=sha256:a27eaf1df42cf561fed58b7a8f3fdf129d1ea16a81e1fadd1d17989bc6384beb \
--hash=sha256:efdc71eff95eaff5e0f8cfebe7d01adf2c8637c8c92edaf63ef348c241a82418
# via cibuildwheel
certifi==2024.2.2 \
--hash=sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f \
--hash=sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1
# via cibuildwheel
cffi==1.17.0rc1 \
--hash=sha256:157cfe06e48356a7552e68cb73976a710f2620a5f9eb25a5fe7066cf71601b68 \
--hash=sha256:1c9f4df436f3780f2dbea2ff066cea0bb2f74425883bc5b098812768da2b34f7 \
--hash=sha256:1da24a9bf6fd9ab987a915887f0d3577d0a0b3946d582b776b380294dc5fce18 \
--hash=sha256:1db9f6fcf79e92ee2d193cd989dde4e1419193ff11eef4bcc00cb06293e22f4b \
--hash=sha256:1fee79745f50734490d3358f9cb6578f57850bb61287256115dda2a513abe3c6 \
--hash=sha256:205051765f126c1480d1eaf6268c644262bae3ed610423f0783349f04e7f5a6b \
--hash=sha256:22eac8f9c77df0899a6cd373d6a62da40644573a5e27982f7713bd2a9f0b0edf \
--hash=sha256:2e5562c744d495f838dc0fbe9cd76cff27ebea0a2e747dd84dd8a7e47bcd3c8f \
--hash=sha256:3113951a250b021d2092e870fe86cd4292a633a786f7ece67200663406409659 \
--hash=sha256:319ec248b55d34a49d7a43c48f2cf922b526e5ad2a3988887cc822a0c226b983 \
--hash=sha256:35bd512b1a16723b8c50665c3fe83c80789f7e5599c8f0721ef145552b6853e7 \
--hash=sha256:3745df375d5e66261295840fa219797251ff6a30afedfae650576ab2b10f43db \
--hash=sha256:39b9131ed6c28f63132dee75d1fa5653436cb46fc7e6a097af29f32c7f5f8eca \
--hash=sha256:3c4b0e03d0d9f3a31110994bf657076f3821ad1a88e2cdb7c3e43b4e4f96e7b0 \
--hash=sha256:3ea7190f834a5979e30bc4af334c031303a4f16f38216599645034751d683171 \
--hash=sha256:3f60cc0a65ac412887ba284c946242ed4e07065003b358a4d288334f6c2a54ed \
--hash=sha256:475d2832950f9a65740aeb20d5baf6d84cf0d08a7063c8c6c407ec24cac41881 \
--hash=sha256:494abc4dc78792d210249127a75021049c7832468f9daa6e81ec0dfc1f55d9d0 \
--hash=sha256:4f17c3cfc4a7a53693bda38ac1631f30ceb2430f4a038550f5515728592ccd6f \
--hash=sha256:58463f9a28f4357f4a07a94fbb0dca91486f6948f19a4971e0bedd6292ef0394 \
--hash=sha256:614afb2f32d5ea64a946643d798f3391d53bba868290e7433f4eaae7d1692e06 \
--hash=sha256:625eb8d8d377438cfbf64899e09969d20cd139019838a60644f05216f7c7767d \
--hash=sha256:6a891c9e564527b4e65d65f87e3e989c3369329d04b39c49f279a91266287b85 \
--hash=sha256:6aff0256e080afb8964e091f94222c2808cdf7c5f13d58f88e799e2fbde53a9d \
--hash=sha256:6bce1aa64c52c3cb0c7326dd81d1dc5a4831946b29721592983eb4ae80beb2ac \
--hash=sha256:6df680dccdb5fcd257343532d5354c0059a6e5e4bc27b24a6a310cc51ba35a31 \
--hash=sha256:7249add87681d15f1a291e096f49350b28c44be958c5ca650d8c4dfbce3a458f \
--hash=sha256:730a92dd144eb89f69c7b61ba4e6ac48ee6a01ba92f70c17e277c3e2c49b253d \
--hash=sha256:752c6a06036a24b54936f488ad13b0a83b7d1e0f9fefbe3a4fc237676b1091cf \
--hash=sha256:7953cd1968a8ea99482d7bfcf5bb9c56d56e91660b97ee940923394c8194d921 \
--hash=sha256:7e12962a21ba417611c7f9ae3e7f42d5354b68bf3c894af7796c171f6a965acf \
--hash=sha256:84269088c987aa34045ee808b8a3c5f44397403f1afeff65429cd7c9e123dc01 \
--hash=sha256:85b997ce260a93010a72767c0f2f7c405524cada076792a9baad75cef435f293 \
--hash=sha256:8b77f45d5b938f8fa6d3087892458c57458f55a90410ce15c61585627930838b \
--hash=sha256:8e7b261c3ea000b9a7c4fd40dd54ec3749d4592808025261d82e82f6457e8b7f \
--hash=sha256:8fe736c2666e20090ae52af3b0297fb9273830f9d31f6041d7a8c7172fb6a566 \
--hash=sha256:94af5cfe8eb0d2742435458b8c8708aeb88f17fb48372bc4dacb87671e1ba867 \
--hash=sha256:98c7f31f55c4d0f9dba7da07bab8cd822cff6ac8dbea28ea8385e3a1e7074ac6 \
--hash=sha256:98e89b4eabb3f98c7882016cb4c498bded7882ad655f80d7a9d23043a1d12d43 \
--hash=sha256:98eaba1ed99a0a219cabe7d8bb716d9d87aeeb1b6f33792bcf84cc222c1a37b1 \
--hash=sha256:9b5cb07680e7d3c522733d14fbc0cac0660b597a2e33d8bbd305537b65eb6a51 \
--hash=sha256:9e39b8008534eedae1bde35d7cd5b71069f8aa7e6c079ae549a0de68299af43c \
--hash=sha256:a23431415147e0c711742b4e273b362758e632bd11a1e676c58011f0ed96da42 \
--hash=sha256:a33648455eefb348b265bd10764833ab7d5f3811912a90dcefc00328d548da0d \
--hash=sha256:a4b7e94db6e6bc2582fa540175384070edbd63c61103b182f57be3a958c0b7ad \
--hash=sha256:a72748e56cd5edfc808c508da6e4b903225d1ed4c45463c28edf188ffea6d442 \
--hash=sha256:b3245d8073632f958cf239a198c0c3bed112a59d6ee2202e85367955b92794c6 \
--hash=sha256:b57fa5d8a1a2cc960613e0e578867d21a018f4405e9bad31c7b0af2b14004f2b \
--hash=sha256:b6f35a638639298d4f9dca59db1f7568860ea179ace42318d658698850f2f540 \
--hash=sha256:b7cb4755dc605ac5f2cf0b00e4063fdc2ca474da7bdc473877f8b5cba133b43e \
--hash=sha256:ba993bea9f3195dc2f8dd9e3739f97f41eac5d71f5804d1ef87ee1283a13a280 \
--hash=sha256:bf62263af2a3fadaf992775e0e555d657546dee30d3ca8a2ed1559c90006d46e \
--hash=sha256:c207ccc9f2e459eab7952401dc9237e36d6b630b5020890736e6b18002a750f3 \
--hash=sha256:c82e1f580f3dd473a9d8b213071dfd8da07f7a433b04ba6be4773ada211d3fdb \
--hash=sha256:ca0dd9cfb6a3fd91d6f1de5a2e2ee7a0f4b5b753309ec4edce32d5505dbc9149 \
--hash=sha256:cfc1d8a64c44544a01b06b1688dca70433dc47e2d46f462c9ee6dc02ab233ba8 \
--hash=sha256:d1089e9654cbbeb4e3ba84caa5eb0a92371fcac6ba43b14514680d339068abed \
--hash=sha256:d50cef1600b59ec5669a28050286a456682443f20be9b0226c0fe5502860216e \
--hash=sha256:e27ceb498d5a93f7fe833c5a3a85f8b9f0a4f1a182f1d37936e9ed31dda6926b \
--hash=sha256:e3ae055e90ea13480185a1ef5325ebd9ac092e03f5f473be3e93eac62bfd43df \
--hash=sha256:e547a347a983bda467ae8d8b607d278cdf8a37bea735399d655c82cba3f5d725 \
--hash=sha256:e6c686d93378b18a7b26bbb376dab75716a72bd95c04b7f2cff9094ac66a4582 \
--hash=sha256:ec95c379f5ebd92cd09e3e8183da9afee8c2da2544593fe091421ed2d757f3c1 \
--hash=sha256:f6e933e0118a97df454139ca84a28473a024429c7c1eb82619a56ef886b07583 \
--hash=sha256:f9155a5b35097cbe7a2e31611daf681b7119d895090bb101bf94805fb6bc7834 \
--hash=sha256:fa76f23281fd49c305002f510c773ecf6216118f2e7083b34ffa06983d6db96a \
--hash=sha256:ffe885231b8b58f18149e9eaece2d556602aeb233161c069618bda31f3a30d04
# via -r ci/requirements.in
cibuildwheel==2.18.1 \
--hash=sha256:a1b0c17dfa690c452022962f2b8d676e39774c0ee1fd5f07a992364b7705e98e \
--hash=sha256:a3e911b34b10b015690f8332c5c78369191136462ec2626169e202f98a453a41
# via -r ci/requirements.in
colorama==0.4.6 \
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
# via -r ci/requirements.in
execnet==2.1.1 \
--hash=sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc \
--hash=sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3
# via pytest-xdist
filelock==3.14.0 \
--hash=sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f \
--hash=sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a
# via cibuildwheel
hypothesis==6.102.6 \
--hash=sha256:ef281ba8b2626ebade9f463fbe8851ae6ff6ae4a8621a9e54c7c2477a97ccff0 \
--hash=sha256:ef5655b4ca349082241ab55f899a34ea6d75cc336a7b07356680909059db1349
# via -r ci/requirements.in
iniconfig==2.0.0 \
--hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \
--hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
# via pytest
mypy==1.10.0 \
--hash=sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061 \
--hash=sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99 \
--hash=sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de \
--hash=sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a \
--hash=sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9 \
--hash=sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec \
--hash=sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1 \
--hash=sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131 \
--hash=sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f \
--hash=sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821 \
--hash=sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5 \
--hash=sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee \
--hash=sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e \
--hash=sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746 \
--hash=sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2 \
--hash=sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0 \
--hash=sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b \
--hash=sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53 \
--hash=sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30 \
--hash=sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda \
--hash=sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051 \
--hash=sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2 \
--hash=sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7 \
--hash=sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee \
--hash=sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727 \
--hash=sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976 \
--hash=sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4
# via -r ci/requirements.in
mypy-extensions==1.0.0 \
--hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \
--hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782
# via mypy
packaging==24.0 \
--hash=sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5 \
--hash=sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9
# via
# cibuildwheel
# pytest
platformdirs==4.2.2 \
--hash=sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee \
--hash=sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3
# via cibuildwheel
pluggy==1.5.0 \
--hash=sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1 \
--hash=sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669
# via pytest
pycparser==2.22 \
--hash=sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6 \
--hash=sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc
# via
# -r ci/requirements.in
# cffi
pytest==8.2.1 \
--hash=sha256:5046e5b46d8e4cac199c373041f26be56fdb81eb4e67dc11d4e10811fc3408fd \
--hash=sha256:faccc5d332b8c3719f40283d0d44aa5cf101cec36f88cde9ed8f2bc0538612b1
# via
# -r ci/requirements.in
# pytest-xdist
pytest-xdist==3.6.1 \
--hash=sha256:9ed4adfb68a016610848639bb7e02c9352d5d9f03d04809919e2dafc3be4cca7 \
--hash=sha256:ead156a4db231eec769737f57668ef58a2084a34b2e55c4a8fa20d861107300d
# via -r ci/requirements.in
sortedcontainers==2.4.0 \
--hash=sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88 \
--hash=sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0
# via hypothesis
typing-extensions==4.12.0 \
--hash=sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8 \
--hash=sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594
# via mypy
wheel==0.43.0 \
--hash=sha256:465ef92c69fa5c5da2d1cf8ac40559a8c940886afcef87dcf14b9470862f1d85 \
--hash=sha256:55c570405f142630c6b9f72fe09d9b67cf1477fcf543ae5b8dcb1f5b7377da81
# via -r ci/requirements.in
10 changes: 10 additions & 0 deletions docs/news.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,16 @@ Changes
-------

* PyO3 Rust crate upgraded from 0.18 to 0.21.
* Semi official support for CPython 3.13. Binary wheels for 3.13 are now published
during releases. There were no meaningful code changes to support Python 3.12.
Support is *semi official* since 3.13 is still in beta and 3.13 is currently being
built against a pre-release version of cffi 1.17. We also lack a Rust extension
for 3.13 since PyO3 lacks a release with 3.13 support.
* ``pyproject.toml`` now lists version constraints of `[build-system]` requirements,
not exact versions. This should provide more compatibility with more environments.
``setuptools`` is held back before 69.0.0 because that version apparently broke
support for using ``--global-settings=--build-option`` in editable installs, which
our CI relies on.

0.22.0 (released 2023-11-01)
============================
Expand Down
11 changes: 8 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
[build-system]
requires = [
"cffi==1.16.0",
"setuptools==68.2.2",
"wheel==0.41.2",
"cffi>=1.16.0; python_version <= '3.12'",
"cffi==1.17.0rc1; python_version >= '3.13'",
# 69.0.0 breaks handling of --config-settings=--build-option, which our CI
# relies on. So constrained to an older version until we figure out a
# workaround. See comment at
# https://github.com/pypa/pip/issues/11859#issuecomment-2132287974.
"setuptools<69.0.0",
"wheel>=0.41.2",
]
# Need to use legacy backend because setup_zstd.py breaks build isolation.
build-backend = "setuptools.build_meta:__legacy__"
Expand Down
9 changes: 7 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@
# garbage collection pitfalls.
MINIMUM_CFFI_VERSION = "1.11"

# Need 1.17+ on 3.13 to avoid deprecated and removed APIs.
if sys.version_info[0:2] >= (3, 13):
MINIMUM_CFFI_VERSION = "1.17"

try:
import cffi

Expand All @@ -37,8 +41,8 @@
cffi_version = LooseVersion(cffi.__version__)
if cffi_version < LooseVersion(MINIMUM_CFFI_VERSION):
print(
"CFFI 1.11 or newer required (%s found); "
"not building CFFI backend" % cffi_version,
"CFFI %s or newer required (%s found); "
"not building CFFI backend" % (MINIMUM_CFFI_VERSION, cffi_version),
file=sys.stderr,
)
cffi = None
Expand Down Expand Up @@ -144,6 +148,7 @@
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
],
keywords=["zstandard", "zstd", "compression"],
packages=["zstandard"],
Expand Down

0 comments on commit f90e2bb

Please sign in to comment.