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

gh-126565: Skip zipfile.Path.exists check in write mode #126576

Merged
merged 1 commit into from
Nov 10, 2024

Conversation

janhicken
Copy link
Contributor

@janhicken janhicken commented Nov 8, 2024

When zipfile.Path.open is called, the implementation will check whether the path already exists in the ZIP file. However, this check is only required when the ZIP file is in read mode. By swapping arguments of the and operator, the short-circuiting will prevent the check from being run in write mode.

This change will improve the performance of open(), because checking whether a file exists is slow in write mode, especially when the archive has many members.

Copy link

cpython-cla-bot bot commented Nov 8, 2024

All commit authors signed the Contributor License Agreement.
CLA signed

@ZeroIntensity ZeroIntensity added needs backport to 3.12 bug and security fixes needs backport to 3.13 bugs and security fixes labels Nov 8, 2024
When `zipfile.Path.open` is called, the implementation will check
whether the path already exists in the ZIP file. However, this check is
only required when the ZIP file is in read mode. By swapping arguments
of the `and` operator, the short-circuiting will prevent the check from
being run in write mode.

This change will improve the performance of `open()`, because checking
whether a file exists is slow in write mode, especially when the archive
has many members.
@jaraco jaraco merged commit 160758a into python:main Nov 10, 2024
40 checks passed
@miss-islington-app
Copy link

Thanks @janhicken for the PR, and @jaraco for merging it 🌮🎉.. I'm working now to backport this PR to: 3.12, 3.13.
🐍🍒⛏🤖

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Nov 10, 2024
…onGH-126576)

When `zipfile.Path.open` is called, the implementation will check
whether the path already exists in the ZIP file. However, this check is
only required when the ZIP file is in read mode. By swapping arguments
of the `and` operator, the short-circuiting will prevent the check from
being run in write mode.

This change will improve the performance of `open()`, because checking
whether a file exists is slow in write mode, especially when the archive
has many members.
(cherry picked from commit 160758a)

Co-authored-by: Jan Hicken <[email protected]>
@bedevere-app
Copy link

bedevere-app bot commented Nov 10, 2024

GH-126642 is a backport of this pull request to the 3.13 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.13 bugs and security fixes label Nov 10, 2024
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Nov 10, 2024
…onGH-126576)

When `zipfile.Path.open` is called, the implementation will check
whether the path already exists in the ZIP file. However, this check is
only required when the ZIP file is in read mode. By swapping arguments
of the `and` operator, the short-circuiting will prevent the check from
being run in write mode.

This change will improve the performance of `open()`, because checking
whether a file exists is slow in write mode, especially when the archive
has many members.
(cherry picked from commit 160758a)

Co-authored-by: Jan Hicken <[email protected]>
@jaraco
Copy link
Member

jaraco commented Nov 10, 2024

Looks great. I'll port this to zipp as well.

@bedevere-app
Copy link

bedevere-app bot commented Nov 10, 2024

GH-126643 is a backport of this pull request to the 3.12 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.12 bug and security fixes label Nov 10, 2024
jaraco pushed a commit to jaraco/zipp that referenced this pull request Nov 10, 2024
When `zipfile.Path.open` is called, the implementation will check
whether the path already exists in the ZIP file. However, this check is
only required when the ZIP file is in read mode. By swapping arguments
of the `and` operator, the short-circuiting will prevent the check from
being run in write mode.

This change will improve the performance of `open()`, because checking
whether a file exists is slow in write mode, especially when the archive
has many members.
jaraco pushed a commit that referenced this pull request Nov 10, 2024
…126576) (#126643)

gh-126565: Skip `zipfile.Path.exists` check in write mode (GH-126576)

When `zipfile.Path.open` is called, the implementation will check
whether the path already exists in the ZIP file. However, this check is
only required when the ZIP file is in read mode. By swapping arguments
of the `and` operator, the short-circuiting will prevent the check from
being run in write mode.

This change will improve the performance of `open()`, because checking
whether a file exists is slow in write mode, especially when the archive
has many members.
(cherry picked from commit 160758a)

Co-authored-by: Jan Hicken <[email protected]>
jaraco pushed a commit that referenced this pull request Nov 10, 2024
…126576) (#126642)

gh-126565: Skip `zipfile.Path.exists` check in write mode (GH-126576)

When `zipfile.Path.open` is called, the implementation will check
whether the path already exists in the ZIP file. However, this check is
only required when the ZIP file is in read mode. By swapping arguments
of the `and` operator, the short-circuiting will prevent the check from
being run in write mode.

This change will improve the performance of `open()`, because checking
whether a file exists is slow in write mode, especially when the archive
has many members.
(cherry picked from commit 160758a)

Co-authored-by: Jan Hicken <[email protected]>
github-merge-queue bot pushed a commit to google/scaaml that referenced this pull request Nov 11, 2024
Bumps the dependabot group with 4 updates:
[packaging](https://github.com/pypa/packaging),
[wheel](https://github.com/pypa/wheel),
[zipp](https://github.com/jaraco/zipp) and
[tqdm](https://github.com/tqdm/tqdm).

Updates `packaging` from 24.1 to 24.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/packaging/releases">packaging's
releases</a>.</em></p>
<blockquote>
<h2>24.2</h2>
<h2>What's Changed</h2>
<ul>
<li>The source is auto-formatted with ruff, not black by <a
href="https://github.com/DimitriPapadopoulos"><code>@​DimitriPapadopoulos</code></a>
in <a
href="https://redirect.github.com/pypa/packaging/pull/798">pypa/packaging#798</a></li>
<li>Bump the github-actions group across 1 directory with 3 updates by
<a href="https://github.com/dependabot"><code>@​dependabot</code></a> in
<a
href="https://redirect.github.com/pypa/packaging/pull/813">pypa/packaging#813</a></li>
<li>Apply ruff rules (RUF) by <a
href="https://github.com/DimitriPapadopoulos"><code>@​DimitriPapadopoulos</code></a>
in <a
href="https://redirect.github.com/pypa/packaging/pull/800">pypa/packaging#800</a></li>
<li>Fix typo in Version <code>__str__</code> by <a
href="https://github.com/aryanpingle"><code>@​aryanpingle</code></a> in
<a
href="https://redirect.github.com/pypa/packaging/pull/817">pypa/packaging#817</a></li>
<li>Bump the github-actions group with 3 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/pypa/packaging/pull/819">pypa/packaging#819</a></li>
<li>Get rid of duplicate test cases by <a
href="https://github.com/DimitriPapadopoulos"><code>@​DimitriPapadopoulos</code></a>
in <a
href="https://redirect.github.com/pypa/packaging/pull/821">pypa/packaging#821</a></li>
<li>Fix doc for canonicalize_version and a typo in a docstring by <a
href="https://github.com/Laurent-Dx"><code>@​Laurent-Dx</code></a> in <a
href="https://redirect.github.com/pypa/packaging/pull/801">pypa/packaging#801</a></li>
<li>docs: public/base_version comparison by <a
href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
href="https://redirect.github.com/pypa/packaging/pull/818">pypa/packaging#818</a></li>
<li>Apply ruff/bugbear rules (B) by <a
href="https://github.com/DimitriPapadopoulos"><code>@​DimitriPapadopoulos</code></a>
in <a
href="https://redirect.github.com/pypa/packaging/pull/787">pypa/packaging#787</a></li>
<li>Apply ruff/pyupgrade rules (UP) by <a
href="https://github.com/DimitriPapadopoulos"><code>@​DimitriPapadopoulos</code></a>
in <a
href="https://redirect.github.com/pypa/packaging/pull/786">pypa/packaging#786</a></li>
<li>Add a changelog entry for dropping Python 3.7 support by <a
href="https://github.com/alexwlchan"><code>@​alexwlchan</code></a> in <a
href="https://redirect.github.com/pypa/packaging/pull/824">pypa/packaging#824</a></li>
<li>Patch python_full_version unconditionally by <a
href="https://github.com/jaraco"><code>@​jaraco</code></a> in <a
href="https://redirect.github.com/pypa/packaging/pull/825">pypa/packaging#825</a></li>
<li>Refactor canonicalize_version by <a
href="https://github.com/jaraco"><code>@​jaraco</code></a> in <a
href="https://redirect.github.com/pypa/packaging/pull/793">pypa/packaging#793</a></li>
<li>Allow creating a SpecifierSet from a list of specifiers by <a
href="https://github.com/pfmoore"><code>@​pfmoore</code></a> in <a
href="https://redirect.github.com/pypa/packaging/pull/777">pypa/packaging#777</a></li>
<li>Fix uninformative error message by <a
href="https://github.com/abravalheri"><code>@​abravalheri</code></a> in
<a
href="https://redirect.github.com/pypa/packaging/pull/830">pypa/packaging#830</a></li>
<li>Fix prerelease detection for <code>&gt;</code> and <code>&lt;</code>
by <a
href="https://github.com/notatallshaw"><code>@​notatallshaw</code></a>
in <a
href="https://redirect.github.com/pypa/packaging/pull/794">pypa/packaging#794</a></li>
<li>Bump the github-actions group across 1 directory with 4 updates by
<a href="https://github.com/dependabot"><code>@​dependabot</code></a> in
<a
href="https://redirect.github.com/pypa/packaging/pull/839">pypa/packaging#839</a></li>
<li>Add support for PEP 730 iOS tags. by <a
href="https://github.com/freakboy3742"><code>@​freakboy3742</code></a>
in <a
href="https://redirect.github.com/pypa/packaging/pull/832">pypa/packaging#832</a></li>
<li>Update the changelog to reflect 24.1 changes by <a
href="https://github.com/pradyunsg"><code>@​pradyunsg</code></a> in <a
href="https://redirect.github.com/pypa/packaging/pull/840">pypa/packaging#840</a></li>
<li>Mention updating changelog in release process by <a
href="https://github.com/pradyunsg"><code>@​pradyunsg</code></a> in <a
href="https://redirect.github.com/pypa/packaging/pull/841">pypa/packaging#841</a></li>
<li>Add a comment as to why <code>Metadata.name</code> isn't normalized
by <a
href="https://github.com/brettcannon"><code>@​brettcannon</code></a> in
<a
href="https://redirect.github.com/pypa/packaging/pull/842">pypa/packaging#842</a></li>
<li>Use !r formatter for error messages with filenames. by <a
href="https://github.com/Carreau"><code>@​Carreau</code></a> in <a
href="https://redirect.github.com/pypa/packaging/pull/844">pypa/packaging#844</a></li>
<li>PEP 639: Implement License-Expression and License-File by <a
href="https://github.com/ewdurbin"><code>@​ewdurbin</code></a> in <a
href="https://redirect.github.com/pypa/packaging/pull/828">pypa/packaging#828</a></li>
<li>Bump the github-actions group with 4 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/pypa/packaging/pull/852">pypa/packaging#852</a></li>
<li>Upgrade to latest mypy by <a
href="https://github.com/hauntsaninja"><code>@​hauntsaninja</code></a>
in <a
href="https://redirect.github.com/pypa/packaging/pull/853">pypa/packaging#853</a></li>
<li>Extraneous quotes by <a
href="https://github.com/ewdurbin"><code>@​ewdurbin</code></a> in <a
href="https://redirect.github.com/pypa/packaging/pull/848">pypa/packaging#848</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/aryanpingle"><code>@​aryanpingle</code></a>
made their first contribution in <a
href="https://redirect.github.com/pypa/packaging/pull/817">pypa/packaging#817</a></li>
<li><a
href="https://github.com/Laurent-Dx"><code>@​Laurent-Dx</code></a> made
their first contribution in <a
href="https://redirect.github.com/pypa/packaging/pull/801">pypa/packaging#801</a></li>
<li><a
href="https://github.com/alexwlchan"><code>@​alexwlchan</code></a> made
their first contribution in <a
href="https://redirect.github.com/pypa/packaging/pull/824">pypa/packaging#824</a></li>
<li><a href="https://github.com/jaraco"><code>@​jaraco</code></a> made
their first contribution in <a
href="https://redirect.github.com/pypa/packaging/pull/825">pypa/packaging#825</a></li>
<li><a
href="https://github.com/notatallshaw"><code>@​notatallshaw</code></a>
made their first contribution in <a
href="https://redirect.github.com/pypa/packaging/pull/794">pypa/packaging#794</a></li>
<li><a
href="https://github.com/freakboy3742"><code>@​freakboy3742</code></a>
made their first contribution in <a
href="https://redirect.github.com/pypa/packaging/pull/832">pypa/packaging#832</a></li>
<li><a href="https://github.com/Carreau"><code>@​Carreau</code></a> made
their first contribution in <a
href="https://redirect.github.com/pypa/packaging/pull/844">pypa/packaging#844</a></li>
<li><a href="https://github.com/ewdurbin"><code>@​ewdurbin</code></a>
made their first contribution in <a
href="https://redirect.github.com/pypa/packaging/pull/828">pypa/packaging#828</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pypa/packaging/compare/24.1...24.2">https://github.com/pypa/packaging/compare/24.1...24.2</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/packaging/blob/main/CHANGELOG.rst">packaging's
changelog</a>.</em></p>
<blockquote>
<p>24.2 - 2024-11-08</p>
<pre><code>
* PEP 639: Implement License-Expression and License-File (:issue:`828`)
* Use ``!r`` formatter for error messages with filenames (:issue:`844`)
* Add support for PEP 730 iOS tags (:issue:`832`)
* Fix prerelease detection for ``&gt;`` and ``&lt;`` (:issue:`794`)
* Fix uninformative error message (:issue:`830`)
* Refactor ``canonicalize_version`` (:issue:`793`)
* Patch python_full_version unconditionally (:issue:`825`)
* Fix doc for ``canonicalize_version`` to mention
``strip_trailing_zero`` and a typo in a docstring (:issue:`801`)
* Fix typo in Version ``__str__`` (:issue:`817`)
* Support creating a ``SpecifierSet`` from an iterable of ``Specifier``
objects (:issue:`775`)
</code></pre>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/packaging/commit/d8e3b31b734926ebbcaff654279f6855a73e052f"><code>d8e3b31</code></a>
Bump for release</li>
<li><a
href="https://github.com/pypa/packaging/commit/2de393d910926a0408496ac5583f733c4b9f0f5e"><code>2de393d</code></a>
Update changelog for release</li>
<li><a
href="https://github.com/pypa/packaging/commit/9c66f5c844bf3262f560c1521a0e6837079b16ff"><code>9c66f5c</code></a>
Remove extraneous quotes in f-strings by using <code>!r</code> (<a
href="https://redirect.github.com/pypa/packaging/issues/848">#848</a>)</li>
<li><a
href="https://github.com/pypa/packaging/commit/4dc334c86d43f83371b194ca91618ed99e0e49ca"><code>4dc334c</code></a>
Upgrade to latest mypy (<a
href="https://redirect.github.com/pypa/packaging/issues/853">#853</a>)</li>
<li><a
href="https://github.com/pypa/packaging/commit/d1a9f938343de11f7322151c1f6de25cbb61718b"><code>d1a9f93</code></a>
Bump the github-actions group with 4 updates (<a
href="https://redirect.github.com/pypa/packaging/issues/852">#852</a>)</li>
<li><a
href="https://github.com/pypa/packaging/commit/029f41580098bcf52b69684843bdc7ea37959a7e"><code>029f415</code></a>
PEP 639: Implement License-Expression and License-File (<a
href="https://redirect.github.com/pypa/packaging/issues/828">#828</a>)</li>
<li><a
href="https://github.com/pypa/packaging/commit/6c338a8425803476769151953cc5de5548e2befa"><code>6c338a8</code></a>
Use !r formatter for error messages with filenames. (<a
href="https://redirect.github.com/pypa/packaging/issues/844">#844</a>)</li>
<li><a
href="https://github.com/pypa/packaging/commit/28e7da78f6f73b4856260e24051b35a4517c0149"><code>28e7da7</code></a>
Add a comment as to why <code>Metadata.name</code> isn't normalized (<a
href="https://redirect.github.com/pypa/packaging/issues/842">#842</a>)</li>
<li><a
href="https://github.com/pypa/packaging/commit/ce0d79c5ab6d27e856a059fbc24c0b0a7c9d8581"><code>ce0d79c</code></a>
Mention updating changelog in release process (<a
href="https://redirect.github.com/pypa/packaging/issues/841">#841</a>)</li>
<li><a
href="https://github.com/pypa/packaging/commit/ac5bdf3605ddcbfa1f672f7cf93a19fd6d3d77ea"><code>ac5bdf3</code></a>
Update the changelog to reflect 24.1 changes (<a
href="https://redirect.github.com/pypa/packaging/issues/840">#840</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/packaging/compare/24.1...24.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `wheel` from 0.44.0 to 0.45.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/wheel/releases">wheel's
releases</a>.</em></p>
<blockquote>
<h2>0.45.0</h2>
<ul>
<li>
<p>Refactored the <code>convert</code> command to not need setuptools to
be installed</p>
</li>
<li>
<p>Don't configure setuptools logging unless running
<code>bdist_wheel</code></p>
</li>
<li>
<p>Added a redirection from <code>wheel.bdist_wheel.bdist_wheel</code>
to <code>setuptools.command.bdist_wheel.bdist_wheel</code> to improve
compatibility with <code>setuptools</code>' latest fixes.</p>
<p>Projects are still advised to migrate away from the deprecated module
and import the <code>setuptools</code>' implementation explicitly. (PR
by <a
href="https://github.com/abravalheri"><code>@​abravalheri</code></a>)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pypa/wheel/blob/main/docs/news.rst">wheel's
changelog</a>.</em></p>
<blockquote>
<h1>Release Notes</h1>
<p><strong>0.45.0 (2024-11-08)</strong></p>
<ul>
<li>
<p>Refactored the <code>convert</code> command to not need setuptools to
be installed</p>
</li>
<li>
<p>Don't configure setuptools logging unless running
<code>bdist_wheel</code></p>
</li>
<li>
<p>Added a redirection from <code>wheel.bdist_wheel.bdist_wheel</code>
to
<code>setuptools.command.bdist_wheel.bdist_wheel</code> to improve
compatibility with
<code>setuptools</code>' latest fixes.</p>
<p>Projects are still advised to migrate away from the deprecated module
and import
the <code>setuptools</code>' implementation explicitly. (PR by <a
href="https://github.com/abravalheri"><code>@​abravalheri</code></a>)</p>
</li>
</ul>
<p><strong>0.44.0 (2024-08-04)</strong></p>
<ul>
<li>Canonicalized requirements in METADATA file (PR by Wim
Jeantine-Glenn)</li>
<li>Deprecated the <code>bdist_wheel</code> module, as the code was
migrated to <code>setuptools</code>
itself</li>
</ul>
<p><strong>0.43.0 (2024-03-11)</strong></p>
<ul>
<li>Dropped support for Python 3.7</li>
<li>Updated vendored <code>packaging</code> to 24.0</li>
</ul>
<p><strong>0.42.0 (2023-11-26)</strong></p>
<ul>
<li>Allowed removing build tag with <code>wheel tags --build
&quot;&quot;</code></li>
<li>Fixed <code>wheel pack</code> and <code>wheel tags</code> writing
updated <code>WHEEL</code> fields after a
blank line, causing other tools to ignore them</li>
<li>Fixed <code>wheel pack</code> and <code>wheel tags</code> writing
<code>WHEEL</code> with CRLF line endings or
a mix of CRLF and LF</li>
<li>Fixed <code>wheel pack --build-number &quot;&quot;</code> not
removing build tag from <code>WHEEL</code>
(above changes by Benjamin Gilbert)</li>
</ul>
<p><strong>0.41.3 (2023-10-30)</strong></p>
<ul>
<li>Updated vendored <code>packaging</code> to 23.2</li>
<li>Fixed ABI tag generation for CPython 3.13a1 on Windows (PR by Sam
Gross)</li>
</ul>
<p><strong>0.41.2 (2023-08-22)</strong></p>
<ul>
<li>Fixed platform tag detection for GraalPy and 32-bit python running
on an aarch64
kernel (PR by Matthieu Darbois)</li>
<li>Fixed <code>wheel tags</code> to not list directories in
<code>RECORD</code> files
(PR by Mike Taves)</li>
<li>Fixed ABI tag generation for GraalPy (PR by Michael Simacek)</li>
</ul>
<p><strong>0.41.1 (2023-08-05)</strong></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/pypa/wheel/commit/d78f0e372199f8294556345d867af4d3cf118418"><code>d78f0e3</code></a>
Created a new release</li>
<li><a
href="https://github.com/pypa/wheel/commit/f064c699209e36ec2948537b7cadabf84a110c30"><code>f064c69</code></a>
Added license files for vendored <code>packaging</code></li>
<li><a
href="https://github.com/pypa/wheel/commit/68387afcd33cb514a4da811d2fc5de73c8797e48"><code>68387af</code></a>
Only configure setuptools logging if bdist_wheel is imported (<a
href="https://redirect.github.com/pypa/wheel/issues/641">#641</a>)</li>
<li><a
href="https://github.com/pypa/wheel/commit/c81f5c954a8ca7698e6df9de39cf0013295949fa"><code>c81f5c9</code></a>
Refactored the <code>wheel convert</code> command to not require
setuptools (<a
href="https://redirect.github.com/pypa/wheel/issues/640">#640</a>)</li>
<li><a
href="https://github.com/pypa/wheel/commit/e43464d32feaddddb235ffe21b4bf13c1193465d"><code>e43464d</code></a>
Adjusted target Python versions in GitHub CI</li>
<li><a
href="https://github.com/pypa/wheel/commit/e9894e71bc62e5808710bc8c2c268de51aef52d4"><code>e9894e7</code></a>
Tweaked pytest settings to make the tracebacks easier to read</li>
<li><a
href="https://github.com/pypa/wheel/commit/baf6bf89562cb42a0ca71cc1e804600b161952eb"><code>baf6bf8</code></a>
Removed Cirrus CI configuration</li>
<li><a
href="https://github.com/pypa/wheel/commit/28c1ba1e2a6d08edc03c73e29293a571888981f9"><code>28c1ba1</code></a>
Improved compatibility with future versions of <code>setuptools</code>
(<a
href="https://redirect.github.com/pypa/wheel/issues/638">#638</a>)</li>
<li><a
href="https://github.com/pypa/wheel/commit/9254a4f9f8d9475c9f4d00a854694ddf1834ba5b"><code>9254a4f</code></a>
Exclude <code>@overload</code> and <code>if TYPE_CHECKING:</code> from
coverage checks</li>
<li><a
href="https://github.com/pypa/wheel/commit/d841597258d04f10346fbcc0ce95f9278b38ef08"><code>d841597</code></a>
[pre-commit.ci] pre-commit autoupdate (<a
href="https://redirect.github.com/pypa/wheel/issues/635">#635</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pypa/wheel/compare/0.44.0...0.45.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `zipp` from 3.20.0 to 3.21.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jaraco/zipp/blob/main/NEWS.rst">zipp's
changelog</a>.</em></p>
<blockquote>
<h1>v3.21.0</h1>
<h2>Features</h2>
<ul>
<li>Improve performances of :meth:<code>zipfile.Path.open</code> for
non-reading modes. (1a1928d)</li>
<li>Rely on cached_property to cache values on the instance.</li>
<li>Rely on save_method_args to save method args.</li>
</ul>
<h1>v3.20.2</h1>
<h2>Bugfixes</h2>
<ul>
<li>Make zipp.compat.overlay.zipfile hashable. (<a
href="https://redirect.github.com/jaraco/zipp/issues/126">#126</a>)</li>
</ul>
<h1>v3.20.1</h1>
<h2>Bugfixes</h2>
<ul>
<li><code>python/cpython#123270</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/jaraco/zipp/commit/45b7f675c0bcaa4f3f9d15b4399fc71e74f2408c"><code>45b7f67</code></a>
Finalize</li>
<li><a
href="https://github.com/jaraco/zipp/commit/71ddd8d4f4ab200af870f0060d9ee8c6b7056681"><code>71ddd8d</code></a>
Skip
<code>zipfile.Path.exists</code><code>python/cpython#126576</code></li>
<li><a
href="https://github.com/jaraco/zipp/commit/9a2705ee2a376a948f1e89320c8c7356829a42eb"><code>9a2705e</code></a>
Merge <a
href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li>
<li><a
href="https://github.com/jaraco/zipp/commit/5c34e69568f23a524af4fa9dad3f5e80f22ec3e6"><code>5c34e69</code></a>
Use extend for proper workaround.</li>
<li><a
href="https://github.com/jaraco/zipp/commit/ee027f698c9cc629fb0018bc55cbb73267db2817"><code>ee027f6</code></a>
Merge <a
href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li>
<li><a
href="https://github.com/jaraco/zipp/commit/750a1891ec4a1c0602050e3463e9593a8c13aa14"><code>750a189</code></a>
Require Python 3.9 or later now that Python 3.8 is EOL.</li>
<li><a
href="https://github.com/jaraco/zipp/commit/e61a9df7cdc9c8d1b56c30b7b3f94a7cdac14414"><code>e61a9df</code></a>
Include pyproject.toml in ruff.toml.</li>
<li><a
href="https://github.com/jaraco/zipp/commit/db4dfc495552aca8d6f05ed58441fa65fdc2ed9c"><code>db4dfc4</code></a><code>jaraco/skeleton#151</code></li>
<li><a
href="https://github.com/jaraco/zipp/commit/62b6678a32087ed3bfc8ff19761764340295834e"><code>62b6678</code></a>
Bump pre-commit hook for ruff to avoid clashes with pytest-ruff
(jaraco/skele...</li>
<li><a
href="https://github.com/jaraco/zipp/commit/466f53538bd84cefcca39c5a42775fef6a1bf346"><code>466f535</code></a>
Merge pull request <a
href="https://redirect.github.com/jaraco/zipp/issues/109">#109</a> from
jaraco/feature/functools</li>
<li>Additional commits viewable in <a
href="https://github.com/jaraco/zipp/compare/v3.20.0...v3.21.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `tqdm` from 4.66.5 to 4.67.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/tqdm/tqdm/releases">tqdm's
releases</a>.</em></p>
<blockquote>
<h2>tqdm v4.67.0 stable</h2>
<ul>
<li><code>contrib.discord</code>: replace <code>disco-py</code> with
<code>requests</code> (<a
href="https://redirect.github.com/tqdm/tqdm/issues/1536">#1536</a>)</li>
</ul>
<h2>tqdm v4.66.6 stable</h2>
<ul>
<li>cli: zip-safe <code>--manpath</code>, <code>--comppath</code> (<a
href="https://redirect.github.com/tqdm/tqdm/issues/1627">#1627</a>)</li>
<li>misc framework updates (<a
href="https://redirect.github.com/tqdm/tqdm/issues/1627">#1627</a>)
<ul>
<li>fix <code>pytest</code> <code>DeprecationWarning</code></li>
<li>fix <code>snapcraft</code> build</li>
<li>fix <code>nbval</code> <code>DeprecationWarning</code></li>
<li>update &amp; tidy workflows</li>
<li>bump pre-commit</li>
<li>docs: update URLs</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/tqdm/tqdm/commit/35a6ee9a4527bab5c0c7234531269e0c7fd0f2fd"><code>35a6ee9</code></a>
bump version, merge pull request <a
href="https://redirect.github.com/tqdm/tqdm/issues/1536">#1536</a> from
guigoruiz1</li>
<li><a
href="https://github.com/tqdm/tqdm/commit/8aa9470e485a90679936d3781a4f953cf5afa8f4"><code>8aa9470</code></a>
add discord requests dep</li>
<li><a
href="https://github.com/tqdm/tqdm/commit/1db24b4ff442c43752cf56a55b1782998c76801c"><code>1db24b4</code></a>
better user-agent</li>
<li><a
href="https://github.com/tqdm/tqdm/commit/61365d8321ae4ca433d2c6cda770a73a8e0e62cb"><code>61365d8</code></a>
handle rate limit</li>
<li><a
href="https://github.com/tqdm/tqdm/commit/670840021ddea4908a2e68144ce6c009d7e16e96"><code>6708400</code></a>
use requests.Session</li>
<li><a
href="https://github.com/tqdm/tqdm/commit/f1129e70c9983c527413e50e63016d4d885c51d3"><code>f1129e7</code></a>
restore original docs, misc linting</li>
<li><a
href="https://github.com/tqdm/tqdm/commit/03b90e444ed18b88aed710371309c271c25ac391"><code>03b90e4</code></a>
Using correct user agent</li>
<li><a
href="https://github.com/tqdm/tqdm/commit/b78efea5903a5f511a3bb22f8de32340ca4b954b"><code>b78efea</code></a>
Using REST API directly</li>
<li><a
href="https://github.com/tqdm/tqdm/commit/5b84012637e1fa6b5fec1b5ce0ac4d7c08eef5fe"><code>5b84012</code></a>
bump version, merge pull request <a
href="https://redirect.github.com/tqdm/tqdm/issues/1627">#1627</a> from
tqdm/devel</li>
<li><a
href="https://github.com/tqdm/tqdm/commit/0a439b5289b28e0a511b16fd10005d44b06cfbde"><code>0a439b5</code></a>
tests: fix nbval DeprecationWarning</li>
<li>Additional commits viewable in <a
href="https://github.com/tqdm/tqdm/compare/v4.66.5...v4.67.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 <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>
github-merge-queue bot pushed a commit to mozilla/experimenter that referenced this pull request Nov 12, 2024
…11741)

Bumps [zipp](https://github.com/jaraco/zipp) from 3.20.0 to 3.21.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jaraco/zipp/blob/main/NEWS.rst">zipp's
changelog</a>.</em></p>
<blockquote>
<h1>v3.21.0</h1>
<h2>Features</h2>
<ul>
<li>Improve performances of :meth:<code>zipfile.Path.open</code> for
non-reading modes. (1a1928d)</li>
<li>Rely on cached_property to cache values on the instance.</li>
<li>Rely on save_method_args to save method args.</li>
</ul>
<h1>v3.20.2</h1>
<h2>Bugfixes</h2>
<ul>
<li>Make zipp.compat.overlay.zipfile hashable. (<a
href="https://redirect.github.com/jaraco/zipp/issues/126">#126</a>)</li>
</ul>
<h1>v3.20.1</h1>
<h2>Bugfixes</h2>
<ul>
<li><code>python/cpython#123270</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/jaraco/zipp/commit/45b7f675c0bcaa4f3f9d15b4399fc71e74f2408c"><code>45b7f67</code></a>
Finalize</li>
<li><a
href="https://github.com/jaraco/zipp/commit/71ddd8d4f4ab200af870f0060d9ee8c6b7056681"><code>71ddd8d</code></a>
Skip
<code>zipfile.Path.exists</code><code>python/cpython#126576</code></li>
<li><a
href="https://github.com/jaraco/zipp/commit/9a2705ee2a376a948f1e89320c8c7356829a42eb"><code>9a2705e</code></a>
Merge <a
href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li>
<li><a
href="https://github.com/jaraco/zipp/commit/5c34e69568f23a524af4fa9dad3f5e80f22ec3e6"><code>5c34e69</code></a>
Use extend for proper workaround.</li>
<li><a
href="https://github.com/jaraco/zipp/commit/ee027f698c9cc629fb0018bc55cbb73267db2817"><code>ee027f6</code></a>
Merge <a
href="https://github.com/jaraco/skeleton">https://github.com/jaraco/skeleton</a></li>
<li><a
href="https://github.com/jaraco/zipp/commit/750a1891ec4a1c0602050e3463e9593a8c13aa14"><code>750a189</code></a>
Require Python 3.9 or later now that Python 3.8 is EOL.</li>
<li><a
href="https://github.com/jaraco/zipp/commit/e61a9df7cdc9c8d1b56c30b7b3f94a7cdac14414"><code>e61a9df</code></a>
Include pyproject.toml in ruff.toml.</li>
<li><a
href="https://github.com/jaraco/zipp/commit/db4dfc495552aca8d6f05ed58441fa65fdc2ed9c"><code>db4dfc4</code></a><code>jaraco/skeleton#151</code></li>
<li><a
href="https://github.com/jaraco/zipp/commit/62b6678a32087ed3bfc8ff19761764340295834e"><code>62b6678</code></a>
Bump pre-commit hook for ruff to avoid clashes with pytest-ruff
(jaraco/skele...</li>
<li><a
href="https://github.com/jaraco/zipp/commit/466f53538bd84cefcca39c5a42775fef6a1bf346"><code>466f535</code></a>
Merge pull request <a
href="https://redirect.github.com/jaraco/zipp/issues/109">#109</a> from
jaraco/feature/functools</li>
<li>Additional commits viewable in <a
href="https://github.com/jaraco/zipp/compare/v3.20.0...v3.21.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=zipp&package-manager=pip&previous-version=3.20.0&new-version=3.21.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 will merge this PR once it's up-to-date and CI passes on it,
as requested by @jaredlockhart.

[//]: # (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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants