Skip to content
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

Closed
2 tasks done
comex opened this issue May 29, 2024 · 20 comments · Fixed by #496
Closed
2 tasks done

Incorrect checking of protocol methods with **kwargs but no *args #465

comex opened this issue May 29, 2024 · 20 comments · Fixed by #496
Labels

Comments

@comex
Copy link

comex commented May 29, 2024

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:

Traceback (most recent call last):
  File "/Users/comex/src/typeguard/test.py", line 12, in <module>
    check_type(C(), P)
  File "/Users/comex/src/typeguard/src/typeguard/_functions.py", line 106, in check_type
    check_type_internal(value, expected_type, memo)
  File "/Users/comex/src/typeguard/src/typeguard/_checkers.py", line 861, in check_type_internal
    checker(value, origin_type, args, memo)
  File "/Users/comex/src/typeguard/src/typeguard/_checkers.py", line 729, in check_protocol
    raise TypeCheckError(
typeguard.TypeCheckError: __main__.C is not compatible with the P protocol because its 'foo' method has too few arguments in its declaration; expected 2 but 1 argument(s) declared

How can we reproduce the bug?

from typeguard import check_type
from typing import Protocol

class P(Protocol):
    def foo(self, **kwargs):
        ...

class C:
    def foo(self, **kwargs):
        pass

check_type(C(), P)
@comex comex added the bug label May 29, 2024
@agronholm
Copy link
Owner

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.

@jace
Copy link

jace commented May 31, 2024

The new protocol check implementation also doesn't work with callback protocols because it checks against the type. This fails with typeguard.TypeCheckError: function is not compatible with the MyProtocol protocol because it has no attribute named '__weakref__'

@agronholm
Copy link
Owner

The new protocol check implementation also doesn't work with callback protocols because it checks against the type. This fails with typeguard.TypeCheckError: function is not compatible with the MyProtocol protocol because it has no attribute named '__weakref__'

Would you mind writing an example for me so I could make sure it works in the next release?

@jkulhanek
Copy link

Having the same issue.

@agronholm
Copy link
Owner

Having the same issue.

Then you can just subscribe to the issue instead of pinging everyone.

@jkulhanek
Copy link

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.

@bersbersbers
Copy link

Would you mind writing an example for me so I could make sure it works in the next release?

I have one.

test_bug.py:

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 pytest -s to see that the code works and pytest --typeguard-packages=test_bug for the failure:

================================================================================= test session starts =================================================================================
platform win32 -- Python 3.12.3, pytest-8.2.1, pluggy-1.5.0
PySide6 6.7.1 -- Qt runtime 6.7.1 -- Qt compiled 6.7.1
rootdir: C:\Code\Bug
plugins: pylama-8.4.1, cov-5.0.0, order-1.2.1, qt-4.4.0, typeguard-4.3.0
collected 1 item

test_bug.py E                                                                                                                                                                    [100%]

======================================================================================= ERRORS ======================================================================================== 
_____________________________________________________________________________ ERROR at setup of test_bug ______________________________________________________________________________ 

    @pytest.fixture(name="callable_fixture")
    def make_callable_fixture() -> CallableFixture:
        def callable_fixture() -> None:
            print("Works!")

>       return callable_fixture

test_bug.py:13:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
C:\Code\.venv\Lib\site-packages\typeguard\_functions.py:165: in check_return_type
    check_type_internal(retval, annotation, memo)
C:\Code\.venv\Lib\site-packages\typeguard\_checkers.py:861: in check_type_internal
    checker(value, origin_type, args, memo)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

[...]

            # Check that all required non-callable members are present
            for attrname in expected_noncallable_members:
                # TODO: implement assignability checks for non-callable members
                if attrname not in subject_annotations and not hasattr(subject, attrname):
>                   raise TypeCheckError(
                        f"is not compatible with the {origin_type.__qualname__} protocol "
                        f"because it has no attribute named {attrname!r}"
                    )
E                   typeguard.TypeCheckError: the return value (function) is not compatible with the CallableFixture protocol because it has no attribute named '__weakref__'

C:\Code\.venv\Lib\site-packages\typeguard\_checkers.py:738: TypeCheckError
=============================================================================== short test summary info ===============================================================================     
ERROR test_bug.py::test_bug - typeguard.TypeCheckError: the return value (function) is not compatible with the CallableFixture protocol because it has no attribute named '__weakref__'     
================================================================================== 1 error in 0.35s ===================================================================================     

I guess this can be simplified to work without pytest, but this is what I hit in 4.3.0 and what makes me pin typeguard<4.3.0 for now (despite looking forward to the fix of #457).

@agronholm
Copy link
Owner

I'm already writing improved compatibility tests involving *args and **kwargs, and the fix will be in the next patch release.

@bersbersbers
Copy link

I'm already writing improved compatibility tests involving *args and **kwargs, and the fix will be in the next patch release.

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).

@jace
Copy link

jace commented Jun 3, 2024

The new protocol check implementation also doesn't work with callback protocols because it checks against the type. This fails with typeguard.TypeCheckError: function is not compatible with the MyProtocol protocol because it has no attribute named '__weakref__'

I tried putting __weakref__ in the list of ignored attributes, but that is insufficient. Example:

class GetUserProtocol(Protocol):
    usermap: dict[str, str]
    def __call__(self, user: str) -> models.User: ...

@pytest.fixture
def getuser(request: pytest.FixtureRequest) -> GetUserProtocol:
    """Get a user fixture by their name (for descriptive names in behaviour tests)."""
    usermap = {"Twoflower": 'user_twoflower', "Rincewind": 'user_rincewind'}

    def func(user: str) -> models.User:
        if user not in usermap:
            pytest.fail(f"No user fixture named {user}")
        return request.getfixturevalue(usermap[user])

    func = cast(GetUserProtocol, func)
    func.usermap = usermap
    return func

This will fail because function's type has no attribute named usermap.

@agronholm
Copy link
Owner

I will take all this into account in the tests going forward.

@bersbersbers
Copy link

I tried putting __weakref__ in the list of ignored attributes

That helps my use cases, thank you!

@bersbersbers
Copy link

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.

@bersbersbers

This comment has been minimized.

@agronholm
Copy link
Owner

That's not expected to work to begin with, as @typeguard_ignore is only supposed to be used on functions where you wish to skip type checking. Latching it to things you don't want to check against has never worked.

@bersbersbers
Copy link

Alright, thanks! This is my workaround for CI right now:

__init__.py

import typeguard._checkers as checkers  # noqa:PLC2701
from funcy import constantly

checkers.check_protocol = constantly(None)  # agronholm/typeguard#465

@antonagestam
Copy link
Contributor

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:

Traceback (most recent call last):
  File "/Users/annevoab/projects/phantom-types/tc-repro.py", line 17, in <module>
    typeguard.check_type(
  File "/Users/annevoab/.pyenv/versions/phantom-types/lib/python3.12/site-packages/typeguard/_functions.py", line 106, in check_type
    check_type_internal(value, expected_type, memo)
  File "/Users/annevoab/.pyenv/versions/phantom-types/lib/python3.12/site-packages/typeguard/_checkers.py", line 861, in check_type_internal
    checker(value, origin_type, args, memo)
  File "/Users/annevoab/.pyenv/versions/phantom-types/lib/python3.12/site-packages/typeguard/_checkers.py", line 738, in check_protocol
    raise TypeCheckError(
typeguard.TypeCheckError: tuple is not compatible with the SizedIterable protocol because it has no attribute named '__orig_bases__'

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.

@agronholm
Copy link
Owner

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.

@antonagestam
Copy link
Contributor

@agronholm Thanks for the continued work on improving this library 💪

@agronholm
Copy link
Owner

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.

mergify bot pushed a commit to aws/jsii that referenced this issue Oct 28, 2024
….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 &lt;https://semver.org/#semantic-versioning-200&gt;</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) &lt;https://github.com/agronholm/typeguard/pull/465&gt;</code>_)</li>
<li>Fixed basic support for intersection protocols
(<code>[#490](agronholm/typeguard#490) &lt;https://github.com/agronholm/typeguard/pull/490&gt;</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) &lt;https://github.com/agronholm/typeguard/issues/460&gt;</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) &lt;https://github.com/agronholm/typeguard/issues/461&gt;</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) &lt;https://github.com/agronholm/typeguard/issues/343&gt;</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) &lt;https://github.com/agronholm/typeguard/issues/444&gt;</code>_)</li>
<li>Fixed deprecation warning in the test suite on Python 3.13
(<code>[#444](agronholm/typeguard#444) &lt;https://github.com/agronholm/typeguard/issues/444&gt;</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) &lt;https://github.com/agronholm/typeguard/issues/440&gt;</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) &lt;https://github.com/agronholm/typeguard/issues/442&gt;</code>_)</li>
<li>Fixed <code>TypedDict</code> from <code>typing_extensions</code> not being recognized as one
(<code>[#443](agronholm/typeguard#443) &lt;https://github.com/agronholm/typeguard/issues/443&gt;</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) &lt;https://github.com/agronholm/typeguard/issues/432&gt;</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) &lt;https://github.com/agronholm/typeguard/issues/424&gt;</code>_)</li>
<li>Fixed mapping checks against Django's <code>MultiValueDict</code>
(<code>[#419](agronholm/typeguard#419) &lt;https://github.com/agronholm/typeguard/issues/419&gt;</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>
github-actions bot added a commit to Jij-Inc/Playground that referenced this issue Oct 28, 2024
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
&lt;https://semver.org/#semantic-versioning-200&gt;</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)
&lt;https://github.com/agronholm/typeguard/pull/465&gt;</code>_)</li>
<li>Fixed basic support for intersection protocols
(<code>[#490](agronholm/typeguard#490)
&lt;https://github.com/agronholm/typeguard/pull/490&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/460&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/461&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/343&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/444&gt;</code>_)</li>
<li>Fixed deprecation warning in the test suite on Python 3.13
(<code>[#444](agronholm/typeguard#444)
&lt;https://github.com/agronholm/typeguard/issues/444&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/440&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/442&gt;</code>_)</li>
<li>Fixed <code>TypedDict</code> from <code>typing_extensions</code> not
being recognized as one
(<code>[#443](agronholm/typeguard#443)
&lt;https://github.com/agronholm/typeguard/issues/443&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/432&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/424&gt;</code>_)</li>
<li>Fixed mapping checks against Django's <code>MultiValueDict</code>
(<code>[#419](agronholm/typeguard#419)
&lt;https://github.com/agronholm/typeguard/issues/419&gt;</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>
kai687 added a commit to kai687/sphinxawesome-codelinter that referenced this issue Oct 28, 2024
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
&lt;https://semver.org/#semantic-versioning-200&gt;</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)
&lt;https://github.com/agronholm/typeguard/pull/465&gt;</code>_)</li>
<li>Fixed basic support for intersection protocols
(<code>[#490](agronholm/typeguard#490)
&lt;https://github.com/agronholm/typeguard/pull/490&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/460&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/461&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/343&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/444&gt;</code>_)</li>
<li>Fixed deprecation warning in the test suite on Python 3.13
(<code>[#444](agronholm/typeguard#444)
&lt;https://github.com/agronholm/typeguard/issues/444&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/440&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/442&gt;</code>_)</li>
<li>Fixed <code>TypedDict</code> from <code>typing_extensions</code> not
being recognized as one
(<code>[#443](agronholm/typeguard#443)
&lt;https://github.com/agronholm/typeguard/issues/443&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/432&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/424&gt;</code>_)</li>
<li>Fixed mapping checks against Django's <code>MultiValueDict</code>
(<code>[#419](agronholm/typeguard#419)
&lt;https://github.com/agronholm/typeguard/issues/419&gt;</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>
github-actions bot added a commit to Jij-Inc/Playground that referenced this issue Nov 4, 2024
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
&lt;https://semver.org/#semantic-versioning-200&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/486&gt;</code>_)</li>
<li>Fixed <code>TypeError</code> when checking a class against
<code>type[Self]</code>
(<code>[#481](agronholm/typeguard#481)
&lt;https://github.com/agronholm/typeguard/issues/481&gt;</code>_)</li>
<li>Fixed checking of protocols on the class level (against
<code>type[SomeProtocol]</code>)
(<code>[#498](agronholm/typeguard#498)
&lt;https://github.com/agronholm/typeguard/issues/498&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/467&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/454&gt;</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)
&lt;https://github.com/agronholm/typeguard/pull/465&gt;</code>_)</li>
<li>Fixed basic support for intersection protocols
(<code>[#490](agronholm/typeguard#490)
&lt;https://github.com/agronholm/typeguard/pull/490&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/460&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/461&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/343&gt;</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)
&lt;https://github.com/agronholm/typeguard/issues/444&gt;</code>_)</li>
<li>Fixed deprecation warning in the test suite on Python 3.13
(<code>[#444](agronholm/typeguard#444)
&lt;https://github.com/agronholm/typeguard/issues/444&gt;</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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants