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

Running twine tests in dev environment fail and emit PyPI tokens #1121

Closed
1 task done
jaraco opened this issue Jun 24, 2024 · 8 comments · Fixed by #1131 or #1153
Closed
1 task done

Running twine tests in dev environment fail and emit PyPI tokens #1121

jaraco opened this issue Jun 24, 2024 · 8 comments · Fixed by #1131 or #1153
Assignees
Labels
bug testing Test frameworks, tests, etc.

Comments

@jaraco
Copy link
Member

jaraco commented Jun 24, 2024

Is there an existing issue for this?

  • I have searched the existing issues (open and closed), and could not find an existing issue

What keywords did you use to search existing issues?

tests isolation

Please describe why your using this option

Running tox in a clean checkout of twine produces 5 failures:

FAILED tests/test_package.py::test_pkginfo_returns_no_metadata[unsupported Metadata-Version] - Failed: DID NOT RAISE <class 'twine.exceptions.InvalidDistribution'>
FAILED tests/test_settings.py::test_password_is_required_if_no_client_cert[None] - AssertionError: assert 'pypi-AgEIcHl...<elided>' == 'entered pw'
FAILED tests/test_settings.py::test_password_is_required_if_no_client_cert[] - AssertionError: assert 'pypi-AgEIcHl...<elided> == 'entered pw'
FAILED tests/test_settings.py::test_password_required_if_no_client_cert_and_non_interactive - Failed: DID NOT RAISE <class 'twine.exceptions.NonInteractive'>
FAILED tests/test_settings.py::test_no_password_prompt_if_client_cert_and_non_interactive - AssertionError: assert not 'pypi-AgEIcHl<elided>...

It appears as if the presence of credentials in my keyring is causing tests to fail (and emit my credentials).

Anything else you'd like to mention?

No response

@jaraco
Copy link
Member Author

jaraco commented Jun 24, 2024

Running the tests on 4.0.2 produces a mostly different set of failures, seemingly related to build backend issues. Beginning with 5.0.0, the current set of failures is observed.

@jaraco jaraco added bug testing Test frameworks, tests, etc. and removed enhancement feature request labels Jun 24, 2024
@sigmavirus24
Copy link
Member

sigmavirus24 commented Jun 25, 2024

Integration tests broke nearly as soon as you added them over a year ago, but I knew you'd complain if I removed them and you didn't notice any of the pings. Brian ignored them before me and since they very occasionally pass, I've left them.

Master is failing now because Tres released an API breaking change in a minor version of pkginfo. I just haven't had time to fix it.

Edit Just realized this was a different issue you opened from the one about master tests being broken.

@jaraco
Copy link
Member Author

jaraco commented Jun 25, 2024

Master is failing now because Tres released an API breaking change in a minor version of pkginfo. I just haven't had time to fix it.

There appear to be two failure modes here. The first is in test_pkginfo_returns_no_metadata, which also fails in an environment without my credentials. That's probably the issue with pkginfo. It was reported in #1116. Let's disregard that one for the sake of this issue, which is about the other failures which happen in my dev environment due to the presence of my PyPI credentials.

@jaraco
Copy link
Member Author

jaraco commented Jun 25, 2024

It looks like when 2afda47 was introduced (#1040), it supersedes the username="fakeuser" in the tests, allowing keyring to resolve the user's PyPI token instead of the entered_password.

@jaraco
Copy link
Member Author

jaraco commented Jun 25, 2024

I'm unsure the best way forward here. An easy fix might be to disable keyring in tests - mock it out so it always behaves as if there's no password. Another option could be to make __token__ the default username when accessing PyPI or TestPyPI, but have it honor the specified username if supplied. @woodruffw do you have an opinion on the matter?

@woodruffw
Copy link
Member

Another option could be to make __token__ the default username when accessing PyPI or TestPyPI, but have it honor the specified username if supplied. @woodruffw do you have an opinion on the matter?

No strong opinion on the mocking idea, but I think this is likely to cause user confusion (since PyPI and TestPyPI will no longer accept a username at all for package upload, and will always fail hard.)

@jaraco jaraco self-assigned this Jun 25, 2024
jaraco added a commit that referenced this issue Jun 25, 2024
@jaraco
Copy link
Member Author

jaraco commented Jun 25, 2024

@sigmavirus24 or @bhrutledge : Do you have an opinion on how to deal with this scenario?

In ddd4ecb, I've drafted "token" as default if unspecified. It addresses the issue, but creates four new test failures (exactly the concern woodruffw raised):

FAILED tests/test_register.py::test_values_from_env_pypi[pypi] - AssertionError: assert '__token__' == 'this-is-ignored'
FAILED tests/test_register.py::test_values_from_env_pypi[testpypi] - AssertionError: assert '__token__' == 'this-is-ignored'
FAILED tests/test_upload.py::test_values_from_env_pypi[pypi] - AssertionError: assert '__token__' == 'this-is-ignored'
FAILED tests/test_upload.py::test_values_from_env_pypi[testpypi] - AssertionError: assert '__token__' == 'this-is-ignored'

It would be a breaking change to drop that expectation, but it feels like the cleanest approach. It also means that users have more control over their environment, but it means that those reliant on the current hard-coded behavior will need to remove any configured username to retain compatibility. Honestly, that feels best to me because the current approach is masking an unused configuration. It feels wrong for a user (or test) to be explicitly supplying a configuration but it's silently suppressed.

I'm also trying to avoid test-only behaviors. I'd like for the tests to exercise the system as closely as possible to how it operates in production, but since it's not possible to override the username or otherwise select a non-default username, the tests are hitting real credentials. It feels like the current design, overriding with a username="fakeuser" is the most genuine way to avoid hitting real credentials.

jaraco added a commit that referenced this issue Jun 25, 2024
@jaraco
Copy link
Member Author

jaraco commented Jun 25, 2024

In 2c4e4a1, I've committed the changes that allow the tests to pass. Interestingly, not all of 4a2dfb0 had to be reverted. The fixtures in test_settings still retain the behavior that __token__ takes precedence (because the default value takes precedence over config), so only users setting TWINE_USERNAME or specifying the username on the command line will see a change in behavior.

@jaraco jaraco changed the title Running twine tests in dev environment leads to workflow failures Running twine tests in dev environment fail and emit PyPI tokens Jun 26, 2024
jaraco added a commit that referenced this issue Jun 26, 2024
jaraco added a commit that referenced this issue Jun 26, 2024
stefanor added a commit to stefanor/twine that referenced this issue Sep 25, 2024
github-actions bot pushed a commit to Hochfrequenz/python-generics that referenced this issue Dec 2, 2024
Bumps [twine](https://github.com/pypa/twine) from 5.1.1 to 6.0.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/twine/blob/main/docs/changelog.rst">twine's
changelog</a>.</em></p>
<blockquote>
<h2>Twine 6.0.1 (2024-11-30)</h2>
<p>Bugfixes
^^^^^^^^</p>
<ul>
<li>Fixed a regression where <code>twine check</code> would fail to
expand
wildcards, e.g. <code>twine check 'dist/*'</code>.
(<code>[#1188](pypa/twine#1188)
&lt;https://github.com/pypa/twine/issues/1188&gt;</code>_)</li>
</ul>
<p>Misc
^^^^</p>
<ul>
<li><code>[#1184](pypa/twine#1184)
&lt;https://github.com/pypa/twine/issues/1184&gt;</code>_</li>
</ul>
<h2>Twine 6.0.0 (2024-11-29)</h2>
<p>Bugfixes
^^^^^^^^</p>
<ul>
<li>Restore support for pkginfo 1.11
(<code>[#1116](pypa/twine#1116)
&lt;https://github.com/pypa/twine/issues/1116&gt;</code>_)</li>
</ul>
<p>Deprecations and Removals
^^^^^^^^^^^^^^^^^^^^^^^^^</p>
<ul>
<li>Username for PyPI and Test PyPI now defaults to
<strong>token</strong> but no longer overrides a username configured in
the environment or supplied on the command line. Workflows still
supplying anything other than <strong>token</strong> for the username
when uploading to PyPI or Test PyPI will now fail. Either supply
<strong>token</strong> or do not supply a username at all.
(<code>[#1121](pypa/twine#1121)
&lt;https://github.com/pypa/twine/issues/1121&gt;</code>_)</li>
</ul>
<p>Misc
^^^^</p>
<ul>
<li><code>[#1024](pypa/twine#1024)
&lt;https://github.com/pypa/twine/issues/1024&gt;</code>_</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/twine/commit/a723876fd4398be57838873e60867566b6220a53"><code>a723876</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/twine/issues/1189">#1189</a> from
pypa/release-6.0.1</li>
<li><a
href="https://github.com/pypa/twine/commit/9a24828cbded183d02d0b3f5a8af41b7764dda98"><code>9a24828</code></a>
Update changelog for 6.0.1</li>
<li><a
href="https://github.com/pypa/twine/commit/a0170058016cb7ed9554ef648a48c1899917d255"><code>a017005</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/twine/issues/1188">#1188</a> from
pypa/ww/fix-twine-check-glob</li>
<li><a
href="https://github.com/pypa/twine/commit/e98f03bb0932e364065f827f804806bacccc436d"><code>e98f03b</code></a>
check: fix handling of non-shell-expanded globs</li>
<li><a
href="https://github.com/pypa/twine/commit/873f33ed40bb38407a87abba6cd2a65f35eb6286"><code>873f33e</code></a>
build(deps): bump pypa/gh-action-pypi-publish from 1.11.0 to 1.12.2 (<a
href="https://redirect.github.com/pypa/twine/issues/1175">#1175</a>)</li>
<li><a
href="https://github.com/pypa/twine/commit/067412e84cfdd39929d838075ef8fa3d2cb0d733"><code>067412e</code></a>
Use brackets for the default value of option arguments (<a
href="https://redirect.github.com/pypa/twine/issues/1149">#1149</a>)</li>
<li><a
href="https://github.com/pypa/twine/commit/f32dc3545b52389dac0cbd28059833d48c36b4f4"><code>f32dc35</code></a>
Apply ruff/Perflint rule (<a
href="https://redirect.github.com/pypa/twine/issues/1136">#1136</a>)</li>
<li><a
href="https://github.com/pypa/twine/commit/aa58273f52afab52d3dd00b2c6cf3b472c6ee20d"><code>aa58273</code></a>
Don't require importlib_metadata on Python 3.10+</li>
<li><a
href="https://github.com/pypa/twine/commit/675565f35c6d0adc435c9da6cb123f41dcaeffb8"><code>675565f</code></a>
changelog: record <a
href="https://redirect.github.com/pypa/twine/issues/1184">#1184</a></li>
<li><a
href="https://github.com/pypa/twine/commit/80cc58c0ddbd68b107c4709be5072f3e309b843c"><code>80cc58c</code></a>
chore: mark 3.13 as explicitly supported</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/twine/compare/v5.1.1...6.0.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=twine&package-manager=pip&previous-version=5.1.1&new-version=6.0.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>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ms-lolo pushed a commit to microsoft/rats that referenced this issue Dec 11, 2024
…ols with 6 updates (#399)

Bumps the package-dependencies group in /rats-devtools with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [twine](https://github.com/pypa/twine) | `5.1.1` | `6.0.1` |
| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) |
`9.5.46` | `9.5.48` |
| [coverage](https://github.com/nedbat/coveragepy) | `7.6.8` | `7.6.9` |
| [pyright](https://github.com/RobertCraigie/pyright-python) | `1.1.389`
| `1.1.390` |
| [pytest](https://github.com/pytest-dev/pytest) | `8.3.3` | `8.3.4` |
| [ruff](https://github.com/astral-sh/ruff) | `0.8.0` | `0.8.2` |

Updates `twine` from 5.1.1 to 6.0.1
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/twine/blob/main/docs/changelog.rst">twine's
changelog</a>.</em></p>
<blockquote>
<h2>Twine 6.0.1 (2024-11-30)</h2>
<p>Bugfixes
^^^^^^^^</p>
<ul>
<li>Fixed a regression where <code>twine check</code> would fail to
expand
wildcards, e.g. <code>twine check 'dist/*'</code>.
(<code>[#1188](pypa/twine#1188)
&lt;https://github.com/pypa/twine/issues/1188&gt;</code>_)</li>
</ul>
<p>Misc
^^^^</p>
<ul>
<li><code>[#1184](pypa/twine#1184)
&lt;https://github.com/pypa/twine/issues/1184&gt;</code>_</li>
</ul>
<h2>Twine 6.0.0 (2024-11-29)</h2>
<p>Bugfixes
^^^^^^^^</p>
<ul>
<li>Restore support for pkginfo 1.11
(<code>[#1116](pypa/twine#1116)
&lt;https://github.com/pypa/twine/issues/1116&gt;</code>_)</li>
</ul>
<p>Deprecations and Removals
^^^^^^^^^^^^^^^^^^^^^^^^^</p>
<ul>
<li>Username for PyPI and Test PyPI now defaults to
<strong>token</strong> but no longer overrides a username configured in
the environment or supplied on the command line. Workflows still
supplying anything other than <strong>token</strong> for the username
when uploading to PyPI or Test PyPI will now fail. Either supply
<strong>token</strong> or do not supply a username at all.
(<code>[#1121](pypa/twine#1121)
&lt;https://github.com/pypa/twine/issues/1121&gt;</code>_)</li>
</ul>
<p>Misc
^^^^</p>
<ul>
<li><code>[#1024](pypa/twine#1024)
&lt;https://github.com/pypa/twine/issues/1024&gt;</code>_</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/twine/commit/a723876fd4398be57838873e60867566b6220a53"><code>a723876</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/twine/issues/1189">#1189</a> from
pypa/release-6.0.1</li>
<li><a
href="https://github.com/pypa/twine/commit/9a24828cbded183d02d0b3f5a8af41b7764dda98"><code>9a24828</code></a>
Update changelog for 6.0.1</li>
<li><a
href="https://github.com/pypa/twine/commit/a0170058016cb7ed9554ef648a48c1899917d255"><code>a017005</code></a>
Merge pull request <a
href="https://redirect.github.com/pypa/twine/issues/1188">#1188</a> from
pypa/ww/fix-twine-check-glob</li>
<li><a
href="https://github.com/pypa/twine/commit/e98f03bb0932e364065f827f804806bacccc436d"><code>e98f03b</code></a>
check: fix handling of non-shell-expanded globs</li>
<li><a
href="https://github.com/pypa/twine/commit/873f33ed40bb38407a87abba6cd2a65f35eb6286"><code>873f33e</code></a>
build(deps): bump pypa/gh-action-pypi-publish from 1.11.0 to 1.12.2 (<a
href="https://redirect.github.com/pypa/twine/issues/1175">#1175</a>)</li>
<li><a
href="https://github.com/pypa/twine/commit/067412e84cfdd39929d838075ef8fa3d2cb0d733"><code>067412e</code></a>
Use brackets for the default value of option arguments (<a
href="https://redirect.github.com/pypa/twine/issues/1149">#1149</a>)</li>
<li><a
href="https://github.com/pypa/twine/commit/f32dc3545b52389dac0cbd28059833d48c36b4f4"><code>f32dc35</code></a>
Apply ruff/Perflint rule (<a
href="https://redirect.github.com/pypa/twine/issues/1136">#1136</a>)</li>
<li><a
href="https://github.com/pypa/twine/commit/aa58273f52afab52d3dd00b2c6cf3b472c6ee20d"><code>aa58273</code></a>
Don't require importlib_metadata on Python 3.10+</li>
<li><a
href="https://github.com/pypa/twine/commit/675565f35c6d0adc435c9da6cb123f41dcaeffb8"><code>675565f</code></a>
changelog: record <a
href="https://redirect.github.com/pypa/twine/issues/1184">#1184</a></li>
<li><a
href="https://github.com/pypa/twine/commit/80cc58c0ddbd68b107c4709be5072f3e309b843c"><code>80cc58c</code></a>
chore: mark 3.13 as explicitly supported</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/twine/compare/v5.1.1...6.0.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `mkdocs-material` from 9.5.46 to 9.5.48
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/squidfunk/mkdocs-material/releases">mkdocs-material's
releases</a>.</em></p>
<blockquote>
<h2>mkdocs-material-9.5.48</h2>
<ul>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7774">#7774</a>:
Disabling social cards doesn't work</li>
</ul>
<h2>mkdocs-material-9.5.47</h2>
<ul>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7750">#7750</a>:
Numeric tags break search</li>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7748">#7748</a>:
Blog plugin breaks when using future drafts (9.5.45 regression)</li>
</ul>
<p>Thanks go to <a
href="https://github.com/perpil"><code>@​perpil</code></a> for their
contributions</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG">mkdocs-material's
changelog</a>.</em></p>
<blockquote>
<p>mkdocs-material-9.5.48 (2024-12-08)</p>
<ul>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7774">#7774</a>:
Disabling social cards doesn't work</li>
</ul>
<p>mkdocs-material-9.5.47 (2024-12-01)</p>
<ul>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7750">#7750</a>:
Numeric tags break search</li>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7748">#7748</a>:
Blog plugin breaks when using future drafts (9.5.45 regression)</li>
</ul>
<p>mkdocs-material-9.5.46 (2024-11-25)</p>
<ul>
<li>Added support for removing preload hints in privacy plugin</li>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7734">#7734</a>:
Code blocks in h5 headlines are uppercased</li>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7725">#7725</a>:
Blog plugin crashing on missing timezone (9.5.45 regression)</li>
</ul>
<p>mkdocs-material-9.5.45 (2024-11-20)</p>
<ul>
<li>Reduced size of Docker image through multi-stage build</li>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7708">#7708</a>:
Blog plugin crashing on YAML dates with timezones</li>
</ul>
<p>mkdocs-material-9.5.44 (2024-11-05)</p>
<ul>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7672">#7672</a>:
Font CSS 404's when using privacy plugin (9.5.43 regression)</li>
</ul>
<p>mkdocs-material-9.5.43 (2024-10-31)</p>
<ul>
<li>Added support for external images in SVGs in privacy plugin</li>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7651">#7651</a>:
Privacy plugin doesn't handle quoted URLs in CSS</li>
</ul>
<p>mkdocs-material-9.5.42 (2024-10-20)</p>
<ul>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7625">#7625</a>:
Invalid encoding of boolean attributes in privacy plugin</li>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7624">#7624</a>:
Crash when disabling privacy plugin (9.5.41 regression)</li>
</ul>
<p>mkdocs-material-9.5.41 (2024-10-15)</p>
<ul>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7619">#7619</a>:
Improved tooltip on logo disappears after instant navigation</li>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7616">#7616</a>:
Race condition in built-in privacy plugin when inlining assets</li>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7615">#7615</a>:
Comments and &quot;Was this page helpful?&quot; visible when
printing</li>
</ul>
<p>mkdocs-material-9.5.40 (2024-10-10)</p>
<ul>
<li>Updated Latvian translations</li>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7597">#7597</a>:
Social cards not using site name on home page</li>
</ul>
<p>mkdocs-material-9.5.39+insiders-4.53.14 (2024-09-29)</p>
<ul>
<li>Fixed <a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7567">#7567</a>:
Empty headlines when using typeset plugin with anchorlinks</li>
</ul>
<p>mkdocs-material-9.5.39 (2024-09-29)</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/squidfunk/mkdocs-material/commit/622bf7a6916ec11b4f8d38db40722096ab861b59"><code>622bf7a</code></a>
Prepare 9.5.48 release</li>
<li><a
href="https://github.com/squidfunk/mkdocs-material/commit/bedd3fb2c806c4f45ce9857ebf116c2f64590d0f"><code>bedd3fb</code></a>
Updated dependencies</li>
<li><a
href="https://github.com/squidfunk/mkdocs-material/commit/a7dc57c23935c0420b01b78c13d9058fc057a16f"><code>a7dc57c</code></a>
Fixed disabling of social cards</li>
<li><a
href="https://github.com/squidfunk/mkdocs-material/commit/6c796c06ecc0fb641ad302c784822139c2d3807a"><code>6c796c0</code></a>
Documentation</li>
<li><a
href="https://github.com/squidfunk/mkdocs-material/commit/eab6959d0cf9bc8755bd4a914cd43ad2073e392d"><code>eab6959</code></a>
Documentation</li>
<li><a
href="https://github.com/squidfunk/mkdocs-material/commit/8ff76b03275e4ff03f64d124cae352baeeeefb02"><code>8ff76b0</code></a>
Updated dependencies</li>
<li><a
href="https://github.com/squidfunk/mkdocs-material/commit/fbf9d02806fbc7a5a10ed158fe2840f84f9a6050"><code>fbf9d02</code></a>
Updated dependencies</li>
<li><a
href="https://github.com/squidfunk/mkdocs-material/commit/65997ae16ebe4c94c015dea968c3ec5d85a1060e"><code>65997ae</code></a>
Updated dependencies</li>
<li><a
href="https://github.com/squidfunk/mkdocs-material/commit/f6b67b1b77f6eaaeb9c359bc5666827c4a6efb16"><code>f6b67b1</code></a>
Prepare 9.5.47 release</li>
<li><a
href="https://github.com/squidfunk/mkdocs-material/commit/60c0dc1b8af71cef004eb7a91ca6ea8bae1e76cc"><code>60c0dc1</code></a>
Documentation (<a
href="https://redirect.github.com/squidfunk/mkdocs-material/issues/7756">#7756</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/squidfunk/mkdocs-material/compare/9.5.46...9.5.48">compare
view</a></li>
</ul>
</details>
<br />

Updates `coverage` from 7.6.8 to 7.6.9
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst">coverage's
changelog</a>.</em></p>
<blockquote>
<h2>Version 7.6.9 — 2024-12-06</h2>
<ul>
<li>Fix: <code>Tomas Uribe fixed &lt;pull 1901_&gt;</code>_ a
performance problem in the XML
report. Large code bases should produce XML reports much faster
now.</li>
</ul>
<p>.. _pull 1901: <a
href="https://redirect.github.com/nedbat/coveragepy/pull/1901">nedbat/coveragepy#1901</a></p>
<p>.. _changes_7-6-8:</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/nedbat/coveragepy/commit/daac76dde1681d968f37095cacc551b464888753"><code>daac76d</code></a>
docs: sample HTML for 7.6.9</li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/f7d7e42705083b8c124fcc8be64da555095adfc7"><code>f7d7e42</code></a>
docs: prep for 7.6.9</li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/8fe3b2bad5de5e750c104ad2ddb251a0500dd146"><code>8fe3b2b</code></a>
docs: thanks, Tomas Uribe for <a
href="https://redirect.github.com/nedbat/coveragepy/issues/1901">#1901</a></li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/346cfc03885571fd448f8218a8b9f12836c2fcb2"><code>346cfc0</code></a>
fix: use set instead of list for arcs_executed, fixes poor performance
(<a
href="https://redirect.github.com/nedbat/coveragepy/issues/1901">#1901</a>)</li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/484678e8d7c3b07e455e4c5bbce6f4a5bd03a9b4"><code>484678e</code></a>
fix: COVERAGE_ONE_CORE should mean ctrace if possible</li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/37451ed089cb4c5d25e2fe6c13485407d01be176"><code>37451ed</code></a>
chore: make upgrade doc_upgrade</li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/bd23445b181387b9c646d6dbf096b624bbc5953b"><code>bd23445</code></a>
chore: bump the action-dependencies group with 2 updates (<a
href="https://redirect.github.com/nedbat/coveragepy/issues/1899">#1899</a>)</li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/01cf50c7d9131af2de9aea1e3573bdff1dc48110"><code>01cf50c</code></a>
test: add a test to satisfy a condition in results.py</li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/74d3c50af1563b6cbd9ab1ef580267dc55982922"><code>74d3c50</code></a>
chore: make upgrade</li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/f3b269cc5d5f1683aba34f57c7d5b991c5dd3743"><code>f3b269c</code></a>
build: only comment once on an issue mentioned twice</li>
<li>Additional commits viewable in <a
href="https://github.com/nedbat/coveragepy/compare/7.6.8...7.6.9">compare
view</a></li>
</ul>
</details>
<br />

Updates `pyright` from 1.1.389 to 1.1.390
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/RobertCraigie/pyright-python/commit/ee025bc6947a746a7fe6d392eefb315f665b28d5"><code>ee025bc</code></a>
Pyright NPM Package update to 1.1.390 (<a
href="https://redirect.github.com/RobertCraigie/pyright-python/issues/325">#325</a>)</li>
<li>See full diff in <a
href="https://github.com/RobertCraigie/pyright-python/compare/v1.1.389...v1.1.390">compare
view</a></li>
</ul>
</details>
<br />

Updates `pytest` from 8.3.3 to 8.3.4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pytest-dev/pytest/releases">pytest's
releases</a>.</em></p>
<blockquote>
<h2>8.3.4</h2>
<h1>pytest 8.3.4 (2024-12-01)</h1>
<h2>Bug fixes</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12592">#12592</a>:
Fixed <code>KeyError</code>{.interpreted-text role=&quot;class&quot;}
crash when using <code>--import-mode=importlib</code> in a directory
layout where a directory contains a child directory with the same
name.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12818">#12818</a>:
Assertion rewriting now preserves the source ranges of the original
instructions, making it play well with tools that deal with the
<code>AST</code>, like <a
href="https://github.com/alexmojaki/executing">executing</a>.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12849">#12849</a>:
ANSI escape codes for colored output now handled correctly in
<code>pytest.fail</code>{.interpreted-text role=&quot;func&quot;} with
[pytrace=False]{.title-ref}.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/9353">#9353</a>:
<code>pytest.approx</code>{.interpreted-text role=&quot;func&quot;} now
uses strict equality when given booleans.</p>
</li>
</ul>
<h2>Improved documentation</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/10558">#10558</a>:
Fix ambiguous docstring of
<code>pytest.Config.getoption</code>{.interpreted-text
role=&quot;func&quot;}.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/10829">#10829</a>:
Improve documentation on the current handling of the
<code>--basetemp</code> option and its lack of retention functionality
(<code>temporary directory location and
retention</code>{.interpreted-text role=&quot;ref&quot;}).</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12866">#12866</a>:
Improved cross-references concerning the
<code>recwarn</code>{.interpreted-text role=&quot;fixture&quot;}
fixture.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12966">#12966</a>:
Clarify <code>filterwarnings</code>{.interpreted-text
role=&quot;ref&quot;} docs on filter precedence/order when using
multiple <code>@pytest.mark.filterwarnings
&lt;pytest.mark.filterwarnings ref&gt;</code>{.interpreted-text
role=&quot;ref&quot;} marks.</p>
</li>
</ul>
<h2>Contributor-facing changes</h2>
<ul>
<li><a
href="https://redirect.github.com/pytest-dev/pytest/issues/12497">#12497</a>:
Fixed two failing pdb-related tests on Python 3.13.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pytest-dev/pytest/commit/53f8b4e634c5066c4f797a87b20060edbb086240"><code>53f8b4e</code></a>
Update pypa/gh-action-pypi-publish to v1.12.2</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/98dff36c9dc0a44881e9e90daf381f9079adf4cc"><code>98dff36</code></a>
Prepare release version 8.3.4</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/1b474e221d5ced2c8c73924a0087e6e24ab6cd61"><code>1b474e2</code></a>
approx: use exact comparison for bool (<a
href="https://redirect.github.com/pytest-dev/pytest/issues/13013">#13013</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/b541721529feba7fcd0d069fa2437a817f340eba"><code>b541721</code></a>
docs: Fix wrong statement about sys.modules with importlib import mode
(<a
href="https://redirect.github.com/pytest-dev/pytest/issues/1298">#1298</a>...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/16cb87b65036300d74472cd55eebca8fc3f8e703"><code>16cb87b</code></a>
pytest.fail: fix ANSI escape codes for colored output (<a
href="https://redirect.github.com/pytest-dev/pytest/issues/12959">#12959</a>)
(<a
href="https://redirect.github.com/pytest-dev/pytest/issues/12990">#12990</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/be6bc812b02454b2915755dd76ce74b877aeafad"><code>be6bc81</code></a>
Issue <a
href="https://redirect.github.com/pytest-dev/pytest/issues/12966">#12966</a>
Clarify filterwarnings docs on precedence when using multiple ma...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/7aeb72bbc67bd1b8271eee57caa0a4e9b07038fc"><code>7aeb72b</code></a>
Improve docs on basetemp and retention (<a
href="https://redirect.github.com/pytest-dev/pytest/issues/12912">#12912</a>)
(<a
href="https://redirect.github.com/pytest-dev/pytest/issues/12928">#12928</a>)</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/c8758414cfd1646f273842e8f9292b2c15dcfcfb"><code>c875841</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/12917">#12917</a>
from pytest-dev/patchback/backports/8.3.x/ded1f44e5...</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/6502816d977fcdbd65a3f4d8a63c0ce7c1f25649"><code>6502816</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/12913">#12913</a>
from jakkdl/dontfailonbadpath</li>
<li><a
href="https://github.com/pytest-dev/pytest/commit/52135b033fb949efbec6aed9dd9000275bb199fd"><code>52135b0</code></a>
Merge pull request <a
href="https://redirect.github.com/pytest-dev/pytest/issues/12885">#12885</a>
from The-Compiler/pdb-py311 (<a
href="https://redirect.github.com/pytest-dev/pytest/issues/12887">#12887</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pytest-dev/pytest/compare/8.3.3...8.3.4">compare
view</a></li>
</ul>
</details>
<br />

Updates `ruff` from 0.8.0 to 0.8.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/releases">ruff's
releases</a>.</em></p>
<blockquote>
<h2>0.8.2</h2>
<h2>Release Notes</h2>
<h3>Preview features</h3>
<ul>
<li>[<code>airflow</code>] Avoid deprecated values (<code>AIR302</code>)
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/14582">#14582</a>)</li>
<li>[<code>airflow</code>] Extend removed names for <code>AIR302</code>
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/14734">#14734</a>)</li>
<li>[<code>ruff</code>] Extend
<code>unnecessary-regular-expression</code> to non-literal strings
(<code>RUF055</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14679">#14679</a>)</li>
<li>[<code>ruff</code>] Implement <code>used-dummy-variable</code>
(<code>RUF052</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14611">#14611</a>)</li>
<li>[<code>ruff</code>] Implement <code>unnecessary-cast-to-int</code>
(<code>RUF046</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14697">#14697</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>airflow</code>] Check <code>AIR001</code> from builtin or
providers <code>operators</code> module (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14631">#14631</a>)</li>
<li>[<code>flake8-pytest-style</code>] Remove <code>@</code> in
<code>pytest.mark.parametrize</code> rule messages (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14770">#14770</a>)</li>
<li>[<code>pandas-vet</code>] Skip rules if the <code>panda</code>
module hasn't been seen (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14671">#14671</a>)</li>
<li>[<code>pylint</code>] Fix false negatives for <code>ascii</code> and
<code>sorted</code> in <code>len-as-condition</code>
(<code>PLC1802</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14692">#14692</a>)</li>
<li>[<code>refurb</code>] Guard <code>hashlib</code> imports and mark
<code>hashlib-digest-hex</code> fix as safe (<code>FURB181</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14694">#14694</a>)</li>
</ul>
<h3>Configuration</h3>
<ul>
<li>[<code>flake8-import-conventions</code>] Improve syntax check for
aliases supplied in configuration for
<code>unconventional-import-alias</code> (<code>ICN001</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14745">#14745</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Revert: [pyflakes] Avoid false positives in
<code>@no_type_check</code> contexts (<code>F821</code>,
<code>F722</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/issues/14615">#14615</a>)
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/14726">#14726</a>)</li>
<li>[<code>pep8-naming</code>] Avoid false positive for <code>class
Bar(type(foo))</code> (<code>N804</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14683">#14683</a>)</li>
<li>[<code>pycodestyle</code>] Handle f-strings properly for
<code>invalid-escape-sequence</code> (<code>W605</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14748">#14748</a>)</li>
<li>[<code>pylint</code>] Ignore <code>@overload</code> in
<code>PLR0904</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14730">#14730</a>)</li>
<li>[<code>refurb</code>] Handle non-finite decimals in
<code>verbose-decimal-constructor</code> (<code>FURB157</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14596">#14596</a>)</li>
<li>[<code>ruff</code>] Avoid emitting <code>assignment-in-assert</code>
when all references to the assigned variable are themselves inside
<code>assert</code>s (<code>RUF018</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14661">#14661</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Improve docs for <code>flake8-use-pathlib</code> rules (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14741">#14741</a>)</li>
<li>Improve error messages and docs for
<code>flake8-comprehensions</code> rules (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14729">#14729</a>)</li>
<li>[<code>flake8-type-checking</code>] Expands <code>TC006</code> docs
to better explain itself (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14749">#14749</a>)</li>
</ul>
<h2>Contributors</h2>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a
href="https://github.com/Daverball"><code>@​Daverball</code></a></li>
<li><a
href="https://github.com/InSyncWithFoo"><code>@​InSyncWithFoo</code></a></li>
<li><a href="https://github.com/Lee-W"><code>@​Lee-W</code></a></li>
<li><a
href="https://github.com/Lokejoke"><code>@​Lokejoke</code></a></li>
<li><a
href="https://github.com/Matt-Ord"><code>@​Matt-Ord</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
<li><a
href="https://github.com/Well2333"><code>@​Well2333</code></a></li>
<li><a
href="https://github.com/connorskees"><code>@​connorskees</code></a></li>
<li><a
href="https://github.com/dcreager"><code>@​dcreager</code></a></li>
<li><a
href="https://github.com/dhruvmanila"><code>@​dhruvmanila</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.8.2</h2>
<h3>Preview features</h3>
<ul>
<li>[<code>airflow</code>] Avoid deprecated values (<code>AIR302</code>)
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/14582">#14582</a>)</li>
<li>[<code>airflow</code>] Extend removed names for <code>AIR302</code>
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/14734">#14734</a>)</li>
<li>[<code>ruff</code>] Extend
<code>unnecessary-regular-expression</code> to non-literal strings
(<code>RUF055</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14679">#14679</a>)</li>
<li>[<code>ruff</code>] Implement <code>used-dummy-variable</code>
(<code>RUF052</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14611">#14611</a>)</li>
<li>[<code>ruff</code>] Implement <code>unnecessary-cast-to-int</code>
(<code>RUF046</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14697">#14697</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>airflow</code>] Check <code>AIR001</code> from builtin or
providers <code>operators</code> module (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14631">#14631</a>)</li>
<li>[<code>flake8-pytest-style</code>] Remove <code>@</code> in
<code>pytest.mark.parametrize</code> rule messages (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14770">#14770</a>)</li>
<li>[<code>pandas-vet</code>] Skip rules if the <code>panda</code>
module hasn't been seen (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14671">#14671</a>)</li>
<li>[<code>pylint</code>] Fix false negatives for <code>ascii</code> and
<code>sorted</code> in <code>len-as-condition</code>
(<code>PLC1802</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14692">#14692</a>)</li>
<li>[<code>refurb</code>] Guard <code>hashlib</code> imports and mark
<code>hashlib-digest-hex</code> fix as safe (<code>FURB181</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14694">#14694</a>)</li>
</ul>
<h3>Configuration</h3>
<ul>
<li>[<code>flake8-import-conventions</code>] Improve syntax check for
aliases supplied in configuration for
<code>unconventional-import-alias</code> (<code>ICN001</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14745">#14745</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Revert: [pyflakes] Avoid false positives in
<code>@no_type_check</code> contexts (<code>F821</code>,
<code>F722</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/issues/14615">#14615</a>)
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/14726">#14726</a>)</li>
<li>[<code>pep8-naming</code>] Avoid false positive for <code>class
Bar(type(foo))</code> (<code>N804</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14683">#14683</a>)</li>
<li>[<code>pycodestyle</code>] Handle f-strings properly for
<code>invalid-escape-sequence</code> (<code>W605</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14748">#14748</a>)</li>
<li>[<code>pylint</code>] Ignore <code>@overload</code> in
<code>PLR0904</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14730">#14730</a>)</li>
<li>[<code>refurb</code>] Handle non-finite decimals in
<code>verbose-decimal-constructor</code> (<code>FURB157</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14596">#14596</a>)</li>
<li>[<code>ruff</code>] Avoid emitting <code>assignment-in-assert</code>
when all references to the assigned variable are themselves inside
<code>assert</code>s (<code>RUF018</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14661">#14661</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Improve docs for <code>flake8-use-pathlib</code> rules (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14741">#14741</a>)</li>
<li>Improve error messages and docs for
<code>flake8-comprehensions</code> rules (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14729">#14729</a>)</li>
<li>[<code>flake8-type-checking</code>] Expands <code>TC006</code> docs
to better explain itself (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14749">#14749</a>)</li>
</ul>
<h2>0.8.1</h2>
<h3>Preview features</h3>
<ul>
<li>Formatter: Avoid invalid syntax for format-spec with quotes for all
Python versions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14625">#14625</a>)</li>
<li>Formatter: Consider quotes inside format-specs when choosing the
quotes for an f-string (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14493">#14493</a>)</li>
<li>Formatter: Do not consider f-strings with escaped newlines as
multiline (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14624">#14624</a>)</li>
<li>Formatter: Fix f-string formatting in assignment statement (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14454">#14454</a>)</li>
<li>Formatter: Fix unnecessary space around power operator
(<code>**</code>) in overlong f-string expressions (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14489">#14489</a>)</li>
<li>[<code>airflow</code>] Avoid implicit <code>schedule</code> argument
to <code>DAG</code> and <code>@dag</code> (<code>AIR301</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14581">#14581</a>)</li>
<li>[<code>flake8-builtins</code>] Exempt private built-in modules
(<code>A005</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14505">#14505</a>)</li>
<li>[<code>flake8-pytest-style</code>] Fix
<code>pytest.mark.parametrize</code> rules to check calls instead of
decorators (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14515">#14515</a>)</li>
<li>[<code>flake8-type-checking</code>] Implement
<code>runtime-cast-value</code> (<code>TC006</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/14511">#14511</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/astral-sh/ruff/commit/b0e26e6fc8ad60e368b8b03b367b6ac408acf9f7"><code>b0e26e6</code></a>
Bump version to 0.8.2 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/14789">#14789</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/e9941cd71459a75ee556422b37a192bf681ed425"><code>e9941cd</code></a>
[red-knot] Move standalone expr inference to <code>for</code> non-name
target (<a
href="https://redirect.github.com/astral-sh/ruff/issues/14788">#14788</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/43bf1a8907fc0e48e8ca7b52485a349772e91de9"><code>43bf1a8</code></a>
Add tests for &quot;keyword as identifier&quot; syntax errors (<a
href="https://redirect.github.com/astral-sh/ruff/issues/14754">#14754</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/fda8b1f884c8598960b2e3f0c729e17ac62bfe35"><code>fda8b1f</code></a>
[<code>ruff</code>] Unnecessary cast to <code>int</code>
(<code>RUF046</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/issues/14697">#14697</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/2d3f55787557fc16a15e298d516ae719d12bc25c"><code>2d3f557</code></a>
[red-knot] Fallback for <code>typing._NoDefaultType</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/14783">#14783</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/bd27bfab5d636cd5979ce78423ba069833ab13e2"><code>bd27bfa</code></a>
[red-knot] Unify <code>setup_db()</code> functions, add
<code>TestDb</code> builder (<a
href="https://redirect.github.com/astral-sh/ruff/issues/14777">#14777</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/155d34bbb9a0ebda17bbd465f5fa5dfa2b640c37"><code>155d34b</code></a>
[red-knot] Infer precise types for <code>len()</code> calls (<a
href="https://redirect.github.com/astral-sh/ruff/issues/14599">#14599</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/04c887c8fce0521a8a98cee04349199ac256a67a"><code>04c887c</code></a>
Fix references for <code>async-busy-wait</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/14775">#14775</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/af43bd4b0fa5fdf016252085771cfb75846a0b0c"><code>af43bd4</code></a>
[red-knot] Gradual forms do not participate in equivalence/subtyping (<a
href="https://redirect.github.com/astral-sh/ruff/issues/14758">#14758</a>)</li>
<li><a
href="https://github.com/astral-sh/ruff/commit/614917769e07467e8646fb6a28b23e90d3df980c"><code>6149177</code></a>
Remove <code>@</code> in <code>pytest.mark.parametrize</code> rule
messages (<a
href="https://redirect.github.com/astral-sh/ruff/issues/14770">#14770</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.8.0...0.8.2">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 <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
mergify bot pushed a commit to aws/jsii that referenced this issue Dec 17, 2024
…/packages/jsii-pacmak/lib/targets/python (#4720)

Updates the requirements on [twine](https://github.com/pypa/twine) to permit the latest version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/pypa/twine/blob/main/docs/changelog.rst">twine's changelog</a>.</em></p>
<blockquote>
<h2>Twine 6.0.1 (2024-11-30)</h2>
<p>Bugfixes
^^^^^^^^</p>
<ul>
<li>Fixed a regression where <code>twine check</code> would fail to expand
wildcards, e.g. <code>twine check 'dist/*'</code>. (<code>[#1188](pypa/twine#1188) &lt;https://github.com/pypa/twine/issues/1188&gt;</code>_)</li>
</ul>
<p>Misc
^^^^</p>
<ul>
<li><code>[#1184](pypa/twine#1184) &lt;https://github.com/pypa/twine/issues/1184&gt;</code>_</li>
</ul>
<h2>Twine 6.0.0 (2024-11-29)</h2>
<p>Bugfixes
^^^^^^^^</p>
<ul>
<li>Restore support for pkginfo 1.11 (<code>[#1116](pypa/twine#1116) &lt;https://github.com/pypa/twine/issues/1116&gt;</code>_)</li>
</ul>
<p>Deprecations and Removals
^^^^^^^^^^^^^^^^^^^^^^^^^</p>
<ul>
<li>Username for PyPI and Test PyPI now defaults to <strong>token</strong> but no longer overrides a username configured in the environment or supplied on the command line. Workflows still supplying anything other than <strong>token</strong> for the username when uploading to PyPI or Test PyPI will now fail. Either supply <strong>token</strong> or do not supply a username at all. (<code>[#1121](pypa/twine#1121) &lt;https://github.com/pypa/twine/issues/1121&gt;</code>_)</li>
</ul>
<p>Misc
^^^^</p>
<ul>
<li><code>[#1024](pypa/twine#1024) &lt;https://github.com/pypa/twine/issues/1024&gt;</code>_</li>
</ul>
<h2>Twine 5.1.1 (2024-06-26)</h2>
<p>Bugfixes
^^^^^^^^</p>
<ul>
<li>
<p>Resolve DeprecationWarnings when extracting <code>twine</code> metadata. (<code>[#1115](pypa/twine#1115) &lt;https://github.com/pypa/twine/issues/1115&gt;</code>_)</p>
</li>
<li>
<p>Fix bug for Repository URLs with auth where the port was lost. When attempting
to prevent printing authentication credentials in URLs provided with username
and password, we did not properly handle the case where the URL also contains
a port (when reconstructing the URL). This is now handled and tested to
ensure no regressions. (<code>#fix-repo-urls-with-auth-and-port &lt;https://github.com/pypa/twine/issues/fix-repo-urls-with-auth-and-port&gt;</code>_)</p>
</li>
</ul>

</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/pypa/twine/commit/a723876fd4398be57838873e60867566b6220a53"><code>a723876</code></a> Merge pull request <a href="https://redirect.github.com/pypa/twine/issues/1189">#1189</a> from pypa/release-6.0.1</li>
<li><a href="https://github.com/pypa/twine/commit/9a24828cbded183d02d0b3f5a8af41b7764dda98"><code>9a24828</code></a> Update changelog for 6.0.1</li>
<li><a href="https://github.com/pypa/twine/commit/a0170058016cb7ed9554ef648a48c1899917d255"><code>a017005</code></a> Merge pull request <a href="https://redirect.github.com/pypa/twine/issues/1188">#1188</a> from pypa/ww/fix-twine-check-glob</li>
<li><a href="https://github.com/pypa/twine/commit/e98f03bb0932e364065f827f804806bacccc436d"><code>e98f03b</code></a> check: fix handling of non-shell-expanded globs</li>
<li><a href="https://github.com/pypa/twine/commit/873f33ed40bb38407a87abba6cd2a65f35eb6286"><code>873f33e</code></a> build(deps): bump pypa/gh-action-pypi-publish from 1.11.0 to 1.12.2 (<a href="https://redirect.github.com/pypa/twine/issues/1175">#1175</a>)</li>
<li><a href="https://github.com/pypa/twine/commit/067412e84cfdd39929d838075ef8fa3d2cb0d733"><code>067412e</code></a> Use brackets for the default value of option arguments (<a href="https://redirect.github.com/pypa/twine/issues/1149">#1149</a>)</li>
<li><a href="https://github.com/pypa/twine/commit/f32dc3545b52389dac0cbd28059833d48c36b4f4"><code>f32dc35</code></a> Apply ruff/Perflint rule (<a href="https://redirect.github.com/pypa/twine/issues/1136">#1136</a>)</li>
<li><a href="https://github.com/pypa/twine/commit/aa58273f52afab52d3dd00b2c6cf3b472c6ee20d"><code>aa58273</code></a> Don't require importlib_metadata on Python 3.10+</li>
<li><a href="https://github.com/pypa/twine/commit/675565f35c6d0adc435c9da6cb123f41dcaeffb8"><code>675565f</code></a> changelog: record <a href="https://redirect.github.com/pypa/twine/issues/1184">#1184</a></li>
<li><a href="https://github.com/pypa/twine/commit/80cc58c0ddbd68b107c4709be5072f3e309b843c"><code>80cc58c</code></a> chore: mark 3.13 as explicitly supported</li>
<li>Additional commits viewable in <a href="https://github.com/pypa/twine/compare/v5.1.1...6.0.1">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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug testing Test frameworks, tests, etc.
Projects
None yet
3 participants