diff --git a/.github/mergify.yml b/.github/mergify.yml index 14222db1094..63508de3428 100644 --- a/.github/mergify.yml +++ b/.github/mergify.yml @@ -4,6 +4,7 @@ pull_request_rules: - "#approved-reviews-by>=1" - label=automerge - status-success=Lint + - status-success=Typing Successful - status-success=Test Successful - status-success=Docker Test Successful - status-success=Windows Test Successful diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index e2f8bf47ac4..f9325a9eefb 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -28,5 +28,3 @@ jobs: uses: astral-sh/setup-uv@v7 - name: Lint run: uvx --with tox-uv tox -e lint - - name: Mypy - run: uvx --with tox-uv tox -e mypy diff --git a/.github/workflows/typing.yml b/.github/workflows/typing.yml new file mode 100644 index 00000000000..bb4bd90190c --- /dev/null +++ b/.github/workflows/typing.yml @@ -0,0 +1,52 @@ +name: Typing + +on: [push, pull_request, workflow_dispatch] + +permissions: {} + +env: + FORCE_COLOR: 1 + PREK_COLOR: always + RUFF_OUTPUT_FORMAT: github + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + typing: + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + python-version: [ + "3.14", + "3.13", + "3.12", + "3.11", + "3.10", + ] + + name: Typing Python ${{ matrix.python-version }} + steps: + - uses: actions/checkout@v6 + with: + persist-credentials: false + - uses: actions/setup-python@v6 + with: + python-version: "3.x" + - name: Install uv + uses: astral-sh/setup-uv@v7 + - name: Typing + run: uvx --with tox-uv tox -e mypy -- --python-version=${{ matrix.python-version }} + + success: + permissions: + contents: none + needs: typing + runs-on: ubuntu-latest + name: Typing Successful + steps: + - name: Success + run: echo Typing Successful diff --git a/Tests/test_image.py b/Tests/test_image.py index 32c79919595..1e0377c0a05 100644 --- a/Tests/test_image.py +++ b/Tests/test_image.py @@ -202,7 +202,7 @@ class FP(io.BytesIO): from collections.abc import Buffer def write(self, data: Buffer) -> int: - return len(data) + return len(bytes(data)) else: diff --git a/pyproject.toml b/pyproject.toml index cc616bc547c..82428974c2d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -214,7 +214,6 @@ testpaths = [ ] [tool.mypy] -python_version = "3.10" pretty = true disallow_any_generics = true disallow_untyped_defs = true diff --git a/src/PIL/GifImagePlugin.py b/src/PIL/GifImagePlugin.py index 76a0d4ab99f..b1c7485ab49 100644 --- a/src/PIL/GifImagePlugin.py +++ b/src/PIL/GifImagePlugin.py @@ -1189,6 +1189,7 @@ class Collector(BytesIO): data = [] def write(self, data: Buffer) -> int: + data = bytes(data) self.data.append(data) return len(data)