-
Notifications
You must be signed in to change notification settings - Fork 116
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Incorrect checking of protocol methods with **kwargs
but no *args
#465
Comments
I suspect that this isn't the only issue with the new protocol check. I'll expand the test suite for that a bit and fix any problems I find in the process. |
The new protocol check implementation also doesn't work with callback protocols because it checks against the type. This fails with |
Would you mind writing an example for me so I could make sure it works in the next release? |
Having the same issue. |
Then you can just subscribe to the issue instead of pinging everyone. |
So sorry, I will keep it in mind for next time. |
I have one.
import typing
import pytest
class CallableFixture(typing.Protocol):
def __call__(self) -> None: ...
@pytest.fixture(name="callable_fixture")
def make_callable_fixture() -> CallableFixture:
def callable_fixture() -> None:
print("Works!")
return callable_fixture
def test_bug(callable_fixture: CallableFixture) -> None:
callable_fixture() Then run
I guess this can be simplified to work without |
I'm already writing improved compatibility tests involving |
Awesome, thanks. Just to avoid potential confusion: my example code in #465 (comment) is for the sub-issue reported in #465 (comment), not for the original one reported in #465 (comment). |
I tried putting
This will fail because function's type has no attribute named |
I will take all this into account in the tests going forward. |
That helps my use cases, thank you! |
Is there any way to apply this from the type-checked code, by monkey patching or similar? Since protocol checks cannot be skipped on 4.3.0, they fail on 4.3.0, and versions before 4.3.0 are not compatible with Python 3.12.4 and beyond, my CI is currently completely blocked on Python 3.12. |
This comment has been minimized.
This comment has been minimized.
That's not expected to work to begin with, as |
Alright, thanks! This is my workaround for CI right now:
import typeguard._checkers as checkers # noqa:PLC2701
from funcy import constantly
checkers.check_protocol = constantly(None) # agronholm/typeguard#465 |
It looks like this also broke phantom-types. Minimal reproducible example, that works on 4.2.1 but breaks on 4.3.0. import typeguard
from typing import runtime_checkable, Sized, Iterable, Protocol, TypeVar
T = TypeVar("T", bound=object, covariant=True)
@runtime_checkable
class SizedIterable(Sized, Iterable[T], Protocol[T]): ...
typeguard.check_type(
value=(),
expected_type=SizedIterable,
typecheck_fail_callback=None,
forward_ref_policy=typeguard.ForwardRefPolicy.ERROR,
collection_check_strategy=typeguard.CollectionCheckStrategy.ALL_ITEMS,
) Breaks with:
I think it was noteworthy that the "decomposed" protocols are passing: typeguard.check_type(
value=(),
expected_type=Sized,
typecheck_fail_callback=None,
forward_ref_policy=typeguard.ForwardRefPolicy.ERROR,
collection_check_strategy=typeguard.CollectionCheckStrategy.ALL_ITEMS,
)
typeguard.check_type(
value=(),
expected_type=Iterable[T],
typecheck_fail_callback=None,
forward_ref_policy=typeguard.ForwardRefPolicy.ERROR,
collection_check_strategy=typeguard.CollectionCheckStrategy.ALL_ITEMS,
) So the practical effect is I've lost the ability to check "intersection" protocols. |
It's not good enough to pretend we can use `check_callable()` to check method signature compatibility. Fixes #465.
I have a PR with some sweeping protocol check changes. Would you mind verifying it? I tested against the script in the OP and it passes. |
@agronholm Thanks for the continued work on improving this library 💪 |
Appreciated! My attention is so thinly spread between all my projects, the list of which is ever growing, that I barely have time to make bug fixes, let alone new features. |
….13.3,<4.5.0 in /packages/@jsii/python-runtime (#4683) Updates the requirements on [typeguard](https://github.com/agronholm/typeguard) to permit the latest version. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/agronholm/typeguard/releases">typeguard's releases</a>.</em></p> <blockquote> <h2>4.4.0</h2> <ul> <li>Added proper checking for method signatures in protocol checks (<a href="https://redirect.github.com/agronholm/typeguard/pull/465">#465</a>)</li> <li>Fixed basic support for intersection protocols (<a href="https://redirect.github.com/agronholm/typeguard/pull/490">#490</a>; PR by <a href="https://github.com/antonagestam"><code>@antonagestam</code></a>)</li> <li>Fixed protocol checks running against the class of an instance and not the instance itself (this produced wrong results for non-method member checks)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/agronholm/typeguard/blob/master/docs/versionhistory.rst">typeguard's changelog</a>.</em></p> <blockquote> <h1>Version history</h1> <p>This library adheres to <code>Semantic Versioning 2.0 <https://semver.org/#semantic-versioning-200></code>_.</p> <p><strong>4.4.0</strong> (2024-10-27)</p> <ul> <li>Added proper checking for method signatures in protocol checks (<code>[#465](agronholm/typeguard#465) <https://github.com/agronholm/typeguard/pull/465></code>_)</li> <li>Fixed basic support for intersection protocols (<code>[#490](agronholm/typeguard#490) <https://github.com/agronholm/typeguard/pull/490></code>_; PR by <a href="https://github.com/antonagestam"><code>@antonagestam</code></a>)</li> <li>Fixed protocol checks running against the class of an instance and not the instance itself (this produced wrong results for non-method member checks)</li> </ul> <p><strong>4.3.0</strong> (2024-05-27)</p> <ul> <li>Added support for checking against static protocols</li> <li>Fixed some compatibility problems when running on Python 3.13 (<code>[#460](agronholm/typeguard#460) <https://github.com/agronholm/typeguard/issues/460></code>_; PR by <a href="https://github.com/JelleZijlstra"><code>@JelleZijlstra</code></a>)</li> <li>Fixed test suite incompatibility with pytest 8.2 (<code>[#461](agronholm/typeguard#461) <https://github.com/agronholm/typeguard/issues/461></code>_)</li> <li>Fixed pytest plugin crashing on pytest version older than v7.0.0 (even if it's just present) (<code>[#343](agronholm/typeguard#343) <https://github.com/agronholm/typeguard/issues/343></code>_)</li> </ul> <p><strong>4.2.1</strong> (2023-03-24)</p> <ul> <li>Fixed missing <code>typing_extensions</code> dependency for Python 3.12 (<code>[#444](agronholm/typeguard#444) <https://github.com/agronholm/typeguard/issues/444></code>_)</li> <li>Fixed deprecation warning in the test suite on Python 3.13 (<code>[#444](agronholm/typeguard#444) <https://github.com/agronholm/typeguard/issues/444></code>_)</li> </ul> <p><strong>4.2.0</strong> (2023-03-23)</p> <ul> <li>Added support for specifying options for the pytest plugin via pytest config files (<code>[#440](agronholm/typeguard#440) <https://github.com/agronholm/typeguard/issues/440></code>_)</li> <li>Avoid creating reference cycles when type checking unions (PR by Shantanu)</li> <li>Fixed <code>Optional[...]</code> being removed from the AST if it was located within a subscript (<code>[#442](agronholm/typeguard#442) <https://github.com/agronholm/typeguard/issues/442></code>_)</li> <li>Fixed <code>TypedDict</code> from <code>typing_extensions</code> not being recognized as one (<code>[#443](agronholm/typeguard#443) <https://github.com/agronholm/typeguard/issues/443></code>_)</li> <li>Fixed <code>typing</code> types (<code>dict[str, int]</code>, <code>List[str]</code>, etc.) not passing checks against <code>type</code> or <code>Type</code> (<code>[#432](agronholm/typeguard#432) <https://github.com/agronholm/typeguard/issues/432></code>_, PR by Yongxin Wang)</li> <li>Fixed detection of optional fields (<code>NotRequired[...]</code>) in <code>TypedDict</code> when using forward references (<code>[#424](agronholm/typeguard#424) <https://github.com/agronholm/typeguard/issues/424></code>_)</li> <li>Fixed mapping checks against Django's <code>MultiValueDict</code> (<code>[#419](agronholm/typeguard#419) <https://github.com/agronholm/typeguard/issues/419></code>_)</li> </ul> <p><strong>4.1.5</strong> (2023-09-11)</p> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/agronholm/typeguard/commit/efa1166c85be9a1280090fea9c287b5e4e9f3830"><code>efa1166</code></a> Added release date</li> <li><a href="https://github.com/agronholm/typeguard/commit/b72794dffe403254881ac0c327155357c43ccebf"><code>b72794d</code></a> Added proper Protocol method signature checking (<a href="https://redirect.github.com/agronholm/typeguard/issues/496">#496</a>)</li> <li><a href="https://github.com/agronholm/typeguard/commit/afad2c7b6be830900776922bb39f9346c2e77f6f"><code>afad2c7</code></a> Sorted the Ruff rules alphabetically</li> <li><a href="https://github.com/agronholm/typeguard/commit/d812f2eba9f5e898544eb4b3e597f8c38b0952e8"><code>d812f2e</code></a> Migrated to native tox TOML configuration</li> <li><a href="https://github.com/agronholm/typeguard/commit/0c50de6144d99eedb402a8e85eb8187098f8c26f"><code>0c50de6</code></a> Declared Python 3.13 support</li> <li><a href="https://github.com/agronholm/typeguard/commit/cf25d56dc0dbf6bb2f51ea29da8436b368ed4857"><code>cf25d56</code></a> Fixed annotation for typeguard_ignore() to match one for typing.no_type_check...</li> <li><a href="https://github.com/agronholm/typeguard/commit/604b08d5ba7c1b6e3d2f2ddd50dcf020f7e2794a"><code>604b08d</code></a> Use get_protocol_members in protocol checking (<a href="https://redirect.github.com/agronholm/typeguard/issues/490">#490</a>)</li> <li><a href="https://github.com/agronholm/typeguard/commit/c72b6752b7069d695898ea29abb2a31983c1bf80"><code>c72b675</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://redirect.github.com/agronholm/typeguard/issues/471">#471</a>)</li> <li><a href="https://github.com/agronholm/typeguard/commit/ac7ac342a61db284872430c95d5e6ed7a035b7c0"><code>ac7ac34</code></a> Fixed the documentation build</li> <li><a href="https://github.com/agronholm/typeguard/commit/2c035b306996f742705da66ef64a052e715a94e2"><code>2c035b3</code></a> Assume that typing_extensions is always installed (<a href="https://redirect.github.com/agronholm/typeguard/issues/487">#487</a>)</li> <li>Additional commits viewable in <a href="https://github.com/agronholm/typeguard/compare/2.13.3...4.4.0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Bumps [typeguard](https://github.com/agronholm/typeguard) from 4.3.0 to 4.4.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/agronholm/typeguard/releases">typeguard's releases</a>.</em></p> <blockquote> <h2>4.4.0</h2> <ul> <li>Added proper checking for method signatures in protocol checks (<a href="https://redirect.github.com/agronholm/typeguard/pull/465">#465</a>)</li> <li>Fixed basic support for intersection protocols (<a href="https://redirect.github.com/agronholm/typeguard/pull/490">#490</a>; PR by <a href="https://github.com/antonagestam"><code>@antonagestam</code></a>)</li> <li>Fixed protocol checks running against the class of an instance and not the instance itself (this produced wrong results for non-method member checks)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/agronholm/typeguard/blob/master/docs/versionhistory.rst">typeguard's changelog</a>.</em></p> <blockquote> <h1>Version history</h1> <p>This library adheres to <code>Semantic Versioning 2.0 <https://semver.org/#semantic-versioning-200></code>_.</p> <p><strong>4.4.0</strong> (2024-10-27)</p> <ul> <li>Added proper checking for method signatures in protocol checks (<code>[#465](agronholm/typeguard#465) <https://github.com/agronholm/typeguard/pull/465></code>_)</li> <li>Fixed basic support for intersection protocols (<code>[#490](agronholm/typeguard#490) <https://github.com/agronholm/typeguard/pull/490></code>_; PR by <a href="https://github.com/antonagestam"><code>@antonagestam</code></a>)</li> <li>Fixed protocol checks running against the class of an instance and not the instance itself (this produced wrong results for non-method member checks)</li> </ul> <p><strong>4.3.0</strong> (2024-05-27)</p> <ul> <li>Added support for checking against static protocols</li> <li>Fixed some compatibility problems when running on Python 3.13 (<code>[#460](agronholm/typeguard#460) <https://github.com/agronholm/typeguard/issues/460></code>_; PR by <a href="https://github.com/JelleZijlstra"><code>@JelleZijlstra</code></a>)</li> <li>Fixed test suite incompatibility with pytest 8.2 (<code>[#461](agronholm/typeguard#461) <https://github.com/agronholm/typeguard/issues/461></code>_)</li> <li>Fixed pytest plugin crashing on pytest version older than v7.0.0 (even if it's just present) (<code>[#343](agronholm/typeguard#343) <https://github.com/agronholm/typeguard/issues/343></code>_)</li> </ul> <p><strong>4.2.1</strong> (2023-03-24)</p> <ul> <li>Fixed missing <code>typing_extensions</code> dependency for Python 3.12 (<code>[#444](agronholm/typeguard#444) <https://github.com/agronholm/typeguard/issues/444></code>_)</li> <li>Fixed deprecation warning in the test suite on Python 3.13 (<code>[#444](agronholm/typeguard#444) <https://github.com/agronholm/typeguard/issues/444></code>_)</li> </ul> <p><strong>4.2.0</strong> (2023-03-23)</p> <ul> <li>Added support for specifying options for the pytest plugin via pytest config files (<code>[#440](agronholm/typeguard#440) <https://github.com/agronholm/typeguard/issues/440></code>_)</li> <li>Avoid creating reference cycles when type checking unions (PR by Shantanu)</li> <li>Fixed <code>Optional[...]</code> being removed from the AST if it was located within a subscript (<code>[#442](agronholm/typeguard#442) <https://github.com/agronholm/typeguard/issues/442></code>_)</li> <li>Fixed <code>TypedDict</code> from <code>typing_extensions</code> not being recognized as one (<code>[#443](agronholm/typeguard#443) <https://github.com/agronholm/typeguard/issues/443></code>_)</li> <li>Fixed <code>typing</code> types (<code>dict[str, int]</code>, <code>List[str]</code>, etc.) not passing checks against <code>type</code> or <code>Type</code> (<code>[#432](agronholm/typeguard#432) <https://github.com/agronholm/typeguard/issues/432></code>_, PR by Yongxin Wang)</li> <li>Fixed detection of optional fields (<code>NotRequired[...]</code>) in <code>TypedDict</code> when using forward references (<code>[#424](agronholm/typeguard#424) <https://github.com/agronholm/typeguard/issues/424></code>_)</li> <li>Fixed mapping checks against Django's <code>MultiValueDict</code> (<code>[#419](agronholm/typeguard#419) <https://github.com/agronholm/typeguard/issues/419></code>_)</li> </ul> <p><strong>4.1.5</strong> (2023-09-11)</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/agronholm/typeguard/commit/efa1166c85be9a1280090fea9c287b5e4e9f3830"><code>efa1166</code></a> Added release date</li> <li><a href="https://github.com/agronholm/typeguard/commit/b72794dffe403254881ac0c327155357c43ccebf"><code>b72794d</code></a> Added proper Protocol method signature checking (<a href="https://redirect.github.com/agronholm/typeguard/issues/496">#496</a>)</li> <li><a href="https://github.com/agronholm/typeguard/commit/afad2c7b6be830900776922bb39f9346c2e77f6f"><code>afad2c7</code></a> Sorted the Ruff rules alphabetically</li> <li><a href="https://github.com/agronholm/typeguard/commit/d812f2eba9f5e898544eb4b3e597f8c38b0952e8"><code>d812f2e</code></a> Migrated to native tox TOML configuration</li> <li><a href="https://github.com/agronholm/typeguard/commit/0c50de6144d99eedb402a8e85eb8187098f8c26f"><code>0c50de6</code></a> Declared Python 3.13 support</li> <li><a href="https://github.com/agronholm/typeguard/commit/cf25d56dc0dbf6bb2f51ea29da8436b368ed4857"><code>cf25d56</code></a> Fixed annotation for typeguard_ignore() to match one for typing.no_type_check...</li> <li><a href="https://github.com/agronholm/typeguard/commit/604b08d5ba7c1b6e3d2f2ddd50dcf020f7e2794a"><code>604b08d</code></a> Use get_protocol_members in protocol checking (<a href="https://redirect.github.com/agronholm/typeguard/issues/490">#490</a>)</li> <li><a href="https://github.com/agronholm/typeguard/commit/c72b6752b7069d695898ea29abb2a31983c1bf80"><code>c72b675</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://redirect.github.com/agronholm/typeguard/issues/471">#471</a>)</li> <li><a href="https://github.com/agronholm/typeguard/commit/ac7ac342a61db284872430c95d5e6ed7a035b7c0"><code>ac7ac34</code></a> Fixed the documentation build</li> <li><a href="https://github.com/agronholm/typeguard/commit/2c035b306996f742705da66ef64a052e715a94e2"><code>2c035b3</code></a> Assume that typing_extensions is always installed (<a href="https://redirect.github.com/agronholm/typeguard/issues/487">#487</a>)</li> <li>Additional commits viewable in <a href="https://github.com/agronholm/typeguard/compare/4.3.0...4.4.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typeguard&package-manager=pip&previous-version=4.3.0&new-version=4.4.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Bumps [typeguard](https://github.com/agronholm/typeguard) from 4.3.0 to 4.4.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/agronholm/typeguard/releases">typeguard's releases</a>.</em></p> <blockquote> <h2>4.4.0</h2> <ul> <li>Added proper checking for method signatures in protocol checks (<a href="https://redirect.github.com/agronholm/typeguard/pull/465">#465</a>)</li> <li>Fixed basic support for intersection protocols (<a href="https://redirect.github.com/agronholm/typeguard/pull/490">#490</a>; PR by <a href="https://github.com/antonagestam"><code>@antonagestam</code></a>)</li> <li>Fixed protocol checks running against the class of an instance and not the instance itself (this produced wrong results for non-method member checks)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/agronholm/typeguard/blob/master/docs/versionhistory.rst">typeguard's changelog</a>.</em></p> <blockquote> <h1>Version history</h1> <p>This library adheres to <code>Semantic Versioning 2.0 <https://semver.org/#semantic-versioning-200></code>_.</p> <p><strong>4.4.0</strong> (2024-10-27)</p> <ul> <li>Added proper checking for method signatures in protocol checks (<code>[#465](agronholm/typeguard#465) <https://github.com/agronholm/typeguard/pull/465></code>_)</li> <li>Fixed basic support for intersection protocols (<code>[#490](agronholm/typeguard#490) <https://github.com/agronholm/typeguard/pull/490></code>_; PR by <a href="https://github.com/antonagestam"><code>@antonagestam</code></a>)</li> <li>Fixed protocol checks running against the class of an instance and not the instance itself (this produced wrong results for non-method member checks)</li> </ul> <p><strong>4.3.0</strong> (2024-05-27)</p> <ul> <li>Added support for checking against static protocols</li> <li>Fixed some compatibility problems when running on Python 3.13 (<code>[#460](agronholm/typeguard#460) <https://github.com/agronholm/typeguard/issues/460></code>_; PR by <a href="https://github.com/JelleZijlstra"><code>@JelleZijlstra</code></a>)</li> <li>Fixed test suite incompatibility with pytest 8.2 (<code>[#461](agronholm/typeguard#461) <https://github.com/agronholm/typeguard/issues/461></code>_)</li> <li>Fixed pytest plugin crashing on pytest version older than v7.0.0 (even if it's just present) (<code>[#343](agronholm/typeguard#343) <https://github.com/agronholm/typeguard/issues/343></code>_)</li> </ul> <p><strong>4.2.1</strong> (2023-03-24)</p> <ul> <li>Fixed missing <code>typing_extensions</code> dependency for Python 3.12 (<code>[#444](agronholm/typeguard#444) <https://github.com/agronholm/typeguard/issues/444></code>_)</li> <li>Fixed deprecation warning in the test suite on Python 3.13 (<code>[#444](agronholm/typeguard#444) <https://github.com/agronholm/typeguard/issues/444></code>_)</li> </ul> <p><strong>4.2.0</strong> (2023-03-23)</p> <ul> <li>Added support for specifying options for the pytest plugin via pytest config files (<code>[#440](agronholm/typeguard#440) <https://github.com/agronholm/typeguard/issues/440></code>_)</li> <li>Avoid creating reference cycles when type checking unions (PR by Shantanu)</li> <li>Fixed <code>Optional[...]</code> being removed from the AST if it was located within a subscript (<code>[#442](agronholm/typeguard#442) <https://github.com/agronholm/typeguard/issues/442></code>_)</li> <li>Fixed <code>TypedDict</code> from <code>typing_extensions</code> not being recognized as one (<code>[#443](agronholm/typeguard#443) <https://github.com/agronholm/typeguard/issues/443></code>_)</li> <li>Fixed <code>typing</code> types (<code>dict[str, int]</code>, <code>List[str]</code>, etc.) not passing checks against <code>type</code> or <code>Type</code> (<code>[#432](agronholm/typeguard#432) <https://github.com/agronholm/typeguard/issues/432></code>_, PR by Yongxin Wang)</li> <li>Fixed detection of optional fields (<code>NotRequired[...]</code>) in <code>TypedDict</code> when using forward references (<code>[#424](agronholm/typeguard#424) <https://github.com/agronholm/typeguard/issues/424></code>_)</li> <li>Fixed mapping checks against Django's <code>MultiValueDict</code> (<code>[#419](agronholm/typeguard#419) <https://github.com/agronholm/typeguard/issues/419></code>_)</li> </ul> <p><strong>4.1.5</strong> (2023-09-11)</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/agronholm/typeguard/commit/efa1166c85be9a1280090fea9c287b5e4e9f3830"><code>efa1166</code></a> Added release date</li> <li><a href="https://github.com/agronholm/typeguard/commit/b72794dffe403254881ac0c327155357c43ccebf"><code>b72794d</code></a> Added proper Protocol method signature checking (<a href="https://redirect.github.com/agronholm/typeguard/issues/496">#496</a>)</li> <li><a href="https://github.com/agronholm/typeguard/commit/afad2c7b6be830900776922bb39f9346c2e77f6f"><code>afad2c7</code></a> Sorted the Ruff rules alphabetically</li> <li><a href="https://github.com/agronholm/typeguard/commit/d812f2eba9f5e898544eb4b3e597f8c38b0952e8"><code>d812f2e</code></a> Migrated to native tox TOML configuration</li> <li><a href="https://github.com/agronholm/typeguard/commit/0c50de6144d99eedb402a8e85eb8187098f8c26f"><code>0c50de6</code></a> Declared Python 3.13 support</li> <li><a href="https://github.com/agronholm/typeguard/commit/cf25d56dc0dbf6bb2f51ea29da8436b368ed4857"><code>cf25d56</code></a> Fixed annotation for typeguard_ignore() to match one for typing.no_type_check...</li> <li><a href="https://github.com/agronholm/typeguard/commit/604b08d5ba7c1b6e3d2f2ddd50dcf020f7e2794a"><code>604b08d</code></a> Use get_protocol_members in protocol checking (<a href="https://redirect.github.com/agronholm/typeguard/issues/490">#490</a>)</li> <li><a href="https://github.com/agronholm/typeguard/commit/c72b6752b7069d695898ea29abb2a31983c1bf80"><code>c72b675</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://redirect.github.com/agronholm/typeguard/issues/471">#471</a>)</li> <li><a href="https://github.com/agronholm/typeguard/commit/ac7ac342a61db284872430c95d5e6ed7a035b7c0"><code>ac7ac34</code></a> Fixed the documentation build</li> <li><a href="https://github.com/agronholm/typeguard/commit/2c035b306996f742705da66ef64a052e715a94e2"><code>2c035b3</code></a> Assume that typing_extensions is always installed (<a href="https://redirect.github.com/agronholm/typeguard/issues/487">#487</a>)</li> <li>Additional commits viewable in <a href="https://github.com/agronholm/typeguard/compare/4.3.0...4.4.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typeguard&package-manager=pip&previous-version=4.3.0&new-version=4.4.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Bumps [typeguard](https://github.com/agronholm/typeguard) from 4.4.0 to 4.4.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/agronholm/typeguard/releases">typeguard's releases</a>.</em></p> <blockquote> <h2>4.4.1</h2> <ul> <li>Dropped Python 3.8 support</li> <li>Changed the signature of <code>typeguard_ignore()</code> to be compatible with <code>typing.no_type_check()</code> (PR by <a href="https://github.com/jolaf"><code>@jolaf</code></a>)</li> <li>Avoid creating reference cycles when type checking uniontypes and classes</li> <li>Fixed checking of variable assignments involving tuple unpacking (<a href="https://redirect.github.com/agronholm/typeguard/issues/486">#486</a>)</li> <li>Fixed <code>TypeError</code> when checking a class against <code>type[Self]</code> (<a href="https://redirect.github.com/agronholm/typeguard/issues/481">#481</a>)</li> <li>Fixed checking of protocols on the class level (against <code>type[SomeProtocol]</code>) (<a href="https://redirect.github.com/agronholm/typeguard/issues/498">#498</a>)</li> <li>Fixed <code>Self</code> checks in instance/class methods that have positional-only arguments</li> <li>Fixed explicit checks of PEP 604 unions against <code>types.UnionType</code> (<a href="https://redirect.github.com/agronholm/typeguard/issues/467">#467</a>)</li> <li>Fixed checks against annotations wrapped in <code>NotRequired</code> not being run unless the <code>NotRequired</code> is a forward reference (<a href="https://redirect.github.com/agronholm/typeguard/issues/454">#454</a>)</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/agronholm/typeguard/blob/master/docs/versionhistory.rst">typeguard's changelog</a>.</em></p> <blockquote> <h1>Version history</h1> <p>This library adheres to <code>Semantic Versioning 2.0 <https://semver.org/#semantic-versioning-200></code>_.</p> <p><strong>4.4.1</strong> (2024-11-03)</p> <ul> <li>Dropped Python 3.8 support</li> <li>Changed the signature of <code>typeguard_ignore()</code> to be compatible with <code>typing.no_type_check()</code> (PR by <a href="https://github.com/jolaf"><code>@jolaf</code></a>)</li> <li>Avoid creating reference cycles when type checking uniontypes and classes</li> <li>Fixed checking of variable assignments involving tuple unpacking (<code>[#486](agronholm/typeguard#486) <https://github.com/agronholm/typeguard/issues/486></code>_)</li> <li>Fixed <code>TypeError</code> when checking a class against <code>type[Self]</code> (<code>[#481](agronholm/typeguard#481) <https://github.com/agronholm/typeguard/issues/481></code>_)</li> <li>Fixed checking of protocols on the class level (against <code>type[SomeProtocol]</code>) (<code>[#498](agronholm/typeguard#498) <https://github.com/agronholm/typeguard/issues/498></code>_)</li> <li>Fixed <code>Self</code> checks in instance/class methods that have positional-only arguments</li> <li>Fixed explicit checks of PEP 604 unions against <code>types.UnionType</code> (<code>[#467](agronholm/typeguard#467) <https://github.com/agronholm/typeguard/issues/467></code>_)</li> <li>Fixed checks against annotations wrapped in <code>NotRequired</code> not being run unless the <code>NotRequired</code> is a forward reference (<code>[#454](agronholm/typeguard#454) <https://github.com/agronholm/typeguard/issues/454></code>_)</li> </ul> <p><strong>4.4.0</strong> (2024-10-27)</p> <ul> <li>Added proper checking for method signatures in protocol checks (<code>[#465](agronholm/typeguard#465) <https://github.com/agronholm/typeguard/pull/465></code>_)</li> <li>Fixed basic support for intersection protocols (<code>[#490](agronholm/typeguard#490) <https://github.com/agronholm/typeguard/pull/490></code>_; PR by <a href="https://github.com/antonagestam"><code>@antonagestam</code></a>)</li> <li>Fixed protocol checks running against the class of an instance and not the instance itself (this produced wrong results for non-method member checks)</li> </ul> <p><strong>4.3.0</strong> (2024-05-27)</p> <ul> <li>Added support for checking against static protocols</li> <li>Fixed some compatibility problems when running on Python 3.13 (<code>[#460](agronholm/typeguard#460) <https://github.com/agronholm/typeguard/issues/460></code>_; PR by <a href="https://github.com/JelleZijlstra"><code>@JelleZijlstra</code></a>)</li> <li>Fixed test suite incompatibility with pytest 8.2 (<code>[#461](agronholm/typeguard#461) <https://github.com/agronholm/typeguard/issues/461></code>_)</li> <li>Fixed pytest plugin crashing on pytest version older than v7.0.0 (even if it's just present) (<code>[#343](agronholm/typeguard#343) <https://github.com/agronholm/typeguard/issues/343></code>_)</li> </ul> <p><strong>4.2.1</strong> (2023-03-24)</p> <ul> <li>Fixed missing <code>typing_extensions</code> dependency for Python 3.12 (<code>[#444](agronholm/typeguard#444) <https://github.com/agronholm/typeguard/issues/444></code>_)</li> <li>Fixed deprecation warning in the test suite on Python 3.13 (<code>[#444](agronholm/typeguard#444) <https://github.com/agronholm/typeguard/issues/444></code>_)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/agronholm/typeguard/commit/cb42103a35abdfce2737d4eb58ed3d0e7f067b4a"><code>cb42103</code></a> Added release date</li> <li><a href="https://github.com/agronholm/typeguard/commit/b32af0bffb52c0b80f2c781656fb67ae1de87947"><code>b32af0b</code></a> Added tests against an empty protocol</li> <li><a href="https://github.com/agronholm/typeguard/commit/1c53caac1c98e33b113463149c01d835730a814f"><code>1c53caa</code></a> Fixed <code>pytest_ignore_collect</code> not to block default pytest code (<a href="https://redirect.github.com/agronholm/typeguard/issues/464">#464</a>)</li> <li><a href="https://github.com/agronholm/typeguard/commit/6d6b4de9940071eacbd83430b3d42207a2ac49ff"><code>6d6b4de</code></a> Fixed test_raw_uniontype_fail failing on PyPy</li> <li><a href="https://github.com/agronholm/typeguard/commit/05a677213cd6cc1f6efac4bc5ed1efcbba67da39"><code>05a6772</code></a> Fixed checks being skipped for non-forward-reference NotRequired</li> <li><a href="https://github.com/agronholm/typeguard/commit/7ff5a51d368b6d23d73c11f8f6da8d64b0c55f3a"><code>7ff5a51</code></a> Fixed issue links in the changelog</li> <li><a href="https://github.com/agronholm/typeguard/commit/b0b20c217331e299c20ab743fbb3dfa4c5eef257"><code>b0b20c2</code></a> Fixed explicit checks of PEP 604 unions against <code>types.UnionType</code></li> <li><a href="https://github.com/agronholm/typeguard/commit/0a3983039b6f8e0228ba39cb3c682c565ade19d8"><code>0a39830</code></a> Fixed <code>Self</code> checks when a method has positional-only arguments</li> <li><a href="https://github.com/agronholm/typeguard/commit/eb1e869e2c650db3d1f60a052f1426b52d3fb3cf"><code>eb1e869</code></a> Fixed reference cycles (<a href="https://redirect.github.com/agronholm/typeguard/issues/493">#493</a>)</li> <li><a href="https://github.com/agronholm/typeguard/commit/28dafeca1b39b8c19217ce09536e349c94734fa8"><code>28dafec</code></a> Fixed checking of protocols on the class level</li> <li>Additional commits viewable in <a href="https://github.com/agronholm/typeguard/compare/4.4.0...4.4.1">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=typeguard&package-manager=pip&previous-version=4.4.0&new-version=4.4.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Things to check first
I have searched the existing issues and didn't find my bug already reported there
I have checked that my bug is still present in the latest release
Typeguard version
4.3.0
Python version
3.12
What happened?
The below example should pass checking, but instead gives:
How can we reproduce the bug?
The text was updated successfully, but these errors were encountered: