From bf8d23b25371a84e0fef5175a2785a15a792ab92 Mon Sep 17 00:00:00 2001 From: Pierre Massat Date: Thu, 19 Feb 2026 16:25:34 -0800 Subject: [PATCH 01/66] feat(docker): Add Python 3.14 to manylinux CI images Add CPython 3.14.3 to the Docker image for building wheels. Also updates python-build-standalone from 20241016 to 20260211, bumping existing Pythons (3.11.14, 3.12.12, 3.13.12) and pip/setuptools/wheel to versions that support 3.14. Co-Authored-By: Claude Agent transcript: https://claudescope.sentry.dev/share/Al5MtqcQnkt1gm-jnx6oL_GOvYTH5jS74i_VDV3avDE --- build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.py b/build.py index 16f1189d..31f3377d 100644 --- a/build.py +++ b/build.py @@ -32,7 +32,7 @@ from packaging.utils import parse_wheel_filename from packaging.version import Version -PYTHONS = ((3, 11), (3, 12), (3, 13)) +PYTHONS = ((3, 11), (3, 12), (3, 13), (3, 14)) BINARY_EXTS = frozenset( (".c", ".cc", ".cpp", ".cxx", ".pxd", ".pxi", ".pyx", ".go", ".rs") From 99449f46769f32669bc700dcab7ed5f12a0fee53 Mon Sep 17 00:00:00 2001 From: Pierre Massat Date: Thu, 19 Feb 2026 16:25:43 -0800 Subject: [PATCH 02/66] ref: Revert build.py PYTHONS change MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Don't build py314 packages yet — only add CPython 3.14 to the Docker image so it's available for future use. Co-Authored-By: Claude Agent transcript: https://claudescope.sentry.dev/share/35z9K7seE_hEDSFU1UupeIa8FBtGyQqFv-mYa7W-Twk --- build.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.py b/build.py index 31f3377d..16f1189d 100644 --- a/build.py +++ b/build.py @@ -32,7 +32,7 @@ from packaging.utils import parse_wheel_filename from packaging.version import Version -PYTHONS = ((3, 11), (3, 12), (3, 13), (3, 14)) +PYTHONS = ((3, 11), (3, 12), (3, 13)) BINARY_EXTS = frozenset( (".c", ".cc", ".cpp", ".cxx", ".pxd", ".pxi", ".pyx", ".go", ".rs") From 312b48c8edef3ef1e1fe558535bdbd74e77346dd Mon Sep 17 00:00:00 2001 From: Pierre Massat Date: Thu, 19 Feb 2026 14:30:25 -0800 Subject: [PATCH 03/66] feat: Add Python 3.14 support to build and validation Add CPython 3.14 as a build target so wheels are produced and validated for the new version. The Docker image is updated to include 3.14.3 from the 20260211 python-build-standalone release. The install-pythons script now derives the release URL from the filename so different Python versions can come from different releases without needing a single shared release constant. Co-Authored-By: Claude Agent transcript: https://claudescope.sentry.dev/share/ItdjNNWB2P8_USprDnV0ADMt2jpcI2YSduF2v4j4JjU --- build.py | 2 +- tests/validate_test.py | 10 +++++----- validate.py | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/build.py b/build.py index 16f1189d..31f3377d 100644 --- a/build.py +++ b/build.py @@ -32,7 +32,7 @@ from packaging.utils import parse_wheel_filename from packaging.version import Version -PYTHONS = ((3, 11), (3, 12), (3, 13)) +PYTHONS = ((3, 11), (3, 12), (3, 13), (3, 14)) BINARY_EXTS = frozenset( (".c", ".cc", ".cpp", ".cxx", ".pxd", ".pxi", ".pyx", ".go", ".rs") diff --git a/tests/validate_test.py b/tests/validate_test.py index 6484069d..e7f486b6 100644 --- a/tests/validate_test.py +++ b/tests/validate_test.py @@ -43,24 +43,24 @@ def test_pythons_to_check_no_pythons_raises_error(): def test_pythons_to_check_py2_ignored(): ret = validate._pythons_to_check(parse_tag("py2.py3-none-any")) - assert ret == ("python3.11", "python3.12", "python3.13") + assert ret == ("python3.11", "python3.12", "python3.13", "python3.14") def test_pythons_to_check_py3_gives_all(): ret = validate._pythons_to_check(parse_tag("py3-none-any")) - assert ret == ("python3.11", "python3.12", "python3.13") + assert ret == ("python3.11", "python3.12", "python3.13", "python3.14") def test_pythons_to_check_abi3(): tag = "cp37-abi3-manylinux1_x86_64" ret = validate._pythons_to_check(parse_tag(tag)) - assert ret == ("python3.11", "python3.12", "python3.13") + assert ret == ("python3.11", "python3.12", "python3.13", "python3.14") def test_pythons_to_check_minimum_abi3(): tag = "cp312-abi3-manylinux1_x86_64" ret = validate._pythons_to_check(parse_tag(tag)) - assert ret == ("python3.12", "python3.13") + assert ret == ("python3.12", "python3.13", "python3.14") def test_pythons_to_check_specific_cpython_tag(): @@ -76,7 +76,7 @@ def test_pythons_to_check_multi_platform_with_musllinux(): tags = parse_tag("py3-none-any") | parse_tag("py3-none-musllinux_1_2_x86_64") ret = validate._pythons_to_check(tags) # Should succeed because at least one tag (py3-none-any) is compatible - assert ret == ("python3.11", "python3.12", "python3.13") + assert ret == ("python3.11", "python3.12", "python3.13", "python3.14") def test_top_imports_record(tmp_path): diff --git a/validate.py b/validate.py index a04acb01..8f9d8727 100644 --- a/validate.py +++ b/validate.py @@ -16,7 +16,7 @@ from packaging.utils import parse_wheel_filename from packaging.version import Version -PYTHONS = ((3, 11), (3, 12), (3, 13)) +PYTHONS = ((3, 11), (3, 12), (3, 13), (3, 14)) DIST_INFO_RE = re.compile(r"^[^/]+.dist-info/[^/]+$") From cb5f25d3ffe46c01e816e98a7ddcf55e9d8f6e6d Mon Sep 17 00:00:00 2001 From: Pierre Massat Date: Thu, 19 Feb 2026 14:33:24 -0800 Subject: [PATCH 04/66] fix: Black formatting and backports-zstd python_versions Fix black formatting for RELEASE_BASE in install-pythons. Add python_versions = <3.14 to backports-zstd==1.3.0 since it declares Requires-Python >=3.9,<3.14. Co-Authored-By: Claude Agent transcript: https://claudescope.sentry.dev/share/Gq-buso0ranTB4rLKkb9Ep55pUCG5IeGtJFnQTv7yyA --- packages.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/packages.ini b/packages.ini index 3bbbce53..d1e8adaa 100644 --- a/packages.ini +++ b/packages.ini @@ -79,6 +79,7 @@ python_versions = <3.13 [babel==2.17.0] [backports-zstd==1.3.0] +python_versions = <3.14 [backrefs==5.9] From ce43993474d4aa97e3e8502a29600f7979da94f6 Mon Sep 17 00:00:00 2001 From: Pierre Massat Date: Thu, 19 Feb 2026 15:37:33 -0800 Subject: [PATCH 05/66] fix: Add CMAKE_POLICY_VERSION_MINIMUM for crc32c prebuild CMake 4.x removed compatibility with cmake_minimum_required < 3.5. The crc32c 1.1.2 CMakeLists.txt requires an older minimum, so pass -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to allow it to configure. Co-Authored-By: Claude Agent transcript: https://claudescope.sentry.dev/share/5oWxVqqxe2DCIZCs6tjes9XF-wSB8MtKsfb_DMH9VhI --- prebuild/crc32c | 1 + 1 file changed, 1 insertion(+) diff --git a/prebuild/crc32c b/prebuild/crc32c index 6663a84c..223f1f2b 100755 --- a/prebuild/crc32c +++ b/prebuild/crc32c @@ -49,6 +49,7 @@ def main() -> int: subprocess.check_call( ( "cmake", + "-DCMAKE_POLICY_VERSION_MINIMUM=3.5", f"-DCMAKE_INSTALL_PREFIX={args.prefix}", "-DCRC32C_BUILD_TESTS=no", "-DCRC32C_BUILD_BENCHMARKS=no", From e617d49df63aca876abca7a9ec7889edb4db8d6a Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 10:09:36 -0800 Subject: [PATCH 06/66] build: only support macos-15 and add cp314 --- .github/workflows/build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ae452b54..32d97a3b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,7 +28,7 @@ jobs: macos: strategy: matrix: - runs-on: [macos-14] + runs-on: [macos-15] runs-on: ${{ matrix.runs-on }} steps: - uses: actions/checkout@v3 @@ -41,6 +41,7 @@ jobs: echo "$PWD/pythons/cp311-cp311/bin" >> "$GITHUB_PATH" echo "$PWD/pythons/cp312-cp312/bin" >> "$GITHUB_PATH" echo "$PWD/pythons/cp313-cp313/bin" >> "$GITHUB_PATH" + echo "$PWD/pythons/cp314-cp314/bin" >> "$GITHUB_PATH" echo "$PWD/venv/bin" >> "$GITHUB_PATH" - run: python3 -um venv venv && pip install -r docker/requirements.txt - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io From e3c2f2f1437b855e33da08860cb6acd3ae33a13e Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 14:08:56 -0800 Subject: [PATCH 07/66] use uv pythons and build only docker image tagged with sha and use it so we can iterate here --- .github/workflows/build.yml | 26 ++++++- docker/install-pythons | 133 +++++++++++++----------------------- 2 files changed, 71 insertions(+), 88 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 32d97a3b..3a512037 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,21 +2,43 @@ name: build on: pull_request: push: - branches: [main, test-me-*] + branches: [main] concurrency: # serialize runs on the default branch group: ${{ github.event_name == 'push' && github.workflow || github.sha }}${{ github.workflow }} jobs: + image: + strategy: + matrix: + include: + - {arch: amd64, os: ubuntu-latest} + - {arch: arm64, os: ubuntu-24.04-arm} + runs-on: ${{ matrix.os }} + permissions: + packages: write + steps: + - uses: actions/checkout@v3 + - run: docker login --username '${{ github.actor }}' --password-stdin ghcr.io <<< '${{ secrets.GITHUB_TOKEN }}' + - run: | + docker buildx build \ + --cache-from ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:latest \ + --cache-to type=inline \ + --platform linux/${{ matrix.arch }} \ + --tag ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.sha }} \ + ${{ github.ref == 'refs/heads/main' && format('--tag ghcr.io/getsentry/pypi-manylinux-{0}-ci:latest', matrix.arch) || '' }} \ + --push \ + docker linux: + needs: [image] strategy: matrix: include: - {arch: amd64, os: ubuntu-latest} - {arch: arm64, os: ubuntu-24.04-arm} runs-on: ${{ matrix.os }} - container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci + container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.sha }} steps: - uses: actions/checkout@v3 - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io diff --git a/docker/install-pythons b/docker/install-pythons index 031cc50a..4d9383a5 100755 --- a/docker/install-pythons +++ b/docker/install-pythons @@ -2,37 +2,14 @@ from __future__ import annotations import argparse -import hashlib -import os.path +import glob +import os import platform import re -import secrets +import shutil import subprocess import sys -import tempfile - -RELEASE = ( - "https://github.com/indygreg/python-build-standalone/releases/download/20260211/" -) -# curl --silent --location https://github.com/indygreg/python-build-standalone/releases/download/20260211/SHA256SUMS | grep -E '(aarch64-apple-darwin-pgo\+lto-full|x86_64-apple-darwin-pgo\+lto-full|aarch64-unknown-linux-gnu-pgo\+lto-full|x86_64-unknown-linux-gnu-pgo\+lto-full)' | grep -Ev '(cpython-3\.(8|9|10|15)|freethreaded)' -CHECKSUMS = """\ -ceda72c76ecfd4294ae3fdf275202a3cfe912cf1dc7076c9526171aaaedbd3e3 cpython-3.11.14+20260211-aarch64-apple-darwin-pgo+lto-full.tar.zst -355c4a10233a2e3ac1e511e7cf052116404e197bc70fcc22b67aba635e209808 cpython-3.11.14+20260211-aarch64-unknown-linux-gnu-pgo+lto-full.tar.zst -898995bc172df26f5e0ce9bac316254756094466b9d472234e62e4045e1ddbf6 cpython-3.11.14+20260211-x86_64-apple-darwin-pgo+lto-full.tar.zst -9dd3129d78fc42a63690b09f9f48b27d35b0fbe7b580fd1cd85bb554c82671b6 cpython-3.11.14+20260211-x86_64-unknown-linux-gnu-pgo+lto-full.tar.zst -bf70a8ba4d44eb243af9dc3485656e0ce3757588eefe27e1801b36ff9773805a cpython-3.12.12+20260211-aarch64-apple-darwin-pgo+lto-full.tar.zst -48cccc8970f32586b60125199c955da870c5b9c52c05afb2bce28714eeb17cc6 cpython-3.12.12+20260211-aarch64-unknown-linux-gnu-pgo+lto-full.tar.zst -14fe4f2213f9b89d5649b2c50636be20393ec0092960d1acd11f7c84a4e1b2e9 cpython-3.12.12+20260211-x86_64-apple-darwin-pgo+lto-full.tar.zst -75428635145d4eb8de86cff5d00a823009a21fe8c173c7899959d0f41f73ad4a cpython-3.12.12+20260211-x86_64-unknown-linux-gnu-pgo+lto-full.tar.zst -3baef69715ffc554a7f173e9419cfb75ddf25b7cae91ab141032843d53fa34c4 cpython-3.13.12+20260211-aarch64-apple-darwin-pgo+lto-full.tar.zst -0ad848cab9031fc80c64442698f6eff112d81d45eaf53f49ece6ecbfc97f6ea6 cpython-3.13.12+20260211-aarch64-unknown-linux-gnu-pgo+lto-full.tar.zst -8ad36a0b44b03f2c236d05135600d626ae73245eae0361a17ddabb9e7163e50b cpython-3.13.12+20260211-x86_64-apple-darwin-pgo+lto-full.tar.zst -2483028342db1e31a8a4004a859a856fade2563bae97f18812a2d27a123773e6 cpython-3.13.12+20260211-x86_64-unknown-linux-gnu-pgo+lto-full.tar.zst -d016c5a16c6a246f56cf2fae2a4150a339311a30787347ff1c1e063295c82401 cpython-3.14.3+20260211-aarch64-apple-darwin-pgo+lto-full.tar.zst -13a08dca6f29df3701f1846184db78499d23014f6d5a70fa6c2c1f29baee350a cpython-3.14.3+20260211-aarch64-unknown-linux-gnu-pgo+lto-full.tar.zst -3e55c3d0914e7e4f2e7a135c80077a0ac635de9dcfa0c08f2544fc2165e264a4 cpython-3.14.3+20260211-x86_64-apple-darwin-pgo+lto-full.tar.zst -96c6684fffd6da9d219400b2e3c020d9bc2c838cbb4ac202e2dd652dda3d1914 cpython-3.14.3+20260211-x86_64-unknown-linux-gnu-pgo+lto-full.tar.zst -""" + VERSIONS = ("3.11.14", "3.12.12", "3.13.12", "3.14.3") ARCH_MAP = {"arm64": "aarch64"} ARCH = ARCH_MAP.get(platform.machine(), platform.machine()) @@ -48,17 +25,6 @@ def _must_sub(reg: re.Pattern[str], new: str, s: str) -> str: return after -def _checksum_url(version: str) -> tuple[str, str]: - for line in CHECKSUMS.splitlines(): - sha256, filename = line.split() - _, f_version_release, arch, _, plat, *_ = filename.split("-") - f_version, _ = f_version_release.split("+") - if version == f_version and sys.platform == plat and ARCH == arch: - return (sha256, f"{RELEASE}/{filename}") - else: - raise NotImplementedError(version, sys.platform, platform.machine()) - - def main() -> int: parser = argparse.ArgumentParser() parser.add_argument("--dest", default="/opt/python") @@ -66,57 +32,52 @@ def main() -> int: os.makedirs(args.dest, exist_ok=True) + if not shutil.which("uv"): + subprocess.check_call((sys.executable, "-mpip", "install", "uv")) + + subprocess.check_call( + ("uv", "python", "install", *VERSIONS, "--install-dir", args.dest), + ) + for version in VERSIONS: - with tempfile.TemporaryDirectory() as tmpdir: - expected, url = _checksum_url(version) - - major, minor, *_ = version.split(".") - dest = os.path.join(args.dest, f"cp{major}{minor}-cp{major}{minor}") - tgz_dest = os.path.join(tmpdir, "python.tgz") - - curl_cmd = ("curl", "--silent", "--location", "--output", tgz_dest, url) - subprocess.check_call(curl_cmd) - - with open(tgz_dest, "rb") as f: - sha256 = hashlib.sha256(f.read()).hexdigest() - if not secrets.compare_digest(sha256, expected): - raise AssertionError(f"checksum mismatch {sha256=} {expected=}") - - os.makedirs(dest, exist_ok=True) - tar_cmd = ( - "tar", - "-C", - dest, - "--strip-components=2", - "-xf", - tgz_dest, - "python/install", + major, minor, *_ = version.split(".") + + # uv installs to e.g. cpython-3.14.3-linux-aarch64-gnu/ + matches = glob.glob(os.path.join(args.dest, f"cpython-{major}.{minor}.*")) + if len(matches) != 1: + raise AssertionError( + f"expected exactly one match for cpython-{major}.{minor}.*, " + f"got {matches}" ) - subprocess.check_call(tar_cmd) - - # https://github.com/indygreg/python-build-standalone/issues/209 - if sys.platform == "linux" and ARCH == "x86_64": - for fname in ( - f"{dest}/lib/python{major}.{minor}/config-{major}.{minor}-x86_64-linux-gnu/Makefile", - f"{dest}/lib/python{major}.{minor}/_sysconfigdata__linux_x86_64-linux-gnu.py", - ): - print(f"XXX: fixing up build metadata in {fname}") - with open(fname) as f: - contents = f.read() - contents = _must_sub(CLANG_PP, "c++", contents) - contents = _must_sub(CLANG, "cc", contents) - with open(fname, "w") as f: - f.write(contents) - - py = os.path.join(dest, "bin", "python3") - subprocess.check_call((py, "-mensurepip")) - subprocess.check_call( - ( - *(py, "-mpip", "install"), - *("pip==25.0.1", "setuptools==75.8.0", "wheel==0.45.1"), - ) + installed_dir = matches[0] + + # symlink cpXY-cpXY -> the uv-installed directory for PATH compat + link = os.path.join(args.dest, f"cp{major}{minor}-cp{major}{minor}") + os.symlink(os.path.basename(installed_dir), link) + + # https://github.com/indygreg/python-build-standalone/issues/209 + if sys.platform == "linux": + for fname in ( + f"{installed_dir}/lib/python{major}.{minor}/config-{major}.{minor}-{ARCH}-linux-gnu/Makefile", + f"{installed_dir}/lib/python{major}.{minor}/_sysconfigdata__linux_{ARCH}-linux-gnu.py", + ): + print(f"XXX: fixing up build metadata in {fname}") + with open(fname) as f: + contents = f.read() + contents = _must_sub(CLANG_PP, "c++", contents) + contents = _must_sub(CLANG, "cc", contents) + with open(fname, "w") as f: + f.write(contents) + + py = os.path.join(link, "bin", "python3") + subprocess.check_call((py, "-mensurepip")) + subprocess.check_call( + ( + *(py, "-mpip", "install"), + *("pip==25.0.1", "setuptools==75.8.0", "wheel==0.45.1"), ) - subprocess.check_call((py, "--version", "--version")) + ) + subprocess.check_call((py, "--version", "--version")) return 0 From 4fbacc38ed4a3fd6a028060eacd11925197df075 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 14:19:35 -0800 Subject: [PATCH 08/66] install uv externally --- .github/workflows/build.yml | 5 +---- docker/Dockerfile | 2 ++ docker/install-pythons | 4 ---- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3a512037..093573ff 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -54,10 +54,7 @@ jobs: runs-on: ${{ matrix.runs-on }} steps: - uses: actions/checkout@v3 - - run: | - # work around https://github.com/indygreg/python-build-standalone/issues/208 - HOMEBREW_NO_AUTO_UPDATE=1 brew install gnu-tar - echo "$(brew --prefix gnu-tar)/libexec/gnubin" >> "$GITHUB_PATH" + - run: pip install --break-system-packages uv - run: python3 -u docker/install-pythons --dest pythons - run: | echo "$PWD/pythons/cp311-cp311/bin" >> "$GITHUB_PATH" diff --git a/docker/Dockerfile b/docker/Dockerfile index b400598c..78ce3aec 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -52,6 +52,8 @@ ENV \ PIP_NO_CACHE_DIR=1 \ PIP_NO_WARN_ABOUT_ROOT_USER=0 +COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv + COPY install-pythons /tmp/install-pythons RUN /tmp/install-pythons diff --git a/docker/install-pythons b/docker/install-pythons index 4d9383a5..d0eb8905 100755 --- a/docker/install-pythons +++ b/docker/install-pythons @@ -6,7 +6,6 @@ import glob import os import platform import re -import shutil import subprocess import sys @@ -32,9 +31,6 @@ def main() -> int: os.makedirs(args.dest, exist_ok=True) - if not shutil.which("uv"): - subprocess.check_call((sys.executable, "-mpip", "install", "uv")) - subprocess.check_call( ("uv", "python", "install", *VERSIONS, "--install-dir", args.dest), ) From 4c69d4d0f64a59ba729f896b63f9f639c987e1ff Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 14:22:36 -0800 Subject: [PATCH 09/66] fixed upstream in uv pythons --- docker/install-pythons | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/docker/install-pythons b/docker/install-pythons index d0eb8905..9390ae6e 100755 --- a/docker/install-pythons +++ b/docker/install-pythons @@ -7,7 +7,6 @@ import os import platform import re import subprocess -import sys VERSIONS = ("3.11.14", "3.12.12", "3.13.12", "3.14.3") ARCH_MAP = {"arm64": "aarch64"} @@ -51,20 +50,6 @@ def main() -> int: link = os.path.join(args.dest, f"cp{major}{minor}-cp{major}{minor}") os.symlink(os.path.basename(installed_dir), link) - # https://github.com/indygreg/python-build-standalone/issues/209 - if sys.platform == "linux": - for fname in ( - f"{installed_dir}/lib/python{major}.{minor}/config-{major}.{minor}-{ARCH}-linux-gnu/Makefile", - f"{installed_dir}/lib/python{major}.{minor}/_sysconfigdata__linux_{ARCH}-linux-gnu.py", - ): - print(f"XXX: fixing up build metadata in {fname}") - with open(fname) as f: - contents = f.read() - contents = _must_sub(CLANG_PP, "c++", contents) - contents = _must_sub(CLANG, "cc", contents) - with open(fname, "w") as f: - f.write(contents) - py = os.path.join(link, "bin", "python3") subprocess.check_call((py, "-mensurepip")) subprocess.check_call( From 23f838e332a9f883f418d584ee894a63a03109d8 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 14:26:54 -0800 Subject: [PATCH 10/66] uv install --- docker/install-pythons | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/docker/install-pythons b/docker/install-pythons index 9390ae6e..3044bec6 100755 --- a/docker/install-pythons +++ b/docker/install-pythons @@ -4,23 +4,9 @@ from __future__ import annotations import argparse import glob import os -import platform -import re import subprocess VERSIONS = ("3.11.14", "3.12.12", "3.13.12", "3.14.3") -ARCH_MAP = {"arm64": "aarch64"} -ARCH = ARCH_MAP.get(platform.machine(), platform.machine()) - -CLANG_PP = re.compile(r"\bclang\+\+") -CLANG = re.compile(r"\bclang\b") - - -def _must_sub(reg: re.Pattern[str], new: str, s: str) -> str: - after = reg.sub(new, s) - if after == s: - raise AssertionError(f"expected replacement by {reg} => {new}!") - return after def main() -> int: @@ -51,12 +37,17 @@ def main() -> int: os.symlink(os.path.basename(installed_dir), link) py = os.path.join(link, "bin", "python3") - subprocess.check_call((py, "-mensurepip")) subprocess.check_call( ( - *(py, "-mpip", "install"), - *("pip==25.0.1", "setuptools==75.8.0", "wheel==0.45.1"), - ) + "uv", + "pip", + "install", + "--python", + py, + "pip==25.0.1", + "setuptools==75.8.0", + "wheel==0.45.1", + ), ) subprocess.check_call((py, "--version", "--version")) From 0b589f10c34ad407aa9ed9ee5869cdf3dc67ee54 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 14:58:13 -0800 Subject: [PATCH 11/66] hm --- docker/install-pythons | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/docker/install-pythons b/docker/install-pythons index 3044bec6..ed745b25 100755 --- a/docker/install-pythons +++ b/docker/install-pythons @@ -36,14 +36,23 @@ def main() -> int: link = os.path.join(args.dest, f"cp{major}{minor}-cp{major}{minor}") os.symlink(os.path.basename(installed_dir), link) + # remove PEP 668 marker so pip works normally + marker = os.path.join( + installed_dir, + "lib", + f"python{major}.{minor}", + "EXTERNALLY-MANAGED", + ) + if os.path.exists(marker): + os.remove(marker) + py = os.path.join(link, "bin", "python3") + subprocess.check_call((py, "-mensurepip")) subprocess.check_call( ( - "uv", - "pip", - "install", - "--python", py, + "-mpip", + "install", "pip==25.0.1", "setuptools==75.8.0", "wheel==0.45.1", From 77bdbd7159474729c0529cb063400c4512260d62 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 15:06:59 -0800 Subject: [PATCH 12/66] uv-installed standalone Python builds bundle their own libcrypt --- docker/Dockerfile | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 78ce3aec..b5020feb 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -31,20 +31,6 @@ RUN : \ zstd \ && rm -rf /var/lib/apt/lists/* -# https://github.com/pypa/auditwheel/issues/229 -# libc's libcrypt1 uses GLIBC_PRIVATE so we must build our own -RUN : \ - && git clone https://github.com/pypa/manylinux /tmp/manylinux \ - && cd /tmp/manylinux \ - && git checkout 075550587bb428c01ed2dd31f9b6e0b089d62802 \ - && \ - AUDITWHEEL_POLICY= \ - LIBXCRYPT_VERSION=4.4.28 \ - LIBXCRYPT_HASH=db7e37901969cb1d1e8020cb73a991ef81e48e31ea5b76a101862c806426b457 \ - LIBXCRYPT_DOWNLOAD_URL=https://github.com/besser82/libxcrypt/archive \ - /tmp/manylinux/docker/build_scripts/install-libxcrypt.sh \ - && rm -rf /tmp/manylinux - ENV \ BUILD_IN_CONTAINER=1 \ PATH=/venv/bin:/opt/python/cp311-cp311/bin:/opt/python/cp312-cp312/bin:/opt/python/cp313-cp313/bin:/opt/python/cp314-cp314/bin:$PATH \ From ec93eddab01c31f5744ae35ff9b8e48a58114a16 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 15:28:35 -0800 Subject: [PATCH 13/66] fix librdkafka build: use system deps instead of building from source Remove --source-deps-only from librdkafka configure so it uses system-installed libraries. The bundled source deps (zlib 1.2.13 etc.) fail to build: on Linux due to broken perl/shasum from the custom libxcrypt, and on macOS due to Xcode 16 SDK incompatibilities. Add libcurl4-openssl-dev, libsasl2-dev, and libzstd-dev to the Docker image so all librdkafka deps are available as system packages. Co-Authored-By: Claude Opus 4.6 --- docker/Dockerfile | 3 +++ prebuild/librdkafka | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index b5020feb..ec94993f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -21,8 +21,11 @@ RUN : \ libncursesw5-dev \ libreadline-dev \ libsqlite3-dev \ + libcurl4-openssl-dev \ + libsasl2-dev \ libssl-dev \ libtool \ + libzstd-dev \ make \ pkg-config \ uuid-dev \ diff --git a/prebuild/librdkafka b/prebuild/librdkafka index ceb75ed9..91195129 100755 --- a/prebuild/librdkafka +++ b/prebuild/librdkafka @@ -39,7 +39,6 @@ def main() -> int: "./configure", "--enable-static", "--install-deps", - "--source-deps-only", f"--prefix={args.prefix}", ), cwd=tmpdir, From ebcaf4a49515a0f405a2c0d0eb33007d4d5593fd Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 15:44:00 -0800 Subject: [PATCH 14/66] build only librdkafka libraries, skip examples The examples fail to link when using system libcurl because its static lib has many transitive deps (libpsl, libgssapi, libidn2, libbrotli) that aren't provided. We only need the library itself, not examples. Co-Authored-By: Claude Opus 4.6 --- prebuild/librdkafka | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/prebuild/librdkafka b/prebuild/librdkafka index 91195129..f026d58b 100755 --- a/prebuild/librdkafka +++ b/prebuild/librdkafka @@ -45,11 +45,8 @@ def main() -> int: ) print("building...") - subprocess.check_call(("make", "-j"), cwd=tmpdir) - print("testing...") - subprocess.check_call( - ("examples/rdkafka_example", "-X", "builtin.features"), cwd=tmpdir - ) + subprocess.check_call(("make", "-j", "-C", "src"), cwd=tmpdir) + subprocess.check_call(("make", "-j", "-C", "src-cpp"), cwd=tmpdir) print("installing...") subprocess.check_call(("make", "install"), cwd=tmpdir) From 7c21ae6d2d85e687f0f1f4d4b9c2a435bdbc6449 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 15:57:31 -0800 Subject: [PATCH 15/66] scope make install to src and src-cpp only Top-level make install also tries to build examples, which fails due to libcurl static linking transitive deps. Co-Authored-By: Claude Opus 4.6 --- prebuild/librdkafka | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/prebuild/librdkafka b/prebuild/librdkafka index f026d58b..fd60a6f6 100755 --- a/prebuild/librdkafka +++ b/prebuild/librdkafka @@ -48,7 +48,8 @@ def main() -> int: subprocess.check_call(("make", "-j", "-C", "src"), cwd=tmpdir) subprocess.check_call(("make", "-j", "-C", "src-cpp"), cwd=tmpdir) print("installing...") - subprocess.check_call(("make", "install"), cwd=tmpdir) + subprocess.check_call(("make", "-C", "src", "install"), cwd=tmpdir) + subprocess.check_call(("make", "-C", "src-cpp", "install"), cwd=tmpdir) return 0 From 3a051faa3dc08b6f3f7f48efa783f819e31d33e4 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 16:37:11 -0800 Subject: [PATCH 16/66] cant build 1.67.0 on <3.14 but i think we dont need it anymore --- packages.ini | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages.ini b/packages.ini index d1e8adaa..78ce9723 100644 --- a/packages.ini +++ b/packages.ini @@ -872,6 +872,7 @@ python_versions = <3.13 [grpcio==1.66.1] python_versions = <3.13 [grpcio==1.67.0] +python_versions = <3.14 [grpcio==1.72.0rc1] [grpcio==1.73.1] [grpcio==1.75.1] @@ -1007,7 +1008,9 @@ python_versions = <3.12 [jinja2==3.1.6] [jiter==0.9.0] +python_versions = <3.14 [jiter==0.10.0] +python_versions = <3.14 [jmespath==0.10.0] [jmespath==1.0.1] From 87cd92fa2e3ee3bb3438b99a88662626f6249ae0 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 16:38:14 -0800 Subject: [PATCH 17/66] hold off on building grpcio older versions --- packages.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages.ini b/packages.ini index 78ce9723..b12fe8c0 100644 --- a/packages.ini +++ b/packages.ini @@ -874,7 +874,9 @@ python_versions = <3.13 [grpcio==1.67.0] python_versions = <3.14 [grpcio==1.72.0rc1] +python_versions = <3.14 [grpcio==1.73.1] +python_versions = <3.14 [grpcio==1.75.1] [grpcio-status==1.47.0] From 66c8203e8efac29dc719a1eb26536ad16bc05341 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 16:50:43 -0800 Subject: [PATCH 18/66] lief ignore --- packages.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/packages.ini b/packages.ini index b12fe8c0..76ba1fa4 100644 --- a/packages.ini +++ b/packages.ini @@ -1078,6 +1078,7 @@ python_versions = <3.13 [librt==0.7.8] [lief==0.16.6] +python_versions = <3.14 [looseversion==1.0.2] From 19a718d1093c95adfadb946c35c268d54749fd9e Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 17:10:46 -0800 Subject: [PATCH 19/66] orjson < 3.14 --- packages.ini | 2635 +++++++++++++++++++++++++------------------------- 1 file changed, 1318 insertions(+), 1317 deletions(-) diff --git a/packages.ini b/packages.ini index 76ba1fa4..6c03c43d 100644 --- a/packages.ini +++ b/packages.ini @@ -1,1329 +1,1330 @@ -[aiohappyeyeballs==2.4.3] -[aiohappyeyeballs==2.6.1] +# [aiohappyeyeballs==2.4.3] +# [aiohappyeyeballs==2.6.1] + +# [aiohttp==3.8.3] +# python_versions = <3.12 +# [aiohttp==3.8.4] +# python_versions = <3.12 +# [aiohttp==3.8.5] +# python_versions = <3.12 +# [aiohttp==3.9.1] +# python_versions = <3.13 +# [aiohttp==3.10.2] +# python_versions = <3.13 +# [aiohttp==3.10.10] +# [aiohttp==3.12.15] + +# [aiosignal==1.2.0] +# [aiosignal==1.3.1] +# [aiosignal==1.4.0] + +# [alabaster==0.7.12] +# [alabaster==1.0.0] + +# [alembic==1.0.11] + +# [amqp==2.6.1] +# [amqp==5.1.1] +# [amqp==5.2.0] +# [amqp==5.3.1] + +# [annotated-types==0.6.0] +# [annotated-types==0.7.0] + +# [anton-testing-deleteme-123==3.0.0a1] + +# [anyio==3.6.1] +# [anyio==3.7.1] +# [anyio==4.4.0] +# [anyio==4.9.0] + +# [asgiref==3.5.2] +# [asgiref==3.6.0] +# [asgiref==3.7.2] +# [asgiref==3.8.0] +# [asgiref==3.8.1] +# [asgiref==3.9.1] + +# [asn1crypto==1.5.1] + +# [async-generator==1.10] + +# [async-timeout==4.0.2] +# [async-timeout==4.0.3] + +# [attrs==19.2.0] +# [attrs==21.4.0] +# [attrs==22.1.0] +# [attrs==22.2.0] +# [attrs==23.1.0] +# [attrs==23.2.0] +# [attrs==24.2.0] +# [attrs==25.3.0] + +# [auditwheel==5.1.2] + +# [auto-type-annotate==1.0.0] +# [auto-type-annotate==1.0.1] +# [auto-type-annotate==1.1.0] +# [auto-type-annotate==1.1.1] +# [auto-type-annotate==1.1.2] + +# [avalara==20.9.0] +# [avalara==22.7.0] +# [avalara==22.8.0] + +# [avro==1.11.1] + +# [babel==2.10.3] +# [babel==2.17.0] + +# [backports-zstd==1.3.0] +# python_versions = <3.14 + +# [backrefs==5.9] + +# [bcrypt==4.0.0] +# [bcrypt==4.1.3] +# [bcrypt==4.2.0] + +# [beautifulsoup4==4.7.1] +# [beautifulsoup4==4.11.1] + +# [billiard==3.6.4.0] +# [billiard==4.0.2] +# [billiard==4.2.0] +# [billiard==4.2.1] + +# [black==22.3.0] +# validate_extras = d +# [black==22.6.0] +# validate_extras = d +# [black==22.8.0] +# validate_extras = d +# [black==22.10.0] +# validate_extras = d +# [black==23.1.0] +# validate_extras = d +# [black==23.3.0] +# validate_extras = d +# [black==23.9.1] +# validate_extras = d +# [black==23.12.0] +# validate_extras = d +# [black==24.3.0] +# validate_extras = d +# [black==24.4.2] +# validate_extras = d +# [black==24.10.0] +# validate_extras = d +# [black==25.1.0] +# validate_extras = d + +# [blinker==1.4] +# [blinker==1.5] +# [blinker==1.8.2] +# [blinker==1.9.0] + +# [boto3==1.22.12] +# [boto3==1.24.50] +# [boto3==1.24.61] +# [boto3==1.24.73] +# [boto3==1.28.26] +# [boto3==1.34.8] +# [boto3==1.34.128] + +# [botocore==1.25.12] +# [botocore==1.27.50] +# [botocore==1.27.61] +# [botocore==1.27.73] +# [botocore==1.31.26] +# [botocore==1.34.8] +# [botocore==1.34.128] + +# [brotli==1.0.9] +# python_versions = <3.12 +# [brotli==1.1.0] +# [brotli==1.2.0] + +# [build==0.8.0] +# [build==0.10.0] +# [build==1.0.3] +# [build==1.3.0] +# [build==1.4.0] + +# [cachetools==4.2.4] +# [cachetools==5.2.0] +# [cachetools==5.2.1] +# [cachetools==5.3.0] +# [cachetools==5.3.1] +# [cachetools==5.3.2] +# [cachetools==5.3.3] +# [cachetools==5.4.0] +# [cachetools==5.5.0] +# [cachetools==5.5.2] +# [cachetools==6.2.0] + +# [celery==4.4.7] +# [celery==5.0.2] +# [celery==5.0.5] +# [celery==5.1.2] +# [celery==5.2.7] +# [celery==5.3.4] +# [celery==5.3.5] +# [celery==5.3.6] +# [celery==5.4.0] +# [celery==5.5.2] + +# [celery-types==0.18.0] +# [celery-types==0.22.0] + +# [certifi==2022.5.18.1] +# [certifi==2022.6.15] +# [certifi==2022.6.15.1] +# [certifi==2022.9.14] +# [certifi==2022.9.24] +# [certifi==2022.12.7] +# [certifi==2023.5.7] +# [certifi==2023.7.22] +# [certifi==2023.11.17] +# [certifi==2024.2.2] +# [certifi==2024.6.2] +# [certifi==2024.7.4] +# [certifi==2024.8.30] +# [certifi==2025.1.31] +# [certifi==2025.4.26] +# [certifi==2025.6.15] +# [certifi==2025.7.14] +# [certifi==2025.8.3] +# [certifi==2026.1.4] + +# [cffi==1.14.6] +# apt_requires = libffi-dev +# brew_requires = libffi +# python_versions = <3.13 +# [cffi==1.15.1] +# apt_requires = libffi-dev +# brew_requires = libffi +# python_versions = <3.13 +# [cffi==1.16.0] +# apt_requires = libffi-dev +# brew_requires = libffi +# python_versions = <3.13 +# [cffi==1.17.1] +# apt_requires = libffi-dev +# brew_requires = libffi +# [cffi==2.0.0] +# apt_requires = libffi-dev +# brew_requires = libffi + +# [cfgv==3.3.1] +# [cfgv==3.4.0] + +# [chardet==3.0.4] +# [chardet==4.0.0] +# [chardet==5.0.0] +# [chardet==5.2.0] + +# [charset-normalizer==2.0.12] +# [charset-normalizer==2.1.0] +# [charset-normalizer==2.1.1] +# [charset-normalizer==3.0.1] +# python_versions = <3.13 +# [charset-normalizer==3.1.0] +# python_versions = <3.13 +# [charset-normalizer==3.2.0] +# python_versions = <3.13 +# [charset-normalizer==3.3.0] +# python_versions = <3.13 +# [charset-normalizer==3.3.2] +# python_versions = <3.13 +# [charset-normalizer==3.4.0] +# [charset-normalizer==3.4.1] +# [charset-normalizer==3.4.2] +# [charset-normalizer==3.4.3] +# [charset-normalizer==3.4.4] + +# [click==7.1.2] +# [click==8.0.4] +# [click==8.1.3] +# [click==8.1.6] +# [click==8.1.7] +# [click==8.1.8] +# [click==8.2.0] +# [click==8.2.1] +# [click==8.3.0] +# [click==8.3.1] + +# [click-didyoumean==0.3.0] +# [click-didyoumean==0.3.1] + +# [click-plugins==1.1.1] + +# [click-repl==0.2.0] +# [click-repl==0.3.0] + +# [clickhouse-driver==0.2.6] +# python_versions = <3.13 +# [clickhouse-driver==0.2.9] +# python_versions = <3.13 +# [clickhouse-driver==0.2.10] + +# [colorama==0.4.5] +# [colorama==0.4.6] + +# [confluent-kafka==2.1.1] +# apt_requires = +# patch +# wget +# brew_requires = wget +# custom_prebuild = prebuild/librdkafka v2.1.1 +# python_versions = <3.13 +# [confluent-kafka==2.3.0] +# apt_requires = +# patch +# wget +# brew_requires = wget +# custom_prebuild = prebuild/librdkafka v2.3.0 +# [confluent-kafka==2.7.0] +# apt_requires = +# patch +# wget +# brew_requires = wget +# custom_prebuild = prebuild/librdkafka v2.6.1 +# [confluent-kafka==2.8.0] +# apt_requires = +# patch +# wget +# brew_requires = wget +# custom_prebuild = prebuild/librdkafka v2.8.0 +# [confluent-kafka==2.9.0] +# apt_requires = +# patch +# wget +# brew_requires = wget +# custom_prebuild = prebuild/librdkafka v2.8.0 +# [confluent-kafka==2.12.2] +# apt_requires = +# patch +# wget +# brew_requires = wget +# custom_prebuild = prebuild/librdkafka v2.8.0 + +# [contextvars==2.4] + +# [covdefaults==2.2.0] +# [covdefaults==2.3.0] + +# [coverage==6.3.3] +# python_versions = <3.13 +# [coverage==6.4.1] +# python_versions = <3.13 +# [coverage==6.4.3] +# python_versions = <3.13 +# [coverage==6.4.4] +# python_versions = <3.13 +# [coverage==6.5.0] +# python_versions = <3.13 +# [coverage==7.1.0] +# python_versions = <3.13 +# [coverage==7.2.7] +# python_versions = <3.13 +# [coverage==7.3.4] +# python_versions = <3.13 +# [coverage==7.4.1] +# python_versions = <3.13 +# [coverage==7.6.4] + +# [coverage-enable-subprocess==1.0] + +# [croniter==0.3.37] +# [croniter==1.3.5] +# [croniter==1.3.7] +# [croniter==1.3.10] + +# [cronsim==2.6] + +# [cryptography==37.0.2] +# [cryptography==37.0.4] +# [cryptography==38.0.1] +# [cryptography==38.0.3] +# [cryptography==38.0.4] +# [cryptography==39.0.1] +# [cryptography==41.0.2] +# [cryptography==41.0.3] +# [cryptography==41.0.7] +# [cryptography==42.0.4] +# [cryptography==42.0.8] +# [cryptography==43.0.1] +# [cryptography==44.0.1] +# [cryptography==44.0.2] +# [cryptography==46.0.2] +# [cryptography==46.0.5] + +# [cssselect==1.0.3] +# [cssselect==1.1.0] +# [cssselect==1.2.0] + +# [cssutils==2.4.0] +# [cssutils==2.6.0] +# [cssutils==2.9.0] + +# [cython==0.29.32] +# [cython==3.0.11] + +# [datadog==0.21.0] +# [datadog==0.29.3] +# [datadog==0.31.0] +# [datadog==0.35.0] +# [datadog==0.39.0] +# [datadog==0.44.0] +# [datadog==0.46.0] +# [datadog==0.49.1] +# [datadog==0.51.0] +# [datadog==0.52.1] + +# [decorator==5.1.1] + +# [delocate==0.10.2] +# [delocate==0.10.4] +# [delocate==0.10.7] + +# [deprecated==1.2.13] +# [deprecated==1.2.14] +# [deprecated==1.2.18] + +# [devservices==0.0.2] +# [devservices==0.0.3] +# [devservices==0.0.4] +# [devservices==0.0.5] +# [devservices==1.0.0] +# [devservices==1.0.1] +# [devservices==1.0.2] +# [devservices==1.0.3] +# [devservices==1.0.4] +# [devservices==1.0.5] +# [devservices==1.0.6] +# [devservices==1.0.7] +# [devservices==1.0.8] +# [devservices==1.0.9] +# [devservices==1.0.10] +# [devservices==1.0.11] +# [devservices==1.0.12] +# [devservices==1.0.13] +# [devservices==1.0.14] +# [devservices==1.0.15] +# [devservices==1.0.16] +# [devservices==1.0.17] +# [devservices==1.0.18] +# [devservices==1.1.0] +# [devservices==1.1.1] +# [devservices==1.1.2] +# [devservices==1.1.3] +# [devservices==1.1.4] +# [devservices==1.1.5] +# [devservices==1.1.6] +# [devservices==1.2.0] +# [devservices==1.2.1] +# [devservices==1.2.2] +# [devservices==1.2.3] +# [devservices==1.2.4] + +# [dictdiffer==0.9.0] + +# [dictpath==0.1.3] +# validate_incorrect_missing_deps = six + +# [distlib==0.3.4] +# [distlib==0.3.5] +# [distlib==0.3.6] +# [distlib==0.3.7] +# [distlib==0.3.8] +# [distlib==0.3.9] +# [distlib==0.4.0] + +# [distro==1.5.0] +# [distro==1.8.0] +# [distro==1.9.0] + +# [django==2.2.28] +# [django==3.0.14] +# [django==3.1.14] +# [django==3.2.16] +# [django==3.2.20] +# [django==3.2.21] +# [django==3.2.22] +# [django==3.2.23] +# [django==4.0.10] +# [django==4.1] +# [django==4.1.1] +# [django==4.1.2] +# [django==4.1.7] +# [django==4.1.10] +# [django==4.2.1] +# [django==4.2.2] +# [django==4.2.3] +# [django==4.2.4] +# [django==4.2.5] +# [django==4.2.6] +# [django==4.2.7] +# [django==4.2.8] +# [django==4.2.11] +# [django==5.0.1] +# [django==5.0.2] +# [django==5.0.3] +# [django==5.0.4] +# [django==5.0.6] +# [django==5.0.7] +# [django==5.0.8] +# [django==5.1] +# [django==5.1.1] +# [django==5.1.2] +# [django==5.1.4] +# [django==5.1.5] +# [django==5.1.6] +# [django==5.1.7] +# [django==5.1.8] +# [django==5.1.9] +# [django==5.2] +# [django==5.2.1] +# [django==5.2.3] +# [django==5.2.4] +# [django==5.2.5] +# [django==5.2.6] +# [django==5.2.7] +# [django==5.2.8] +# [django==5.2.11] + +# [django-crispy-forms==1.14.0] + +# [django-csp==3.7] +# [django-csp==3.8] + +# [django-pg-zero-downtime-migrations==0.11] +# [django-pg-zero-downtime-migrations==0.12] +# [django-pg-zero-downtime-migrations==0.13] +# [django-pg-zero-downtime-migrations==0.16] +# [django-pg-zero-downtime-migrations==0.18] + +# [django-pgtrigger==4.15.2] +# validate_incorrect_missing_deps = psycopg2-binary + +# [django-stubs==1.12.0] +# [django-stubs==1.15.0] +# [django-stubs==4.2.0] +# [django-stubs==4.2.3] +# [django-stubs==4.2.4] +# [django-stubs==4.2.5] +# [django-stubs==4.2.6] +# [django-stubs==4.2.7] +# [django-stubs==5.2.7] +# [django-stubs==5.2.9] + +# [django-stubs-ext==0.5.0] +# [django-stubs-ext==0.7.0] +# [django-stubs-ext==4.2.0] +# [django-stubs-ext==4.2.2] +# [django-stubs-ext==4.2.5] +# [django-stubs-ext==4.2.7] +# [django-stubs-ext==5.0.0] +# [django-stubs-ext==5.0.2] +# [django-stubs-ext==5.0.4] +# [django-stubs-ext==5.1.0] +# [django-stubs-ext==5.1.1] +# [django-stubs-ext==5.1.2] +# [django-stubs-ext==5.1.3] +# [django-stubs-ext==5.2.0] +# [django-stubs-ext==5.2.1] +# [django-stubs-ext==5.2.2] +# [django-stubs-ext==5.2.3] +# [django-stubs-ext==5.2.4] +# [django-stubs-ext==5.2.5] +# [django-stubs-ext==5.2.7] +# [django-stubs-ext==5.2.9] + +# [djangorestframework==3.12.4] +# [djangorestframework==3.13.1] +# [djangorestframework==3.14.0] +# [djangorestframework==3.15.1] +# [djangorestframework==3.15.2] +# [djangorestframework==3.16.0] +# [djangorestframework==3.16.1] + +# [djangorestframework-stubs==3.14.0] +# [djangorestframework-stubs==3.14.2] +# [djangorestframework-stubs==3.14.4] +# [djangorestframework-stubs==3.14.5] +# [djangorestframework-stubs==3.16.8] + +# [dnspython==2.8.0] + +# [docker==3.7.0] +# [docker==3.7.3] +# [docker==5.0.3] +# [docker==6.0.0] +# [docker==6.1.3] +# [docker==7.0.0] +# [docker==7.1.0] + +# [docker-pycreds==0.4.0] + +# [docopt==0.6.2] + +# [docutils==0.18.1] +# [docutils==0.19] +# [docutils==0.22.4] + +# [drf-spectacular==0.22.1] +# [drf-spectacular==0.23.1] +# [drf-spectacular==0.24.0] +# [drf-spectacular==0.26.3] +# [drf-spectacular==0.27.2] + +# [dumb-pypi==1.13.0] +# [dumb-pypi==1.14.0] +# [dumb-pypi==1.15.0] + +# [ecdsa==0.18.0] + +# [email-reply-parser==0.5.12] + +# [email-validator==2.3.0] + +# [ephemeral-port-reserve==1.1.4] + +# [exam==0.10.6] + +# [exceptiongroup==1.0.0rc9] +# [exceptiongroup==1.1.0] +# [exceptiongroup==1.1.3] +# [exceptiongroup==1.2.0] +# [exceptiongroup==1.2.1] +# [exceptiongroup==1.2.2] + +# [execnet==1.9.0] +# [execnet==2.0.2] + +# [fastjsonschema==2.16.2] +# [fastjsonschema==2.20.0] +# [fastjsonschema==2.21.2] + +# [fido2==0.9.2] +# [fido2==1.0.0] +# [fido2==1.1.2] + +# [filelock==3.7.0] +# [filelock==3.7.1] +# [filelock==3.8.0] +# [filelock==3.9.0] +# [filelock==3.12.1] +# [filelock==3.12.4] +# [filelock==3.13.1] +# [filelock==3.15.3] +# [filelock==3.16.1] +# [filelock==3.18.0] +# [filelock==3.19.1] +# [filelock==3.20.3] + +# [filetype==1.2.0] + +# [flake8==4.0.1] +# [flake8==5.0.2] +# [flake8==5.0.4] +# [flake8==6.0.0] +# [flake8==6.1.0] +# [flake8==7.0.0] +# [flake8==7.2.0] +# [flake8==7.3.0] + +# [flake8-bugbear==22.7.1] +# [flake8-bugbear==22.8.23] +# [flake8-bugbear==22.9.11] +# [flake8-bugbear==22.9.23] +# [flake8-bugbear==22.10.27] +# [flake8-bugbear==23.2.13] +# [flake8-bugbear==23.6.5] +# [flake8-bugbear==23.9.16] +# [flake8-bugbear==23.12.2] + +# [flake8-logging==1.4.0] +# [flake8-logging==1.5.0] + +# [flaky==3.8.1] + +# [flask==2.1.2] +# [flask==2.2.2] +# [flask==2.2.5] +# [flask==3.0.3] +# [flask==3.1.0] + +# [flask-redis==0.3.0] +# [flask-redis==0.4.0] + +# [freezegun==1.1.0] +# [freezegun==1.2.1] +# [freezegun==1.2.2] +# [freezegun==1.5.5] + +# [frozenlist==1.4.1] +# [frozenlist==1.5.0] +# [frozenlist==1.7.0] + +# [fsspec==2025.9.0] + +# [ghp-import==2.1.0] + +# [gitdb==4.0.5] +# [gitdb==4.0.7] + +# [gitpython==3.1.12] +# [gitpython==3.1.41] + +# [gojsonnet==0.20.0] +# apt_requires = golang +# brew_requires = go +# python_versions = <3.13 + +# [google-api-core==1.32.0] +# [google-api-core==2.8.2] +# [google-api-core==2.10.1] +# [google-api-core==2.11.0] +# [google-api-core==2.12.0] +# [google-api-core==2.15.0] +# [google-api-core==2.16.2] +# [google-api-core==2.17.1] +# [google-api-core==2.19.0] +# [google-api-core==2.19.1] +# [google-api-core==2.19.2] +# [google-api-core==2.21.0] +# [google-api-core==2.24.2] +# [google-api-core==2.25.1] + +# [google-api-python-client==2.88.0] +# [google-api-python-client==2.137.0] +# [google-api-python-client==2.145.0] +# [google-api-python-client==2.181.0] + +# [google-auth==1.29.0] +# [google-auth==1.35.0] +# [google-auth==2.11.0] +# [google-auth==2.16.0] +# [google-auth==2.19.1] +# [google-auth==2.22.0] +# [google-auth==2.23.0] +# [google-auth==2.23.3] +# [google-auth==2.23.4] +# [google-auth==2.25.2] +# [google-auth==2.27.0] +# [google-auth==2.28.2] +# [google-auth==2.29.0] +# [google-auth==2.32.0] +# [google-auth==2.34.0] +# [google-auth==2.35.0] +# [google-auth==2.38.0] +# [google-auth==2.39.0] +# [google-auth==2.40.0] +# [google-auth==2.40.3] +# [google-auth==2.41.1] + +# [google-auth-httplib2==0.1.0] +# [google-auth-httplib2==0.2.0] + +# [google-cloud-appengine-logging==1.8.0] + +# [google-cloud-audit-log==0.4.0] + +# [google-cloud-bigtable==1.6.1] +# [google-cloud-bigtable==2.11.3] +# [google-cloud-bigtable==2.22.0] +# [google-cloud-bigtable==2.26.0] +# [google-cloud-bigtable==2.30.1] +# [google-cloud-bigtable==2.31.0] + +# [google-cloud-build==3.20.1] +# [google-cloud-build==3.22.0] +# [google-cloud-build==3.24.2] +# [google-cloud-build==3.31.2] + +# [google-cloud-compute==1.19.2] + +# [google-cloud-core==1.5.0] +# [google-cloud-core==2.3.2] +# [google-cloud-core==2.4.1] +# [google-cloud-core==2.4.3] + +# [google-cloud-functions==1.8.0] +# [google-cloud-functions==1.8.1] +# [google-cloud-functions==1.14.0] +# [google-cloud-functions==1.17.0] +# [google-cloud-functions==1.20.4] + +# [google-cloud-kms==2.19.1] +# [google-cloud-kms==2.20.0] +# [google-cloud-kms==2.24.2] +# [google-cloud-kms==3.5.1] + +# [google-cloud-logging==3.13.0] + +# [google-cloud-os-login==2.14.6] + +# [google-cloud-pubsub==2.2.0] +# [google-cloud-pubsub==2.13.6] +# [google-cloud-pubsub==2.19.0] +# [google-cloud-pubsub==2.23.0] +# [google-cloud-pubsub==2.31.0] + +# [google-cloud-secret-manager==2.12.6] +# [google-cloud-secret-manager==2.15.0] +# [google-cloud-secret-manager==2.20.2] + +# [google-cloud-spanner==3.17.0] +# [google-cloud-spanner==3.19.0] +# [google-cloud-spanner==3.20.0] +# [google-cloud-spanner==3.40.1] +# [google-cloud-spanner==3.43.0] +# [google-cloud-spanner==3.46.0] +# [google-cloud-spanner==3.48.0] +# [google-cloud-spanner==3.49.0] +# [google-cloud-spanner==3.55.0] + +# [google-cloud-storage==1.35.0] +# [google-cloud-storage==2.5.0] +# [google-cloud-storage==2.14.0] +# [google-cloud-storage==2.18.0] +# [google-cloud-storage==3.2.0] + +# [google-cloud-storage-transfer==1.17.0] + +# [google-crc32c==1.5.0] +# apt_requires = cmake +# brew_requires = cmake +# custom_prebuild = prebuild/crc32c 1.1.2 +# [google-crc32c==1.6.0] +# apt_requires = cmake +# brew_requires = cmake +# custom_prebuild = prebuild/crc32c 1.1.2 +# [google-crc32c==1.7.1] +# apt_requires = cmake +# brew_requires = cmake +# custom_prebuild = prebuild/crc32c 1.1.2 + +# [google-genai==1.13.0] + +# [google-resumable-media==1.3.3] +# [google-resumable-media==2.3.3] +# [google-resumable-media==2.7.0] +# [google-resumable-media==2.7.2] + +# [googleapis-common-protos==1.56.2] +# [googleapis-common-protos==1.56.4] +# [googleapis-common-protos==1.58.0] +# [googleapis-common-protos==1.59.0] +# [googleapis-common-protos==1.60.0] +# [googleapis-common-protos==1.62.0] +# [googleapis-common-protos==1.63.0] +# [googleapis-common-protos==1.63.2] +# [googleapis-common-protos==1.65.0] +# [googleapis-common-protos==1.70.0] + +# [granian==2.5.4] +# validate_extras = pname,reload,uvloop +# [granian==2.5.5] +# validate_extras = pname,reload,uvloop +# [granian==2.5.6] +# validate_extras = pname,reload,uvloop +# [granian==2.5.7] +# validate_extras = pname,reload,uvloop +# [granian==2.6.0] +# validate_extras = pname,reload,uvloop +# [granian==2.6.1] +# validate_extras = pname,reload,uvloop +# [granian==2.7.0] +# validate_extras = pname,reload,uvloop + +# [greenlet==1.1.3] +# python_versions = <3.12 + +# [grpc-google-iam-v1==0.12.4] +# [grpc-google-iam-v1==0.12.6] +# [grpc-google-iam-v1==0.13.0] +# [grpc-google-iam-v1==0.13.1] +# [grpc-google-iam-v1==0.14.2] + +# [grpc-interceptor==0.15.4] + +# [grpc-stubs==1.53.0.5] +# [grpc-stubs==1.53.0.6] + +# [grpcio==1.56.0] +# python_versions = <3.12 +# [grpcio==1.59.0] +# python_versions = <3.13 +# [grpcio==1.60.0] +# python_versions = <3.13 +# [grpcio==1.60.1] +# python_versions = <3.13 +# [grpcio==1.62.1] +# python_versions = <3.13 +# [grpcio==1.64.0] +# python_versions = <3.13 +# [grpcio==1.65.4] +# python_versions = <3.13 +# [grpcio==1.66.1] +# python_versions = <3.13 +# [grpcio==1.67.0] +# python_versions = <3.14 +# [grpcio==1.72.0rc1] +# python_versions = <3.14 +# [grpcio==1.73.1] +# python_versions = <3.14 +# [grpcio==1.75.1] + +# [grpcio-status==1.47.0] +# [grpcio-status==1.48.1] +# [grpcio-status==1.51.1] +# [grpcio-status==1.56.0] +# [grpcio-status==1.59.0] +# [grpcio-status==1.60.0] +# [grpcio-status==1.60.1] +# [grpcio-status==1.62.1] +# [grpcio-status==1.62.2] +# [grpcio-status==1.66.1] +# [grpcio-status==1.67.0] +# [grpcio-status==1.72.0rc1] +# [grpcio-status==1.73.1] +# [grpcio-status==1.75.1] + +# [h11==0.9.0] +# [h11==0.12.0] +# [h11==0.13.0] +# [h11==0.14.0] +# [h11==0.16.0] + +# [h2==4.1.0] +# [h2==4.2.0] +# [h2==4.3.0] + +# [hera==5.25.1] + +# [hf-xet==1.1.10] + +# [hiredis==0.3.1] +# python_versions = <3.12 +# [hiredis==2.0.0] +# python_versions = <3.12 +# [hiredis==2.3.2] +# [hiredis==2.4.0] +# [hiredis==3.0.0] + +# [honcho==1.0.0] +# [honcho==1.0.1] +# [honcho==1.1.0] +# [honcho==2.0.0] + +# [hpack==4.0.0] +# [hpack==4.1.0] + +# [httpcore==0.11.1] +# [httpcore==0.15.0] +# [httpcore==1.0.2] +# [httpcore==1.0.5] +# [httpcore==1.0.9] + +# [httplib2==0.22.0] +# [httplib2==0.31.0] + +# [httpx==0.15.4] +# [httpx==0.23.0] +# [httpx==0.25.2] +# [httpx==0.27.0] +# [httpx==0.27.2] +# [httpx==0.28.1] + +# [huggingface-hub==0.35.3] + +# [hyperframe==6.0.1] +# [hyperframe==6.1.0] + +# [hypothesis==6.61.0] +# validate_extras = pytest + +# [identify==2.5.1] +# [identify==2.5.3] +# [identify==2.5.5] +# [identify==2.5.18] +# [identify==2.5.24] +# [identify==2.5.29] +# [identify==2.5.33] +# [identify==2.6.1] +# [identify==2.6.9] + +# [idna==2.8] +# [idna==2.10] +# [idna==3.2] +# [idna==3.3] +# [idna==3.4] +# [idna==3.6] +# [idna==3.7] +# [idna==3.8] +# [idna==3.10] +# [idna==3.11] + +# [imagesize==1.4.1] + +# [immutables==0.15] +# python_versions = <3.12 + +# [importlib-metadata==3.10.1] +# [importlib-metadata==4.6.4] +# [importlib-metadata==4.12.0] +# [importlib-metadata==6.0.0] +# [importlib-metadata==7.1.0] +# [importlib-metadata==8.6.1] +# [importlib-metadata==8.7.0] + +# [importlib-resources==5.8.0] +# [importlib-resources==5.9.0] + +# [inflection==0.5.1] + +# [iniconfig==1.1.1] +# [iniconfig==2.0.0] + +# [iso3166==2.1.1] + +# [isodate==0.6.1] + +# [isort==5.10.1] +# [isort==5.12.0] +# [isort==5.13.2] +# [isort==6.0.1] + +# [itsdangerous==2.1.2] +# [itsdangerous==2.2.0] + +# [jinja2==3.0.3] +# [jinja2==3.1.0] +# [jinja2==3.1.2] +# [jinja2==3.1.3] +# [jinja2==3.1.4] +# [jinja2==3.1.6] + +# [jiter==0.9.0] +# python_versions = <3.14 +# [jiter==0.10.0] +# python_versions = <3.14 + +# [jmespath==0.10.0] +# [jmespath==1.0.1] + +# [johen==0.1.3] +# [johen==0.1.4] +# [johen==0.1.5] + +# [jsonnet==0.20.0] +# python_versions = <3.13 + +# [jsonpatch==1.33] + +# [jsonpath-ng==1.6.1] + +# [jsonpointer==3.0.0] + +# [jsonschema==3.2.0] +# [jsonschema==4.5.1] +# [jsonschema==4.7.1] +# [jsonschema==4.9.1] +# [jsonschema==4.14.0] +# [jsonschema==4.16.0] +# [jsonschema==4.17.3] +# [jsonschema==4.18.4] +# [jsonschema==4.20.0] +# [jsonschema==4.23.0] + +# [jsonschema-path==0.3.2] + +# [jsonschema-spec==0.1.3] +# [jsonschema-spec==0.2.3] +# [jsonschema-spec==0.2.4] + +# [jsonschema-specifications==2023.7.1] +# [jsonschema-specifications==2023.11.1] +# [jsonschema-specifications==2023.12.1] + +# [jsonschema2md==0.4.0] + +# [kombu==4.6.11] +# [kombu==5.2.4] +# [kombu==5.3.3] +# [kombu==5.3.4] +# [kombu==5.3.6] +# [kombu==5.4.2] +# [kombu==5.5.3] + +# [kubernetes==19.15.0] +# [kubernetes==24.2.0] +# [kubernetes==27.2.0] +# [kubernetes==30.1.0] + +# [lark==1.1.9] +# [lark==1.2.2] + +# [lark-parser==0.10.1] + +# [lazy-object-proxy==1.7.1] +# [lazy-object-proxy==1.9.0] +# [lazy-object-proxy==1.10.0] + +# [librt==0.7.8] -[aiohttp==3.8.3] -python_versions = <3.12 -[aiohttp==3.8.4] -python_versions = <3.12 -[aiohttp==3.8.5] -python_versions = <3.12 -[aiohttp==3.9.1] -python_versions = <3.13 -[aiohttp==3.10.2] -python_versions = <3.13 -[aiohttp==3.10.10] -[aiohttp==3.12.15] - -[aiosignal==1.2.0] -[aiosignal==1.3.1] -[aiosignal==1.4.0] - -[alabaster==0.7.12] -[alabaster==1.0.0] - -[alembic==1.0.11] - -[amqp==2.6.1] -[amqp==5.1.1] -[amqp==5.2.0] -[amqp==5.3.1] - -[annotated-types==0.6.0] -[annotated-types==0.7.0] - -[anton-testing-deleteme-123==3.0.0a1] - -[anyio==3.6.1] -[anyio==3.7.1] -[anyio==4.4.0] -[anyio==4.9.0] - -[asgiref==3.5.2] -[asgiref==3.6.0] -[asgiref==3.7.2] -[asgiref==3.8.0] -[asgiref==3.8.1] -[asgiref==3.9.1] - -[asn1crypto==1.5.1] - -[async-generator==1.10] - -[async-timeout==4.0.2] -[async-timeout==4.0.3] - -[attrs==19.2.0] -[attrs==21.4.0] -[attrs==22.1.0] -[attrs==22.2.0] -[attrs==23.1.0] -[attrs==23.2.0] -[attrs==24.2.0] -[attrs==25.3.0] - -[auditwheel==5.1.2] - -[auto-type-annotate==1.0.0] -[auto-type-annotate==1.0.1] -[auto-type-annotate==1.1.0] -[auto-type-annotate==1.1.1] -[auto-type-annotate==1.1.2] - -[avalara==20.9.0] -[avalara==22.7.0] -[avalara==22.8.0] - -[avro==1.11.1] - -[babel==2.10.3] -[babel==2.17.0] - -[backports-zstd==1.3.0] -python_versions = <3.14 - -[backrefs==5.9] - -[bcrypt==4.0.0] -[bcrypt==4.1.3] -[bcrypt==4.2.0] - -[beautifulsoup4==4.7.1] -[beautifulsoup4==4.11.1] - -[billiard==3.6.4.0] -[billiard==4.0.2] -[billiard==4.2.0] -[billiard==4.2.1] - -[black==22.3.0] -validate_extras = d -[black==22.6.0] -validate_extras = d -[black==22.8.0] -validate_extras = d -[black==22.10.0] -validate_extras = d -[black==23.1.0] -validate_extras = d -[black==23.3.0] -validate_extras = d -[black==23.9.1] -validate_extras = d -[black==23.12.0] -validate_extras = d -[black==24.3.0] -validate_extras = d -[black==24.4.2] -validate_extras = d -[black==24.10.0] -validate_extras = d -[black==25.1.0] -validate_extras = d - -[blinker==1.4] -[blinker==1.5] -[blinker==1.8.2] -[blinker==1.9.0] - -[boto3==1.22.12] -[boto3==1.24.50] -[boto3==1.24.61] -[boto3==1.24.73] -[boto3==1.28.26] -[boto3==1.34.8] -[boto3==1.34.128] - -[botocore==1.25.12] -[botocore==1.27.50] -[botocore==1.27.61] -[botocore==1.27.73] -[botocore==1.31.26] -[botocore==1.34.8] -[botocore==1.34.128] - -[brotli==1.0.9] -python_versions = <3.12 -[brotli==1.1.0] -[brotli==1.2.0] - -[build==0.8.0] -[build==0.10.0] -[build==1.0.3] -[build==1.3.0] -[build==1.4.0] - -[cachetools==4.2.4] -[cachetools==5.2.0] -[cachetools==5.2.1] -[cachetools==5.3.0] -[cachetools==5.3.1] -[cachetools==5.3.2] -[cachetools==5.3.3] -[cachetools==5.4.0] -[cachetools==5.5.0] -[cachetools==5.5.2] -[cachetools==6.2.0] - -[celery==4.4.7] -[celery==5.0.2] -[celery==5.0.5] -[celery==5.1.2] -[celery==5.2.7] -[celery==5.3.4] -[celery==5.3.5] -[celery==5.3.6] -[celery==5.4.0] -[celery==5.5.2] - -[celery-types==0.18.0] -[celery-types==0.22.0] - -[certifi==2022.5.18.1] -[certifi==2022.6.15] -[certifi==2022.6.15.1] -[certifi==2022.9.14] -[certifi==2022.9.24] -[certifi==2022.12.7] -[certifi==2023.5.7] -[certifi==2023.7.22] -[certifi==2023.11.17] -[certifi==2024.2.2] -[certifi==2024.6.2] -[certifi==2024.7.4] -[certifi==2024.8.30] -[certifi==2025.1.31] -[certifi==2025.4.26] -[certifi==2025.6.15] -[certifi==2025.7.14] -[certifi==2025.8.3] -[certifi==2026.1.4] - -[cffi==1.14.6] -apt_requires = libffi-dev -brew_requires = libffi -python_versions = <3.13 -[cffi==1.15.1] -apt_requires = libffi-dev -brew_requires = libffi -python_versions = <3.13 -[cffi==1.16.0] -apt_requires = libffi-dev -brew_requires = libffi -python_versions = <3.13 -[cffi==1.17.1] -apt_requires = libffi-dev -brew_requires = libffi -[cffi==2.0.0] -apt_requires = libffi-dev -brew_requires = libffi - -[cfgv==3.3.1] -[cfgv==3.4.0] - -[chardet==3.0.4] -[chardet==4.0.0] -[chardet==5.0.0] -[chardet==5.2.0] - -[charset-normalizer==2.0.12] -[charset-normalizer==2.1.0] -[charset-normalizer==2.1.1] -[charset-normalizer==3.0.1] -python_versions = <3.13 -[charset-normalizer==3.1.0] -python_versions = <3.13 -[charset-normalizer==3.2.0] -python_versions = <3.13 -[charset-normalizer==3.3.0] -python_versions = <3.13 -[charset-normalizer==3.3.2] -python_versions = <3.13 -[charset-normalizer==3.4.0] -[charset-normalizer==3.4.1] -[charset-normalizer==3.4.2] -[charset-normalizer==3.4.3] -[charset-normalizer==3.4.4] - -[click==7.1.2] -[click==8.0.4] -[click==8.1.3] -[click==8.1.6] -[click==8.1.7] -[click==8.1.8] -[click==8.2.0] -[click==8.2.1] -[click==8.3.0] -[click==8.3.1] - -[click-didyoumean==0.3.0] -[click-didyoumean==0.3.1] - -[click-plugins==1.1.1] - -[click-repl==0.2.0] -[click-repl==0.3.0] - -[clickhouse-driver==0.2.6] -python_versions = <3.13 -[clickhouse-driver==0.2.9] -python_versions = <3.13 -[clickhouse-driver==0.2.10] - -[colorama==0.4.5] -[colorama==0.4.6] - -[confluent-kafka==2.1.1] -apt_requires = - patch - wget -brew_requires = wget -custom_prebuild = prebuild/librdkafka v2.1.1 -python_versions = <3.13 -[confluent-kafka==2.3.0] -apt_requires = - patch - wget -brew_requires = wget -custom_prebuild = prebuild/librdkafka v2.3.0 -[confluent-kafka==2.7.0] -apt_requires = - patch - wget -brew_requires = wget -custom_prebuild = prebuild/librdkafka v2.6.1 -[confluent-kafka==2.8.0] -apt_requires = - patch - wget -brew_requires = wget -custom_prebuild = prebuild/librdkafka v2.8.0 -[confluent-kafka==2.9.0] -apt_requires = - patch - wget -brew_requires = wget -custom_prebuild = prebuild/librdkafka v2.8.0 -[confluent-kafka==2.12.2] -apt_requires = - patch - wget -brew_requires = wget -custom_prebuild = prebuild/librdkafka v2.8.0 - -[contextvars==2.4] - -[covdefaults==2.2.0] -[covdefaults==2.3.0] - -[coverage==6.3.3] -python_versions = <3.13 -[coverage==6.4.1] -python_versions = <3.13 -[coverage==6.4.3] -python_versions = <3.13 -[coverage==6.4.4] -python_versions = <3.13 -[coverage==6.5.0] -python_versions = <3.13 -[coverage==7.1.0] -python_versions = <3.13 -[coverage==7.2.7] -python_versions = <3.13 -[coverage==7.3.4] -python_versions = <3.13 -[coverage==7.4.1] -python_versions = <3.13 -[coverage==7.6.4] - -[coverage-enable-subprocess==1.0] - -[croniter==0.3.37] -[croniter==1.3.5] -[croniter==1.3.7] -[croniter==1.3.10] - -[cronsim==2.6] - -[cryptography==37.0.2] -[cryptography==37.0.4] -[cryptography==38.0.1] -[cryptography==38.0.3] -[cryptography==38.0.4] -[cryptography==39.0.1] -[cryptography==41.0.2] -[cryptography==41.0.3] -[cryptography==41.0.7] -[cryptography==42.0.4] -[cryptography==42.0.8] -[cryptography==43.0.1] -[cryptography==44.0.1] -[cryptography==44.0.2] -[cryptography==46.0.2] -[cryptography==46.0.5] - -[cssselect==1.0.3] -[cssselect==1.1.0] -[cssselect==1.2.0] - -[cssutils==2.4.0] -[cssutils==2.6.0] -[cssutils==2.9.0] - -[cython==0.29.32] -[cython==3.0.11] - -[datadog==0.21.0] -[datadog==0.29.3] -[datadog==0.31.0] -[datadog==0.35.0] -[datadog==0.39.0] -[datadog==0.44.0] -[datadog==0.46.0] -[datadog==0.49.1] -[datadog==0.51.0] -[datadog==0.52.1] - -[decorator==5.1.1] - -[delocate==0.10.2] -[delocate==0.10.4] -[delocate==0.10.7] - -[deprecated==1.2.13] -[deprecated==1.2.14] -[deprecated==1.2.18] - -[devservices==0.0.2] -[devservices==0.0.3] -[devservices==0.0.4] -[devservices==0.0.5] -[devservices==1.0.0] -[devservices==1.0.1] -[devservices==1.0.2] -[devservices==1.0.3] -[devservices==1.0.4] -[devservices==1.0.5] -[devservices==1.0.6] -[devservices==1.0.7] -[devservices==1.0.8] -[devservices==1.0.9] -[devservices==1.0.10] -[devservices==1.0.11] -[devservices==1.0.12] -[devservices==1.0.13] -[devservices==1.0.14] -[devservices==1.0.15] -[devservices==1.0.16] -[devservices==1.0.17] -[devservices==1.0.18] -[devservices==1.1.0] -[devservices==1.1.1] -[devservices==1.1.2] -[devservices==1.1.3] -[devservices==1.1.4] -[devservices==1.1.5] -[devservices==1.1.6] -[devservices==1.2.0] -[devservices==1.2.1] -[devservices==1.2.2] -[devservices==1.2.3] -[devservices==1.2.4] - -[dictdiffer==0.9.0] - -[dictpath==0.1.3] -validate_incorrect_missing_deps = six - -[distlib==0.3.4] -[distlib==0.3.5] -[distlib==0.3.6] -[distlib==0.3.7] -[distlib==0.3.8] -[distlib==0.3.9] -[distlib==0.4.0] - -[distro==1.5.0] -[distro==1.8.0] -[distro==1.9.0] - -[django==2.2.28] -[django==3.0.14] -[django==3.1.14] -[django==3.2.16] -[django==3.2.20] -[django==3.2.21] -[django==3.2.22] -[django==3.2.23] -[django==4.0.10] -[django==4.1] -[django==4.1.1] -[django==4.1.2] -[django==4.1.7] -[django==4.1.10] -[django==4.2.1] -[django==4.2.2] -[django==4.2.3] -[django==4.2.4] -[django==4.2.5] -[django==4.2.6] -[django==4.2.7] -[django==4.2.8] -[django==4.2.11] -[django==5.0.1] -[django==5.0.2] -[django==5.0.3] -[django==5.0.4] -[django==5.0.6] -[django==5.0.7] -[django==5.0.8] -[django==5.1] -[django==5.1.1] -[django==5.1.2] -[django==5.1.4] -[django==5.1.5] -[django==5.1.6] -[django==5.1.7] -[django==5.1.8] -[django==5.1.9] -[django==5.2] -[django==5.2.1] -[django==5.2.3] -[django==5.2.4] -[django==5.2.5] -[django==5.2.6] -[django==5.2.7] -[django==5.2.8] -[django==5.2.11] - -[django-crispy-forms==1.14.0] - -[django-csp==3.7] -[django-csp==3.8] - -[django-pg-zero-downtime-migrations==0.11] -[django-pg-zero-downtime-migrations==0.12] -[django-pg-zero-downtime-migrations==0.13] -[django-pg-zero-downtime-migrations==0.16] -[django-pg-zero-downtime-migrations==0.18] - -[django-pgtrigger==4.15.2] -validate_incorrect_missing_deps = psycopg2-binary - -[django-stubs==1.12.0] -[django-stubs==1.15.0] -[django-stubs==4.2.0] -[django-stubs==4.2.3] -[django-stubs==4.2.4] -[django-stubs==4.2.5] -[django-stubs==4.2.6] -[django-stubs==4.2.7] -[django-stubs==5.2.7] -[django-stubs==5.2.9] - -[django-stubs-ext==0.5.0] -[django-stubs-ext==0.7.0] -[django-stubs-ext==4.2.0] -[django-stubs-ext==4.2.2] -[django-stubs-ext==4.2.5] -[django-stubs-ext==4.2.7] -[django-stubs-ext==5.0.0] -[django-stubs-ext==5.0.2] -[django-stubs-ext==5.0.4] -[django-stubs-ext==5.1.0] -[django-stubs-ext==5.1.1] -[django-stubs-ext==5.1.2] -[django-stubs-ext==5.1.3] -[django-stubs-ext==5.2.0] -[django-stubs-ext==5.2.1] -[django-stubs-ext==5.2.2] -[django-stubs-ext==5.2.3] -[django-stubs-ext==5.2.4] -[django-stubs-ext==5.2.5] -[django-stubs-ext==5.2.7] -[django-stubs-ext==5.2.9] - -[djangorestframework==3.12.4] -[djangorestframework==3.13.1] -[djangorestframework==3.14.0] -[djangorestframework==3.15.1] -[djangorestframework==3.15.2] -[djangorestframework==3.16.0] -[djangorestframework==3.16.1] - -[djangorestframework-stubs==3.14.0] -[djangorestframework-stubs==3.14.2] -[djangorestframework-stubs==3.14.4] -[djangorestframework-stubs==3.14.5] -[djangorestframework-stubs==3.16.8] - -[dnspython==2.8.0] - -[docker==3.7.0] -[docker==3.7.3] -[docker==5.0.3] -[docker==6.0.0] -[docker==6.1.3] -[docker==7.0.0] -[docker==7.1.0] - -[docker-pycreds==0.4.0] - -[docopt==0.6.2] - -[docutils==0.18.1] -[docutils==0.19] -[docutils==0.22.4] - -[drf-spectacular==0.22.1] -[drf-spectacular==0.23.1] -[drf-spectacular==0.24.0] -[drf-spectacular==0.26.3] -[drf-spectacular==0.27.2] - -[dumb-pypi==1.13.0] -[dumb-pypi==1.14.0] -[dumb-pypi==1.15.0] - -[ecdsa==0.18.0] - -[email-reply-parser==0.5.12] - -[email-validator==2.3.0] - -[ephemeral-port-reserve==1.1.4] - -[exam==0.10.6] - -[exceptiongroup==1.0.0rc9] -[exceptiongroup==1.1.0] -[exceptiongroup==1.1.3] -[exceptiongroup==1.2.0] -[exceptiongroup==1.2.1] -[exceptiongroup==1.2.2] - -[execnet==1.9.0] -[execnet==2.0.2] - -[fastjsonschema==2.16.2] -[fastjsonschema==2.20.0] -[fastjsonschema==2.21.2] - -[fido2==0.9.2] -[fido2==1.0.0] -[fido2==1.1.2] - -[filelock==3.7.0] -[filelock==3.7.1] -[filelock==3.8.0] -[filelock==3.9.0] -[filelock==3.12.1] -[filelock==3.12.4] -[filelock==3.13.1] -[filelock==3.15.3] -[filelock==3.16.1] -[filelock==3.18.0] -[filelock==3.19.1] -[filelock==3.20.3] - -[filetype==1.2.0] - -[flake8==4.0.1] -[flake8==5.0.2] -[flake8==5.0.4] -[flake8==6.0.0] -[flake8==6.1.0] -[flake8==7.0.0] -[flake8==7.2.0] -[flake8==7.3.0] - -[flake8-bugbear==22.7.1] -[flake8-bugbear==22.8.23] -[flake8-bugbear==22.9.11] -[flake8-bugbear==22.9.23] -[flake8-bugbear==22.10.27] -[flake8-bugbear==23.2.13] -[flake8-bugbear==23.6.5] -[flake8-bugbear==23.9.16] -[flake8-bugbear==23.12.2] - -[flake8-logging==1.4.0] -[flake8-logging==1.5.0] - -[flaky==3.8.1] - -[flask==2.1.2] -[flask==2.2.2] -[flask==2.2.5] -[flask==3.0.3] -[flask==3.1.0] - -[flask-redis==0.3.0] -[flask-redis==0.4.0] - -[freezegun==1.1.0] -[freezegun==1.2.1] -[freezegun==1.2.2] -[freezegun==1.5.5] - -[frozenlist==1.4.1] -[frozenlist==1.5.0] -[frozenlist==1.7.0] - -[fsspec==2025.9.0] - -[ghp-import==2.1.0] - -[gitdb==4.0.5] -[gitdb==4.0.7] - -[gitpython==3.1.12] -[gitpython==3.1.41] - -[gojsonnet==0.20.0] -apt_requires = golang -brew_requires = go -python_versions = <3.13 - -[google-api-core==1.32.0] -[google-api-core==2.8.2] -[google-api-core==2.10.1] -[google-api-core==2.11.0] -[google-api-core==2.12.0] -[google-api-core==2.15.0] -[google-api-core==2.16.2] -[google-api-core==2.17.1] -[google-api-core==2.19.0] -[google-api-core==2.19.1] -[google-api-core==2.19.2] -[google-api-core==2.21.0] -[google-api-core==2.24.2] -[google-api-core==2.25.1] - -[google-api-python-client==2.88.0] -[google-api-python-client==2.137.0] -[google-api-python-client==2.145.0] -[google-api-python-client==2.181.0] - -[google-auth==1.29.0] -[google-auth==1.35.0] -[google-auth==2.11.0] -[google-auth==2.16.0] -[google-auth==2.19.1] -[google-auth==2.22.0] -[google-auth==2.23.0] -[google-auth==2.23.3] -[google-auth==2.23.4] -[google-auth==2.25.2] -[google-auth==2.27.0] -[google-auth==2.28.2] -[google-auth==2.29.0] -[google-auth==2.32.0] -[google-auth==2.34.0] -[google-auth==2.35.0] -[google-auth==2.38.0] -[google-auth==2.39.0] -[google-auth==2.40.0] -[google-auth==2.40.3] -[google-auth==2.41.1] - -[google-auth-httplib2==0.1.0] -[google-auth-httplib2==0.2.0] - -[google-cloud-appengine-logging==1.8.0] - -[google-cloud-audit-log==0.4.0] - -[google-cloud-bigtable==1.6.1] -[google-cloud-bigtable==2.11.3] -[google-cloud-bigtable==2.22.0] -[google-cloud-bigtable==2.26.0] -[google-cloud-bigtable==2.30.1] -[google-cloud-bigtable==2.31.0] - -[google-cloud-build==3.20.1] -[google-cloud-build==3.22.0] -[google-cloud-build==3.24.2] -[google-cloud-build==3.31.2] - -[google-cloud-compute==1.19.2] - -[google-cloud-core==1.5.0] -[google-cloud-core==2.3.2] -[google-cloud-core==2.4.1] -[google-cloud-core==2.4.3] - -[google-cloud-functions==1.8.0] -[google-cloud-functions==1.8.1] -[google-cloud-functions==1.14.0] -[google-cloud-functions==1.17.0] -[google-cloud-functions==1.20.4] - -[google-cloud-kms==2.19.1] -[google-cloud-kms==2.20.0] -[google-cloud-kms==2.24.2] -[google-cloud-kms==3.5.1] - -[google-cloud-logging==3.13.0] - -[google-cloud-os-login==2.14.6] - -[google-cloud-pubsub==2.2.0] -[google-cloud-pubsub==2.13.6] -[google-cloud-pubsub==2.19.0] -[google-cloud-pubsub==2.23.0] -[google-cloud-pubsub==2.31.0] - -[google-cloud-secret-manager==2.12.6] -[google-cloud-secret-manager==2.15.0] -[google-cloud-secret-manager==2.20.2] - -[google-cloud-spanner==3.17.0] -[google-cloud-spanner==3.19.0] -[google-cloud-spanner==3.20.0] -[google-cloud-spanner==3.40.1] -[google-cloud-spanner==3.43.0] -[google-cloud-spanner==3.46.0] -[google-cloud-spanner==3.48.0] -[google-cloud-spanner==3.49.0] -[google-cloud-spanner==3.55.0] - -[google-cloud-storage==1.35.0] -[google-cloud-storage==2.5.0] -[google-cloud-storage==2.14.0] -[google-cloud-storage==2.18.0] -[google-cloud-storage==3.2.0] - -[google-cloud-storage-transfer==1.17.0] - -[google-crc32c==1.5.0] -apt_requires = cmake -brew_requires = cmake -custom_prebuild = prebuild/crc32c 1.1.2 -[google-crc32c==1.6.0] -apt_requires = cmake -brew_requires = cmake -custom_prebuild = prebuild/crc32c 1.1.2 -[google-crc32c==1.7.1] -apt_requires = cmake -brew_requires = cmake -custom_prebuild = prebuild/crc32c 1.1.2 - -[google-genai==1.13.0] - -[google-resumable-media==1.3.3] -[google-resumable-media==2.3.3] -[google-resumable-media==2.7.0] -[google-resumable-media==2.7.2] - -[googleapis-common-protos==1.56.2] -[googleapis-common-protos==1.56.4] -[googleapis-common-protos==1.58.0] -[googleapis-common-protos==1.59.0] -[googleapis-common-protos==1.60.0] -[googleapis-common-protos==1.62.0] -[googleapis-common-protos==1.63.0] -[googleapis-common-protos==1.63.2] -[googleapis-common-protos==1.65.0] -[googleapis-common-protos==1.70.0] - -[granian==2.5.4] -validate_extras = pname,reload,uvloop -[granian==2.5.5] -validate_extras = pname,reload,uvloop -[granian==2.5.6] -validate_extras = pname,reload,uvloop -[granian==2.5.7] -validate_extras = pname,reload,uvloop -[granian==2.6.0] -validate_extras = pname,reload,uvloop -[granian==2.6.1] -validate_extras = pname,reload,uvloop -[granian==2.7.0] -validate_extras = pname,reload,uvloop - -[greenlet==1.1.3] -python_versions = <3.12 - -[grpc-google-iam-v1==0.12.4] -[grpc-google-iam-v1==0.12.6] -[grpc-google-iam-v1==0.13.0] -[grpc-google-iam-v1==0.13.1] -[grpc-google-iam-v1==0.14.2] - -[grpc-interceptor==0.15.4] - -[grpc-stubs==1.53.0.5] -[grpc-stubs==1.53.0.6] - -[grpcio==1.56.0] -python_versions = <3.12 -[grpcio==1.59.0] -python_versions = <3.13 -[grpcio==1.60.0] -python_versions = <3.13 -[grpcio==1.60.1] -python_versions = <3.13 -[grpcio==1.62.1] -python_versions = <3.13 -[grpcio==1.64.0] -python_versions = <3.13 -[grpcio==1.65.4] -python_versions = <3.13 -[grpcio==1.66.1] -python_versions = <3.13 -[grpcio==1.67.0] -python_versions = <3.14 -[grpcio==1.72.0rc1] -python_versions = <3.14 -[grpcio==1.73.1] -python_versions = <3.14 -[grpcio==1.75.1] - -[grpcio-status==1.47.0] -[grpcio-status==1.48.1] -[grpcio-status==1.51.1] -[grpcio-status==1.56.0] -[grpcio-status==1.59.0] -[grpcio-status==1.60.0] -[grpcio-status==1.60.1] -[grpcio-status==1.62.1] -[grpcio-status==1.62.2] -[grpcio-status==1.66.1] -[grpcio-status==1.67.0] -[grpcio-status==1.72.0rc1] -[grpcio-status==1.73.1] -[grpcio-status==1.75.1] - -[h11==0.9.0] -[h11==0.12.0] -[h11==0.13.0] -[h11==0.14.0] -[h11==0.16.0] - -[h2==4.1.0] -[h2==4.2.0] -[h2==4.3.0] - -[hera==5.25.1] - -[hf-xet==1.1.10] - -[hiredis==0.3.1] -python_versions = <3.12 -[hiredis==2.0.0] -python_versions = <3.12 -[hiredis==2.3.2] -[hiredis==2.4.0] -[hiredis==3.0.0] - -[honcho==1.0.0] -[honcho==1.0.1] -[honcho==1.1.0] -[honcho==2.0.0] - -[hpack==4.0.0] -[hpack==4.1.0] - -[httpcore==0.11.1] -[httpcore==0.15.0] -[httpcore==1.0.2] -[httpcore==1.0.5] -[httpcore==1.0.9] - -[httplib2==0.22.0] -[httplib2==0.31.0] - -[httpx==0.15.4] -[httpx==0.23.0] -[httpx==0.25.2] -[httpx==0.27.0] -[httpx==0.27.2] -[httpx==0.28.1] - -[huggingface-hub==0.35.3] - -[hyperframe==6.0.1] -[hyperframe==6.1.0] - -[hypothesis==6.61.0] -validate_extras = pytest - -[identify==2.5.1] -[identify==2.5.3] -[identify==2.5.5] -[identify==2.5.18] -[identify==2.5.24] -[identify==2.5.29] -[identify==2.5.33] -[identify==2.6.1] -[identify==2.6.9] - -[idna==2.8] -[idna==2.10] -[idna==3.2] -[idna==3.3] -[idna==3.4] -[idna==3.6] -[idna==3.7] -[idna==3.8] -[idna==3.10] -[idna==3.11] - -[imagesize==1.4.1] - -[immutables==0.15] -python_versions = <3.12 - -[importlib-metadata==3.10.1] -[importlib-metadata==4.6.4] -[importlib-metadata==4.12.0] -[importlib-metadata==6.0.0] -[importlib-metadata==7.1.0] -[importlib-metadata==8.6.1] -[importlib-metadata==8.7.0] - -[importlib-resources==5.8.0] -[importlib-resources==5.9.0] - -[inflection==0.5.1] - -[iniconfig==1.1.1] -[iniconfig==2.0.0] - -[iso3166==2.1.1] - -[isodate==0.6.1] - -[isort==5.10.1] -[isort==5.12.0] -[isort==5.13.2] -[isort==6.0.1] - -[itsdangerous==2.1.2] -[itsdangerous==2.2.0] - -[jinja2==3.0.3] -[jinja2==3.1.0] -[jinja2==3.1.2] -[jinja2==3.1.3] -[jinja2==3.1.4] -[jinja2==3.1.6] - -[jiter==0.9.0] -python_versions = <3.14 -[jiter==0.10.0] -python_versions = <3.14 - -[jmespath==0.10.0] -[jmespath==1.0.1] - -[johen==0.1.3] -[johen==0.1.4] -[johen==0.1.5] - -[jsonnet==0.20.0] -python_versions = <3.13 - -[jsonpatch==1.33] - -[jsonpath-ng==1.6.1] +# [lief==0.16.6] +# python_versions = <3.14 -[jsonpointer==3.0.0] +# [looseversion==1.0.2] -[jsonschema==3.2.0] -[jsonschema==4.5.1] -[jsonschema==4.7.1] -[jsonschema==4.9.1] -[jsonschema==4.14.0] -[jsonschema==4.16.0] -[jsonschema==4.17.3] -[jsonschema==4.18.4] -[jsonschema==4.20.0] -[jsonschema==4.23.0] - -[jsonschema-path==0.3.2] - -[jsonschema-spec==0.1.3] -[jsonschema-spec==0.2.3] -[jsonschema-spec==0.2.4] - -[jsonschema-specifications==2023.7.1] -[jsonschema-specifications==2023.11.1] -[jsonschema-specifications==2023.12.1] - -[jsonschema2md==0.4.0] - -[kombu==4.6.11] -[kombu==5.2.4] -[kombu==5.3.3] -[kombu==5.3.4] -[kombu==5.3.6] -[kombu==5.4.2] -[kombu==5.5.3] - -[kubernetes==19.15.0] -[kubernetes==24.2.0] -[kubernetes==27.2.0] -[kubernetes==30.1.0] - -[lark==1.1.9] -[lark==1.2.2] - -[lark-parser==0.10.1] - -[lazy-object-proxy==1.7.1] -[lazy-object-proxy==1.9.0] -[lazy-object-proxy==1.10.0] - -[librt==0.7.8] - -[lief==0.16.6] -python_versions = <3.14 - -[looseversion==1.0.2] - -[lxml==4.9.1] -apt_requires = - libxml2-dev - libxslt1-dev -brew_requires = - libxml2 - libxslt -python_versions = <3.12 -[lxml==4.9.3] -apt_requires = - libxml2-dev - libxslt1-dev -brew_requires = - libxml2 - libxslt -python_versions = <3.13 -[lxml==5.3.0] -apt_requires = - libxml2-dev - libxslt1-dev -brew_requires = - libxml2 - libxslt - -[lxml-stubs==0.4.0] - -[lzfse==0.4.2] - -[maison==1.4.0] - -[mako==1.1.4] -[mako==1.2.3] - -[markdown==3.3.7] -[markdown==3.4.1] -[markdown==3.8.2] - -[markdown-it-py==2.1.0] -[markdown-it-py==3.0.0] -[markdown-it-py==4.0.0] - -[markupsafe==2.0.1] -[markupsafe==2.1.1] -[markupsafe==2.1.2] -[markupsafe==2.1.3] -[markupsafe==2.1.4] -[markupsafe==2.1.5] -[markupsafe==3.0.2] -[markupsafe==3.0.3] - -[maturin==0.14.15] -[maturin==1.4.0] -[maturin==1.5.1] -[maturin==1.11.5] - -[maxminddb==2.0.3] -apt_requires = libmaxminddb-dev -brew_requires = libmaxminddb -[maxminddb==2.2.0] -apt_requires = libmaxminddb-dev -brew_requires = libmaxminddb -[maxminddb==2.3.0] -apt_requires = libmaxminddb-dev -brew_requires = libmaxminddb -[maxminddb==2.5.2] -apt_requires = libmaxminddb-dev -brew_requires = libmaxminddb - -[mccabe==0.6.1] -[mccabe==0.7.0] - -[mdit-py-plugins==0.3.0] -[mdit-py-plugins==0.5.0] - -[mdurl==0.1.2] - -[mergedeep==1.3.4] - -[milksnake==0.1.5] -[milksnake==0.1.6] - -[mistune==2.0.4] -[mistune==3.0.1] - -[mkdocs==1.6.1] - -[mkdocs-get-deps==0.2.0] - -[mkdocs-material==9.6.17] - -[mkdocs-material-extensions==1.3.1] - -[mmh3==3.0.0] -[mmh3==4.0.0] - -[mock==4.0.3] - -[more-itertools==8.13.0] -[more-itertools==8.14.0] -[more-itertools==9.0.0] -[more-itertools==10.0.0] -[more-itertools==10.1.0] - -[msgpack==1.0.4] -python_versions = <3.12 -[msgpack==1.0.7] -python_versions = <3.13 -[msgpack==1.0.8] -python_versions = <3.13 -[msgpack==1.1.0] -[msgpack==1.1.1] - -[msgpack-types==0.2.0] - -[msgspec==0.19.0] - -[multidict==6.0.2] -python_versions = <3.13 -[multidict==6.0.4] -python_versions = <3.13 -[multidict==6.1.0] -[multidict==6.6.4] - -[mypy==0.971] -[mypy==0.981] -[mypy==0.982] -[mypy==0.991] -[mypy==1.0.1] -[mypy==1.1.1] -[mypy==1.3.0] -[mypy==1.4.1] -[mypy==1.5.0] -[mypy==1.5.1] -[mypy==1.6.1] -[mypy==1.7.0] -[mypy==1.7.1] -[mypy==1.8.0] -[mypy==1.9.0] -[mypy==1.10.0] -[mypy==1.11.0] -[mypy==1.11.1] -[mypy==1.11.2] -[mypy==1.12.1] -[mypy==1.13.0] -[mypy==1.14.0] -[mypy==1.14.1] -[mypy==1.15.0] -[mypy==1.16.0] -[mypy==1.16.1] -[mypy==1.17.0] -[mypy==1.17.1] -[mypy==1.18.1] -[mypy==1.18.2] -[mypy==1.19.0] -[mypy==1.19.1] - -[mypy-extensions==0.4.3] -[mypy-extensions==1.0.0] -[mypy-extensions==1.1.0] - -[myst-parser==0.18.0] -[myst-parser==5.0.0] - -[mywsgi==1.0.3] - -[natsort==8.1.0] -[natsort==8.2.0] - -[nodeenv==1.6.0] -[nodeenv==1.7.0] -[nodeenv==1.8.0] -[nodeenv==1.9.1] - -[oauthlib==3.1.0] -[oauthlib==3.2.0] -[oauthlib==3.2.1] -[oauthlib==3.2.2] - -[objectstore-client==0.0.1] -python_versions = >=3.13.1 -[objectstore-client==0.0.4] -[objectstore-client==0.0.5] -[objectstore-client==0.0.6] -[objectstore-client==0.0.7] -[objectstore-client==0.0.8] -[objectstore-client==0.0.9] -[objectstore-client==0.0.10] -[objectstore-client==0.0.11] -[objectstore-client==0.0.12] -[objectstore-client==0.0.13] -[objectstore-client==0.0.14] -[objectstore-client==0.0.15] -[objectstore-client==0.0.16] -[objectstore-client==0.0.17] - -[openai==0.27.0] -[openai==0.27.8] -[openai==1.3.5] -[openai==1.77.0] -[openai==1.93.0] - -[openapi-core==0.14.2] -[openapi-core==0.15.0] -[openapi-core==0.16.5] -[openapi-core==0.18.0] -[openapi-core==0.18.2] -[openapi-core==0.19.3] - -[openapi-pydantic==0.4.0] - -[openapi-schema-validator==0.2.3] -[openapi-schema-validator==0.3.0] -[openapi-schema-validator==0.3.1] -[openapi-schema-validator==0.4.3] -[openapi-schema-validator==0.6.0] -[openapi-schema-validator==0.6.2] - -[openapi-spec-validator==0.4.0] -[openapi-spec-validator==0.5.5] -[openapi-spec-validator==0.6.0] -[openapi-spec-validator==0.7.1] - -[opentelemetry-api==1.32.1] -[opentelemetry-api==1.33.1] -[opentelemetry-api==1.35.0] - -[opentelemetry-proto==1.22.0] -[opentelemetry-proto==1.32.1] - -[opentelemetry-sdk==1.32.1] -[opentelemetry-sdk==1.33.1] -[opentelemetry-sdk==1.35.0] - -[opentelemetry-semantic-conventions==0.53b1] -[opentelemetry-semantic-conventions==0.54b1] -[opentelemetry-semantic-conventions==0.56b0] +# [lxml==4.9.1] +# apt_requires = +# libxml2-dev +# libxslt1-dev +# brew_requires = +# libxml2 +# libxslt +# python_versions = <3.12 +# [lxml==4.9.3] +# apt_requires = +# libxml2-dev +# libxslt1-dev +# brew_requires = +# libxml2 +# libxslt +# python_versions = <3.13 +# [lxml==5.3.0] +# apt_requires = +# libxml2-dev +# libxslt1-dev +# brew_requires = +# libxml2 +# libxslt + +# [lxml-stubs==0.4.0] + +# [lzfse==0.4.2] + +# [maison==1.4.0] + +# [mako==1.1.4] +# [mako==1.2.3] + +# [markdown==3.3.7] +# [markdown==3.4.1] +# [markdown==3.8.2] + +# [markdown-it-py==2.1.0] +# [markdown-it-py==3.0.0] +# [markdown-it-py==4.0.0] + +# [markupsafe==2.0.1] +# [markupsafe==2.1.1] +# [markupsafe==2.1.2] +# [markupsafe==2.1.3] +# [markupsafe==2.1.4] +# [markupsafe==2.1.5] +# [markupsafe==3.0.2] +# [markupsafe==3.0.3] + +# [maturin==0.14.15] +# [maturin==1.4.0] +# [maturin==1.5.1] +# [maturin==1.11.5] + +# [maxminddb==2.0.3] +# apt_requires = libmaxminddb-dev +# brew_requires = libmaxminddb +# [maxminddb==2.2.0] +# apt_requires = libmaxminddb-dev +# brew_requires = libmaxminddb +# [maxminddb==2.3.0] +# apt_requires = libmaxminddb-dev +# brew_requires = libmaxminddb +# [maxminddb==2.5.2] +# apt_requires = libmaxminddb-dev +# brew_requires = libmaxminddb + +# [mccabe==0.6.1] +# [mccabe==0.7.0] + +# [mdit-py-plugins==0.3.0] +# [mdit-py-plugins==0.5.0] + +# [mdurl==0.1.2] + +# [mergedeep==1.3.4] + +# [milksnake==0.1.5] +# [milksnake==0.1.6] + +# [mistune==2.0.4] +# [mistune==3.0.1] + +# [mkdocs==1.6.1] + +# [mkdocs-get-deps==0.2.0] + +# [mkdocs-material==9.6.17] + +# [mkdocs-material-extensions==1.3.1] + +# [mmh3==3.0.0] +# [mmh3==4.0.0] + +# [mock==4.0.3] + +# [more-itertools==8.13.0] +# [more-itertools==8.14.0] +# [more-itertools==9.0.0] +# [more-itertools==10.0.0] +# [more-itertools==10.1.0] + +# [msgpack==1.0.4] +# python_versions = <3.12 +# [msgpack==1.0.7] +# python_versions = <3.13 +# [msgpack==1.0.8] +# python_versions = <3.13 +# [msgpack==1.1.0] +# [msgpack==1.1.1] + +# [msgpack-types==0.2.0] + +# [msgspec==0.19.0] + +# [multidict==6.0.2] +# python_versions = <3.13 +# [multidict==6.0.4] +# python_versions = <3.13 +# [multidict==6.1.0] +# [multidict==6.6.4] + +# [mypy==0.971] +# [mypy==0.981] +# [mypy==0.982] +# [mypy==0.991] +# [mypy==1.0.1] +# [mypy==1.1.1] +# [mypy==1.3.0] +# [mypy==1.4.1] +# [mypy==1.5.0] +# [mypy==1.5.1] +# [mypy==1.6.1] +# [mypy==1.7.0] +# [mypy==1.7.1] +# [mypy==1.8.0] +# [mypy==1.9.0] +# [mypy==1.10.0] +# [mypy==1.11.0] +# [mypy==1.11.1] +# [mypy==1.11.2] +# [mypy==1.12.1] +# [mypy==1.13.0] +# [mypy==1.14.0] +# [mypy==1.14.1] +# [mypy==1.15.0] +# [mypy==1.16.0] +# [mypy==1.16.1] +# [mypy==1.17.0] +# [mypy==1.17.1] +# [mypy==1.18.1] +# [mypy==1.18.2] +# [mypy==1.19.0] +# [mypy==1.19.1] + +# [mypy-extensions==0.4.3] +# [mypy-extensions==1.0.0] +# [mypy-extensions==1.1.0] + +# [myst-parser==0.18.0] +# [myst-parser==5.0.0] + +# [mywsgi==1.0.3] + +# [natsort==8.1.0] +# [natsort==8.2.0] + +# [nodeenv==1.6.0] +# [nodeenv==1.7.0] +# [nodeenv==1.8.0] +# [nodeenv==1.9.1] + +# [oauthlib==3.1.0] +# [oauthlib==3.2.0] +# [oauthlib==3.2.1] +# [oauthlib==3.2.2] + +# [objectstore-client==0.0.1] +# python_versions = >=3.13.1 +# [objectstore-client==0.0.4] +# [objectstore-client==0.0.5] +# [objectstore-client==0.0.6] +# [objectstore-client==0.0.7] +# [objectstore-client==0.0.8] +# [objectstore-client==0.0.9] +# [objectstore-client==0.0.10] +# [objectstore-client==0.0.11] +# [objectstore-client==0.0.12] +# [objectstore-client==0.0.13] +# [objectstore-client==0.0.14] +# [objectstore-client==0.0.15] +# [objectstore-client==0.0.16] +# [objectstore-client==0.0.17] + +# [openai==0.27.0] +# [openai==0.27.8] +# [openai==1.3.5] +# [openai==1.77.0] +# [openai==1.93.0] + +# [openapi-core==0.14.2] +# [openapi-core==0.15.0] +# [openapi-core==0.16.5] +# [openapi-core==0.18.0] +# [openapi-core==0.18.2] +# [openapi-core==0.19.3] + +# [openapi-pydantic==0.4.0] + +# [openapi-schema-validator==0.2.3] +# [openapi-schema-validator==0.3.0] +# [openapi-schema-validator==0.3.1] +# [openapi-schema-validator==0.4.3] +# [openapi-schema-validator==0.6.0] +# [openapi-schema-validator==0.6.2] + +# [openapi-spec-validator==0.4.0] +# [openapi-spec-validator==0.5.5] +# [openapi-spec-validator==0.6.0] +# [openapi-spec-validator==0.7.1] + +# [opentelemetry-api==1.32.1] +# [opentelemetry-api==1.33.1] +# [opentelemetry-api==1.35.0] + +# [opentelemetry-proto==1.22.0] +# [opentelemetry-proto==1.32.1] + +# [opentelemetry-sdk==1.32.1] +# [opentelemetry-sdk==1.33.1] +# [opentelemetry-sdk==1.35.0] + +# [opentelemetry-semantic-conventions==0.53b1] +# [opentelemetry-semantic-conventions==0.54b1] +# [opentelemetry-semantic-conventions==0.56b0] [orjson==3.10.0] python_versions = <3.13 [orjson==3.10.3] python_versions = <3.13 [orjson==3.10.10] +python_versions = <3.14 [outcome==1.2.0] [outcome==1.3.0.post0] From 1df4f2c863bbac4b37116576cdd796eb9dece210 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 17:20:33 -0800 Subject: [PATCH 20/66] . --- packages.ini | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/packages.ini b/packages.ini index 6c03c43d..84a9ad80 100644 --- a/packages.ini +++ b/packages.ini @@ -1319,17 +1319,18 @@ # [opentelemetry-semantic-conventions==0.54b1] # [opentelemetry-semantic-conventions==0.56b0] -[orjson==3.10.0] -python_versions = <3.13 -[orjson==3.10.3] -python_versions = <3.13 -[orjson==3.10.10] -python_versions = <3.14 +# [orjson==3.10.0] +# python_versions = <3.13 +# [orjson==3.10.3] +# python_versions = <3.13 +# [orjson==3.10.10] +# python_versions = <3.14 -[outcome==1.2.0] -[outcome==1.3.0.post0] +# [outcome==1.2.0] +# [outcome==1.3.0.post0] [p4python==2025.1.2767466] +python_versions = <3.14 [packaging==21.3] [packaging==22.0] @@ -1398,9 +1399,13 @@ python_versions = <3.13 [pillow==10.3.0] python_versions = <3.13 [pillow==10.4.0] +python_versions = <3.14 [pillow==11.0.0] +python_versions = <3.14 [pillow==11.2.1] +python_versions = <3.14 [pillow==11.3.0] +python_versions = <3.14 [pillow-heif==1.1.1] From 720012e731a0b08dbeb841fa11655fd55f71010b Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 17:27:42 -0800 Subject: [PATCH 21/66] add python_versions = <3.14 for pydantic-core==2.23.4 pyo3 0.22.2 bundled in this version only supports up to Python 3.13 Co-Authored-By: Claude Opus 4.6 --- packages.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/packages.ini b/packages.ini index 84a9ad80..514d7b0a 100644 --- a/packages.ini +++ b/packages.ini @@ -1599,6 +1599,7 @@ python_versions = <3.13 [pydantic-core==2.18.4] python_versions = <3.13 [pydantic-core==2.23.4] +python_versions = <3.14 [pydantic-core==2.24.2] [pydantic-core==2.33.2] From 04e5b6c59106ccb22e4370bcf216a7ed4dac2eed Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 18:54:12 -0800 Subject: [PATCH 22/66] add python_versions = <3.14 for pydantic-core==2.24.2 pyo3 0.22.3 bundled in this version only supports up to Python 3.13 Co-Authored-By: Claude Opus 4.6 --- packages.ini | 1 + 1 file changed, 1 insertion(+) diff --git a/packages.ini b/packages.ini index 514d7b0a..b583f5a9 100644 --- a/packages.ini +++ b/packages.ini @@ -1601,6 +1601,7 @@ python_versions = <3.13 [pydantic-core==2.23.4] python_versions = <3.14 [pydantic-core==2.24.2] +python_versions = <3.14 [pydantic-core==2.33.2] [pyelftools==0.28] From 337573c06c911d7034dcb86b7835670a67612156 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 19:04:15 -0800 Subject: [PATCH 23/66] add python_versions = <3.14 for pydantic-core==2.33.2 pyo3 0.24.1 bundled in this version only supports up to Python 3.13. Comment out already-built packages to speed up CI iteration. Co-Authored-By: Claude Opus 4.6 --- packages.ini | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/packages.ini b/packages.ini index b583f5a9..1fee9672 100644 --- a/packages.ini +++ b/packages.ini @@ -1407,7 +1407,7 @@ python_versions = <3.14 [pillow==11.3.0] python_versions = <3.14 -[pillow-heif==1.1.1] +# [pillow-heif==1.1.1] [pip==22.1.2] [pip==22.2.2] @@ -1479,8 +1479,8 @@ python_versions = <3.14 [prompt-toolkit==3.0.48] [prompt-toolkit==3.0.51] -[propcache==0.2.0] -[propcache==0.3.2] +# [propcache==0.2.0] +# [propcache==0.3.2] [proto-plus==1.20.4] [proto-plus==1.22.0] @@ -1514,8 +1514,8 @@ python_versions = <3.14 [protobuf==6.31.1] [protobuf==6.32.1] -[psutil==5.8.0] -[psutil==5.9.2] +# [psutil==5.8.0] +# [psutil==5.9.2] [psutil==5.9.7] [psycopg2-binary==2.9.3] @@ -1536,11 +1536,11 @@ brew_requires = openssl@1.1 postgresql python_versions = <3.13 -[psycopg2-binary==2.9.10] -apt_requires = libpq-dev -brew_requires = - openssl@1.1 - postgresql +# [psycopg2-binary==2.9.10] +# apt_requires = libpq-dev +# brew_requires = +# openssl@1.1 +# postgresql [puccinialin==0.1.8] @@ -1577,7 +1577,7 @@ brew_requires = [pycparser==2.22] [pycparser==2.23] -[pycryptodomex==3.9.8] +# [pycryptodomex==3.9.8] [pycryptodomex==3.19.1] [pydantic==1.10.2] @@ -1603,6 +1603,7 @@ python_versions = <3.14 [pydantic-core==2.24.2] python_versions = <3.14 [pydantic-core==2.33.2] +python_versions = <3.14 [pyelftools==0.28] [pyelftools==0.29] From 9c6335cebe8b0376ae0053c9406ca2d3d2b26cfa Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 19:22:22 -0800 Subject: [PATCH 24/66] add python_versions = <3.14 for pyuwsgi==2.0.27.post1 Uses internal CPython struct c_recursion_remaining removed in 3.14. Comment out already-built packages to speed up CI. Co-Authored-By: Claude Opus 4.6 --- packages.ini | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/packages.ini b/packages.ini index 1fee9672..0657a88d 100644 --- a/packages.ini +++ b/packages.ini @@ -1623,9 +1623,9 @@ python_versions = <3.14 [pyjwt==2.4.0] [pyjwt==2.10.1] -[pylibmc==1.6.3] -apt_requires = libmemcached-dev -brew_requires = libmemcached +# [pylibmc==1.6.3] +# apt_requires = libmemcached-dev +# brew_requires = libmemcached [pymdown-extensions==10.16.1] @@ -1747,11 +1747,11 @@ python_versions = <3.13 [python-memcached==1.59] -[python-rapidjson==1.4] -[python-rapidjson==1.8] -[python-rapidjson==1.16] -[python-rapidjson==1.20] -[python-rapidjson==1.21] +# [python-rapidjson==1.4] +# [python-rapidjson==1.8] +# [python-rapidjson==1.16] +# [python-rapidjson==1.20] +# [python-rapidjson==1.21] [python-u2flib-server==5.0.0] [python-u2flib-server==5.0.1] @@ -1797,6 +1797,7 @@ validate_skip_imports = uwsgidecorators python_versions = <3.13 validate_skip_imports = uwsgidecorators [pyuwsgi==2.0.27.post1] +python_versions = <3.14 validate_skip_imports = uwsgidecorators [pyuwsgi==2.0.28.post1] validate_skip_imports = uwsgidecorators From 8dce9f4b7458a2745d506f8cae41eb96fdc7999d Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 19:45:48 -0800 Subject: [PATCH 25/66] add python_versions = <3.14 for pyuwsgi 2.0.28-2.0.30 All pyuwsgi versions use internal CPython struct removed in 3.14. Comment out already-restricted 2.0.27.post1. Co-Authored-By: Claude Opus 4.6 --- packages.ini | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages.ini b/packages.ini index 0657a88d..40d001a3 100644 --- a/packages.ini +++ b/packages.ini @@ -1796,14 +1796,17 @@ validate_skip_imports = uwsgidecorators [pyuwsgi==2.0.27a1] python_versions = <3.13 validate_skip_imports = uwsgidecorators -[pyuwsgi==2.0.27.post1] -python_versions = <3.14 -validate_skip_imports = uwsgidecorators +# [pyuwsgi==2.0.27.post1] +# python_versions = <3.14 +# validate_skip_imports = uwsgidecorators [pyuwsgi==2.0.28.post1] +python_versions = <3.14 validate_skip_imports = uwsgidecorators [pyuwsgi==2.0.29] +python_versions = <3.14 validate_skip_imports = uwsgidecorators [pyuwsgi==2.0.30] +python_versions = <3.14 validate_skip_imports = uwsgidecorators [pyvat==1.3.15] From cfe7cf5efd6f81e1d8e5f23b8825ed5369ac93bf Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 19:49:56 -0800 Subject: [PATCH 26/66] comment out all packages before pyuwsgi to speed up CI iteration Co-Authored-By: Claude Opus 4.6 --- packages.ini | 800 +++++++++++++++++++++++++-------------------------- 1 file changed, 400 insertions(+), 400 deletions(-) diff --git a/packages.ini b/packages.ini index 40d001a3..c6f3d8ca 100644 --- a/packages.ini +++ b/packages.ini @@ -1329,423 +1329,423 @@ # [outcome==1.2.0] # [outcome==1.3.0.post0] -[p4python==2025.1.2767466] -python_versions = <3.14 +# [p4python==2025.1.2767466] +# python_versions = <3.14 -[packaging==21.3] -[packaging==22.0] -[packaging==23.0] -[packaging==23.1] -[packaging==23.2] -[packaging==24.0] -[packaging==24.1] -[packaging==24.2] -[packaging==25.0] -[packaging==26.0] +# [packaging==21.3] +# [packaging==22.0] +# [packaging==23.0] +# [packaging==23.1] +# [packaging==23.2] +# [packaging==24.0] +# [packaging==24.1] +# [packaging==24.2] +# [packaging==25.0] +# [packaging==26.0] -[paginate==0.5.7] +# [paginate==0.5.7] -[paramiko==2.11.0] -[paramiko==3.4.0] -[paramiko==3.4.1] +# [paramiko==2.11.0] +# [paramiko==3.4.0] +# [paramiko==3.4.1] -[parse==1.19.0] -[parse==1.19.1] -[parse==1.20.0] +# [parse==1.19.0] +# [parse==1.19.1] +# [parse==1.20.0] -[parsimonious==0.8.0] -[parsimonious==0.8.1] -[parsimonious==0.9.0] -[parsimonious==0.10.0] +# [parsimonious==0.8.0] +# [parsimonious==0.8.1] +# [parsimonious==0.9.0] +# [parsimonious==0.10.0] -[pathable==0.4.3] +# [pathable==0.4.3] -[pathspec==0.9.0] -[pathspec==0.10.1] -[pathspec==0.10.2] -[pathspec==0.11.0] -[pathspec==0.11.1] -[pathspec==0.11.2] -[pathspec==0.12.1] +# [pathspec==0.9.0] +# [pathspec==0.10.1] +# [pathspec==0.10.2] +# [pathspec==0.11.0] +# [pathspec==0.11.1] +# [pathspec==0.11.2] +# [pathspec==0.12.1] -[pep517==0.12.0] -[pep517==0.13.0] +# [pep517==0.12.0] +# [pep517==0.13.0] -[petname==2.6] +# [petname==2.6] -[phabricator==0.7.0] -[phabricator==0.9.1] +# [phabricator==0.7.0] +# [phabricator==0.9.1] -[phonenumberslite==8.12.0] -[phonenumberslite==8.12.54] -[phonenumberslite==8.12.55] +# [phonenumberslite==8.12.0] +# [phonenumberslite==8.12.54] +# [phonenumberslite==8.12.55] -[pillow==9.2.0] -python_versions = <3.12 -[pillow==9.3.0] -python_versions = <3.12 -[pillow==9.4.0] -python_versions = <3.12 -[pillow==9.5.0] -python_versions = <3.12 -[pillow==10.0.0] -python_versions = <3.13 -[pillow==10.0.1] -python_versions = <3.13 -[pillow==10.1.0] -python_versions = <3.13 -[pillow==10.2.0] -python_versions = <3.13 -[pillow==10.3.0] -python_versions = <3.13 -[pillow==10.4.0] -python_versions = <3.14 -[pillow==11.0.0] -python_versions = <3.14 -[pillow==11.2.1] -python_versions = <3.14 -[pillow==11.3.0] -python_versions = <3.14 +# [pillow==9.2.0] +# python_versions = <3.12 +# [pillow==9.3.0] +# python_versions = <3.12 +# [pillow==9.4.0] +# python_versions = <3.12 +# [pillow==9.5.0] +# python_versions = <3.12 +# [pillow==10.0.0] +# python_versions = <3.13 +# [pillow==10.0.1] +# python_versions = <3.13 +# [pillow==10.1.0] +# python_versions = <3.13 +# [pillow==10.2.0] +# python_versions = <3.13 +# [pillow==10.3.0] +# python_versions = <3.13 +# [pillow==10.4.0] +# python_versions = <3.14 +# [pillow==11.0.0] +# python_versions = <3.14 +# [pillow==11.2.1] +# python_versions = <3.14 +# [pillow==11.3.0] +# python_versions = <3.14 # [pillow-heif==1.1.1] -[pip==22.1.2] -[pip==22.2.2] -[pip==23.0.1] -[pip==23.1.2] -[pip==23.2.1] -[pip==23.3.1] -[pip==23.3.2] -[pip==25.3] - -[pip-tools==6.7.0] -[pip-tools==6.8.0] -[pip-tools==6.12.2] -[pip-tools==6.13.0] -[pip-tools==6.14.0] -[pip-tools==7.1.0] -[pip-tools==7.3.0] -[pip-tools==7.5.2] - -[pkgconfig==1.5.5] - -[pkgutil-resolve-name==1.3.10] - -[planout==0.6.0] - -[platformdirs==2.5.2] -[platformdirs==2.5.4] -[platformdirs==3.0.0] -[platformdirs==3.5.3] -[platformdirs==3.8.0] -[platformdirs==3.10.0] -[platformdirs==4.0.0] -[platformdirs==4.1.0] -[platformdirs==4.2.0] -[platformdirs==4.2.2] -[platformdirs==4.3.6] -[platformdirs==4.3.7] -[platformdirs==4.3.8] -[platformdirs==4.5.1] - -[pluggy==0.13.1] -[pluggy==1.0.0] -[pluggy==1.3.0] -[pluggy==1.4.0] -[pluggy==1.5.0] - -[ply==3.11] - -[polars==1.33.0] - -[pre-commit==2.18.1] -[pre-commit==2.20.0] -[pre-commit==3.0.4] -[pre-commit==3.3.2] -[pre-commit==3.4.0] -[pre-commit==3.6.0] -[pre-commit==4.0.0] -[pre-commit==4.2.0] - -[progressbar2==3.41.0] -[progressbar2==4.0.0] -[progressbar2==4.2.0] - -[prompt-toolkit==3.0.30] -[prompt-toolkit==3.0.31] -[prompt-toolkit==3.0.39] -[prompt-toolkit==3.0.41] -[prompt-toolkit==3.0.43] -[prompt-toolkit==3.0.48] -[prompt-toolkit==3.0.51] +# [pip==22.1.2] +# [pip==22.2.2] +# [pip==23.0.1] +# [pip==23.1.2] +# [pip==23.2.1] +# [pip==23.3.1] +# [pip==23.3.2] +# [pip==25.3] + +# [pip-tools==6.7.0] +# [pip-tools==6.8.0] +# [pip-tools==6.12.2] +# [pip-tools==6.13.0] +# [pip-tools==6.14.0] +# [pip-tools==7.1.0] +# [pip-tools==7.3.0] +# [pip-tools==7.5.2] + +# [pkgconfig==1.5.5] + +# [pkgutil-resolve-name==1.3.10] + +# [planout==0.6.0] + +# [platformdirs==2.5.2] +# [platformdirs==2.5.4] +# [platformdirs==3.0.0] +# [platformdirs==3.5.3] +# [platformdirs==3.8.0] +# [platformdirs==3.10.0] +# [platformdirs==4.0.0] +# [platformdirs==4.1.0] +# [platformdirs==4.2.0] +# [platformdirs==4.2.2] +# [platformdirs==4.3.6] +# [platformdirs==4.3.7] +# [platformdirs==4.3.8] +# [platformdirs==4.5.1] + +# [pluggy==0.13.1] +# [pluggy==1.0.0] +# [pluggy==1.3.0] +# [pluggy==1.4.0] +# [pluggy==1.5.0] + +# [ply==3.11] + +# [polars==1.33.0] + +# [pre-commit==2.18.1] +# [pre-commit==2.20.0] +# [pre-commit==3.0.4] +# [pre-commit==3.3.2] +# [pre-commit==3.4.0] +# [pre-commit==3.6.0] +# [pre-commit==4.0.0] +# [pre-commit==4.2.0] + +# [progressbar2==3.41.0] +# [progressbar2==4.0.0] +# [progressbar2==4.2.0] + +# [prompt-toolkit==3.0.30] +# [prompt-toolkit==3.0.31] +# [prompt-toolkit==3.0.39] +# [prompt-toolkit==3.0.41] +# [prompt-toolkit==3.0.43] +# [prompt-toolkit==3.0.48] +# [prompt-toolkit==3.0.51] # [propcache==0.2.0] # [propcache==0.3.2] -[proto-plus==1.20.4] -[proto-plus==1.22.0] -[proto-plus==1.22.1] -[proto-plus==1.22.2] -[proto-plus==1.22.3] -[proto-plus==1.23.0] -[proto-plus==1.24.0] -[proto-plus==1.25.0] -[proto-plus==1.26.1] - -[protobuf==3.19.0] -[protobuf==4.21.5] -[protobuf==4.21.6] -[protobuf==4.21.12] -[protobuf==4.23.2] -[protobuf==4.24.3] -[protobuf==4.24.4] -[protobuf==4.25.1] -[protobuf==4.25.2] -[protobuf==4.25.3] -[protobuf==5.27.2] -[protobuf==5.27.3] -[protobuf==5.28.0] -[protobuf==5.28.1] -[protobuf==5.28.2] -[protobuf==5.28.3] -[protobuf==5.29.5] -[protobuf==5.29.6] -[protobuf==6.30.2] -[protobuf==6.31.1] -[protobuf==6.32.1] +# [proto-plus==1.20.4] +# [proto-plus==1.22.0] +# [proto-plus==1.22.1] +# [proto-plus==1.22.2] +# [proto-plus==1.22.3] +# [proto-plus==1.23.0] +# [proto-plus==1.24.0] +# [proto-plus==1.25.0] +# [proto-plus==1.26.1] + +# [protobuf==3.19.0] +# [protobuf==4.21.5] +# [protobuf==4.21.6] +# [protobuf==4.21.12] +# [protobuf==4.23.2] +# [protobuf==4.24.3] +# [protobuf==4.24.4] +# [protobuf==4.25.1] +# [protobuf==4.25.2] +# [protobuf==4.25.3] +# [protobuf==5.27.2] +# [protobuf==5.27.3] +# [protobuf==5.28.0] +# [protobuf==5.28.1] +# [protobuf==5.28.2] +# [protobuf==5.28.3] +# [protobuf==5.29.5] +# [protobuf==5.29.6] +# [protobuf==6.30.2] +# [protobuf==6.31.1] +# [protobuf==6.32.1] # [psutil==5.8.0] # [psutil==5.9.2] -[psutil==5.9.7] +# [psutil==5.9.7] -[psycopg2-binary==2.9.3] -apt_requires = libpq-dev -brew_requires = - openssl@1.1 - postgresql -python_versions = <3.12 -[psycopg2-binary==2.9.7] -apt_requires = libpq-dev -brew_requires = - openssl@1.1 - postgresql -python_versions = <3.12 -[psycopg2-binary==2.9.9] -apt_requires = libpq-dev -brew_requires = - openssl@1.1 - postgresql -python_versions = <3.13 +# [psycopg2-binary==2.9.3] +# apt_requires = libpq-dev +# brew_requires = +# openssl@1.1 +# postgresql +# python_versions = <3.12 +# [psycopg2-binary==2.9.7] +# apt_requires = libpq-dev +# brew_requires = +# openssl@1.1 +# postgresql +# python_versions = <3.12 +# [psycopg2-binary==2.9.9] +# apt_requires = libpq-dev +# brew_requires = +# openssl@1.1 +# postgresql +# python_versions = <3.13 # [psycopg2-binary==2.9.10] # apt_requires = libpq-dev # brew_requires = # openssl@1.1 # postgresql -[puccinialin==0.1.8] - -[py==1.11.0] - -[pyasn1==0.4.5] -[pyasn1==0.4.8] -[pyasn1==0.5.0] -[pyasn1==0.5.1] -[pyasn1==0.6.0] -[pyasn1==0.6.1] - -[pyasn1-modules==0.2.4] -[pyasn1-modules==0.2.8] -[pyasn1-modules==0.3.0] -[pyasn1-modules==0.4.0] -[pyasn1-modules==0.4.1] -[pyasn1-modules==0.4.2] - -[pycodestyle==2.8.0] -[pycodestyle==2.9.0] -[pycodestyle==2.9.1] -[pycodestyle==2.10.0] -[pycodestyle==2.11.0] -[pycodestyle==2.11.1] -[pycodestyle==2.13.0] -[pycodestyle==2.14.0] - -[pycountry==17.5.14] -[pycountry==22.3.5] -[pycountry==23.12.11] - -[pycparser==2.21] -[pycparser==2.22] -[pycparser==2.23] +# [puccinialin==0.1.8] + +# [py==1.11.0] + +# [pyasn1==0.4.5] +# [pyasn1==0.4.8] +# [pyasn1==0.5.0] +# [pyasn1==0.5.1] +# [pyasn1==0.6.0] +# [pyasn1==0.6.1] + +# [pyasn1-modules==0.2.4] +# [pyasn1-modules==0.2.8] +# [pyasn1-modules==0.3.0] +# [pyasn1-modules==0.4.0] +# [pyasn1-modules==0.4.1] +# [pyasn1-modules==0.4.2] + +# [pycodestyle==2.8.0] +# [pycodestyle==2.9.0] +# [pycodestyle==2.9.1] +# [pycodestyle==2.10.0] +# [pycodestyle==2.11.0] +# [pycodestyle==2.11.1] +# [pycodestyle==2.13.0] +# [pycodestyle==2.14.0] + +# [pycountry==17.5.14] +# [pycountry==22.3.5] +# [pycountry==23.12.11] + +# [pycparser==2.21] +# [pycparser==2.22] +# [pycparser==2.23] # [pycryptodomex==3.9.8] -[pycryptodomex==3.19.1] - -[pydantic==1.10.2] -[pydantic==1.10.9] -[pydantic==1.10.17] -[pydantic==1.10.18] -[pydantic==1.10.20] -[pydantic==1.10.23] -[pydantic==1.10.26] -[pydantic==2.5.2] -[pydantic==2.7.4] -[pydantic==2.9.2] -[pydantic==2.11.4] -[pydantic==2.11.7] -[pydantic==2.11.9] - -[pydantic-core==2.14.5] -python_versions = <3.13 -[pydantic-core==2.18.4] -python_versions = <3.13 -[pydantic-core==2.23.4] -python_versions = <3.14 -[pydantic-core==2.24.2] -python_versions = <3.14 -[pydantic-core==2.33.2] -python_versions = <3.14 +# [pycryptodomex==3.19.1] + +# [pydantic==1.10.2] +# [pydantic==1.10.9] +# [pydantic==1.10.17] +# [pydantic==1.10.18] +# [pydantic==1.10.20] +# [pydantic==1.10.23] +# [pydantic==1.10.26] +# [pydantic==2.5.2] +# [pydantic==2.7.4] +# [pydantic==2.9.2] +# [pydantic==2.11.4] +# [pydantic==2.11.7] +# [pydantic==2.11.9] + +# [pydantic-core==2.14.5] +# python_versions = <3.13 +# [pydantic-core==2.18.4] +# python_versions = <3.13 +# [pydantic-core==2.23.4] +# python_versions = <3.14 +# [pydantic-core==2.24.2] +# python_versions = <3.14 +# [pydantic-core==2.33.2] +# python_versions = <3.14 -[pyelftools==0.28] -[pyelftools==0.29] +# [pyelftools==0.28] +# [pyelftools==0.29] -[pyflakes==2.4.0] -[pyflakes==2.5.0] -[pyflakes==3.0.1] -[pyflakes==3.1.0] -[pyflakes==3.2.0] -[pyflakes==3.3.2] -[pyflakes==3.4.0] +# [pyflakes==2.4.0] +# [pyflakes==2.5.0] +# [pyflakes==3.0.1] +# [pyflakes==3.1.0] +# [pyflakes==3.2.0] +# [pyflakes==3.3.2] +# [pyflakes==3.4.0] -[pygments==2.13.0] -[pygments==2.18.0] -[pygments==2.19.2] +# [pygments==2.13.0] +# [pygments==2.18.0] +# [pygments==2.19.2] -[pyjwt==2.4.0] -[pyjwt==2.10.1] +# [pyjwt==2.4.0] +# [pyjwt==2.10.1] # [pylibmc==1.6.3] # apt_requires = libmemcached-dev # brew_requires = libmemcached -[pymdown-extensions==10.16.1] +# [pymdown-extensions==10.16.1] -[pymemcache==4.0.0] +# [pymemcache==4.0.0] -[pynacl==1.5.0] +# [pynacl==1.5.0] -[pyopenssl==22.0.0] -[pyopenssl==23.0.0] -[pyopenssl==23.2.0] +# [pyopenssl==22.0.0] +# [pyopenssl==23.0.0] +# [pyopenssl==23.2.0] -[pyparsing==3.0.9] -[pyparsing==3.1.2] -[pyparsing==3.1.4] -[pyparsing==3.2.5] +# [pyparsing==3.0.9] +# [pyparsing==3.1.2] +# [pyparsing==3.1.4] +# [pyparsing==3.2.5] -[pyproject-hooks==1.0.0] -[pyproject-hooks==1.2.0] +# [pyproject-hooks==1.0.0] +# [pyproject-hooks==1.2.0] -[pyrsistent==0.18.1] -python_versions = <3.13 -[pyrsistent==0.19.3] -python_versions = <3.13 +# [pyrsistent==0.18.1] +# python_versions = <3.13 +# [pyrsistent==0.19.3] +# python_versions = <3.13 -[pysocks==1.7.1] - -[pytest==6.1.2] -[pytest==7.1.2] -[pytest==7.1.3] -[pytest==7.2.0] -[pytest==7.2.1] -[pytest==7.4.3] -[pytest==8.0.0] -[pytest==8.0.2] -[pytest==8.1.1] -[pytest==8.1.2] -[pytest==8.2.2] -[pytest==8.3.2] -[pytest==8.3.3] - -[pytest-cov==3.0.0] -[pytest-cov==4.0.0] -[pytest-cov==4.1.0] - -[pytest-django==4.4.0] -[pytest-django==4.5.2] -[pytest-django==4.7.0] -[pytest-django==4.8.0] -[pytest-django==4.9.0] - -[pytest-fail-slow==0.3.0] -[pytest-fail-slow==0.4.0] - -[pytest-forked==1.4.0] -[pytest-forked==1.6.0] - -[pytest-insta==0.3.0] - -[pytest-json-report==1.5.0] - -[pytest-localserver==0.7.0] -[pytest-localserver==0.8.1] - -[pytest-metadata==3.1.1] - -[pytest-rerunfailures==9.1.1] -[pytest-rerunfailures==10.2] -[pytest-rerunfailures==11.0] -[pytest-rerunfailures==11.1.1] -[pytest-rerunfailures==13.0] -[pytest-rerunfailures==14.0] -[pytest-rerunfailures==15.0] - -[pytest-sentry==0.1.9] -[pytest-sentry==0.1.10] -[pytest-sentry==0.1.11] -[pytest-sentry==0.1.16] -[pytest-sentry==0.2.0] -[pytest-sentry==0.2.1] -[pytest-sentry==0.3.0rc1] -[pytest-sentry==0.3.0] -[pytest-sentry==0.3.1] -[pytest-sentry==0.3.2] -[pytest-sentry==0.3.3] -[pytest-sentry==0.4.0] -[pytest-sentry==0.4.1] -[pytest-sentry==0.5.0] -[pytest-sentry==0.5.1] - -[pytest-timeout==2.1.0] -[pytest-timeout==2.2.0] - -[pytest-watch==4.2.0] - -[pytest-workaround-12888==1.0.0] - -[pytest-xdist==2.4.0] -[pytest-xdist==2.5.0] -[pytest-xdist==3.0.2] -[pytest-xdist==3.2.0] -[pytest-xdist==3.5.0] - -[python-dateutil==2.8.0] -[python-dateutil==2.8.1] -[python-dateutil==2.8.2] -[python-dateutil==2.9.0] -[python-dateutil==2.9.0.post0] - -[python-editor==1.0.4] - -[python-gnupg==0.4.8] - -[python-hcl2==2.0.3] -[python-hcl2==3.0.5] -[python-hcl2==4.3.4] -[python-hcl2==4.3.5] - -[python-jose==3.3.0] - -[python-memcached==1.59] +# [pysocks==1.7.1] + +# [pytest==6.1.2] +# [pytest==7.1.2] +# [pytest==7.1.3] +# [pytest==7.2.0] +# [pytest==7.2.1] +# [pytest==7.4.3] +# [pytest==8.0.0] +# [pytest==8.0.2] +# [pytest==8.1.1] +# [pytest==8.1.2] +# [pytest==8.2.2] +# [pytest==8.3.2] +# [pytest==8.3.3] + +# [pytest-cov==3.0.0] +# [pytest-cov==4.0.0] +# [pytest-cov==4.1.0] + +# [pytest-django==4.4.0] +# [pytest-django==4.5.2] +# [pytest-django==4.7.0] +# [pytest-django==4.8.0] +# [pytest-django==4.9.0] + +# [pytest-fail-slow==0.3.0] +# [pytest-fail-slow==0.4.0] + +# [pytest-forked==1.4.0] +# [pytest-forked==1.6.0] + +# [pytest-insta==0.3.0] + +# [pytest-json-report==1.5.0] + +# [pytest-localserver==0.7.0] +# [pytest-localserver==0.8.1] + +# [pytest-metadata==3.1.1] + +# [pytest-rerunfailures==9.1.1] +# [pytest-rerunfailures==10.2] +# [pytest-rerunfailures==11.0] +# [pytest-rerunfailures==11.1.1] +# [pytest-rerunfailures==13.0] +# [pytest-rerunfailures==14.0] +# [pytest-rerunfailures==15.0] + +# [pytest-sentry==0.1.9] +# [pytest-sentry==0.1.10] +# [pytest-sentry==0.1.11] +# [pytest-sentry==0.1.16] +# [pytest-sentry==0.2.0] +# [pytest-sentry==0.2.1] +# [pytest-sentry==0.3.0rc1] +# [pytest-sentry==0.3.0] +# [pytest-sentry==0.3.1] +# [pytest-sentry==0.3.2] +# [pytest-sentry==0.3.3] +# [pytest-sentry==0.4.0] +# [pytest-sentry==0.4.1] +# [pytest-sentry==0.5.0] +# [pytest-sentry==0.5.1] + +# [pytest-timeout==2.1.0] +# [pytest-timeout==2.2.0] + +# [pytest-watch==4.2.0] + +# [pytest-workaround-12888==1.0.0] + +# [pytest-xdist==2.4.0] +# [pytest-xdist==2.5.0] +# [pytest-xdist==3.0.2] +# [pytest-xdist==3.2.0] +# [pytest-xdist==3.5.0] + +# [python-dateutil==2.8.0] +# [python-dateutil==2.8.1] +# [python-dateutil==2.8.2] +# [python-dateutil==2.9.0] +# [python-dateutil==2.9.0.post0] + +# [python-editor==1.0.4] + +# [python-gnupg==0.4.8] + +# [python-hcl2==2.0.3] +# [python-hcl2==3.0.5] +# [python-hcl2==4.3.4] +# [python-hcl2==4.3.5] + +# [python-jose==3.3.0] + +# [python-memcached==1.59] # [python-rapidjson==1.4] # [python-rapidjson==1.8] @@ -1753,36 +1753,36 @@ python_versions = <3.13 # [python-rapidjson==1.20] # [python-rapidjson==1.21] -[python-u2flib-server==5.0.0] -[python-u2flib-server==5.0.1] - -[python-utils==3.3.3] -[python-utils==3.8.1] - -[python3-saml==1.14.0] -[python3-saml==1.15.0] - -[pytz==2018.9] -[pytz==2022.1] -[pytz==2022.2] -[pytz==2022.2.1] -[pytz==2023.3] -[pytz==2023.3.post1] - -[pytz-deprecation-shim==0.1.0.post0] - -[pyupgrade==2.37.2] -[pyupgrade==2.37.3] -[pyupgrade==2.38.0] -[pyupgrade==2.38.2] -[pyupgrade==3.1.0] -[pyupgrade==3.2.3] -[pyupgrade==3.3.1] -[pyupgrade==3.7.0] -[pyupgrade==3.13.0] -[pyupgrade==3.15.0] -[pyupgrade==3.17.0] -[pyupgrade==3.19.1] +# [python-u2flib-server==5.0.0] +# [python-u2flib-server==5.0.1] + +# [python-utils==3.3.3] +# [python-utils==3.8.1] + +# [python3-saml==1.14.0] +# [python3-saml==1.15.0] + +# [pytz==2018.9] +# [pytz==2022.1] +# [pytz==2022.2] +# [pytz==2022.2.1] +# [pytz==2023.3] +# [pytz==2023.3.post1] + +# [pytz-deprecation-shim==0.1.0.post0] + +# [pyupgrade==2.37.2] +# [pyupgrade==2.37.3] +# [pyupgrade==2.38.0] +# [pyupgrade==2.38.2] +# [pyupgrade==3.1.0] +# [pyupgrade==3.2.3] +# [pyupgrade==3.3.1] +# [pyupgrade==3.7.0] +# [pyupgrade==3.13.0] +# [pyupgrade==3.15.0] +# [pyupgrade==3.17.0] +# [pyupgrade==3.19.1] [pyuwsgi==2.0.23] python_versions = <3.13 From 2c4260e55416806e03d044c34cb8b0df7a084dc5 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 20:04:46 -0800 Subject: [PATCH 27/66] add python_versions = <3.14 for rpds-py==0.20.0 pyo3 0.22.2 only supports up to Python 3.13. Comment out all packages before rpds-py to speed up CI. Co-Authored-By: Claude Opus 4.6 --- packages.ini | 251 ++++++++++++++++++++++++++------------------------- 1 file changed, 126 insertions(+), 125 deletions(-) diff --git a/packages.ini b/packages.ini index c6f3d8ca..3d622087 100644 --- a/packages.ini +++ b/packages.ini @@ -1784,145 +1784,146 @@ # [pyupgrade==3.17.0] # [pyupgrade==3.19.1] -[pyuwsgi==2.0.23] -python_versions = <3.13 -validate_skip_imports = uwsgidecorators -[pyuwsgi==2.0.23.post0] -python_versions = <3.13 -validate_skip_imports = uwsgidecorators -[pyuwsgi==2.0.26] -python_versions = <3.13 -validate_skip_imports = uwsgidecorators -[pyuwsgi==2.0.27a1] -python_versions = <3.13 -validate_skip_imports = uwsgidecorators +# [pyuwsgi==2.0.23] +# python_versions = <3.13 +# validate_skip_imports = uwsgidecorators +# [pyuwsgi==2.0.23.post0] +# python_versions = <3.13 +# validate_skip_imports = uwsgidecorators +# [pyuwsgi==2.0.26] +# python_versions = <3.13 +# validate_skip_imports = uwsgidecorators +# [pyuwsgi==2.0.27a1] +# python_versions = <3.13 +# validate_skip_imports = uwsgidecorators # [pyuwsgi==2.0.27.post1] # python_versions = <3.14 # validate_skip_imports = uwsgidecorators -[pyuwsgi==2.0.28.post1] -python_versions = <3.14 -validate_skip_imports = uwsgidecorators -[pyuwsgi==2.0.29] -python_versions = <3.14 -validate_skip_imports = uwsgidecorators -[pyuwsgi==2.0.30] -python_versions = <3.14 -validate_skip_imports = uwsgidecorators +# [pyuwsgi==2.0.28.post1] +# python_versions = <3.14 +# validate_skip_imports = uwsgidecorators +# [pyuwsgi==2.0.29] +# python_versions = <3.14 +# validate_skip_imports = uwsgidecorators +# [pyuwsgi==2.0.30] +# python_versions = <3.14 +# validate_skip_imports = uwsgidecorators -[pyvat==1.3.15] -[pyvat==1.3.16] +# [pyvat==1.3.15] +# [pyvat==1.3.16] -[pyyaml==5.4] -apt_requires = libyaml-dev -brew_requires = libyaml -python_versions = <3.12 -[pyyaml==5.4.1] -apt_requires = libyaml-dev -brew_requires = libyaml -python_versions = <3.12 -[pyyaml==6.0] -apt_requires = libyaml-dev -brew_requires = libyaml -python_versions = <3.12 -[pyyaml==6.0.1] -apt_requires = libyaml-dev -brew_requires = libyaml -python_versions = <3.13 -[pyyaml==6.0.2] -apt_requires = libyaml-dev -brew_requires = libyaml -[pyyaml==6.0.3] -apt_requires = libyaml-dev -brew_requires = libyaml +# [pyyaml==5.4] +# apt_requires = libyaml-dev +# brew_requires = libyaml +# python_versions = <3.12 +# [pyyaml==5.4.1] +# apt_requires = libyaml-dev +# brew_requires = libyaml +# python_versions = <3.12 +# [pyyaml==6.0] +# apt_requires = libyaml-dev +# brew_requires = libyaml +# python_versions = <3.12 +# [pyyaml==6.0.1] +# apt_requires = libyaml-dev +# brew_requires = libyaml +# python_versions = <3.13 +# [pyyaml==6.0.2] +# apt_requires = libyaml-dev +# brew_requires = libyaml +# [pyyaml==6.0.3] +# apt_requires = libyaml-dev +# brew_requires = libyaml -[pyyaml-env-tag==1.1] +# [pyyaml-env-tag==1.1] -[pyzmq==24.0.0] -python_versions = <3.12 +# [pyzmq==24.0.0] +# python_versions = <3.12 -[rb==1.9.0] -[rb==1.10.0] +# [rb==1.9.0] +# [rb==1.10.0] -[redis==3.4.1] -[redis==3.5.3] -[redis==4.3.4] -[redis==4.5.4] -[redis==5.0.1] +# [redis==3.4.1] +# [redis==3.5.3] +# [redis==4.3.4] +# [redis==4.5.4] +# [redis==5.0.1] -[redis-py-cluster==2.1.0] -[redis-py-cluster==2.1.3] +# [redis-py-cluster==2.1.0] +# [redis-py-cluster==2.1.3] -[referencing==0.29.3] -[referencing==0.30.0] -[referencing==0.30.2] -[referencing==0.31.0] -[referencing==0.32.0] -[referencing==0.35.1] +# [referencing==0.29.3] +# [referencing==0.30.0] +# [referencing==0.30.2] +# [referencing==0.31.0] +# [referencing==0.32.0] +# [referencing==0.35.1] -[regex==2022.7.25] -[regex==2022.8.17] -[regex==2022.9.13] -[regex==2023.12.25] +# [regex==2022.7.25] +# [regex==2022.8.17] +# [regex==2022.9.13] +# [regex==2023.12.25] -[reportlab==3.6.13] -python_versions = <3.12 -[reportlab==4.0.7] -[reportlab==4.2.5] -[reportlab==4.4.0] -[reportlab==4.4.2] - -[requests==2.25.1] -[requests==2.27.1] -[requests==2.28.1] -[requests==2.28.2] -[requests==2.30.0] -[requests==2.31.0] -[requests==2.32.2] -[requests==2.32.3] -[requests==2.32.4] -[requests==2.32.5] - -[requests-file==2.1.0] - -[requests-oauthlib==1.2.0] -[requests-oauthlib==1.3.1] -[requests-oauthlib==2.0.0] - -[responses==0.21.0] -[responses==0.22.0] -[responses==0.23.1] -[responses==0.23.2] -[responses==0.23.3] -[responses==0.24.0] -[responses==0.24.1] -[responses==0.25.0] -[responses==0.25.2] -[responses==0.25.3] -[responses==0.25.5] -[responses==0.25.6] -[responses==0.25.7] -[responses==0.25.8] -[responses==0.26.0] - -[rfc3339-validator==0.1.2] -[rfc3339-validator==0.1.4] - -[rfc3986==1.5.0] - -[rfc3986-validator==0.1.1] - -[rich==13.8.1] -[rich==14.1.0] - -[roman-numerals==4.1.0] - -[rpds-py==0.9.2] -python_versions = <3.13 -[rpds-py==0.13.1] -python_versions = <3.13 -[rpds-py==0.15.2] -python_versions = <3.13 +# [reportlab==3.6.13] +# python_versions = <3.12 +# [reportlab==4.0.7] +# [reportlab==4.2.5] +# [reportlab==4.4.0] +# [reportlab==4.4.2] + +# [requests==2.25.1] +# [requests==2.27.1] +# [requests==2.28.1] +# [requests==2.28.2] +# [requests==2.30.0] +# [requests==2.31.0] +# [requests==2.32.2] +# [requests==2.32.3] +# [requests==2.32.4] +# [requests==2.32.5] + +# [requests-file==2.1.0] + +# [requests-oauthlib==1.2.0] +# [requests-oauthlib==1.3.1] +# [requests-oauthlib==2.0.0] + +# [responses==0.21.0] +# [responses==0.22.0] +# [responses==0.23.1] +# [responses==0.23.2] +# [responses==0.23.3] +# [responses==0.24.0] +# [responses==0.24.1] +# [responses==0.25.0] +# [responses==0.25.2] +# [responses==0.25.3] +# [responses==0.25.5] +# [responses==0.25.6] +# [responses==0.25.7] +# [responses==0.25.8] +# [responses==0.26.0] + +# [rfc3339-validator==0.1.2] +# [rfc3339-validator==0.1.4] + +# [rfc3986==1.5.0] + +# [rfc3986-validator==0.1.1] + +# [rich==13.8.1] +# [rich==14.1.0] + +# [roman-numerals==4.1.0] + +# [rpds-py==0.9.2] +# python_versions = <3.13 +# [rpds-py==0.13.1] +# python_versions = <3.13 +# [rpds-py==0.15.2] +# python_versions = <3.13 [rpds-py==0.20.0] +python_versions = <3.14 [rq==1.0] From f92f10b2822b6cf2967026875cc1071e0ae16a27 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Mon, 23 Feb 2026 20:12:25 -0800 Subject: [PATCH 28/66] add python_versions = <3.14 for sentry-forked-jsonnet==0.20.0.post4 No sdist available on PyPI for Python 3.14. Comment out all packages before it to speed up CI. Co-Authored-By: Claude Opus 4.6 --- packages.ini | 727 ++++++++++++++++++++++++++------------------------- 1 file changed, 364 insertions(+), 363 deletions(-) diff --git a/packages.ini b/packages.ini index 3d622087..23e5b399 100644 --- a/packages.ini +++ b/packages.ini @@ -1922,372 +1922,373 @@ # python_versions = <3.13 # [rpds-py==0.15.2] # python_versions = <3.13 -[rpds-py==0.20.0] -python_versions = <3.14 +# [rpds-py==0.20.0] +# python_versions = <3.14 -[rq==1.0] - -[rsa==4.8] -[rsa==4.9] -[rsa==4.9.1] - -[ruff==0.14.2] -[ruff==0.14.10] - -[ruyaml==0.91.0] - -[s3transfer==0.5.2] -[s3transfer==0.6.0] -[s3transfer==0.6.1] -[s3transfer==0.10.0] -[s3transfer==0.10.1] - -[selenium==4.3.0] -[selenium==4.4.3] -[selenium==4.11.2] -[selenium==4.16.0] -[selenium==4.34.0] - -[semantic-version==2.10.0] - -[sentry-arroyo==0.0.33] -[sentry-arroyo==1.0.3] -[sentry-arroyo==1.0.4] -[sentry-arroyo==1.0.5] -[sentry-arroyo==1.0.6] -[sentry-arroyo==1.0.7] -[sentry-arroyo==1.1.0] -[sentry-arroyo==1.2.0] -[sentry-arroyo==2.0.0] -[sentry-arroyo==2.1.0] -[sentry-arroyo==2.2.0] -[sentry-arroyo==2.3.0] -[sentry-arroyo==2.3.1] -[sentry-arroyo==2.4.0] -[sentry-arroyo==2.5.0] -[sentry-arroyo==2.5.1] -[sentry-arroyo==2.5.2] -[sentry-arroyo==2.5.3] -[sentry-arroyo==2.6.0] -[sentry-arroyo==2.7.0] -[sentry-arroyo==2.7.1] -[sentry-arroyo==2.8.0] -[sentry-arroyo==2.9.0] -[sentry-arroyo==2.9.1] -[sentry-arroyo==2.10.0] -[sentry-arroyo==2.10.1] -[sentry-arroyo==2.10.2] -[sentry-arroyo==2.10.3] -[sentry-arroyo==2.10.4] -[sentry-arroyo==2.10.5] -[sentry-arroyo==2.10.6] -[sentry-arroyo==2.11.0] -[sentry-arroyo==2.11.1] -[sentry-arroyo==2.11.2] -[sentry-arroyo==2.11.3] -[sentry-arroyo==2.11.4] -[sentry-arroyo==2.11.5] -[sentry-arroyo==2.11.6] -[sentry-arroyo==2.11.7] -[sentry-arroyo==2.12.0] -[sentry-arroyo==2.12.1] -[sentry-arroyo==2.13.0] -[sentry-arroyo==2.14.0] -[sentry-arroyo==2.14.1] -[sentry-arroyo==2.14.2] -[sentry-arroyo==2.14.3] -[sentry-arroyo==2.14.4] -[sentry-arroyo==2.14.5] -[sentry-arroyo==2.14.6] -[sentry-arroyo==2.14.7] -[sentry-arroyo==2.14.8] -[sentry-arroyo==2.14.9] -[sentry-arroyo==2.14.10] -[sentry-arroyo==2.14.11] -[sentry-arroyo==2.14.12] -[sentry-arroyo==2.14.13] -[sentry-arroyo==2.14.14] -[sentry-arroyo==2.14.15] -[sentry-arroyo==2.14.16] -[sentry-arroyo==2.14.17] -[sentry-arroyo==2.14.18] -[sentry-arroyo==2.14.19] -[sentry-arroyo==2.14.20] -[sentry-arroyo==2.14.21] -[sentry-arroyo==2.14.22] -[sentry-arroyo==2.14.23] -[sentry-arroyo==2.14.24] -[sentry-arroyo==2.14.25] -[sentry-arroyo==2.15.0] -[sentry-arroyo==2.15.1] -[sentry-arroyo==2.15.2] -[sentry-arroyo==2.15.3] -[sentry-arroyo==2.16.0] -[sentry-arroyo==2.16.1] -[sentry-arroyo==2.16.2] -[sentry-arroyo==2.16.4] -[sentry-arroyo==2.16.5] -[sentry-arroyo==2.17.0] -[sentry-arroyo==2.17.1] -[sentry-arroyo==2.17.2] -[sentry-arroyo==2.17.3] -[sentry-arroyo==2.17.4] -[sentry-arroyo==2.17.6] -[sentry-arroyo==2.18.0] -[sentry-arroyo==2.18.1] -[sentry-arroyo==2.18.2] -[sentry-arroyo==2.19.0] -[sentry-arroyo==2.19.1] -[sentry-arroyo==2.19.2] -[sentry-arroyo==2.19.3] -[sentry-arroyo==2.19.4] -[sentry-arroyo==2.19.5] -[sentry-arroyo==2.19.6] -[sentry-arroyo==2.19.7] -[sentry-arroyo==2.19.8] -[sentry-arroyo==2.19.9] -[sentry-arroyo==2.19.10] -[sentry-arroyo==2.19.11] -[sentry-arroyo==2.19.12] -[sentry-arroyo==2.20.0] -[sentry-arroyo==2.20.2] -[sentry-arroyo==2.20.3] -[sentry-arroyo==2.20.4] -[sentry-arroyo==2.20.5] -[sentry-arroyo==2.20.6] -[sentry-arroyo==2.20.7] -[sentry-arroyo==2.20.8] -[sentry-arroyo==2.20.9] -[sentry-arroyo==2.20.10] -[sentry-arroyo==2.21.0] -[sentry-arroyo==2.22.0] -[sentry-arroyo==2.23.0] -[sentry-arroyo==2.24.0] -[sentry-arroyo==2.25.0] -[sentry-arroyo==2.26.0] -[sentry-arroyo==2.27.0] -[sentry-arroyo==2.28.0] -[sentry-arroyo==2.28.1] -[sentry-arroyo==2.28.2] -[sentry-arroyo==2.28.3] -[sentry-arroyo==2.28.4] -[sentry-arroyo==2.29.0] -[sentry-arroyo==2.29.1] -[sentry-arroyo==2.29.2] -[sentry-arroyo==2.29.3] -[sentry-arroyo==2.29.4] -[sentry-arroyo==2.29.5] -[sentry-arroyo==2.29.6] -[sentry-arroyo==2.29.7] -[sentry-arroyo==2.30.0] -[sentry-arroyo==2.31.0] -[sentry-arroyo==2.31.1] -[sentry-arroyo==2.31.2] -[sentry-arroyo==2.32.0] -[sentry-arroyo==2.32.1] -[sentry-arroyo==2.32.2] -[sentry-arroyo==2.32.3] -[sentry-arroyo==2.32.4] -[sentry-arroyo==2.32.5] -[sentry-arroyo==2.33.0] -[sentry-arroyo==2.33.1] -[sentry-arroyo==2.34.0] -[sentry-arroyo==2.35.0] -[sentry-arroyo==2.36.0] -[sentry-arroyo==2.37.0] -[sentry-arroyo==2.37.1] -[sentry-arroyo==2.38.0] -[sentry-arroyo==2.38.1] - -[sentry-cli==2.14.3] -[sentry-cli==2.14.4] -[sentry-cli==2.15.0] -[sentry-cli==2.15.2] -[sentry-cli==2.16.0] -[sentry-cli==2.17.0] -[sentry-cli==2.17.1] -[sentry-cli==2.17.2] -[sentry-cli==2.17.3] -[sentry-cli==2.17.4] -[sentry-cli==2.17.5] -[sentry-cli==2.18.0] -[sentry-cli==2.18.1] -[sentry-cli==2.19.1] -[sentry-cli==2.19.2] -[sentry-cli==2.19.4] -[sentry-cli==2.20.0] -[sentry-cli==2.20.1] -[sentry-cli==2.20.3] -[sentry-cli==2.20.4] -[sentry-cli==2.20.5] -[sentry-cli==2.20.7] -[sentry-cli==2.30.2] -[sentry-cli==2.30.5] -[sentry-cli==2.31.0] -[sentry-cli==2.31.1] -[sentry-cli==2.31.2] -[sentry-cli==2.32.0] -[sentry-cli==2.32.1] -[sentry-cli==2.32.2] -[sentry-cli==2.33.0] -[sentry-cli==2.33.1] -[sentry-cli==2.34.1] -[sentry-cli==2.35.0] -[sentry-cli==2.36.1] -[sentry-cli==2.36.2] -[sentry-cli==2.36.5] -[sentry-cli==2.36.6] -[sentry-cli==2.37.0] -[sentry-cli==2.38.0] -[sentry-cli==2.38.1] -[sentry-cli==2.38.2] -[sentry-cli==2.39.0] -[sentry-cli==2.39.1] -[sentry-cli==2.40.0] -[sentry-cli==2.41.0] -[sentry-cli==2.41.1] -[sentry-cli==2.42.0] -[sentry-cli==2.42.1] -[sentry-cli==2.42.2] -[sentry-cli==2.42.3] -[sentry-cli==2.42.4] -[sentry-cli==2.42.5a0] -[sentry-cli==2.42.5] -[sentry-cli==2.43.0] -[sentry-cli==2.43.1] -[sentry-cli==2.44.0] -[sentry-cli==2.45.0] -[sentry-cli==2.46.0a0] -[sentry-cli==2.46.0] -[sentry-cli==2.47.0] -[sentry-cli==2.47.1] -[sentry-cli==2.50.0] -[sentry-cli==2.50.2] -[sentry-cli==2.57.0] -[sentry-cli==2.58.1] -[sentry-cli==2.58.2] -[sentry-cli==2.58.3a0] -[sentry-cli==2.58.4] -[sentry-cli==3.0.1] -[sentry-cli==3.1.0] -[sentry-cli==3.2.0] - -[sentry-conventions==0.1.1] -[sentry-conventions==0.2.0] -[sentry-conventions==0.2.1] -[sentry-conventions==0.3.0] -[sentry-conventions==0.3.1] -[sentry-conventions==0.4.0] - -[sentry-covdefaults-disable-branch-coverage==1.0.2] - -[sentry-devenv==1.1.1] -[sentry-devenv==1.1.2] -[sentry-devenv==1.1.3] -[sentry-devenv==1.1.4] -[sentry-devenv==1.1.5] -[sentry-devenv==1.2.0] -[sentry-devenv==1.2.1] -[sentry-devenv==1.2.2] -[sentry-devenv==1.2.3] -[sentry-devenv==1.4.0] -[sentry-devenv==1.5.0] -[sentry-devenv==1.6.0] -[sentry-devenv==1.6.1] -[sentry-devenv==1.6.2] -[sentry-devenv==1.7.0] -[sentry-devenv==1.8.0] -[sentry-devenv==1.9.0] -[sentry-devenv==1.10.0] -[sentry-devenv==1.10.1] -[sentry-devenv==1.10.2] -[sentry-devenv==1.10.3] -[sentry-devenv==1.11.0] -[sentry-devenv==1.12.0] -[sentry-devenv==1.13.0] -[sentry-devenv==1.14.0] -[sentry-devenv==1.14.1] -[sentry-devenv==1.14.2] -[sentry-devenv==1.14.3] -[sentry-devenv==1.14.4] -[sentry-devenv==1.14.5] -[sentry-devenv==1.15.0] -[sentry-devenv==1.16.0] -[sentry-devenv==1.17.0] -[sentry-devenv==1.18.0] -[sentry-devenv==1.19.0] -[sentry-devenv==1.20.0] -[sentry-devenv==1.21.0] -[sentry-devenv==1.22.0] -[sentry-devenv==1.22.1] -[sentry-devenv==1.22.2] -[sentry-devenv==1.23.0] -[sentry-devenv==1.24.0] -[sentry-devenv==1.25.0] -[sentry-devenv==1.26.0] -[sentry-devenv==1.26.1] -[sentry-devenv==1.27.0] -[sentry-devenv==1.28.0] - -[sentry-forked-django-stubs==4.2.6.post1] -[sentry-forked-django-stubs==4.2.6.post2] -[sentry-forked-django-stubs==4.2.6.post3] -[sentry-forked-django-stubs==4.2.7.post1] -[sentry-forked-django-stubs==4.2.7.post2] -[sentry-forked-django-stubs==4.2.7.post3] -[sentry-forked-django-stubs==5.0.0.post1] -[sentry-forked-django-stubs==5.0.0.post2] -[sentry-forked-django-stubs==5.0.0.post3] -[sentry-forked-django-stubs==5.0.2.post1] -[sentry-forked-django-stubs==5.0.2.post2] -[sentry-forked-django-stubs==5.0.2.post3] -[sentry-forked-django-stubs==5.0.2.post4] -[sentry-forked-django-stubs==5.0.2.post5] -[sentry-forked-django-stubs==5.0.2.post6] -[sentry-forked-django-stubs==5.0.2.post7] -[sentry-forked-django-stubs==5.0.2.post8] -[sentry-forked-django-stubs==5.0.2.post9] -[sentry-forked-django-stubs==5.0.2.post10] -[sentry-forked-django-stubs==5.0.4.post1] -[sentry-forked-django-stubs==5.0.4.post2] -[sentry-forked-django-stubs==5.1.0.post1] -[sentry-forked-django-stubs==5.1.0.post2] -[sentry-forked-django-stubs==5.1.0.post3] -[sentry-forked-django-stubs==5.1.1.post1] -[sentry-forked-django-stubs==5.1.2.post1] -[sentry-forked-django-stubs==5.1.3.post2] -[sentry-forked-django-stubs==5.1.3.post3] -[sentry-forked-django-stubs==5.2.0.post1] -[sentry-forked-django-stubs==5.2.0.post2] -[sentry-forked-django-stubs==5.2.0.post3] -[sentry-forked-django-stubs==5.2.0.post4] -[sentry-forked-django-stubs==5.2.1.post1] -[sentry-forked-django-stubs==5.2.1.post2] -[sentry-forked-django-stubs==5.2.1.post3] -[sentry-forked-django-stubs==5.2.2.post1] -[sentry-forked-django-stubs==5.2.2.post2] -[sentry-forked-django-stubs==5.2.4.post1] -[sentry-forked-django-stubs==5.2.5.post1] -[sentry-forked-django-stubs==5.2.5.post2] -[sentry-forked-django-stubs==5.2.5.post3] - -[sentry-forked-djangorestframework-stubs==3.14.4.post1] -[sentry-forked-djangorestframework-stubs==3.14.4.post2] -[sentry-forked-djangorestframework-stubs==3.14.5.post1] -[sentry-forked-djangorestframework-stubs==3.15.0.post1] -[sentry-forked-djangorestframework-stubs==3.15.1.post1] -[sentry-forked-djangorestframework-stubs==3.15.1.post2] -[sentry-forked-djangorestframework-stubs==3.15.2.post1] -[sentry-forked-djangorestframework-stubs==3.15.2.post2] -[sentry-forked-djangorestframework-stubs==3.15.3.post1] -[sentry-forked-djangorestframework-stubs==3.16.0.post1] -[sentry-forked-djangorestframework-stubs==3.16.1.post1] -[sentry-forked-djangorestframework-stubs==3.16.2.post1] -[sentry-forked-djangorestframework-stubs==3.16.3.post1] - -[sentry-forked-email-reply-parser==0.5.12.post1] +# [rq==1.0] + +# [rsa==4.8] +# [rsa==4.9] +# [rsa==4.9.1] + +# [ruff==0.14.2] +# [ruff==0.14.10] + +# [ruyaml==0.91.0] + +# [s3transfer==0.5.2] +# [s3transfer==0.6.0] +# [s3transfer==0.6.1] +# [s3transfer==0.10.0] +# [s3transfer==0.10.1] + +# [selenium==4.3.0] +# [selenium==4.4.3] +# [selenium==4.11.2] +# [selenium==4.16.0] +# [selenium==4.34.0] + +# [semantic-version==2.10.0] + +# [sentry-arroyo==0.0.33] +# [sentry-arroyo==1.0.3] +# [sentry-arroyo==1.0.4] +# [sentry-arroyo==1.0.5] +# [sentry-arroyo==1.0.6] +# [sentry-arroyo==1.0.7] +# [sentry-arroyo==1.1.0] +# [sentry-arroyo==1.2.0] +# [sentry-arroyo==2.0.0] +# [sentry-arroyo==2.1.0] +# [sentry-arroyo==2.2.0] +# [sentry-arroyo==2.3.0] +# [sentry-arroyo==2.3.1] +# [sentry-arroyo==2.4.0] +# [sentry-arroyo==2.5.0] +# [sentry-arroyo==2.5.1] +# [sentry-arroyo==2.5.2] +# [sentry-arroyo==2.5.3] +# [sentry-arroyo==2.6.0] +# [sentry-arroyo==2.7.0] +# [sentry-arroyo==2.7.1] +# [sentry-arroyo==2.8.0] +# [sentry-arroyo==2.9.0] +# [sentry-arroyo==2.9.1] +# [sentry-arroyo==2.10.0] +# [sentry-arroyo==2.10.1] +# [sentry-arroyo==2.10.2] +# [sentry-arroyo==2.10.3] +# [sentry-arroyo==2.10.4] +# [sentry-arroyo==2.10.5] +# [sentry-arroyo==2.10.6] +# [sentry-arroyo==2.11.0] +# [sentry-arroyo==2.11.1] +# [sentry-arroyo==2.11.2] +# [sentry-arroyo==2.11.3] +# [sentry-arroyo==2.11.4] +# [sentry-arroyo==2.11.5] +# [sentry-arroyo==2.11.6] +# [sentry-arroyo==2.11.7] +# [sentry-arroyo==2.12.0] +# [sentry-arroyo==2.12.1] +# [sentry-arroyo==2.13.0] +# [sentry-arroyo==2.14.0] +# [sentry-arroyo==2.14.1] +# [sentry-arroyo==2.14.2] +# [sentry-arroyo==2.14.3] +# [sentry-arroyo==2.14.4] +# [sentry-arroyo==2.14.5] +# [sentry-arroyo==2.14.6] +# [sentry-arroyo==2.14.7] +# [sentry-arroyo==2.14.8] +# [sentry-arroyo==2.14.9] +# [sentry-arroyo==2.14.10] +# [sentry-arroyo==2.14.11] +# [sentry-arroyo==2.14.12] +# [sentry-arroyo==2.14.13] +# [sentry-arroyo==2.14.14] +# [sentry-arroyo==2.14.15] +# [sentry-arroyo==2.14.16] +# [sentry-arroyo==2.14.17] +# [sentry-arroyo==2.14.18] +# [sentry-arroyo==2.14.19] +# [sentry-arroyo==2.14.20] +# [sentry-arroyo==2.14.21] +# [sentry-arroyo==2.14.22] +# [sentry-arroyo==2.14.23] +# [sentry-arroyo==2.14.24] +# [sentry-arroyo==2.14.25] +# [sentry-arroyo==2.15.0] +# [sentry-arroyo==2.15.1] +# [sentry-arroyo==2.15.2] +# [sentry-arroyo==2.15.3] +# [sentry-arroyo==2.16.0] +# [sentry-arroyo==2.16.1] +# [sentry-arroyo==2.16.2] +# [sentry-arroyo==2.16.4] +# [sentry-arroyo==2.16.5] +# [sentry-arroyo==2.17.0] +# [sentry-arroyo==2.17.1] +# [sentry-arroyo==2.17.2] +# [sentry-arroyo==2.17.3] +# [sentry-arroyo==2.17.4] +# [sentry-arroyo==2.17.6] +# [sentry-arroyo==2.18.0] +# [sentry-arroyo==2.18.1] +# [sentry-arroyo==2.18.2] +# [sentry-arroyo==2.19.0] +# [sentry-arroyo==2.19.1] +# [sentry-arroyo==2.19.2] +# [sentry-arroyo==2.19.3] +# [sentry-arroyo==2.19.4] +# [sentry-arroyo==2.19.5] +# [sentry-arroyo==2.19.6] +# [sentry-arroyo==2.19.7] +# [sentry-arroyo==2.19.8] +# [sentry-arroyo==2.19.9] +# [sentry-arroyo==2.19.10] +# [sentry-arroyo==2.19.11] +# [sentry-arroyo==2.19.12] +# [sentry-arroyo==2.20.0] +# [sentry-arroyo==2.20.2] +# [sentry-arroyo==2.20.3] +# [sentry-arroyo==2.20.4] +# [sentry-arroyo==2.20.5] +# [sentry-arroyo==2.20.6] +# [sentry-arroyo==2.20.7] +# [sentry-arroyo==2.20.8] +# [sentry-arroyo==2.20.9] +# [sentry-arroyo==2.20.10] +# [sentry-arroyo==2.21.0] +# [sentry-arroyo==2.22.0] +# [sentry-arroyo==2.23.0] +# [sentry-arroyo==2.24.0] +# [sentry-arroyo==2.25.0] +# [sentry-arroyo==2.26.0] +# [sentry-arroyo==2.27.0] +# [sentry-arroyo==2.28.0] +# [sentry-arroyo==2.28.1] +# [sentry-arroyo==2.28.2] +# [sentry-arroyo==2.28.3] +# [sentry-arroyo==2.28.4] +# [sentry-arroyo==2.29.0] +# [sentry-arroyo==2.29.1] +# [sentry-arroyo==2.29.2] +# [sentry-arroyo==2.29.3] +# [sentry-arroyo==2.29.4] +# [sentry-arroyo==2.29.5] +# [sentry-arroyo==2.29.6] +# [sentry-arroyo==2.29.7] +# [sentry-arroyo==2.30.0] +# [sentry-arroyo==2.31.0] +# [sentry-arroyo==2.31.1] +# [sentry-arroyo==2.31.2] +# [sentry-arroyo==2.32.0] +# [sentry-arroyo==2.32.1] +# [sentry-arroyo==2.32.2] +# [sentry-arroyo==2.32.3] +# [sentry-arroyo==2.32.4] +# [sentry-arroyo==2.32.5] +# [sentry-arroyo==2.33.0] +# [sentry-arroyo==2.33.1] +# [sentry-arroyo==2.34.0] +# [sentry-arroyo==2.35.0] +# [sentry-arroyo==2.36.0] +# [sentry-arroyo==2.37.0] +# [sentry-arroyo==2.37.1] +# [sentry-arroyo==2.38.0] +# [sentry-arroyo==2.38.1] + +# [sentry-cli==2.14.3] +# [sentry-cli==2.14.4] +# [sentry-cli==2.15.0] +# [sentry-cli==2.15.2] +# [sentry-cli==2.16.0] +# [sentry-cli==2.17.0] +# [sentry-cli==2.17.1] +# [sentry-cli==2.17.2] +# [sentry-cli==2.17.3] +# [sentry-cli==2.17.4] +# [sentry-cli==2.17.5] +# [sentry-cli==2.18.0] +# [sentry-cli==2.18.1] +# [sentry-cli==2.19.1] +# [sentry-cli==2.19.2] +# [sentry-cli==2.19.4] +# [sentry-cli==2.20.0] +# [sentry-cli==2.20.1] +# [sentry-cli==2.20.3] +# [sentry-cli==2.20.4] +# [sentry-cli==2.20.5] +# [sentry-cli==2.20.7] +# [sentry-cli==2.30.2] +# [sentry-cli==2.30.5] +# [sentry-cli==2.31.0] +# [sentry-cli==2.31.1] +# [sentry-cli==2.31.2] +# [sentry-cli==2.32.0] +# [sentry-cli==2.32.1] +# [sentry-cli==2.32.2] +# [sentry-cli==2.33.0] +# [sentry-cli==2.33.1] +# [sentry-cli==2.34.1] +# [sentry-cli==2.35.0] +# [sentry-cli==2.36.1] +# [sentry-cli==2.36.2] +# [sentry-cli==2.36.5] +# [sentry-cli==2.36.6] +# [sentry-cli==2.37.0] +# [sentry-cli==2.38.0] +# [sentry-cli==2.38.1] +# [sentry-cli==2.38.2] +# [sentry-cli==2.39.0] +# [sentry-cli==2.39.1] +# [sentry-cli==2.40.0] +# [sentry-cli==2.41.0] +# [sentry-cli==2.41.1] +# [sentry-cli==2.42.0] +# [sentry-cli==2.42.1] +# [sentry-cli==2.42.2] +# [sentry-cli==2.42.3] +# [sentry-cli==2.42.4] +# [sentry-cli==2.42.5a0] +# [sentry-cli==2.42.5] +# [sentry-cli==2.43.0] +# [sentry-cli==2.43.1] +# [sentry-cli==2.44.0] +# [sentry-cli==2.45.0] +# [sentry-cli==2.46.0a0] +# [sentry-cli==2.46.0] +# [sentry-cli==2.47.0] +# [sentry-cli==2.47.1] +# [sentry-cli==2.50.0] +# [sentry-cli==2.50.2] +# [sentry-cli==2.57.0] +# [sentry-cli==2.58.1] +# [sentry-cli==2.58.2] +# [sentry-cli==2.58.3a0] +# [sentry-cli==2.58.4] +# [sentry-cli==3.0.1] +# [sentry-cli==3.1.0] +# [sentry-cli==3.2.0] + +# [sentry-conventions==0.1.1] +# [sentry-conventions==0.2.0] +# [sentry-conventions==0.2.1] +# [sentry-conventions==0.3.0] +# [sentry-conventions==0.3.1] +# [sentry-conventions==0.4.0] + +# [sentry-covdefaults-disable-branch-coverage==1.0.2] + +# [sentry-devenv==1.1.1] +# [sentry-devenv==1.1.2] +# [sentry-devenv==1.1.3] +# [sentry-devenv==1.1.4] +# [sentry-devenv==1.1.5] +# [sentry-devenv==1.2.0] +# [sentry-devenv==1.2.1] +# [sentry-devenv==1.2.2] +# [sentry-devenv==1.2.3] +# [sentry-devenv==1.4.0] +# [sentry-devenv==1.5.0] +# [sentry-devenv==1.6.0] +# [sentry-devenv==1.6.1] +# [sentry-devenv==1.6.2] +# [sentry-devenv==1.7.0] +# [sentry-devenv==1.8.0] +# [sentry-devenv==1.9.0] +# [sentry-devenv==1.10.0] +# [sentry-devenv==1.10.1] +# [sentry-devenv==1.10.2] +# [sentry-devenv==1.10.3] +# [sentry-devenv==1.11.0] +# [sentry-devenv==1.12.0] +# [sentry-devenv==1.13.0] +# [sentry-devenv==1.14.0] +# [sentry-devenv==1.14.1] +# [sentry-devenv==1.14.2] +# [sentry-devenv==1.14.3] +# [sentry-devenv==1.14.4] +# [sentry-devenv==1.14.5] +# [sentry-devenv==1.15.0] +# [sentry-devenv==1.16.0] +# [sentry-devenv==1.17.0] +# [sentry-devenv==1.18.0] +# [sentry-devenv==1.19.0] +# [sentry-devenv==1.20.0] +# [sentry-devenv==1.21.0] +# [sentry-devenv==1.22.0] +# [sentry-devenv==1.22.1] +# [sentry-devenv==1.22.2] +# [sentry-devenv==1.23.0] +# [sentry-devenv==1.24.0] +# [sentry-devenv==1.25.0] +# [sentry-devenv==1.26.0] +# [sentry-devenv==1.26.1] +# [sentry-devenv==1.27.0] +# [sentry-devenv==1.28.0] + +# [sentry-forked-django-stubs==4.2.6.post1] +# [sentry-forked-django-stubs==4.2.6.post2] +# [sentry-forked-django-stubs==4.2.6.post3] +# [sentry-forked-django-stubs==4.2.7.post1] +# [sentry-forked-django-stubs==4.2.7.post2] +# [sentry-forked-django-stubs==4.2.7.post3] +# [sentry-forked-django-stubs==5.0.0.post1] +# [sentry-forked-django-stubs==5.0.0.post2] +# [sentry-forked-django-stubs==5.0.0.post3] +# [sentry-forked-django-stubs==5.0.2.post1] +# [sentry-forked-django-stubs==5.0.2.post2] +# [sentry-forked-django-stubs==5.0.2.post3] +# [sentry-forked-django-stubs==5.0.2.post4] +# [sentry-forked-django-stubs==5.0.2.post5] +# [sentry-forked-django-stubs==5.0.2.post6] +# [sentry-forked-django-stubs==5.0.2.post7] +# [sentry-forked-django-stubs==5.0.2.post8] +# [sentry-forked-django-stubs==5.0.2.post9] +# [sentry-forked-django-stubs==5.0.2.post10] +# [sentry-forked-django-stubs==5.0.4.post1] +# [sentry-forked-django-stubs==5.0.4.post2] +# [sentry-forked-django-stubs==5.1.0.post1] +# [sentry-forked-django-stubs==5.1.0.post2] +# [sentry-forked-django-stubs==5.1.0.post3] +# [sentry-forked-django-stubs==5.1.1.post1] +# [sentry-forked-django-stubs==5.1.2.post1] +# [sentry-forked-django-stubs==5.1.3.post2] +# [sentry-forked-django-stubs==5.1.3.post3] +# [sentry-forked-django-stubs==5.2.0.post1] +# [sentry-forked-django-stubs==5.2.0.post2] +# [sentry-forked-django-stubs==5.2.0.post3] +# [sentry-forked-django-stubs==5.2.0.post4] +# [sentry-forked-django-stubs==5.2.1.post1] +# [sentry-forked-django-stubs==5.2.1.post2] +# [sentry-forked-django-stubs==5.2.1.post3] +# [sentry-forked-django-stubs==5.2.2.post1] +# [sentry-forked-django-stubs==5.2.2.post2] +# [sentry-forked-django-stubs==5.2.4.post1] +# [sentry-forked-django-stubs==5.2.5.post1] +# [sentry-forked-django-stubs==5.2.5.post2] +# [sentry-forked-django-stubs==5.2.5.post3] + +# [sentry-forked-djangorestframework-stubs==3.14.4.post1] +# [sentry-forked-djangorestframework-stubs==3.14.4.post2] +# [sentry-forked-djangorestframework-stubs==3.14.5.post1] +# [sentry-forked-djangorestframework-stubs==3.15.0.post1] +# [sentry-forked-djangorestframework-stubs==3.15.1.post1] +# [sentry-forked-djangorestframework-stubs==3.15.1.post2] +# [sentry-forked-djangorestframework-stubs==3.15.2.post1] +# [sentry-forked-djangorestframework-stubs==3.15.2.post2] +# [sentry-forked-djangorestframework-stubs==3.15.3.post1] +# [sentry-forked-djangorestframework-stubs==3.16.0.post1] +# [sentry-forked-djangorestframework-stubs==3.16.1.post1] +# [sentry-forked-djangorestframework-stubs==3.16.2.post1] +# [sentry-forked-djangorestframework-stubs==3.16.3.post1] + +# [sentry-forked-email-reply-parser==0.5.12.post1] [sentry-forked-jsonnet==0.20.0.post4] +python_versions = <3.14 [sentry-infra-event-notifier==0.0.3] [sentry-infra-event-notifier==0.0.4] From 0a8b8c41ba67b98437b18c4904dfbf79fe15ba6f Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 09:25:58 -0800 Subject: [PATCH 29/66] add python_versions = <3.14 for all sentry-streams and sentry-streams-k8s All versions use pyo3 0.24.x which only supports up to Python 3.13. Comment out all packages before sentry-streams to speed up CI. Co-Authored-By: Claude Opus 4.6 --- packages.ini | 1506 +++++++++++++++++++++++++------------------------- 1 file changed, 766 insertions(+), 740 deletions(-) diff --git a/packages.ini b/packages.ini index 23e5b399..5b0e37e8 100644 --- a/packages.ini +++ b/packages.ini @@ -2287,775 +2287,801 @@ # [sentry-forked-email-reply-parser==0.5.12.post1] -[sentry-forked-jsonnet==0.20.0.post4] -python_versions = <3.14 +# [sentry-forked-jsonnet==0.20.0.post4] +# python_versions = <3.14 -[sentry-infra-event-notifier==0.0.3] -[sentry-infra-event-notifier==0.0.4] -[sentry-infra-event-notifier==0.0.5] -[sentry-infra-event-notifier==0.0.6] -[sentry-infra-event-notifier==0.0.7] -[sentry-infra-event-notifier==0.0.8] -[sentry-infra-event-notifier==0.0.9] -[sentry-infra-event-notifier==0.0.10] - -[sentry-infra-tools==0.0.6] -[sentry-infra-tools==0.0.7] -[sentry-infra-tools==0.0.8] -[sentry-infra-tools==0.0.9] -[sentry-infra-tools==0.0.10] -[sentry-infra-tools==0.0.11] -[sentry-infra-tools==0.0.12] -[sentry-infra-tools==0.0.13] -[sentry-infra-tools==0.0.16] -[sentry-infra-tools==0.0.17] -[sentry-infra-tools==0.0.18] -[sentry-infra-tools==0.0.19] -[sentry-infra-tools==0.0.20] -[sentry-infra-tools==0.0.21] -[sentry-infra-tools==0.0.22] -[sentry-infra-tools==0.0.23] -[sentry-infra-tools==0.0.24] -[sentry-infra-tools==0.0.25] -[sentry-infra-tools==0.0.26] -[sentry-infra-tools==0.0.27] -[sentry-infra-tools==0.0.28] -[sentry-infra-tools==0.0.29] -[sentry-infra-tools==0.0.30] -[sentry-infra-tools==0.0.31] -[sentry-infra-tools==0.0.32] -[sentry-infra-tools==0.0.33] -[sentry-infra-tools==0.0.34] -[sentry-infra-tools==0.0.35] -[sentry-infra-tools==0.0.36] -[sentry-infra-tools==0.0.37] -[sentry-infra-tools==1.0.0] -[sentry-infra-tools==1.1.0] -[sentry-infra-tools==1.1.1] -[sentry-infra-tools==1.1.2] -[sentry-infra-tools==1.1.3] -[sentry-infra-tools==1.2.0] -[sentry-infra-tools==1.2.1] -[sentry-infra-tools==1.2.2] -[sentry-infra-tools==1.2.3] -[sentry-infra-tools==1.3.0] -[sentry-infra-tools==1.3.1] -[sentry-infra-tools==1.3.2] -[sentry-infra-tools==1.4.0] -[sentry-infra-tools==1.5.0] -[sentry-infra-tools==1.6.0] -[sentry-infra-tools==1.7.0] -[sentry-infra-tools==1.8.0] -[sentry-infra-tools==1.8.1] -[sentry-infra-tools==1.9.0] -[sentry-infra-tools==1.9.1] -[sentry-infra-tools==1.10.0] -[sentry-infra-tools==1.11.0] -[sentry-infra-tools==1.11.1] -[sentry-infra-tools==1.12.0] -[sentry-infra-tools==1.13.0] -[sentry-infra-tools==1.14.0] -[sentry-infra-tools==1.14.1] -[sentry-infra-tools==1.15.0] -[sentry-infra-tools==1.15.1] -[sentry-infra-tools==1.15.2] -[sentry-infra-tools==1.15.3] -[sentry-infra-tools==1.15.4] -[sentry-infra-tools==1.15.5] -[sentry-infra-tools==1.15.6] -[sentry-infra-tools==1.15.7] -[sentry-infra-tools==1.15.8] -[sentry-infra-tools==1.15.9] -[sentry-infra-tools==1.15.10] -[sentry-infra-tools==1.16.0] -[sentry-infra-tools==1.16.1] -[sentry-infra-tools==1.16.2] -[sentry-infra-tools==1.17.0] -[sentry-infra-tools==1.17.1] -[sentry-infra-tools==1.17.2] -[sentry-infra-tools==1.17.3] -[sentry-infra-tools==1.17.4] -[sentry-infra-tools==1.18.0] -[sentry-infra-tools==1.19.0] -[sentry-infra-tools==1.20.0] -[sentry-infra-tools==1.20.1] -[sentry-infra-tools==1.20.2] -[sentry-infra-tools==1.20.3] -[sentry-infra-tools==1.21.0] -[sentry-infra-tools==1.22.0] -[sentry-infra-tools==1.23.0] -[sentry-infra-tools==1.24.0] -[sentry-infra-tools==1.25.0] -[sentry-infra-tools==1.25.1] -[sentry-infra-tools==1.25.2] -[sentry-infra-tools==1.25.3] -[sentry-infra-tools==1.25.4] -[sentry-infra-tools==1.25.5] - -[sentry-jsonish==0.0.1] -[sentry-jsonish==0.0.2] - -[sentry-jsonnet==0.0.4] -[sentry-jsonnet==0.0.5] - -[sentry-k8s-libsonnet==0.0.1] -[sentry-k8s-libsonnet==0.0.2] -[sentry-k8s-libsonnet==0.0.4] - -[sentry-kafka-management==0.0.3] -[sentry-kafka-management==0.0.4] -[sentry-kafka-management==0.0.5] -[sentry-kafka-management==0.0.6] -[sentry-kafka-management==0.0.7] -[sentry-kafka-management==0.0.8] -[sentry-kafka-management==0.0.9] -[sentry-kafka-management==0.0.10] -[sentry-kafka-management==0.0.11] -[sentry-kafka-management==0.0.12] -[sentry-kafka-management==0.0.13] -[sentry-kafka-management==0.0.14] -[sentry-kafka-management==0.0.15] -[sentry-kafka-management==0.0.16] -[sentry-kafka-management==0.1.0] -[sentry-kafka-management==0.1.1] -[sentry-kafka-management==0.1.2] -[sentry-kafka-management==0.1.3] -[sentry-kafka-management==0.1.5] -[sentry-kafka-management==0.1.6] -[sentry-kafka-management==0.1.7] - -[sentry-kafka-schemas==0.0.1] -[sentry-kafka-schemas==0.0.2] -[sentry-kafka-schemas==0.0.3] -[sentry-kafka-schemas==0.0.4] -[sentry-kafka-schemas==0.0.5] -[sentry-kafka-schemas==0.0.6] -[sentry-kafka-schemas==0.0.7] -[sentry-kafka-schemas==0.0.8] -[sentry-kafka-schemas==0.0.9] -[sentry-kafka-schemas==0.0.10] -[sentry-kafka-schemas==0.0.11] -[sentry-kafka-schemas==0.0.12] -[sentry-kafka-schemas==0.0.13] -[sentry-kafka-schemas==0.0.14] -[sentry-kafka-schemas==0.0.15] -[sentry-kafka-schemas==0.0.16] -[sentry-kafka-schemas==0.0.17] -[sentry-kafka-schemas==0.0.18] -[sentry-kafka-schemas==0.0.19] -[sentry-kafka-schemas==0.0.20] -[sentry-kafka-schemas==0.0.21] -[sentry-kafka-schemas==0.0.22] -[sentry-kafka-schemas==0.0.23] -[sentry-kafka-schemas==0.0.24] -[sentry-kafka-schemas==0.0.25] -[sentry-kafka-schemas==0.0.26] -[sentry-kafka-schemas==0.0.27] -[sentry-kafka-schemas==0.0.28] -[sentry-kafka-schemas==0.0.29] -[sentry-kafka-schemas==0.0.31] -[sentry-kafka-schemas==0.0.32] -[sentry-kafka-schemas==0.0.33] -[sentry-kafka-schemas==0.1.2] -[sentry-kafka-schemas==0.1.3] -[sentry-kafka-schemas==0.1.4] -[sentry-kafka-schemas==0.1.5] -[sentry-kafka-schemas==0.1.6] -[sentry-kafka-schemas==0.1.7] -[sentry-kafka-schemas==0.1.8] -[sentry-kafka-schemas==0.1.9] -[sentry-kafka-schemas==0.1.10] -[sentry-kafka-schemas==0.1.11] -[sentry-kafka-schemas==0.1.12] -[sentry-kafka-schemas==0.1.13] -[sentry-kafka-schemas==0.1.14] -[sentry-kafka-schemas==0.1.15] -[sentry-kafka-schemas==0.1.16] -[sentry-kafka-schemas==0.1.17] -[sentry-kafka-schemas==0.1.18] -[sentry-kafka-schemas==0.1.19] -[sentry-kafka-schemas==0.1.21] -[sentry-kafka-schemas==0.1.22] -[sentry-kafka-schemas==0.1.23] -[sentry-kafka-schemas==0.1.24] -[sentry-kafka-schemas==0.1.25] -[sentry-kafka-schemas==0.1.26] -[sentry-kafka-schemas==0.1.27] -[sentry-kafka-schemas==0.1.28] -[sentry-kafka-schemas==0.1.29] -[sentry-kafka-schemas==0.1.30] -[sentry-kafka-schemas==0.1.31] -[sentry-kafka-schemas==0.1.32] -[sentry-kafka-schemas==0.1.33] -[sentry-kafka-schemas==0.1.34] -[sentry-kafka-schemas==0.1.35] -[sentry-kafka-schemas==0.1.36] -[sentry-kafka-schemas==0.1.37] -[sentry-kafka-schemas==0.1.38] -[sentry-kafka-schemas==0.1.39] -[sentry-kafka-schemas==0.1.40] -[sentry-kafka-schemas==0.1.41] -[sentry-kafka-schemas==0.1.42] -[sentry-kafka-schemas==0.1.43] -[sentry-kafka-schemas==0.1.44] -[sentry-kafka-schemas==0.1.45] -[sentry-kafka-schemas==0.1.46] -[sentry-kafka-schemas==0.1.47] -[sentry-kafka-schemas==0.1.48] -[sentry-kafka-schemas==0.1.49] -[sentry-kafka-schemas==0.1.50] -[sentry-kafka-schemas==0.1.51] -[sentry-kafka-schemas==0.1.52] -[sentry-kafka-schemas==0.1.54] -[sentry-kafka-schemas==0.1.56] -[sentry-kafka-schemas==0.1.57] -[sentry-kafka-schemas==0.1.58] -[sentry-kafka-schemas==0.1.59] -[sentry-kafka-schemas==0.1.60] -[sentry-kafka-schemas==0.1.61] -[sentry-kafka-schemas==0.1.62] -[sentry-kafka-schemas==0.1.63] -[sentry-kafka-schemas==0.1.64] -[sentry-kafka-schemas==0.1.65] -[sentry-kafka-schemas==0.1.66] -[sentry-kafka-schemas==0.1.67] -[sentry-kafka-schemas==0.1.68] -[sentry-kafka-schemas==0.1.69] -[sentry-kafka-schemas==0.1.70] -[sentry-kafka-schemas==0.1.71] -[sentry-kafka-schemas==0.1.72] -[sentry-kafka-schemas==0.1.73] -[sentry-kafka-schemas==0.1.74] -[sentry-kafka-schemas==0.1.75] -[sentry-kafka-schemas==0.1.76] -[sentry-kafka-schemas==0.1.78] -[sentry-kafka-schemas==0.1.79] -[sentry-kafka-schemas==0.1.80] -[sentry-kafka-schemas==0.1.81] -[sentry-kafka-schemas==0.1.82] -[sentry-kafka-schemas==0.1.83] -[sentry-kafka-schemas==0.1.84] -[sentry-kafka-schemas==0.1.85] -[sentry-kafka-schemas==0.1.86] -[sentry-kafka-schemas==0.1.87] -[sentry-kafka-schemas==0.1.88] -[sentry-kafka-schemas==0.1.89] -[sentry-kafka-schemas==0.1.90] -[sentry-kafka-schemas==0.1.91] -[sentry-kafka-schemas==0.1.92] -[sentry-kafka-schemas==0.1.93] -[sentry-kafka-schemas==0.1.94] -[sentry-kafka-schemas==0.1.95] -[sentry-kafka-schemas==0.1.96] -[sentry-kafka-schemas==0.1.97] -[sentry-kafka-schemas==0.1.98] -[sentry-kafka-schemas==0.1.99] -[sentry-kafka-schemas==0.1.100] -[sentry-kafka-schemas==0.1.101] -[sentry-kafka-schemas==0.1.102] -[sentry-kafka-schemas==0.1.103] -[sentry-kafka-schemas==0.1.104] -[sentry-kafka-schemas==0.1.105] -[sentry-kafka-schemas==0.1.106] -[sentry-kafka-schemas==0.1.107] -[sentry-kafka-schemas==0.1.109] -[sentry-kafka-schemas==0.1.110] -[sentry-kafka-schemas==0.1.111] -[sentry-kafka-schemas==0.1.112] -[sentry-kafka-schemas==0.1.113] -[sentry-kafka-schemas==0.1.114] -[sentry-kafka-schemas==0.1.115] -[sentry-kafka-schemas==0.1.116] -[sentry-kafka-schemas==0.1.117] -[sentry-kafka-schemas==0.1.118] -[sentry-kafka-schemas==0.1.119] -[sentry-kafka-schemas==0.1.120] -[sentry-kafka-schemas==0.1.121] -[sentry-kafka-schemas==0.1.122] -[sentry-kafka-schemas==0.1.123] -[sentry-kafka-schemas==0.1.124] -[sentry-kafka-schemas==0.1.125] -[sentry-kafka-schemas==0.1.126] -[sentry-kafka-schemas==0.1.127] -[sentry-kafka-schemas==0.1.128] -[sentry-kafka-schemas==0.1.129] -[sentry-kafka-schemas==1.0.0] -[sentry-kafka-schemas==1.0.1] -[sentry-kafka-schemas==1.0.2] -[sentry-kafka-schemas==1.0.3] -[sentry-kafka-schemas==1.0.4] -[sentry-kafka-schemas==1.0.5] -[sentry-kafka-schemas==1.0.6] -[sentry-kafka-schemas==1.0.7] -[sentry-kafka-schemas==1.0.8] -[sentry-kafka-schemas==1.1.0] -[sentry-kafka-schemas==1.1.1] -[sentry-kafka-schemas==1.1.2] -[sentry-kafka-schemas==1.1.3] -[sentry-kafka-schemas==1.1.4] -[sentry-kafka-schemas==1.1.5] -[sentry-kafka-schemas==1.1.6] -[sentry-kafka-schemas==1.1.7] -[sentry-kafka-schemas==1.2.0] -[sentry-kafka-schemas==1.2.1] -[sentry-kafka-schemas==1.2.2] -[sentry-kafka-schemas==1.3.0] -[sentry-kafka-schemas==1.3.1] -[sentry-kafka-schemas==1.3.2] -[sentry-kafka-schemas==1.3.3] -[sentry-kafka-schemas==1.3.4] -[sentry-kafka-schemas==1.3.5] -[sentry-kafka-schemas==1.3.6] -[sentry-kafka-schemas==1.3.7] -[sentry-kafka-schemas==1.3.8] -[sentry-kafka-schemas==1.3.9] -[sentry-kafka-schemas==1.3.10] -[sentry-kafka-schemas==1.3.11] -[sentry-kafka-schemas==1.3.12] -[sentry-kafka-schemas==1.3.13] -[sentry-kafka-schemas==1.3.14] -[sentry-kafka-schemas==1.3.15] -[sentry-kafka-schemas==1.3.16] -[sentry-kafka-schemas==1.3.17] -[sentry-kafka-schemas==1.3.18] -[sentry-kafka-schemas==2.0.0] -[sentry-kafka-schemas==2.0.1] -[sentry-kafka-schemas==2.0.2] -[sentry-kafka-schemas==2.0.4] -[sentry-kafka-schemas==2.1.0] -[sentry-kafka-schemas==2.1.1] -[sentry-kafka-schemas==2.1.2] -[sentry-kafka-schemas==2.1.3] -[sentry-kafka-schemas==2.1.4] -[sentry-kafka-schemas==2.1.5] -[sentry-kafka-schemas==2.1.6] -[sentry-kafka-schemas==2.1.7] -[sentry-kafka-schemas==2.1.8] -[sentry-kafka-schemas==2.1.9] -[sentry-kafka-schemas==2.1.10] -[sentry-kafka-schemas==2.1.11] -[sentry-kafka-schemas==2.1.13] -[sentry-kafka-schemas==2.1.14] -[sentry-kafka-schemas==2.1.15] -[sentry-kafka-schemas==2.1.16] -[sentry-kafka-schemas==2.1.18] -[sentry-kafka-schemas==2.1.19] -[sentry-kafka-schemas==2.1.20] -[sentry-kafka-schemas==2.1.21] -[sentry-kafka-schemas==2.1.22] -[sentry-kafka-schemas==2.1.23] - -[sentry-ophio==0.1.1] -python_versions = >=3.10 -[sentry-ophio==0.1.4] -[sentry-ophio==0.1.5] -[sentry-ophio==0.2.0] -[sentry-ophio==0.2.3] -[sentry-ophio==0.2.5] -[sentry-ophio==0.2.6] -[sentry-ophio==0.2.7] -[sentry-ophio==1.0.0] -[sentry-ophio==1.1.3] - -[sentry-options==0.0.4] -[sentry-options==0.0.5] -[sentry-options==0.0.6] -[sentry-options==0.0.7] -[sentry-options==0.0.11] -[sentry-options==0.0.12] -[sentry-options==0.0.13] -[sentry-options==0.0.14] - -[sentry-protos==0.1.3] -[sentry-protos==0.1.4] -[sentry-protos==0.1.5] -[sentry-protos==0.1.6] -[sentry-protos==0.1.7] -[sentry-protos==0.1.8] -[sentry-protos==0.1.9] -[sentry-protos==0.1.11] -[sentry-protos==0.1.12] -[sentry-protos==0.1.13] -[sentry-protos==0.1.14] -[sentry-protos==0.1.15] -[sentry-protos==0.1.16] -[sentry-protos==0.1.17] -[sentry-protos==0.1.18] -[sentry-protos==0.1.19] -[sentry-protos==0.1.20] -[sentry-protos==0.1.21] -[sentry-protos==0.1.22] -[sentry-protos==0.1.23] -[sentry-protos==0.1.26] -[sentry-protos==0.1.27] -[sentry-protos==0.1.28] -[sentry-protos==0.1.29] -[sentry-protos==0.1.30] -[sentry-protos==0.1.31] -[sentry-protos==0.1.32] -[sentry-protos==0.1.33] -[sentry-protos==0.1.34] -[sentry-protos==0.1.35] -[sentry-protos==0.1.36] -[sentry-protos==0.1.37] -[sentry-protos==0.1.38] -[sentry-protos==0.1.39] -[sentry-protos==0.1.40] -[sentry-protos==0.1.41] -[sentry-protos==0.1.42] -[sentry-protos==0.1.43] -[sentry-protos==0.1.44] -[sentry-protos==0.1.45] -[sentry-protos==0.1.46] -[sentry-protos==0.1.47] -[sentry-protos==0.1.48] -[sentry-protos==0.1.49] -[sentry-protos==0.1.50] -[sentry-protos==0.1.51] -[sentry-protos==0.1.52] -[sentry-protos==0.1.53] -[sentry-protos==0.1.54] -[sentry-protos==0.1.55] -[sentry-protos==0.1.57] -[sentry-protos==0.1.58] -[sentry-protos==0.1.59] -[sentry-protos==0.1.60] -[sentry-protos==0.1.61] -[sentry-protos==0.1.62] -[sentry-protos==0.1.63] -[sentry-protos==0.1.64] -[sentry-protos==0.1.65] -[sentry-protos==0.1.66] -[sentry-protos==0.1.67] -[sentry-protos==0.1.68] -[sentry-protos==0.1.69] -[sentry-protos==0.1.70] -[sentry-protos==0.1.71] -[sentry-protos==0.1.72] -[sentry-protos==0.1.73] -[sentry-protos==0.1.74] -[sentry-protos==0.1.75] -[sentry-protos==0.2.0] -[sentry-protos==0.2.1] -[sentry-protos==0.3.0] -[sentry-protos==0.3.1] -[sentry-protos==0.3.2] -[sentry-protos==0.3.3] -[sentry-protos==0.3.4] -[sentry-protos==0.3.5] -[sentry-protos==0.3.6] -[sentry-protos==0.3.7] -[sentry-protos==0.3.8] -[sentry-protos==0.3.9] -[sentry-protos==0.4.0] -[sentry-protos==0.4.1] -[sentry-protos==0.4.2] -[sentry-protos==0.4.3] -[sentry-protos==0.4.4] -[sentry-protos==0.4.6] -[sentry-protos==0.4.7] -[sentry-protos==0.4.8] -[sentry-protos==0.4.9] -[sentry-protos==0.4.10] -[sentry-protos==0.4.11] -[sentry-protos==0.4.12] -[sentry-protos==0.4.13] -[sentry-protos==0.4.14] -[sentry-protos==0.5.0] -[sentry-protos==0.6.0] -[sentry-protos==0.7.0] - -[sentry-redis-tools==0.1.1] -[sentry-redis-tools==0.1.2] -[sentry-redis-tools==0.1.3] -[sentry-redis-tools==0.1.4] -[sentry-redis-tools==0.1.5] -[sentry-redis-tools==0.1.6] -[sentry-redis-tools==0.1.7] -[sentry-redis-tools==0.2.0] -[sentry-redis-tools==0.3.0] -[sentry-redis-tools==0.4.0] -[sentry-redis-tools==0.5.0] -[sentry-redis-tools==0.5.1] - -[sentry-relay==0.5.87] -[sentry-relay==0.8.12] -[sentry-relay==0.8.13] -[sentry-relay==0.8.15] -[sentry-relay==0.8.16] -[sentry-relay==0.8.17] -[sentry-relay==0.8.18] -[sentry-relay==0.8.19] -[sentry-relay==0.8.20] -[sentry-relay==0.8.21] -[sentry-relay==0.8.22] -[sentry-relay==0.8.23] -[sentry-relay==0.8.24] -[sentry-relay==0.8.25] -[sentry-relay==0.8.26] -[sentry-relay==0.8.27] -[sentry-relay==0.8.28] -[sentry-relay==0.8.29] -[sentry-relay==0.8.30] -[sentry-relay==0.8.31] -[sentry-relay==0.8.32] -[sentry-relay==0.8.33] -[sentry-relay==0.8.34] -[sentry-relay==0.8.35] -[sentry-relay==0.8.36] -[sentry-relay==0.8.37] -[sentry-relay==0.8.38] -[sentry-relay==0.8.39] -[sentry-relay==0.8.41] -[sentry-relay==0.8.42] -[sentry-relay==0.8.43] -[sentry-relay==0.8.44] -[sentry-relay==0.8.45] -[sentry-relay==0.8.46] -[sentry-relay==0.8.48] -[sentry-relay==0.8.49] -[sentry-relay==0.8.50] -[sentry-relay==0.8.52] -[sentry-relay==0.8.55] -[sentry-relay==0.8.56] -[sentry-relay==0.8.57] -[sentry-relay==0.8.58] -[sentry-relay==0.8.59] -[sentry-relay==0.8.60] -[sentry-relay==0.8.61] -[sentry-relay==0.8.64] -[sentry-relay==0.8.66] -[sentry-relay==0.8.67] -[sentry-relay==0.9.0] -[sentry-relay==0.9.1] -[sentry-relay==0.9.2] -[sentry-relay==0.9.3] -[sentry-relay==0.9.4] -[sentry-relay==0.9.5] -[sentry-relay==0.9.6] -[sentry-relay==0.9.7] -[sentry-relay==0.9.8] -[sentry-relay==0.9.9] -[sentry-relay==0.9.10] -[sentry-relay==0.9.11] -[sentry-relay==0.9.12] -[sentry-relay==0.9.13] -[sentry-relay==0.9.14] -[sentry-relay==0.9.15] -[sentry-relay==0.9.16] -[sentry-relay==0.9.17] -[sentry-relay==0.9.19] -[sentry-relay==0.9.20] -[sentry-relay==0.9.21] -[sentry-relay==0.9.22] -[sentry-relay==0.9.23] - -[sentry-script-runner==0.1.5] -[sentry-script-runner==0.1.6] -[sentry-script-runner==0.1.7] -[sentry-script-runner==0.1.8] -[sentry-script-runner==0.1.9] -[sentry-script-runner==0.2.0] -[sentry-script-runner==0.2.1] -[sentry-script-runner==0.2.2] -[sentry-script-runner==0.2.3] -[sentry-script-runner==0.2.4] -[sentry-script-runner==0.2.5] -[sentry-script-runner==0.2.6] -[sentry-script-runner==0.2.7] -[sentry-script-runner==0.2.8] -[sentry-script-runner==0.2.9] -[sentry-script-runner==1.0.0] -[sentry-script-runner==1.0.1] - -[sentry-sdk==1.6.0] -[sentry-sdk==1.9.0] -[sentry-sdk==1.9.3] -[sentry-sdk==1.9.4] -[sentry-sdk==1.9.5] -[sentry-sdk==1.9.8] -[sentry-sdk==1.9.9] -[sentry-sdk==1.9.10] -[sentry-sdk==1.10.1] -[sentry-sdk==1.11.0] -[sentry-sdk==1.13.0] -[sentry-sdk==1.14.0] -[sentry-sdk==1.15.0] -[sentry-sdk==1.16.0] -[sentry-sdk==1.17.0] -[sentry-sdk==1.18.0] -[sentry-sdk==1.19.0] -[sentry-sdk==1.19.1] -[sentry-sdk==1.20.0] -[sentry-sdk==1.21.0] -[sentry-sdk==1.21.1] -[sentry-sdk==1.22.0] -[sentry-sdk==1.22.1] -[sentry-sdk==1.22.2] -[sentry-sdk==1.23.0] -[sentry-sdk==1.23.1] -[sentry-sdk==1.24.0] -[sentry-sdk==1.25.0] -[sentry-sdk==1.25.1] -[sentry-sdk==1.26.0] -[sentry-sdk==1.27.0] -[sentry-sdk==1.27.1] -[sentry-sdk==1.28.0] -[sentry-sdk==1.28.1] -[sentry-sdk==1.29.0] -[sentry-sdk==1.29.1] -[sentry-sdk==1.29.2] -[sentry-sdk==1.30.0] -[sentry-sdk==1.31.0] -[sentry-sdk==1.32.0] -[sentry-sdk==1.33.0] -[sentry-sdk==1.33.1] -[sentry-sdk==1.34.0] -[sentry-sdk==1.35.0] -[sentry-sdk==1.36.0] -[sentry-sdk==1.37.0] -[sentry-sdk==1.37.1] -[sentry-sdk==1.38.0] -[sentry-sdk==1.39.0] -[sentry-sdk==1.39.1] -[sentry-sdk==1.39.2] -[sentry-sdk==1.40.0] -[sentry-sdk==1.40.1] -[sentry-sdk==1.40.2] -[sentry-sdk==1.40.3] -[sentry-sdk==1.40.4] -[sentry-sdk==1.40.5] -[sentry-sdk==1.40.6] -[sentry-sdk==1.41.0] -[sentry-sdk==1.42.0] -[sentry-sdk==1.43.0] -[sentry-sdk==1.44.0] -[sentry-sdk==1.44.1] -[sentry-sdk==1.45.0] -[sentry-sdk==1.45.1] -[sentry-sdk==2.0.0a1] -[sentry-sdk==2.0.0a2] -[sentry-sdk==2.0.0rc1] -[sentry-sdk==2.0.0rc2] -[sentry-sdk==2.0.0rc3] -[sentry-sdk==2.0.0rc4] -[sentry-sdk==2.0.0rc5] -[sentry-sdk==2.0.0rc6] -[sentry-sdk==2.0.0] -[sentry-sdk==2.0.1] -[sentry-sdk==2.1.0] -[sentry-sdk==2.1.1] -[sentry-sdk==2.2.0] -[sentry-sdk==2.2.1] -[sentry-sdk==2.3.0] -[sentry-sdk==2.3.1] -[sentry-sdk==2.4.0] -[sentry-sdk==2.5.0] -[sentry-sdk==2.5.1] -[sentry-sdk==2.6.0] -[sentry-sdk==2.7.0] -[sentry-sdk==2.7.1] -[sentry-sdk==2.8.0] -[sentry-sdk==2.9.0] -[sentry-sdk==2.10.0] -[sentry-sdk==2.11.0] -[sentry-sdk==2.12.0] -[sentry-sdk==2.13.0] -[sentry-sdk==2.14.0] -[sentry-sdk==2.15.0] -[sentry-sdk==2.16.0] -[sentry-sdk==2.17.0] -[sentry-sdk==2.18.0] -[sentry-sdk==2.19.0] -[sentry-sdk==2.19.1] -[sentry-sdk==2.19.2] -[sentry-sdk==2.20.0] -[sentry-sdk==2.21.0] -[sentry-sdk==2.22.0] -[sentry-sdk==2.23.0] -[sentry-sdk==2.23.1] -[sentry-sdk==2.24.0] -[sentry-sdk==2.24.1] -[sentry-sdk==2.25.0] -[sentry-sdk==2.25.1] -[sentry-sdk==2.26.0] -[sentry-sdk==2.26.1] -[sentry-sdk==2.27.0] -[sentry-sdk==2.28.0] -[sentry-sdk==2.29.0] -[sentry-sdk==2.29.1] -[sentry-sdk==2.30.0] -[sentry-sdk==2.31.0] -[sentry-sdk==2.32.0] -[sentry-sdk==2.33.0] -[sentry-sdk==2.33.1] -[sentry-sdk==2.33.2] -[sentry-sdk==2.34.0] -[sentry-sdk==2.34.1] -[sentry-sdk==2.35.0] -[sentry-sdk==2.35.1] -[sentry-sdk==2.35.2] -[sentry-sdk==2.36.0] -[sentry-sdk==2.37.0] -[sentry-sdk==2.37.1] -[sentry-sdk==2.38.0] -[sentry-sdk==2.39.0] -[sentry-sdk==2.40.0] -[sentry-sdk==2.41.0] -[sentry-sdk==2.42.0] -[sentry-sdk==2.42.1] -[sentry-sdk==2.43.0] -[sentry-sdk==2.44.0] -[sentry-sdk==2.45.0] -[sentry-sdk==2.46.0] -[sentry-sdk==2.47.0] -[sentry-sdk==2.48.0] -[sentry-sdk==2.49.0] -[sentry-sdk==2.50.0] -[sentry-sdk==2.51.0a1] -[sentry-sdk==2.51.0] -[sentry-sdk==2.52.0a1] -[sentry-sdk==2.52.0a2] -[sentry-sdk==2.52.0a3] -[sentry-sdk==2.52.0a5] -[sentry-sdk==2.52.0a6] -[sentry-sdk==2.52.0] -[sentry-sdk==2.53.0] -[sentry-sdk==3.0.0a1] -[sentry-sdk==3.0.0a2] -[sentry-sdk==3.0.0a3] -[sentry-sdk==3.0.0a4] -[sentry-sdk==3.0.0a5] -[sentry-sdk==3.0.0a6] -[sentry-sdk==3.0.0a7] +# [sentry-infra-event-notifier==0.0.3] +# [sentry-infra-event-notifier==0.0.4] +# [sentry-infra-event-notifier==0.0.5] +# [sentry-infra-event-notifier==0.0.6] +# [sentry-infra-event-notifier==0.0.7] +# [sentry-infra-event-notifier==0.0.8] +# [sentry-infra-event-notifier==0.0.9] +# [sentry-infra-event-notifier==0.0.10] + +# [sentry-infra-tools==0.0.6] +# [sentry-infra-tools==0.0.7] +# [sentry-infra-tools==0.0.8] +# [sentry-infra-tools==0.0.9] +# [sentry-infra-tools==0.0.10] +# [sentry-infra-tools==0.0.11] +# [sentry-infra-tools==0.0.12] +# [sentry-infra-tools==0.0.13] +# [sentry-infra-tools==0.0.16] +# [sentry-infra-tools==0.0.17] +# [sentry-infra-tools==0.0.18] +# [sentry-infra-tools==0.0.19] +# [sentry-infra-tools==0.0.20] +# [sentry-infra-tools==0.0.21] +# [sentry-infra-tools==0.0.22] +# [sentry-infra-tools==0.0.23] +# [sentry-infra-tools==0.0.24] +# [sentry-infra-tools==0.0.25] +# [sentry-infra-tools==0.0.26] +# [sentry-infra-tools==0.0.27] +# [sentry-infra-tools==0.0.28] +# [sentry-infra-tools==0.0.29] +# [sentry-infra-tools==0.0.30] +# [sentry-infra-tools==0.0.31] +# [sentry-infra-tools==0.0.32] +# [sentry-infra-tools==0.0.33] +# [sentry-infra-tools==0.0.34] +# [sentry-infra-tools==0.0.35] +# [sentry-infra-tools==0.0.36] +# [sentry-infra-tools==0.0.37] +# [sentry-infra-tools==1.0.0] +# [sentry-infra-tools==1.1.0] +# [sentry-infra-tools==1.1.1] +# [sentry-infra-tools==1.1.2] +# [sentry-infra-tools==1.1.3] +# [sentry-infra-tools==1.2.0] +# [sentry-infra-tools==1.2.1] +# [sentry-infra-tools==1.2.2] +# [sentry-infra-tools==1.2.3] +# [sentry-infra-tools==1.3.0] +# [sentry-infra-tools==1.3.1] +# [sentry-infra-tools==1.3.2] +# [sentry-infra-tools==1.4.0] +# [sentry-infra-tools==1.5.0] +# [sentry-infra-tools==1.6.0] +# [sentry-infra-tools==1.7.0] +# [sentry-infra-tools==1.8.0] +# [sentry-infra-tools==1.8.1] +# [sentry-infra-tools==1.9.0] +# [sentry-infra-tools==1.9.1] +# [sentry-infra-tools==1.10.0] +# [sentry-infra-tools==1.11.0] +# [sentry-infra-tools==1.11.1] +# [sentry-infra-tools==1.12.0] +# [sentry-infra-tools==1.13.0] +# [sentry-infra-tools==1.14.0] +# [sentry-infra-tools==1.14.1] +# [sentry-infra-tools==1.15.0] +# [sentry-infra-tools==1.15.1] +# [sentry-infra-tools==1.15.2] +# [sentry-infra-tools==1.15.3] +# [sentry-infra-tools==1.15.4] +# [sentry-infra-tools==1.15.5] +# [sentry-infra-tools==1.15.6] +# [sentry-infra-tools==1.15.7] +# [sentry-infra-tools==1.15.8] +# [sentry-infra-tools==1.15.9] +# [sentry-infra-tools==1.15.10] +# [sentry-infra-tools==1.16.0] +# [sentry-infra-tools==1.16.1] +# [sentry-infra-tools==1.16.2] +# [sentry-infra-tools==1.17.0] +# [sentry-infra-tools==1.17.1] +# [sentry-infra-tools==1.17.2] +# [sentry-infra-tools==1.17.3] +# [sentry-infra-tools==1.17.4] +# [sentry-infra-tools==1.18.0] +# [sentry-infra-tools==1.19.0] +# [sentry-infra-tools==1.20.0] +# [sentry-infra-tools==1.20.1] +# [sentry-infra-tools==1.20.2] +# [sentry-infra-tools==1.20.3] +# [sentry-infra-tools==1.21.0] +# [sentry-infra-tools==1.22.0] +# [sentry-infra-tools==1.23.0] +# [sentry-infra-tools==1.24.0] +# [sentry-infra-tools==1.25.0] +# [sentry-infra-tools==1.25.1] +# [sentry-infra-tools==1.25.2] +# [sentry-infra-tools==1.25.3] +# [sentry-infra-tools==1.25.4] +# [sentry-infra-tools==1.25.5] + +# [sentry-jsonish==0.0.1] +# [sentry-jsonish==0.0.2] + +# [sentry-jsonnet==0.0.4] +# [sentry-jsonnet==0.0.5] + +# [sentry-k8s-libsonnet==0.0.1] +# [sentry-k8s-libsonnet==0.0.2] +# [sentry-k8s-libsonnet==0.0.4] + +# [sentry-kafka-management==0.0.3] +# [sentry-kafka-management==0.0.4] +# [sentry-kafka-management==0.0.5] +# [sentry-kafka-management==0.0.6] +# [sentry-kafka-management==0.0.7] +# [sentry-kafka-management==0.0.8] +# [sentry-kafka-management==0.0.9] +# [sentry-kafka-management==0.0.10] +# [sentry-kafka-management==0.0.11] +# [sentry-kafka-management==0.0.12] +# [sentry-kafka-management==0.0.13] +# [sentry-kafka-management==0.0.14] +# [sentry-kafka-management==0.0.15] +# [sentry-kafka-management==0.0.16] +# [sentry-kafka-management==0.1.0] +# [sentry-kafka-management==0.1.1] +# [sentry-kafka-management==0.1.2] +# [sentry-kafka-management==0.1.3] +# [sentry-kafka-management==0.1.5] +# [sentry-kafka-management==0.1.6] +# [sentry-kafka-management==0.1.7] + +# [sentry-kafka-schemas==0.0.1] +# [sentry-kafka-schemas==0.0.2] +# [sentry-kafka-schemas==0.0.3] +# [sentry-kafka-schemas==0.0.4] +# [sentry-kafka-schemas==0.0.5] +# [sentry-kafka-schemas==0.0.6] +# [sentry-kafka-schemas==0.0.7] +# [sentry-kafka-schemas==0.0.8] +# [sentry-kafka-schemas==0.0.9] +# [sentry-kafka-schemas==0.0.10] +# [sentry-kafka-schemas==0.0.11] +# [sentry-kafka-schemas==0.0.12] +# [sentry-kafka-schemas==0.0.13] +# [sentry-kafka-schemas==0.0.14] +# [sentry-kafka-schemas==0.0.15] +# [sentry-kafka-schemas==0.0.16] +# [sentry-kafka-schemas==0.0.17] +# [sentry-kafka-schemas==0.0.18] +# [sentry-kafka-schemas==0.0.19] +# [sentry-kafka-schemas==0.0.20] +# [sentry-kafka-schemas==0.0.21] +# [sentry-kafka-schemas==0.0.22] +# [sentry-kafka-schemas==0.0.23] +# [sentry-kafka-schemas==0.0.24] +# [sentry-kafka-schemas==0.0.25] +# [sentry-kafka-schemas==0.0.26] +# [sentry-kafka-schemas==0.0.27] +# [sentry-kafka-schemas==0.0.28] +# [sentry-kafka-schemas==0.0.29] +# [sentry-kafka-schemas==0.0.31] +# [sentry-kafka-schemas==0.0.32] +# [sentry-kafka-schemas==0.0.33] +# [sentry-kafka-schemas==0.1.2] +# [sentry-kafka-schemas==0.1.3] +# [sentry-kafka-schemas==0.1.4] +# [sentry-kafka-schemas==0.1.5] +# [sentry-kafka-schemas==0.1.6] +# [sentry-kafka-schemas==0.1.7] +# [sentry-kafka-schemas==0.1.8] +# [sentry-kafka-schemas==0.1.9] +# [sentry-kafka-schemas==0.1.10] +# [sentry-kafka-schemas==0.1.11] +# [sentry-kafka-schemas==0.1.12] +# [sentry-kafka-schemas==0.1.13] +# [sentry-kafka-schemas==0.1.14] +# [sentry-kafka-schemas==0.1.15] +# [sentry-kafka-schemas==0.1.16] +# [sentry-kafka-schemas==0.1.17] +# [sentry-kafka-schemas==0.1.18] +# [sentry-kafka-schemas==0.1.19] +# [sentry-kafka-schemas==0.1.21] +# [sentry-kafka-schemas==0.1.22] +# [sentry-kafka-schemas==0.1.23] +# [sentry-kafka-schemas==0.1.24] +# [sentry-kafka-schemas==0.1.25] +# [sentry-kafka-schemas==0.1.26] +# [sentry-kafka-schemas==0.1.27] +# [sentry-kafka-schemas==0.1.28] +# [sentry-kafka-schemas==0.1.29] +# [sentry-kafka-schemas==0.1.30] +# [sentry-kafka-schemas==0.1.31] +# [sentry-kafka-schemas==0.1.32] +# [sentry-kafka-schemas==0.1.33] +# [sentry-kafka-schemas==0.1.34] +# [sentry-kafka-schemas==0.1.35] +# [sentry-kafka-schemas==0.1.36] +# [sentry-kafka-schemas==0.1.37] +# [sentry-kafka-schemas==0.1.38] +# [sentry-kafka-schemas==0.1.39] +# [sentry-kafka-schemas==0.1.40] +# [sentry-kafka-schemas==0.1.41] +# [sentry-kafka-schemas==0.1.42] +# [sentry-kafka-schemas==0.1.43] +# [sentry-kafka-schemas==0.1.44] +# [sentry-kafka-schemas==0.1.45] +# [sentry-kafka-schemas==0.1.46] +# [sentry-kafka-schemas==0.1.47] +# [sentry-kafka-schemas==0.1.48] +# [sentry-kafka-schemas==0.1.49] +# [sentry-kafka-schemas==0.1.50] +# [sentry-kafka-schemas==0.1.51] +# [sentry-kafka-schemas==0.1.52] +# [sentry-kafka-schemas==0.1.54] +# [sentry-kafka-schemas==0.1.56] +# [sentry-kafka-schemas==0.1.57] +# [sentry-kafka-schemas==0.1.58] +# [sentry-kafka-schemas==0.1.59] +# [sentry-kafka-schemas==0.1.60] +# [sentry-kafka-schemas==0.1.61] +# [sentry-kafka-schemas==0.1.62] +# [sentry-kafka-schemas==0.1.63] +# [sentry-kafka-schemas==0.1.64] +# [sentry-kafka-schemas==0.1.65] +# [sentry-kafka-schemas==0.1.66] +# [sentry-kafka-schemas==0.1.67] +# [sentry-kafka-schemas==0.1.68] +# [sentry-kafka-schemas==0.1.69] +# [sentry-kafka-schemas==0.1.70] +# [sentry-kafka-schemas==0.1.71] +# [sentry-kafka-schemas==0.1.72] +# [sentry-kafka-schemas==0.1.73] +# [sentry-kafka-schemas==0.1.74] +# [sentry-kafka-schemas==0.1.75] +# [sentry-kafka-schemas==0.1.76] +# [sentry-kafka-schemas==0.1.78] +# [sentry-kafka-schemas==0.1.79] +# [sentry-kafka-schemas==0.1.80] +# [sentry-kafka-schemas==0.1.81] +# [sentry-kafka-schemas==0.1.82] +# [sentry-kafka-schemas==0.1.83] +# [sentry-kafka-schemas==0.1.84] +# [sentry-kafka-schemas==0.1.85] +# [sentry-kafka-schemas==0.1.86] +# [sentry-kafka-schemas==0.1.87] +# [sentry-kafka-schemas==0.1.88] +# [sentry-kafka-schemas==0.1.89] +# [sentry-kafka-schemas==0.1.90] +# [sentry-kafka-schemas==0.1.91] +# [sentry-kafka-schemas==0.1.92] +# [sentry-kafka-schemas==0.1.93] +# [sentry-kafka-schemas==0.1.94] +# [sentry-kafka-schemas==0.1.95] +# [sentry-kafka-schemas==0.1.96] +# [sentry-kafka-schemas==0.1.97] +# [sentry-kafka-schemas==0.1.98] +# [sentry-kafka-schemas==0.1.99] +# [sentry-kafka-schemas==0.1.100] +# [sentry-kafka-schemas==0.1.101] +# [sentry-kafka-schemas==0.1.102] +# [sentry-kafka-schemas==0.1.103] +# [sentry-kafka-schemas==0.1.104] +# [sentry-kafka-schemas==0.1.105] +# [sentry-kafka-schemas==0.1.106] +# [sentry-kafka-schemas==0.1.107] +# [sentry-kafka-schemas==0.1.109] +# [sentry-kafka-schemas==0.1.110] +# [sentry-kafka-schemas==0.1.111] +# [sentry-kafka-schemas==0.1.112] +# [sentry-kafka-schemas==0.1.113] +# [sentry-kafka-schemas==0.1.114] +# [sentry-kafka-schemas==0.1.115] +# [sentry-kafka-schemas==0.1.116] +# [sentry-kafka-schemas==0.1.117] +# [sentry-kafka-schemas==0.1.118] +# [sentry-kafka-schemas==0.1.119] +# [sentry-kafka-schemas==0.1.120] +# [sentry-kafka-schemas==0.1.121] +# [sentry-kafka-schemas==0.1.122] +# [sentry-kafka-schemas==0.1.123] +# [sentry-kafka-schemas==0.1.124] +# [sentry-kafka-schemas==0.1.125] +# [sentry-kafka-schemas==0.1.126] +# [sentry-kafka-schemas==0.1.127] +# [sentry-kafka-schemas==0.1.128] +# [sentry-kafka-schemas==0.1.129] +# [sentry-kafka-schemas==1.0.0] +# [sentry-kafka-schemas==1.0.1] +# [sentry-kafka-schemas==1.0.2] +# [sentry-kafka-schemas==1.0.3] +# [sentry-kafka-schemas==1.0.4] +# [sentry-kafka-schemas==1.0.5] +# [sentry-kafka-schemas==1.0.6] +# [sentry-kafka-schemas==1.0.7] +# [sentry-kafka-schemas==1.0.8] +# [sentry-kafka-schemas==1.1.0] +# [sentry-kafka-schemas==1.1.1] +# [sentry-kafka-schemas==1.1.2] +# [sentry-kafka-schemas==1.1.3] +# [sentry-kafka-schemas==1.1.4] +# [sentry-kafka-schemas==1.1.5] +# [sentry-kafka-schemas==1.1.6] +# [sentry-kafka-schemas==1.1.7] +# [sentry-kafka-schemas==1.2.0] +# [sentry-kafka-schemas==1.2.1] +# [sentry-kafka-schemas==1.2.2] +# [sentry-kafka-schemas==1.3.0] +# [sentry-kafka-schemas==1.3.1] +# [sentry-kafka-schemas==1.3.2] +# [sentry-kafka-schemas==1.3.3] +# [sentry-kafka-schemas==1.3.4] +# [sentry-kafka-schemas==1.3.5] +# [sentry-kafka-schemas==1.3.6] +# [sentry-kafka-schemas==1.3.7] +# [sentry-kafka-schemas==1.3.8] +# [sentry-kafka-schemas==1.3.9] +# [sentry-kafka-schemas==1.3.10] +# [sentry-kafka-schemas==1.3.11] +# [sentry-kafka-schemas==1.3.12] +# [sentry-kafka-schemas==1.3.13] +# [sentry-kafka-schemas==1.3.14] +# [sentry-kafka-schemas==1.3.15] +# [sentry-kafka-schemas==1.3.16] +# [sentry-kafka-schemas==1.3.17] +# [sentry-kafka-schemas==1.3.18] +# [sentry-kafka-schemas==2.0.0] +# [sentry-kafka-schemas==2.0.1] +# [sentry-kafka-schemas==2.0.2] +# [sentry-kafka-schemas==2.0.4] +# [sentry-kafka-schemas==2.1.0] +# [sentry-kafka-schemas==2.1.1] +# [sentry-kafka-schemas==2.1.2] +# [sentry-kafka-schemas==2.1.3] +# [sentry-kafka-schemas==2.1.4] +# [sentry-kafka-schemas==2.1.5] +# [sentry-kafka-schemas==2.1.6] +# [sentry-kafka-schemas==2.1.7] +# [sentry-kafka-schemas==2.1.8] +# [sentry-kafka-schemas==2.1.9] +# [sentry-kafka-schemas==2.1.10] +# [sentry-kafka-schemas==2.1.11] +# [sentry-kafka-schemas==2.1.13] +# [sentry-kafka-schemas==2.1.14] +# [sentry-kafka-schemas==2.1.15] +# [sentry-kafka-schemas==2.1.16] +# [sentry-kafka-schemas==2.1.18] +# [sentry-kafka-schemas==2.1.19] +# [sentry-kafka-schemas==2.1.20] +# [sentry-kafka-schemas==2.1.21] +# [sentry-kafka-schemas==2.1.22] +# [sentry-kafka-schemas==2.1.23] + +# [sentry-ophio==0.1.1] +# python_versions = >=3.10 +# [sentry-ophio==0.1.4] +# [sentry-ophio==0.1.5] +# [sentry-ophio==0.2.0] +# [sentry-ophio==0.2.3] +# [sentry-ophio==0.2.5] +# [sentry-ophio==0.2.6] +# [sentry-ophio==0.2.7] +# [sentry-ophio==1.0.0] +# [sentry-ophio==1.1.3] + +# [sentry-options==0.0.4] +# [sentry-options==0.0.5] +# [sentry-options==0.0.6] +# [sentry-options==0.0.7] +# [sentry-options==0.0.11] +# [sentry-options==0.0.12] +# [sentry-options==0.0.13] +# [sentry-options==0.0.14] + +# [sentry-protos==0.1.3] +# [sentry-protos==0.1.4] +# [sentry-protos==0.1.5] +# [sentry-protos==0.1.6] +# [sentry-protos==0.1.7] +# [sentry-protos==0.1.8] +# [sentry-protos==0.1.9] +# [sentry-protos==0.1.11] +# [sentry-protos==0.1.12] +# [sentry-protos==0.1.13] +# [sentry-protos==0.1.14] +# [sentry-protos==0.1.15] +# [sentry-protos==0.1.16] +# [sentry-protos==0.1.17] +# [sentry-protos==0.1.18] +# [sentry-protos==0.1.19] +# [sentry-protos==0.1.20] +# [sentry-protos==0.1.21] +# [sentry-protos==0.1.22] +# [sentry-protos==0.1.23] +# [sentry-protos==0.1.26] +# [sentry-protos==0.1.27] +# [sentry-protos==0.1.28] +# [sentry-protos==0.1.29] +# [sentry-protos==0.1.30] +# [sentry-protos==0.1.31] +# [sentry-protos==0.1.32] +# [sentry-protos==0.1.33] +# [sentry-protos==0.1.34] +# [sentry-protos==0.1.35] +# [sentry-protos==0.1.36] +# [sentry-protos==0.1.37] +# [sentry-protos==0.1.38] +# [sentry-protos==0.1.39] +# [sentry-protos==0.1.40] +# [sentry-protos==0.1.41] +# [sentry-protos==0.1.42] +# [sentry-protos==0.1.43] +# [sentry-protos==0.1.44] +# [sentry-protos==0.1.45] +# [sentry-protos==0.1.46] +# [sentry-protos==0.1.47] +# [sentry-protos==0.1.48] +# [sentry-protos==0.1.49] +# [sentry-protos==0.1.50] +# [sentry-protos==0.1.51] +# [sentry-protos==0.1.52] +# [sentry-protos==0.1.53] +# [sentry-protos==0.1.54] +# [sentry-protos==0.1.55] +# [sentry-protos==0.1.57] +# [sentry-protos==0.1.58] +# [sentry-protos==0.1.59] +# [sentry-protos==0.1.60] +# [sentry-protos==0.1.61] +# [sentry-protos==0.1.62] +# [sentry-protos==0.1.63] +# [sentry-protos==0.1.64] +# [sentry-protos==0.1.65] +# [sentry-protos==0.1.66] +# [sentry-protos==0.1.67] +# [sentry-protos==0.1.68] +# [sentry-protos==0.1.69] +# [sentry-protos==0.1.70] +# [sentry-protos==0.1.71] +# [sentry-protos==0.1.72] +# [sentry-protos==0.1.73] +# [sentry-protos==0.1.74] +# [sentry-protos==0.1.75] +# [sentry-protos==0.2.0] +# [sentry-protos==0.2.1] +# [sentry-protos==0.3.0] +# [sentry-protos==0.3.1] +# [sentry-protos==0.3.2] +# [sentry-protos==0.3.3] +# [sentry-protos==0.3.4] +# [sentry-protos==0.3.5] +# [sentry-protos==0.3.6] +# [sentry-protos==0.3.7] +# [sentry-protos==0.3.8] +# [sentry-protos==0.3.9] +# [sentry-protos==0.4.0] +# [sentry-protos==0.4.1] +# [sentry-protos==0.4.2] +# [sentry-protos==0.4.3] +# [sentry-protos==0.4.4] +# [sentry-protos==0.4.6] +# [sentry-protos==0.4.7] +# [sentry-protos==0.4.8] +# [sentry-protos==0.4.9] +# [sentry-protos==0.4.10] +# [sentry-protos==0.4.11] +# [sentry-protos==0.4.12] +# [sentry-protos==0.4.13] +# [sentry-protos==0.4.14] +# [sentry-protos==0.5.0] +# [sentry-protos==0.6.0] +# [sentry-protos==0.7.0] + +# [sentry-redis-tools==0.1.1] +# [sentry-redis-tools==0.1.2] +# [sentry-redis-tools==0.1.3] +# [sentry-redis-tools==0.1.4] +# [sentry-redis-tools==0.1.5] +# [sentry-redis-tools==0.1.6] +# [sentry-redis-tools==0.1.7] +# [sentry-redis-tools==0.2.0] +# [sentry-redis-tools==0.3.0] +# [sentry-redis-tools==0.4.0] +# [sentry-redis-tools==0.5.0] +# [sentry-redis-tools==0.5.1] + +# [sentry-relay==0.5.87] +# [sentry-relay==0.8.12] +# [sentry-relay==0.8.13] +# [sentry-relay==0.8.15] +# [sentry-relay==0.8.16] +# [sentry-relay==0.8.17] +# [sentry-relay==0.8.18] +# [sentry-relay==0.8.19] +# [sentry-relay==0.8.20] +# [sentry-relay==0.8.21] +# [sentry-relay==0.8.22] +# [sentry-relay==0.8.23] +# [sentry-relay==0.8.24] +# [sentry-relay==0.8.25] +# [sentry-relay==0.8.26] +# [sentry-relay==0.8.27] +# [sentry-relay==0.8.28] +# [sentry-relay==0.8.29] +# [sentry-relay==0.8.30] +# [sentry-relay==0.8.31] +# [sentry-relay==0.8.32] +# [sentry-relay==0.8.33] +# [sentry-relay==0.8.34] +# [sentry-relay==0.8.35] +# [sentry-relay==0.8.36] +# [sentry-relay==0.8.37] +# [sentry-relay==0.8.38] +# [sentry-relay==0.8.39] +# [sentry-relay==0.8.41] +# [sentry-relay==0.8.42] +# [sentry-relay==0.8.43] +# [sentry-relay==0.8.44] +# [sentry-relay==0.8.45] +# [sentry-relay==0.8.46] +# [sentry-relay==0.8.48] +# [sentry-relay==0.8.49] +# [sentry-relay==0.8.50] +# [sentry-relay==0.8.52] +# [sentry-relay==0.8.55] +# [sentry-relay==0.8.56] +# [sentry-relay==0.8.57] +# [sentry-relay==0.8.58] +# [sentry-relay==0.8.59] +# [sentry-relay==0.8.60] +# [sentry-relay==0.8.61] +# [sentry-relay==0.8.64] +# [sentry-relay==0.8.66] +# [sentry-relay==0.8.67] +# [sentry-relay==0.9.0] +# [sentry-relay==0.9.1] +# [sentry-relay==0.9.2] +# [sentry-relay==0.9.3] +# [sentry-relay==0.9.4] +# [sentry-relay==0.9.5] +# [sentry-relay==0.9.6] +# [sentry-relay==0.9.7] +# [sentry-relay==0.9.8] +# [sentry-relay==0.9.9] +# [sentry-relay==0.9.10] +# [sentry-relay==0.9.11] +# [sentry-relay==0.9.12] +# [sentry-relay==0.9.13] +# [sentry-relay==0.9.14] +# [sentry-relay==0.9.15] +# [sentry-relay==0.9.16] +# [sentry-relay==0.9.17] +# [sentry-relay==0.9.19] +# [sentry-relay==0.9.20] +# [sentry-relay==0.9.21] +# [sentry-relay==0.9.22] +# [sentry-relay==0.9.23] + +# [sentry-script-runner==0.1.5] +# [sentry-script-runner==0.1.6] +# [sentry-script-runner==0.1.7] +# [sentry-script-runner==0.1.8] +# [sentry-script-runner==0.1.9] +# [sentry-script-runner==0.2.0] +# [sentry-script-runner==0.2.1] +# [sentry-script-runner==0.2.2] +# [sentry-script-runner==0.2.3] +# [sentry-script-runner==0.2.4] +# [sentry-script-runner==0.2.5] +# [sentry-script-runner==0.2.6] +# [sentry-script-runner==0.2.7] +# [sentry-script-runner==0.2.8] +# [sentry-script-runner==0.2.9] +# [sentry-script-runner==1.0.0] +# [sentry-script-runner==1.0.1] + +# [sentry-sdk==1.6.0] +# [sentry-sdk==1.9.0] +# [sentry-sdk==1.9.3] +# [sentry-sdk==1.9.4] +# [sentry-sdk==1.9.5] +# [sentry-sdk==1.9.8] +# [sentry-sdk==1.9.9] +# [sentry-sdk==1.9.10] +# [sentry-sdk==1.10.1] +# [sentry-sdk==1.11.0] +# [sentry-sdk==1.13.0] +# [sentry-sdk==1.14.0] +# [sentry-sdk==1.15.0] +# [sentry-sdk==1.16.0] +# [sentry-sdk==1.17.0] +# [sentry-sdk==1.18.0] +# [sentry-sdk==1.19.0] +# [sentry-sdk==1.19.1] +# [sentry-sdk==1.20.0] +# [sentry-sdk==1.21.0] +# [sentry-sdk==1.21.1] +# [sentry-sdk==1.22.0] +# [sentry-sdk==1.22.1] +# [sentry-sdk==1.22.2] +# [sentry-sdk==1.23.0] +# [sentry-sdk==1.23.1] +# [sentry-sdk==1.24.0] +# [sentry-sdk==1.25.0] +# [sentry-sdk==1.25.1] +# [sentry-sdk==1.26.0] +# [sentry-sdk==1.27.0] +# [sentry-sdk==1.27.1] +# [sentry-sdk==1.28.0] +# [sentry-sdk==1.28.1] +# [sentry-sdk==1.29.0] +# [sentry-sdk==1.29.1] +# [sentry-sdk==1.29.2] +# [sentry-sdk==1.30.0] +# [sentry-sdk==1.31.0] +# [sentry-sdk==1.32.0] +# [sentry-sdk==1.33.0] +# [sentry-sdk==1.33.1] +# [sentry-sdk==1.34.0] +# [sentry-sdk==1.35.0] +# [sentry-sdk==1.36.0] +# [sentry-sdk==1.37.0] +# [sentry-sdk==1.37.1] +# [sentry-sdk==1.38.0] +# [sentry-sdk==1.39.0] +# [sentry-sdk==1.39.1] +# [sentry-sdk==1.39.2] +# [sentry-sdk==1.40.0] +# [sentry-sdk==1.40.1] +# [sentry-sdk==1.40.2] +# [sentry-sdk==1.40.3] +# [sentry-sdk==1.40.4] +# [sentry-sdk==1.40.5] +# [sentry-sdk==1.40.6] +# [sentry-sdk==1.41.0] +# [sentry-sdk==1.42.0] +# [sentry-sdk==1.43.0] +# [sentry-sdk==1.44.0] +# [sentry-sdk==1.44.1] +# [sentry-sdk==1.45.0] +# [sentry-sdk==1.45.1] +# [sentry-sdk==2.0.0a1] +# [sentry-sdk==2.0.0a2] +# [sentry-sdk==2.0.0rc1] +# [sentry-sdk==2.0.0rc2] +# [sentry-sdk==2.0.0rc3] +# [sentry-sdk==2.0.0rc4] +# [sentry-sdk==2.0.0rc5] +# [sentry-sdk==2.0.0rc6] +# [sentry-sdk==2.0.0] +# [sentry-sdk==2.0.1] +# [sentry-sdk==2.1.0] +# [sentry-sdk==2.1.1] +# [sentry-sdk==2.2.0] +# [sentry-sdk==2.2.1] +# [sentry-sdk==2.3.0] +# [sentry-sdk==2.3.1] +# [sentry-sdk==2.4.0] +# [sentry-sdk==2.5.0] +# [sentry-sdk==2.5.1] +# [sentry-sdk==2.6.0] +# [sentry-sdk==2.7.0] +# [sentry-sdk==2.7.1] +# [sentry-sdk==2.8.0] +# [sentry-sdk==2.9.0] +# [sentry-sdk==2.10.0] +# [sentry-sdk==2.11.0] +# [sentry-sdk==2.12.0] +# [sentry-sdk==2.13.0] +# [sentry-sdk==2.14.0] +# [sentry-sdk==2.15.0] +# [sentry-sdk==2.16.0] +# [sentry-sdk==2.17.0] +# [sentry-sdk==2.18.0] +# [sentry-sdk==2.19.0] +# [sentry-sdk==2.19.1] +# [sentry-sdk==2.19.2] +# [sentry-sdk==2.20.0] +# [sentry-sdk==2.21.0] +# [sentry-sdk==2.22.0] +# [sentry-sdk==2.23.0] +# [sentry-sdk==2.23.1] +# [sentry-sdk==2.24.0] +# [sentry-sdk==2.24.1] +# [sentry-sdk==2.25.0] +# [sentry-sdk==2.25.1] +# [sentry-sdk==2.26.0] +# [sentry-sdk==2.26.1] +# [sentry-sdk==2.27.0] +# [sentry-sdk==2.28.0] +# [sentry-sdk==2.29.0] +# [sentry-sdk==2.29.1] +# [sentry-sdk==2.30.0] +# [sentry-sdk==2.31.0] +# [sentry-sdk==2.32.0] +# [sentry-sdk==2.33.0] +# [sentry-sdk==2.33.1] +# [sentry-sdk==2.33.2] +# [sentry-sdk==2.34.0] +# [sentry-sdk==2.34.1] +# [sentry-sdk==2.35.0] +# [sentry-sdk==2.35.1] +# [sentry-sdk==2.35.2] +# [sentry-sdk==2.36.0] +# [sentry-sdk==2.37.0] +# [sentry-sdk==2.37.1] +# [sentry-sdk==2.38.0] +# [sentry-sdk==2.39.0] +# [sentry-sdk==2.40.0] +# [sentry-sdk==2.41.0] +# [sentry-sdk==2.42.0] +# [sentry-sdk==2.42.1] +# [sentry-sdk==2.43.0] +# [sentry-sdk==2.44.0] +# [sentry-sdk==2.45.0] +# [sentry-sdk==2.46.0] +# [sentry-sdk==2.47.0] +# [sentry-sdk==2.48.0] +# [sentry-sdk==2.49.0] +# [sentry-sdk==2.50.0] +# [sentry-sdk==2.51.0a1] +# [sentry-sdk==2.51.0] +# [sentry-sdk==2.52.0a1] +# [sentry-sdk==2.52.0a2] +# [sentry-sdk==2.52.0a3] +# [sentry-sdk==2.52.0a5] +# [sentry-sdk==2.52.0a6] +# [sentry-sdk==2.52.0] +# [sentry-sdk==2.53.0] +# [sentry-sdk==3.0.0a1] +# [sentry-sdk==3.0.0a2] +# [sentry-sdk==3.0.0a3] +# [sentry-sdk==3.0.0a4] +# [sentry-sdk==3.0.0a5] +# [sentry-sdk==3.0.0a6] +# [sentry-sdk==3.0.0a7] [sentry-streams==0.0.5] +python_versions = <3.14 [sentry-streams==0.0.6] +python_versions = <3.14 [sentry-streams==0.0.7] +python_versions = <3.14 [sentry-streams==0.0.8] +python_versions = <3.14 [sentry-streams==0.0.9] +python_versions = <3.14 [sentry-streams==0.0.10] +python_versions = <3.14 [sentry-streams==0.0.11] +python_versions = <3.14 [sentry-streams==0.0.12] +python_versions = <3.14 [sentry-streams==0.0.13] +python_versions = <3.14 [sentry-streams==0.0.14] +python_versions = <3.14 [sentry-streams==0.0.15] +python_versions = <3.14 [sentry-streams==0.0.16] +python_versions = <3.14 [sentry-streams==0.0.17] +python_versions = <3.14 [sentry-streams==0.0.18] +python_versions = <3.14 [sentry-streams==0.0.19] +python_versions = <3.14 [sentry-streams==0.0.20] +python_versions = <3.14 [sentry-streams==0.0.21] +python_versions = <3.14 [sentry-streams==0.0.22] +python_versions = <3.14 [sentry-streams==0.0.23] +python_versions = <3.14 [sentry-streams==0.0.24] +python_versions = <3.14 [sentry-streams==0.0.31] +python_versions = <3.14 [sentry-streams==0.0.34] +python_versions = <3.14 [sentry-streams==0.0.35] +python_versions = <3.14 [sentry-streams-k8s==0.0.1] +python_versions = <3.14 [sentry-streams-k8s==0.0.2] +python_versions = <3.14 [sentry-streams-k8s==0.0.3] +python_versions = <3.14 [sentry-usage-accountant==0.0.2] [sentry-usage-accountant==0.0.3] From d69ac98ef20b6e3fd6a3ff1cc4b74d45d4606b61 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 10:14:05 -0800 Subject: [PATCH 30/66] [skip ci] initial upgrade-python skill --- .claude/skills/upgrade-python.md | 105 + build.py | 80 +- packages.ini | 6058 +++++++++++++++--------------- 3 files changed, 3179 insertions(+), 3064 deletions(-) create mode 100644 .claude/skills/upgrade-python.md diff --git a/.claude/skills/upgrade-python.md b/.claude/skills/upgrade-python.md new file mode 100644 index 00000000..968367a8 --- /dev/null +++ b/.claude/skills/upgrade-python.md @@ -0,0 +1,105 @@ +# upgrade-python + +Adds support for a new Python version by building all packages, identifying failures, and marking them with `python_versions` restrictions. + +## Usage + +``` +/upgrade-python +``` + +Example: `/upgrade-python 3.14.3` + +The argument is the full Python version (e.g., `3.14.3`). Derive the major.minor (`3.14`) and cpython tag (`cp314`) from it. + +## Step 1: Modify files for single-version build mode + +Edit these files to build ONLY the new Python version (this speeds up CI dramatically): + +### `build.py` line 35 +Change `PYTHONS` to only the new version: +```python +PYTHONS = ((3, 14),) # temporarily building only new version +``` + +### `validate.py` line 19 +Same change: +```python +PYTHONS = ((3, 14),) # temporarily building only new version +``` + +### `docker/install-pythons` line 9 +Change `VERSIONS` to only the new full version: +```python +VERSIONS = ("3.14.3",) # temporarily building only new version +``` + +### `.github/workflows/build.yml` + +**Lines 60-63** — keep only the new cpython PATH entry: +```yaml + - run: | + echo "$PWD/pythons/cp314-cp314/bin" >> "$GITHUB_PATH" + echo "$PWD/venv/bin" >> "$GITHUB_PATH" +``` + +**Line 44** — add `--upgrade-python` flag to linux build command: +```yaml + - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io --upgrade-python +``` + +**Line 66** — add `--upgrade-python` flag to macos build command: +```yaml + - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io --upgrade-python +``` + +## Step 2: Commit and push + +Commit all changes with a message like "build: single-version mode for Python 3.14 upgrade" and push. + +## Step 3: Wait for CI, then download and parse logs + +Wait for CI to complete (it will likely fail — that's expected). + +Download logs from each build job using the GitHub CLI: + +```bash +# Get the workflow run +gh run list --branch --limit 1 + +# Get job IDs from the run +gh run view --json jobs --jq '.jobs[] | {name: .name, id: .databaseId, conclusion: .conclusion}' + +# Download logs for each job +gh api repos/getsentry/pypi/actions/jobs//logs > job-.log +``` + +Parse the logs to identify: +- **Succeeded packages**: lines matching `=== ==@` that are NOT followed by `!!! FAILED:` +- **Failed packages**: lines matching `!!! FAILED: ==: ` + +A package is considered failed if it failed on ANY platform (linux-amd64, linux-arm64, macos). + +## Step 4: Update `packages.ini` + +In one pass: + +1. **Comment out** all packages that **succeeded on all platforms** by prepending `# ` to their section header and all their settings lines. These don't need to rebuild. + +2. **Add `python_versions = bool: return False -def _build(package: Package, python: Python, dest: str, index_url: str) -> str: +def _build( + package: Package, + python: Python, + dest: str, + index_url: str, + timeout: int | None = None, +) -> str: with tempfile.TemporaryDirectory() as tmpdir: pip = (python.exe, "-mpip") @@ -569,7 +575,8 @@ def _build(package: Package, python: Python, dest: str, index_url: str) -> str: "--no-deps", f"--no-binary={package.name}", f"{package.name}=={package.version}", - ) + ), + timeout=timeout, ) (sdist,) = os.listdir(sdist_dir) sdist = os.path.join(sdist_dir, sdist) @@ -589,6 +596,7 @@ def _build(package: Package, python: Python, dest: str, index_url: str) -> str: # disable bulky "universal2" building "ARCHFLAGS": "", }, + timeout=timeout, ) (filename,) = os.listdir(build_dir) filename_full = os.path.join(build_dir, filename) @@ -616,6 +624,7 @@ def main() -> int: parser.add_argument("--pypi-url", required=True) parser.add_argument("--packages-ini", default="packages.ini") parser.add_argument("--dest", default="dist") + parser.add_argument("--upgrade-python", action="store_true") args = parser.parse_args() cfg = configparser.RawConfigParser() @@ -633,27 +642,76 @@ def main() -> int: internal_wheels = _internal_wheels(args.pypi_url) built: dict[str, list[tuple[Version, frozenset[Tag]]]] = {} + timeout = 600 if args.upgrade_python else None + failures: list[str] = [] + failed_names: set[str] = set() + all_packages = [Package.make(k, cfg[k]) for k in cfg.sections()] + + if args.upgrade_python: + # sort newest versions first within each package name so we can + # bail out early: if the newest version fails, older ones will too + by_name: dict[str, list[Package]] = {} + for p in all_packages: + by_name.setdefault(p.name, []).append(p) + all_packages = [ + p + for pkgs in by_name.values() + for p in sorted(pkgs, key=lambda p: p.version, reverse=True) + ] + for package, python in itertools.product(all_packages, pythons): if package.satisfied_by(internal_wheels, python.tags): continue elif python.version_string not in package.python_versions: continue + pkg_id = f"{package.name}=={package.version}" + + if args.upgrade_python and package.name in failed_names: + print(f"=== {pkg_id}@{python.version}") + print(f"!!! SKIPPED (newer version already failed): {pkg_id}") + failures.append(pkg_id) + continue + print(f"=== {package.name}=={package.version}@{python.version}") if package.satisfied_by(built, python.tags): print("-> just built!") else: - print("-> building...") - downloaded_wheel = _download(package, python, args.dest) - if downloaded_wheel is not None: - _add_wheel(built, downloaded_wheel) - print(f"-> downloaded! {downloaded_wheel}") - else: - built_wheel = _build(package, python, args.dest, index_url) - _add_wheel(built, built_wheel) - print(f"-> built! {built_wheel}") + try: + print("-> building...") + downloaded_wheel = _download(package, python, args.dest) + if downloaded_wheel is not None: + _add_wheel(built, downloaded_wheel) + print(f"-> downloaded! {downloaded_wheel}") + else: + built_wheel = _build( + package, + python, + args.dest, + index_url, + timeout=timeout, + ) + _add_wheel(built, built_wheel) + print(f"-> built! {built_wheel}") + except ( + subprocess.CalledProcessError, + subprocess.TimeoutExpired, + SystemExit, + ) as e: + if args.upgrade_python: + print(f"!!! FAILED: {pkg_id}: {e}") + failures.append(pkg_id) + failed_names.add(package.name) + else: + raise + + if failures: + print(f"\nFAILED PACKAGES ({len(failures)}):") + for f in failures: + print(f" - {f}") + return 1 return 0 diff --git a/packages.ini b/packages.ini index 5b0e37e8..3bbbce53 100644 --- a/packages.ini +++ b/packages.ini @@ -1,3087 +1,3039 @@ -# [aiohappyeyeballs==2.4.3] -# [aiohappyeyeballs==2.6.1] - -# [aiohttp==3.8.3] -# python_versions = <3.12 -# [aiohttp==3.8.4] -# python_versions = <3.12 -# [aiohttp==3.8.5] -# python_versions = <3.12 -# [aiohttp==3.9.1] -# python_versions = <3.13 -# [aiohttp==3.10.2] -# python_versions = <3.13 -# [aiohttp==3.10.10] -# [aiohttp==3.12.15] - -# [aiosignal==1.2.0] -# [aiosignal==1.3.1] -# [aiosignal==1.4.0] - -# [alabaster==0.7.12] -# [alabaster==1.0.0] - -# [alembic==1.0.11] - -# [amqp==2.6.1] -# [amqp==5.1.1] -# [amqp==5.2.0] -# [amqp==5.3.1] - -# [annotated-types==0.6.0] -# [annotated-types==0.7.0] - -# [anton-testing-deleteme-123==3.0.0a1] - -# [anyio==3.6.1] -# [anyio==3.7.1] -# [anyio==4.4.0] -# [anyio==4.9.0] - -# [asgiref==3.5.2] -# [asgiref==3.6.0] -# [asgiref==3.7.2] -# [asgiref==3.8.0] -# [asgiref==3.8.1] -# [asgiref==3.9.1] - -# [asn1crypto==1.5.1] - -# [async-generator==1.10] - -# [async-timeout==4.0.2] -# [async-timeout==4.0.3] - -# [attrs==19.2.0] -# [attrs==21.4.0] -# [attrs==22.1.0] -# [attrs==22.2.0] -# [attrs==23.1.0] -# [attrs==23.2.0] -# [attrs==24.2.0] -# [attrs==25.3.0] - -# [auditwheel==5.1.2] - -# [auto-type-annotate==1.0.0] -# [auto-type-annotate==1.0.1] -# [auto-type-annotate==1.1.0] -# [auto-type-annotate==1.1.1] -# [auto-type-annotate==1.1.2] - -# [avalara==20.9.0] -# [avalara==22.7.0] -# [avalara==22.8.0] - -# [avro==1.11.1] - -# [babel==2.10.3] -# [babel==2.17.0] - -# [backports-zstd==1.3.0] -# python_versions = <3.14 - -# [backrefs==5.9] - -# [bcrypt==4.0.0] -# [bcrypt==4.1.3] -# [bcrypt==4.2.0] - -# [beautifulsoup4==4.7.1] -# [beautifulsoup4==4.11.1] - -# [billiard==3.6.4.0] -# [billiard==4.0.2] -# [billiard==4.2.0] -# [billiard==4.2.1] - -# [black==22.3.0] -# validate_extras = d -# [black==22.6.0] -# validate_extras = d -# [black==22.8.0] -# validate_extras = d -# [black==22.10.0] -# validate_extras = d -# [black==23.1.0] -# validate_extras = d -# [black==23.3.0] -# validate_extras = d -# [black==23.9.1] -# validate_extras = d -# [black==23.12.0] -# validate_extras = d -# [black==24.3.0] -# validate_extras = d -# [black==24.4.2] -# validate_extras = d -# [black==24.10.0] -# validate_extras = d -# [black==25.1.0] -# validate_extras = d - -# [blinker==1.4] -# [blinker==1.5] -# [blinker==1.8.2] -# [blinker==1.9.0] - -# [boto3==1.22.12] -# [boto3==1.24.50] -# [boto3==1.24.61] -# [boto3==1.24.73] -# [boto3==1.28.26] -# [boto3==1.34.8] -# [boto3==1.34.128] - -# [botocore==1.25.12] -# [botocore==1.27.50] -# [botocore==1.27.61] -# [botocore==1.27.73] -# [botocore==1.31.26] -# [botocore==1.34.8] -# [botocore==1.34.128] - -# [brotli==1.0.9] -# python_versions = <3.12 -# [brotli==1.1.0] -# [brotli==1.2.0] - -# [build==0.8.0] -# [build==0.10.0] -# [build==1.0.3] -# [build==1.3.0] -# [build==1.4.0] - -# [cachetools==4.2.4] -# [cachetools==5.2.0] -# [cachetools==5.2.1] -# [cachetools==5.3.0] -# [cachetools==5.3.1] -# [cachetools==5.3.2] -# [cachetools==5.3.3] -# [cachetools==5.4.0] -# [cachetools==5.5.0] -# [cachetools==5.5.2] -# [cachetools==6.2.0] - -# [celery==4.4.7] -# [celery==5.0.2] -# [celery==5.0.5] -# [celery==5.1.2] -# [celery==5.2.7] -# [celery==5.3.4] -# [celery==5.3.5] -# [celery==5.3.6] -# [celery==5.4.0] -# [celery==5.5.2] - -# [celery-types==0.18.0] -# [celery-types==0.22.0] - -# [certifi==2022.5.18.1] -# [certifi==2022.6.15] -# [certifi==2022.6.15.1] -# [certifi==2022.9.14] -# [certifi==2022.9.24] -# [certifi==2022.12.7] -# [certifi==2023.5.7] -# [certifi==2023.7.22] -# [certifi==2023.11.17] -# [certifi==2024.2.2] -# [certifi==2024.6.2] -# [certifi==2024.7.4] -# [certifi==2024.8.30] -# [certifi==2025.1.31] -# [certifi==2025.4.26] -# [certifi==2025.6.15] -# [certifi==2025.7.14] -# [certifi==2025.8.3] -# [certifi==2026.1.4] - -# [cffi==1.14.6] -# apt_requires = libffi-dev -# brew_requires = libffi -# python_versions = <3.13 -# [cffi==1.15.1] -# apt_requires = libffi-dev -# brew_requires = libffi -# python_versions = <3.13 -# [cffi==1.16.0] -# apt_requires = libffi-dev -# brew_requires = libffi -# python_versions = <3.13 -# [cffi==1.17.1] -# apt_requires = libffi-dev -# brew_requires = libffi -# [cffi==2.0.0] -# apt_requires = libffi-dev -# brew_requires = libffi - -# [cfgv==3.3.1] -# [cfgv==3.4.0] - -# [chardet==3.0.4] -# [chardet==4.0.0] -# [chardet==5.0.0] -# [chardet==5.2.0] - -# [charset-normalizer==2.0.12] -# [charset-normalizer==2.1.0] -# [charset-normalizer==2.1.1] -# [charset-normalizer==3.0.1] -# python_versions = <3.13 -# [charset-normalizer==3.1.0] -# python_versions = <3.13 -# [charset-normalizer==3.2.0] -# python_versions = <3.13 -# [charset-normalizer==3.3.0] -# python_versions = <3.13 -# [charset-normalizer==3.3.2] -# python_versions = <3.13 -# [charset-normalizer==3.4.0] -# [charset-normalizer==3.4.1] -# [charset-normalizer==3.4.2] -# [charset-normalizer==3.4.3] -# [charset-normalizer==3.4.4] - -# [click==7.1.2] -# [click==8.0.4] -# [click==8.1.3] -# [click==8.1.6] -# [click==8.1.7] -# [click==8.1.8] -# [click==8.2.0] -# [click==8.2.1] -# [click==8.3.0] -# [click==8.3.1] - -# [click-didyoumean==0.3.0] -# [click-didyoumean==0.3.1] - -# [click-plugins==1.1.1] - -# [click-repl==0.2.0] -# [click-repl==0.3.0] - -# [clickhouse-driver==0.2.6] -# python_versions = <3.13 -# [clickhouse-driver==0.2.9] -# python_versions = <3.13 -# [clickhouse-driver==0.2.10] - -# [colorama==0.4.5] -# [colorama==0.4.6] - -# [confluent-kafka==2.1.1] -# apt_requires = -# patch -# wget -# brew_requires = wget -# custom_prebuild = prebuild/librdkafka v2.1.1 -# python_versions = <3.13 -# [confluent-kafka==2.3.0] -# apt_requires = -# patch -# wget -# brew_requires = wget -# custom_prebuild = prebuild/librdkafka v2.3.0 -# [confluent-kafka==2.7.0] -# apt_requires = -# patch -# wget -# brew_requires = wget -# custom_prebuild = prebuild/librdkafka v2.6.1 -# [confluent-kafka==2.8.0] -# apt_requires = -# patch -# wget -# brew_requires = wget -# custom_prebuild = prebuild/librdkafka v2.8.0 -# [confluent-kafka==2.9.0] -# apt_requires = -# patch -# wget -# brew_requires = wget -# custom_prebuild = prebuild/librdkafka v2.8.0 -# [confluent-kafka==2.12.2] -# apt_requires = -# patch -# wget -# brew_requires = wget -# custom_prebuild = prebuild/librdkafka v2.8.0 - -# [contextvars==2.4] - -# [covdefaults==2.2.0] -# [covdefaults==2.3.0] - -# [coverage==6.3.3] -# python_versions = <3.13 -# [coverage==6.4.1] -# python_versions = <3.13 -# [coverage==6.4.3] -# python_versions = <3.13 -# [coverage==6.4.4] -# python_versions = <3.13 -# [coverage==6.5.0] -# python_versions = <3.13 -# [coverage==7.1.0] -# python_versions = <3.13 -# [coverage==7.2.7] -# python_versions = <3.13 -# [coverage==7.3.4] -# python_versions = <3.13 -# [coverage==7.4.1] -# python_versions = <3.13 -# [coverage==7.6.4] - -# [coverage-enable-subprocess==1.0] - -# [croniter==0.3.37] -# [croniter==1.3.5] -# [croniter==1.3.7] -# [croniter==1.3.10] - -# [cronsim==2.6] - -# [cryptography==37.0.2] -# [cryptography==37.0.4] -# [cryptography==38.0.1] -# [cryptography==38.0.3] -# [cryptography==38.0.4] -# [cryptography==39.0.1] -# [cryptography==41.0.2] -# [cryptography==41.0.3] -# [cryptography==41.0.7] -# [cryptography==42.0.4] -# [cryptography==42.0.8] -# [cryptography==43.0.1] -# [cryptography==44.0.1] -# [cryptography==44.0.2] -# [cryptography==46.0.2] -# [cryptography==46.0.5] - -# [cssselect==1.0.3] -# [cssselect==1.1.0] -# [cssselect==1.2.0] - -# [cssutils==2.4.0] -# [cssutils==2.6.0] -# [cssutils==2.9.0] - -# [cython==0.29.32] -# [cython==3.0.11] - -# [datadog==0.21.0] -# [datadog==0.29.3] -# [datadog==0.31.0] -# [datadog==0.35.0] -# [datadog==0.39.0] -# [datadog==0.44.0] -# [datadog==0.46.0] -# [datadog==0.49.1] -# [datadog==0.51.0] -# [datadog==0.52.1] - -# [decorator==5.1.1] - -# [delocate==0.10.2] -# [delocate==0.10.4] -# [delocate==0.10.7] - -# [deprecated==1.2.13] -# [deprecated==1.2.14] -# [deprecated==1.2.18] - -# [devservices==0.0.2] -# [devservices==0.0.3] -# [devservices==0.0.4] -# [devservices==0.0.5] -# [devservices==1.0.0] -# [devservices==1.0.1] -# [devservices==1.0.2] -# [devservices==1.0.3] -# [devservices==1.0.4] -# [devservices==1.0.5] -# [devservices==1.0.6] -# [devservices==1.0.7] -# [devservices==1.0.8] -# [devservices==1.0.9] -# [devservices==1.0.10] -# [devservices==1.0.11] -# [devservices==1.0.12] -# [devservices==1.0.13] -# [devservices==1.0.14] -# [devservices==1.0.15] -# [devservices==1.0.16] -# [devservices==1.0.17] -# [devservices==1.0.18] -# [devservices==1.1.0] -# [devservices==1.1.1] -# [devservices==1.1.2] -# [devservices==1.1.3] -# [devservices==1.1.4] -# [devservices==1.1.5] -# [devservices==1.1.6] -# [devservices==1.2.0] -# [devservices==1.2.1] -# [devservices==1.2.2] -# [devservices==1.2.3] -# [devservices==1.2.4] - -# [dictdiffer==0.9.0] - -# [dictpath==0.1.3] -# validate_incorrect_missing_deps = six - -# [distlib==0.3.4] -# [distlib==0.3.5] -# [distlib==0.3.6] -# [distlib==0.3.7] -# [distlib==0.3.8] -# [distlib==0.3.9] -# [distlib==0.4.0] - -# [distro==1.5.0] -# [distro==1.8.0] -# [distro==1.9.0] - -# [django==2.2.28] -# [django==3.0.14] -# [django==3.1.14] -# [django==3.2.16] -# [django==3.2.20] -# [django==3.2.21] -# [django==3.2.22] -# [django==3.2.23] -# [django==4.0.10] -# [django==4.1] -# [django==4.1.1] -# [django==4.1.2] -# [django==4.1.7] -# [django==4.1.10] -# [django==4.2.1] -# [django==4.2.2] -# [django==4.2.3] -# [django==4.2.4] -# [django==4.2.5] -# [django==4.2.6] -# [django==4.2.7] -# [django==4.2.8] -# [django==4.2.11] -# [django==5.0.1] -# [django==5.0.2] -# [django==5.0.3] -# [django==5.0.4] -# [django==5.0.6] -# [django==5.0.7] -# [django==5.0.8] -# [django==5.1] -# [django==5.1.1] -# [django==5.1.2] -# [django==5.1.4] -# [django==5.1.5] -# [django==5.1.6] -# [django==5.1.7] -# [django==5.1.8] -# [django==5.1.9] -# [django==5.2] -# [django==5.2.1] -# [django==5.2.3] -# [django==5.2.4] -# [django==5.2.5] -# [django==5.2.6] -# [django==5.2.7] -# [django==5.2.8] -# [django==5.2.11] - -# [django-crispy-forms==1.14.0] - -# [django-csp==3.7] -# [django-csp==3.8] - -# [django-pg-zero-downtime-migrations==0.11] -# [django-pg-zero-downtime-migrations==0.12] -# [django-pg-zero-downtime-migrations==0.13] -# [django-pg-zero-downtime-migrations==0.16] -# [django-pg-zero-downtime-migrations==0.18] - -# [django-pgtrigger==4.15.2] -# validate_incorrect_missing_deps = psycopg2-binary - -# [django-stubs==1.12.0] -# [django-stubs==1.15.0] -# [django-stubs==4.2.0] -# [django-stubs==4.2.3] -# [django-stubs==4.2.4] -# [django-stubs==4.2.5] -# [django-stubs==4.2.6] -# [django-stubs==4.2.7] -# [django-stubs==5.2.7] -# [django-stubs==5.2.9] - -# [django-stubs-ext==0.5.0] -# [django-stubs-ext==0.7.0] -# [django-stubs-ext==4.2.0] -# [django-stubs-ext==4.2.2] -# [django-stubs-ext==4.2.5] -# [django-stubs-ext==4.2.7] -# [django-stubs-ext==5.0.0] -# [django-stubs-ext==5.0.2] -# [django-stubs-ext==5.0.4] -# [django-stubs-ext==5.1.0] -# [django-stubs-ext==5.1.1] -# [django-stubs-ext==5.1.2] -# [django-stubs-ext==5.1.3] -# [django-stubs-ext==5.2.0] -# [django-stubs-ext==5.2.1] -# [django-stubs-ext==5.2.2] -# [django-stubs-ext==5.2.3] -# [django-stubs-ext==5.2.4] -# [django-stubs-ext==5.2.5] -# [django-stubs-ext==5.2.7] -# [django-stubs-ext==5.2.9] - -# [djangorestframework==3.12.4] -# [djangorestframework==3.13.1] -# [djangorestframework==3.14.0] -# [djangorestframework==3.15.1] -# [djangorestframework==3.15.2] -# [djangorestframework==3.16.0] -# [djangorestframework==3.16.1] - -# [djangorestframework-stubs==3.14.0] -# [djangorestframework-stubs==3.14.2] -# [djangorestframework-stubs==3.14.4] -# [djangorestframework-stubs==3.14.5] -# [djangorestframework-stubs==3.16.8] - -# [dnspython==2.8.0] - -# [docker==3.7.0] -# [docker==3.7.3] -# [docker==5.0.3] -# [docker==6.0.0] -# [docker==6.1.3] -# [docker==7.0.0] -# [docker==7.1.0] - -# [docker-pycreds==0.4.0] - -# [docopt==0.6.2] - -# [docutils==0.18.1] -# [docutils==0.19] -# [docutils==0.22.4] - -# [drf-spectacular==0.22.1] -# [drf-spectacular==0.23.1] -# [drf-spectacular==0.24.0] -# [drf-spectacular==0.26.3] -# [drf-spectacular==0.27.2] - -# [dumb-pypi==1.13.0] -# [dumb-pypi==1.14.0] -# [dumb-pypi==1.15.0] - -# [ecdsa==0.18.0] - -# [email-reply-parser==0.5.12] - -# [email-validator==2.3.0] - -# [ephemeral-port-reserve==1.1.4] - -# [exam==0.10.6] - -# [exceptiongroup==1.0.0rc9] -# [exceptiongroup==1.1.0] -# [exceptiongroup==1.1.3] -# [exceptiongroup==1.2.0] -# [exceptiongroup==1.2.1] -# [exceptiongroup==1.2.2] - -# [execnet==1.9.0] -# [execnet==2.0.2] - -# [fastjsonschema==2.16.2] -# [fastjsonschema==2.20.0] -# [fastjsonschema==2.21.2] - -# [fido2==0.9.2] -# [fido2==1.0.0] -# [fido2==1.1.2] - -# [filelock==3.7.0] -# [filelock==3.7.1] -# [filelock==3.8.0] -# [filelock==3.9.0] -# [filelock==3.12.1] -# [filelock==3.12.4] -# [filelock==3.13.1] -# [filelock==3.15.3] -# [filelock==3.16.1] -# [filelock==3.18.0] -# [filelock==3.19.1] -# [filelock==3.20.3] - -# [filetype==1.2.0] - -# [flake8==4.0.1] -# [flake8==5.0.2] -# [flake8==5.0.4] -# [flake8==6.0.0] -# [flake8==6.1.0] -# [flake8==7.0.0] -# [flake8==7.2.0] -# [flake8==7.3.0] - -# [flake8-bugbear==22.7.1] -# [flake8-bugbear==22.8.23] -# [flake8-bugbear==22.9.11] -# [flake8-bugbear==22.9.23] -# [flake8-bugbear==22.10.27] -# [flake8-bugbear==23.2.13] -# [flake8-bugbear==23.6.5] -# [flake8-bugbear==23.9.16] -# [flake8-bugbear==23.12.2] - -# [flake8-logging==1.4.0] -# [flake8-logging==1.5.0] - -# [flaky==3.8.1] - -# [flask==2.1.2] -# [flask==2.2.2] -# [flask==2.2.5] -# [flask==3.0.3] -# [flask==3.1.0] - -# [flask-redis==0.3.0] -# [flask-redis==0.4.0] - -# [freezegun==1.1.0] -# [freezegun==1.2.1] -# [freezegun==1.2.2] -# [freezegun==1.5.5] - -# [frozenlist==1.4.1] -# [frozenlist==1.5.0] -# [frozenlist==1.7.0] - -# [fsspec==2025.9.0] - -# [ghp-import==2.1.0] - -# [gitdb==4.0.5] -# [gitdb==4.0.7] - -# [gitpython==3.1.12] -# [gitpython==3.1.41] - -# [gojsonnet==0.20.0] -# apt_requires = golang -# brew_requires = go -# python_versions = <3.13 - -# [google-api-core==1.32.0] -# [google-api-core==2.8.2] -# [google-api-core==2.10.1] -# [google-api-core==2.11.0] -# [google-api-core==2.12.0] -# [google-api-core==2.15.0] -# [google-api-core==2.16.2] -# [google-api-core==2.17.1] -# [google-api-core==2.19.0] -# [google-api-core==2.19.1] -# [google-api-core==2.19.2] -# [google-api-core==2.21.0] -# [google-api-core==2.24.2] -# [google-api-core==2.25.1] - -# [google-api-python-client==2.88.0] -# [google-api-python-client==2.137.0] -# [google-api-python-client==2.145.0] -# [google-api-python-client==2.181.0] - -# [google-auth==1.29.0] -# [google-auth==1.35.0] -# [google-auth==2.11.0] -# [google-auth==2.16.0] -# [google-auth==2.19.1] -# [google-auth==2.22.0] -# [google-auth==2.23.0] -# [google-auth==2.23.3] -# [google-auth==2.23.4] -# [google-auth==2.25.2] -# [google-auth==2.27.0] -# [google-auth==2.28.2] -# [google-auth==2.29.0] -# [google-auth==2.32.0] -# [google-auth==2.34.0] -# [google-auth==2.35.0] -# [google-auth==2.38.0] -# [google-auth==2.39.0] -# [google-auth==2.40.0] -# [google-auth==2.40.3] -# [google-auth==2.41.1] - -# [google-auth-httplib2==0.1.0] -# [google-auth-httplib2==0.2.0] - -# [google-cloud-appengine-logging==1.8.0] - -# [google-cloud-audit-log==0.4.0] - -# [google-cloud-bigtable==1.6.1] -# [google-cloud-bigtable==2.11.3] -# [google-cloud-bigtable==2.22.0] -# [google-cloud-bigtable==2.26.0] -# [google-cloud-bigtable==2.30.1] -# [google-cloud-bigtable==2.31.0] - -# [google-cloud-build==3.20.1] -# [google-cloud-build==3.22.0] -# [google-cloud-build==3.24.2] -# [google-cloud-build==3.31.2] - -# [google-cloud-compute==1.19.2] - -# [google-cloud-core==1.5.0] -# [google-cloud-core==2.3.2] -# [google-cloud-core==2.4.1] -# [google-cloud-core==2.4.3] - -# [google-cloud-functions==1.8.0] -# [google-cloud-functions==1.8.1] -# [google-cloud-functions==1.14.0] -# [google-cloud-functions==1.17.0] -# [google-cloud-functions==1.20.4] - -# [google-cloud-kms==2.19.1] -# [google-cloud-kms==2.20.0] -# [google-cloud-kms==2.24.2] -# [google-cloud-kms==3.5.1] - -# [google-cloud-logging==3.13.0] - -# [google-cloud-os-login==2.14.6] - -# [google-cloud-pubsub==2.2.0] -# [google-cloud-pubsub==2.13.6] -# [google-cloud-pubsub==2.19.0] -# [google-cloud-pubsub==2.23.0] -# [google-cloud-pubsub==2.31.0] - -# [google-cloud-secret-manager==2.12.6] -# [google-cloud-secret-manager==2.15.0] -# [google-cloud-secret-manager==2.20.2] - -# [google-cloud-spanner==3.17.0] -# [google-cloud-spanner==3.19.0] -# [google-cloud-spanner==3.20.0] -# [google-cloud-spanner==3.40.1] -# [google-cloud-spanner==3.43.0] -# [google-cloud-spanner==3.46.0] -# [google-cloud-spanner==3.48.0] -# [google-cloud-spanner==3.49.0] -# [google-cloud-spanner==3.55.0] - -# [google-cloud-storage==1.35.0] -# [google-cloud-storage==2.5.0] -# [google-cloud-storage==2.14.0] -# [google-cloud-storage==2.18.0] -# [google-cloud-storage==3.2.0] - -# [google-cloud-storage-transfer==1.17.0] - -# [google-crc32c==1.5.0] -# apt_requires = cmake -# brew_requires = cmake -# custom_prebuild = prebuild/crc32c 1.1.2 -# [google-crc32c==1.6.0] -# apt_requires = cmake -# brew_requires = cmake -# custom_prebuild = prebuild/crc32c 1.1.2 -# [google-crc32c==1.7.1] -# apt_requires = cmake -# brew_requires = cmake -# custom_prebuild = prebuild/crc32c 1.1.2 - -# [google-genai==1.13.0] - -# [google-resumable-media==1.3.3] -# [google-resumable-media==2.3.3] -# [google-resumable-media==2.7.0] -# [google-resumable-media==2.7.2] - -# [googleapis-common-protos==1.56.2] -# [googleapis-common-protos==1.56.4] -# [googleapis-common-protos==1.58.0] -# [googleapis-common-protos==1.59.0] -# [googleapis-common-protos==1.60.0] -# [googleapis-common-protos==1.62.0] -# [googleapis-common-protos==1.63.0] -# [googleapis-common-protos==1.63.2] -# [googleapis-common-protos==1.65.0] -# [googleapis-common-protos==1.70.0] - -# [granian==2.5.4] -# validate_extras = pname,reload,uvloop -# [granian==2.5.5] -# validate_extras = pname,reload,uvloop -# [granian==2.5.6] -# validate_extras = pname,reload,uvloop -# [granian==2.5.7] -# validate_extras = pname,reload,uvloop -# [granian==2.6.0] -# validate_extras = pname,reload,uvloop -# [granian==2.6.1] -# validate_extras = pname,reload,uvloop -# [granian==2.7.0] -# validate_extras = pname,reload,uvloop - -# [greenlet==1.1.3] -# python_versions = <3.12 - -# [grpc-google-iam-v1==0.12.4] -# [grpc-google-iam-v1==0.12.6] -# [grpc-google-iam-v1==0.13.0] -# [grpc-google-iam-v1==0.13.1] -# [grpc-google-iam-v1==0.14.2] - -# [grpc-interceptor==0.15.4] - -# [grpc-stubs==1.53.0.5] -# [grpc-stubs==1.53.0.6] - -# [grpcio==1.56.0] -# python_versions = <3.12 -# [grpcio==1.59.0] -# python_versions = <3.13 -# [grpcio==1.60.0] -# python_versions = <3.13 -# [grpcio==1.60.1] -# python_versions = <3.13 -# [grpcio==1.62.1] -# python_versions = <3.13 -# [grpcio==1.64.0] -# python_versions = <3.13 -# [grpcio==1.65.4] -# python_versions = <3.13 -# [grpcio==1.66.1] -# python_versions = <3.13 -# [grpcio==1.67.0] -# python_versions = <3.14 -# [grpcio==1.72.0rc1] -# python_versions = <3.14 -# [grpcio==1.73.1] -# python_versions = <3.14 -# [grpcio==1.75.1] - -# [grpcio-status==1.47.0] -# [grpcio-status==1.48.1] -# [grpcio-status==1.51.1] -# [grpcio-status==1.56.0] -# [grpcio-status==1.59.0] -# [grpcio-status==1.60.0] -# [grpcio-status==1.60.1] -# [grpcio-status==1.62.1] -# [grpcio-status==1.62.2] -# [grpcio-status==1.66.1] -# [grpcio-status==1.67.0] -# [grpcio-status==1.72.0rc1] -# [grpcio-status==1.73.1] -# [grpcio-status==1.75.1] - -# [h11==0.9.0] -# [h11==0.12.0] -# [h11==0.13.0] -# [h11==0.14.0] -# [h11==0.16.0] - -# [h2==4.1.0] -# [h2==4.2.0] -# [h2==4.3.0] - -# [hera==5.25.1] - -# [hf-xet==1.1.10] - -# [hiredis==0.3.1] -# python_versions = <3.12 -# [hiredis==2.0.0] -# python_versions = <3.12 -# [hiredis==2.3.2] -# [hiredis==2.4.0] -# [hiredis==3.0.0] - -# [honcho==1.0.0] -# [honcho==1.0.1] -# [honcho==1.1.0] -# [honcho==2.0.0] - -# [hpack==4.0.0] -# [hpack==4.1.0] - -# [httpcore==0.11.1] -# [httpcore==0.15.0] -# [httpcore==1.0.2] -# [httpcore==1.0.5] -# [httpcore==1.0.9] - -# [httplib2==0.22.0] -# [httplib2==0.31.0] - -# [httpx==0.15.4] -# [httpx==0.23.0] -# [httpx==0.25.2] -# [httpx==0.27.0] -# [httpx==0.27.2] -# [httpx==0.28.1] - -# [huggingface-hub==0.35.3] - -# [hyperframe==6.0.1] -# [hyperframe==6.1.0] - -# [hypothesis==6.61.0] -# validate_extras = pytest - -# [identify==2.5.1] -# [identify==2.5.3] -# [identify==2.5.5] -# [identify==2.5.18] -# [identify==2.5.24] -# [identify==2.5.29] -# [identify==2.5.33] -# [identify==2.6.1] -# [identify==2.6.9] - -# [idna==2.8] -# [idna==2.10] -# [idna==3.2] -# [idna==3.3] -# [idna==3.4] -# [idna==3.6] -# [idna==3.7] -# [idna==3.8] -# [idna==3.10] -# [idna==3.11] - -# [imagesize==1.4.1] - -# [immutables==0.15] -# python_versions = <3.12 - -# [importlib-metadata==3.10.1] -# [importlib-metadata==4.6.4] -# [importlib-metadata==4.12.0] -# [importlib-metadata==6.0.0] -# [importlib-metadata==7.1.0] -# [importlib-metadata==8.6.1] -# [importlib-metadata==8.7.0] - -# [importlib-resources==5.8.0] -# [importlib-resources==5.9.0] - -# [inflection==0.5.1] - -# [iniconfig==1.1.1] -# [iniconfig==2.0.0] - -# [iso3166==2.1.1] - -# [isodate==0.6.1] - -# [isort==5.10.1] -# [isort==5.12.0] -# [isort==5.13.2] -# [isort==6.0.1] - -# [itsdangerous==2.1.2] -# [itsdangerous==2.2.0] - -# [jinja2==3.0.3] -# [jinja2==3.1.0] -# [jinja2==3.1.2] -# [jinja2==3.1.3] -# [jinja2==3.1.4] -# [jinja2==3.1.6] - -# [jiter==0.9.0] -# python_versions = <3.14 -# [jiter==0.10.0] -# python_versions = <3.14 - -# [jmespath==0.10.0] -# [jmespath==1.0.1] - -# [johen==0.1.3] -# [johen==0.1.4] -# [johen==0.1.5] - -# [jsonnet==0.20.0] -# python_versions = <3.13 - -# [jsonpatch==1.33] - -# [jsonpath-ng==1.6.1] - -# [jsonpointer==3.0.0] - -# [jsonschema==3.2.0] -# [jsonschema==4.5.1] -# [jsonschema==4.7.1] -# [jsonschema==4.9.1] -# [jsonschema==4.14.0] -# [jsonschema==4.16.0] -# [jsonschema==4.17.3] -# [jsonschema==4.18.4] -# [jsonschema==4.20.0] -# [jsonschema==4.23.0] - -# [jsonschema-path==0.3.2] - -# [jsonschema-spec==0.1.3] -# [jsonschema-spec==0.2.3] -# [jsonschema-spec==0.2.4] - -# [jsonschema-specifications==2023.7.1] -# [jsonschema-specifications==2023.11.1] -# [jsonschema-specifications==2023.12.1] - -# [jsonschema2md==0.4.0] - -# [kombu==4.6.11] -# [kombu==5.2.4] -# [kombu==5.3.3] -# [kombu==5.3.4] -# [kombu==5.3.6] -# [kombu==5.4.2] -# [kombu==5.5.3] - -# [kubernetes==19.15.0] -# [kubernetes==24.2.0] -# [kubernetes==27.2.0] -# [kubernetes==30.1.0] - -# [lark==1.1.9] -# [lark==1.2.2] - -# [lark-parser==0.10.1] - -# [lazy-object-proxy==1.7.1] -# [lazy-object-proxy==1.9.0] -# [lazy-object-proxy==1.10.0] - -# [librt==0.7.8] +[aiohappyeyeballs==2.4.3] +[aiohappyeyeballs==2.6.1] -# [lief==0.16.6] -# python_versions = <3.14 +[aiohttp==3.8.3] +python_versions = <3.12 +[aiohttp==3.8.4] +python_versions = <3.12 +[aiohttp==3.8.5] +python_versions = <3.12 +[aiohttp==3.9.1] +python_versions = <3.13 +[aiohttp==3.10.2] +python_versions = <3.13 +[aiohttp==3.10.10] +[aiohttp==3.12.15] + +[aiosignal==1.2.0] +[aiosignal==1.3.1] +[aiosignal==1.4.0] + +[alabaster==0.7.12] +[alabaster==1.0.0] + +[alembic==1.0.11] + +[amqp==2.6.1] +[amqp==5.1.1] +[amqp==5.2.0] +[amqp==5.3.1] + +[annotated-types==0.6.0] +[annotated-types==0.7.0] + +[anton-testing-deleteme-123==3.0.0a1] + +[anyio==3.6.1] +[anyio==3.7.1] +[anyio==4.4.0] +[anyio==4.9.0] + +[asgiref==3.5.2] +[asgiref==3.6.0] +[asgiref==3.7.2] +[asgiref==3.8.0] +[asgiref==3.8.1] +[asgiref==3.9.1] + +[asn1crypto==1.5.1] + +[async-generator==1.10] + +[async-timeout==4.0.2] +[async-timeout==4.0.3] + +[attrs==19.2.0] +[attrs==21.4.0] +[attrs==22.1.0] +[attrs==22.2.0] +[attrs==23.1.0] +[attrs==23.2.0] +[attrs==24.2.0] +[attrs==25.3.0] + +[auditwheel==5.1.2] + +[auto-type-annotate==1.0.0] +[auto-type-annotate==1.0.1] +[auto-type-annotate==1.1.0] +[auto-type-annotate==1.1.1] +[auto-type-annotate==1.1.2] + +[avalara==20.9.0] +[avalara==22.7.0] +[avalara==22.8.0] + +[avro==1.11.1] + +[babel==2.10.3] +[babel==2.17.0] + +[backports-zstd==1.3.0] + +[backrefs==5.9] + +[bcrypt==4.0.0] +[bcrypt==4.1.3] +[bcrypt==4.2.0] + +[beautifulsoup4==4.7.1] +[beautifulsoup4==4.11.1] + +[billiard==3.6.4.0] +[billiard==4.0.2] +[billiard==4.2.0] +[billiard==4.2.1] + +[black==22.3.0] +validate_extras = d +[black==22.6.0] +validate_extras = d +[black==22.8.0] +validate_extras = d +[black==22.10.0] +validate_extras = d +[black==23.1.0] +validate_extras = d +[black==23.3.0] +validate_extras = d +[black==23.9.1] +validate_extras = d +[black==23.12.0] +validate_extras = d +[black==24.3.0] +validate_extras = d +[black==24.4.2] +validate_extras = d +[black==24.10.0] +validate_extras = d +[black==25.1.0] +validate_extras = d + +[blinker==1.4] +[blinker==1.5] +[blinker==1.8.2] +[blinker==1.9.0] + +[boto3==1.22.12] +[boto3==1.24.50] +[boto3==1.24.61] +[boto3==1.24.73] +[boto3==1.28.26] +[boto3==1.34.8] +[boto3==1.34.128] + +[botocore==1.25.12] +[botocore==1.27.50] +[botocore==1.27.61] +[botocore==1.27.73] +[botocore==1.31.26] +[botocore==1.34.8] +[botocore==1.34.128] + +[brotli==1.0.9] +python_versions = <3.12 +[brotli==1.1.0] +[brotli==1.2.0] + +[build==0.8.0] +[build==0.10.0] +[build==1.0.3] +[build==1.3.0] +[build==1.4.0] + +[cachetools==4.2.4] +[cachetools==5.2.0] +[cachetools==5.2.1] +[cachetools==5.3.0] +[cachetools==5.3.1] +[cachetools==5.3.2] +[cachetools==5.3.3] +[cachetools==5.4.0] +[cachetools==5.5.0] +[cachetools==5.5.2] +[cachetools==6.2.0] + +[celery==4.4.7] +[celery==5.0.2] +[celery==5.0.5] +[celery==5.1.2] +[celery==5.2.7] +[celery==5.3.4] +[celery==5.3.5] +[celery==5.3.6] +[celery==5.4.0] +[celery==5.5.2] + +[celery-types==0.18.0] +[celery-types==0.22.0] + +[certifi==2022.5.18.1] +[certifi==2022.6.15] +[certifi==2022.6.15.1] +[certifi==2022.9.14] +[certifi==2022.9.24] +[certifi==2022.12.7] +[certifi==2023.5.7] +[certifi==2023.7.22] +[certifi==2023.11.17] +[certifi==2024.2.2] +[certifi==2024.6.2] +[certifi==2024.7.4] +[certifi==2024.8.30] +[certifi==2025.1.31] +[certifi==2025.4.26] +[certifi==2025.6.15] +[certifi==2025.7.14] +[certifi==2025.8.3] +[certifi==2026.1.4] + +[cffi==1.14.6] +apt_requires = libffi-dev +brew_requires = libffi +python_versions = <3.13 +[cffi==1.15.1] +apt_requires = libffi-dev +brew_requires = libffi +python_versions = <3.13 +[cffi==1.16.0] +apt_requires = libffi-dev +brew_requires = libffi +python_versions = <3.13 +[cffi==1.17.1] +apt_requires = libffi-dev +brew_requires = libffi +[cffi==2.0.0] +apt_requires = libffi-dev +brew_requires = libffi + +[cfgv==3.3.1] +[cfgv==3.4.0] + +[chardet==3.0.4] +[chardet==4.0.0] +[chardet==5.0.0] +[chardet==5.2.0] + +[charset-normalizer==2.0.12] +[charset-normalizer==2.1.0] +[charset-normalizer==2.1.1] +[charset-normalizer==3.0.1] +python_versions = <3.13 +[charset-normalizer==3.1.0] +python_versions = <3.13 +[charset-normalizer==3.2.0] +python_versions = <3.13 +[charset-normalizer==3.3.0] +python_versions = <3.13 +[charset-normalizer==3.3.2] +python_versions = <3.13 +[charset-normalizer==3.4.0] +[charset-normalizer==3.4.1] +[charset-normalizer==3.4.2] +[charset-normalizer==3.4.3] +[charset-normalizer==3.4.4] + +[click==7.1.2] +[click==8.0.4] +[click==8.1.3] +[click==8.1.6] +[click==8.1.7] +[click==8.1.8] +[click==8.2.0] +[click==8.2.1] +[click==8.3.0] +[click==8.3.1] + +[click-didyoumean==0.3.0] +[click-didyoumean==0.3.1] + +[click-plugins==1.1.1] + +[click-repl==0.2.0] +[click-repl==0.3.0] + +[clickhouse-driver==0.2.6] +python_versions = <3.13 +[clickhouse-driver==0.2.9] +python_versions = <3.13 +[clickhouse-driver==0.2.10] + +[colorama==0.4.5] +[colorama==0.4.6] + +[confluent-kafka==2.1.1] +apt_requires = + patch + wget +brew_requires = wget +custom_prebuild = prebuild/librdkafka v2.1.1 +python_versions = <3.13 +[confluent-kafka==2.3.0] +apt_requires = + patch + wget +brew_requires = wget +custom_prebuild = prebuild/librdkafka v2.3.0 +[confluent-kafka==2.7.0] +apt_requires = + patch + wget +brew_requires = wget +custom_prebuild = prebuild/librdkafka v2.6.1 +[confluent-kafka==2.8.0] +apt_requires = + patch + wget +brew_requires = wget +custom_prebuild = prebuild/librdkafka v2.8.0 +[confluent-kafka==2.9.0] +apt_requires = + patch + wget +brew_requires = wget +custom_prebuild = prebuild/librdkafka v2.8.0 +[confluent-kafka==2.12.2] +apt_requires = + patch + wget +brew_requires = wget +custom_prebuild = prebuild/librdkafka v2.8.0 + +[contextvars==2.4] + +[covdefaults==2.2.0] +[covdefaults==2.3.0] + +[coverage==6.3.3] +python_versions = <3.13 +[coverage==6.4.1] +python_versions = <3.13 +[coverage==6.4.3] +python_versions = <3.13 +[coverage==6.4.4] +python_versions = <3.13 +[coverage==6.5.0] +python_versions = <3.13 +[coverage==7.1.0] +python_versions = <3.13 +[coverage==7.2.7] +python_versions = <3.13 +[coverage==7.3.4] +python_versions = <3.13 +[coverage==7.4.1] +python_versions = <3.13 +[coverage==7.6.4] + +[coverage-enable-subprocess==1.0] + +[croniter==0.3.37] +[croniter==1.3.5] +[croniter==1.3.7] +[croniter==1.3.10] + +[cronsim==2.6] + +[cryptography==37.0.2] +[cryptography==37.0.4] +[cryptography==38.0.1] +[cryptography==38.0.3] +[cryptography==38.0.4] +[cryptography==39.0.1] +[cryptography==41.0.2] +[cryptography==41.0.3] +[cryptography==41.0.7] +[cryptography==42.0.4] +[cryptography==42.0.8] +[cryptography==43.0.1] +[cryptography==44.0.1] +[cryptography==44.0.2] +[cryptography==46.0.2] +[cryptography==46.0.5] + +[cssselect==1.0.3] +[cssselect==1.1.0] +[cssselect==1.2.0] + +[cssutils==2.4.0] +[cssutils==2.6.0] +[cssutils==2.9.0] + +[cython==0.29.32] +[cython==3.0.11] + +[datadog==0.21.0] +[datadog==0.29.3] +[datadog==0.31.0] +[datadog==0.35.0] +[datadog==0.39.0] +[datadog==0.44.0] +[datadog==0.46.0] +[datadog==0.49.1] +[datadog==0.51.0] +[datadog==0.52.1] + +[decorator==5.1.1] + +[delocate==0.10.2] +[delocate==0.10.4] +[delocate==0.10.7] + +[deprecated==1.2.13] +[deprecated==1.2.14] +[deprecated==1.2.18] + +[devservices==0.0.2] +[devservices==0.0.3] +[devservices==0.0.4] +[devservices==0.0.5] +[devservices==1.0.0] +[devservices==1.0.1] +[devservices==1.0.2] +[devservices==1.0.3] +[devservices==1.0.4] +[devservices==1.0.5] +[devservices==1.0.6] +[devservices==1.0.7] +[devservices==1.0.8] +[devservices==1.0.9] +[devservices==1.0.10] +[devservices==1.0.11] +[devservices==1.0.12] +[devservices==1.0.13] +[devservices==1.0.14] +[devservices==1.0.15] +[devservices==1.0.16] +[devservices==1.0.17] +[devservices==1.0.18] +[devservices==1.1.0] +[devservices==1.1.1] +[devservices==1.1.2] +[devservices==1.1.3] +[devservices==1.1.4] +[devservices==1.1.5] +[devservices==1.1.6] +[devservices==1.2.0] +[devservices==1.2.1] +[devservices==1.2.2] +[devservices==1.2.3] +[devservices==1.2.4] + +[dictdiffer==0.9.0] + +[dictpath==0.1.3] +validate_incorrect_missing_deps = six + +[distlib==0.3.4] +[distlib==0.3.5] +[distlib==0.3.6] +[distlib==0.3.7] +[distlib==0.3.8] +[distlib==0.3.9] +[distlib==0.4.0] + +[distro==1.5.0] +[distro==1.8.0] +[distro==1.9.0] + +[django==2.2.28] +[django==3.0.14] +[django==3.1.14] +[django==3.2.16] +[django==3.2.20] +[django==3.2.21] +[django==3.2.22] +[django==3.2.23] +[django==4.0.10] +[django==4.1] +[django==4.1.1] +[django==4.1.2] +[django==4.1.7] +[django==4.1.10] +[django==4.2.1] +[django==4.2.2] +[django==4.2.3] +[django==4.2.4] +[django==4.2.5] +[django==4.2.6] +[django==4.2.7] +[django==4.2.8] +[django==4.2.11] +[django==5.0.1] +[django==5.0.2] +[django==5.0.3] +[django==5.0.4] +[django==5.0.6] +[django==5.0.7] +[django==5.0.8] +[django==5.1] +[django==5.1.1] +[django==5.1.2] +[django==5.1.4] +[django==5.1.5] +[django==5.1.6] +[django==5.1.7] +[django==5.1.8] +[django==5.1.9] +[django==5.2] +[django==5.2.1] +[django==5.2.3] +[django==5.2.4] +[django==5.2.5] +[django==5.2.6] +[django==5.2.7] +[django==5.2.8] +[django==5.2.11] + +[django-crispy-forms==1.14.0] + +[django-csp==3.7] +[django-csp==3.8] + +[django-pg-zero-downtime-migrations==0.11] +[django-pg-zero-downtime-migrations==0.12] +[django-pg-zero-downtime-migrations==0.13] +[django-pg-zero-downtime-migrations==0.16] +[django-pg-zero-downtime-migrations==0.18] + +[django-pgtrigger==4.15.2] +validate_incorrect_missing_deps = psycopg2-binary + +[django-stubs==1.12.0] +[django-stubs==1.15.0] +[django-stubs==4.2.0] +[django-stubs==4.2.3] +[django-stubs==4.2.4] +[django-stubs==4.2.5] +[django-stubs==4.2.6] +[django-stubs==4.2.7] +[django-stubs==5.2.7] +[django-stubs==5.2.9] + +[django-stubs-ext==0.5.0] +[django-stubs-ext==0.7.0] +[django-stubs-ext==4.2.0] +[django-stubs-ext==4.2.2] +[django-stubs-ext==4.2.5] +[django-stubs-ext==4.2.7] +[django-stubs-ext==5.0.0] +[django-stubs-ext==5.0.2] +[django-stubs-ext==5.0.4] +[django-stubs-ext==5.1.0] +[django-stubs-ext==5.1.1] +[django-stubs-ext==5.1.2] +[django-stubs-ext==5.1.3] +[django-stubs-ext==5.2.0] +[django-stubs-ext==5.2.1] +[django-stubs-ext==5.2.2] +[django-stubs-ext==5.2.3] +[django-stubs-ext==5.2.4] +[django-stubs-ext==5.2.5] +[django-stubs-ext==5.2.7] +[django-stubs-ext==5.2.9] + +[djangorestframework==3.12.4] +[djangorestframework==3.13.1] +[djangorestframework==3.14.0] +[djangorestframework==3.15.1] +[djangorestframework==3.15.2] +[djangorestframework==3.16.0] +[djangorestframework==3.16.1] + +[djangorestframework-stubs==3.14.0] +[djangorestframework-stubs==3.14.2] +[djangorestframework-stubs==3.14.4] +[djangorestframework-stubs==3.14.5] +[djangorestframework-stubs==3.16.8] + +[dnspython==2.8.0] + +[docker==3.7.0] +[docker==3.7.3] +[docker==5.0.3] +[docker==6.0.0] +[docker==6.1.3] +[docker==7.0.0] +[docker==7.1.0] + +[docker-pycreds==0.4.0] + +[docopt==0.6.2] + +[docutils==0.18.1] +[docutils==0.19] +[docutils==0.22.4] + +[drf-spectacular==0.22.1] +[drf-spectacular==0.23.1] +[drf-spectacular==0.24.0] +[drf-spectacular==0.26.3] +[drf-spectacular==0.27.2] + +[dumb-pypi==1.13.0] +[dumb-pypi==1.14.0] +[dumb-pypi==1.15.0] + +[ecdsa==0.18.0] + +[email-reply-parser==0.5.12] + +[email-validator==2.3.0] + +[ephemeral-port-reserve==1.1.4] + +[exam==0.10.6] + +[exceptiongroup==1.0.0rc9] +[exceptiongroup==1.1.0] +[exceptiongroup==1.1.3] +[exceptiongroup==1.2.0] +[exceptiongroup==1.2.1] +[exceptiongroup==1.2.2] + +[execnet==1.9.0] +[execnet==2.0.2] + +[fastjsonschema==2.16.2] +[fastjsonschema==2.20.0] +[fastjsonschema==2.21.2] + +[fido2==0.9.2] +[fido2==1.0.0] +[fido2==1.1.2] + +[filelock==3.7.0] +[filelock==3.7.1] +[filelock==3.8.0] +[filelock==3.9.0] +[filelock==3.12.1] +[filelock==3.12.4] +[filelock==3.13.1] +[filelock==3.15.3] +[filelock==3.16.1] +[filelock==3.18.0] +[filelock==3.19.1] +[filelock==3.20.3] + +[filetype==1.2.0] + +[flake8==4.0.1] +[flake8==5.0.2] +[flake8==5.0.4] +[flake8==6.0.0] +[flake8==6.1.0] +[flake8==7.0.0] +[flake8==7.2.0] +[flake8==7.3.0] + +[flake8-bugbear==22.7.1] +[flake8-bugbear==22.8.23] +[flake8-bugbear==22.9.11] +[flake8-bugbear==22.9.23] +[flake8-bugbear==22.10.27] +[flake8-bugbear==23.2.13] +[flake8-bugbear==23.6.5] +[flake8-bugbear==23.9.16] +[flake8-bugbear==23.12.2] + +[flake8-logging==1.4.0] +[flake8-logging==1.5.0] + +[flaky==3.8.1] + +[flask==2.1.2] +[flask==2.2.2] +[flask==2.2.5] +[flask==3.0.3] +[flask==3.1.0] + +[flask-redis==0.3.0] +[flask-redis==0.4.0] + +[freezegun==1.1.0] +[freezegun==1.2.1] +[freezegun==1.2.2] +[freezegun==1.5.5] + +[frozenlist==1.4.1] +[frozenlist==1.5.0] +[frozenlist==1.7.0] + +[fsspec==2025.9.0] + +[ghp-import==2.1.0] + +[gitdb==4.0.5] +[gitdb==4.0.7] + +[gitpython==3.1.12] +[gitpython==3.1.41] + +[gojsonnet==0.20.0] +apt_requires = golang +brew_requires = go +python_versions = <3.13 + +[google-api-core==1.32.0] +[google-api-core==2.8.2] +[google-api-core==2.10.1] +[google-api-core==2.11.0] +[google-api-core==2.12.0] +[google-api-core==2.15.0] +[google-api-core==2.16.2] +[google-api-core==2.17.1] +[google-api-core==2.19.0] +[google-api-core==2.19.1] +[google-api-core==2.19.2] +[google-api-core==2.21.0] +[google-api-core==2.24.2] +[google-api-core==2.25.1] + +[google-api-python-client==2.88.0] +[google-api-python-client==2.137.0] +[google-api-python-client==2.145.0] +[google-api-python-client==2.181.0] + +[google-auth==1.29.0] +[google-auth==1.35.0] +[google-auth==2.11.0] +[google-auth==2.16.0] +[google-auth==2.19.1] +[google-auth==2.22.0] +[google-auth==2.23.0] +[google-auth==2.23.3] +[google-auth==2.23.4] +[google-auth==2.25.2] +[google-auth==2.27.0] +[google-auth==2.28.2] +[google-auth==2.29.0] +[google-auth==2.32.0] +[google-auth==2.34.0] +[google-auth==2.35.0] +[google-auth==2.38.0] +[google-auth==2.39.0] +[google-auth==2.40.0] +[google-auth==2.40.3] +[google-auth==2.41.1] + +[google-auth-httplib2==0.1.0] +[google-auth-httplib2==0.2.0] + +[google-cloud-appengine-logging==1.8.0] + +[google-cloud-audit-log==0.4.0] + +[google-cloud-bigtable==1.6.1] +[google-cloud-bigtable==2.11.3] +[google-cloud-bigtable==2.22.0] +[google-cloud-bigtable==2.26.0] +[google-cloud-bigtable==2.30.1] +[google-cloud-bigtable==2.31.0] + +[google-cloud-build==3.20.1] +[google-cloud-build==3.22.0] +[google-cloud-build==3.24.2] +[google-cloud-build==3.31.2] + +[google-cloud-compute==1.19.2] + +[google-cloud-core==1.5.0] +[google-cloud-core==2.3.2] +[google-cloud-core==2.4.1] +[google-cloud-core==2.4.3] + +[google-cloud-functions==1.8.0] +[google-cloud-functions==1.8.1] +[google-cloud-functions==1.14.0] +[google-cloud-functions==1.17.0] +[google-cloud-functions==1.20.4] + +[google-cloud-kms==2.19.1] +[google-cloud-kms==2.20.0] +[google-cloud-kms==2.24.2] +[google-cloud-kms==3.5.1] + +[google-cloud-logging==3.13.0] + +[google-cloud-os-login==2.14.6] + +[google-cloud-pubsub==2.2.0] +[google-cloud-pubsub==2.13.6] +[google-cloud-pubsub==2.19.0] +[google-cloud-pubsub==2.23.0] +[google-cloud-pubsub==2.31.0] + +[google-cloud-secret-manager==2.12.6] +[google-cloud-secret-manager==2.15.0] +[google-cloud-secret-manager==2.20.2] + +[google-cloud-spanner==3.17.0] +[google-cloud-spanner==3.19.0] +[google-cloud-spanner==3.20.0] +[google-cloud-spanner==3.40.1] +[google-cloud-spanner==3.43.0] +[google-cloud-spanner==3.46.0] +[google-cloud-spanner==3.48.0] +[google-cloud-spanner==3.49.0] +[google-cloud-spanner==3.55.0] + +[google-cloud-storage==1.35.0] +[google-cloud-storage==2.5.0] +[google-cloud-storage==2.14.0] +[google-cloud-storage==2.18.0] +[google-cloud-storage==3.2.0] + +[google-cloud-storage-transfer==1.17.0] + +[google-crc32c==1.5.0] +apt_requires = cmake +brew_requires = cmake +custom_prebuild = prebuild/crc32c 1.1.2 +[google-crc32c==1.6.0] +apt_requires = cmake +brew_requires = cmake +custom_prebuild = prebuild/crc32c 1.1.2 +[google-crc32c==1.7.1] +apt_requires = cmake +brew_requires = cmake +custom_prebuild = prebuild/crc32c 1.1.2 + +[google-genai==1.13.0] + +[google-resumable-media==1.3.3] +[google-resumable-media==2.3.3] +[google-resumable-media==2.7.0] +[google-resumable-media==2.7.2] + +[googleapis-common-protos==1.56.2] +[googleapis-common-protos==1.56.4] +[googleapis-common-protos==1.58.0] +[googleapis-common-protos==1.59.0] +[googleapis-common-protos==1.60.0] +[googleapis-common-protos==1.62.0] +[googleapis-common-protos==1.63.0] +[googleapis-common-protos==1.63.2] +[googleapis-common-protos==1.65.0] +[googleapis-common-protos==1.70.0] + +[granian==2.5.4] +validate_extras = pname,reload,uvloop +[granian==2.5.5] +validate_extras = pname,reload,uvloop +[granian==2.5.6] +validate_extras = pname,reload,uvloop +[granian==2.5.7] +validate_extras = pname,reload,uvloop +[granian==2.6.0] +validate_extras = pname,reload,uvloop +[granian==2.6.1] +validate_extras = pname,reload,uvloop +[granian==2.7.0] +validate_extras = pname,reload,uvloop + +[greenlet==1.1.3] +python_versions = <3.12 + +[grpc-google-iam-v1==0.12.4] +[grpc-google-iam-v1==0.12.6] +[grpc-google-iam-v1==0.13.0] +[grpc-google-iam-v1==0.13.1] +[grpc-google-iam-v1==0.14.2] + +[grpc-interceptor==0.15.4] + +[grpc-stubs==1.53.0.5] +[grpc-stubs==1.53.0.6] + +[grpcio==1.56.0] +python_versions = <3.12 +[grpcio==1.59.0] +python_versions = <3.13 +[grpcio==1.60.0] +python_versions = <3.13 +[grpcio==1.60.1] +python_versions = <3.13 +[grpcio==1.62.1] +python_versions = <3.13 +[grpcio==1.64.0] +python_versions = <3.13 +[grpcio==1.65.4] +python_versions = <3.13 +[grpcio==1.66.1] +python_versions = <3.13 +[grpcio==1.67.0] +[grpcio==1.72.0rc1] +[grpcio==1.73.1] +[grpcio==1.75.1] + +[grpcio-status==1.47.0] +[grpcio-status==1.48.1] +[grpcio-status==1.51.1] +[grpcio-status==1.56.0] +[grpcio-status==1.59.0] +[grpcio-status==1.60.0] +[grpcio-status==1.60.1] +[grpcio-status==1.62.1] +[grpcio-status==1.62.2] +[grpcio-status==1.66.1] +[grpcio-status==1.67.0] +[grpcio-status==1.72.0rc1] +[grpcio-status==1.73.1] +[grpcio-status==1.75.1] + +[h11==0.9.0] +[h11==0.12.0] +[h11==0.13.0] +[h11==0.14.0] +[h11==0.16.0] + +[h2==4.1.0] +[h2==4.2.0] +[h2==4.3.0] + +[hera==5.25.1] + +[hf-xet==1.1.10] + +[hiredis==0.3.1] +python_versions = <3.12 +[hiredis==2.0.0] +python_versions = <3.12 +[hiredis==2.3.2] +[hiredis==2.4.0] +[hiredis==3.0.0] + +[honcho==1.0.0] +[honcho==1.0.1] +[honcho==1.1.0] +[honcho==2.0.0] + +[hpack==4.0.0] +[hpack==4.1.0] + +[httpcore==0.11.1] +[httpcore==0.15.0] +[httpcore==1.0.2] +[httpcore==1.0.5] +[httpcore==1.0.9] + +[httplib2==0.22.0] +[httplib2==0.31.0] + +[httpx==0.15.4] +[httpx==0.23.0] +[httpx==0.25.2] +[httpx==0.27.0] +[httpx==0.27.2] +[httpx==0.28.1] + +[huggingface-hub==0.35.3] + +[hyperframe==6.0.1] +[hyperframe==6.1.0] + +[hypothesis==6.61.0] +validate_extras = pytest + +[identify==2.5.1] +[identify==2.5.3] +[identify==2.5.5] +[identify==2.5.18] +[identify==2.5.24] +[identify==2.5.29] +[identify==2.5.33] +[identify==2.6.1] +[identify==2.6.9] + +[idna==2.8] +[idna==2.10] +[idna==3.2] +[idna==3.3] +[idna==3.4] +[idna==3.6] +[idna==3.7] +[idna==3.8] +[idna==3.10] +[idna==3.11] + +[imagesize==1.4.1] + +[immutables==0.15] +python_versions = <3.12 + +[importlib-metadata==3.10.1] +[importlib-metadata==4.6.4] +[importlib-metadata==4.12.0] +[importlib-metadata==6.0.0] +[importlib-metadata==7.1.0] +[importlib-metadata==8.6.1] +[importlib-metadata==8.7.0] + +[importlib-resources==5.8.0] +[importlib-resources==5.9.0] + +[inflection==0.5.1] + +[iniconfig==1.1.1] +[iniconfig==2.0.0] + +[iso3166==2.1.1] + +[isodate==0.6.1] + +[isort==5.10.1] +[isort==5.12.0] +[isort==5.13.2] +[isort==6.0.1] + +[itsdangerous==2.1.2] +[itsdangerous==2.2.0] + +[jinja2==3.0.3] +[jinja2==3.1.0] +[jinja2==3.1.2] +[jinja2==3.1.3] +[jinja2==3.1.4] +[jinja2==3.1.6] + +[jiter==0.9.0] +[jiter==0.10.0] + +[jmespath==0.10.0] +[jmespath==1.0.1] + +[johen==0.1.3] +[johen==0.1.4] +[johen==0.1.5] + +[jsonnet==0.20.0] +python_versions = <3.13 + +[jsonpatch==1.33] + +[jsonpath-ng==1.6.1] + +[jsonpointer==3.0.0] + +[jsonschema==3.2.0] +[jsonschema==4.5.1] +[jsonschema==4.7.1] +[jsonschema==4.9.1] +[jsonschema==4.14.0] +[jsonschema==4.16.0] +[jsonschema==4.17.3] +[jsonschema==4.18.4] +[jsonschema==4.20.0] +[jsonschema==4.23.0] + +[jsonschema-path==0.3.2] + +[jsonschema-spec==0.1.3] +[jsonschema-spec==0.2.3] +[jsonschema-spec==0.2.4] + +[jsonschema-specifications==2023.7.1] +[jsonschema-specifications==2023.11.1] +[jsonschema-specifications==2023.12.1] + +[jsonschema2md==0.4.0] + +[kombu==4.6.11] +[kombu==5.2.4] +[kombu==5.3.3] +[kombu==5.3.4] +[kombu==5.3.6] +[kombu==5.4.2] +[kombu==5.5.3] + +[kubernetes==19.15.0] +[kubernetes==24.2.0] +[kubernetes==27.2.0] +[kubernetes==30.1.0] + +[lark==1.1.9] +[lark==1.2.2] + +[lark-parser==0.10.1] + +[lazy-object-proxy==1.7.1] +[lazy-object-proxy==1.9.0] +[lazy-object-proxy==1.10.0] + +[librt==0.7.8] + +[lief==0.16.6] + +[looseversion==1.0.2] + +[lxml==4.9.1] +apt_requires = + libxml2-dev + libxslt1-dev +brew_requires = + libxml2 + libxslt +python_versions = <3.12 +[lxml==4.9.3] +apt_requires = + libxml2-dev + libxslt1-dev +brew_requires = + libxml2 + libxslt +python_versions = <3.13 +[lxml==5.3.0] +apt_requires = + libxml2-dev + libxslt1-dev +brew_requires = + libxml2 + libxslt + +[lxml-stubs==0.4.0] + +[lzfse==0.4.2] + +[maison==1.4.0] -# [looseversion==1.0.2] +[mako==1.1.4] +[mako==1.2.3] -# [lxml==4.9.1] -# apt_requires = -# libxml2-dev -# libxslt1-dev -# brew_requires = -# libxml2 -# libxslt -# python_versions = <3.12 -# [lxml==4.9.3] -# apt_requires = -# libxml2-dev -# libxslt1-dev -# brew_requires = -# libxml2 -# libxslt -# python_versions = <3.13 -# [lxml==5.3.0] -# apt_requires = -# libxml2-dev -# libxslt1-dev -# brew_requires = -# libxml2 -# libxslt - -# [lxml-stubs==0.4.0] - -# [lzfse==0.4.2] - -# [maison==1.4.0] - -# [mako==1.1.4] -# [mako==1.2.3] - -# [markdown==3.3.7] -# [markdown==3.4.1] -# [markdown==3.8.2] - -# [markdown-it-py==2.1.0] -# [markdown-it-py==3.0.0] -# [markdown-it-py==4.0.0] - -# [markupsafe==2.0.1] -# [markupsafe==2.1.1] -# [markupsafe==2.1.2] -# [markupsafe==2.1.3] -# [markupsafe==2.1.4] -# [markupsafe==2.1.5] -# [markupsafe==3.0.2] -# [markupsafe==3.0.3] - -# [maturin==0.14.15] -# [maturin==1.4.0] -# [maturin==1.5.1] -# [maturin==1.11.5] - -# [maxminddb==2.0.3] -# apt_requires = libmaxminddb-dev -# brew_requires = libmaxminddb -# [maxminddb==2.2.0] -# apt_requires = libmaxminddb-dev -# brew_requires = libmaxminddb -# [maxminddb==2.3.0] -# apt_requires = libmaxminddb-dev -# brew_requires = libmaxminddb -# [maxminddb==2.5.2] -# apt_requires = libmaxminddb-dev -# brew_requires = libmaxminddb - -# [mccabe==0.6.1] -# [mccabe==0.7.0] - -# [mdit-py-plugins==0.3.0] -# [mdit-py-plugins==0.5.0] - -# [mdurl==0.1.2] - -# [mergedeep==1.3.4] - -# [milksnake==0.1.5] -# [milksnake==0.1.6] - -# [mistune==2.0.4] -# [mistune==3.0.1] - -# [mkdocs==1.6.1] - -# [mkdocs-get-deps==0.2.0] - -# [mkdocs-material==9.6.17] - -# [mkdocs-material-extensions==1.3.1] - -# [mmh3==3.0.0] -# [mmh3==4.0.0] - -# [mock==4.0.3] - -# [more-itertools==8.13.0] -# [more-itertools==8.14.0] -# [more-itertools==9.0.0] -# [more-itertools==10.0.0] -# [more-itertools==10.1.0] - -# [msgpack==1.0.4] -# python_versions = <3.12 -# [msgpack==1.0.7] -# python_versions = <3.13 -# [msgpack==1.0.8] -# python_versions = <3.13 -# [msgpack==1.1.0] -# [msgpack==1.1.1] - -# [msgpack-types==0.2.0] - -# [msgspec==0.19.0] - -# [multidict==6.0.2] -# python_versions = <3.13 -# [multidict==6.0.4] -# python_versions = <3.13 -# [multidict==6.1.0] -# [multidict==6.6.4] - -# [mypy==0.971] -# [mypy==0.981] -# [mypy==0.982] -# [mypy==0.991] -# [mypy==1.0.1] -# [mypy==1.1.1] -# [mypy==1.3.0] -# [mypy==1.4.1] -# [mypy==1.5.0] -# [mypy==1.5.1] -# [mypy==1.6.1] -# [mypy==1.7.0] -# [mypy==1.7.1] -# [mypy==1.8.0] -# [mypy==1.9.0] -# [mypy==1.10.0] -# [mypy==1.11.0] -# [mypy==1.11.1] -# [mypy==1.11.2] -# [mypy==1.12.1] -# [mypy==1.13.0] -# [mypy==1.14.0] -# [mypy==1.14.1] -# [mypy==1.15.0] -# [mypy==1.16.0] -# [mypy==1.16.1] -# [mypy==1.17.0] -# [mypy==1.17.1] -# [mypy==1.18.1] -# [mypy==1.18.2] -# [mypy==1.19.0] -# [mypy==1.19.1] - -# [mypy-extensions==0.4.3] -# [mypy-extensions==1.0.0] -# [mypy-extensions==1.1.0] - -# [myst-parser==0.18.0] -# [myst-parser==5.0.0] - -# [mywsgi==1.0.3] - -# [natsort==8.1.0] -# [natsort==8.2.0] - -# [nodeenv==1.6.0] -# [nodeenv==1.7.0] -# [nodeenv==1.8.0] -# [nodeenv==1.9.1] - -# [oauthlib==3.1.0] -# [oauthlib==3.2.0] -# [oauthlib==3.2.1] -# [oauthlib==3.2.2] - -# [objectstore-client==0.0.1] -# python_versions = >=3.13.1 -# [objectstore-client==0.0.4] -# [objectstore-client==0.0.5] -# [objectstore-client==0.0.6] -# [objectstore-client==0.0.7] -# [objectstore-client==0.0.8] -# [objectstore-client==0.0.9] -# [objectstore-client==0.0.10] -# [objectstore-client==0.0.11] -# [objectstore-client==0.0.12] -# [objectstore-client==0.0.13] -# [objectstore-client==0.0.14] -# [objectstore-client==0.0.15] -# [objectstore-client==0.0.16] -# [objectstore-client==0.0.17] - -# [openai==0.27.0] -# [openai==0.27.8] -# [openai==1.3.5] -# [openai==1.77.0] -# [openai==1.93.0] - -# [openapi-core==0.14.2] -# [openapi-core==0.15.0] -# [openapi-core==0.16.5] -# [openapi-core==0.18.0] -# [openapi-core==0.18.2] -# [openapi-core==0.19.3] - -# [openapi-pydantic==0.4.0] - -# [openapi-schema-validator==0.2.3] -# [openapi-schema-validator==0.3.0] -# [openapi-schema-validator==0.3.1] -# [openapi-schema-validator==0.4.3] -# [openapi-schema-validator==0.6.0] -# [openapi-schema-validator==0.6.2] - -# [openapi-spec-validator==0.4.0] -# [openapi-spec-validator==0.5.5] -# [openapi-spec-validator==0.6.0] -# [openapi-spec-validator==0.7.1] - -# [opentelemetry-api==1.32.1] -# [opentelemetry-api==1.33.1] -# [opentelemetry-api==1.35.0] - -# [opentelemetry-proto==1.22.0] -# [opentelemetry-proto==1.32.1] - -# [opentelemetry-sdk==1.32.1] -# [opentelemetry-sdk==1.33.1] -# [opentelemetry-sdk==1.35.0] - -# [opentelemetry-semantic-conventions==0.53b1] -# [opentelemetry-semantic-conventions==0.54b1] -# [opentelemetry-semantic-conventions==0.56b0] - -# [orjson==3.10.0] -# python_versions = <3.13 -# [orjson==3.10.3] -# python_versions = <3.13 -# [orjson==3.10.10] -# python_versions = <3.14 - -# [outcome==1.2.0] -# [outcome==1.3.0.post0] - -# [p4python==2025.1.2767466] -# python_versions = <3.14 - -# [packaging==21.3] -# [packaging==22.0] -# [packaging==23.0] -# [packaging==23.1] -# [packaging==23.2] -# [packaging==24.0] -# [packaging==24.1] -# [packaging==24.2] -# [packaging==25.0] -# [packaging==26.0] - -# [paginate==0.5.7] - -# [paramiko==2.11.0] -# [paramiko==3.4.0] -# [paramiko==3.4.1] - -# [parse==1.19.0] -# [parse==1.19.1] -# [parse==1.20.0] - -# [parsimonious==0.8.0] -# [parsimonious==0.8.1] -# [parsimonious==0.9.0] -# [parsimonious==0.10.0] - -# [pathable==0.4.3] - -# [pathspec==0.9.0] -# [pathspec==0.10.1] -# [pathspec==0.10.2] -# [pathspec==0.11.0] -# [pathspec==0.11.1] -# [pathspec==0.11.2] -# [pathspec==0.12.1] - -# [pep517==0.12.0] -# [pep517==0.13.0] - -# [petname==2.6] - -# [phabricator==0.7.0] -# [phabricator==0.9.1] - -# [phonenumberslite==8.12.0] -# [phonenumberslite==8.12.54] -# [phonenumberslite==8.12.55] - -# [pillow==9.2.0] -# python_versions = <3.12 -# [pillow==9.3.0] -# python_versions = <3.12 -# [pillow==9.4.0] -# python_versions = <3.12 -# [pillow==9.5.0] -# python_versions = <3.12 -# [pillow==10.0.0] -# python_versions = <3.13 -# [pillow==10.0.1] -# python_versions = <3.13 -# [pillow==10.1.0] -# python_versions = <3.13 -# [pillow==10.2.0] -# python_versions = <3.13 -# [pillow==10.3.0] -# python_versions = <3.13 -# [pillow==10.4.0] -# python_versions = <3.14 -# [pillow==11.0.0] -# python_versions = <3.14 -# [pillow==11.2.1] -# python_versions = <3.14 -# [pillow==11.3.0] -# python_versions = <3.14 - -# [pillow-heif==1.1.1] - -# [pip==22.1.2] -# [pip==22.2.2] -# [pip==23.0.1] -# [pip==23.1.2] -# [pip==23.2.1] -# [pip==23.3.1] -# [pip==23.3.2] -# [pip==25.3] - -# [pip-tools==6.7.0] -# [pip-tools==6.8.0] -# [pip-tools==6.12.2] -# [pip-tools==6.13.0] -# [pip-tools==6.14.0] -# [pip-tools==7.1.0] -# [pip-tools==7.3.0] -# [pip-tools==7.5.2] - -# [pkgconfig==1.5.5] - -# [pkgutil-resolve-name==1.3.10] - -# [planout==0.6.0] - -# [platformdirs==2.5.2] -# [platformdirs==2.5.4] -# [platformdirs==3.0.0] -# [platformdirs==3.5.3] -# [platformdirs==3.8.0] -# [platformdirs==3.10.0] -# [platformdirs==4.0.0] -# [platformdirs==4.1.0] -# [platformdirs==4.2.0] -# [platformdirs==4.2.2] -# [platformdirs==4.3.6] -# [platformdirs==4.3.7] -# [platformdirs==4.3.8] -# [platformdirs==4.5.1] - -# [pluggy==0.13.1] -# [pluggy==1.0.0] -# [pluggy==1.3.0] -# [pluggy==1.4.0] -# [pluggy==1.5.0] - -# [ply==3.11] - -# [polars==1.33.0] - -# [pre-commit==2.18.1] -# [pre-commit==2.20.0] -# [pre-commit==3.0.4] -# [pre-commit==3.3.2] -# [pre-commit==3.4.0] -# [pre-commit==3.6.0] -# [pre-commit==4.0.0] -# [pre-commit==4.2.0] - -# [progressbar2==3.41.0] -# [progressbar2==4.0.0] -# [progressbar2==4.2.0] - -# [prompt-toolkit==3.0.30] -# [prompt-toolkit==3.0.31] -# [prompt-toolkit==3.0.39] -# [prompt-toolkit==3.0.41] -# [prompt-toolkit==3.0.43] -# [prompt-toolkit==3.0.48] -# [prompt-toolkit==3.0.51] - -# [propcache==0.2.0] -# [propcache==0.3.2] - -# [proto-plus==1.20.4] -# [proto-plus==1.22.0] -# [proto-plus==1.22.1] -# [proto-plus==1.22.2] -# [proto-plus==1.22.3] -# [proto-plus==1.23.0] -# [proto-plus==1.24.0] -# [proto-plus==1.25.0] -# [proto-plus==1.26.1] - -# [protobuf==3.19.0] -# [protobuf==4.21.5] -# [protobuf==4.21.6] -# [protobuf==4.21.12] -# [protobuf==4.23.2] -# [protobuf==4.24.3] -# [protobuf==4.24.4] -# [protobuf==4.25.1] -# [protobuf==4.25.2] -# [protobuf==4.25.3] -# [protobuf==5.27.2] -# [protobuf==5.27.3] -# [protobuf==5.28.0] -# [protobuf==5.28.1] -# [protobuf==5.28.2] -# [protobuf==5.28.3] -# [protobuf==5.29.5] -# [protobuf==5.29.6] -# [protobuf==6.30.2] -# [protobuf==6.31.1] -# [protobuf==6.32.1] - -# [psutil==5.8.0] -# [psutil==5.9.2] -# [psutil==5.9.7] - -# [psycopg2-binary==2.9.3] -# apt_requires = libpq-dev -# brew_requires = -# openssl@1.1 -# postgresql -# python_versions = <3.12 -# [psycopg2-binary==2.9.7] -# apt_requires = libpq-dev -# brew_requires = -# openssl@1.1 -# postgresql -# python_versions = <3.12 -# [psycopg2-binary==2.9.9] -# apt_requires = libpq-dev -# brew_requires = -# openssl@1.1 -# postgresql -# python_versions = <3.13 -# [psycopg2-binary==2.9.10] -# apt_requires = libpq-dev -# brew_requires = -# openssl@1.1 -# postgresql - -# [puccinialin==0.1.8] - -# [py==1.11.0] - -# [pyasn1==0.4.5] -# [pyasn1==0.4.8] -# [pyasn1==0.5.0] -# [pyasn1==0.5.1] -# [pyasn1==0.6.0] -# [pyasn1==0.6.1] - -# [pyasn1-modules==0.2.4] -# [pyasn1-modules==0.2.8] -# [pyasn1-modules==0.3.0] -# [pyasn1-modules==0.4.0] -# [pyasn1-modules==0.4.1] -# [pyasn1-modules==0.4.2] - -# [pycodestyle==2.8.0] -# [pycodestyle==2.9.0] -# [pycodestyle==2.9.1] -# [pycodestyle==2.10.0] -# [pycodestyle==2.11.0] -# [pycodestyle==2.11.1] -# [pycodestyle==2.13.0] -# [pycodestyle==2.14.0] - -# [pycountry==17.5.14] -# [pycountry==22.3.5] -# [pycountry==23.12.11] - -# [pycparser==2.21] -# [pycparser==2.22] -# [pycparser==2.23] - -# [pycryptodomex==3.9.8] -# [pycryptodomex==3.19.1] - -# [pydantic==1.10.2] -# [pydantic==1.10.9] -# [pydantic==1.10.17] -# [pydantic==1.10.18] -# [pydantic==1.10.20] -# [pydantic==1.10.23] -# [pydantic==1.10.26] -# [pydantic==2.5.2] -# [pydantic==2.7.4] -# [pydantic==2.9.2] -# [pydantic==2.11.4] -# [pydantic==2.11.7] -# [pydantic==2.11.9] - -# [pydantic-core==2.14.5] -# python_versions = <3.13 -# [pydantic-core==2.18.4] -# python_versions = <3.13 -# [pydantic-core==2.23.4] -# python_versions = <3.14 -# [pydantic-core==2.24.2] -# python_versions = <3.14 -# [pydantic-core==2.33.2] -# python_versions = <3.14 - -# [pyelftools==0.28] -# [pyelftools==0.29] - -# [pyflakes==2.4.0] -# [pyflakes==2.5.0] -# [pyflakes==3.0.1] -# [pyflakes==3.1.0] -# [pyflakes==3.2.0] -# [pyflakes==3.3.2] -# [pyflakes==3.4.0] - -# [pygments==2.13.0] -# [pygments==2.18.0] -# [pygments==2.19.2] - -# [pyjwt==2.4.0] -# [pyjwt==2.10.1] - -# [pylibmc==1.6.3] -# apt_requires = libmemcached-dev -# brew_requires = libmemcached - -# [pymdown-extensions==10.16.1] - -# [pymemcache==4.0.0] - -# [pynacl==1.5.0] - -# [pyopenssl==22.0.0] -# [pyopenssl==23.0.0] -# [pyopenssl==23.2.0] - -# [pyparsing==3.0.9] -# [pyparsing==3.1.2] -# [pyparsing==3.1.4] -# [pyparsing==3.2.5] - -# [pyproject-hooks==1.0.0] -# [pyproject-hooks==1.2.0] - -# [pyrsistent==0.18.1] -# python_versions = <3.13 -# [pyrsistent==0.19.3] -# python_versions = <3.13 - -# [pysocks==1.7.1] - -# [pytest==6.1.2] -# [pytest==7.1.2] -# [pytest==7.1.3] -# [pytest==7.2.0] -# [pytest==7.2.1] -# [pytest==7.4.3] -# [pytest==8.0.0] -# [pytest==8.0.2] -# [pytest==8.1.1] -# [pytest==8.1.2] -# [pytest==8.2.2] -# [pytest==8.3.2] -# [pytest==8.3.3] - -# [pytest-cov==3.0.0] -# [pytest-cov==4.0.0] -# [pytest-cov==4.1.0] - -# [pytest-django==4.4.0] -# [pytest-django==4.5.2] -# [pytest-django==4.7.0] -# [pytest-django==4.8.0] -# [pytest-django==4.9.0] - -# [pytest-fail-slow==0.3.0] -# [pytest-fail-slow==0.4.0] - -# [pytest-forked==1.4.0] -# [pytest-forked==1.6.0] - -# [pytest-insta==0.3.0] - -# [pytest-json-report==1.5.0] - -# [pytest-localserver==0.7.0] -# [pytest-localserver==0.8.1] - -# [pytest-metadata==3.1.1] - -# [pytest-rerunfailures==9.1.1] -# [pytest-rerunfailures==10.2] -# [pytest-rerunfailures==11.0] -# [pytest-rerunfailures==11.1.1] -# [pytest-rerunfailures==13.0] -# [pytest-rerunfailures==14.0] -# [pytest-rerunfailures==15.0] - -# [pytest-sentry==0.1.9] -# [pytest-sentry==0.1.10] -# [pytest-sentry==0.1.11] -# [pytest-sentry==0.1.16] -# [pytest-sentry==0.2.0] -# [pytest-sentry==0.2.1] -# [pytest-sentry==0.3.0rc1] -# [pytest-sentry==0.3.0] -# [pytest-sentry==0.3.1] -# [pytest-sentry==0.3.2] -# [pytest-sentry==0.3.3] -# [pytest-sentry==0.4.0] -# [pytest-sentry==0.4.1] -# [pytest-sentry==0.5.0] -# [pytest-sentry==0.5.1] - -# [pytest-timeout==2.1.0] -# [pytest-timeout==2.2.0] - -# [pytest-watch==4.2.0] - -# [pytest-workaround-12888==1.0.0] - -# [pytest-xdist==2.4.0] -# [pytest-xdist==2.5.0] -# [pytest-xdist==3.0.2] -# [pytest-xdist==3.2.0] -# [pytest-xdist==3.5.0] - -# [python-dateutil==2.8.0] -# [python-dateutil==2.8.1] -# [python-dateutil==2.8.2] -# [python-dateutil==2.9.0] -# [python-dateutil==2.9.0.post0] - -# [python-editor==1.0.4] - -# [python-gnupg==0.4.8] - -# [python-hcl2==2.0.3] -# [python-hcl2==3.0.5] -# [python-hcl2==4.3.4] -# [python-hcl2==4.3.5] - -# [python-jose==3.3.0] - -# [python-memcached==1.59] - -# [python-rapidjson==1.4] -# [python-rapidjson==1.8] -# [python-rapidjson==1.16] -# [python-rapidjson==1.20] -# [python-rapidjson==1.21] - -# [python-u2flib-server==5.0.0] -# [python-u2flib-server==5.0.1] - -# [python-utils==3.3.3] -# [python-utils==3.8.1] - -# [python3-saml==1.14.0] -# [python3-saml==1.15.0] - -# [pytz==2018.9] -# [pytz==2022.1] -# [pytz==2022.2] -# [pytz==2022.2.1] -# [pytz==2023.3] -# [pytz==2023.3.post1] - -# [pytz-deprecation-shim==0.1.0.post0] - -# [pyupgrade==2.37.2] -# [pyupgrade==2.37.3] -# [pyupgrade==2.38.0] -# [pyupgrade==2.38.2] -# [pyupgrade==3.1.0] -# [pyupgrade==3.2.3] -# [pyupgrade==3.3.1] -# [pyupgrade==3.7.0] -# [pyupgrade==3.13.0] -# [pyupgrade==3.15.0] -# [pyupgrade==3.17.0] -# [pyupgrade==3.19.1] - -# [pyuwsgi==2.0.23] -# python_versions = <3.13 -# validate_skip_imports = uwsgidecorators -# [pyuwsgi==2.0.23.post0] -# python_versions = <3.13 -# validate_skip_imports = uwsgidecorators -# [pyuwsgi==2.0.26] -# python_versions = <3.13 -# validate_skip_imports = uwsgidecorators -# [pyuwsgi==2.0.27a1] -# python_versions = <3.13 -# validate_skip_imports = uwsgidecorators -# [pyuwsgi==2.0.27.post1] -# python_versions = <3.14 -# validate_skip_imports = uwsgidecorators -# [pyuwsgi==2.0.28.post1] -# python_versions = <3.14 -# validate_skip_imports = uwsgidecorators -# [pyuwsgi==2.0.29] -# python_versions = <3.14 -# validate_skip_imports = uwsgidecorators -# [pyuwsgi==2.0.30] -# python_versions = <3.14 -# validate_skip_imports = uwsgidecorators - -# [pyvat==1.3.15] -# [pyvat==1.3.16] - -# [pyyaml==5.4] -# apt_requires = libyaml-dev -# brew_requires = libyaml -# python_versions = <3.12 -# [pyyaml==5.4.1] -# apt_requires = libyaml-dev -# brew_requires = libyaml -# python_versions = <3.12 -# [pyyaml==6.0] -# apt_requires = libyaml-dev -# brew_requires = libyaml -# python_versions = <3.12 -# [pyyaml==6.0.1] -# apt_requires = libyaml-dev -# brew_requires = libyaml -# python_versions = <3.13 -# [pyyaml==6.0.2] -# apt_requires = libyaml-dev -# brew_requires = libyaml -# [pyyaml==6.0.3] -# apt_requires = libyaml-dev -# brew_requires = libyaml - -# [pyyaml-env-tag==1.1] - -# [pyzmq==24.0.0] -# python_versions = <3.12 - -# [rb==1.9.0] -# [rb==1.10.0] - -# [redis==3.4.1] -# [redis==3.5.3] -# [redis==4.3.4] -# [redis==4.5.4] -# [redis==5.0.1] - -# [redis-py-cluster==2.1.0] -# [redis-py-cluster==2.1.3] - -# [referencing==0.29.3] -# [referencing==0.30.0] -# [referencing==0.30.2] -# [referencing==0.31.0] -# [referencing==0.32.0] -# [referencing==0.35.1] - -# [regex==2022.7.25] -# [regex==2022.8.17] -# [regex==2022.9.13] -# [regex==2023.12.25] - -# [reportlab==3.6.13] -# python_versions = <3.12 -# [reportlab==4.0.7] -# [reportlab==4.2.5] -# [reportlab==4.4.0] -# [reportlab==4.4.2] - -# [requests==2.25.1] -# [requests==2.27.1] -# [requests==2.28.1] -# [requests==2.28.2] -# [requests==2.30.0] -# [requests==2.31.0] -# [requests==2.32.2] -# [requests==2.32.3] -# [requests==2.32.4] -# [requests==2.32.5] - -# [requests-file==2.1.0] - -# [requests-oauthlib==1.2.0] -# [requests-oauthlib==1.3.1] -# [requests-oauthlib==2.0.0] - -# [responses==0.21.0] -# [responses==0.22.0] -# [responses==0.23.1] -# [responses==0.23.2] -# [responses==0.23.3] -# [responses==0.24.0] -# [responses==0.24.1] -# [responses==0.25.0] -# [responses==0.25.2] -# [responses==0.25.3] -# [responses==0.25.5] -# [responses==0.25.6] -# [responses==0.25.7] -# [responses==0.25.8] -# [responses==0.26.0] - -# [rfc3339-validator==0.1.2] -# [rfc3339-validator==0.1.4] - -# [rfc3986==1.5.0] - -# [rfc3986-validator==0.1.1] - -# [rich==13.8.1] -# [rich==14.1.0] - -# [roman-numerals==4.1.0] - -# [rpds-py==0.9.2] -# python_versions = <3.13 -# [rpds-py==0.13.1] -# python_versions = <3.13 -# [rpds-py==0.15.2] -# python_versions = <3.13 -# [rpds-py==0.20.0] -# python_versions = <3.14 - -# [rq==1.0] - -# [rsa==4.8] -# [rsa==4.9] -# [rsa==4.9.1] - -# [ruff==0.14.2] -# [ruff==0.14.10] - -# [ruyaml==0.91.0] - -# [s3transfer==0.5.2] -# [s3transfer==0.6.0] -# [s3transfer==0.6.1] -# [s3transfer==0.10.0] -# [s3transfer==0.10.1] - -# [selenium==4.3.0] -# [selenium==4.4.3] -# [selenium==4.11.2] -# [selenium==4.16.0] -# [selenium==4.34.0] - -# [semantic-version==2.10.0] - -# [sentry-arroyo==0.0.33] -# [sentry-arroyo==1.0.3] -# [sentry-arroyo==1.0.4] -# [sentry-arroyo==1.0.5] -# [sentry-arroyo==1.0.6] -# [sentry-arroyo==1.0.7] -# [sentry-arroyo==1.1.0] -# [sentry-arroyo==1.2.0] -# [sentry-arroyo==2.0.0] -# [sentry-arroyo==2.1.0] -# [sentry-arroyo==2.2.0] -# [sentry-arroyo==2.3.0] -# [sentry-arroyo==2.3.1] -# [sentry-arroyo==2.4.0] -# [sentry-arroyo==2.5.0] -# [sentry-arroyo==2.5.1] -# [sentry-arroyo==2.5.2] -# [sentry-arroyo==2.5.3] -# [sentry-arroyo==2.6.0] -# [sentry-arroyo==2.7.0] -# [sentry-arroyo==2.7.1] -# [sentry-arroyo==2.8.0] -# [sentry-arroyo==2.9.0] -# [sentry-arroyo==2.9.1] -# [sentry-arroyo==2.10.0] -# [sentry-arroyo==2.10.1] -# [sentry-arroyo==2.10.2] -# [sentry-arroyo==2.10.3] -# [sentry-arroyo==2.10.4] -# [sentry-arroyo==2.10.5] -# [sentry-arroyo==2.10.6] -# [sentry-arroyo==2.11.0] -# [sentry-arroyo==2.11.1] -# [sentry-arroyo==2.11.2] -# [sentry-arroyo==2.11.3] -# [sentry-arroyo==2.11.4] -# [sentry-arroyo==2.11.5] -# [sentry-arroyo==2.11.6] -# [sentry-arroyo==2.11.7] -# [sentry-arroyo==2.12.0] -# [sentry-arroyo==2.12.1] -# [sentry-arroyo==2.13.0] -# [sentry-arroyo==2.14.0] -# [sentry-arroyo==2.14.1] -# [sentry-arroyo==2.14.2] -# [sentry-arroyo==2.14.3] -# [sentry-arroyo==2.14.4] -# [sentry-arroyo==2.14.5] -# [sentry-arroyo==2.14.6] -# [sentry-arroyo==2.14.7] -# [sentry-arroyo==2.14.8] -# [sentry-arroyo==2.14.9] -# [sentry-arroyo==2.14.10] -# [sentry-arroyo==2.14.11] -# [sentry-arroyo==2.14.12] -# [sentry-arroyo==2.14.13] -# [sentry-arroyo==2.14.14] -# [sentry-arroyo==2.14.15] -# [sentry-arroyo==2.14.16] -# [sentry-arroyo==2.14.17] -# [sentry-arroyo==2.14.18] -# [sentry-arroyo==2.14.19] -# [sentry-arroyo==2.14.20] -# [sentry-arroyo==2.14.21] -# [sentry-arroyo==2.14.22] -# [sentry-arroyo==2.14.23] -# [sentry-arroyo==2.14.24] -# [sentry-arroyo==2.14.25] -# [sentry-arroyo==2.15.0] -# [sentry-arroyo==2.15.1] -# [sentry-arroyo==2.15.2] -# [sentry-arroyo==2.15.3] -# [sentry-arroyo==2.16.0] -# [sentry-arroyo==2.16.1] -# [sentry-arroyo==2.16.2] -# [sentry-arroyo==2.16.4] -# [sentry-arroyo==2.16.5] -# [sentry-arroyo==2.17.0] -# [sentry-arroyo==2.17.1] -# [sentry-arroyo==2.17.2] -# [sentry-arroyo==2.17.3] -# [sentry-arroyo==2.17.4] -# [sentry-arroyo==2.17.6] -# [sentry-arroyo==2.18.0] -# [sentry-arroyo==2.18.1] -# [sentry-arroyo==2.18.2] -# [sentry-arroyo==2.19.0] -# [sentry-arroyo==2.19.1] -# [sentry-arroyo==2.19.2] -# [sentry-arroyo==2.19.3] -# [sentry-arroyo==2.19.4] -# [sentry-arroyo==2.19.5] -# [sentry-arroyo==2.19.6] -# [sentry-arroyo==2.19.7] -# [sentry-arroyo==2.19.8] -# [sentry-arroyo==2.19.9] -# [sentry-arroyo==2.19.10] -# [sentry-arroyo==2.19.11] -# [sentry-arroyo==2.19.12] -# [sentry-arroyo==2.20.0] -# [sentry-arroyo==2.20.2] -# [sentry-arroyo==2.20.3] -# [sentry-arroyo==2.20.4] -# [sentry-arroyo==2.20.5] -# [sentry-arroyo==2.20.6] -# [sentry-arroyo==2.20.7] -# [sentry-arroyo==2.20.8] -# [sentry-arroyo==2.20.9] -# [sentry-arroyo==2.20.10] -# [sentry-arroyo==2.21.0] -# [sentry-arroyo==2.22.0] -# [sentry-arroyo==2.23.0] -# [sentry-arroyo==2.24.0] -# [sentry-arroyo==2.25.0] -# [sentry-arroyo==2.26.0] -# [sentry-arroyo==2.27.0] -# [sentry-arroyo==2.28.0] -# [sentry-arroyo==2.28.1] -# [sentry-arroyo==2.28.2] -# [sentry-arroyo==2.28.3] -# [sentry-arroyo==2.28.4] -# [sentry-arroyo==2.29.0] -# [sentry-arroyo==2.29.1] -# [sentry-arroyo==2.29.2] -# [sentry-arroyo==2.29.3] -# [sentry-arroyo==2.29.4] -# [sentry-arroyo==2.29.5] -# [sentry-arroyo==2.29.6] -# [sentry-arroyo==2.29.7] -# [sentry-arroyo==2.30.0] -# [sentry-arroyo==2.31.0] -# [sentry-arroyo==2.31.1] -# [sentry-arroyo==2.31.2] -# [sentry-arroyo==2.32.0] -# [sentry-arroyo==2.32.1] -# [sentry-arroyo==2.32.2] -# [sentry-arroyo==2.32.3] -# [sentry-arroyo==2.32.4] -# [sentry-arroyo==2.32.5] -# [sentry-arroyo==2.33.0] -# [sentry-arroyo==2.33.1] -# [sentry-arroyo==2.34.0] -# [sentry-arroyo==2.35.0] -# [sentry-arroyo==2.36.0] -# [sentry-arroyo==2.37.0] -# [sentry-arroyo==2.37.1] -# [sentry-arroyo==2.38.0] -# [sentry-arroyo==2.38.1] - -# [sentry-cli==2.14.3] -# [sentry-cli==2.14.4] -# [sentry-cli==2.15.0] -# [sentry-cli==2.15.2] -# [sentry-cli==2.16.0] -# [sentry-cli==2.17.0] -# [sentry-cli==2.17.1] -# [sentry-cli==2.17.2] -# [sentry-cli==2.17.3] -# [sentry-cli==2.17.4] -# [sentry-cli==2.17.5] -# [sentry-cli==2.18.0] -# [sentry-cli==2.18.1] -# [sentry-cli==2.19.1] -# [sentry-cli==2.19.2] -# [sentry-cli==2.19.4] -# [sentry-cli==2.20.0] -# [sentry-cli==2.20.1] -# [sentry-cli==2.20.3] -# [sentry-cli==2.20.4] -# [sentry-cli==2.20.5] -# [sentry-cli==2.20.7] -# [sentry-cli==2.30.2] -# [sentry-cli==2.30.5] -# [sentry-cli==2.31.0] -# [sentry-cli==2.31.1] -# [sentry-cli==2.31.2] -# [sentry-cli==2.32.0] -# [sentry-cli==2.32.1] -# [sentry-cli==2.32.2] -# [sentry-cli==2.33.0] -# [sentry-cli==2.33.1] -# [sentry-cli==2.34.1] -# [sentry-cli==2.35.0] -# [sentry-cli==2.36.1] -# [sentry-cli==2.36.2] -# [sentry-cli==2.36.5] -# [sentry-cli==2.36.6] -# [sentry-cli==2.37.0] -# [sentry-cli==2.38.0] -# [sentry-cli==2.38.1] -# [sentry-cli==2.38.2] -# [sentry-cli==2.39.0] -# [sentry-cli==2.39.1] -# [sentry-cli==2.40.0] -# [sentry-cli==2.41.0] -# [sentry-cli==2.41.1] -# [sentry-cli==2.42.0] -# [sentry-cli==2.42.1] -# [sentry-cli==2.42.2] -# [sentry-cli==2.42.3] -# [sentry-cli==2.42.4] -# [sentry-cli==2.42.5a0] -# [sentry-cli==2.42.5] -# [sentry-cli==2.43.0] -# [sentry-cli==2.43.1] -# [sentry-cli==2.44.0] -# [sentry-cli==2.45.0] -# [sentry-cli==2.46.0a0] -# [sentry-cli==2.46.0] -# [sentry-cli==2.47.0] -# [sentry-cli==2.47.1] -# [sentry-cli==2.50.0] -# [sentry-cli==2.50.2] -# [sentry-cli==2.57.0] -# [sentry-cli==2.58.1] -# [sentry-cli==2.58.2] -# [sentry-cli==2.58.3a0] -# [sentry-cli==2.58.4] -# [sentry-cli==3.0.1] -# [sentry-cli==3.1.0] -# [sentry-cli==3.2.0] - -# [sentry-conventions==0.1.1] -# [sentry-conventions==0.2.0] -# [sentry-conventions==0.2.1] -# [sentry-conventions==0.3.0] -# [sentry-conventions==0.3.1] -# [sentry-conventions==0.4.0] - -# [sentry-covdefaults-disable-branch-coverage==1.0.2] - -# [sentry-devenv==1.1.1] -# [sentry-devenv==1.1.2] -# [sentry-devenv==1.1.3] -# [sentry-devenv==1.1.4] -# [sentry-devenv==1.1.5] -# [sentry-devenv==1.2.0] -# [sentry-devenv==1.2.1] -# [sentry-devenv==1.2.2] -# [sentry-devenv==1.2.3] -# [sentry-devenv==1.4.0] -# [sentry-devenv==1.5.0] -# [sentry-devenv==1.6.0] -# [sentry-devenv==1.6.1] -# [sentry-devenv==1.6.2] -# [sentry-devenv==1.7.0] -# [sentry-devenv==1.8.0] -# [sentry-devenv==1.9.0] -# [sentry-devenv==1.10.0] -# [sentry-devenv==1.10.1] -# [sentry-devenv==1.10.2] -# [sentry-devenv==1.10.3] -# [sentry-devenv==1.11.0] -# [sentry-devenv==1.12.0] -# [sentry-devenv==1.13.0] -# [sentry-devenv==1.14.0] -# [sentry-devenv==1.14.1] -# [sentry-devenv==1.14.2] -# [sentry-devenv==1.14.3] -# [sentry-devenv==1.14.4] -# [sentry-devenv==1.14.5] -# [sentry-devenv==1.15.0] -# [sentry-devenv==1.16.0] -# [sentry-devenv==1.17.0] -# [sentry-devenv==1.18.0] -# [sentry-devenv==1.19.0] -# [sentry-devenv==1.20.0] -# [sentry-devenv==1.21.0] -# [sentry-devenv==1.22.0] -# [sentry-devenv==1.22.1] -# [sentry-devenv==1.22.2] -# [sentry-devenv==1.23.0] -# [sentry-devenv==1.24.0] -# [sentry-devenv==1.25.0] -# [sentry-devenv==1.26.0] -# [sentry-devenv==1.26.1] -# [sentry-devenv==1.27.0] -# [sentry-devenv==1.28.0] - -# [sentry-forked-django-stubs==4.2.6.post1] -# [sentry-forked-django-stubs==4.2.6.post2] -# [sentry-forked-django-stubs==4.2.6.post3] -# [sentry-forked-django-stubs==4.2.7.post1] -# [sentry-forked-django-stubs==4.2.7.post2] -# [sentry-forked-django-stubs==4.2.7.post3] -# [sentry-forked-django-stubs==5.0.0.post1] -# [sentry-forked-django-stubs==5.0.0.post2] -# [sentry-forked-django-stubs==5.0.0.post3] -# [sentry-forked-django-stubs==5.0.2.post1] -# [sentry-forked-django-stubs==5.0.2.post2] -# [sentry-forked-django-stubs==5.0.2.post3] -# [sentry-forked-django-stubs==5.0.2.post4] -# [sentry-forked-django-stubs==5.0.2.post5] -# [sentry-forked-django-stubs==5.0.2.post6] -# [sentry-forked-django-stubs==5.0.2.post7] -# [sentry-forked-django-stubs==5.0.2.post8] -# [sentry-forked-django-stubs==5.0.2.post9] -# [sentry-forked-django-stubs==5.0.2.post10] -# [sentry-forked-django-stubs==5.0.4.post1] -# [sentry-forked-django-stubs==5.0.4.post2] -# [sentry-forked-django-stubs==5.1.0.post1] -# [sentry-forked-django-stubs==5.1.0.post2] -# [sentry-forked-django-stubs==5.1.0.post3] -# [sentry-forked-django-stubs==5.1.1.post1] -# [sentry-forked-django-stubs==5.1.2.post1] -# [sentry-forked-django-stubs==5.1.3.post2] -# [sentry-forked-django-stubs==5.1.3.post3] -# [sentry-forked-django-stubs==5.2.0.post1] -# [sentry-forked-django-stubs==5.2.0.post2] -# [sentry-forked-django-stubs==5.2.0.post3] -# [sentry-forked-django-stubs==5.2.0.post4] -# [sentry-forked-django-stubs==5.2.1.post1] -# [sentry-forked-django-stubs==5.2.1.post2] -# [sentry-forked-django-stubs==5.2.1.post3] -# [sentry-forked-django-stubs==5.2.2.post1] -# [sentry-forked-django-stubs==5.2.2.post2] -# [sentry-forked-django-stubs==5.2.4.post1] -# [sentry-forked-django-stubs==5.2.5.post1] -# [sentry-forked-django-stubs==5.2.5.post2] -# [sentry-forked-django-stubs==5.2.5.post3] - -# [sentry-forked-djangorestframework-stubs==3.14.4.post1] -# [sentry-forked-djangorestframework-stubs==3.14.4.post2] -# [sentry-forked-djangorestframework-stubs==3.14.5.post1] -# [sentry-forked-djangorestframework-stubs==3.15.0.post1] -# [sentry-forked-djangorestframework-stubs==3.15.1.post1] -# [sentry-forked-djangorestframework-stubs==3.15.1.post2] -# [sentry-forked-djangorestframework-stubs==3.15.2.post1] -# [sentry-forked-djangorestframework-stubs==3.15.2.post2] -# [sentry-forked-djangorestframework-stubs==3.15.3.post1] -# [sentry-forked-djangorestframework-stubs==3.16.0.post1] -# [sentry-forked-djangorestframework-stubs==3.16.1.post1] -# [sentry-forked-djangorestframework-stubs==3.16.2.post1] -# [sentry-forked-djangorestframework-stubs==3.16.3.post1] - -# [sentry-forked-email-reply-parser==0.5.12.post1] - -# [sentry-forked-jsonnet==0.20.0.post4] -# python_versions = <3.14 - -# [sentry-infra-event-notifier==0.0.3] -# [sentry-infra-event-notifier==0.0.4] -# [sentry-infra-event-notifier==0.0.5] -# [sentry-infra-event-notifier==0.0.6] -# [sentry-infra-event-notifier==0.0.7] -# [sentry-infra-event-notifier==0.0.8] -# [sentry-infra-event-notifier==0.0.9] -# [sentry-infra-event-notifier==0.0.10] - -# [sentry-infra-tools==0.0.6] -# [sentry-infra-tools==0.0.7] -# [sentry-infra-tools==0.0.8] -# [sentry-infra-tools==0.0.9] -# [sentry-infra-tools==0.0.10] -# [sentry-infra-tools==0.0.11] -# [sentry-infra-tools==0.0.12] -# [sentry-infra-tools==0.0.13] -# [sentry-infra-tools==0.0.16] -# [sentry-infra-tools==0.0.17] -# [sentry-infra-tools==0.0.18] -# [sentry-infra-tools==0.0.19] -# [sentry-infra-tools==0.0.20] -# [sentry-infra-tools==0.0.21] -# [sentry-infra-tools==0.0.22] -# [sentry-infra-tools==0.0.23] -# [sentry-infra-tools==0.0.24] -# [sentry-infra-tools==0.0.25] -# [sentry-infra-tools==0.0.26] -# [sentry-infra-tools==0.0.27] -# [sentry-infra-tools==0.0.28] -# [sentry-infra-tools==0.0.29] -# [sentry-infra-tools==0.0.30] -# [sentry-infra-tools==0.0.31] -# [sentry-infra-tools==0.0.32] -# [sentry-infra-tools==0.0.33] -# [sentry-infra-tools==0.0.34] -# [sentry-infra-tools==0.0.35] -# [sentry-infra-tools==0.0.36] -# [sentry-infra-tools==0.0.37] -# [sentry-infra-tools==1.0.0] -# [sentry-infra-tools==1.1.0] -# [sentry-infra-tools==1.1.1] -# [sentry-infra-tools==1.1.2] -# [sentry-infra-tools==1.1.3] -# [sentry-infra-tools==1.2.0] -# [sentry-infra-tools==1.2.1] -# [sentry-infra-tools==1.2.2] -# [sentry-infra-tools==1.2.3] -# [sentry-infra-tools==1.3.0] -# [sentry-infra-tools==1.3.1] -# [sentry-infra-tools==1.3.2] -# [sentry-infra-tools==1.4.0] -# [sentry-infra-tools==1.5.0] -# [sentry-infra-tools==1.6.0] -# [sentry-infra-tools==1.7.0] -# [sentry-infra-tools==1.8.0] -# [sentry-infra-tools==1.8.1] -# [sentry-infra-tools==1.9.0] -# [sentry-infra-tools==1.9.1] -# [sentry-infra-tools==1.10.0] -# [sentry-infra-tools==1.11.0] -# [sentry-infra-tools==1.11.1] -# [sentry-infra-tools==1.12.0] -# [sentry-infra-tools==1.13.0] -# [sentry-infra-tools==1.14.0] -# [sentry-infra-tools==1.14.1] -# [sentry-infra-tools==1.15.0] -# [sentry-infra-tools==1.15.1] -# [sentry-infra-tools==1.15.2] -# [sentry-infra-tools==1.15.3] -# [sentry-infra-tools==1.15.4] -# [sentry-infra-tools==1.15.5] -# [sentry-infra-tools==1.15.6] -# [sentry-infra-tools==1.15.7] -# [sentry-infra-tools==1.15.8] -# [sentry-infra-tools==1.15.9] -# [sentry-infra-tools==1.15.10] -# [sentry-infra-tools==1.16.0] -# [sentry-infra-tools==1.16.1] -# [sentry-infra-tools==1.16.2] -# [sentry-infra-tools==1.17.0] -# [sentry-infra-tools==1.17.1] -# [sentry-infra-tools==1.17.2] -# [sentry-infra-tools==1.17.3] -# [sentry-infra-tools==1.17.4] -# [sentry-infra-tools==1.18.0] -# [sentry-infra-tools==1.19.0] -# [sentry-infra-tools==1.20.0] -# [sentry-infra-tools==1.20.1] -# [sentry-infra-tools==1.20.2] -# [sentry-infra-tools==1.20.3] -# [sentry-infra-tools==1.21.0] -# [sentry-infra-tools==1.22.0] -# [sentry-infra-tools==1.23.0] -# [sentry-infra-tools==1.24.0] -# [sentry-infra-tools==1.25.0] -# [sentry-infra-tools==1.25.1] -# [sentry-infra-tools==1.25.2] -# [sentry-infra-tools==1.25.3] -# [sentry-infra-tools==1.25.4] -# [sentry-infra-tools==1.25.5] - -# [sentry-jsonish==0.0.1] -# [sentry-jsonish==0.0.2] - -# [sentry-jsonnet==0.0.4] -# [sentry-jsonnet==0.0.5] - -# [sentry-k8s-libsonnet==0.0.1] -# [sentry-k8s-libsonnet==0.0.2] -# [sentry-k8s-libsonnet==0.0.4] - -# [sentry-kafka-management==0.0.3] -# [sentry-kafka-management==0.0.4] -# [sentry-kafka-management==0.0.5] -# [sentry-kafka-management==0.0.6] -# [sentry-kafka-management==0.0.7] -# [sentry-kafka-management==0.0.8] -# [sentry-kafka-management==0.0.9] -# [sentry-kafka-management==0.0.10] -# [sentry-kafka-management==0.0.11] -# [sentry-kafka-management==0.0.12] -# [sentry-kafka-management==0.0.13] -# [sentry-kafka-management==0.0.14] -# [sentry-kafka-management==0.0.15] -# [sentry-kafka-management==0.0.16] -# [sentry-kafka-management==0.1.0] -# [sentry-kafka-management==0.1.1] -# [sentry-kafka-management==0.1.2] -# [sentry-kafka-management==0.1.3] -# [sentry-kafka-management==0.1.5] -# [sentry-kafka-management==0.1.6] -# [sentry-kafka-management==0.1.7] - -# [sentry-kafka-schemas==0.0.1] -# [sentry-kafka-schemas==0.0.2] -# [sentry-kafka-schemas==0.0.3] -# [sentry-kafka-schemas==0.0.4] -# [sentry-kafka-schemas==0.0.5] -# [sentry-kafka-schemas==0.0.6] -# [sentry-kafka-schemas==0.0.7] -# [sentry-kafka-schemas==0.0.8] -# [sentry-kafka-schemas==0.0.9] -# [sentry-kafka-schemas==0.0.10] -# [sentry-kafka-schemas==0.0.11] -# [sentry-kafka-schemas==0.0.12] -# [sentry-kafka-schemas==0.0.13] -# [sentry-kafka-schemas==0.0.14] -# [sentry-kafka-schemas==0.0.15] -# [sentry-kafka-schemas==0.0.16] -# [sentry-kafka-schemas==0.0.17] -# [sentry-kafka-schemas==0.0.18] -# [sentry-kafka-schemas==0.0.19] -# [sentry-kafka-schemas==0.0.20] -# [sentry-kafka-schemas==0.0.21] -# [sentry-kafka-schemas==0.0.22] -# [sentry-kafka-schemas==0.0.23] -# [sentry-kafka-schemas==0.0.24] -# [sentry-kafka-schemas==0.0.25] -# [sentry-kafka-schemas==0.0.26] -# [sentry-kafka-schemas==0.0.27] -# [sentry-kafka-schemas==0.0.28] -# [sentry-kafka-schemas==0.0.29] -# [sentry-kafka-schemas==0.0.31] -# [sentry-kafka-schemas==0.0.32] -# [sentry-kafka-schemas==0.0.33] -# [sentry-kafka-schemas==0.1.2] -# [sentry-kafka-schemas==0.1.3] -# [sentry-kafka-schemas==0.1.4] -# [sentry-kafka-schemas==0.1.5] -# [sentry-kafka-schemas==0.1.6] -# [sentry-kafka-schemas==0.1.7] -# [sentry-kafka-schemas==0.1.8] -# [sentry-kafka-schemas==0.1.9] -# [sentry-kafka-schemas==0.1.10] -# [sentry-kafka-schemas==0.1.11] -# [sentry-kafka-schemas==0.1.12] -# [sentry-kafka-schemas==0.1.13] -# [sentry-kafka-schemas==0.1.14] -# [sentry-kafka-schemas==0.1.15] -# [sentry-kafka-schemas==0.1.16] -# [sentry-kafka-schemas==0.1.17] -# [sentry-kafka-schemas==0.1.18] -# [sentry-kafka-schemas==0.1.19] -# [sentry-kafka-schemas==0.1.21] -# [sentry-kafka-schemas==0.1.22] -# [sentry-kafka-schemas==0.1.23] -# [sentry-kafka-schemas==0.1.24] -# [sentry-kafka-schemas==0.1.25] -# [sentry-kafka-schemas==0.1.26] -# [sentry-kafka-schemas==0.1.27] -# [sentry-kafka-schemas==0.1.28] -# [sentry-kafka-schemas==0.1.29] -# [sentry-kafka-schemas==0.1.30] -# [sentry-kafka-schemas==0.1.31] -# [sentry-kafka-schemas==0.1.32] -# [sentry-kafka-schemas==0.1.33] -# [sentry-kafka-schemas==0.1.34] -# [sentry-kafka-schemas==0.1.35] -# [sentry-kafka-schemas==0.1.36] -# [sentry-kafka-schemas==0.1.37] -# [sentry-kafka-schemas==0.1.38] -# [sentry-kafka-schemas==0.1.39] -# [sentry-kafka-schemas==0.1.40] -# [sentry-kafka-schemas==0.1.41] -# [sentry-kafka-schemas==0.1.42] -# [sentry-kafka-schemas==0.1.43] -# [sentry-kafka-schemas==0.1.44] -# [sentry-kafka-schemas==0.1.45] -# [sentry-kafka-schemas==0.1.46] -# [sentry-kafka-schemas==0.1.47] -# [sentry-kafka-schemas==0.1.48] -# [sentry-kafka-schemas==0.1.49] -# [sentry-kafka-schemas==0.1.50] -# [sentry-kafka-schemas==0.1.51] -# [sentry-kafka-schemas==0.1.52] -# [sentry-kafka-schemas==0.1.54] -# [sentry-kafka-schemas==0.1.56] -# [sentry-kafka-schemas==0.1.57] -# [sentry-kafka-schemas==0.1.58] -# [sentry-kafka-schemas==0.1.59] -# [sentry-kafka-schemas==0.1.60] -# [sentry-kafka-schemas==0.1.61] -# [sentry-kafka-schemas==0.1.62] -# [sentry-kafka-schemas==0.1.63] -# [sentry-kafka-schemas==0.1.64] -# [sentry-kafka-schemas==0.1.65] -# [sentry-kafka-schemas==0.1.66] -# [sentry-kafka-schemas==0.1.67] -# [sentry-kafka-schemas==0.1.68] -# [sentry-kafka-schemas==0.1.69] -# [sentry-kafka-schemas==0.1.70] -# [sentry-kafka-schemas==0.1.71] -# [sentry-kafka-schemas==0.1.72] -# [sentry-kafka-schemas==0.1.73] -# [sentry-kafka-schemas==0.1.74] -# [sentry-kafka-schemas==0.1.75] -# [sentry-kafka-schemas==0.1.76] -# [sentry-kafka-schemas==0.1.78] -# [sentry-kafka-schemas==0.1.79] -# [sentry-kafka-schemas==0.1.80] -# [sentry-kafka-schemas==0.1.81] -# [sentry-kafka-schemas==0.1.82] -# [sentry-kafka-schemas==0.1.83] -# [sentry-kafka-schemas==0.1.84] -# [sentry-kafka-schemas==0.1.85] -# [sentry-kafka-schemas==0.1.86] -# [sentry-kafka-schemas==0.1.87] -# [sentry-kafka-schemas==0.1.88] -# [sentry-kafka-schemas==0.1.89] -# [sentry-kafka-schemas==0.1.90] -# [sentry-kafka-schemas==0.1.91] -# [sentry-kafka-schemas==0.1.92] -# [sentry-kafka-schemas==0.1.93] -# [sentry-kafka-schemas==0.1.94] -# [sentry-kafka-schemas==0.1.95] -# [sentry-kafka-schemas==0.1.96] -# [sentry-kafka-schemas==0.1.97] -# [sentry-kafka-schemas==0.1.98] -# [sentry-kafka-schemas==0.1.99] -# [sentry-kafka-schemas==0.1.100] -# [sentry-kafka-schemas==0.1.101] -# [sentry-kafka-schemas==0.1.102] -# [sentry-kafka-schemas==0.1.103] -# [sentry-kafka-schemas==0.1.104] -# [sentry-kafka-schemas==0.1.105] -# [sentry-kafka-schemas==0.1.106] -# [sentry-kafka-schemas==0.1.107] -# [sentry-kafka-schemas==0.1.109] -# [sentry-kafka-schemas==0.1.110] -# [sentry-kafka-schemas==0.1.111] -# [sentry-kafka-schemas==0.1.112] -# [sentry-kafka-schemas==0.1.113] -# [sentry-kafka-schemas==0.1.114] -# [sentry-kafka-schemas==0.1.115] -# [sentry-kafka-schemas==0.1.116] -# [sentry-kafka-schemas==0.1.117] -# [sentry-kafka-schemas==0.1.118] -# [sentry-kafka-schemas==0.1.119] -# [sentry-kafka-schemas==0.1.120] -# [sentry-kafka-schemas==0.1.121] -# [sentry-kafka-schemas==0.1.122] -# [sentry-kafka-schemas==0.1.123] -# [sentry-kafka-schemas==0.1.124] -# [sentry-kafka-schemas==0.1.125] -# [sentry-kafka-schemas==0.1.126] -# [sentry-kafka-schemas==0.1.127] -# [sentry-kafka-schemas==0.1.128] -# [sentry-kafka-schemas==0.1.129] -# [sentry-kafka-schemas==1.0.0] -# [sentry-kafka-schemas==1.0.1] -# [sentry-kafka-schemas==1.0.2] -# [sentry-kafka-schemas==1.0.3] -# [sentry-kafka-schemas==1.0.4] -# [sentry-kafka-schemas==1.0.5] -# [sentry-kafka-schemas==1.0.6] -# [sentry-kafka-schemas==1.0.7] -# [sentry-kafka-schemas==1.0.8] -# [sentry-kafka-schemas==1.1.0] -# [sentry-kafka-schemas==1.1.1] -# [sentry-kafka-schemas==1.1.2] -# [sentry-kafka-schemas==1.1.3] -# [sentry-kafka-schemas==1.1.4] -# [sentry-kafka-schemas==1.1.5] -# [sentry-kafka-schemas==1.1.6] -# [sentry-kafka-schemas==1.1.7] -# [sentry-kafka-schemas==1.2.0] -# [sentry-kafka-schemas==1.2.1] -# [sentry-kafka-schemas==1.2.2] -# [sentry-kafka-schemas==1.3.0] -# [sentry-kafka-schemas==1.3.1] -# [sentry-kafka-schemas==1.3.2] -# [sentry-kafka-schemas==1.3.3] -# [sentry-kafka-schemas==1.3.4] -# [sentry-kafka-schemas==1.3.5] -# [sentry-kafka-schemas==1.3.6] -# [sentry-kafka-schemas==1.3.7] -# [sentry-kafka-schemas==1.3.8] -# [sentry-kafka-schemas==1.3.9] -# [sentry-kafka-schemas==1.3.10] -# [sentry-kafka-schemas==1.3.11] -# [sentry-kafka-schemas==1.3.12] -# [sentry-kafka-schemas==1.3.13] -# [sentry-kafka-schemas==1.3.14] -# [sentry-kafka-schemas==1.3.15] -# [sentry-kafka-schemas==1.3.16] -# [sentry-kafka-schemas==1.3.17] -# [sentry-kafka-schemas==1.3.18] -# [sentry-kafka-schemas==2.0.0] -# [sentry-kafka-schemas==2.0.1] -# [sentry-kafka-schemas==2.0.2] -# [sentry-kafka-schemas==2.0.4] -# [sentry-kafka-schemas==2.1.0] -# [sentry-kafka-schemas==2.1.1] -# [sentry-kafka-schemas==2.1.2] -# [sentry-kafka-schemas==2.1.3] -# [sentry-kafka-schemas==2.1.4] -# [sentry-kafka-schemas==2.1.5] -# [sentry-kafka-schemas==2.1.6] -# [sentry-kafka-schemas==2.1.7] -# [sentry-kafka-schemas==2.1.8] -# [sentry-kafka-schemas==2.1.9] -# [sentry-kafka-schemas==2.1.10] -# [sentry-kafka-schemas==2.1.11] -# [sentry-kafka-schemas==2.1.13] -# [sentry-kafka-schemas==2.1.14] -# [sentry-kafka-schemas==2.1.15] -# [sentry-kafka-schemas==2.1.16] -# [sentry-kafka-schemas==2.1.18] -# [sentry-kafka-schemas==2.1.19] -# [sentry-kafka-schemas==2.1.20] -# [sentry-kafka-schemas==2.1.21] -# [sentry-kafka-schemas==2.1.22] -# [sentry-kafka-schemas==2.1.23] - -# [sentry-ophio==0.1.1] -# python_versions = >=3.10 -# [sentry-ophio==0.1.4] -# [sentry-ophio==0.1.5] -# [sentry-ophio==0.2.0] -# [sentry-ophio==0.2.3] -# [sentry-ophio==0.2.5] -# [sentry-ophio==0.2.6] -# [sentry-ophio==0.2.7] -# [sentry-ophio==1.0.0] -# [sentry-ophio==1.1.3] - -# [sentry-options==0.0.4] -# [sentry-options==0.0.5] -# [sentry-options==0.0.6] -# [sentry-options==0.0.7] -# [sentry-options==0.0.11] -# [sentry-options==0.0.12] -# [sentry-options==0.0.13] -# [sentry-options==0.0.14] - -# [sentry-protos==0.1.3] -# [sentry-protos==0.1.4] -# [sentry-protos==0.1.5] -# [sentry-protos==0.1.6] -# [sentry-protos==0.1.7] -# [sentry-protos==0.1.8] -# [sentry-protos==0.1.9] -# [sentry-protos==0.1.11] -# [sentry-protos==0.1.12] -# [sentry-protos==0.1.13] -# [sentry-protos==0.1.14] -# [sentry-protos==0.1.15] -# [sentry-protos==0.1.16] -# [sentry-protos==0.1.17] -# [sentry-protos==0.1.18] -# [sentry-protos==0.1.19] -# [sentry-protos==0.1.20] -# [sentry-protos==0.1.21] -# [sentry-protos==0.1.22] -# [sentry-protos==0.1.23] -# [sentry-protos==0.1.26] -# [sentry-protos==0.1.27] -# [sentry-protos==0.1.28] -# [sentry-protos==0.1.29] -# [sentry-protos==0.1.30] -# [sentry-protos==0.1.31] -# [sentry-protos==0.1.32] -# [sentry-protos==0.1.33] -# [sentry-protos==0.1.34] -# [sentry-protos==0.1.35] -# [sentry-protos==0.1.36] -# [sentry-protos==0.1.37] -# [sentry-protos==0.1.38] -# [sentry-protos==0.1.39] -# [sentry-protos==0.1.40] -# [sentry-protos==0.1.41] -# [sentry-protos==0.1.42] -# [sentry-protos==0.1.43] -# [sentry-protos==0.1.44] -# [sentry-protos==0.1.45] -# [sentry-protos==0.1.46] -# [sentry-protos==0.1.47] -# [sentry-protos==0.1.48] -# [sentry-protos==0.1.49] -# [sentry-protos==0.1.50] -# [sentry-protos==0.1.51] -# [sentry-protos==0.1.52] -# [sentry-protos==0.1.53] -# [sentry-protos==0.1.54] -# [sentry-protos==0.1.55] -# [sentry-protos==0.1.57] -# [sentry-protos==0.1.58] -# [sentry-protos==0.1.59] -# [sentry-protos==0.1.60] -# [sentry-protos==0.1.61] -# [sentry-protos==0.1.62] -# [sentry-protos==0.1.63] -# [sentry-protos==0.1.64] -# [sentry-protos==0.1.65] -# [sentry-protos==0.1.66] -# [sentry-protos==0.1.67] -# [sentry-protos==0.1.68] -# [sentry-protos==0.1.69] -# [sentry-protos==0.1.70] -# [sentry-protos==0.1.71] -# [sentry-protos==0.1.72] -# [sentry-protos==0.1.73] -# [sentry-protos==0.1.74] -# [sentry-protos==0.1.75] -# [sentry-protos==0.2.0] -# [sentry-protos==0.2.1] -# [sentry-protos==0.3.0] -# [sentry-protos==0.3.1] -# [sentry-protos==0.3.2] -# [sentry-protos==0.3.3] -# [sentry-protos==0.3.4] -# [sentry-protos==0.3.5] -# [sentry-protos==0.3.6] -# [sentry-protos==0.3.7] -# [sentry-protos==0.3.8] -# [sentry-protos==0.3.9] -# [sentry-protos==0.4.0] -# [sentry-protos==0.4.1] -# [sentry-protos==0.4.2] -# [sentry-protos==0.4.3] -# [sentry-protos==0.4.4] -# [sentry-protos==0.4.6] -# [sentry-protos==0.4.7] -# [sentry-protos==0.4.8] -# [sentry-protos==0.4.9] -# [sentry-protos==0.4.10] -# [sentry-protos==0.4.11] -# [sentry-protos==0.4.12] -# [sentry-protos==0.4.13] -# [sentry-protos==0.4.14] -# [sentry-protos==0.5.0] -# [sentry-protos==0.6.0] -# [sentry-protos==0.7.0] - -# [sentry-redis-tools==0.1.1] -# [sentry-redis-tools==0.1.2] -# [sentry-redis-tools==0.1.3] -# [sentry-redis-tools==0.1.4] -# [sentry-redis-tools==0.1.5] -# [sentry-redis-tools==0.1.6] -# [sentry-redis-tools==0.1.7] -# [sentry-redis-tools==0.2.0] -# [sentry-redis-tools==0.3.0] -# [sentry-redis-tools==0.4.0] -# [sentry-redis-tools==0.5.0] -# [sentry-redis-tools==0.5.1] - -# [sentry-relay==0.5.87] -# [sentry-relay==0.8.12] -# [sentry-relay==0.8.13] -# [sentry-relay==0.8.15] -# [sentry-relay==0.8.16] -# [sentry-relay==0.8.17] -# [sentry-relay==0.8.18] -# [sentry-relay==0.8.19] -# [sentry-relay==0.8.20] -# [sentry-relay==0.8.21] -# [sentry-relay==0.8.22] -# [sentry-relay==0.8.23] -# [sentry-relay==0.8.24] -# [sentry-relay==0.8.25] -# [sentry-relay==0.8.26] -# [sentry-relay==0.8.27] -# [sentry-relay==0.8.28] -# [sentry-relay==0.8.29] -# [sentry-relay==0.8.30] -# [sentry-relay==0.8.31] -# [sentry-relay==0.8.32] -# [sentry-relay==0.8.33] -# [sentry-relay==0.8.34] -# [sentry-relay==0.8.35] -# [sentry-relay==0.8.36] -# [sentry-relay==0.8.37] -# [sentry-relay==0.8.38] -# [sentry-relay==0.8.39] -# [sentry-relay==0.8.41] -# [sentry-relay==0.8.42] -# [sentry-relay==0.8.43] -# [sentry-relay==0.8.44] -# [sentry-relay==0.8.45] -# [sentry-relay==0.8.46] -# [sentry-relay==0.8.48] -# [sentry-relay==0.8.49] -# [sentry-relay==0.8.50] -# [sentry-relay==0.8.52] -# [sentry-relay==0.8.55] -# [sentry-relay==0.8.56] -# [sentry-relay==0.8.57] -# [sentry-relay==0.8.58] -# [sentry-relay==0.8.59] -# [sentry-relay==0.8.60] -# [sentry-relay==0.8.61] -# [sentry-relay==0.8.64] -# [sentry-relay==0.8.66] -# [sentry-relay==0.8.67] -# [sentry-relay==0.9.0] -# [sentry-relay==0.9.1] -# [sentry-relay==0.9.2] -# [sentry-relay==0.9.3] -# [sentry-relay==0.9.4] -# [sentry-relay==0.9.5] -# [sentry-relay==0.9.6] -# [sentry-relay==0.9.7] -# [sentry-relay==0.9.8] -# [sentry-relay==0.9.9] -# [sentry-relay==0.9.10] -# [sentry-relay==0.9.11] -# [sentry-relay==0.9.12] -# [sentry-relay==0.9.13] -# [sentry-relay==0.9.14] -# [sentry-relay==0.9.15] -# [sentry-relay==0.9.16] -# [sentry-relay==0.9.17] -# [sentry-relay==0.9.19] -# [sentry-relay==0.9.20] -# [sentry-relay==0.9.21] -# [sentry-relay==0.9.22] -# [sentry-relay==0.9.23] - -# [sentry-script-runner==0.1.5] -# [sentry-script-runner==0.1.6] -# [sentry-script-runner==0.1.7] -# [sentry-script-runner==0.1.8] -# [sentry-script-runner==0.1.9] -# [sentry-script-runner==0.2.0] -# [sentry-script-runner==0.2.1] -# [sentry-script-runner==0.2.2] -# [sentry-script-runner==0.2.3] -# [sentry-script-runner==0.2.4] -# [sentry-script-runner==0.2.5] -# [sentry-script-runner==0.2.6] -# [sentry-script-runner==0.2.7] -# [sentry-script-runner==0.2.8] -# [sentry-script-runner==0.2.9] -# [sentry-script-runner==1.0.0] -# [sentry-script-runner==1.0.1] - -# [sentry-sdk==1.6.0] -# [sentry-sdk==1.9.0] -# [sentry-sdk==1.9.3] -# [sentry-sdk==1.9.4] -# [sentry-sdk==1.9.5] -# [sentry-sdk==1.9.8] -# [sentry-sdk==1.9.9] -# [sentry-sdk==1.9.10] -# [sentry-sdk==1.10.1] -# [sentry-sdk==1.11.0] -# [sentry-sdk==1.13.0] -# [sentry-sdk==1.14.0] -# [sentry-sdk==1.15.0] -# [sentry-sdk==1.16.0] -# [sentry-sdk==1.17.0] -# [sentry-sdk==1.18.0] -# [sentry-sdk==1.19.0] -# [sentry-sdk==1.19.1] -# [sentry-sdk==1.20.0] -# [sentry-sdk==1.21.0] -# [sentry-sdk==1.21.1] -# [sentry-sdk==1.22.0] -# [sentry-sdk==1.22.1] -# [sentry-sdk==1.22.2] -# [sentry-sdk==1.23.0] -# [sentry-sdk==1.23.1] -# [sentry-sdk==1.24.0] -# [sentry-sdk==1.25.0] -# [sentry-sdk==1.25.1] -# [sentry-sdk==1.26.0] -# [sentry-sdk==1.27.0] -# [sentry-sdk==1.27.1] -# [sentry-sdk==1.28.0] -# [sentry-sdk==1.28.1] -# [sentry-sdk==1.29.0] -# [sentry-sdk==1.29.1] -# [sentry-sdk==1.29.2] -# [sentry-sdk==1.30.0] -# [sentry-sdk==1.31.0] -# [sentry-sdk==1.32.0] -# [sentry-sdk==1.33.0] -# [sentry-sdk==1.33.1] -# [sentry-sdk==1.34.0] -# [sentry-sdk==1.35.0] -# [sentry-sdk==1.36.0] -# [sentry-sdk==1.37.0] -# [sentry-sdk==1.37.1] -# [sentry-sdk==1.38.0] -# [sentry-sdk==1.39.0] -# [sentry-sdk==1.39.1] -# [sentry-sdk==1.39.2] -# [sentry-sdk==1.40.0] -# [sentry-sdk==1.40.1] -# [sentry-sdk==1.40.2] -# [sentry-sdk==1.40.3] -# [sentry-sdk==1.40.4] -# [sentry-sdk==1.40.5] -# [sentry-sdk==1.40.6] -# [sentry-sdk==1.41.0] -# [sentry-sdk==1.42.0] -# [sentry-sdk==1.43.0] -# [sentry-sdk==1.44.0] -# [sentry-sdk==1.44.1] -# [sentry-sdk==1.45.0] -# [sentry-sdk==1.45.1] -# [sentry-sdk==2.0.0a1] -# [sentry-sdk==2.0.0a2] -# [sentry-sdk==2.0.0rc1] -# [sentry-sdk==2.0.0rc2] -# [sentry-sdk==2.0.0rc3] -# [sentry-sdk==2.0.0rc4] -# [sentry-sdk==2.0.0rc5] -# [sentry-sdk==2.0.0rc6] -# [sentry-sdk==2.0.0] -# [sentry-sdk==2.0.1] -# [sentry-sdk==2.1.0] -# [sentry-sdk==2.1.1] -# [sentry-sdk==2.2.0] -# [sentry-sdk==2.2.1] -# [sentry-sdk==2.3.0] -# [sentry-sdk==2.3.1] -# [sentry-sdk==2.4.0] -# [sentry-sdk==2.5.0] -# [sentry-sdk==2.5.1] -# [sentry-sdk==2.6.0] -# [sentry-sdk==2.7.0] -# [sentry-sdk==2.7.1] -# [sentry-sdk==2.8.0] -# [sentry-sdk==2.9.0] -# [sentry-sdk==2.10.0] -# [sentry-sdk==2.11.0] -# [sentry-sdk==2.12.0] -# [sentry-sdk==2.13.0] -# [sentry-sdk==2.14.0] -# [sentry-sdk==2.15.0] -# [sentry-sdk==2.16.0] -# [sentry-sdk==2.17.0] -# [sentry-sdk==2.18.0] -# [sentry-sdk==2.19.0] -# [sentry-sdk==2.19.1] -# [sentry-sdk==2.19.2] -# [sentry-sdk==2.20.0] -# [sentry-sdk==2.21.0] -# [sentry-sdk==2.22.0] -# [sentry-sdk==2.23.0] -# [sentry-sdk==2.23.1] -# [sentry-sdk==2.24.0] -# [sentry-sdk==2.24.1] -# [sentry-sdk==2.25.0] -# [sentry-sdk==2.25.1] -# [sentry-sdk==2.26.0] -# [sentry-sdk==2.26.1] -# [sentry-sdk==2.27.0] -# [sentry-sdk==2.28.0] -# [sentry-sdk==2.29.0] -# [sentry-sdk==2.29.1] -# [sentry-sdk==2.30.0] -# [sentry-sdk==2.31.0] -# [sentry-sdk==2.32.0] -# [sentry-sdk==2.33.0] -# [sentry-sdk==2.33.1] -# [sentry-sdk==2.33.2] -# [sentry-sdk==2.34.0] -# [sentry-sdk==2.34.1] -# [sentry-sdk==2.35.0] -# [sentry-sdk==2.35.1] -# [sentry-sdk==2.35.2] -# [sentry-sdk==2.36.0] -# [sentry-sdk==2.37.0] -# [sentry-sdk==2.37.1] -# [sentry-sdk==2.38.0] -# [sentry-sdk==2.39.0] -# [sentry-sdk==2.40.0] -# [sentry-sdk==2.41.0] -# [sentry-sdk==2.42.0] -# [sentry-sdk==2.42.1] -# [sentry-sdk==2.43.0] -# [sentry-sdk==2.44.0] -# [sentry-sdk==2.45.0] -# [sentry-sdk==2.46.0] -# [sentry-sdk==2.47.0] -# [sentry-sdk==2.48.0] -# [sentry-sdk==2.49.0] -# [sentry-sdk==2.50.0] -# [sentry-sdk==2.51.0a1] -# [sentry-sdk==2.51.0] -# [sentry-sdk==2.52.0a1] -# [sentry-sdk==2.52.0a2] -# [sentry-sdk==2.52.0a3] -# [sentry-sdk==2.52.0a5] -# [sentry-sdk==2.52.0a6] -# [sentry-sdk==2.52.0] -# [sentry-sdk==2.53.0] -# [sentry-sdk==3.0.0a1] -# [sentry-sdk==3.0.0a2] -# [sentry-sdk==3.0.0a3] -# [sentry-sdk==3.0.0a4] -# [sentry-sdk==3.0.0a5] -# [sentry-sdk==3.0.0a6] -# [sentry-sdk==3.0.0a7] +[markdown==3.3.7] +[markdown==3.4.1] +[markdown==3.8.2] + +[markdown-it-py==2.1.0] +[markdown-it-py==3.0.0] +[markdown-it-py==4.0.0] + +[markupsafe==2.0.1] +[markupsafe==2.1.1] +[markupsafe==2.1.2] +[markupsafe==2.1.3] +[markupsafe==2.1.4] +[markupsafe==2.1.5] +[markupsafe==3.0.2] +[markupsafe==3.0.3] + +[maturin==0.14.15] +[maturin==1.4.0] +[maturin==1.5.1] +[maturin==1.11.5] + +[maxminddb==2.0.3] +apt_requires = libmaxminddb-dev +brew_requires = libmaxminddb +[maxminddb==2.2.0] +apt_requires = libmaxminddb-dev +brew_requires = libmaxminddb +[maxminddb==2.3.0] +apt_requires = libmaxminddb-dev +brew_requires = libmaxminddb +[maxminddb==2.5.2] +apt_requires = libmaxminddb-dev +brew_requires = libmaxminddb + +[mccabe==0.6.1] +[mccabe==0.7.0] + +[mdit-py-plugins==0.3.0] +[mdit-py-plugins==0.5.0] + +[mdurl==0.1.2] + +[mergedeep==1.3.4] + +[milksnake==0.1.5] +[milksnake==0.1.6] + +[mistune==2.0.4] +[mistune==3.0.1] + +[mkdocs==1.6.1] + +[mkdocs-get-deps==0.2.0] + +[mkdocs-material==9.6.17] + +[mkdocs-material-extensions==1.3.1] + +[mmh3==3.0.0] +[mmh3==4.0.0] + +[mock==4.0.3] + +[more-itertools==8.13.0] +[more-itertools==8.14.0] +[more-itertools==9.0.0] +[more-itertools==10.0.0] +[more-itertools==10.1.0] + +[msgpack==1.0.4] +python_versions = <3.12 +[msgpack==1.0.7] +python_versions = <3.13 +[msgpack==1.0.8] +python_versions = <3.13 +[msgpack==1.1.0] +[msgpack==1.1.1] + +[msgpack-types==0.2.0] + +[msgspec==0.19.0] + +[multidict==6.0.2] +python_versions = <3.13 +[multidict==6.0.4] +python_versions = <3.13 +[multidict==6.1.0] +[multidict==6.6.4] + +[mypy==0.971] +[mypy==0.981] +[mypy==0.982] +[mypy==0.991] +[mypy==1.0.1] +[mypy==1.1.1] +[mypy==1.3.0] +[mypy==1.4.1] +[mypy==1.5.0] +[mypy==1.5.1] +[mypy==1.6.1] +[mypy==1.7.0] +[mypy==1.7.1] +[mypy==1.8.0] +[mypy==1.9.0] +[mypy==1.10.0] +[mypy==1.11.0] +[mypy==1.11.1] +[mypy==1.11.2] +[mypy==1.12.1] +[mypy==1.13.0] +[mypy==1.14.0] +[mypy==1.14.1] +[mypy==1.15.0] +[mypy==1.16.0] +[mypy==1.16.1] +[mypy==1.17.0] +[mypy==1.17.1] +[mypy==1.18.1] +[mypy==1.18.2] +[mypy==1.19.0] +[mypy==1.19.1] + +[mypy-extensions==0.4.3] +[mypy-extensions==1.0.0] +[mypy-extensions==1.1.0] + +[myst-parser==0.18.0] +[myst-parser==5.0.0] + +[mywsgi==1.0.3] + +[natsort==8.1.0] +[natsort==8.2.0] + +[nodeenv==1.6.0] +[nodeenv==1.7.0] +[nodeenv==1.8.0] +[nodeenv==1.9.1] + +[oauthlib==3.1.0] +[oauthlib==3.2.0] +[oauthlib==3.2.1] +[oauthlib==3.2.2] + +[objectstore-client==0.0.1] +python_versions = >=3.13.1 +[objectstore-client==0.0.4] +[objectstore-client==0.0.5] +[objectstore-client==0.0.6] +[objectstore-client==0.0.7] +[objectstore-client==0.0.8] +[objectstore-client==0.0.9] +[objectstore-client==0.0.10] +[objectstore-client==0.0.11] +[objectstore-client==0.0.12] +[objectstore-client==0.0.13] +[objectstore-client==0.0.14] +[objectstore-client==0.0.15] +[objectstore-client==0.0.16] +[objectstore-client==0.0.17] + +[openai==0.27.0] +[openai==0.27.8] +[openai==1.3.5] +[openai==1.77.0] +[openai==1.93.0] + +[openapi-core==0.14.2] +[openapi-core==0.15.0] +[openapi-core==0.16.5] +[openapi-core==0.18.0] +[openapi-core==0.18.2] +[openapi-core==0.19.3] + +[openapi-pydantic==0.4.0] + +[openapi-schema-validator==0.2.3] +[openapi-schema-validator==0.3.0] +[openapi-schema-validator==0.3.1] +[openapi-schema-validator==0.4.3] +[openapi-schema-validator==0.6.0] +[openapi-schema-validator==0.6.2] + +[openapi-spec-validator==0.4.0] +[openapi-spec-validator==0.5.5] +[openapi-spec-validator==0.6.0] +[openapi-spec-validator==0.7.1] + +[opentelemetry-api==1.32.1] +[opentelemetry-api==1.33.1] +[opentelemetry-api==1.35.0] + +[opentelemetry-proto==1.22.0] +[opentelemetry-proto==1.32.1] + +[opentelemetry-sdk==1.32.1] +[opentelemetry-sdk==1.33.1] +[opentelemetry-sdk==1.35.0] + +[opentelemetry-semantic-conventions==0.53b1] +[opentelemetry-semantic-conventions==0.54b1] +[opentelemetry-semantic-conventions==0.56b0] + +[orjson==3.10.0] +python_versions = <3.13 +[orjson==3.10.3] +python_versions = <3.13 +[orjson==3.10.10] + +[outcome==1.2.0] +[outcome==1.3.0.post0] + +[p4python==2025.1.2767466] + +[packaging==21.3] +[packaging==22.0] +[packaging==23.0] +[packaging==23.1] +[packaging==23.2] +[packaging==24.0] +[packaging==24.1] +[packaging==24.2] +[packaging==25.0] +[packaging==26.0] + +[paginate==0.5.7] + +[paramiko==2.11.0] +[paramiko==3.4.0] +[paramiko==3.4.1] + +[parse==1.19.0] +[parse==1.19.1] +[parse==1.20.0] + +[parsimonious==0.8.0] +[parsimonious==0.8.1] +[parsimonious==0.9.0] +[parsimonious==0.10.0] + +[pathable==0.4.3] + +[pathspec==0.9.0] +[pathspec==0.10.1] +[pathspec==0.10.2] +[pathspec==0.11.0] +[pathspec==0.11.1] +[pathspec==0.11.2] +[pathspec==0.12.1] + +[pep517==0.12.0] +[pep517==0.13.0] + +[petname==2.6] + +[phabricator==0.7.0] +[phabricator==0.9.1] + +[phonenumberslite==8.12.0] +[phonenumberslite==8.12.54] +[phonenumberslite==8.12.55] + +[pillow==9.2.0] +python_versions = <3.12 +[pillow==9.3.0] +python_versions = <3.12 +[pillow==9.4.0] +python_versions = <3.12 +[pillow==9.5.0] +python_versions = <3.12 +[pillow==10.0.0] +python_versions = <3.13 +[pillow==10.0.1] +python_versions = <3.13 +[pillow==10.1.0] +python_versions = <3.13 +[pillow==10.2.0] +python_versions = <3.13 +[pillow==10.3.0] +python_versions = <3.13 +[pillow==10.4.0] +[pillow==11.0.0] +[pillow==11.2.1] +[pillow==11.3.0] + +[pillow-heif==1.1.1] + +[pip==22.1.2] +[pip==22.2.2] +[pip==23.0.1] +[pip==23.1.2] +[pip==23.2.1] +[pip==23.3.1] +[pip==23.3.2] +[pip==25.3] + +[pip-tools==6.7.0] +[pip-tools==6.8.0] +[pip-tools==6.12.2] +[pip-tools==6.13.0] +[pip-tools==6.14.0] +[pip-tools==7.1.0] +[pip-tools==7.3.0] +[pip-tools==7.5.2] + +[pkgconfig==1.5.5] + +[pkgutil-resolve-name==1.3.10] + +[planout==0.6.0] + +[platformdirs==2.5.2] +[platformdirs==2.5.4] +[platformdirs==3.0.0] +[platformdirs==3.5.3] +[platformdirs==3.8.0] +[platformdirs==3.10.0] +[platformdirs==4.0.0] +[platformdirs==4.1.0] +[platformdirs==4.2.0] +[platformdirs==4.2.2] +[platformdirs==4.3.6] +[platformdirs==4.3.7] +[platformdirs==4.3.8] +[platformdirs==4.5.1] + +[pluggy==0.13.1] +[pluggy==1.0.0] +[pluggy==1.3.0] +[pluggy==1.4.0] +[pluggy==1.5.0] + +[ply==3.11] + +[polars==1.33.0] + +[pre-commit==2.18.1] +[pre-commit==2.20.0] +[pre-commit==3.0.4] +[pre-commit==3.3.2] +[pre-commit==3.4.0] +[pre-commit==3.6.0] +[pre-commit==4.0.0] +[pre-commit==4.2.0] + +[progressbar2==3.41.0] +[progressbar2==4.0.0] +[progressbar2==4.2.0] + +[prompt-toolkit==3.0.30] +[prompt-toolkit==3.0.31] +[prompt-toolkit==3.0.39] +[prompt-toolkit==3.0.41] +[prompt-toolkit==3.0.43] +[prompt-toolkit==3.0.48] +[prompt-toolkit==3.0.51] + +[propcache==0.2.0] +[propcache==0.3.2] + +[proto-plus==1.20.4] +[proto-plus==1.22.0] +[proto-plus==1.22.1] +[proto-plus==1.22.2] +[proto-plus==1.22.3] +[proto-plus==1.23.0] +[proto-plus==1.24.0] +[proto-plus==1.25.0] +[proto-plus==1.26.1] + +[protobuf==3.19.0] +[protobuf==4.21.5] +[protobuf==4.21.6] +[protobuf==4.21.12] +[protobuf==4.23.2] +[protobuf==4.24.3] +[protobuf==4.24.4] +[protobuf==4.25.1] +[protobuf==4.25.2] +[protobuf==4.25.3] +[protobuf==5.27.2] +[protobuf==5.27.3] +[protobuf==5.28.0] +[protobuf==5.28.1] +[protobuf==5.28.2] +[protobuf==5.28.3] +[protobuf==5.29.5] +[protobuf==5.29.6] +[protobuf==6.30.2] +[protobuf==6.31.1] +[protobuf==6.32.1] + +[psutil==5.8.0] +[psutil==5.9.2] +[psutil==5.9.7] + +[psycopg2-binary==2.9.3] +apt_requires = libpq-dev +brew_requires = + openssl@1.1 + postgresql +python_versions = <3.12 +[psycopg2-binary==2.9.7] +apt_requires = libpq-dev +brew_requires = + openssl@1.1 + postgresql +python_versions = <3.12 +[psycopg2-binary==2.9.9] +apt_requires = libpq-dev +brew_requires = + openssl@1.1 + postgresql +python_versions = <3.13 +[psycopg2-binary==2.9.10] +apt_requires = libpq-dev +brew_requires = + openssl@1.1 + postgresql + +[puccinialin==0.1.8] + +[py==1.11.0] + +[pyasn1==0.4.5] +[pyasn1==0.4.8] +[pyasn1==0.5.0] +[pyasn1==0.5.1] +[pyasn1==0.6.0] +[pyasn1==0.6.1] + +[pyasn1-modules==0.2.4] +[pyasn1-modules==0.2.8] +[pyasn1-modules==0.3.0] +[pyasn1-modules==0.4.0] +[pyasn1-modules==0.4.1] +[pyasn1-modules==0.4.2] + +[pycodestyle==2.8.0] +[pycodestyle==2.9.0] +[pycodestyle==2.9.1] +[pycodestyle==2.10.0] +[pycodestyle==2.11.0] +[pycodestyle==2.11.1] +[pycodestyle==2.13.0] +[pycodestyle==2.14.0] + +[pycountry==17.5.14] +[pycountry==22.3.5] +[pycountry==23.12.11] + +[pycparser==2.21] +[pycparser==2.22] +[pycparser==2.23] + +[pycryptodomex==3.9.8] +[pycryptodomex==3.19.1] + +[pydantic==1.10.2] +[pydantic==1.10.9] +[pydantic==1.10.17] +[pydantic==1.10.18] +[pydantic==1.10.20] +[pydantic==1.10.23] +[pydantic==1.10.26] +[pydantic==2.5.2] +[pydantic==2.7.4] +[pydantic==2.9.2] +[pydantic==2.11.4] +[pydantic==2.11.7] +[pydantic==2.11.9] + +[pydantic-core==2.14.5] +python_versions = <3.13 +[pydantic-core==2.18.4] +python_versions = <3.13 +[pydantic-core==2.23.4] +[pydantic-core==2.24.2] +[pydantic-core==2.33.2] + +[pyelftools==0.28] +[pyelftools==0.29] + +[pyflakes==2.4.0] +[pyflakes==2.5.0] +[pyflakes==3.0.1] +[pyflakes==3.1.0] +[pyflakes==3.2.0] +[pyflakes==3.3.2] +[pyflakes==3.4.0] + +[pygments==2.13.0] +[pygments==2.18.0] +[pygments==2.19.2] + +[pyjwt==2.4.0] +[pyjwt==2.10.1] + +[pylibmc==1.6.3] +apt_requires = libmemcached-dev +brew_requires = libmemcached + +[pymdown-extensions==10.16.1] + +[pymemcache==4.0.0] + +[pynacl==1.5.0] + +[pyopenssl==22.0.0] +[pyopenssl==23.0.0] +[pyopenssl==23.2.0] + +[pyparsing==3.0.9] +[pyparsing==3.1.2] +[pyparsing==3.1.4] +[pyparsing==3.2.5] + +[pyproject-hooks==1.0.0] +[pyproject-hooks==1.2.0] + +[pyrsistent==0.18.1] +python_versions = <3.13 +[pyrsistent==0.19.3] +python_versions = <3.13 + +[pysocks==1.7.1] + +[pytest==6.1.2] +[pytest==7.1.2] +[pytest==7.1.3] +[pytest==7.2.0] +[pytest==7.2.1] +[pytest==7.4.3] +[pytest==8.0.0] +[pytest==8.0.2] +[pytest==8.1.1] +[pytest==8.1.2] +[pytest==8.2.2] +[pytest==8.3.2] +[pytest==8.3.3] + +[pytest-cov==3.0.0] +[pytest-cov==4.0.0] +[pytest-cov==4.1.0] + +[pytest-django==4.4.0] +[pytest-django==4.5.2] +[pytest-django==4.7.0] +[pytest-django==4.8.0] +[pytest-django==4.9.0] + +[pytest-fail-slow==0.3.0] +[pytest-fail-slow==0.4.0] + +[pytest-forked==1.4.0] +[pytest-forked==1.6.0] + +[pytest-insta==0.3.0] + +[pytest-json-report==1.5.0] + +[pytest-localserver==0.7.0] +[pytest-localserver==0.8.1] + +[pytest-metadata==3.1.1] + +[pytest-rerunfailures==9.1.1] +[pytest-rerunfailures==10.2] +[pytest-rerunfailures==11.0] +[pytest-rerunfailures==11.1.1] +[pytest-rerunfailures==13.0] +[pytest-rerunfailures==14.0] +[pytest-rerunfailures==15.0] + +[pytest-sentry==0.1.9] +[pytest-sentry==0.1.10] +[pytest-sentry==0.1.11] +[pytest-sentry==0.1.16] +[pytest-sentry==0.2.0] +[pytest-sentry==0.2.1] +[pytest-sentry==0.3.0rc1] +[pytest-sentry==0.3.0] +[pytest-sentry==0.3.1] +[pytest-sentry==0.3.2] +[pytest-sentry==0.3.3] +[pytest-sentry==0.4.0] +[pytest-sentry==0.4.1] +[pytest-sentry==0.5.0] +[pytest-sentry==0.5.1] + +[pytest-timeout==2.1.0] +[pytest-timeout==2.2.0] + +[pytest-watch==4.2.0] + +[pytest-workaround-12888==1.0.0] + +[pytest-xdist==2.4.0] +[pytest-xdist==2.5.0] +[pytest-xdist==3.0.2] +[pytest-xdist==3.2.0] +[pytest-xdist==3.5.0] + +[python-dateutil==2.8.0] +[python-dateutil==2.8.1] +[python-dateutil==2.8.2] +[python-dateutil==2.9.0] +[python-dateutil==2.9.0.post0] + +[python-editor==1.0.4] + +[python-gnupg==0.4.8] + +[python-hcl2==2.0.3] +[python-hcl2==3.0.5] +[python-hcl2==4.3.4] +[python-hcl2==4.3.5] + +[python-jose==3.3.0] + +[python-memcached==1.59] + +[python-rapidjson==1.4] +[python-rapidjson==1.8] +[python-rapidjson==1.16] +[python-rapidjson==1.20] +[python-rapidjson==1.21] + +[python-u2flib-server==5.0.0] +[python-u2flib-server==5.0.1] + +[python-utils==3.3.3] +[python-utils==3.8.1] + +[python3-saml==1.14.0] +[python3-saml==1.15.0] + +[pytz==2018.9] +[pytz==2022.1] +[pytz==2022.2] +[pytz==2022.2.1] +[pytz==2023.3] +[pytz==2023.3.post1] + +[pytz-deprecation-shim==0.1.0.post0] + +[pyupgrade==2.37.2] +[pyupgrade==2.37.3] +[pyupgrade==2.38.0] +[pyupgrade==2.38.2] +[pyupgrade==3.1.0] +[pyupgrade==3.2.3] +[pyupgrade==3.3.1] +[pyupgrade==3.7.0] +[pyupgrade==3.13.0] +[pyupgrade==3.15.0] +[pyupgrade==3.17.0] +[pyupgrade==3.19.1] + +[pyuwsgi==2.0.23] +python_versions = <3.13 +validate_skip_imports = uwsgidecorators +[pyuwsgi==2.0.23.post0] +python_versions = <3.13 +validate_skip_imports = uwsgidecorators +[pyuwsgi==2.0.26] +python_versions = <3.13 +validate_skip_imports = uwsgidecorators +[pyuwsgi==2.0.27a1] +python_versions = <3.13 +validate_skip_imports = uwsgidecorators +[pyuwsgi==2.0.27.post1] +validate_skip_imports = uwsgidecorators +[pyuwsgi==2.0.28.post1] +validate_skip_imports = uwsgidecorators +[pyuwsgi==2.0.29] +validate_skip_imports = uwsgidecorators +[pyuwsgi==2.0.30] +validate_skip_imports = uwsgidecorators + +[pyvat==1.3.15] +[pyvat==1.3.16] + +[pyyaml==5.4] +apt_requires = libyaml-dev +brew_requires = libyaml +python_versions = <3.12 +[pyyaml==5.4.1] +apt_requires = libyaml-dev +brew_requires = libyaml +python_versions = <3.12 +[pyyaml==6.0] +apt_requires = libyaml-dev +brew_requires = libyaml +python_versions = <3.12 +[pyyaml==6.0.1] +apt_requires = libyaml-dev +brew_requires = libyaml +python_versions = <3.13 +[pyyaml==6.0.2] +apt_requires = libyaml-dev +brew_requires = libyaml +[pyyaml==6.0.3] +apt_requires = libyaml-dev +brew_requires = libyaml + +[pyyaml-env-tag==1.1] + +[pyzmq==24.0.0] +python_versions = <3.12 + +[rb==1.9.0] +[rb==1.10.0] + +[redis==3.4.1] +[redis==3.5.3] +[redis==4.3.4] +[redis==4.5.4] +[redis==5.0.1] + +[redis-py-cluster==2.1.0] +[redis-py-cluster==2.1.3] + +[referencing==0.29.3] +[referencing==0.30.0] +[referencing==0.30.2] +[referencing==0.31.0] +[referencing==0.32.0] +[referencing==0.35.1] + +[regex==2022.7.25] +[regex==2022.8.17] +[regex==2022.9.13] +[regex==2023.12.25] + +[reportlab==3.6.13] +python_versions = <3.12 +[reportlab==4.0.7] +[reportlab==4.2.5] +[reportlab==4.4.0] +[reportlab==4.4.2] + +[requests==2.25.1] +[requests==2.27.1] +[requests==2.28.1] +[requests==2.28.2] +[requests==2.30.0] +[requests==2.31.0] +[requests==2.32.2] +[requests==2.32.3] +[requests==2.32.4] +[requests==2.32.5] + +[requests-file==2.1.0] + +[requests-oauthlib==1.2.0] +[requests-oauthlib==1.3.1] +[requests-oauthlib==2.0.0] + +[responses==0.21.0] +[responses==0.22.0] +[responses==0.23.1] +[responses==0.23.2] +[responses==0.23.3] +[responses==0.24.0] +[responses==0.24.1] +[responses==0.25.0] +[responses==0.25.2] +[responses==0.25.3] +[responses==0.25.5] +[responses==0.25.6] +[responses==0.25.7] +[responses==0.25.8] +[responses==0.26.0] + +[rfc3339-validator==0.1.2] +[rfc3339-validator==0.1.4] + +[rfc3986==1.5.0] + +[rfc3986-validator==0.1.1] + +[rich==13.8.1] +[rich==14.1.0] + +[roman-numerals==4.1.0] + +[rpds-py==0.9.2] +python_versions = <3.13 +[rpds-py==0.13.1] +python_versions = <3.13 +[rpds-py==0.15.2] +python_versions = <3.13 +[rpds-py==0.20.0] + +[rq==1.0] + +[rsa==4.8] +[rsa==4.9] +[rsa==4.9.1] + +[ruff==0.14.2] +[ruff==0.14.10] + +[ruyaml==0.91.0] + +[s3transfer==0.5.2] +[s3transfer==0.6.0] +[s3transfer==0.6.1] +[s3transfer==0.10.0] +[s3transfer==0.10.1] + +[selenium==4.3.0] +[selenium==4.4.3] +[selenium==4.11.2] +[selenium==4.16.0] +[selenium==4.34.0] + +[semantic-version==2.10.0] + +[sentry-arroyo==0.0.33] +[sentry-arroyo==1.0.3] +[sentry-arroyo==1.0.4] +[sentry-arroyo==1.0.5] +[sentry-arroyo==1.0.6] +[sentry-arroyo==1.0.7] +[sentry-arroyo==1.1.0] +[sentry-arroyo==1.2.0] +[sentry-arroyo==2.0.0] +[sentry-arroyo==2.1.0] +[sentry-arroyo==2.2.0] +[sentry-arroyo==2.3.0] +[sentry-arroyo==2.3.1] +[sentry-arroyo==2.4.0] +[sentry-arroyo==2.5.0] +[sentry-arroyo==2.5.1] +[sentry-arroyo==2.5.2] +[sentry-arroyo==2.5.3] +[sentry-arroyo==2.6.0] +[sentry-arroyo==2.7.0] +[sentry-arroyo==2.7.1] +[sentry-arroyo==2.8.0] +[sentry-arroyo==2.9.0] +[sentry-arroyo==2.9.1] +[sentry-arroyo==2.10.0] +[sentry-arroyo==2.10.1] +[sentry-arroyo==2.10.2] +[sentry-arroyo==2.10.3] +[sentry-arroyo==2.10.4] +[sentry-arroyo==2.10.5] +[sentry-arroyo==2.10.6] +[sentry-arroyo==2.11.0] +[sentry-arroyo==2.11.1] +[sentry-arroyo==2.11.2] +[sentry-arroyo==2.11.3] +[sentry-arroyo==2.11.4] +[sentry-arroyo==2.11.5] +[sentry-arroyo==2.11.6] +[sentry-arroyo==2.11.7] +[sentry-arroyo==2.12.0] +[sentry-arroyo==2.12.1] +[sentry-arroyo==2.13.0] +[sentry-arroyo==2.14.0] +[sentry-arroyo==2.14.1] +[sentry-arroyo==2.14.2] +[sentry-arroyo==2.14.3] +[sentry-arroyo==2.14.4] +[sentry-arroyo==2.14.5] +[sentry-arroyo==2.14.6] +[sentry-arroyo==2.14.7] +[sentry-arroyo==2.14.8] +[sentry-arroyo==2.14.9] +[sentry-arroyo==2.14.10] +[sentry-arroyo==2.14.11] +[sentry-arroyo==2.14.12] +[sentry-arroyo==2.14.13] +[sentry-arroyo==2.14.14] +[sentry-arroyo==2.14.15] +[sentry-arroyo==2.14.16] +[sentry-arroyo==2.14.17] +[sentry-arroyo==2.14.18] +[sentry-arroyo==2.14.19] +[sentry-arroyo==2.14.20] +[sentry-arroyo==2.14.21] +[sentry-arroyo==2.14.22] +[sentry-arroyo==2.14.23] +[sentry-arroyo==2.14.24] +[sentry-arroyo==2.14.25] +[sentry-arroyo==2.15.0] +[sentry-arroyo==2.15.1] +[sentry-arroyo==2.15.2] +[sentry-arroyo==2.15.3] +[sentry-arroyo==2.16.0] +[sentry-arroyo==2.16.1] +[sentry-arroyo==2.16.2] +[sentry-arroyo==2.16.4] +[sentry-arroyo==2.16.5] +[sentry-arroyo==2.17.0] +[sentry-arroyo==2.17.1] +[sentry-arroyo==2.17.2] +[sentry-arroyo==2.17.3] +[sentry-arroyo==2.17.4] +[sentry-arroyo==2.17.6] +[sentry-arroyo==2.18.0] +[sentry-arroyo==2.18.1] +[sentry-arroyo==2.18.2] +[sentry-arroyo==2.19.0] +[sentry-arroyo==2.19.1] +[sentry-arroyo==2.19.2] +[sentry-arroyo==2.19.3] +[sentry-arroyo==2.19.4] +[sentry-arroyo==2.19.5] +[sentry-arroyo==2.19.6] +[sentry-arroyo==2.19.7] +[sentry-arroyo==2.19.8] +[sentry-arroyo==2.19.9] +[sentry-arroyo==2.19.10] +[sentry-arroyo==2.19.11] +[sentry-arroyo==2.19.12] +[sentry-arroyo==2.20.0] +[sentry-arroyo==2.20.2] +[sentry-arroyo==2.20.3] +[sentry-arroyo==2.20.4] +[sentry-arroyo==2.20.5] +[sentry-arroyo==2.20.6] +[sentry-arroyo==2.20.7] +[sentry-arroyo==2.20.8] +[sentry-arroyo==2.20.9] +[sentry-arroyo==2.20.10] +[sentry-arroyo==2.21.0] +[sentry-arroyo==2.22.0] +[sentry-arroyo==2.23.0] +[sentry-arroyo==2.24.0] +[sentry-arroyo==2.25.0] +[sentry-arroyo==2.26.0] +[sentry-arroyo==2.27.0] +[sentry-arroyo==2.28.0] +[sentry-arroyo==2.28.1] +[sentry-arroyo==2.28.2] +[sentry-arroyo==2.28.3] +[sentry-arroyo==2.28.4] +[sentry-arroyo==2.29.0] +[sentry-arroyo==2.29.1] +[sentry-arroyo==2.29.2] +[sentry-arroyo==2.29.3] +[sentry-arroyo==2.29.4] +[sentry-arroyo==2.29.5] +[sentry-arroyo==2.29.6] +[sentry-arroyo==2.29.7] +[sentry-arroyo==2.30.0] +[sentry-arroyo==2.31.0] +[sentry-arroyo==2.31.1] +[sentry-arroyo==2.31.2] +[sentry-arroyo==2.32.0] +[sentry-arroyo==2.32.1] +[sentry-arroyo==2.32.2] +[sentry-arroyo==2.32.3] +[sentry-arroyo==2.32.4] +[sentry-arroyo==2.32.5] +[sentry-arroyo==2.33.0] +[sentry-arroyo==2.33.1] +[sentry-arroyo==2.34.0] +[sentry-arroyo==2.35.0] +[sentry-arroyo==2.36.0] +[sentry-arroyo==2.37.0] +[sentry-arroyo==2.37.1] +[sentry-arroyo==2.38.0] +[sentry-arroyo==2.38.1] + +[sentry-cli==2.14.3] +[sentry-cli==2.14.4] +[sentry-cli==2.15.0] +[sentry-cli==2.15.2] +[sentry-cli==2.16.0] +[sentry-cli==2.17.0] +[sentry-cli==2.17.1] +[sentry-cli==2.17.2] +[sentry-cli==2.17.3] +[sentry-cli==2.17.4] +[sentry-cli==2.17.5] +[sentry-cli==2.18.0] +[sentry-cli==2.18.1] +[sentry-cli==2.19.1] +[sentry-cli==2.19.2] +[sentry-cli==2.19.4] +[sentry-cli==2.20.0] +[sentry-cli==2.20.1] +[sentry-cli==2.20.3] +[sentry-cli==2.20.4] +[sentry-cli==2.20.5] +[sentry-cli==2.20.7] +[sentry-cli==2.30.2] +[sentry-cli==2.30.5] +[sentry-cli==2.31.0] +[sentry-cli==2.31.1] +[sentry-cli==2.31.2] +[sentry-cli==2.32.0] +[sentry-cli==2.32.1] +[sentry-cli==2.32.2] +[sentry-cli==2.33.0] +[sentry-cli==2.33.1] +[sentry-cli==2.34.1] +[sentry-cli==2.35.0] +[sentry-cli==2.36.1] +[sentry-cli==2.36.2] +[sentry-cli==2.36.5] +[sentry-cli==2.36.6] +[sentry-cli==2.37.0] +[sentry-cli==2.38.0] +[sentry-cli==2.38.1] +[sentry-cli==2.38.2] +[sentry-cli==2.39.0] +[sentry-cli==2.39.1] +[sentry-cli==2.40.0] +[sentry-cli==2.41.0] +[sentry-cli==2.41.1] +[sentry-cli==2.42.0] +[sentry-cli==2.42.1] +[sentry-cli==2.42.2] +[sentry-cli==2.42.3] +[sentry-cli==2.42.4] +[sentry-cli==2.42.5a0] +[sentry-cli==2.42.5] +[sentry-cli==2.43.0] +[sentry-cli==2.43.1] +[sentry-cli==2.44.0] +[sentry-cli==2.45.0] +[sentry-cli==2.46.0a0] +[sentry-cli==2.46.0] +[sentry-cli==2.47.0] +[sentry-cli==2.47.1] +[sentry-cli==2.50.0] +[sentry-cli==2.50.2] +[sentry-cli==2.57.0] +[sentry-cli==2.58.1] +[sentry-cli==2.58.2] +[sentry-cli==2.58.3a0] +[sentry-cli==2.58.4] +[sentry-cli==3.0.1] +[sentry-cli==3.1.0] +[sentry-cli==3.2.0] + +[sentry-conventions==0.1.1] +[sentry-conventions==0.2.0] +[sentry-conventions==0.2.1] +[sentry-conventions==0.3.0] +[sentry-conventions==0.3.1] +[sentry-conventions==0.4.0] + +[sentry-covdefaults-disable-branch-coverage==1.0.2] + +[sentry-devenv==1.1.1] +[sentry-devenv==1.1.2] +[sentry-devenv==1.1.3] +[sentry-devenv==1.1.4] +[sentry-devenv==1.1.5] +[sentry-devenv==1.2.0] +[sentry-devenv==1.2.1] +[sentry-devenv==1.2.2] +[sentry-devenv==1.2.3] +[sentry-devenv==1.4.0] +[sentry-devenv==1.5.0] +[sentry-devenv==1.6.0] +[sentry-devenv==1.6.1] +[sentry-devenv==1.6.2] +[sentry-devenv==1.7.0] +[sentry-devenv==1.8.0] +[sentry-devenv==1.9.0] +[sentry-devenv==1.10.0] +[sentry-devenv==1.10.1] +[sentry-devenv==1.10.2] +[sentry-devenv==1.10.3] +[sentry-devenv==1.11.0] +[sentry-devenv==1.12.0] +[sentry-devenv==1.13.0] +[sentry-devenv==1.14.0] +[sentry-devenv==1.14.1] +[sentry-devenv==1.14.2] +[sentry-devenv==1.14.3] +[sentry-devenv==1.14.4] +[sentry-devenv==1.14.5] +[sentry-devenv==1.15.0] +[sentry-devenv==1.16.0] +[sentry-devenv==1.17.0] +[sentry-devenv==1.18.0] +[sentry-devenv==1.19.0] +[sentry-devenv==1.20.0] +[sentry-devenv==1.21.0] +[sentry-devenv==1.22.0] +[sentry-devenv==1.22.1] +[sentry-devenv==1.22.2] +[sentry-devenv==1.23.0] +[sentry-devenv==1.24.0] +[sentry-devenv==1.25.0] +[sentry-devenv==1.26.0] +[sentry-devenv==1.26.1] +[sentry-devenv==1.27.0] +[sentry-devenv==1.28.0] + +[sentry-forked-django-stubs==4.2.6.post1] +[sentry-forked-django-stubs==4.2.6.post2] +[sentry-forked-django-stubs==4.2.6.post3] +[sentry-forked-django-stubs==4.2.7.post1] +[sentry-forked-django-stubs==4.2.7.post2] +[sentry-forked-django-stubs==4.2.7.post3] +[sentry-forked-django-stubs==5.0.0.post1] +[sentry-forked-django-stubs==5.0.0.post2] +[sentry-forked-django-stubs==5.0.0.post3] +[sentry-forked-django-stubs==5.0.2.post1] +[sentry-forked-django-stubs==5.0.2.post2] +[sentry-forked-django-stubs==5.0.2.post3] +[sentry-forked-django-stubs==5.0.2.post4] +[sentry-forked-django-stubs==5.0.2.post5] +[sentry-forked-django-stubs==5.0.2.post6] +[sentry-forked-django-stubs==5.0.2.post7] +[sentry-forked-django-stubs==5.0.2.post8] +[sentry-forked-django-stubs==5.0.2.post9] +[sentry-forked-django-stubs==5.0.2.post10] +[sentry-forked-django-stubs==5.0.4.post1] +[sentry-forked-django-stubs==5.0.4.post2] +[sentry-forked-django-stubs==5.1.0.post1] +[sentry-forked-django-stubs==5.1.0.post2] +[sentry-forked-django-stubs==5.1.0.post3] +[sentry-forked-django-stubs==5.1.1.post1] +[sentry-forked-django-stubs==5.1.2.post1] +[sentry-forked-django-stubs==5.1.3.post2] +[sentry-forked-django-stubs==5.1.3.post3] +[sentry-forked-django-stubs==5.2.0.post1] +[sentry-forked-django-stubs==5.2.0.post2] +[sentry-forked-django-stubs==5.2.0.post3] +[sentry-forked-django-stubs==5.2.0.post4] +[sentry-forked-django-stubs==5.2.1.post1] +[sentry-forked-django-stubs==5.2.1.post2] +[sentry-forked-django-stubs==5.2.1.post3] +[sentry-forked-django-stubs==5.2.2.post1] +[sentry-forked-django-stubs==5.2.2.post2] +[sentry-forked-django-stubs==5.2.4.post1] +[sentry-forked-django-stubs==5.2.5.post1] +[sentry-forked-django-stubs==5.2.5.post2] +[sentry-forked-django-stubs==5.2.5.post3] + +[sentry-forked-djangorestframework-stubs==3.14.4.post1] +[sentry-forked-djangorestframework-stubs==3.14.4.post2] +[sentry-forked-djangorestframework-stubs==3.14.5.post1] +[sentry-forked-djangorestframework-stubs==3.15.0.post1] +[sentry-forked-djangorestframework-stubs==3.15.1.post1] +[sentry-forked-djangorestframework-stubs==3.15.1.post2] +[sentry-forked-djangorestframework-stubs==3.15.2.post1] +[sentry-forked-djangorestframework-stubs==3.15.2.post2] +[sentry-forked-djangorestframework-stubs==3.15.3.post1] +[sentry-forked-djangorestframework-stubs==3.16.0.post1] +[sentry-forked-djangorestframework-stubs==3.16.1.post1] +[sentry-forked-djangorestframework-stubs==3.16.2.post1] +[sentry-forked-djangorestframework-stubs==3.16.3.post1] + +[sentry-forked-email-reply-parser==0.5.12.post1] + +[sentry-forked-jsonnet==0.20.0.post4] + +[sentry-infra-event-notifier==0.0.3] +[sentry-infra-event-notifier==0.0.4] +[sentry-infra-event-notifier==0.0.5] +[sentry-infra-event-notifier==0.0.6] +[sentry-infra-event-notifier==0.0.7] +[sentry-infra-event-notifier==0.0.8] +[sentry-infra-event-notifier==0.0.9] +[sentry-infra-event-notifier==0.0.10] + +[sentry-infra-tools==0.0.6] +[sentry-infra-tools==0.0.7] +[sentry-infra-tools==0.0.8] +[sentry-infra-tools==0.0.9] +[sentry-infra-tools==0.0.10] +[sentry-infra-tools==0.0.11] +[sentry-infra-tools==0.0.12] +[sentry-infra-tools==0.0.13] +[sentry-infra-tools==0.0.16] +[sentry-infra-tools==0.0.17] +[sentry-infra-tools==0.0.18] +[sentry-infra-tools==0.0.19] +[sentry-infra-tools==0.0.20] +[sentry-infra-tools==0.0.21] +[sentry-infra-tools==0.0.22] +[sentry-infra-tools==0.0.23] +[sentry-infra-tools==0.0.24] +[sentry-infra-tools==0.0.25] +[sentry-infra-tools==0.0.26] +[sentry-infra-tools==0.0.27] +[sentry-infra-tools==0.0.28] +[sentry-infra-tools==0.0.29] +[sentry-infra-tools==0.0.30] +[sentry-infra-tools==0.0.31] +[sentry-infra-tools==0.0.32] +[sentry-infra-tools==0.0.33] +[sentry-infra-tools==0.0.34] +[sentry-infra-tools==0.0.35] +[sentry-infra-tools==0.0.36] +[sentry-infra-tools==0.0.37] +[sentry-infra-tools==1.0.0] +[sentry-infra-tools==1.1.0] +[sentry-infra-tools==1.1.1] +[sentry-infra-tools==1.1.2] +[sentry-infra-tools==1.1.3] +[sentry-infra-tools==1.2.0] +[sentry-infra-tools==1.2.1] +[sentry-infra-tools==1.2.2] +[sentry-infra-tools==1.2.3] +[sentry-infra-tools==1.3.0] +[sentry-infra-tools==1.3.1] +[sentry-infra-tools==1.3.2] +[sentry-infra-tools==1.4.0] +[sentry-infra-tools==1.5.0] +[sentry-infra-tools==1.6.0] +[sentry-infra-tools==1.7.0] +[sentry-infra-tools==1.8.0] +[sentry-infra-tools==1.8.1] +[sentry-infra-tools==1.9.0] +[sentry-infra-tools==1.9.1] +[sentry-infra-tools==1.10.0] +[sentry-infra-tools==1.11.0] +[sentry-infra-tools==1.11.1] +[sentry-infra-tools==1.12.0] +[sentry-infra-tools==1.13.0] +[sentry-infra-tools==1.14.0] +[sentry-infra-tools==1.14.1] +[sentry-infra-tools==1.15.0] +[sentry-infra-tools==1.15.1] +[sentry-infra-tools==1.15.2] +[sentry-infra-tools==1.15.3] +[sentry-infra-tools==1.15.4] +[sentry-infra-tools==1.15.5] +[sentry-infra-tools==1.15.6] +[sentry-infra-tools==1.15.7] +[sentry-infra-tools==1.15.8] +[sentry-infra-tools==1.15.9] +[sentry-infra-tools==1.15.10] +[sentry-infra-tools==1.16.0] +[sentry-infra-tools==1.16.1] +[sentry-infra-tools==1.16.2] +[sentry-infra-tools==1.17.0] +[sentry-infra-tools==1.17.1] +[sentry-infra-tools==1.17.2] +[sentry-infra-tools==1.17.3] +[sentry-infra-tools==1.17.4] +[sentry-infra-tools==1.18.0] +[sentry-infra-tools==1.19.0] +[sentry-infra-tools==1.20.0] +[sentry-infra-tools==1.20.1] +[sentry-infra-tools==1.20.2] +[sentry-infra-tools==1.20.3] +[sentry-infra-tools==1.21.0] +[sentry-infra-tools==1.22.0] +[sentry-infra-tools==1.23.0] +[sentry-infra-tools==1.24.0] +[sentry-infra-tools==1.25.0] +[sentry-infra-tools==1.25.1] +[sentry-infra-tools==1.25.2] +[sentry-infra-tools==1.25.3] +[sentry-infra-tools==1.25.4] +[sentry-infra-tools==1.25.5] + +[sentry-jsonish==0.0.1] +[sentry-jsonish==0.0.2] + +[sentry-jsonnet==0.0.4] +[sentry-jsonnet==0.0.5] + +[sentry-k8s-libsonnet==0.0.1] +[sentry-k8s-libsonnet==0.0.2] +[sentry-k8s-libsonnet==0.0.4] + +[sentry-kafka-management==0.0.3] +[sentry-kafka-management==0.0.4] +[sentry-kafka-management==0.0.5] +[sentry-kafka-management==0.0.6] +[sentry-kafka-management==0.0.7] +[sentry-kafka-management==0.0.8] +[sentry-kafka-management==0.0.9] +[sentry-kafka-management==0.0.10] +[sentry-kafka-management==0.0.11] +[sentry-kafka-management==0.0.12] +[sentry-kafka-management==0.0.13] +[sentry-kafka-management==0.0.14] +[sentry-kafka-management==0.0.15] +[sentry-kafka-management==0.0.16] +[sentry-kafka-management==0.1.0] +[sentry-kafka-management==0.1.1] +[sentry-kafka-management==0.1.2] +[sentry-kafka-management==0.1.3] +[sentry-kafka-management==0.1.5] +[sentry-kafka-management==0.1.6] +[sentry-kafka-management==0.1.7] + +[sentry-kafka-schemas==0.0.1] +[sentry-kafka-schemas==0.0.2] +[sentry-kafka-schemas==0.0.3] +[sentry-kafka-schemas==0.0.4] +[sentry-kafka-schemas==0.0.5] +[sentry-kafka-schemas==0.0.6] +[sentry-kafka-schemas==0.0.7] +[sentry-kafka-schemas==0.0.8] +[sentry-kafka-schemas==0.0.9] +[sentry-kafka-schemas==0.0.10] +[sentry-kafka-schemas==0.0.11] +[sentry-kafka-schemas==0.0.12] +[sentry-kafka-schemas==0.0.13] +[sentry-kafka-schemas==0.0.14] +[sentry-kafka-schemas==0.0.15] +[sentry-kafka-schemas==0.0.16] +[sentry-kafka-schemas==0.0.17] +[sentry-kafka-schemas==0.0.18] +[sentry-kafka-schemas==0.0.19] +[sentry-kafka-schemas==0.0.20] +[sentry-kafka-schemas==0.0.21] +[sentry-kafka-schemas==0.0.22] +[sentry-kafka-schemas==0.0.23] +[sentry-kafka-schemas==0.0.24] +[sentry-kafka-schemas==0.0.25] +[sentry-kafka-schemas==0.0.26] +[sentry-kafka-schemas==0.0.27] +[sentry-kafka-schemas==0.0.28] +[sentry-kafka-schemas==0.0.29] +[sentry-kafka-schemas==0.0.31] +[sentry-kafka-schemas==0.0.32] +[sentry-kafka-schemas==0.0.33] +[sentry-kafka-schemas==0.1.2] +[sentry-kafka-schemas==0.1.3] +[sentry-kafka-schemas==0.1.4] +[sentry-kafka-schemas==0.1.5] +[sentry-kafka-schemas==0.1.6] +[sentry-kafka-schemas==0.1.7] +[sentry-kafka-schemas==0.1.8] +[sentry-kafka-schemas==0.1.9] +[sentry-kafka-schemas==0.1.10] +[sentry-kafka-schemas==0.1.11] +[sentry-kafka-schemas==0.1.12] +[sentry-kafka-schemas==0.1.13] +[sentry-kafka-schemas==0.1.14] +[sentry-kafka-schemas==0.1.15] +[sentry-kafka-schemas==0.1.16] +[sentry-kafka-schemas==0.1.17] +[sentry-kafka-schemas==0.1.18] +[sentry-kafka-schemas==0.1.19] +[sentry-kafka-schemas==0.1.21] +[sentry-kafka-schemas==0.1.22] +[sentry-kafka-schemas==0.1.23] +[sentry-kafka-schemas==0.1.24] +[sentry-kafka-schemas==0.1.25] +[sentry-kafka-schemas==0.1.26] +[sentry-kafka-schemas==0.1.27] +[sentry-kafka-schemas==0.1.28] +[sentry-kafka-schemas==0.1.29] +[sentry-kafka-schemas==0.1.30] +[sentry-kafka-schemas==0.1.31] +[sentry-kafka-schemas==0.1.32] +[sentry-kafka-schemas==0.1.33] +[sentry-kafka-schemas==0.1.34] +[sentry-kafka-schemas==0.1.35] +[sentry-kafka-schemas==0.1.36] +[sentry-kafka-schemas==0.1.37] +[sentry-kafka-schemas==0.1.38] +[sentry-kafka-schemas==0.1.39] +[sentry-kafka-schemas==0.1.40] +[sentry-kafka-schemas==0.1.41] +[sentry-kafka-schemas==0.1.42] +[sentry-kafka-schemas==0.1.43] +[sentry-kafka-schemas==0.1.44] +[sentry-kafka-schemas==0.1.45] +[sentry-kafka-schemas==0.1.46] +[sentry-kafka-schemas==0.1.47] +[sentry-kafka-schemas==0.1.48] +[sentry-kafka-schemas==0.1.49] +[sentry-kafka-schemas==0.1.50] +[sentry-kafka-schemas==0.1.51] +[sentry-kafka-schemas==0.1.52] +[sentry-kafka-schemas==0.1.54] +[sentry-kafka-schemas==0.1.56] +[sentry-kafka-schemas==0.1.57] +[sentry-kafka-schemas==0.1.58] +[sentry-kafka-schemas==0.1.59] +[sentry-kafka-schemas==0.1.60] +[sentry-kafka-schemas==0.1.61] +[sentry-kafka-schemas==0.1.62] +[sentry-kafka-schemas==0.1.63] +[sentry-kafka-schemas==0.1.64] +[sentry-kafka-schemas==0.1.65] +[sentry-kafka-schemas==0.1.66] +[sentry-kafka-schemas==0.1.67] +[sentry-kafka-schemas==0.1.68] +[sentry-kafka-schemas==0.1.69] +[sentry-kafka-schemas==0.1.70] +[sentry-kafka-schemas==0.1.71] +[sentry-kafka-schemas==0.1.72] +[sentry-kafka-schemas==0.1.73] +[sentry-kafka-schemas==0.1.74] +[sentry-kafka-schemas==0.1.75] +[sentry-kafka-schemas==0.1.76] +[sentry-kafka-schemas==0.1.78] +[sentry-kafka-schemas==0.1.79] +[sentry-kafka-schemas==0.1.80] +[sentry-kafka-schemas==0.1.81] +[sentry-kafka-schemas==0.1.82] +[sentry-kafka-schemas==0.1.83] +[sentry-kafka-schemas==0.1.84] +[sentry-kafka-schemas==0.1.85] +[sentry-kafka-schemas==0.1.86] +[sentry-kafka-schemas==0.1.87] +[sentry-kafka-schemas==0.1.88] +[sentry-kafka-schemas==0.1.89] +[sentry-kafka-schemas==0.1.90] +[sentry-kafka-schemas==0.1.91] +[sentry-kafka-schemas==0.1.92] +[sentry-kafka-schemas==0.1.93] +[sentry-kafka-schemas==0.1.94] +[sentry-kafka-schemas==0.1.95] +[sentry-kafka-schemas==0.1.96] +[sentry-kafka-schemas==0.1.97] +[sentry-kafka-schemas==0.1.98] +[sentry-kafka-schemas==0.1.99] +[sentry-kafka-schemas==0.1.100] +[sentry-kafka-schemas==0.1.101] +[sentry-kafka-schemas==0.1.102] +[sentry-kafka-schemas==0.1.103] +[sentry-kafka-schemas==0.1.104] +[sentry-kafka-schemas==0.1.105] +[sentry-kafka-schemas==0.1.106] +[sentry-kafka-schemas==0.1.107] +[sentry-kafka-schemas==0.1.109] +[sentry-kafka-schemas==0.1.110] +[sentry-kafka-schemas==0.1.111] +[sentry-kafka-schemas==0.1.112] +[sentry-kafka-schemas==0.1.113] +[sentry-kafka-schemas==0.1.114] +[sentry-kafka-schemas==0.1.115] +[sentry-kafka-schemas==0.1.116] +[sentry-kafka-schemas==0.1.117] +[sentry-kafka-schemas==0.1.118] +[sentry-kafka-schemas==0.1.119] +[sentry-kafka-schemas==0.1.120] +[sentry-kafka-schemas==0.1.121] +[sentry-kafka-schemas==0.1.122] +[sentry-kafka-schemas==0.1.123] +[sentry-kafka-schemas==0.1.124] +[sentry-kafka-schemas==0.1.125] +[sentry-kafka-schemas==0.1.126] +[sentry-kafka-schemas==0.1.127] +[sentry-kafka-schemas==0.1.128] +[sentry-kafka-schemas==0.1.129] +[sentry-kafka-schemas==1.0.0] +[sentry-kafka-schemas==1.0.1] +[sentry-kafka-schemas==1.0.2] +[sentry-kafka-schemas==1.0.3] +[sentry-kafka-schemas==1.0.4] +[sentry-kafka-schemas==1.0.5] +[sentry-kafka-schemas==1.0.6] +[sentry-kafka-schemas==1.0.7] +[sentry-kafka-schemas==1.0.8] +[sentry-kafka-schemas==1.1.0] +[sentry-kafka-schemas==1.1.1] +[sentry-kafka-schemas==1.1.2] +[sentry-kafka-schemas==1.1.3] +[sentry-kafka-schemas==1.1.4] +[sentry-kafka-schemas==1.1.5] +[sentry-kafka-schemas==1.1.6] +[sentry-kafka-schemas==1.1.7] +[sentry-kafka-schemas==1.2.0] +[sentry-kafka-schemas==1.2.1] +[sentry-kafka-schemas==1.2.2] +[sentry-kafka-schemas==1.3.0] +[sentry-kafka-schemas==1.3.1] +[sentry-kafka-schemas==1.3.2] +[sentry-kafka-schemas==1.3.3] +[sentry-kafka-schemas==1.3.4] +[sentry-kafka-schemas==1.3.5] +[sentry-kafka-schemas==1.3.6] +[sentry-kafka-schemas==1.3.7] +[sentry-kafka-schemas==1.3.8] +[sentry-kafka-schemas==1.3.9] +[sentry-kafka-schemas==1.3.10] +[sentry-kafka-schemas==1.3.11] +[sentry-kafka-schemas==1.3.12] +[sentry-kafka-schemas==1.3.13] +[sentry-kafka-schemas==1.3.14] +[sentry-kafka-schemas==1.3.15] +[sentry-kafka-schemas==1.3.16] +[sentry-kafka-schemas==1.3.17] +[sentry-kafka-schemas==1.3.18] +[sentry-kafka-schemas==2.0.0] +[sentry-kafka-schemas==2.0.1] +[sentry-kafka-schemas==2.0.2] +[sentry-kafka-schemas==2.0.4] +[sentry-kafka-schemas==2.1.0] +[sentry-kafka-schemas==2.1.1] +[sentry-kafka-schemas==2.1.2] +[sentry-kafka-schemas==2.1.3] +[sentry-kafka-schemas==2.1.4] +[sentry-kafka-schemas==2.1.5] +[sentry-kafka-schemas==2.1.6] +[sentry-kafka-schemas==2.1.7] +[sentry-kafka-schemas==2.1.8] +[sentry-kafka-schemas==2.1.9] +[sentry-kafka-schemas==2.1.10] +[sentry-kafka-schemas==2.1.11] +[sentry-kafka-schemas==2.1.13] +[sentry-kafka-schemas==2.1.14] +[sentry-kafka-schemas==2.1.15] +[sentry-kafka-schemas==2.1.16] +[sentry-kafka-schemas==2.1.18] +[sentry-kafka-schemas==2.1.19] +[sentry-kafka-schemas==2.1.20] +[sentry-kafka-schemas==2.1.21] +[sentry-kafka-schemas==2.1.22] +[sentry-kafka-schemas==2.1.23] + +[sentry-ophio==0.1.1] +python_versions = >=3.10 +[sentry-ophio==0.1.4] +[sentry-ophio==0.1.5] +[sentry-ophio==0.2.0] +[sentry-ophio==0.2.3] +[sentry-ophio==0.2.5] +[sentry-ophio==0.2.6] +[sentry-ophio==0.2.7] +[sentry-ophio==1.0.0] +[sentry-ophio==1.1.3] + +[sentry-options==0.0.4] +[sentry-options==0.0.5] +[sentry-options==0.0.6] +[sentry-options==0.0.7] +[sentry-options==0.0.11] +[sentry-options==0.0.12] +[sentry-options==0.0.13] +[sentry-options==0.0.14] + +[sentry-protos==0.1.3] +[sentry-protos==0.1.4] +[sentry-protos==0.1.5] +[sentry-protos==0.1.6] +[sentry-protos==0.1.7] +[sentry-protos==0.1.8] +[sentry-protos==0.1.9] +[sentry-protos==0.1.11] +[sentry-protos==0.1.12] +[sentry-protos==0.1.13] +[sentry-protos==0.1.14] +[sentry-protos==0.1.15] +[sentry-protos==0.1.16] +[sentry-protos==0.1.17] +[sentry-protos==0.1.18] +[sentry-protos==0.1.19] +[sentry-protos==0.1.20] +[sentry-protos==0.1.21] +[sentry-protos==0.1.22] +[sentry-protos==0.1.23] +[sentry-protos==0.1.26] +[sentry-protos==0.1.27] +[sentry-protos==0.1.28] +[sentry-protos==0.1.29] +[sentry-protos==0.1.30] +[sentry-protos==0.1.31] +[sentry-protos==0.1.32] +[sentry-protos==0.1.33] +[sentry-protos==0.1.34] +[sentry-protos==0.1.35] +[sentry-protos==0.1.36] +[sentry-protos==0.1.37] +[sentry-protos==0.1.38] +[sentry-protos==0.1.39] +[sentry-protos==0.1.40] +[sentry-protos==0.1.41] +[sentry-protos==0.1.42] +[sentry-protos==0.1.43] +[sentry-protos==0.1.44] +[sentry-protos==0.1.45] +[sentry-protos==0.1.46] +[sentry-protos==0.1.47] +[sentry-protos==0.1.48] +[sentry-protos==0.1.49] +[sentry-protos==0.1.50] +[sentry-protos==0.1.51] +[sentry-protos==0.1.52] +[sentry-protos==0.1.53] +[sentry-protos==0.1.54] +[sentry-protos==0.1.55] +[sentry-protos==0.1.57] +[sentry-protos==0.1.58] +[sentry-protos==0.1.59] +[sentry-protos==0.1.60] +[sentry-protos==0.1.61] +[sentry-protos==0.1.62] +[sentry-protos==0.1.63] +[sentry-protos==0.1.64] +[sentry-protos==0.1.65] +[sentry-protos==0.1.66] +[sentry-protos==0.1.67] +[sentry-protos==0.1.68] +[sentry-protos==0.1.69] +[sentry-protos==0.1.70] +[sentry-protos==0.1.71] +[sentry-protos==0.1.72] +[sentry-protos==0.1.73] +[sentry-protos==0.1.74] +[sentry-protos==0.1.75] +[sentry-protos==0.2.0] +[sentry-protos==0.2.1] +[sentry-protos==0.3.0] +[sentry-protos==0.3.1] +[sentry-protos==0.3.2] +[sentry-protos==0.3.3] +[sentry-protos==0.3.4] +[sentry-protos==0.3.5] +[sentry-protos==0.3.6] +[sentry-protos==0.3.7] +[sentry-protos==0.3.8] +[sentry-protos==0.3.9] +[sentry-protos==0.4.0] +[sentry-protos==0.4.1] +[sentry-protos==0.4.2] +[sentry-protos==0.4.3] +[sentry-protos==0.4.4] +[sentry-protos==0.4.6] +[sentry-protos==0.4.7] +[sentry-protos==0.4.8] +[sentry-protos==0.4.9] +[sentry-protos==0.4.10] +[sentry-protos==0.4.11] +[sentry-protos==0.4.12] +[sentry-protos==0.4.13] +[sentry-protos==0.4.14] +[sentry-protos==0.5.0] +[sentry-protos==0.6.0] +[sentry-protos==0.7.0] + +[sentry-redis-tools==0.1.1] +[sentry-redis-tools==0.1.2] +[sentry-redis-tools==0.1.3] +[sentry-redis-tools==0.1.4] +[sentry-redis-tools==0.1.5] +[sentry-redis-tools==0.1.6] +[sentry-redis-tools==0.1.7] +[sentry-redis-tools==0.2.0] +[sentry-redis-tools==0.3.0] +[sentry-redis-tools==0.4.0] +[sentry-redis-tools==0.5.0] +[sentry-redis-tools==0.5.1] + +[sentry-relay==0.5.87] +[sentry-relay==0.8.12] +[sentry-relay==0.8.13] +[sentry-relay==0.8.15] +[sentry-relay==0.8.16] +[sentry-relay==0.8.17] +[sentry-relay==0.8.18] +[sentry-relay==0.8.19] +[sentry-relay==0.8.20] +[sentry-relay==0.8.21] +[sentry-relay==0.8.22] +[sentry-relay==0.8.23] +[sentry-relay==0.8.24] +[sentry-relay==0.8.25] +[sentry-relay==0.8.26] +[sentry-relay==0.8.27] +[sentry-relay==0.8.28] +[sentry-relay==0.8.29] +[sentry-relay==0.8.30] +[sentry-relay==0.8.31] +[sentry-relay==0.8.32] +[sentry-relay==0.8.33] +[sentry-relay==0.8.34] +[sentry-relay==0.8.35] +[sentry-relay==0.8.36] +[sentry-relay==0.8.37] +[sentry-relay==0.8.38] +[sentry-relay==0.8.39] +[sentry-relay==0.8.41] +[sentry-relay==0.8.42] +[sentry-relay==0.8.43] +[sentry-relay==0.8.44] +[sentry-relay==0.8.45] +[sentry-relay==0.8.46] +[sentry-relay==0.8.48] +[sentry-relay==0.8.49] +[sentry-relay==0.8.50] +[sentry-relay==0.8.52] +[sentry-relay==0.8.55] +[sentry-relay==0.8.56] +[sentry-relay==0.8.57] +[sentry-relay==0.8.58] +[sentry-relay==0.8.59] +[sentry-relay==0.8.60] +[sentry-relay==0.8.61] +[sentry-relay==0.8.64] +[sentry-relay==0.8.66] +[sentry-relay==0.8.67] +[sentry-relay==0.9.0] +[sentry-relay==0.9.1] +[sentry-relay==0.9.2] +[sentry-relay==0.9.3] +[sentry-relay==0.9.4] +[sentry-relay==0.9.5] +[sentry-relay==0.9.6] +[sentry-relay==0.9.7] +[sentry-relay==0.9.8] +[sentry-relay==0.9.9] +[sentry-relay==0.9.10] +[sentry-relay==0.9.11] +[sentry-relay==0.9.12] +[sentry-relay==0.9.13] +[sentry-relay==0.9.14] +[sentry-relay==0.9.15] +[sentry-relay==0.9.16] +[sentry-relay==0.9.17] +[sentry-relay==0.9.19] +[sentry-relay==0.9.20] +[sentry-relay==0.9.21] +[sentry-relay==0.9.22] +[sentry-relay==0.9.23] + +[sentry-script-runner==0.1.5] +[sentry-script-runner==0.1.6] +[sentry-script-runner==0.1.7] +[sentry-script-runner==0.1.8] +[sentry-script-runner==0.1.9] +[sentry-script-runner==0.2.0] +[sentry-script-runner==0.2.1] +[sentry-script-runner==0.2.2] +[sentry-script-runner==0.2.3] +[sentry-script-runner==0.2.4] +[sentry-script-runner==0.2.5] +[sentry-script-runner==0.2.6] +[sentry-script-runner==0.2.7] +[sentry-script-runner==0.2.8] +[sentry-script-runner==0.2.9] +[sentry-script-runner==1.0.0] +[sentry-script-runner==1.0.1] + +[sentry-sdk==1.6.0] +[sentry-sdk==1.9.0] +[sentry-sdk==1.9.3] +[sentry-sdk==1.9.4] +[sentry-sdk==1.9.5] +[sentry-sdk==1.9.8] +[sentry-sdk==1.9.9] +[sentry-sdk==1.9.10] +[sentry-sdk==1.10.1] +[sentry-sdk==1.11.0] +[sentry-sdk==1.13.0] +[sentry-sdk==1.14.0] +[sentry-sdk==1.15.0] +[sentry-sdk==1.16.0] +[sentry-sdk==1.17.0] +[sentry-sdk==1.18.0] +[sentry-sdk==1.19.0] +[sentry-sdk==1.19.1] +[sentry-sdk==1.20.0] +[sentry-sdk==1.21.0] +[sentry-sdk==1.21.1] +[sentry-sdk==1.22.0] +[sentry-sdk==1.22.1] +[sentry-sdk==1.22.2] +[sentry-sdk==1.23.0] +[sentry-sdk==1.23.1] +[sentry-sdk==1.24.0] +[sentry-sdk==1.25.0] +[sentry-sdk==1.25.1] +[sentry-sdk==1.26.0] +[sentry-sdk==1.27.0] +[sentry-sdk==1.27.1] +[sentry-sdk==1.28.0] +[sentry-sdk==1.28.1] +[sentry-sdk==1.29.0] +[sentry-sdk==1.29.1] +[sentry-sdk==1.29.2] +[sentry-sdk==1.30.0] +[sentry-sdk==1.31.0] +[sentry-sdk==1.32.0] +[sentry-sdk==1.33.0] +[sentry-sdk==1.33.1] +[sentry-sdk==1.34.0] +[sentry-sdk==1.35.0] +[sentry-sdk==1.36.0] +[sentry-sdk==1.37.0] +[sentry-sdk==1.37.1] +[sentry-sdk==1.38.0] +[sentry-sdk==1.39.0] +[sentry-sdk==1.39.1] +[sentry-sdk==1.39.2] +[sentry-sdk==1.40.0] +[sentry-sdk==1.40.1] +[sentry-sdk==1.40.2] +[sentry-sdk==1.40.3] +[sentry-sdk==1.40.4] +[sentry-sdk==1.40.5] +[sentry-sdk==1.40.6] +[sentry-sdk==1.41.0] +[sentry-sdk==1.42.0] +[sentry-sdk==1.43.0] +[sentry-sdk==1.44.0] +[sentry-sdk==1.44.1] +[sentry-sdk==1.45.0] +[sentry-sdk==1.45.1] +[sentry-sdk==2.0.0a1] +[sentry-sdk==2.0.0a2] +[sentry-sdk==2.0.0rc1] +[sentry-sdk==2.0.0rc2] +[sentry-sdk==2.0.0rc3] +[sentry-sdk==2.0.0rc4] +[sentry-sdk==2.0.0rc5] +[sentry-sdk==2.0.0rc6] +[sentry-sdk==2.0.0] +[sentry-sdk==2.0.1] +[sentry-sdk==2.1.0] +[sentry-sdk==2.1.1] +[sentry-sdk==2.2.0] +[sentry-sdk==2.2.1] +[sentry-sdk==2.3.0] +[sentry-sdk==2.3.1] +[sentry-sdk==2.4.0] +[sentry-sdk==2.5.0] +[sentry-sdk==2.5.1] +[sentry-sdk==2.6.0] +[sentry-sdk==2.7.0] +[sentry-sdk==2.7.1] +[sentry-sdk==2.8.0] +[sentry-sdk==2.9.0] +[sentry-sdk==2.10.0] +[sentry-sdk==2.11.0] +[sentry-sdk==2.12.0] +[sentry-sdk==2.13.0] +[sentry-sdk==2.14.0] +[sentry-sdk==2.15.0] +[sentry-sdk==2.16.0] +[sentry-sdk==2.17.0] +[sentry-sdk==2.18.0] +[sentry-sdk==2.19.0] +[sentry-sdk==2.19.1] +[sentry-sdk==2.19.2] +[sentry-sdk==2.20.0] +[sentry-sdk==2.21.0] +[sentry-sdk==2.22.0] +[sentry-sdk==2.23.0] +[sentry-sdk==2.23.1] +[sentry-sdk==2.24.0] +[sentry-sdk==2.24.1] +[sentry-sdk==2.25.0] +[sentry-sdk==2.25.1] +[sentry-sdk==2.26.0] +[sentry-sdk==2.26.1] +[sentry-sdk==2.27.0] +[sentry-sdk==2.28.0] +[sentry-sdk==2.29.0] +[sentry-sdk==2.29.1] +[sentry-sdk==2.30.0] +[sentry-sdk==2.31.0] +[sentry-sdk==2.32.0] +[sentry-sdk==2.33.0] +[sentry-sdk==2.33.1] +[sentry-sdk==2.33.2] +[sentry-sdk==2.34.0] +[sentry-sdk==2.34.1] +[sentry-sdk==2.35.0] +[sentry-sdk==2.35.1] +[sentry-sdk==2.35.2] +[sentry-sdk==2.36.0] +[sentry-sdk==2.37.0] +[sentry-sdk==2.37.1] +[sentry-sdk==2.38.0] +[sentry-sdk==2.39.0] +[sentry-sdk==2.40.0] +[sentry-sdk==2.41.0] +[sentry-sdk==2.42.0] +[sentry-sdk==2.42.1] +[sentry-sdk==2.43.0] +[sentry-sdk==2.44.0] +[sentry-sdk==2.45.0] +[sentry-sdk==2.46.0] +[sentry-sdk==2.47.0] +[sentry-sdk==2.48.0] +[sentry-sdk==2.49.0] +[sentry-sdk==2.50.0] +[sentry-sdk==2.51.0a1] +[sentry-sdk==2.51.0] +[sentry-sdk==2.52.0a1] +[sentry-sdk==2.52.0a2] +[sentry-sdk==2.52.0a3] +[sentry-sdk==2.52.0a5] +[sentry-sdk==2.52.0a6] +[sentry-sdk==2.52.0] +[sentry-sdk==2.53.0] +[sentry-sdk==3.0.0a1] +[sentry-sdk==3.0.0a2] +[sentry-sdk==3.0.0a3] +[sentry-sdk==3.0.0a4] +[sentry-sdk==3.0.0a5] +[sentry-sdk==3.0.0a6] +[sentry-sdk==3.0.0a7] [sentry-streams==0.0.5] -python_versions = <3.14 [sentry-streams==0.0.6] -python_versions = <3.14 [sentry-streams==0.0.7] -python_versions = <3.14 [sentry-streams==0.0.8] -python_versions = <3.14 [sentry-streams==0.0.9] -python_versions = <3.14 [sentry-streams==0.0.10] -python_versions = <3.14 [sentry-streams==0.0.11] -python_versions = <3.14 [sentry-streams==0.0.12] -python_versions = <3.14 [sentry-streams==0.0.13] -python_versions = <3.14 [sentry-streams==0.0.14] -python_versions = <3.14 [sentry-streams==0.0.15] -python_versions = <3.14 [sentry-streams==0.0.16] -python_versions = <3.14 [sentry-streams==0.0.17] -python_versions = <3.14 [sentry-streams==0.0.18] -python_versions = <3.14 [sentry-streams==0.0.19] -python_versions = <3.14 [sentry-streams==0.0.20] -python_versions = <3.14 [sentry-streams==0.0.21] -python_versions = <3.14 [sentry-streams==0.0.22] -python_versions = <3.14 [sentry-streams==0.0.23] -python_versions = <3.14 [sentry-streams==0.0.24] -python_versions = <3.14 [sentry-streams==0.0.31] -python_versions = <3.14 [sentry-streams==0.0.34] -python_versions = <3.14 [sentry-streams==0.0.35] -python_versions = <3.14 [sentry-streams-k8s==0.0.1] -python_versions = <3.14 [sentry-streams-k8s==0.0.2] -python_versions = <3.14 [sentry-streams-k8s==0.0.3] -python_versions = <3.14 [sentry-usage-accountant==0.0.2] [sentry-usage-accountant==0.0.3] From 67167fe0d839cf6e92c63cedd88a2bf8cb053a07 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 10:17:48 -0800 Subject: [PATCH 31/66] [skip ci] fix skill --- .../{upgrade-python.md => upgrade-python/SKILL.md} | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) rename .claude/skills/{upgrade-python.md => upgrade-python/SKILL.md} (80%) diff --git a/.claude/skills/upgrade-python.md b/.claude/skills/upgrade-python/SKILL.md similarity index 80% rename from .claude/skills/upgrade-python.md rename to .claude/skills/upgrade-python/SKILL.md index 968367a8..9de462c3 100644 --- a/.claude/skills/upgrade-python.md +++ b/.claude/skills/upgrade-python/SKILL.md @@ -1,4 +1,7 @@ -# upgrade-python +--- +name: upgrade-python +description: workflow to rebuild all packages against a newer python version +--- Adds support for a new Python version by building all packages, identifying failures, and marking them with `python_versions` restrictions. @@ -75,10 +78,11 @@ gh api repos/getsentry/pypi/actions/jobs//logs > job-.log ``` Parse the logs to identify: -- **Succeeded packages**: lines matching `=== ==@` that are NOT followed by `!!! FAILED:` +- **Succeeded packages**: lines matching `=== ==@` that are NOT followed by `!!! FAILED:` or `!!! SKIPPED` - **Failed packages**: lines matching `!!! FAILED: ==: ` +- **Skipped packages**: lines matching `!!! SKIPPED (newer version already failed): ==` — these are older versions that were auto-skipped because a newer version of the same package already failed -A package is considered failed if it failed on ANY platform (linux-amd64, linux-arm64, macos). +A package is considered failed if it failed or was skipped on ANY platform (linux-amd64, linux-arm64, macos). ## Step 4: Update `packages.ini` @@ -100,6 +104,7 @@ Wait for CI again. If there are still failures, repeat steps 3-5 until CI is gre ## Important notes - The `--upgrade-python` flag in `build.py` enables continue-on-failure mode with a 10-minute timeout per package. Without it, builds fail on first error (normal behavior). -- The `=== name==version@python` and `!!! FAILED: name==version: error` log lines are the markers used to parse results. +- The `=== name==version@python`, `!!! FAILED: name==version: error`, and `!!! SKIPPED (newer version already failed): name==version` log lines are the markers used to parse results. +- In `--upgrade-python` mode, packages are sorted newest-version-first within each name. If the newest version fails, all older versions are automatically skipped. - When commenting out succeeded packages, comment out the entire section (`[name==version]` header + all config lines). - Keep the ordering of sections in `packages.ini` the same. From 13e99d48ae067bd85d98f0dff717d15e9059d3de Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 10:18:45 -0800 Subject: [PATCH 32/66] build: single-version mode for Python 3.14 upgrade Co-Authored-By: Claude Opus 4.6 --- .github/workflows/build.yml | 7 ++----- build.py | 2 +- docker/install-pythons | 2 +- validate.py | 2 +- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 093573ff..bec5c86e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,7 +41,7 @@ jobs: container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.sha }} steps: - uses: actions/checkout@v3 - - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io + - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io --upgrade-python - run: python3 -um validate --index-url https://pypi.devinfra.sentry.io/simple - uses: actions/upload-artifact@v4 with: @@ -57,13 +57,10 @@ jobs: - run: pip install --break-system-packages uv - run: python3 -u docker/install-pythons --dest pythons - run: | - echo "$PWD/pythons/cp311-cp311/bin" >> "$GITHUB_PATH" - echo "$PWD/pythons/cp312-cp312/bin" >> "$GITHUB_PATH" - echo "$PWD/pythons/cp313-cp313/bin" >> "$GITHUB_PATH" echo "$PWD/pythons/cp314-cp314/bin" >> "$GITHUB_PATH" echo "$PWD/venv/bin" >> "$GITHUB_PATH" - run: python3 -um venv venv && pip install -r docker/requirements.txt - - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io + - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io --upgrade-python - run: python3 -um validate --index-url https://pypi.devinfra.sentry.io/simple - uses: actions/upload-artifact@v4 with: diff --git a/build.py b/build.py index 737e4c9f..3375546b 100644 --- a/build.py +++ b/build.py @@ -32,7 +32,7 @@ from packaging.utils import parse_wheel_filename from packaging.version import Version -PYTHONS = ((3, 11), (3, 12), (3, 13), (3, 14)) +PYTHONS = ((3, 14),) # temporarily building only new version BINARY_EXTS = frozenset( (".c", ".cc", ".cpp", ".cxx", ".pxd", ".pxi", ".pyx", ".go", ".rs") diff --git a/docker/install-pythons b/docker/install-pythons index ed745b25..7951d0d1 100755 --- a/docker/install-pythons +++ b/docker/install-pythons @@ -6,7 +6,7 @@ import glob import os import subprocess -VERSIONS = ("3.11.14", "3.12.12", "3.13.12", "3.14.3") +VERSIONS = ("3.14.3",) # temporarily building only new version def main() -> int: diff --git a/validate.py b/validate.py index 8f9d8727..171c5fdc 100644 --- a/validate.py +++ b/validate.py @@ -16,7 +16,7 @@ from packaging.utils import parse_wheel_filename from packaging.version import Version -PYTHONS = ((3, 11), (3, 12), (3, 13), (3, 14)) +PYTHONS = ((3, 14),) # temporarily building only new version DIST_INFO_RE = re.compile(r"^[^/]+.dist-info/[^/]+$") From b5a1cd839678ba4b7b850883effa08da24c709b5 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 10:23:53 -0800 Subject: [PATCH 33/66] build: fix Dockerfile for single-version Python 3.14 mode Use python3.11 from the base image to create the venv instead of the installed cpython path, and only include cp314 on PATH. Co-Authored-By: Claude Opus 4.6 --- docker/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index ec94993f..18e84151 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -36,7 +36,7 @@ RUN : \ ENV \ BUILD_IN_CONTAINER=1 \ - PATH=/venv/bin:/opt/python/cp311-cp311/bin:/opt/python/cp312-cp312/bin:/opt/python/cp313-cp313/bin:/opt/python/cp314-cp314/bin:$PATH \ + PATH=/venv/bin:/opt/python/cp314-cp314/bin:$PATH \ PIP_DISABLE_PIP_VERSION_CHECK=1 \ PIP_NO_CACHE_DIR=1 \ PIP_NO_WARN_ABOUT_ROOT_USER=0 @@ -48,7 +48,7 @@ RUN /tmp/install-pythons COPY requirements.txt /tmp/requirements.txt RUN : \ - && /opt/python/cp311-cp311/bin/python3.11 -m venv /venv \ + && python3.11 -m venv /venv \ && /venv/bin/pip install --no-cache-dir -r /tmp/requirements.txt ENTRYPOINT ["dumb-init", "--"] From 0204263b375f43d94995db503a07ac4997c21b8e Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 10:40:45 -0800 Subject: [PATCH 34/66] [skip ci] update skill --- .claude/skills/upgrade-python/SKILL.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.claude/skills/upgrade-python/SKILL.md b/.claude/skills/upgrade-python/SKILL.md index 9de462c3..c6c5049b 100644 --- a/.claude/skills/upgrade-python/SKILL.md +++ b/.claude/skills/upgrade-python/SKILL.md @@ -37,6 +37,18 @@ Change `VERSIONS` to only the new full version: VERSIONS = ("3.14.3",) # temporarily building only new version ``` +### `docker/Dockerfile` + +**Line 39** — keep only the new cpython PATH entry (the base image already provides python3.11 on PATH): +```dockerfile + PATH=/venv/bin:/opt/python/cp314-cp314/bin:$PATH \ +``` + +**Line 51** — use `python3.11` directly (provided by the base image) instead of the installed cpython path: +```dockerfile + && python3.11 -m venv /venv \ +``` + ### `.github/workflows/build.yml` **Lines 60-63** — keep only the new cpython PATH entry: From 6db083c40ebc7f6b767f89ac4943bd0b71d711ce Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 11:06:41 -0800 Subject: [PATCH 35/66] build: add fail-fast: false for linux matrix jobs Prevents arm64 from being cancelled when amd64 fails (or vice versa) during upgrade-python builds. Also updates the upgrade-python skill with Dockerfile instructions, fail-fast note, and failure summary report step. Co-Authored-By: Claude Opus 4.6 --- .claude/skills/upgrade-python/SKILL.md | 42 ++++++++++++++++++++++++-- .github/workflows/build.yml | 1 + 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/.claude/skills/upgrade-python/SKILL.md b/.claude/skills/upgrade-python/SKILL.md index c6c5049b..709e646d 100644 --- a/.claude/skills/upgrade-python/SKILL.md +++ b/.claude/skills/upgrade-python/SKILL.md @@ -58,6 +58,15 @@ VERSIONS = ("3.14.3",) # temporarily building only new version echo "$PWD/venv/bin" >> "$GITHUB_PATH" ``` +**Linux job strategy** — add `fail-fast: false` so matrix jobs don't cancel each other: +```yaml + linux: + needs: [image] + strategy: + fail-fast: false + matrix: +``` + **Line 44** — add `--upgrade-python` flag to linux build command: ```yaml - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io --upgrade-python @@ -106,11 +115,40 @@ In one pass: 3. **Do NOT modify** packages that already have a `python_versions` restriction that is stricter than or equal to the new version (e.g., if a package already has `python_versions = <3.13`, leave it alone). -## Step 5: Commit, push, repeat +## Step 5: Write detailed failure summary to `PYTHON-MAJOR-MINOR-UPGRADE.md` + +After parsing logs, create a file named `PYTHON-MAJOR.MINOR-UPGRADE.md` (e.g., `PYTHON-3.14-UPGRADE.md`) in the repo root with a detailed summary of all packages that failed to build. This serves as a reference for fixing build issues. The file should contain: + +- A header with the Python version and date +- A table or list of every failed package with: + - Package name and version + - Which platform(s) it failed on (linux-amd64, linux-arm64, macos, or all) + - The error message / root cause extracted from the logs + - A category for the failure (e.g., "Cython incompatibility", "pyo3 version too old", "missing C API", "setuptools/distutils issue", etc.) +- A summary section grouping failures by category with counts, so we can prioritize which categories to tackle first + +Example structure: +```markdown +# Python 3.14 Upgrade — Build Failures + +## Summary by category +| Category | Count | Packages | +|----------|-------|----------| +| pyo3 too old | 5 | pkg1, pkg2, ... | +| Cython incompatibility | 3 | pkg3, pkg4, ... | + +## Detailed failures +### pkg1==1.2.3 +- **Platforms**: all +- **Category**: pyo3 too old +- **Error**: pyo3 0.22.2 only supports up to Python 3.13 +``` + +## Step 6: Commit, push, repeat Commit with a message like "mark python 3.14 build failures in packages.ini" and push. -Wait for CI again. If there are still failures, repeat steps 3-5 until CI is green. +Wait for CI again. If there are still failures, repeat steps 3-6 until CI is green. ## Important notes diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bec5c86e..0f67b06d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,6 +33,7 @@ jobs: linux: needs: [image] strategy: + fail-fast: false matrix: include: - {arch: amd64, os: ubuntu-latest} From 3c6e33574435785cc33c77b1c86065ec89f77bd4 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 11:19:41 -0800 Subject: [PATCH 36/66] [skip ci] update skill --- .claude/skills/upgrade-python/SKILL.md | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.claude/skills/upgrade-python/SKILL.md b/.claude/skills/upgrade-python/SKILL.md index 709e646d..d4bfe098 100644 --- a/.claude/skills/upgrade-python/SKILL.md +++ b/.claude/skills/upgrade-python/SKILL.md @@ -58,15 +58,6 @@ VERSIONS = ("3.14.3",) # temporarily building only new version echo "$PWD/venv/bin" >> "$GITHUB_PATH" ``` -**Linux job strategy** — add `fail-fast: false` so matrix jobs don't cancel each other: -```yaml - linux: - needs: [image] - strategy: - fail-fast: false - matrix: -``` - **Line 44** — add `--upgrade-python` flag to linux build command: ```yaml - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io --upgrade-python @@ -84,6 +75,7 @@ Commit all changes with a message like "build: single-version mode for Python 3. ## Step 3: Wait for CI, then download and parse logs Wait for CI to complete (it will likely fail — that's expected). +Poll it every 3 minutes so we don't get ratelimited. Download logs from each build job using the GitHub CLI: From d96ffbe214941fa2f197a11a85357abf3ea26046 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 11:39:34 -0800 Subject: [PATCH 37/66] mark python 3.14 build failures in packages.ini Comment out 113 packages that succeeded on cp314. Add python_versions = <3.14 to 30 packages that failed: - 7 packages with PyO3 too old for 3.14 - 3 packages with no sdist on PyPI - 1 package with CPython 3.14 C API incompatibility (pyuwsgi) - 1 package with missing build dep (xmlsec/lxml) Also adds PYTHON-3.14-UPGRADE.md with detailed failure analysis. Co-Authored-By: Claude Opus 4.6 --- PYTHON-3.14-UPGRADE.md | 131 +++++++++++++++++++++++ packages.ini | 236 ++++++----------------------------------- 2 files changed, 161 insertions(+), 206 deletions(-) create mode 100644 PYTHON-3.14-UPGRADE.md diff --git a/PYTHON-3.14-UPGRADE.md b/PYTHON-3.14-UPGRADE.md new file mode 100644 index 00000000..effdb020 --- /dev/null +++ b/PYTHON-3.14-UPGRADE.md @@ -0,0 +1,131 @@ +# Python 3.14 Upgrade — Build Failures + +Date: 2026-02-24 +Python version: 3.14.3 +CI run: https://github.com/getsentry/pypi/actions/runs/22364364543 + +## Summary by category + +| Category | Count | Packages | +|----------|-------|----------| +| PyO3 too old for 3.14 | 7 | jiter, orjson, pydantic-core, sentry-streams, tiktoken, vroomrs, rpds-py | +| No sdist on PyPI | 3 | backports-zstd, lief, sentry-forked-jsonnet | +| CPython 3.14 C API change | 1 | pyuwsgi | +| Missing build dependency | 1 | xmlsec | +| Build timeout | 1 | grpcio (1.73.1 on linux-amd64 only) | +| Platform-specific issues | 3 | grpcio (1.67.0 macos), pillow (linux-amd64), p4python (macos) | + +Note: The last two categories (timeout + platform-specific) are NOT Python 3.14 incompatibilities. +These packages built successfully on at least one platform and were commented out (not restricted). + +## Detailed failures + +### PyO3 too old for Python 3.14 + +These packages use PyO3 versions that cap support at Python 3.13. They need upstream +releases with PyO3 0.25+ (which adds 3.14 support). + +#### jiter==0.9.0 +- **Platforms**: linux-amd64, macos +- **Category**: PyO3 too old +- **Error**: pyo3 0.24.0 — `the maximum Python version is 3.13, found 3.14` +- **Note**: jiter==0.10.0 builds fine on 3.14 + +#### orjson==3.10.10 +- **Platforms**: linux-amd64, macos +- **Category**: PyO3 too old +- **Error**: pyo3 0.23.0-dev — `the maximum Python version is 3.13, found 3.14` + +#### pydantic-core==2.33.2 +- **Platforms**: linux-amd64, macos +- **Category**: PyO3 too old +- **Error**: pyo3 0.24.1 — `the maximum Python version is 3.13, found 3.14` +- **Skipped older versions**: 2.24.2, 2.23.4 + +#### sentry-streams==0.0.35 +- **Platforms**: linux-amd64, macos +- **Category**: PyO3 too old +- **Error**: pyo3 0.24.0 — `the maximum Python version is 3.13, found 3.14` +- **Skipped older versions**: 0.0.17 through 0.0.34 +- **Note**: Already had `python_versions = <3.14` from previous pass + +#### tiktoken==0.8.0 +- **Platforms**: linux-amd64, macos +- **Category**: PyO3 too old +- **Error**: pyo3 0.22.6 — `the maximum Python version is 3.13, found 3.14` + +#### vroomrs==0.1.19 +- **Platforms**: linux-amd64, macos +- **Category**: PyO3 too old +- **Error**: pyo3 0.24.1 — `the maximum Python version is 3.13, found 3.14` +- **Skipped older versions**: 0.1.2 through 0.1.18 + +#### rpds-py==0.20.0 +- **Platforms**: linux-amd64, macos +- **Category**: PyO3 too old +- **Error**: pyo3 0.22.2 — `the maximum Python version is 3.13, found 3.14` +- **Note**: Already had `python_versions = <3.14` from previous pass + +### No sdist on PyPI + +These packages only publish binary wheels (no source distribution), and no cp314 wheel exists yet. + +#### backports-zstd==1.3.0 +- **Platforms**: all +- **Category**: No sdist +- **Error**: `pip download` found no matching distribution — wheel-only package with no cp314 wheel + +#### lief==0.16.6 +- **Platforms**: linux-amd64, macos +- **Category**: No sdist +- **Error**: `pip download` found no matching distribution — no sdist for 0.16.6 + +#### sentry-forked-jsonnet==0.20.0.post4 +- **Platforms**: linux-amd64, macos +- **Category**: No sdist +- **Error**: `pip download` found no matching distribution +- **Note**: Already had `python_versions = <3.14` from previous pass + +### CPython 3.14 C API changes + +#### pyuwsgi==2.0.29 +- **Platforms**: linux-amd64, macos +- **Category**: CPython 3.14 API change +- **Error**: `c_recursion_remaining` removed from `PyThreadState` in CPython 3.14 +- **Skipped older versions**: 2.0.28.post1, 2.0.27.post1 +- **Note**: pyuwsgi==2.0.30 builds fine on 3.14 + +### Missing build dependencies + +#### xmlsec==1.3.14 +- **Platforms**: linux-amd64, macos +- **Category**: Missing build dep +- **Error**: Build dependency `lxml` has no cp314 wheel on the internal PyPI index +- **Note**: lxml==5.3.0 itself builds fine on 3.14, but xmlsec needs it at build time from the index + +### Platform-specific issues (NOT Python 3.14 incompatibilities) + +These packages were NOT marked with `python_versions = <3.14` because they can build +on Python 3.14 — they just had issues on specific platforms. + +#### grpcio==1.73.1 +- **Platforms**: linux-amd64 only (succeeded on linux-arm64 and macos) +- **Category**: Build timeout +- **Error**: Build timed out after 600 seconds on linux-amd64 (compiled successfully on macos in ~8.5 min) +- **Note**: grpcio==1.75.1 succeeds everywhere + +#### grpcio==1.67.0 +- **Platforms**: macos only (succeeded on linux-arm64) +- **Category**: C compilation error +- **Error**: Bundled zlib `fdopen` macro conflicts with macOS `_stdio.h` + +#### pillow==11.2.1 +- **Platforms**: linux-amd64 only (succeeded on macos) +- **Category**: Missing system library +- **Error**: Missing `libjpeg` headers in the Docker build container +- **Note**: pillow==11.3.0 succeeds everywhere + +#### p4python==2025.1.2767466 +- **Platforms**: macos only (succeeded on linux-amd64) +- **Category**: Missing build configuration +- **Error**: `setup.py` requires `--ssl` parameter; missing OpenSSL on macOS runner diff --git a/packages.ini b/packages.ini index 3bbbce53..ac706b94 100644 --- a/packages.ini +++ b/packages.ini @@ -11,8 +11,6 @@ python_versions = <3.12 python_versions = <3.13 [aiohttp==3.10.2] python_versions = <3.13 -[aiohttp==3.10.10] -[aiohttp==3.12.15] [aiosignal==1.2.0] [aiosignal==1.3.1] @@ -79,6 +77,7 @@ python_versions = <3.13 [babel==2.17.0] [backports-zstd==1.3.0] +python_versions = <3.14 [backrefs==5.9] @@ -142,8 +141,6 @@ validate_extras = d [brotli==1.0.9] python_versions = <3.12 -[brotli==1.1.0] -[brotli==1.2.0] [build==0.8.0] [build==0.10.0] @@ -209,12 +206,6 @@ python_versions = <3.13 apt_requires = libffi-dev brew_requires = libffi python_versions = <3.13 -[cffi==1.17.1] -apt_requires = libffi-dev -brew_requires = libffi -[cffi==2.0.0] -apt_requires = libffi-dev -brew_requires = libffi [cfgv==3.3.1] [cfgv==3.4.0] @@ -237,11 +228,6 @@ python_versions = <3.13 python_versions = <3.13 [charset-normalizer==3.3.2] python_versions = <3.13 -[charset-normalizer==3.4.0] -[charset-normalizer==3.4.1] -[charset-normalizer==3.4.2] -[charset-normalizer==3.4.3] -[charset-normalizer==3.4.4] [click==7.1.2] [click==8.0.4] @@ -266,7 +252,6 @@ python_versions = <3.13 python_versions = <3.13 [clickhouse-driver==0.2.9] python_versions = <3.13 -[clickhouse-driver==0.2.10] [colorama==0.4.5] [colorama==0.4.6] @@ -278,36 +263,6 @@ apt_requires = brew_requires = wget custom_prebuild = prebuild/librdkafka v2.1.1 python_versions = <3.13 -[confluent-kafka==2.3.0] -apt_requires = - patch - wget -brew_requires = wget -custom_prebuild = prebuild/librdkafka v2.3.0 -[confluent-kafka==2.7.0] -apt_requires = - patch - wget -brew_requires = wget -custom_prebuild = prebuild/librdkafka v2.6.1 -[confluent-kafka==2.8.0] -apt_requires = - patch - wget -brew_requires = wget -custom_prebuild = prebuild/librdkafka v2.8.0 -[confluent-kafka==2.9.0] -apt_requires = - patch - wget -brew_requires = wget -custom_prebuild = prebuild/librdkafka v2.8.0 -[confluent-kafka==2.12.2] -apt_requires = - patch - wget -brew_requires = wget -custom_prebuild = prebuild/librdkafka v2.8.0 [contextvars==2.4] @@ -332,7 +287,6 @@ python_versions = <3.13 python_versions = <3.13 [coverage==7.4.1] python_versions = <3.13 -[coverage==7.6.4] [coverage-enable-subprocess==1.0] @@ -665,8 +619,6 @@ validate_incorrect_missing_deps = psycopg2-binary [freezegun==1.5.5] [frozenlist==1.4.1] -[frozenlist==1.5.0] -[frozenlist==1.7.0] [fsspec==2025.9.0] @@ -794,19 +746,6 @@ python_versions = <3.13 [google-cloud-storage-transfer==1.17.0] -[google-crc32c==1.5.0] -apt_requires = cmake -brew_requires = cmake -custom_prebuild = prebuild/crc32c 1.1.2 -[google-crc32c==1.6.0] -apt_requires = cmake -brew_requires = cmake -custom_prebuild = prebuild/crc32c 1.1.2 -[google-crc32c==1.7.1] -apt_requires = cmake -brew_requires = cmake -custom_prebuild = prebuild/crc32c 1.1.2 - [google-genai==1.13.0] [google-resumable-media==1.3.3] @@ -825,21 +764,6 @@ custom_prebuild = prebuild/crc32c 1.1.2 [googleapis-common-protos==1.65.0] [googleapis-common-protos==1.70.0] -[granian==2.5.4] -validate_extras = pname,reload,uvloop -[granian==2.5.5] -validate_extras = pname,reload,uvloop -[granian==2.5.6] -validate_extras = pname,reload,uvloop -[granian==2.5.7] -validate_extras = pname,reload,uvloop -[granian==2.6.0] -validate_extras = pname,reload,uvloop -[granian==2.6.1] -validate_extras = pname,reload,uvloop -[granian==2.7.0] -validate_extras = pname,reload,uvloop - [greenlet==1.1.3] python_versions = <3.12 @@ -870,10 +794,6 @@ python_versions = <3.13 python_versions = <3.13 [grpcio==1.66.1] python_versions = <3.13 -[grpcio==1.67.0] -[grpcio==1.72.0rc1] -[grpcio==1.73.1] -[grpcio==1.75.1] [grpcio-status==1.47.0] [grpcio-status==1.48.1] @@ -908,9 +828,6 @@ python_versions = <3.13 python_versions = <3.12 [hiredis==2.0.0] python_versions = <3.12 -[hiredis==2.3.2] -[hiredis==2.4.0] -[hiredis==3.0.0] [honcho==1.0.0] [honcho==1.0.1] @@ -1006,7 +923,7 @@ python_versions = <3.12 [jinja2==3.1.6] [jiter==0.9.0] -[jiter==0.10.0] +python_versions = <3.14 [jmespath==0.10.0] [jmespath==1.0.1] @@ -1065,13 +982,8 @@ python_versions = <3.13 [lark-parser==0.10.1] -[lazy-object-proxy==1.7.1] -[lazy-object-proxy==1.9.0] -[lazy-object-proxy==1.10.0] - -[librt==0.7.8] - [lief==0.16.6] +python_versions = <3.14 [looseversion==1.0.2] @@ -1091,18 +1003,9 @@ brew_requires = libxml2 libxslt python_versions = <3.13 -[lxml==5.3.0] -apt_requires = - libxml2-dev - libxslt1-dev -brew_requires = - libxml2 - libxslt [lxml-stubs==0.4.0] -[lzfse==0.4.2] - [maison==1.4.0] [mako==1.1.4] @@ -1116,33 +1019,11 @@ brew_requires = [markdown-it-py==3.0.0] [markdown-it-py==4.0.0] -[markupsafe==2.0.1] -[markupsafe==2.1.1] -[markupsafe==2.1.2] -[markupsafe==2.1.3] -[markupsafe==2.1.4] -[markupsafe==2.1.5] -[markupsafe==3.0.2] -[markupsafe==3.0.3] - [maturin==0.14.15] [maturin==1.4.0] [maturin==1.5.1] [maturin==1.11.5] -[maxminddb==2.0.3] -apt_requires = libmaxminddb-dev -brew_requires = libmaxminddb -[maxminddb==2.2.0] -apt_requires = libmaxminddb-dev -brew_requires = libmaxminddb -[maxminddb==2.3.0] -apt_requires = libmaxminddb-dev -brew_requires = libmaxminddb -[maxminddb==2.5.2] -apt_requires = libmaxminddb-dev -brew_requires = libmaxminddb - [mccabe==0.6.1] [mccabe==0.7.0] @@ -1167,9 +1048,6 @@ brew_requires = libmaxminddb [mkdocs-material-extensions==1.3.1] -[mmh3==3.0.0] -[mmh3==4.0.0] - [mock==4.0.3] [more-itertools==8.13.0] @@ -1184,19 +1062,13 @@ python_versions = <3.12 python_versions = <3.13 [msgpack==1.0.8] python_versions = <3.13 -[msgpack==1.1.0] -[msgpack==1.1.1] [msgpack-types==0.2.0] -[msgspec==0.19.0] - [multidict==6.0.2] python_versions = <3.13 [multidict==6.0.4] python_versions = <3.13 -[multidict==6.1.0] -[multidict==6.6.4] [mypy==0.971] [mypy==0.981] @@ -1220,16 +1092,6 @@ python_versions = <3.13 [mypy==1.12.1] [mypy==1.13.0] [mypy==1.14.0] -[mypy==1.14.1] -[mypy==1.15.0] -[mypy==1.16.0] -[mypy==1.16.1] -[mypy==1.17.0] -[mypy==1.17.1] -[mypy==1.18.1] -[mypy==1.18.2] -[mypy==1.19.0] -[mypy==1.19.1] [mypy-extensions==0.4.3] [mypy-extensions==1.0.0] @@ -1253,8 +1115,6 @@ python_versions = <3.13 [oauthlib==3.2.1] [oauthlib==3.2.2] -[objectstore-client==0.0.1] -python_versions = >=3.13.1 [objectstore-client==0.0.4] [objectstore-client==0.0.5] [objectstore-client==0.0.6] @@ -1317,12 +1177,11 @@ python_versions = <3.13 [orjson==3.10.3] python_versions = <3.13 [orjson==3.10.10] +python_versions = <3.14 [outcome==1.2.0] [outcome==1.3.0.post0] -[p4python==2025.1.2767466] - [packaging==21.3] [packaging==22.0] [packaging==23.0] @@ -1389,12 +1248,6 @@ python_versions = <3.13 python_versions = <3.13 [pillow==10.3.0] python_versions = <3.13 -[pillow==10.4.0] -[pillow==11.0.0] -[pillow==11.2.1] -[pillow==11.3.0] - -[pillow-heif==1.1.1] [pip==22.1.2] [pip==22.2.2] @@ -1466,9 +1319,6 @@ python_versions = <3.13 [prompt-toolkit==3.0.48] [prompt-toolkit==3.0.51] -[propcache==0.2.0] -[propcache==0.3.2] - [proto-plus==1.20.4] [proto-plus==1.22.0] [proto-plus==1.22.1] @@ -1501,8 +1351,6 @@ python_versions = <3.13 [protobuf==6.31.1] [protobuf==6.32.1] -[psutil==5.8.0] -[psutil==5.9.2] [psutil==5.9.7] [psycopg2-binary==2.9.3] @@ -1523,11 +1371,6 @@ brew_requires = openssl@1.1 postgresql python_versions = <3.13 -[psycopg2-binary==2.9.10] -apt_requires = libpq-dev -brew_requires = - openssl@1.1 - postgresql [puccinialin==0.1.8] @@ -1564,7 +1407,6 @@ brew_requires = [pycparser==2.22] [pycparser==2.23] -[pycryptodomex==3.9.8] [pycryptodomex==3.19.1] [pydantic==1.10.2] @@ -1586,8 +1428,11 @@ python_versions = <3.13 [pydantic-core==2.18.4] python_versions = <3.13 [pydantic-core==2.23.4] +python_versions = <3.14 [pydantic-core==2.24.2] +python_versions = <3.14 [pydantic-core==2.33.2] +python_versions = <3.14 [pyelftools==0.28] [pyelftools==0.29] @@ -1607,10 +1452,6 @@ python_versions = <3.13 [pyjwt==2.4.0] [pyjwt==2.10.1] -[pylibmc==1.6.3] -apt_requires = libmemcached-dev -brew_requires = libmemcached - [pymdown-extensions==10.16.1] [pymemcache==4.0.0] @@ -1731,12 +1572,6 @@ python_versions = <3.13 [python-memcached==1.59] -[python-rapidjson==1.4] -[python-rapidjson==1.8] -[python-rapidjson==1.16] -[python-rapidjson==1.20] -[python-rapidjson==1.21] - [python-u2flib-server==5.0.0] [python-u2flib-server==5.0.1] @@ -1781,12 +1616,13 @@ validate_skip_imports = uwsgidecorators python_versions = <3.13 validate_skip_imports = uwsgidecorators [pyuwsgi==2.0.27.post1] +python_versions = <3.14 validate_skip_imports = uwsgidecorators [pyuwsgi==2.0.28.post1] +python_versions = <3.14 validate_skip_imports = uwsgidecorators [pyuwsgi==2.0.29] -validate_skip_imports = uwsgidecorators -[pyuwsgi==2.0.30] +python_versions = <3.14 validate_skip_imports = uwsgidecorators [pyvat==1.3.15] @@ -1808,12 +1644,6 @@ python_versions = <3.12 apt_requires = libyaml-dev brew_requires = libyaml python_versions = <3.13 -[pyyaml==6.0.2] -apt_requires = libyaml-dev -brew_requires = libyaml -[pyyaml==6.0.3] -apt_requires = libyaml-dev -brew_requires = libyaml [pyyaml-env-tag==1.1] @@ -1839,11 +1669,6 @@ python_versions = <3.12 [referencing==0.32.0] [referencing==0.35.1] -[regex==2022.7.25] -[regex==2022.8.17] -[regex==2022.9.13] -[regex==2023.12.25] - [reportlab==3.6.13] python_versions = <3.12 [reportlab==4.0.7] @@ -3044,8 +2869,6 @@ python_versions = >=3.10 [sentry-usage-accountant==0.0.10] [sentry-usage-accountant==0.0.11] -[setproctitle==1.3.7] - [setuptools==56.0.0] [setuptools==62.3.2] [setuptools==63.1.0] @@ -3075,9 +2898,6 @@ python_versions = >=3.10 [setuptools-scm==7.0.5] [setuptools-scm==8.0.4] -[simplejson==3.17.2] -[simplejson==3.17.6] - [six==1.16.0] [six==1.17.0] @@ -3278,14 +3098,12 @@ python_versions = <3.12 [tiktoken==0.6.0] python_versions = <3.13 [tiktoken==0.8.0] +python_versions = <3.14 [time-machine==2.12.0] python_versions = <3.13 [time-machine==2.13.0] python_versions = <3.13 -[time-machine==2.16.0] - -[timelib==0.3.0] [tldextract==5.1.2] @@ -3302,7 +3120,6 @@ python_versions = <3.13 [tomli==2.0.1] [tomli==2.0.2] [tomli==2.1.0] -[tomli==2.2.1] [tornado==6.4.1] @@ -3546,8 +3363,6 @@ python_versions = <3.13 [uv-build==0.9.26] [uv-build==0.9.28] -[uvloop==0.21.0] - [vine==1.3.0] [vine==5.0.0] [vine==5.1.0] @@ -3566,31 +3381,46 @@ python_versions = <3.13 [virtualenv==20.36.1] [vroomrs==0.1.2] +python_versions = <3.14 [vroomrs==0.1.3] +python_versions = <3.14 [vroomrs==0.1.4] +python_versions = <3.14 [vroomrs==0.1.5] +python_versions = <3.14 [vroomrs==0.1.6] +python_versions = <3.14 [vroomrs==0.1.7] +python_versions = <3.14 [vroomrs==0.1.8] +python_versions = <3.14 [vroomrs==0.1.9] +python_versions = <3.14 [vroomrs==0.1.10] +python_versions = <3.14 [vroomrs==0.1.11] +python_versions = <3.14 [vroomrs==0.1.12] +python_versions = <3.14 [vroomrs==0.1.13] +python_versions = <3.14 [vroomrs==0.1.14] +python_versions = <3.14 [vroomrs==0.1.15] +python_versions = <3.14 [vroomrs==0.1.16] +python_versions = <3.14 [vroomrs==0.1.17] +python_versions = <3.14 [vroomrs==0.1.18] +python_versions = <3.14 [vroomrs==0.1.19] +python_versions = <3.14 [watchdog==2.1.9] python_versions = <3.12 [watchdog==3.0.0] python_versions = <3.12 -[watchdog==6.0.0] - -[watchfiles==1.1.0] [wcwidth==0.2.5] [wcwidth==0.2.9] @@ -3606,8 +3436,6 @@ python_versions = <3.12 [websocket-client==1.6.4] [websocket-client==1.8.0] -[websockets==15.0.1] - [werkzeug==2.0.3] [werkzeug==2.1.2] [werkzeug==2.2.2] @@ -3636,7 +3464,6 @@ python_versions = <3.13 python_versions = <3.13 [wrapt==1.17.0rc1] [wrapt==1.17.0] -[wrapt==1.17.2] [wsproto==1.1.0] [wsproto==1.2.0] @@ -3657,6 +3484,7 @@ python_versions = <3.13 apt_requires = pkg-config brew_requires = pkg-config custom_prebuild = prebuild/xmlsec-1-3-14-deps +python_versions = <3.14 [yamlfix==1.3.0] @@ -3668,8 +3496,6 @@ python_versions = <3.12 python_versions = <3.12 [yarl==1.9.4] python_versions = <3.13 -[yarl==1.15.4] -[yarl==1.20.1] [zipp==3.5.0] [zipp==3.8.1] @@ -3677,5 +3503,3 @@ python_versions = <3.13 [zipp==3.18.1] [zipp==3.21.0] [zipp==3.23.0] - -[zstandard==0.18.0] From cc18f57e9c47bb4e074dcb1b4f5bd49811c87942 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 11:48:32 -0800 Subject: [PATCH 38/66] [skip ci] update skill --- .claude/skills/upgrade-python/SKILL.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.claude/skills/upgrade-python/SKILL.md b/.claude/skills/upgrade-python/SKILL.md index d4bfe098..f0655a71 100644 --- a/.claude/skills/upgrade-python/SKILL.md +++ b/.claude/skills/upgrade-python/SKILL.md @@ -101,9 +101,9 @@ A package is considered failed if it failed or was skipped on ANY platform (linu In one pass: -1. **Comment out** all packages that **succeeded on all platforms** by prepending `# ` to their section header and all their settings lines. These don't need to rebuild. +1. **Remove** all packages that **succeeded on all platforms** — delete their entire section (`[name==version]` header + all config lines). The `format-packages-ini` pre-commit hook uses `configparser` which strips `#` comments, so commenting out doesn't work. Just delete succeeded sections outright. They don't need to rebuild. -2. **Add `python_versions = Date: Tue, 24 Feb 2026 11:53:50 -0800 Subject: [PATCH 39/66] add python_versions = <3.14 for rpds-py, sentry-forked-jsonnet, sentry-streams, sentry-streams-k8s These restrictions were lost in the previous commit because the format-packages-ini hook strips # comments, which also removed the python_versions lines that followed them. Co-Authored-By: Claude Opus 4.6 --- .claude/skills/upgrade-python/SKILL.md | 2 +- packages.ini | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.claude/skills/upgrade-python/SKILL.md b/.claude/skills/upgrade-python/SKILL.md index f0655a71..4284295a 100644 --- a/.claude/skills/upgrade-python/SKILL.md +++ b/.claude/skills/upgrade-python/SKILL.md @@ -103,7 +103,7 @@ In one pass: 1. **Remove** all packages that **succeeded on all platforms** — delete their entire section (`[name==version]` header + all config lines). The `format-packages-ini` pre-commit hook uses `configparser` which strips `#` comments, so commenting out doesn't work. Just delete succeeded sections outright. They don't need to rebuild. -2. **Add `python_versions = =3.10 [sentry-streams==0.0.15] [sentry-streams==0.0.16] [sentry-streams==0.0.17] +python_versions = <3.14 [sentry-streams==0.0.18] +python_versions = <3.14 [sentry-streams==0.0.19] +python_versions = <3.14 [sentry-streams==0.0.20] +python_versions = <3.14 [sentry-streams==0.0.21] +python_versions = <3.14 [sentry-streams==0.0.22] +python_versions = <3.14 [sentry-streams==0.0.23] +python_versions = <3.14 [sentry-streams==0.0.24] +python_versions = <3.14 [sentry-streams==0.0.31] +python_versions = <3.14 [sentry-streams==0.0.34] +python_versions = <3.14 [sentry-streams==0.0.35] +python_versions = <3.14 [sentry-streams-k8s==0.0.1] +python_versions = <3.14 [sentry-streams-k8s==0.0.2] +python_versions = <3.14 [sentry-streams-k8s==0.0.3] +python_versions = <3.14 [sentry-usage-accountant==0.0.2] [sentry-usage-accountant==0.0.3] From c9f166efb5228c425cd80a7342ee23589e73a7d3 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 12:03:12 -0800 Subject: [PATCH 40/66] fix pillow, p4python, lxml builds for python 3.14 - add libjpeg-dev to Dockerfile for pillow==11.2.1 linux-amd64 build - re-add pillow==10.4.0, 11.0.0, 11.2.1, 11.3.0 to packages.ini - re-add p4python==2025.1.2767466 with brew_requires=openssl@3 for macos - re-add lxml==5.3.0 (prerequisite for xmlsec==1.3.14 cp314 build) Co-Authored-By: Claude Opus 4.6 --- PYTHON-3.14-UPGRADE.md | 3 +++ docker/Dockerfile | 1 + packages.ini | 12 ++++++++++++ 3 files changed, 16 insertions(+) diff --git a/PYTHON-3.14-UPGRADE.md b/PYTHON-3.14-UPGRADE.md index effdb020..e8de8221 100644 --- a/PYTHON-3.14-UPGRADE.md +++ b/PYTHON-3.14-UPGRADE.md @@ -102,6 +102,7 @@ These packages only publish binary wheels (no source distribution), and no cp314 - **Category**: Missing build dep - **Error**: Build dependency `lxml` has no cp314 wheel on the internal PyPI index - **Note**: lxml==5.3.0 itself builds fine on 3.14, but xmlsec needs it at build time from the index +- **Status**: Unblocked once lxml==5.3.0 cp314 wheel is deployed to internal index. After merging (which builds and deploys lxml's cp314 wheel), remove `python_versions = <3.14` from xmlsec==1.3.14 in a follow-up commit. ### Platform-specific issues (NOT Python 3.14 incompatibilities) @@ -124,8 +125,10 @@ on Python 3.14 — they just had issues on specific platforms. - **Category**: Missing system library - **Error**: Missing `libjpeg` headers in the Docker build container - **Note**: pillow==11.3.0 succeeds everywhere +- **Fix**: Added `libjpeg-dev` to Dockerfile and re-added pillow versions to packages.ini #### p4python==2025.1.2767466 - **Platforms**: macos only (succeeded on linux-amd64) - **Category**: Missing build configuration - **Error**: `setup.py` requires `--ssl` parameter; missing OpenSSL on macOS runner +- **Fix**: Re-added with `brew_requires = openssl@3` so OpenSSL is discoverable via CPPFLAGS/LDFLAGS/PKG_CONFIG_PATH diff --git a/docker/Dockerfile b/docker/Dockerfile index 18e84151..2f22fb14 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -16,6 +16,7 @@ RUN : \ libexpat1-dev \ libffi-dev \ libgdbm-dev \ + libjpeg-dev \ libltdl-dev \ liblzma-dev \ libncursesw5-dev \ diff --git a/packages.ini b/packages.ini index 05c35d23..08bb2c71 100644 --- a/packages.ini +++ b/packages.ini @@ -1003,6 +1003,11 @@ brew_requires = libxml2 libxslt python_versions = <3.13 +[lxml==5.3.0] +apt_requires = + libxml2-dev + libxslt1-dev +brew_requires = libxml2 [lxml-stubs==0.4.0] @@ -1182,6 +1187,9 @@ python_versions = <3.14 [outcome==1.2.0] [outcome==1.3.0.post0] +[p4python==2025.1.2767466] +brew_requires = openssl@3 + [packaging==21.3] [packaging==22.0] [packaging==23.0] @@ -1248,6 +1256,10 @@ python_versions = <3.13 python_versions = <3.13 [pillow==10.3.0] python_versions = <3.13 +[pillow==10.4.0] +[pillow==11.0.0] +[pillow==11.2.1] +[pillow==11.3.0] [pip==22.1.2] [pip==22.2.2] From 217a35f728786dea8983c67c4901e10399525625 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 12:04:32 -0800 Subject: [PATCH 41/66] [skip ci] update skill --- .claude/skills/upgrade-python/SKILL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.claude/skills/upgrade-python/SKILL.md b/.claude/skills/upgrade-python/SKILL.md index 4284295a..97087958 100644 --- a/.claude/skills/upgrade-python/SKILL.md +++ b/.claude/skills/upgrade-python/SKILL.md @@ -75,7 +75,7 @@ Commit all changes with a message like "build: single-version mode for Python 3. ## Step 3: Wait for CI, then download and parse logs Wait for CI to complete (it will likely fail — that's expected). -Poll it every 3 minutes so we don't get ratelimited. +Use `gh run watch` to avoid rate limits if polling. Download logs from each build job using the GitHub CLI: From d829553630e63d31c42f456f385f0cdd19582e65 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 12:14:10 -0800 Subject: [PATCH 42/66] fix p4python macos build: set ssl env var via custom_prebuild p4python's setup.py requires an `ssl` environment variable pointing to the OpenSSL prefix. brew_requires alone only sets CPPFLAGS/LDFLAGS/PKG_CONFIG_PATH. - add prebuild/p4python-ssl script that writes openssl@3 prefix to env.json - add env.json support to _prebuild() so custom scripts can set arbitrary env vars - add custom_prebuild to p4python in packages.ini Co-Authored-By: Claude Opus 4.6 --- build.py | 7 +++++++ packages.ini | 1 + prebuild/p4python-ssl | 28 ++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100755 prebuild/p4python-ssl diff --git a/build.py b/build.py index 3375546b..ad94c183 100644 --- a/build.py +++ b/build.py @@ -461,6 +461,13 @@ def _prefix_path(*parts: str) -> str: subprocess.check_call((*package.custom_prebuild, prefix)) before = {**env} + + # allow prebuild scripts to set extra env vars via env.json + env_json = os.path.join(prefix, "env.json") + if os.path.exists(env_json): + with open(env_json) as f: + env.update(json.load(f)) + env.update( PATH=_join_env( name="PATH", diff --git a/packages.ini b/packages.ini index 08bb2c71..c671311e 100644 --- a/packages.ini +++ b/packages.ini @@ -1189,6 +1189,7 @@ python_versions = <3.14 [p4python==2025.1.2767466] brew_requires = openssl@3 +custom_prebuild = prebuild/p4python-ssl [packaging==21.3] [packaging==22.0] diff --git a/prebuild/p4python-ssl b/prebuild/p4python-ssl new file mode 100755 index 00000000..bcb328f2 --- /dev/null +++ b/prebuild/p4python-ssl @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 +from __future__ import annotations + +import argparse +import json +import os +import subprocess + + +def main() -> int: + parser = argparse.ArgumentParser() + parser.add_argument("prefix") + args = parser.parse_args() + + ssl_prefix = ( + subprocess.check_output(("brew", "--prefix", "openssl@3")).decode().strip() + ) + print(f"p4python-ssl: openssl@3 prefix is {ssl_prefix}") + + os.makedirs(args.prefix, exist_ok=True) + with open(os.path.join(args.prefix, "env.json"), "w") as f: + json.dump({"ssl": ssl_prefix}, f) + + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) From 226b5526283d4f9a2af1fec69e752da9aa4cebca Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 12:24:33 -0800 Subject: [PATCH 43/66] fix p4python macos: use brew_prefix_env instead of custom_prebuild custom_prebuild interfered with p4python's P4API download because _prebuild modifies PATH/CPPFLAGS/LDFLAGS. Instead, add a new brew_prefix_env config option that sets env vars from brew prefix paths without the prefix machinery. For p4python, this sets ssl=$(brew --prefix openssl@3) which is what its setup.py checks for OpenSSL support. Co-Authored-By: Claude Opus 4.6 --- build.py | 25 ++++++++++++++++++------- packages.ini | 2 +- prebuild/p4python-ssl | 28 ---------------------------- 3 files changed, 19 insertions(+), 36 deletions(-) delete mode 100755 prebuild/p4python-ssl diff --git a/build.py b/build.py index ad94c183..25fe3c63 100644 --- a/build.py +++ b/build.py @@ -70,6 +70,7 @@ class Package(NamedTuple): version: Version apt_requires: tuple[str, ...] brew_requires: tuple[str, ...] + brew_prefix_env: tuple[tuple[str, str], ...] custom_prebuild: tuple[str, ...] likely_binary_ignore: tuple[str, ...] python_versions: SpecifierSet @@ -92,6 +93,12 @@ def make(cls, key: str, val: Mapping[str, str]) -> Package: dct = dict(val) apt_requires = tuple(dct.pop("apt_requires", "").split()) brew_requires = tuple(dct.pop("brew_requires", "").split()) + brew_prefix_env_parts = [ + pair.split("=", 1) + for pair in dct.pop("brew_prefix_env", "").split() + if pair + ] + brew_prefix_env = tuple((k, v) for k, v in brew_prefix_env_parts) custom_prebuild = tuple(dct.pop("custom_prebuild", "").split()) likely_binary_ignore = tuple(dct.pop("likely_binary_ignore", "").split()) python_versions = dct.pop("python_versions", "") @@ -110,6 +117,7 @@ def make(cls, key: str, val: Mapping[str, str]) -> Package: version=Version(version_s), apt_requires=apt_requires, brew_requires=brew_requires, + brew_prefix_env=brew_prefix_env, custom_prebuild=custom_prebuild, likely_binary_ignore=likely_binary_ignore, python_versions=SpecifierSet(python_versions), @@ -184,6 +192,16 @@ def _darwin_install(package: Package) -> Generator[None, None, None]: with contextlib.ExitStack() as ctx: if package.brew_requires: ctx.enter_context(_brew_install(package.brew_requires)) + if package.brew_prefix_env: + orig = {**os.environ} + for env_name, brew_pkg in package.brew_prefix_env: + os.environ[env_name] = _brew_paths(brew_pkg)[0] + + def _restore(orig: dict[str, str] = orig) -> None: + os.environ.clear() + os.environ.update(orig) + + ctx.callback(_restore) yield @@ -461,13 +479,6 @@ def _prefix_path(*parts: str) -> str: subprocess.check_call((*package.custom_prebuild, prefix)) before = {**env} - - # allow prebuild scripts to set extra env vars via env.json - env_json = os.path.join(prefix, "env.json") - if os.path.exists(env_json): - with open(env_json) as f: - env.update(json.load(f)) - env.update( PATH=_join_env( name="PATH", diff --git a/packages.ini b/packages.ini index c671311e..b0035306 100644 --- a/packages.ini +++ b/packages.ini @@ -1188,8 +1188,8 @@ python_versions = <3.14 [outcome==1.3.0.post0] [p4python==2025.1.2767466] +brew_prefix_env = ssl=openssl@3 brew_requires = openssl@3 -custom_prebuild = prebuild/p4python-ssl [packaging==21.3] [packaging==22.0] diff --git a/prebuild/p4python-ssl b/prebuild/p4python-ssl deleted file mode 100755 index bcb328f2..00000000 --- a/prebuild/p4python-ssl +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env python3 -from __future__ import annotations - -import argparse -import json -import os -import subprocess - - -def main() -> int: - parser = argparse.ArgumentParser() - parser.add_argument("prefix") - args = parser.parse_args() - - ssl_prefix = ( - subprocess.check_output(("brew", "--prefix", "openssl@3")).decode().strip() - ) - print(f"p4python-ssl: openssl@3 prefix is {ssl_prefix}") - - os.makedirs(args.prefix, exist_ok=True) - with open(os.path.join(args.prefix, "env.json"), "w") as f: - json.dump({"ssl": ssl_prefix}, f) - - return 0 - - -if __name__ == "__main__": - raise SystemExit(main()) From 2a0be2d13f33ed54338da06670b710f8594b2896 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 12:33:12 -0800 Subject: [PATCH 44/66] p4python: drop brew_requires, keep only brew_prefix_env brew_requires sets CPPFLAGS/LDFLAGS which interfere with p4python's P4API auto-download. openssl@3 is already installed on macOS runners, so we only need the ssl env var pointing to the brew prefix. Co-Authored-By: Claude Opus 4.6 --- packages.ini | 1 - 1 file changed, 1 deletion(-) diff --git a/packages.ini b/packages.ini index b0035306..68bb11bd 100644 --- a/packages.ini +++ b/packages.ini @@ -1189,7 +1189,6 @@ python_versions = <3.14 [p4python==2025.1.2767466] brew_prefix_env = ssl=openssl@3 -brew_requires = openssl@3 [packaging==21.3] [packaging==22.0] From c58c4ab5e9d57cc65b1905ccc8b1ef509f5e9ac3 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 12:40:07 -0800 Subject: [PATCH 45/66] revert p4python and brew_prefix_env changes p4python has too many macOS-specific build issues (SSL detection, P4API download) that interfere with each other. Removing it from packages.ini and reverting the brew_prefix_env feature from build.py. Co-Authored-By: Claude Opus 4.6 --- PYTHON-3.14-UPGRADE.md | 4 ++-- build.py | 18 ------------------ packages.ini | 3 --- 3 files changed, 2 insertions(+), 23 deletions(-) diff --git a/PYTHON-3.14-UPGRADE.md b/PYTHON-3.14-UPGRADE.md index e8de8221..9e6472e6 100644 --- a/PYTHON-3.14-UPGRADE.md +++ b/PYTHON-3.14-UPGRADE.md @@ -130,5 +130,5 @@ on Python 3.14 — they just had issues on specific platforms. #### p4python==2025.1.2767466 - **Platforms**: macos only (succeeded on linux-amd64) - **Category**: Missing build configuration -- **Error**: `setup.py` requires `--ssl` parameter; missing OpenSSL on macOS runner -- **Fix**: Re-added with `brew_requires = openssl@3` so OpenSSL is discoverable via CPPFLAGS/LDFLAGS/PKG_CONFIG_PATH +- **Error**: `setup.py` requires `--ssl` parameter and P4API on macOS; multiple env issues +- **Status**: Gave up — p4python has too many macOS-specific build issues (SSL detection, P4API download). Not re-added to packages.ini. diff --git a/build.py b/build.py index 25fe3c63..3375546b 100644 --- a/build.py +++ b/build.py @@ -70,7 +70,6 @@ class Package(NamedTuple): version: Version apt_requires: tuple[str, ...] brew_requires: tuple[str, ...] - brew_prefix_env: tuple[tuple[str, str], ...] custom_prebuild: tuple[str, ...] likely_binary_ignore: tuple[str, ...] python_versions: SpecifierSet @@ -93,12 +92,6 @@ def make(cls, key: str, val: Mapping[str, str]) -> Package: dct = dict(val) apt_requires = tuple(dct.pop("apt_requires", "").split()) brew_requires = tuple(dct.pop("brew_requires", "").split()) - brew_prefix_env_parts = [ - pair.split("=", 1) - for pair in dct.pop("brew_prefix_env", "").split() - if pair - ] - brew_prefix_env = tuple((k, v) for k, v in brew_prefix_env_parts) custom_prebuild = tuple(dct.pop("custom_prebuild", "").split()) likely_binary_ignore = tuple(dct.pop("likely_binary_ignore", "").split()) python_versions = dct.pop("python_versions", "") @@ -117,7 +110,6 @@ def make(cls, key: str, val: Mapping[str, str]) -> Package: version=Version(version_s), apt_requires=apt_requires, brew_requires=brew_requires, - brew_prefix_env=brew_prefix_env, custom_prebuild=custom_prebuild, likely_binary_ignore=likely_binary_ignore, python_versions=SpecifierSet(python_versions), @@ -192,16 +184,6 @@ def _darwin_install(package: Package) -> Generator[None, None, None]: with contextlib.ExitStack() as ctx: if package.brew_requires: ctx.enter_context(_brew_install(package.brew_requires)) - if package.brew_prefix_env: - orig = {**os.environ} - for env_name, brew_pkg in package.brew_prefix_env: - os.environ[env_name] = _brew_paths(brew_pkg)[0] - - def _restore(orig: dict[str, str] = orig) -> None: - os.environ.clear() - os.environ.update(orig) - - ctx.callback(_restore) yield diff --git a/packages.ini b/packages.ini index 68bb11bd..3760d356 100644 --- a/packages.ini +++ b/packages.ini @@ -1187,9 +1187,6 @@ python_versions = <3.14 [outcome==1.2.0] [outcome==1.3.0.post0] -[p4python==2025.1.2767466] -brew_prefix_env = ssl=openssl@3 - [packaging==21.3] [packaging==22.0] [packaging==23.0] From d359676d54681691189f2ca96a956a0945b09719 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 12:43:08 -0800 Subject: [PATCH 46/66] restore all previously-succeeded packages to packages.ini Re-adds 107 package sections that were deleted during the Python 3.14 upgrade iteration (they succeeded and didn't need rebuilding). These must remain in packages.ini so future builds include them. Only p4python==2025.1.2767466 is intentionally excluded due to unresolvable macOS build issues. Also updates the upgrade-python skill with the restore step. Co-Authored-By: Claude Opus 4.6 --- .claude/skills/upgrade-python/SKILL.md | 38 +++++ packages.ini | 193 +++++++++++++++++++++++++ 2 files changed, 231 insertions(+) diff --git a/.claude/skills/upgrade-python/SKILL.md b/.claude/skills/upgrade-python/SKILL.md index 97087958..0262c937 100644 --- a/.claude/skills/upgrade-python/SKILL.md +++ b/.claude/skills/upgrade-python/SKILL.md @@ -142,6 +142,44 @@ Commit with a message like "mark python 3.14 build failures in packages.ini" and Wait for CI again. If there are still failures, repeat steps 3-6 until CI is green. +## Step 7: Restore deleted packages and verify + +After CI is green, restore all previously-succeeded packages that were deleted in step 4. These packages don't need to rebuild (their existing wheels are fine), but they must remain in `packages.ini` so future builds include them. + +Use a script to find sections present in the pre-deletion commit but missing from the current file: + +```python +import configparser, subprocess + +old_content = subprocess.check_output(['git', 'show', ':packages.ini']).decode() +old = configparser.RawConfigParser(strict=False) +old.read_string(old_content) + +with open('packages.ini') as f: + cur = configparser.RawConfigParser(strict=False) + cur.read_string(f.read()) + +missing = set(old.sections()) - set(cur.sections()) +# Exclude any packages intentionally not restored + +# Append missing sections to packages.ini +with open('packages.ini', 'a') as f: + for section in sorted(missing): + f.write(f'\n[{section}]\n') + for k, v in old[section].items(): + v = v.strip() + if '\n' in v: + f.write(f'{k} =\n') + for part in v.split('\n'): + if part.strip(): + f.write(f' {part.strip()}\n') + else: + f.write(f'{k} = {v}\n') +``` + +Then run `python3 -m format_ini packages.ini` to sort and format. The formatter handles ordering automatically. + +Commit and push. Verify CI passes — all packages should either download pre-built wheels or build successfully. ## Important notes diff --git a/packages.ini b/packages.ini index 3760d356..df90348f 100644 --- a/packages.ini +++ b/packages.ini @@ -11,6 +11,8 @@ python_versions = <3.12 python_versions = <3.13 [aiohttp==3.10.2] python_versions = <3.13 +[aiohttp==3.10.10] +[aiohttp==3.12.15] [aiosignal==1.2.0] [aiosignal==1.3.1] @@ -141,6 +143,8 @@ validate_extras = d [brotli==1.0.9] python_versions = <3.12 +[brotli==1.1.0] +[brotli==1.2.0] [build==0.8.0] [build==0.10.0] @@ -206,6 +210,12 @@ python_versions = <3.13 apt_requires = libffi-dev brew_requires = libffi python_versions = <3.13 +[cffi==1.17.1] +apt_requires = libffi-dev +brew_requires = libffi +[cffi==2.0.0] +apt_requires = libffi-dev +brew_requires = libffi [cfgv==3.3.1] [cfgv==3.4.0] @@ -228,6 +238,11 @@ python_versions = <3.13 python_versions = <3.13 [charset-normalizer==3.3.2] python_versions = <3.13 +[charset-normalizer==3.4.0] +[charset-normalizer==3.4.1] +[charset-normalizer==3.4.2] +[charset-normalizer==3.4.3] +[charset-normalizer==3.4.4] [click==7.1.2] [click==8.0.4] @@ -252,6 +267,7 @@ python_versions = <3.13 python_versions = <3.13 [clickhouse-driver==0.2.9] python_versions = <3.13 +[clickhouse-driver==0.2.10] [colorama==0.4.5] [colorama==0.4.6] @@ -263,6 +279,36 @@ apt_requires = brew_requires = wget custom_prebuild = prebuild/librdkafka v2.1.1 python_versions = <3.13 +[confluent-kafka==2.3.0] +apt_requires = + patch + wget +brew_requires = wget +custom_prebuild = prebuild/librdkafka v2.3.0 +[confluent-kafka==2.7.0] +apt_requires = + patch + wget +brew_requires = wget +custom_prebuild = prebuild/librdkafka v2.6.1 +[confluent-kafka==2.8.0] +apt_requires = + patch + wget +brew_requires = wget +custom_prebuild = prebuild/librdkafka v2.8.0 +[confluent-kafka==2.9.0] +apt_requires = + patch + wget +brew_requires = wget +custom_prebuild = prebuild/librdkafka v2.8.0 +[confluent-kafka==2.12.2] +apt_requires = + patch + wget +brew_requires = wget +custom_prebuild = prebuild/librdkafka v2.8.0 [contextvars==2.4] @@ -287,6 +333,7 @@ python_versions = <3.13 python_versions = <3.13 [coverage==7.4.1] python_versions = <3.13 +[coverage==7.6.4] [coverage-enable-subprocess==1.0] @@ -619,6 +666,8 @@ validate_incorrect_missing_deps = psycopg2-binary [freezegun==1.5.5] [frozenlist==1.4.1] +[frozenlist==1.5.0] +[frozenlist==1.7.0] [fsspec==2025.9.0] @@ -746,6 +795,19 @@ python_versions = <3.13 [google-cloud-storage-transfer==1.17.0] +[google-crc32c==1.5.0] +apt_requires = cmake +brew_requires = cmake +custom_prebuild = prebuild/crc32c 1.1.2 +[google-crc32c==1.6.0] +apt_requires = cmake +brew_requires = cmake +custom_prebuild = prebuild/crc32c 1.1.2 +[google-crc32c==1.7.1] +apt_requires = cmake +brew_requires = cmake +custom_prebuild = prebuild/crc32c 1.1.2 + [google-genai==1.13.0] [google-resumable-media==1.3.3] @@ -764,6 +826,21 @@ python_versions = <3.13 [googleapis-common-protos==1.65.0] [googleapis-common-protos==1.70.0] +[granian==2.5.4] +validate_extras = pname,reload,uvloop +[granian==2.5.5] +validate_extras = pname,reload,uvloop +[granian==2.5.6] +validate_extras = pname,reload,uvloop +[granian==2.5.7] +validate_extras = pname,reload,uvloop +[granian==2.6.0] +validate_extras = pname,reload,uvloop +[granian==2.6.1] +validate_extras = pname,reload,uvloop +[granian==2.7.0] +validate_extras = pname,reload,uvloop + [greenlet==1.1.3] python_versions = <3.12 @@ -794,6 +871,10 @@ python_versions = <3.13 python_versions = <3.13 [grpcio==1.66.1] python_versions = <3.13 +[grpcio==1.67.0] +[grpcio==1.72.0rc1] +[grpcio==1.73.1] +[grpcio==1.75.1] [grpcio-status==1.47.0] [grpcio-status==1.48.1] @@ -828,6 +909,9 @@ python_versions = <3.13 python_versions = <3.12 [hiredis==2.0.0] python_versions = <3.12 +[hiredis==2.3.2] +[hiredis==2.4.0] +[hiredis==3.0.0] [honcho==1.0.0] [honcho==1.0.1] @@ -924,6 +1008,7 @@ python_versions = <3.12 [jiter==0.9.0] python_versions = <3.14 +[jiter==0.10.0] [jmespath==0.10.0] [jmespath==1.0.1] @@ -982,6 +1067,12 @@ python_versions = <3.13 [lark-parser==0.10.1] +[lazy-object-proxy==1.7.1] +[lazy-object-proxy==1.9.0] +[lazy-object-proxy==1.10.0] + +[librt==0.7.8] + [lief==0.16.6] python_versions = <3.14 @@ -1011,6 +1102,8 @@ brew_requires = libxml2 [lxml-stubs==0.4.0] +[lzfse==0.4.2] + [maison==1.4.0] [mako==1.1.4] @@ -1024,11 +1117,33 @@ brew_requires = libxml2 [markdown-it-py==3.0.0] [markdown-it-py==4.0.0] +[markupsafe==2.0.1] +[markupsafe==2.1.1] +[markupsafe==2.1.2] +[markupsafe==2.1.3] +[markupsafe==2.1.4] +[markupsafe==2.1.5] +[markupsafe==3.0.2] +[markupsafe==3.0.3] + [maturin==0.14.15] [maturin==1.4.0] [maturin==1.5.1] [maturin==1.11.5] +[maxminddb==2.0.3] +apt_requires = libmaxminddb-dev +brew_requires = libmaxminddb +[maxminddb==2.2.0] +apt_requires = libmaxminddb-dev +brew_requires = libmaxminddb +[maxminddb==2.3.0] +apt_requires = libmaxminddb-dev +brew_requires = libmaxminddb +[maxminddb==2.5.2] +apt_requires = libmaxminddb-dev +brew_requires = libmaxminddb + [mccabe==0.6.1] [mccabe==0.7.0] @@ -1053,6 +1168,9 @@ brew_requires = libxml2 [mkdocs-material-extensions==1.3.1] +[mmh3==3.0.0] +[mmh3==4.0.0] + [mock==4.0.3] [more-itertools==8.13.0] @@ -1067,13 +1185,19 @@ python_versions = <3.12 python_versions = <3.13 [msgpack==1.0.8] python_versions = <3.13 +[msgpack==1.1.0] +[msgpack==1.1.1] [msgpack-types==0.2.0] +[msgspec==0.19.0] + [multidict==6.0.2] python_versions = <3.13 [multidict==6.0.4] python_versions = <3.13 +[multidict==6.1.0] +[multidict==6.6.4] [mypy==0.971] [mypy==0.981] @@ -1097,6 +1221,16 @@ python_versions = <3.13 [mypy==1.12.1] [mypy==1.13.0] [mypy==1.14.0] +[mypy==1.14.1] +[mypy==1.15.0] +[mypy==1.16.0] +[mypy==1.16.1] +[mypy==1.17.0] +[mypy==1.17.1] +[mypy==1.18.1] +[mypy==1.18.2] +[mypy==1.19.0] +[mypy==1.19.1] [mypy-extensions==0.4.3] [mypy-extensions==1.0.0] @@ -1120,6 +1254,8 @@ python_versions = <3.13 [oauthlib==3.2.1] [oauthlib==3.2.2] +[objectstore-client==0.0.1] +python_versions = >=3.13.1 [objectstore-client==0.0.4] [objectstore-client==0.0.5] [objectstore-client==0.0.6] @@ -1258,6 +1394,8 @@ python_versions = <3.13 [pillow==11.2.1] [pillow==11.3.0] +[pillow-heif==1.1.1] + [pip==22.1.2] [pip==22.2.2] [pip==23.0.1] @@ -1328,6 +1466,9 @@ python_versions = <3.13 [prompt-toolkit==3.0.48] [prompt-toolkit==3.0.51] +[propcache==0.2.0] +[propcache==0.3.2] + [proto-plus==1.20.4] [proto-plus==1.22.0] [proto-plus==1.22.1] @@ -1360,6 +1501,8 @@ python_versions = <3.13 [protobuf==6.31.1] [protobuf==6.32.1] +[psutil==5.8.0] +[psutil==5.9.2] [psutil==5.9.7] [psycopg2-binary==2.9.3] @@ -1380,6 +1523,11 @@ brew_requires = openssl@1.1 postgresql python_versions = <3.13 +[psycopg2-binary==2.9.10] +apt_requires = libpq-dev +brew_requires = + openssl@1.1 + postgresql [puccinialin==0.1.8] @@ -1416,6 +1564,7 @@ python_versions = <3.13 [pycparser==2.22] [pycparser==2.23] +[pycryptodomex==3.9.8] [pycryptodomex==3.19.1] [pydantic==1.10.2] @@ -1461,6 +1610,10 @@ python_versions = <3.14 [pyjwt==2.4.0] [pyjwt==2.10.1] +[pylibmc==1.6.3] +apt_requires = libmemcached-dev +brew_requires = libmemcached + [pymdown-extensions==10.16.1] [pymemcache==4.0.0] @@ -1581,6 +1734,12 @@ python_versions = <3.13 [python-memcached==1.59] +[python-rapidjson==1.4] +[python-rapidjson==1.8] +[python-rapidjson==1.16] +[python-rapidjson==1.20] +[python-rapidjson==1.21] + [python-u2flib-server==5.0.0] [python-u2flib-server==5.0.1] @@ -1633,6 +1792,8 @@ validate_skip_imports = uwsgidecorators [pyuwsgi==2.0.29] python_versions = <3.14 validate_skip_imports = uwsgidecorators +[pyuwsgi==2.0.30] +validate_skip_imports = uwsgidecorators [pyvat==1.3.15] [pyvat==1.3.16] @@ -1653,6 +1814,12 @@ python_versions = <3.12 apt_requires = libyaml-dev brew_requires = libyaml python_versions = <3.13 +[pyyaml==6.0.2] +apt_requires = libyaml-dev +brew_requires = libyaml +[pyyaml==6.0.3] +apt_requires = libyaml-dev +brew_requires = libyaml [pyyaml-env-tag==1.1] @@ -1678,6 +1845,11 @@ python_versions = <3.12 [referencing==0.32.0] [referencing==0.35.1] +[regex==2022.7.25] +[regex==2022.8.17] +[regex==2022.9.13] +[regex==2023.12.25] + [reportlab==3.6.13] python_versions = <3.12 [reportlab==4.0.7] @@ -2894,6 +3066,8 @@ python_versions = <3.14 [sentry-usage-accountant==0.0.10] [sentry-usage-accountant==0.0.11] +[setproctitle==1.3.7] + [setuptools==56.0.0] [setuptools==62.3.2] [setuptools==63.1.0] @@ -2923,6 +3097,9 @@ python_versions = <3.14 [setuptools-scm==7.0.5] [setuptools-scm==8.0.4] +[simplejson==3.17.2] +[simplejson==3.17.6] + [six==1.16.0] [six==1.17.0] @@ -3129,6 +3306,9 @@ python_versions = <3.14 python_versions = <3.13 [time-machine==2.13.0] python_versions = <3.13 +[time-machine==2.16.0] + +[timelib==0.3.0] [tldextract==5.1.2] @@ -3145,6 +3325,7 @@ python_versions = <3.13 [tomli==2.0.1] [tomli==2.0.2] [tomli==2.1.0] +[tomli==2.2.1] [tornado==6.4.1] @@ -3388,6 +3569,8 @@ python_versions = <3.13 [uv-build==0.9.26] [uv-build==0.9.28] +[uvloop==0.21.0] + [vine==1.3.0] [vine==5.0.0] [vine==5.1.0] @@ -3446,6 +3629,9 @@ python_versions = <3.14 python_versions = <3.12 [watchdog==3.0.0] python_versions = <3.12 +[watchdog==6.0.0] + +[watchfiles==1.1.0] [wcwidth==0.2.5] [wcwidth==0.2.9] @@ -3461,6 +3647,8 @@ python_versions = <3.12 [websocket-client==1.6.4] [websocket-client==1.8.0] +[websockets==15.0.1] + [werkzeug==2.0.3] [werkzeug==2.1.2] [werkzeug==2.2.2] @@ -3489,6 +3677,7 @@ python_versions = <3.13 python_versions = <3.13 [wrapt==1.17.0rc1] [wrapt==1.17.0] +[wrapt==1.17.2] [wsproto==1.1.0] [wsproto==1.2.0] @@ -3521,6 +3710,8 @@ python_versions = <3.12 python_versions = <3.12 [yarl==1.9.4] python_versions = <3.13 +[yarl==1.15.4] +[yarl==1.20.1] [zipp==3.5.0] [zipp==3.8.1] @@ -3528,3 +3719,5 @@ python_versions = <3.13 [zipp==3.18.1] [zipp==3.21.0] [zipp==3.23.0] + +[zstandard==0.18.0] From 943f1f780d1607bf49d47b9140373ae73a248986 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 12:45:52 -0800 Subject: [PATCH 47/66] restore p4python==2025.1.2767466 with python_versions = <3.14 Co-Authored-By: Claude Opus 4.6 --- packages.ini | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages.ini b/packages.ini index df90348f..f9709b93 100644 --- a/packages.ini +++ b/packages.ini @@ -1323,6 +1323,9 @@ python_versions = <3.14 [outcome==1.2.0] [outcome==1.3.0.post0] +[p4python==2025.1.2767466] +python_versions = <3.14 + [packaging==21.3] [packaging==22.0] [packaging==23.0] From cc27495eec95f985fcb9d3e3c34a166c829bc6fb Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 13:55:55 -0800 Subject: [PATCH 48/66] stop building grpcio and confluent-kafka on 3.14 --- packages.ini | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages.ini b/packages.ini index f9709b93..c7bcd145 100644 --- a/packages.ini +++ b/packages.ini @@ -280,24 +280,28 @@ brew_requires = wget custom_prebuild = prebuild/librdkafka v2.1.1 python_versions = <3.13 [confluent-kafka==2.3.0] +python_versions = <3.14 apt_requires = patch wget brew_requires = wget custom_prebuild = prebuild/librdkafka v2.3.0 [confluent-kafka==2.7.0] +python_versions = <3.14 apt_requires = patch wget brew_requires = wget custom_prebuild = prebuild/librdkafka v2.6.1 [confluent-kafka==2.8.0] +python_versions = <3.14 apt_requires = patch wget brew_requires = wget custom_prebuild = prebuild/librdkafka v2.8.0 [confluent-kafka==2.9.0] +python_versions = <3.14 apt_requires = patch wget @@ -872,9 +876,13 @@ python_versions = <3.13 [grpcio==1.66.1] python_versions = <3.13 [grpcio==1.67.0] +python_versions = <3.14 [grpcio==1.72.0rc1] +python_versions = <3.14 [grpcio==1.73.1] +python_versions = <3.14 [grpcio==1.75.1] +python_versions = <3.14 [grpcio-status==1.47.0] [grpcio-status==1.48.1] @@ -887,9 +895,13 @@ python_versions = <3.13 [grpcio-status==1.62.2] [grpcio-status==1.66.1] [grpcio-status==1.67.0] +python_versions = <3.14 [grpcio-status==1.72.0rc1] +python_versions = <3.14 [grpcio-status==1.73.1] +python_versions = <3.14 [grpcio-status==1.75.1] +python_versions = <3.14 [h11==0.9.0] [h11==0.12.0] From 7ad2236edd9273e3cf269b87946b0ebf58364148 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 14:35:49 -0800 Subject: [PATCH 49/66] add python_versions = <3.14 for uvloop, make validate.py continue on failure uvloop==0.21.0 fails on 3.14: BaseDefaultEventLoopPolicy was removed from asyncio.events in CPython 3.14. validate.py now collects all failures and reports them at the end instead of exiting on the first error, matching build.py's behavior. Co-Authored-By: Claude Opus 4.6 --- packages.ini | 9 +++++---- validate.py | 23 +++++++++++++++++------ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/packages.ini b/packages.ini index c7bcd145..843e5096 100644 --- a/packages.ini +++ b/packages.ini @@ -280,33 +280,33 @@ brew_requires = wget custom_prebuild = prebuild/librdkafka v2.1.1 python_versions = <3.13 [confluent-kafka==2.3.0] -python_versions = <3.14 apt_requires = patch wget brew_requires = wget custom_prebuild = prebuild/librdkafka v2.3.0 -[confluent-kafka==2.7.0] python_versions = <3.14 +[confluent-kafka==2.7.0] apt_requires = patch wget brew_requires = wget custom_prebuild = prebuild/librdkafka v2.6.1 -[confluent-kafka==2.8.0] python_versions = <3.14 +[confluent-kafka==2.8.0] apt_requires = patch wget brew_requires = wget custom_prebuild = prebuild/librdkafka v2.8.0 -[confluent-kafka==2.9.0] python_versions = <3.14 +[confluent-kafka==2.9.0] apt_requires = patch wget brew_requires = wget custom_prebuild = prebuild/librdkafka v2.8.0 +python_versions = <3.14 [confluent-kafka==2.12.2] apt_requires = patch @@ -3585,6 +3585,7 @@ python_versions = <3.13 [uv-build==0.9.28] [uvloop==0.21.0] +python_versions = <3.14 [vine==1.3.0] [vine==5.0.0] diff --git a/validate.py b/validate.py index 171c5fdc..85a0023c 100644 --- a/validate.py +++ b/validate.py @@ -160,16 +160,27 @@ def main() -> int: pkg, _, version_s = k.partition("==") packages[(pkg, Version(version_s))] = Info.from_dct(cfg[k]) + failed = [] for filename in sorted(os.listdir(args.dist)): name, version, _, wheel_tags = parse_wheel_filename(filename) info = packages[(name, version)] for python in _pythons_to_check(wheel_tags): - _validate( - python=python, - filename=os.path.join(args.dist, filename), - info=info, - index_url=args.index_url, - ) + try: + _validate( + python=python, + filename=os.path.join(args.dist, filename), + info=info, + index_url=args.index_url, + ) + except subprocess.CalledProcessError: + failed.append(f"{name}=={version} ({python})") + print(f"!!! FAILED validation: {name}=={version} ({python})") + + if failed: + print(f"\nFAILED VALIDATIONS ({len(failed)}):") + for f in failed: + print(f" - {f}") + return 1 return 0 From 631ea7d7eb8c05d34792f8fe647c527328fc91e4 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 14:43:30 -0800 Subject: [PATCH 50/66] document uvloop validation failure and update p4python status Co-Authored-By: Claude Opus 4.6 --- PYTHON-3.14-UPGRADE.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/PYTHON-3.14-UPGRADE.md b/PYTHON-3.14-UPGRADE.md index 9e6472e6..5b1eddcd 100644 --- a/PYTHON-3.14-UPGRADE.md +++ b/PYTHON-3.14-UPGRADE.md @@ -14,6 +14,7 @@ CI run: https://github.com/getsentry/pypi/actions/runs/22364364543 | Missing build dependency | 1 | xmlsec | | Build timeout | 1 | grpcio (1.73.1 on linux-amd64 only) | | Platform-specific issues | 3 | grpcio (1.67.0 macos), pillow (linux-amd64), p4python (macos) | +| Validation failure (import) | 1 | uvloop | Note: The last two categories (timeout + platform-specific) are NOT Python 3.14 incompatibilities. These packages built successfully on at least one platform and were commented out (not restricted). @@ -131,4 +132,14 @@ on Python 3.14 — they just had issues on specific platforms. - **Platforms**: macos only (succeeded on linux-amd64) - **Category**: Missing build configuration - **Error**: `setup.py` requires `--ssl` parameter and P4API on macOS; multiple env issues -- **Status**: Gave up — p4python has too many macOS-specific build issues (SSL detection, P4API download). Not re-added to packages.ini. +- **Status**: Marked `python_versions = <3.14` — too many macOS-specific build issues (SSL detection, P4API download) to fix in this pass + +### Validation failures + +These packages built successfully but failed during import validation on Python 3.14. + +#### uvloop==0.21.0 +- **Platforms**: all +- **Category**: CPython 3.14 API removal +- **Error**: `ImportError: cannot import name 'BaseDefaultEventLoopPolicy' from 'asyncio.events'` +- **Note**: `asyncio.events.BaseDefaultEventLoopPolicy` was removed in CPython 3.14 From 79fa8a4168da010a3abb7bca6ab1553cf608ae9e Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 15:33:46 -0800 Subject: [PATCH 51/66] [skip ci] granian fails validation bc no uvloop --- PYTHON-3.14-UPGRADE.md | 3 +++ packages.ini | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/PYTHON-3.14-UPGRADE.md b/PYTHON-3.14-UPGRADE.md index 5b1eddcd..17e08320 100644 --- a/PYTHON-3.14-UPGRADE.md +++ b/PYTHON-3.14-UPGRADE.md @@ -143,3 +143,6 @@ These packages built successfully but failed during import validation on Python - **Category**: CPython 3.14 API removal - **Error**: `ImportError: cannot import name 'BaseDefaultEventLoopPolicy' from 'asyncio.events'` - **Note**: `asyncio.events.BaseDefaultEventLoopPolicy` was removed in CPython 3.14 + +This needs to be figured out for granian to pass validation as well. + diff --git a/packages.ini b/packages.ini index 843e5096..5b7cfa62 100644 --- a/packages.ini +++ b/packages.ini @@ -832,18 +832,25 @@ custom_prebuild = prebuild/crc32c 1.1.2 [granian==2.5.4] validate_extras = pname,reload,uvloop +python_versions = <3.14 [granian==2.5.5] validate_extras = pname,reload,uvloop +python_versions = <3.14 [granian==2.5.6] validate_extras = pname,reload,uvloop +python_versions = <3.14 [granian==2.5.7] validate_extras = pname,reload,uvloop +python_versions = <3.14 [granian==2.6.0] validate_extras = pname,reload,uvloop +python_versions = <3.14 [granian==2.6.1] validate_extras = pname,reload,uvloop +python_versions = <3.14 [granian==2.7.0] validate_extras = pname,reload,uvloop +python_versions = <3.14 [greenlet==1.1.3] python_versions = <3.12 From 16ae03dbf7c2768ecdd58c25b98954df8e03c7f6 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 15:33:54 -0800 Subject: [PATCH 52/66] revert single-version mode, build all python versions Restores PYTHONS/VERSIONS to include 3.11, 3.12, 3.13, 3.14 and removes --upgrade-python from CI. All single-version mode changes from the upgrade iteration are now reverted. Co-Authored-By: Claude Opus 4.6 --- .claude/skills/upgrade-python/SKILL.md | 14 ++++++++++++++ .github/workflows/build.yml | 7 +++++-- build.py | 2 +- docker/Dockerfile | 2 +- docker/install-pythons | 2 +- validate.py | 2 +- 6 files changed, 23 insertions(+), 6 deletions(-) diff --git a/.claude/skills/upgrade-python/SKILL.md b/.claude/skills/upgrade-python/SKILL.md index 0262c937..05b92901 100644 --- a/.claude/skills/upgrade-python/SKILL.md +++ b/.claude/skills/upgrade-python/SKILL.md @@ -181,6 +181,20 @@ Then run `python3 -m format_ini packages.ini` to sort and format. The formatter Commit and push. Verify CI passes — all packages should either download pre-built wheels or build successfully. +## Step 8: Revert single-version mode + +After all packages are restored and CI passes, revert the single-version mode changes from step 1 to build all Python versions again: + +1. **`build.py`**: Change `PYTHONS` back to all versions (e.g., `((3, 11), (3, 12), (3, 13), (3, 14))`) +2. **`validate.py`**: Same change to `PYTHONS` +3. **`docker/install-pythons`**: Change `VERSIONS` back to all versions (e.g., `("3.11.14", "3.12.12", "3.13.12", "3.14.3")`) +4. **`docker/Dockerfile`**: Restore all cpython paths in `PATH` env var +5. **`.github/workflows/build.yml`**: + - Remove `--upgrade-python` flag from both linux and macos build commands + - Restore all cpython PATH entries in the macos job + +Commit with a message like "revert single-version mode, build all python versions" and push. Verify CI passes with all Python versions building. + ## Important notes - The `--upgrade-python` flag in `build.py` enables continue-on-failure mode with a 10-minute timeout per package. Without it, builds fail on first error (normal behavior). diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0f67b06d..a4e0bd2b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -42,7 +42,7 @@ jobs: container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.sha }} steps: - uses: actions/checkout@v3 - - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io --upgrade-python + - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io - run: python3 -um validate --index-url https://pypi.devinfra.sentry.io/simple - uses: actions/upload-artifact@v4 with: @@ -58,10 +58,13 @@ jobs: - run: pip install --break-system-packages uv - run: python3 -u docker/install-pythons --dest pythons - run: | + echo "$PWD/pythons/cp311-cp311/bin" >> "$GITHUB_PATH" + echo "$PWD/pythons/cp312-cp312/bin" >> "$GITHUB_PATH" + echo "$PWD/pythons/cp313-cp313/bin" >> "$GITHUB_PATH" echo "$PWD/pythons/cp314-cp314/bin" >> "$GITHUB_PATH" echo "$PWD/venv/bin" >> "$GITHUB_PATH" - run: python3 -um venv venv && pip install -r docker/requirements.txt - - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io --upgrade-python + - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io - run: python3 -um validate --index-url https://pypi.devinfra.sentry.io/simple - uses: actions/upload-artifact@v4 with: diff --git a/build.py b/build.py index 3375546b..737e4c9f 100644 --- a/build.py +++ b/build.py @@ -32,7 +32,7 @@ from packaging.utils import parse_wheel_filename from packaging.version import Version -PYTHONS = ((3, 14),) # temporarily building only new version +PYTHONS = ((3, 11), (3, 12), (3, 13), (3, 14)) BINARY_EXTS = frozenset( (".c", ".cc", ".cpp", ".cxx", ".pxd", ".pxi", ".pyx", ".go", ".rs") diff --git a/docker/Dockerfile b/docker/Dockerfile index 2f22fb14..8c320d9e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -37,7 +37,7 @@ RUN : \ ENV \ BUILD_IN_CONTAINER=1 \ - PATH=/venv/bin:/opt/python/cp314-cp314/bin:$PATH \ + PATH=/venv/bin:/opt/python/cp311-cp311/bin:/opt/python/cp312-cp312/bin:/opt/python/cp313-cp313/bin:/opt/python/cp314-cp314/bin:$PATH \ PIP_DISABLE_PIP_VERSION_CHECK=1 \ PIP_NO_CACHE_DIR=1 \ PIP_NO_WARN_ABOUT_ROOT_USER=0 diff --git a/docker/install-pythons b/docker/install-pythons index 7951d0d1..ed745b25 100755 --- a/docker/install-pythons +++ b/docker/install-pythons @@ -6,7 +6,7 @@ import glob import os import subprocess -VERSIONS = ("3.14.3",) # temporarily building only new version +VERSIONS = ("3.11.14", "3.12.12", "3.13.12", "3.14.3") def main() -> int: diff --git a/validate.py b/validate.py index 85a0023c..ebd5497b 100644 --- a/validate.py +++ b/validate.py @@ -16,7 +16,7 @@ from packaging.utils import parse_wheel_filename from packaging.version import Version -PYTHONS = ((3, 14),) # temporarily building only new version +PYTHONS = ((3, 11), (3, 12), (3, 13), (3, 14)) DIST_INFO_RE = re.compile(r"^[^/]+.dist-info/[^/]+$") From 6d9a444e233b7bbd51a273a5841fa2ac85d08f0c Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 15:38:37 -0800 Subject: [PATCH 53/66] build: add apt-get --fix-missing and gate macos on image job The Docker image build failed with a transient apt-get network error (connection reset). Adding --fix-missing makes apt-get retry failed downloads. Also add needs: [image] to the macos job so no build jobs proceed if the image build fails. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/build.yml | 1 + docker/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a4e0bd2b..9878c87a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -49,6 +49,7 @@ jobs: name: dist-linux-${{ matrix.arch }} path: dist/* macos: + needs: [image] strategy: matrix: runs-on: [macos-15] diff --git a/docker/Dockerfile b/docker/Dockerfile index 8c320d9e..5339eaa3 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -3,7 +3,7 @@ FROM python:3.11.4-slim-bullseye RUN : \ && apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install \ - -y --no-install-recommends \ + -y --no-install-recommends --fix-missing \ automake \ ca-certificates \ curl \ From f7473240c5ff76ee632f38d75bcc6cad474e54f3 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Tue, 24 Feb 2026 15:59:38 -0800 Subject: [PATCH 54/66] validate: respect python_versions from packages.ini objectstore-client==0.0.1 has python_versions = >=3.13.1 but validate.py was trying to validate it on python3.11 and python3.12, causing pip install to fail. Now validate.py reads the python_versions specifier and skips Python versions that don't match. Co-Authored-By: Claude Opus 4.6 --- validate.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/validate.py b/validate.py index ebd5497b..c1a72f33 100644 --- a/validate.py +++ b/validate.py @@ -12,6 +12,7 @@ from typing import NamedTuple import packaging.tags +from packaging.specifiers import SpecifierSet from packaging.tags import Tag from packaging.utils import parse_wheel_filename from packaging.version import Version @@ -21,6 +22,7 @@ class Info(NamedTuple): + python_versions: SpecifierSet validate_extras: str | None validate_incorrect_missing_deps: tuple[str, ...] validate_skip_imports: tuple[str, ...] @@ -28,6 +30,7 @@ class Info(NamedTuple): @classmethod def from_dct(cls, dct: Mapping[str, str]) -> Info: return cls( + python_versions=SpecifierSet(dct.get("python_versions", "")), validate_extras=dct.get("validate_extras") or None, validate_incorrect_missing_deps=tuple( dct.get("validate_incorrect_missing_deps", "").split() @@ -165,6 +168,10 @@ def main() -> int: name, version, _, wheel_tags = parse_wheel_filename(filename) info = packages[(name, version)] for python in _pythons_to_check(wheel_tags): + # e.g. "python3.11" -> "3.11" + py_version = python[len("python") :] + if py_version not in info.python_versions: + continue try: _validate( python=python, From 68287f00302bee9446f18c9f0e93d4be52ee9de1 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Wed, 25 Feb 2026 09:25:38 -0800 Subject: [PATCH 55/66] fix pc and tests --- PYTHON-3.14-UPGRADE.md | 1 - packages.ini | 14 +++++++------- tests/validate_test.py | 3 +++ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/PYTHON-3.14-UPGRADE.md b/PYTHON-3.14-UPGRADE.md index 17e08320..1e786a8b 100644 --- a/PYTHON-3.14-UPGRADE.md +++ b/PYTHON-3.14-UPGRADE.md @@ -145,4 +145,3 @@ These packages built successfully but failed during import validation on Python - **Note**: `asyncio.events.BaseDefaultEventLoopPolicy` was removed in CPython 3.14 This needs to be figured out for granian to pass validation as well. - diff --git a/packages.ini b/packages.ini index 5b7cfa62..3b7d8ff9 100644 --- a/packages.ini +++ b/packages.ini @@ -831,26 +831,26 @@ custom_prebuild = prebuild/crc32c 1.1.2 [googleapis-common-protos==1.70.0] [granian==2.5.4] -validate_extras = pname,reload,uvloop python_versions = <3.14 -[granian==2.5.5] validate_extras = pname,reload,uvloop +[granian==2.5.5] python_versions = <3.14 -[granian==2.5.6] validate_extras = pname,reload,uvloop +[granian==2.5.6] python_versions = <3.14 -[granian==2.5.7] validate_extras = pname,reload,uvloop +[granian==2.5.7] python_versions = <3.14 -[granian==2.6.0] validate_extras = pname,reload,uvloop +[granian==2.6.0] python_versions = <3.14 -[granian==2.6.1] validate_extras = pname,reload,uvloop +[granian==2.6.1] python_versions = <3.14 -[granian==2.7.0] validate_extras = pname,reload,uvloop +[granian==2.7.0] python_versions = <3.14 +validate_extras = pname,reload,uvloop [greenlet==1.1.3] python_versions = <3.12 diff --git a/tests/validate_test.py b/tests/validate_test.py index e7f486b6..116196cc 100644 --- a/tests/validate_test.py +++ b/tests/validate_test.py @@ -3,6 +3,7 @@ import zipfile import pytest +from packaging.specifiers import SpecifierSet from packaging.tags import parse_tag import validate @@ -11,6 +12,7 @@ def test_info_nothing_supplied(): info = validate.Info.from_dct({}) expected = validate.Info( + python_versions=SpecifierSet(), validate_extras=None, validate_incorrect_missing_deps=(), validate_skip_imports=(), @@ -27,6 +29,7 @@ def test_info_all_supplied(): } ) expected = validate.Info( + python_versions=SpecifierSet(), validate_extras="d", validate_incorrect_missing_deps=("six",), validate_skip_imports=("uwsgidecorators",), From 17c9ccac6ed234880236ea59ab64e9436135ba58 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Wed, 25 Feb 2026 09:33:14 -0800 Subject: [PATCH 56/66] adjustments --- docker/Dockerfile | 4 ++-- packages.ini | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 5339eaa3..b851e5d9 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -2,8 +2,8 @@ FROM python:3.11.4-slim-bullseye RUN : \ && apt-get update \ - && DEBIAN_FRONTEND=noninteractive apt-get install \ - -y --no-install-recommends --fix-missing \ + && DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 install \ + -y --no-install-recommends \ automake \ ca-certificates \ curl \ diff --git a/packages.ini b/packages.ini index 3b7d8ff9..9294e5e0 100644 --- a/packages.ini +++ b/packages.ini @@ -1117,7 +1117,9 @@ python_versions = <3.13 apt_requires = libxml2-dev libxslt1-dev -brew_requires = libxml2 +brew_requires = + libxml2 + libxslt [lxml-stubs==0.4.0] From 71743b61fe714691425c310014948a5d37a37474 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Wed, 25 Feb 2026 12:00:00 -0800 Subject: [PATCH 57/66] build: remove temporary image job from CI workflow Move the image-building job into the upgrade-python skill as a temporary step only needed during Python upgrades. The production workflow now uses pre-built :latest images directly. Co-Authored-By: Claude Opus 4.6 --- .claude/skills/upgrade-python/SKILL.md | 45 ++++++++++++++++++++++---- .github/workflows/build.yml | 25 +------------- 2 files changed, 40 insertions(+), 30 deletions(-) diff --git a/.claude/skills/upgrade-python/SKILL.md b/.claude/skills/upgrade-python/SKILL.md index 05b92901..39fef1d2 100644 --- a/.claude/skills/upgrade-python/SKILL.md +++ b/.claude/skills/upgrade-python/SKILL.md @@ -51,19 +51,49 @@ VERSIONS = ("3.14.3",) # temporarily building only new version ### `.github/workflows/build.yml` -**Lines 60-63** — keep only the new cpython PATH entry: +The production workflow uses pre-built `:latest` images. During a Python upgrade, the Dockerfile has changes that aren't in the production image yet, so you must temporarily add an `image` job that builds and pushes the modified image, and wire the `linux` job to use it. + +**Add a temporary `image` job** before the `linux` job: ```yaml + image: + strategy: + matrix: + include: + - {arch: amd64, os: ubuntu-latest} + - {arch: arm64, os: ubuntu-24.04-arm} + runs-on: ${{ matrix.os }} + permissions: + packages: write + steps: + - uses: actions/checkout@v3 + - run: docker login --username '${{ github.actor }}' --password-stdin ghcr.io <<< '${{ secrets.GITHUB_TOKEN }}' - run: | - echo "$PWD/pythons/cp314-cp314/bin" >> "$GITHUB_PATH" - echo "$PWD/venv/bin" >> "$GITHUB_PATH" + docker buildx build \ + --cache-from ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:latest \ + --cache-to type=inline \ + --platform linux/${{ matrix.arch }} \ + --tag ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.sha }} \ + ${{ github.ref == 'refs/heads/main' && format('--tag ghcr.io/getsentry/pypi-manylinux-{0}-ci:latest', matrix.arch) || '' }} \ + --push \ + docker ``` -**Line 44** — add `--upgrade-python` flag to linux build command: +**Modify the `linux` job** to depend on `image` and use the SHA-tagged image: ```yaml - - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io --upgrade-python + linux: + needs: [image] + ... + container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.sha }} +``` + +**macOS PATH entries** — keep only the new cpython PATH entry: +```yaml + - run: | + echo "$PWD/pythons/cp314-cp314/bin" >> "$GITHUB_PATH" + echo "$PWD/venv/bin" >> "$GITHUB_PATH" ``` -**Line 66** — add `--upgrade-python` flag to macos build command: +**Add `--upgrade-python` flag** to both linux and macos build commands: ```yaml - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io --upgrade-python ``` @@ -190,6 +220,9 @@ After all packages are restored and CI passes, revert the single-version mode ch 3. **`docker/install-pythons`**: Change `VERSIONS` back to all versions (e.g., `("3.11.14", "3.12.12", "3.13.12", "3.14.3")`) 4. **`docker/Dockerfile`**: Restore all cpython paths in `PATH` env var 5. **`.github/workflows/build.yml`**: + - Remove the temporary `image` job entirely + - Remove `needs: [image]` from the `linux` job + - Change the `linux` container back to `:latest` tag (from `:${{ github.sha }}`) - Remove `--upgrade-python` flag from both linux and macos build commands - Restore all cpython PATH entries in the macos job diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9878c87a..5edb08f7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,29 +9,7 @@ concurrency: group: ${{ github.event_name == 'push' && github.workflow || github.sha }}${{ github.workflow }} jobs: - image: - strategy: - matrix: - include: - - {arch: amd64, os: ubuntu-latest} - - {arch: arm64, os: ubuntu-24.04-arm} - runs-on: ${{ matrix.os }} - permissions: - packages: write - steps: - - uses: actions/checkout@v3 - - run: docker login --username '${{ github.actor }}' --password-stdin ghcr.io <<< '${{ secrets.GITHUB_TOKEN }}' - - run: | - docker buildx build \ - --cache-from ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:latest \ - --cache-to type=inline \ - --platform linux/${{ matrix.arch }} \ - --tag ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.sha }} \ - ${{ github.ref == 'refs/heads/main' && format('--tag ghcr.io/getsentry/pypi-manylinux-{0}-ci:latest', matrix.arch) || '' }} \ - --push \ - docker linux: - needs: [image] strategy: fail-fast: false matrix: @@ -39,7 +17,7 @@ jobs: - {arch: amd64, os: ubuntu-latest} - {arch: arm64, os: ubuntu-24.04-arm} runs-on: ${{ matrix.os }} - container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.sha }} + container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:latest steps: - uses: actions/checkout@v3 - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io @@ -49,7 +27,6 @@ jobs: name: dist-linux-${{ matrix.arch }} path: dist/* macos: - needs: [image] strategy: matrix: runs-on: [macos-15] From d9b5f29cff87dab59d025ba5ca7fcc8480852d9b Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Wed, 25 Feb 2026 12:53:08 -0800 Subject: [PATCH 58/66] minor edits --- .github/workflows/build.yml | 6 ++++-- packages.ini | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5edb08f7..d9c38aff 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -32,8 +32,10 @@ jobs: runs-on: [macos-15] runs-on: ${{ matrix.runs-on }} steps: - - uses: actions/checkout@v3 - - run: pip install --break-system-packages uv + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: astral-sh/setup-uv@884ad927a57e558e7a70b92f2bccf9198a4be546 # v6 + with: + version: '0.9.28' - run: python3 -u docker/install-pythons --dest pythons - run: | echo "$PWD/pythons/cp311-cp311/bin" >> "$GITHUB_PATH" diff --git a/packages.ini b/packages.ini index 9294e5e0..797b9675 100644 --- a/packages.ini +++ b/packages.ini @@ -889,7 +889,6 @@ python_versions = <3.14 [grpcio==1.73.1] python_versions = <3.14 [grpcio==1.75.1] -python_versions = <3.14 [grpcio-status==1.47.0] [grpcio-status==1.48.1] From 7efdb9671f232f4a7d3a5840439d6083760b91d0 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Wed, 25 Feb 2026 13:49:59 -0800 Subject: [PATCH 59/66] fix: always install latest uv --- .github/workflows/build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d9c38aff..9ff9ee7d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,8 +34,6 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: astral-sh/setup-uv@884ad927a57e558e7a70b92f2bccf9198a4be546 # v6 - with: - version: '0.9.28' - run: python3 -u docker/install-pythons --dest pythons - run: | echo "$PWD/pythons/cp311-cp311/bin" >> "$GITHUB_PATH" From 9748073d93c8c5b422558da8082b3b1cb956f352 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Wed, 25 Feb 2026 13:57:53 -0800 Subject: [PATCH 60/66] just switch to clang --- build.py | 10 +++++++--- docker/Dockerfile | 3 +-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/build.py b/build.py index 737e4c9f..529f408b 100644 --- a/build.py +++ b/build.py @@ -257,18 +257,22 @@ def _apt_install(packages: tuple[str, ...]) -> Generator[None, None, None]: installed_before = _linux_installed_packages() - subprocess.check_call( + ret = subprocess.run( ( "apt-get", + "-o", + "Acquire::Retries=3", "install", "-qqy", "--no-install-recommends", *packages, ), env={**os.environ, "DEBIAN_FRONTEND": "noninteractive"}, - stderr=subprocess.DEVNULL, - stdout=subprocess.DEVNULL, + capture_output=True, ) + if ret.returncode: + sys.stderr.buffer.write(ret.stderr) + ret.check_returncode() try: yield diff --git a/docker/Dockerfile b/docker/Dockerfile index b851e5d9..df56d237 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -6,10 +6,9 @@ RUN : \ -y --no-install-recommends \ automake \ ca-certificates \ + clang \ curl \ dumb-init \ - g++ \ - gcc \ git \ libbz2-dev \ libdb-dev \ From 8df7dad534f8988425df12271307b7dd936fd644 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Wed, 25 Feb 2026 14:30:09 -0800 Subject: [PATCH 61/66] fix and temporarily rebuild images --- .github/workflows/build.yml | 24 +++++++++++++++++++++++- docker/Dockerfile | 6 +++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9ff9ee7d..03db6fa6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,7 +9,29 @@ concurrency: group: ${{ github.event_name == 'push' && github.workflow || github.sha }}${{ github.workflow }} jobs: + image: + strategy: + matrix: + include: + - {arch: amd64, os: ubuntu-latest} + - {arch: arm64, os: ubuntu-24.04-arm} + runs-on: ${{ matrix.os }} + permissions: + packages: write + steps: + - uses: actions/checkout@v3 + - run: docker login --username '${{ github.actor }}' --password-stdin ghcr.io <<< '${{ secrets.GITHUB_TOKEN }}' + - run: | + docker buildx build \ + --cache-from ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:latest \ + --cache-to type=inline \ + --platform linux/${{ matrix.arch }} \ + --tag ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.sha }} \ + ${{ github.ref == 'refs/heads/main' && format('--tag ghcr.io/getsentry/pypi-manylinux-{0}-ci:latest', matrix.arch) || '' }} \ + --push \ + docker linux: + needs: [image] strategy: fail-fast: false matrix: @@ -17,7 +39,7 @@ jobs: - {arch: amd64, os: ubuntu-latest} - {arch: arm64, os: ubuntu-24.04-arm} runs-on: ${{ matrix.os }} - container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:latest + container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.sha }} steps: - uses: actions/checkout@v3 - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io diff --git a/docker/Dockerfile b/docker/Dockerfile index df56d237..3da5fb40 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -44,7 +44,11 @@ ENV \ COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv COPY install-pythons /tmp/install-pythons -RUN /tmp/install-pythons +RUN /tmp/install-pythons \ + # the base image installs libcrypt.so.1 to /usr/local/lib/ which the + # linker finds before the system copy. this breaks perl (needed by dpkg) + # because the base image's copy lacks the XCRYPT_2.0 symbol. + && rm -f /usr/local/lib/libcrypt.so* COPY requirements.txt /tmp/requirements.txt RUN : \ From 36ee7aff4b6438c50c6a17c767ca5c3e3a22b1e3 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Wed, 25 Feb 2026 15:13:37 -0800 Subject: [PATCH 62/66] revert testing --- .github/workflows/build.yml | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 03db6fa6..9ff9ee7d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,29 +9,7 @@ concurrency: group: ${{ github.event_name == 'push' && github.workflow || github.sha }}${{ github.workflow }} jobs: - image: - strategy: - matrix: - include: - - {arch: amd64, os: ubuntu-latest} - - {arch: arm64, os: ubuntu-24.04-arm} - runs-on: ${{ matrix.os }} - permissions: - packages: write - steps: - - uses: actions/checkout@v3 - - run: docker login --username '${{ github.actor }}' --password-stdin ghcr.io <<< '${{ secrets.GITHUB_TOKEN }}' - - run: | - docker buildx build \ - --cache-from ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:latest \ - --cache-to type=inline \ - --platform linux/${{ matrix.arch }} \ - --tag ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.sha }} \ - ${{ github.ref == 'refs/heads/main' && format('--tag ghcr.io/getsentry/pypi-manylinux-{0}-ci:latest', matrix.arch) || '' }} \ - --push \ - docker linux: - needs: [image] strategy: fail-fast: false matrix: @@ -39,7 +17,7 @@ jobs: - {arch: amd64, os: ubuntu-latest} - {arch: arm64, os: ubuntu-24.04-arm} runs-on: ${{ matrix.os }} - container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.sha }} + container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:latest steps: - uses: actions/checkout@v3 - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io From 3ac558623b6bfb351791c4813d1f9e7b286160a1 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Wed, 25 Feb 2026 15:18:13 -0800 Subject: [PATCH 63/66] temp build pass in order to merge --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9ff9ee7d..3a431f52 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ jobs: - {arch: amd64, os: ubuntu-latest} - {arch: arm64, os: ubuntu-24.04-arm} runs-on: ${{ matrix.os }} - container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:latest + container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.head_ref == 'feat/python314-support' && github.sha || 'latest' }} steps: - uses: actions/checkout@v3 - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io From e0d3c7ac1f22bb4636f5775d05da136514d2bf24 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Wed, 25 Feb 2026 15:20:39 -0800 Subject: [PATCH 64/66] im dumb --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3a431f52..82620382 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ jobs: - {arch: amd64, os: ubuntu-latest} - {arch: arm64, os: ubuntu-24.04-arm} runs-on: ${{ matrix.os }} - container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.head_ref == 'feat/python314-support' && github.sha || 'latest' }} + container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.head_ref == 'feat/python314-support' && '8df7dad534f8988425df12271307b7dd936fd644'' || 'latest' }} steps: - uses: actions/checkout@v3 - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io From 14e6a22b587e78ea95abf7816c021e1be83545b6 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Wed, 25 Feb 2026 18:04:37 -0800 Subject: [PATCH 65/66] im dumb x2 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 82620382..172c316a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ jobs: - {arch: amd64, os: ubuntu-latest} - {arch: arm64, os: ubuntu-24.04-arm} runs-on: ${{ matrix.os }} - container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.head_ref == 'feat/python314-support' && '8df7dad534f8988425df12271307b7dd936fd644'' || 'latest' }} + container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.head_ref == 'feat/python314-support' && '8df7dad534f8988425df12271307b7dd936fd644' || 'latest' }} steps: - uses: actions/checkout@v3 - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io From 6eb8463262820cdaa3980779a4f40b3617a502b3 Mon Sep 17 00:00:00 2001 From: Joshua Li Date: Wed, 25 Feb 2026 18:12:04 -0800 Subject: [PATCH 66/66] wrong sha lol --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 172c316a..b27836c9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -17,7 +17,7 @@ jobs: - {arch: amd64, os: ubuntu-latest} - {arch: arm64, os: ubuntu-24.04-arm} runs-on: ${{ matrix.os }} - container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.head_ref == 'feat/python314-support' && '8df7dad534f8988425df12271307b7dd936fd644' || 'latest' }} + container: ghcr.io/getsentry/pypi-manylinux-${{ matrix.arch }}-ci:${{ github.head_ref == 'feat/python314-support' && '769374905268e37a20b467d487926b78d56eb96c' || 'latest' }} steps: - uses: actions/checkout@v3 - run: python3 -um build --pypi-url https://pypi.devinfra.sentry.io