diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a1851360..0744f92e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,160 +1,51 @@ -name: Test and lint +name: CI on: - schedule: - - cron: "0 2 * * *" # 2am UTC push: - branches: - - main + branches: [main] pull_request: - workflow_dispatch: + branches: [main] + schedule: + - cron: '0 0 * * *' permissions: contents: read -env: - FORCE_COLOR: 1 - PIP_DISABLE_PIP_VERSION_CHECK: 1 - -concurrency: - group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} - cancel-in-progress: true - jobs: - docs: - name: Build docs + test: runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Install uv - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 + uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 with: - # renovate: datasource=github-release-attachments depName=astral-sh/uv - version: "0.12.7" - checksum: "788f18abea7c5f55d6216e4f5613fd89d4d59b631efeec117b2b07fe72f1da21" - python-version: "3.14" - - - name: Build docs in nitpicky mode - run: uvx --from sphinx sphinx-build -n -W -b html doc doc/_build/html - - tests: - name: Run tests - - # if 'schedule' was the trigger, - # don't run it on contributors' forks - if: >- - github.repository == 'python/typing_extensions' - || github.event_name != 'schedule' + version: "0.13.0" + checksum: "1468ebd5a5541121837c5a2817b9972ba6090fa6caa3d142620850a47fb75154" + python-version: ${{ matrix.python-version }} - strategy: - fail-fast: false - matrix: - # We try to test on the earliest available bugfix release of each - # Python version, because typing sometimes changed between bugfix releases. - # For available versions, see: - # https://raw.githubusercontent.com/actions/python-versions/main/versions-manifest.json - python-version: - - "3.9" - - "3.9.12" - - "3.10" - - "3.10.4" - - "3.11" - - "3.11.0" - - "3.12" - - "3.12.0" - - "3.13" - - "3.13.0" - - "3.14" - - "pypy3.9" - - "pypy3.10" - - "pypy3.11" + - name: Run tests + run: uv run --python ${{ matrix.python-version }} python -c 'import typing_extensions; import test.__main__' test_typing -v + docs: runs-on: ubuntu-latest - - permissions: - contents: read - id-token: write # for codecov upload - steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - name: Set up Python - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 - with: - python-version: ${{ matrix.python-version }} - allow-prereleases: true - - - name: Install coverage - run: | - # Be wary that this does not install typing_extensions in the future. - # 'toml' extra is needed to read settings from pyproject.toml on Python <3.11 - pip install 'coverage[toml]' - - - name: Test typing_extensions with coverage - run: | - # Be wary of running `pip install` here, since it becomes easy for us to - # accidentally pick up typing_extensions as installed by a dependency - cd src - python --version # just to make sure we're running the right one - # Run tests under coverage - python -We -m coverage run -m unittest test_typing_extensions.py - # Create xml file for Codecov - coverage xml --rcfile=../pyproject.toml --fail-under=0 - - - name: Test CPython typing test suite - # Test suite fails on PyPy even without typing_extensions - if: ${{ !startsWith(matrix.python-version, 'pypy') }} - run: | - cd src - # Run the typing test suite from CPython with typing_extensions installed, - # because we monkeypatch typing under some circumstances. - python -c 'import typing_extensions; import test.__main__' test_typing -v - - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 - if: >- - github.repository == 'python/typing_extensions' - && (github.event_name == 'push' || github.event_name == 'pull_request') + - name: Install uv + uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 with: - # renovate: datasource=github-releases depName=codecov/codecov-cli - version: "v11.3.1" - use_oidc: true - flags: ${{ matrix.python-version }} - directory: src - fail_ci_if_error: true - verbose: true - - create-issue-on-failure: - name: Create an issue if daily tests failed - runs-on: ubuntu-latest - - needs: [tests] - - if: >- - ${{ - github.repository == 'python/typing_extensions' - && always() - && github.event_name == 'schedule' - && needs.tests.result == 'failure' - }} - - permissions: - issues: write + version: "0.13.0" + checksum: "1468ebd5a5541121837c5a2817b9972ba6090fa6caa3d142620850a47fb75154" + python-version: "3.14" - steps: - - uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - await github.rest.issues.create({ - owner: "python", - repo: "typing_extensions", - title: `Daily tests failed on ${new Date().toDateString()}`, - body: "Run listed here: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}", - }) + - name: Build docs in nitpicky mode + run: uv run --no-project sphinx-build -n -W -b html doc doc/_build/html diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index bcf9b51f..0fa3d455 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -23,11 +23,11 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Set up Python - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 + uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: "3.x" - name: Check package metadata @@ -43,7 +43,7 @@ jobs: - name: Build a binary wheel and a source tarball run: python -m build - name: Store the distribution packages - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 with: name: python-package-distributions path: dist/ @@ -55,15 +55,15 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Set up Python - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 + uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: "3.x" - name: Download all the dists - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2 with: name: python-package-distributions path: dist/ @@ -84,15 +84,15 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Set up Python - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 + uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: "3.x" - name: Download all the dists - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2 with: name: python-package-distributions path: dist/ @@ -112,15 +112,15 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - name: Set up Python - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 + uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: "3.x" - name: Download all the dists - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2 with: name: python-package-distributions path: dist/ @@ -152,11 +152,11 @@ jobs: steps: - name: Download all the dists - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2 with: name: python-package-distributions path: dist/ - name: Ensure exactly one sdist and one wheel have been downloaded run: test "$(find dist/*.tar.gz | wc -l | xargs)" = 1 && test "$(find dist/*.whl | wc -l | xargs)" = 1 - name: Publish distribution to PyPI - uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0 + uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2 diff --git a/.github/workflows/third_party.yml b/.github/workflows/third_party.yml index ccd08101..b69041da 100644 --- a/.github/workflows/third_party.yml +++ b/.github/workflows/third_party.yml @@ -53,16 +53,16 @@ jobs: timeout-minutes: 60 steps: - name: Install uv - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 + uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 with: # renovate: datasource=github-release-attachments depName=astral-sh/uv - version: "0.12.7" - checksum: "788f18abea7c5f55d6216e4f5613fd89d4d59b631efeec117b2b07fe72f1da21" + version: "0.13.0" + checksum: "1468ebd5a5541121837c5a2817b9972ba6090fa6caa3d142620850a47fb75154" python-version: ${{ matrix.python-version }} - name: Checkout pydantic run: git clone --depth=1 https://github.com/pydantic/pydantic.git || git clone --depth=1 https://github.com/pydantic/pydantic.git - name: Checkout typing_extensions - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: typing-extensions-latest persist-credentials: false @@ -91,16 +91,16 @@ jobs: timeout-minutes: 60 steps: - name: Install uv - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 + uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 with: # renovate: datasource=github-release-attachments depName=astral-sh/uv - version: "0.12.7" - checksum: "788f18abea7c5f55d6216e4f5613fd89d4d59b631efeec117b2b07fe72f1da21" + version: "0.13.0" + checksum: "1468ebd5a5541121837c5a2817b9972ba6090fa6caa3d142620850a47fb75154" python-version: ${{ matrix.python-version }} - name: Checkout typing_inspect run: git clone --depth=1 https://github.com/ilevkivskyi/typing_inspect.git || git clone --depth=1 https://github.com/ilevkivskyi/typing_inspect.git - name: Checkout typing_extensions - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: typing-extensions-latest persist-credentials: false @@ -131,16 +131,16 @@ jobs: timeout-minutes: 60 steps: - name: Install uv - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 + uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 with: # renovate: datasource=github-release-attachments depName=astral-sh/uv - version: "0.12.7" - checksum: "788f18abea7c5f55d6216e4f5613fd89d4d59b631efeec117b2b07fe72f1da21" + version: "0.13.0" + checksum: "1468ebd5a5541121837c5a2817b9972ba6090fa6caa3d142620850a47fb75154" python-version: ${{ matrix.python-version }} - name: Check out pycroscope run: git clone --depth=1 https://github.com/JelleZijlstra/pycroscope.git || git clone --depth=1 https://github.com/JelleZijlstra/pycroscope.git - name: Checkout typing_extensions - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: typing-extensions-latest persist-credentials: false @@ -171,16 +171,16 @@ jobs: timeout-minutes: 60 steps: - name: Install uv - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 + uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 with: # renovate: datasource=github-release-attachments depName=astral-sh/uv - version: "0.12.7" - checksum: "788f18abea7c5f55d6216e4f5613fd89d4d59b631efeec117b2b07fe72f1da21" + version: "0.13.0" + checksum: "1468ebd5a5541121837c5a2817b9972ba6090fa6caa3d142620850a47fb75154" python-version: ${{ matrix.python-version }} - name: Check out typeguard run: git clone --depth=1 https://github.com/agronholm/typeguard.git || git clone --depth=1 https://github.com/agronholm/typeguard.git - name: Checkout typing_extensions - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: typing-extensions-latest persist-credentials: false @@ -214,16 +214,16 @@ jobs: timeout-minutes: 60 steps: - name: Install uv - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 + uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 with: # renovate: datasource=github-release-attachments depName=astral-sh/uv - version: "0.12.7" - checksum: "788f18abea7c5f55d6216e4f5613fd89d4d59b631efeec117b2b07fe72f1da21" + version: "0.13.0" + checksum: "1468ebd5a5541121837c5a2817b9972ba6090fa6caa3d142620850a47fb75154" python-version: ${{ matrix.python-version }} - name: Check out typed-argument-parser run: git clone --depth=1 https://github.com/swansonk14/typed-argument-parser.git || git clone --depth=1 https://github.com/swansonk14/typed-argument-parser.git - name: Checkout typing_extensions - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: typing-extensions-latest persist-credentials: false @@ -262,16 +262,16 @@ jobs: timeout-minutes: 60 steps: - name: Install uv - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 + uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 with: # renovate: datasource=github-release-attachments depName=astral-sh/uv - version: "0.12.7" - checksum: "788f18abea7c5f55d6216e4f5613fd89d4d59b631efeec117b2b07fe72f1da21" + version: "0.13.0" + checksum: "1468ebd5a5541121837c5a2817b9972ba6090fa6caa3d142620850a47fb75154" python-version: ${{ matrix.python-version }} - name: Checkout mypy for stubtest and mypyc tests run: git clone --depth=1 https://github.com/python/mypy.git || git clone --depth=1 https://github.com/python/mypy.git - name: Checkout typing_extensions - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: typing-extensions-latest persist-credentials: false @@ -303,16 +303,16 @@ jobs: timeout-minutes: 60 steps: - name: Install uv - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 + uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 with: # renovate: datasource=github-release-attachments depName=astral-sh/uv - version: "0.12.7" - checksum: "788f18abea7c5f55d6216e4f5613fd89d4d59b631efeec117b2b07fe72f1da21" + version: "0.13.0" + checksum: "1468ebd5a5541121837c5a2817b9972ba6090fa6caa3d142620850a47fb75154" python-version: ${{ matrix.python-version }} - name: Checkout cattrs run: git clone --depth=1 https://github.com/python-attrs/cattrs.git || git clone --depth=1 https://github.com/python-attrs/cattrs.git - name: Checkout typing_extensions - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: typing-extensions-latest persist-credentials: false @@ -346,16 +346,16 @@ jobs: timeout-minutes: 60 steps: - name: Install uv - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 + uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 with: # renovate: datasource=github-release-attachments depName=astral-sh/uv - version: "0.12.7" - checksum: "788f18abea7c5f55d6216e4f5613fd89d4d59b631efeec117b2b07fe72f1da21" + version: "0.13.0" + checksum: "1468ebd5a5541121837c5a2817b9972ba6090fa6caa3d142620850a47fb75154" python-version: ${{ matrix.python-version }} - name: Checkout sqlalchemy run: git clone -b ${{ matrix.checkout-ref }} --depth=1 https://github.com/sqlalchemy/sqlalchemy.git || git clone -b ${{ matrix.checkout-ref }} --depth=1 https://github.com/sqlalchemy/sqlalchemy.git - name: Checkout typing_extensions - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: typing-extensions-latest persist-credentials: false @@ -383,16 +383,16 @@ jobs: python-version: [ "3.11", "3.12", "3.13" ] steps: - name: Install uv - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0 + uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 with: # renovate: datasource=github-release-attachments depName=astral-sh/uv - version: "0.12.7" - checksum: "788f18abea7c5f55d6216e4f5613fd89d4d59b631efeec117b2b07fe72f1da21" + version: "0.13.0" + checksum: "1468ebd5a5541121837c5a2817b9972ba6090fa6caa3d142620850a47fb75154" python-version: ${{ matrix.python-version }} - name: Checkout litestar run: git clone --depth=1 https://github.com/litestar-org/litestar.git || git clone --depth=1 https://github.com/litestar-org/litestar.git - name: Checkout typing_extensions - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: path: typing-extensions-latest persist-credentials: false