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-109653: Improve import time of importlib.metadata / email.utils #114664

Merged
merged 3 commits into from
Jan 29, 2024

Conversation

hauntsaninja
Copy link
Contributor

@hauntsaninja hauntsaninja commented Jan 28, 2024

My criterion for delayed imports is that they're only worth it if the majority of users of the module would benefit from it, otherwise you're just moving latency around unpredictably.

mktime_tz is not used anywhere in the standard library and grep.app indicates it's not got much use in the ecosystem either.

Distribution.files is not nearly as widely used as other importlib.metadata APIs, so we defer the csv import.

And it's pretty easy for Python programs to not ever need calendar and csv.

Before:

λ hyperfine -w 8 './python -c "import importlib.metadata"'
Benchmark 1: ./python -c "import importlib.metadata"
  Time (mean ± σ):      65.1 ms ±   0.5 ms    [User: 55.3 ms, System: 9.8 ms]
  Range (min … max):    64.4 ms …  66.4 ms    44 runs

After:

λ hyperfine -w 8 './python -c "import importlib.metadata"'
Benchmark 1: ./python -c "import importlib.metadata"
  Time (mean ± σ):      62.0 ms ±   0.3 ms    [User: 52.5 ms, System: 9.6 ms]
  Range (min … max):    61.3 ms …  62.8 ms    46 runs

for about a 3ms saving with warm disk cache, maybe 7-11ms with cold disk cache.

My criterion for delayed imports is that they're only worth it if the
majority of users of the module would benefit from it, otherwise you're
just moving latency around unpredictably.

mktime_tz is not used anywhere in the standard library and grep.app
indicates it's not got much use in the ecosystem either.

Distribution.files is not nearly as widely used as other
importlib.metadata APIs, so we defer the csv import.

Before:
```
λ hyperfine -w 8 './python -c "import importlib.metadata"'
Benchmark 1: ./python -c "import importlib.metadata"
  Time (mean ± σ):      65.1 ms ±   0.5 ms    [User: 55.3 ms, System: 9.8 ms]
  Range (min … max):    64.4 ms …  66.4 ms    44 runs
```

After:
```
λ hyperfine -w 8 './python -c "import importlib.metadata"'
Benchmark 1: ./python -c "import importlib.metadata"
  Time (mean ± σ):      62.0 ms ±   0.3 ms    [User: 52.5 ms, System: 9.6 ms]
  Range (min … max):    61.3 ms …  62.8 ms    46 runs
```

for about a 3ms saving with warm disk cache, maybe 7-11ms with cold disk
cache.
Copy link
Member

@jaraco jaraco left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for working on this change. I appreciate the effort.

I'm a little concerned for two reasons.

First, this change implies that best practice is not to put imports at the top of a module, conflicting with my understanding that imports should generally be placed at the top of the module. If there's a systemic problem with eager imports adding undue latency, I'd prefer to see that issue dealt with systemically, rather than piecemeal moving select imports to be late-imported. The approach implied by this change suggests that any Python developer (and especially CPython developers) should be alert to the cost of their imports and aggressively inline imports to be used on demand. I've seen PEP 690, but it appears to have been rejected (and without any reason that I could find in the PEP). It seems to me than something like PEP 690 would be better than selectively combing through codebases and analyzing their imports and tweaking them.

Second, the motivation for this change is lost in the commit - there's nothing in the code or tests that would indicate to a future contributor not to reverse this change for the sake of consistency. At the very least, I'd expect a comment protecting the motivation.

Third, the importlib.metadata part of this change will need to also be contributed to importlib_metadata. That test suite does have performance tests that measure specific performance targets. Perhaps that could be a good place to ensure that the desired behavior is captured.

Given that PEP 690 was rejected, perhaps this kind of change should be enacted through a linter that would automatically scan for imports that are not used until called and automatically move them inline (and thus could also be included in test suites to protect the intention).

I don't have any real objections on this specific change, just a bit of concern at the underlying implications.

@jaraco
Copy link
Member

jaraco commented Jan 28, 2024

My criterion for delayed imports

Perhaps it would be better if there were a shared, published criteria for delayed imports, either in CPython or for Python libs in general.

@jaraco
Copy link
Member

jaraco commented Jan 28, 2024

Perhaps that could be a good place to ensure that the desired behavior is captured.

In python/importlib_metadata@1a209e7e41, I started exploring adding a test that would capture the import time expectation (and at least indicate a regression when if the optimization was removed), but when I added the lazy import for csv, it detected no meaningful performance difference:

exercises.py:import time: 0:00:00.000001 (+0:00:00, 0%)

That indicates to me that the import time is 1 µs before and after the lazy import.

Attempting to understand why the timeit results weren't providing the expected performance gains, I added an assertion and found that the "setup" expression has a different outcome depending on what "test" expression is present:

 importlib_metadata feature/test-import-time @ .tox/py/bin/python -s -m timeit --setup 'import sys; assert "csv" not in sys.modules'
100000000 loops, best of 5: 3.9 nsec per loop
 importlib_metadata feature/test-import-time @ .tox/py/bin/python -s -m timeit --setup 'import sys; assert "csv" not in sys.modules' 'import importlib_metadata'
Traceback (most recent call last):
  File "/opt/homebrew/Cellar/python@3.12/3.12.1_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/timeit.py", line 330, in main
    number, _ = t.autorange(callback)
                ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.12/3.12.1_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/timeit.py", line 226, in autorange
    time_taken = self.timeit(number)
                 ^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.12/3.12.1_1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/timeit.py", line 180, in timeit
    timing = self.inner(it, self.timer)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<timeit-src>", line 3, in inner
    import sys; assert "csv" not in sys.modules
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError

That's weird, right? I would expect the "setup" to be run exactly once before any test expression was run, so it shouldn't be affected by the contents of the test expression, yet it is.

@hauntsaninja
Copy link
Contributor Author

hauntsaninja commented Jan 28, 2024

@jaraco Thank you for taking the time to review. What timeit is doing is something like:

for _ in range(r):
    import sys; assert "csv" not in sys.modules
    # start recording time
    for _ in range(n):
        import importlib.metadata
    # end recording time

r defaults to 5.
n is dynamically guessed if not specified, this involves running your benchmark code, which can again be problematic

This explains why you see:

# this works
λ python -m timeit -n 1 -r 1 --setup 'import sys; assert "csv" not in sys.modules' 'import importlib.metadata'
1 loop, best of 1: 47.5 msec per loop

# but this fails
λ python -m timeit -n 1 -r 2 --setup 'import sys; assert "csv" not in sys.modules' 'import importlib.metadata'
Traceback (most recent call last):
[...]
AssertionError

In general, Python's caching behaviour for imports makes it very easy to benchmark incorrectly when using timeit, so I prefer using subprocesses or general purpose benchmarking tools (like hyperfine above):

λ cat slow.py
import time
time.sleep(1)

# note the UserWarning is a little misleading, even the 11.7 usec "worst time" is obviously not what we're trying to measure
λ python -m timeit 'import slow'
1 loop, best of 5: 542 nsec per loop
:0: UserWarning: The test results are likely unreliable. The worst time (11.7 usec) was more than four times slower than the best time (542 nsec).
λ python -m timeit -r 1 'import slow'
1 loop, best of 1: 9.33 usec per loop
λ python -m timeit -n 1 -r 1 'import slow'
1 loop, best of 1: 1 sec per loop

timeit -n 1 -r 1 will measure the right thing, but noisily — you still need to repeat, since import time is often greatly affected by the state of the disk cache.

First, this change implies that best practice is not to put imports at the top of a module

I think this is a reasonable reason to reject this change. Another understandable reason to reject this change is simply that the benefit is relatively small and as the primary maintainer of this module you'd like a consistent style.

I think of my personal view as pragmatic: importlib.metadata is the slowest import in a command line tool I work on. It's unfortunate that my CLI is slower because importlib.metadata ends up importing email.utils and email.utils imports calendar only for mktime_tz, a function that almost no one uses.

I agree it could be nice to have a more systemic solution. PEP 690 was a global flag to the interpreter, which complicates things, e.g. I think the SC wasn't keen on having libraries double the size of their test matrix. It's also a good point that it could be nice for there to be something in the dev guide about how to think about this.

Second, the motivation for this change is lost in the commit

Thanks, I'll add a comment :-)

Third, the importlib.metadata part of this change will need to also be contributed to importlib_metadata

I can make the same patch to importlib_metadata. Note that of the two changes, deferral of import calendar in email._parseaddr accounts for most of the time saved — this wouldn't apply to importlib_metadata.

Copy link
Member

@AlexWaygood AlexWaygood left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This LGTM. I agree that these are good candidates for lazy imports, and I agree that it would be nice to improve the import time of importlib.metadata, which is a very useful module that unfortunately does have one of the slower import times in the standard library currently. @jaraco should obviously have the final say, though, as the primary maintainer for this module and the importlib_metadata backport.

First, this change implies that best practice is not to put imports at the top of a module, conflicting with my understanding that imports should generally be placed at the top of the module.

While this is a general style recommendation by PEP-8, I think it's worth noting that we already break this in many places across the stdlib, for reasons of pragmatism:

# import types, weakref # Deferred to single_dispatch()

# Some convenience routines. Don't import Parser and Message as side-effects
# of importing email since those cascadingly import most of the rest of the
# email package.
def message_from_string(s, *args, **kws):
"""Parse a string into a Message object model.
Optional _class and strict are passed to the Parser constructor.
"""
from email.parser import Parser
return Parser(*args, **kws).parsestr(s)

cpython/Lib/gettext.py

Lines 351 to 353 in a768e12

# Delay struct import for speeding up gettext import when .mo files
# are not used.
from struct import unpack

cpython/Lib/argparse.py

Lines 141 to 147 in a768e12

# The copy module is used only in the 'append' and 'append_const'
# actions, and it is needed only when the default value isn't a list.
# Delay its import for speeding up the common case.
if type(items) is list:
return items[:]
import copy
return copy.copy(items)

Also, I'll note that PEP-8 also contains this statement ;)

A Foolish Consistency is the Hobgoblin of Little Minds

FWIW, I agree that:

  • We definitely shouldn't run around the whole standard library making all imports lazy; we should look at each one on a case-by-case basis and check that a specific change is impactful before making it
  • We should always add comments to the source code when making changes like this
  • It would also be nice if we could speedup Python's import statement in general (but I don't think that should block small improvements like this, where they make sense)

@jaraco
Copy link
Member

jaraco commented Jan 28, 2024

I can make the same patch to importlib_metadata. Note that of the two changes, deferral of import calendar in email._parseaddr accounts for most of the time saved — this wouldn't apply to importlib_metadata.

I'll take this on, since I've got the muscle memory for doing it. I just wanted to flag it for context.

I prefer using subprocesses or general purpose benchmarking tools

Alex provided a similar suggestion in the linked issue I filed about timeit. I would like for pytest-perf to be able to facilitate the testing of import latency. I'd like for pytest-perf to be one of those general purpose benchmarking tools. I've filed jaraco/pytest-perf#12 to track that possibility.

@danielhollas
Copy link
Contributor

I prefer using subprocesses or general purpose benchmarking tools

Note that there's also a command line option -Ximporttime specifically for disentangling the import time cost. Run e.g. like `python -Ximporttime -c "import importlib.metadata > import_time.out",
producing a text file with the import time of all the modules that end up being imported. (you might want to run it couple times to warm up disc cache, then the results are quite stable in my experience)

You can visualize it with tuna to get a nice icicle graph of where the import time goes.

@hauntsaninja hauntsaninja merged commit 2124a3d into python:main Jan 29, 2024
31 checks passed
@hauntsaninja hauntsaninja deleted the gh109653 branch January 29, 2024 09:30
@hugovk
Copy link
Member

hugovk commented Jan 29, 2024

I've seen PEP 690, but it appears to have been rejected (and without any reason that I could find in the PEP).

To see the SC's rejection notice, click through from "Resolution: Discourse message" in the header; essentially they were concerned over producing a split in the community over how imports work.

You can visualize it with tuna to get a nice icicle graph of where the import time goes.

Yes, tuna is a nice tool. hugovk/pypistats#289 is an example of using it to identify and improve slow imports for a CLI.

As it happens, importlib.metadata accounts for 27% of the final import time in that Python 3.10 example. Measuring again to zoom in, it accounts for 59% (I think because 3.12 is quicker) with 2.3% for calendar and 0.8% for csv so this PR is welcome. Thanks all!

aisk pushed a commit to aisk/cpython that referenced this pull request Feb 11, 2024
…ils (python#114664)

My criterion for delayed imports is that they're only worth it if the
majority of users of the module would benefit from it, otherwise you're
just moving latency around unpredictably.

mktime_tz is not used anywhere in the standard library and grep.app
indicates it's not got much use in the ecosystem either.

Distribution.files is not nearly as widely used as other
importlib.metadata APIs, so we defer the csv import.

Before:
```
λ hyperfine -w 8 './python -c "import importlib.metadata"'
Benchmark 1: ./python -c "import importlib.metadata"
  Time (mean ± σ):      65.1 ms ±   0.5 ms    [User: 55.3 ms, System: 9.8 ms]
  Range (min … max):    64.4 ms …  66.4 ms    44 runs
```

After:
```
λ hyperfine -w 8 './python -c "import importlib.metadata"'
Benchmark 1: ./python -c "import importlib.metadata"
  Time (mean ± σ):      62.0 ms ±   0.3 ms    [User: 52.5 ms, System: 9.6 ms]
  Range (min … max):    61.3 ms …  62.8 ms    46 runs
```

for about a 3ms saving with warm disk cache, maybe 7-11ms with cold disk
cache.
jaraco pushed a commit to python/importlib_metadata that referenced this pull request Mar 20, 2024
…ython/cpython#114664)

My criterion for delayed imports is that they're only worth it if the
majority of users of the module would benefit from it, otherwise you're
just moving latency around unpredictably.

mktime_tz is not used anywhere in the standard library and grep.app
indicates it's not got much use in the ecosystem either.

Distribution.files is not nearly as widely used as other
importlib.metadata APIs, so we defer the csv import.

Before:
```
λ hyperfine -w 8 './python -c "import importlib.metadata"'
Benchmark 1: ./python -c "import importlib.metadata"
  Time (mean ± σ):      65.1 ms ±   0.5 ms    [User: 55.3 ms, System: 9.8 ms]
  Range (min … max):    64.4 ms …  66.4 ms    44 runs
```

After:
```
λ hyperfine -w 8 './python -c "import importlib.metadata"'
Benchmark 1: ./python -c "import importlib.metadata"
  Time (mean ± σ):      62.0 ms ±   0.3 ms    [User: 52.5 ms, System: 9.6 ms]
  Range (min … max):    61.3 ms …  62.8 ms    46 runs
```

for about a 3ms saving with warm disk cache, maybe 7-11ms with cold disk
cache.
@jaraco
Copy link
Member

jaraco commented Mar 20, 2024

Backported in python/importlib_metadata@b4ce0ff90e.

inmantaci pushed a commit to inmanta/inmanta-core that referenced this pull request Mar 21, 2024
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 7.0.2 to 7.1.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/python/importlib_metadata/blob/main/NEWS.rst">importlib-metadata's changelog</a>.</em></p>
<blockquote>
<h1>v7.1.0</h1>
<h2>Features</h2>
<ul>
<li><code>python/cpython#114664</code></li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Make MetadataPathFinder.find_distributions a classmethod for consistency with CPython. Closes <a href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>. (<a href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>)</li>
<li>Allow <code>MetadataPathFinder.invalidate_caches</code> to be called as a classmethod.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/python/importlib_metadata/commit/f5d6b5f3f3f6fffe01b340c5a19562433db148a9"><code>f5d6b5f</code></a> Finalize</li>
<li><a href="https://github.com/python/importlib_metadata/commit/2ef3b5fd9f04730ac4561b6ec5fd7f230bfd18e2"><code>2ef3b5f</code></a> Merge commit '1711b2c198'</li>
<li><a href="https://github.com/python/importlib_metadata/commit/1711b2c1984b2f871fe12c9c14fd7a0b42d32987"><code>1711b2c</code></a> Need to include names from test.support for py312 compat.</li>
<li><a href="https://github.com/python/importlib_metadata/commit/47b14acde7b15472b02a14c7abdd7e5545af37f5"><code>47b14ac</code></a> Make MetadataPathFinder.find_distributions a classmethod for consistency with...</li>
<li><a href="https://github.com/python/importlib_metadata/commit/adc4b124fc57cc3864bf68c61f7fa046757ffa02"><code>adc4b12</code></a> Ensure tests do not leak references in sys.modules.</li>
<li><a href="https://github.com/python/importlib_metadata/commit/07d894d96777e77f9dac3ec671f2dce4c584a26d"><code>07d894d</code></a> Copy backport of isolated_modules from importlib_resources.</li>
<li><a href="https://github.com/python/importlib_metadata/commit/e30a16d471f62555db5605d5652bede9a1234b1a"><code>e30a16d</code></a> Consolidated test support logic in jaraco.test.cpython.</li>
<li><a href="https://github.com/python/importlib_metadata/commit/41ca0390dbb52543104f12c0629f0bbb882e48ea"><code>41ca039</code></a> Moved compatibility tests to the compat package, as they're not included in C...</li>
<li><a href="https://github.com/python/importlib_metadata/commit/5950f43b8f44a1b700342ffd4633c147309b1c7c"><code>5950f43</code></a> Remove legacy logic for Python 3.7.</li>
<li><a href="https://github.com/python/importlib_metadata/commit/ffa719bbd8876b43964b704af34b6bce50ac7271"><code>ffa719b</code></a> Moved compatibility module to compat package.</li>
<li>Additional commits viewable in <a href="https://github.com/python/importlib_metadata/compare/v7.0.2...v7.1.0">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=importlib-metadata&package-manager=pip&previous-version=7.0.2&new-version=7.1.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>
inmantaci pushed a commit to inmanta/inmanta-core that referenced this pull request Mar 21, 2024
Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 7.0.2 to 7.1.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/python/importlib_metadata/blob/main/NEWS.rst">importlib-metadata's changelog</a>.</em></p>
<blockquote>
<h1>v7.1.0</h1>
<h2>Features</h2>
<ul>
<li><code>python/cpython#114664</code></li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Make MetadataPathFinder.find_distributions a classmethod for consistency with CPython. Closes <a href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>. (<a href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>)</li>
<li>Allow <code>MetadataPathFinder.invalidate_caches</code> to be called as a classmethod.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/python/importlib_metadata/commit/f5d6b5f3f3f6fffe01b340c5a19562433db148a9"><code>f5d6b5f</code></a> Finalize</li>
<li><a href="https://github.com/python/importlib_metadata/commit/2ef3b5fd9f04730ac4561b6ec5fd7f230bfd18e2"><code>2ef3b5f</code></a> Merge commit '1711b2c198'</li>
<li><a href="https://github.com/python/importlib_metadata/commit/1711b2c1984b2f871fe12c9c14fd7a0b42d32987"><code>1711b2c</code></a> Need to include names from test.support for py312 compat.</li>
<li><a href="https://github.com/python/importlib_metadata/commit/47b14acde7b15472b02a14c7abdd7e5545af37f5"><code>47b14ac</code></a> Make MetadataPathFinder.find_distributions a classmethod for consistency with...</li>
<li><a href="https://github.com/python/importlib_metadata/commit/adc4b124fc57cc3864bf68c61f7fa046757ffa02"><code>adc4b12</code></a> Ensure tests do not leak references in sys.modules.</li>
<li><a href="https://github.com/python/importlib_metadata/commit/07d894d96777e77f9dac3ec671f2dce4c584a26d"><code>07d894d</code></a> Copy backport of isolated_modules from importlib_resources.</li>
<li><a href="https://github.com/python/importlib_metadata/commit/e30a16d471f62555db5605d5652bede9a1234b1a"><code>e30a16d</code></a> Consolidated test support logic in jaraco.test.cpython.</li>
<li><a href="https://github.com/python/importlib_metadata/commit/41ca0390dbb52543104f12c0629f0bbb882e48ea"><code>41ca039</code></a> Moved compatibility tests to the compat package, as they're not included in C...</li>
<li><a href="https://github.com/python/importlib_metadata/commit/5950f43b8f44a1b700342ffd4633c147309b1c7c"><code>5950f43</code></a> Remove legacy logic for Python 3.7.</li>
<li><a href="https://github.com/python/importlib_metadata/commit/ffa719bbd8876b43964b704af34b6bce50ac7271"><code>ffa719b</code></a> Moved compatibility module to compat package.</li>
<li>Additional commits viewable in <a href="https://github.com/python/importlib_metadata/compare/v7.0.2...v7.1.0">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=importlib-metadata&package-manager=pip&previous-version=7.0.2&new-version=7.1.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>
clrpackages pushed a commit to clearlinux-pkgs/pypi-importlib_metadata that referenced this pull request Mar 22, 2024
…0.2 to version 7.1.0

Jason R. Coombs (13):
      gh-116811: Ensure MetadataPathFinder.invalidate_caches is reachable when delegated through PathFinder. (python/cpython#116812)
      Add support for python/cpython references
      Fix test failures on older Pythons with os_helper shim. Copied 'from_test_support' from importlib_resources.
      Moved compatibility module to compat package.
      Moved compatibility module to compat package.
      Remove legacy logic for Python 3.7.
      Moved compatibility tests to the compat package, as they're not included in CPython.
      Consolidated test support logic in jaraco.test.cpython.
      Copy backport of isolated_modules from importlib_resources.
      Ensure tests do not leak references in sys.modules.
      Make MetadataPathFinder.find_distributions a classmethod for consistency with CPython. Closes #484.
      Need to include names from test.support for py312 compat.
      Finalize

Petr Viktorin (1):
      gh-114107: Fix symlink test if symlinks aren't supported (python/cpython#114108)

Shantanu (1):
      gh-109653: Improve import time of importlib.metadata / email.utils (python/cpython#114664)
bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this pull request Mar 25, 2024
…0940

https://build.opensuse.org/request/show/1160940
by user dirkmueller + anag+factory
- update to 7.1.0:
  * Improve import time (python/cpython#114664).
  * Make MetadataPathFinder.find_distributions a classmethod for
    consistency with CPython. Closes #484.
  * Allow MetadataPathFinder.invalidate_caches to be called as a
    classmethod.
karthiknadig pushed a commit to microsoft/vscode-python that referenced this pull request Apr 3, 2024
Bumps [importlib-metadata](https://github.com/python/importlib_metadata)
from 7.0.1 to 7.1.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/importlib_metadata/blob/main/NEWS.rst">importlib-metadata's
changelog</a>.</em></p>
<blockquote>
<h1>v7.1.0</h1>
<h2>Features</h2>
<ul>
<li><code>python/cpython#114664</code></li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Make MetadataPathFinder.find_distributions a classmethod for
consistency with CPython. Closes <a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>.
(<a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>)</li>
<li>Allow <code>MetadataPathFinder.invalidate_caches</code> to be called
as a classmethod.</li>
</ul>
<h1>v7.0.2</h1>
<p>No significant changes.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/importlib_metadata/commit/f5d6b5f3f3f6fffe01b340c5a19562433db148a9"><code>f5d6b5f</code></a>
Finalize</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/2ef3b5fd9f04730ac4561b6ec5fd7f230bfd18e2"><code>2ef3b5f</code></a>
Merge commit '1711b2c198'</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/1711b2c1984b2f871fe12c9c14fd7a0b42d32987"><code>1711b2c</code></a>
Need to include names from test.support for py312 compat.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/47b14acde7b15472b02a14c7abdd7e5545af37f5"><code>47b14ac</code></a>
Make MetadataPathFinder.find_distributions a classmethod for consistency
with...</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/adc4b124fc57cc3864bf68c61f7fa046757ffa02"><code>adc4b12</code></a>
Ensure tests do not leak references in sys.modules.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/07d894d96777e77f9dac3ec671f2dce4c584a26d"><code>07d894d</code></a>
Copy backport of isolated_modules from importlib_resources.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/e30a16d471f62555db5605d5652bede9a1234b1a"><code>e30a16d</code></a>
Consolidated test support logic in jaraco.test.cpython.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/41ca0390dbb52543104f12c0629f0bbb882e48ea"><code>41ca039</code></a>
Moved compatibility tests to the compat package, as they're not included
in C...</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/5950f43b8f44a1b700342ffd4633c147309b1c7c"><code>5950f43</code></a>
Remove legacy logic for Python 3.7.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/ffa719bbd8876b43964b704af34b6bce50ac7271"><code>ffa719b</code></a>
Moved compatibility module to compat package.</li>
<li>Additional commits viewable in <a
href="https://github.com/python/importlib_metadata/compare/v7.0.1...v7.1.0">compare
view</a></li>
</ul>
</details>
<br />


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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
bors-ferrocene bot added a commit to ferrocene/ferrocene that referenced this pull request Apr 15, 2024
517: Bump sphinx-autobuild from 2024.2.4 to 2024.4.13 in /ferrocene/doc/sphinx-shared-resources r=pietroalbini a=dependabot[bot]

Bumps [sphinx-autobuild](https://github.com/sphinx-doc/sphinx-autobuild) from 2024.2.4 to 2024.4.13.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/sphinx-doc/sphinx-autobuild/releases">sphinx-autobuild's releases</a>.</em></p>
<blockquote>
<h2>Release 2024.04.13</h2>
<p>2024.04.13</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/sphinx-doc/sphinx-autobuild/blob/main/NEWS.rst">sphinx-autobuild's changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>unreleased</h2>
<h2>2024.04.13 - 2024-04-13</h2>
<ul>
<li>Drop <code>python-livereload</code>.</li>
<li>Add <code>starlette</code> and <code>uvicorn</code> as dependencies.</li>
<li>Implement hot reloading via websockets.</li>
<li>Run Sphinx rebuilds in an asynchronous executor.</li>
</ul>
<h2>2024.02.04 - 2024-02-04</h2>
<ul>
<li>Declare support for Python 3.9, 3.10, 3.11, and 3.12</li>
<li>Drop support for Python 3.8 and earlier</li>
<li>Allow passing relative paths to <code>--ignore</code></li>
<li>Support all valid <code>sphinx-build</code> options (except Make-mode)</li>
<li>Fix path issues on Windows</li>
<li>Differentiate pre-build command failures from Sphinx failures</li>
</ul>
<h2>2021.03.14 - 2021-03-14</h2>
<ul>
<li>Change output handling for subprocesses.</li>
<li>Present helpful error message when the subprocesses fail.</li>
<li>Skip the main sphinx build, if pre-build commands fail.</li>
</ul>
<h2>2020.09.01 - 2020-09-01</h2>
<ul>
<li>Adopt Calendar Versioning.</li>
<li>Modernize codebase and require Python 3.6+.</li>
<li>Directly depend on <code>sphinx</code>.</li>
<li>Rewritten documentation.</li>
<li>Invoke sphinx via <code>{sys.executable} -m sphinx</code> instead of <code>sphinx-build</code>.</li>
<li>Trim dependencies down to only <code>livereload</code> and <code>sphinx</code>.</li>
<li>Drop custom adapter for <code>watchdog</code>.</li>
<li>Drop <code>--poll</code> flag.</li>
<li>Drop single letter variants for flags that were specific to sphinx-autobuild.</li>
</ul>
<h2>0.7.1 - 2017/07/05</h2>
<ul>
<li>Remove spurious virtualenv directory from published packages.</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/sphinx-doc/sphinx-autobuild/commit/bf330a4d542b42f5a0bd6510d6a478b17b9e2d8c"><code>bf330a4</code></a> Release 2024.04.13</li>
<li><a href="https://github.com/sphinx-doc/sphinx-autobuild/commit/f17b2ab74356e0c6dd5bb0e99079950f7062769c"><code>f17b2ab</code></a> Allow floating point <code>--delay</code> values</li>
<li><a href="https://github.com/sphinx-doc/sphinx-autobuild/commit/fda9582a10a80f2a68f11453449d82ec4e86bb13"><code>fda9582</code></a> Run <code>change_callback</code> in an asynchronous executor</li>
<li><a href="https://github.com/sphinx-doc/sphinx-autobuild/commit/49af6e1de70d3e9989978b23b0dd8182f1ff2e38"><code>49af6e1</code></a> Correct the help output in README.rst</li>
<li><a href="https://github.com/sphinx-doc/sphinx-autobuild/commit/ca7eebeb98d7987f0a6dbef159dafa9f7e5c7f3d"><code>ca7eebe</code></a> Add changelog entries for dropping livereload</li>
<li><a href="https://github.com/sphinx-doc/sphinx-autobuild/commit/36e37bb9f9d6f4af6ea82b4181cc53ec299a6b75"><code>36e37bb</code></a> Bring AUTHORS.rst up to date</li>
<li><a href="https://github.com/sphinx-doc/sphinx-autobuild/commit/c0111ad55e48fab5ade70580a67fd7bd0313d3e3"><code>c0111ad</code></a> Add more logging</li>
<li><a href="https://github.com/sphinx-doc/sphinx-autobuild/commit/e04c61ead908543b6b3967cadbc33bd9944af6e7"><code>e04c61e</code></a> Add Adam Turner to authors</li>
<li><a href="https://github.com/sphinx-doc/sphinx-autobuild/commit/3a32d1ba16688c38c483b11ac9d66679c3c84d04"><code>3a32d1b</code></a> Implement hot reloading with websockets</li>
<li><a href="https://github.com/sphinx-doc/sphinx-autobuild/commit/1aa4bd3d4dca167fb9f224bb18abb406000788d7"><code>1aa4bd3</code></a> Suppress server shutdown traceback</li>
<li>Additional commits viewable in <a href="https://github.com/sphinx-doc/sphinx-autobuild/compare/2024.02.04...2024.04.13">compare view</a></li>
</ul>
</details>
<br />


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

518: Bump importlib-metadata from 7.0.1 to 7.1.0 in /ferrocene/doc/sphinx-shared-resources r=pietroalbini a=dependabot[bot]

Bumps [importlib-metadata](https://github.com/python/importlib_metadata) from 7.0.1 to 7.1.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/python/importlib_metadata/blob/main/NEWS.rst">importlib-metadata's changelog</a>.</em></p>
<blockquote>
<h1>v7.1.0</h1>
<h2>Features</h2>
<ul>
<li><code>python/cpython#114664</code></li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Make MetadataPathFinder.find_distributions a classmethod for consistency with CPython. Closes <a href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>. (<a href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>)</li>
<li>Allow <code>MetadataPathFinder.invalidate_caches</code> to be called as a classmethod.</li>
</ul>
<h1>v7.0.2</h1>
<p>No significant changes.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/python/importlib_metadata/commit/f5d6b5f3f3f6fffe01b340c5a19562433db148a9"><code>f5d6b5f</code></a> Finalize</li>
<li><a href="https://github.com/python/importlib_metadata/commit/2ef3b5fd9f04730ac4561b6ec5fd7f230bfd18e2"><code>2ef3b5f</code></a> Merge commit '1711b2c198'</li>
<li><a href="https://github.com/python/importlib_metadata/commit/1711b2c1984b2f871fe12c9c14fd7a0b42d32987"><code>1711b2c</code></a> Need to include names from test.support for py312 compat.</li>
<li><a href="https://github.com/python/importlib_metadata/commit/47b14acde7b15472b02a14c7abdd7e5545af37f5"><code>47b14ac</code></a> Make MetadataPathFinder.find_distributions a classmethod for consistency with...</li>
<li><a href="https://github.com/python/importlib_metadata/commit/adc4b124fc57cc3864bf68c61f7fa046757ffa02"><code>adc4b12</code></a> Ensure tests do not leak references in sys.modules.</li>
<li><a href="https://github.com/python/importlib_metadata/commit/07d894d96777e77f9dac3ec671f2dce4c584a26d"><code>07d894d</code></a> Copy backport of isolated_modules from importlib_resources.</li>
<li><a href="https://github.com/python/importlib_metadata/commit/e30a16d471f62555db5605d5652bede9a1234b1a"><code>e30a16d</code></a> Consolidated test support logic in jaraco.test.cpython.</li>
<li><a href="https://github.com/python/importlib_metadata/commit/41ca0390dbb52543104f12c0629f0bbb882e48ea"><code>41ca039</code></a> Moved compatibility tests to the compat package, as they're not included in C...</li>
<li><a href="https://github.com/python/importlib_metadata/commit/5950f43b8f44a1b700342ffd4633c147309b1c7c"><code>5950f43</code></a> Remove legacy logic for Python 3.7.</li>
<li><a href="https://github.com/python/importlib_metadata/commit/ffa719bbd8876b43964b704af34b6bce50ac7271"><code>ffa719b</code></a> Moved compatibility module to compat package.</li>
<li>Additional commits viewable in <a href="https://github.com/python/importlib_metadata/compare/v7.0.1...v7.1.0">compare view</a></li>
</ul>
</details>
<br />


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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
shaldengeki pushed a commit to shaldengeki/monorepo that referenced this pull request Apr 18, 2024
Bumps [importlib-metadata](https://github.com/python/importlib_metadata)
from 7.0.1 to 7.1.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/importlib_metadata/blob/main/NEWS.rst">importlib-metadata's
changelog</a>.</em></p>
<blockquote>
<h1>v7.1.0</h1>
<h2>Features</h2>
<ul>
<li><code>python/cpython#114664</code></li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Make MetadataPathFinder.find_distributions a classmethod for
consistency with CPython. Closes <a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>.
(<a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>)</li>
<li>Allow <code>MetadataPathFinder.invalidate_caches</code> to be called
as a classmethod.</li>
</ul>
<h1>v7.0.2</h1>
<p>No significant changes.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/importlib_metadata/commit/f5d6b5f3f3f6fffe01b340c5a19562433db148a9"><code>f5d6b5f</code></a>
Finalize</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/2ef3b5fd9f04730ac4561b6ec5fd7f230bfd18e2"><code>2ef3b5f</code></a>
Merge commit '1711b2c198'</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/1711b2c1984b2f871fe12c9c14fd7a0b42d32987"><code>1711b2c</code></a>
Need to include names from test.support for py312 compat.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/47b14acde7b15472b02a14c7abdd7e5545af37f5"><code>47b14ac</code></a>
Make MetadataPathFinder.find_distributions a classmethod for consistency
with...</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/adc4b124fc57cc3864bf68c61f7fa046757ffa02"><code>adc4b12</code></a>
Ensure tests do not leak references in sys.modules.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/07d894d96777e77f9dac3ec671f2dce4c584a26d"><code>07d894d</code></a>
Copy backport of isolated_modules from importlib_resources.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/e30a16d471f62555db5605d5652bede9a1234b1a"><code>e30a16d</code></a>
Consolidated test support logic in jaraco.test.cpython.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/41ca0390dbb52543104f12c0629f0bbb882e48ea"><code>41ca039</code></a>
Moved compatibility tests to the compat package, as they're not included
in C...</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/5950f43b8f44a1b700342ffd4633c147309b1c7c"><code>5950f43</code></a>
Remove legacy logic for Python 3.7.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/ffa719bbd8876b43964b704af34b6bce50ac7271"><code>ffa719b</code></a>
Moved compatibility module to compat package.</li>
<li>Additional commits viewable in <a
href="https://github.com/python/importlib_metadata/compare/v7.0.1...v7.1.0">compare
view</a></li>
</ul>
</details>
<br />


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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
javajawa added a commit to mewbotorg/mewbot that referenced this pull request Apr 19, 2024
Updates the requirements on
[importlib-metadata](https://github.com/python/importlib_metadata) to
permit the latest version.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/importlib_metadata/blob/main/NEWS.rst">importlib-metadata's
changelog</a>.</em></p>
<blockquote>
<h1>v7.1.0</h1>
<h2>Features</h2>
<ul>
<li><code>python/cpython#114664</code></li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Make MetadataPathFinder.find_distributions a classmethod for
consistency with CPython. Closes <a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>.
(<a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>)</li>
<li>Allow <code>MetadataPathFinder.invalidate_caches</code> to be called
as a classmethod.</li>
</ul>
<h1>v7.0.2</h1>
<p>No significant changes.</p>
<h1>v7.0.1</h1>
<h2>Bugfixes</h2>
<ul>
<li>Corrected the interface for SimplePath to encompass the expectations
of locate_file and PackagePath.</li>
<li>Fixed type annotations to allow strings.</li>
</ul>
<h1>v7.0.0</h1>
<h2>Deprecations and Removals</h2>
<ul>
<li>Removed EntryPoint access by numeric index (tuple behavior).</li>
</ul>
<h1>v6.11.0</h1>
<h2>Features</h2>
<ul>
<li>Added <code>Distribution.origin</code> supplying the
<code>direct_url.json</code> in a <code>SimpleNamespace</code>. (<a
href="https://redirect.github.com/python/importlib_metadata/issues/404">#404</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/importlib_metadata/commit/f5d6b5f3f3f6fffe01b340c5a19562433db148a9"><code>f5d6b5f</code></a>
Finalize</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/2ef3b5fd9f04730ac4561b6ec5fd7f230bfd18e2"><code>2ef3b5f</code></a>
Merge commit '1711b2c198'</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/1711b2c1984b2f871fe12c9c14fd7a0b42d32987"><code>1711b2c</code></a>
Need to include names from test.support for py312 compat.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/47b14acde7b15472b02a14c7abdd7e5545af37f5"><code>47b14ac</code></a>
Make MetadataPathFinder.find_distributions a classmethod for consistency
with...</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/adc4b124fc57cc3864bf68c61f7fa046757ffa02"><code>adc4b12</code></a>
Ensure tests do not leak references in sys.modules.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/07d894d96777e77f9dac3ec671f2dce4c584a26d"><code>07d894d</code></a>
Copy backport of isolated_modules from importlib_resources.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/e30a16d471f62555db5605d5652bede9a1234b1a"><code>e30a16d</code></a>
Consolidated test support logic in jaraco.test.cpython.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/41ca0390dbb52543104f12c0629f0bbb882e48ea"><code>41ca039</code></a>
Moved compatibility tests to the compat package, as they're not included
in C...</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/5950f43b8f44a1b700342ffd4633c147309b1c7c"><code>5950f43</code></a>
Remove legacy logic for Python 3.7.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/ffa719bbd8876b43964b704af34b6bce50ac7271"><code>ffa719b</code></a>
Moved compatibility module to compat package.</li>
<li>Additional commits viewable in <a
href="https://github.com/python/importlib_metadata/compare/v7.0.2...v7.1.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>
wesm pushed a commit to posit-dev/positron that referenced this pull request May 10, 2024
…23106)

Bumps [importlib-metadata](https://github.com/python/importlib_metadata)
from 7.0.1 to 7.1.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/importlib_metadata/blob/main/NEWS.rst">importlib-metadata's
changelog</a>.</em></p>
<blockquote>
<h1>v7.1.0</h1>
<h2>Features</h2>
<ul>
<li><code>python/cpython#114664</code></li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Make MetadataPathFinder.find_distributions a classmethod for
consistency with CPython. Closes <a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>.
(<a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>)</li>
<li>Allow <code>MetadataPathFinder.invalidate_caches</code> to be called
as a classmethod.</li>
</ul>
<h1>v7.0.2</h1>
<p>No significant changes.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/importlib_metadata/commit/f5d6b5f3f3f6fffe01b340c5a19562433db148a9"><code>f5d6b5f</code></a>
Finalize</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/2ef3b5fd9f04730ac4561b6ec5fd7f230bfd18e2"><code>2ef3b5f</code></a>
Merge commit '1711b2c198'</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/1711b2c1984b2f871fe12c9c14fd7a0b42d32987"><code>1711b2c</code></a>
Need to include names from test.support for py312 compat.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/47b14acde7b15472b02a14c7abdd7e5545af37f5"><code>47b14ac</code></a>
Make MetadataPathFinder.find_distributions a classmethod for consistency
with...</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/adc4b124fc57cc3864bf68c61f7fa046757ffa02"><code>adc4b12</code></a>
Ensure tests do not leak references in sys.modules.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/07d894d96777e77f9dac3ec671f2dce4c584a26d"><code>07d894d</code></a>
Copy backport of isolated_modules from importlib_resources.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/e30a16d471f62555db5605d5652bede9a1234b1a"><code>e30a16d</code></a>
Consolidated test support logic in jaraco.test.cpython.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/41ca0390dbb52543104f12c0629f0bbb882e48ea"><code>41ca039</code></a>
Moved compatibility tests to the compat package, as they're not included
in C...</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/5950f43b8f44a1b700342ffd4633c147309b1c7c"><code>5950f43</code></a>
Remove legacy logic for Python 3.7.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/ffa719bbd8876b43964b704af34b6bce50ac7271"><code>ffa719b</code></a>
Moved compatibility module to compat package.</li>
<li>Additional commits viewable in <a
href="https://github.com/python/importlib_metadata/compare/v7.0.1...v7.1.0">compare
view</a></li>
</ul>
</details>
<br />

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
seeM pushed a commit to posit-dev/positron that referenced this pull request May 12, 2024
…23106)

Bumps [importlib-metadata](https://github.com/python/importlib_metadata)
from 7.0.1 to 7.1.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/importlib_metadata/blob/main/NEWS.rst">importlib-metadata's
changelog</a>.</em></p>
<blockquote>
<h1>v7.1.0</h1>
<h2>Features</h2>
<ul>
<li><code>python/cpython#114664</code></li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Make MetadataPathFinder.find_distributions a classmethod for
consistency with CPython. Closes <a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>.
(<a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>)</li>
<li>Allow <code>MetadataPathFinder.invalidate_caches</code> to be called
as a classmethod.</li>
</ul>
<h1>v7.0.2</h1>
<p>No significant changes.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/importlib_metadata/commit/f5d6b5f3f3f6fffe01b340c5a19562433db148a9"><code>f5d6b5f</code></a>
Finalize</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/2ef3b5fd9f04730ac4561b6ec5fd7f230bfd18e2"><code>2ef3b5f</code></a>
Merge commit '1711b2c198'</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/1711b2c1984b2f871fe12c9c14fd7a0b42d32987"><code>1711b2c</code></a>
Need to include names from test.support for py312 compat.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/47b14acde7b15472b02a14c7abdd7e5545af37f5"><code>47b14ac</code></a>
Make MetadataPathFinder.find_distributions a classmethod for consistency
with...</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/adc4b124fc57cc3864bf68c61f7fa046757ffa02"><code>adc4b12</code></a>
Ensure tests do not leak references in sys.modules.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/07d894d96777e77f9dac3ec671f2dce4c584a26d"><code>07d894d</code></a>
Copy backport of isolated_modules from importlib_resources.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/e30a16d471f62555db5605d5652bede9a1234b1a"><code>e30a16d</code></a>
Consolidated test support logic in jaraco.test.cpython.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/41ca0390dbb52543104f12c0629f0bbb882e48ea"><code>41ca039</code></a>
Moved compatibility tests to the compat package, as they're not included
in C...</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/5950f43b8f44a1b700342ffd4633c147309b1c7c"><code>5950f43</code></a>
Remove legacy logic for Python 3.7.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/ffa719bbd8876b43964b704af34b6bce50ac7271"><code>ffa719b</code></a>
Moved compatibility module to compat package.</li>
<li>Additional commits viewable in <a
href="https://github.com/python/importlib_metadata/compare/v7.0.1...v7.1.0">compare
view</a></li>
</ul>
</details>
<br />

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
wesm pushed a commit to posit-dev/positron that referenced this pull request May 13, 2024
…23106)

Bumps [importlib-metadata](https://github.com/python/importlib_metadata)
from 7.0.1 to 7.1.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/importlib_metadata/blob/main/NEWS.rst">importlib-metadata's
changelog</a>.</em></p>
<blockquote>
<h1>v7.1.0</h1>
<h2>Features</h2>
<ul>
<li><code>python/cpython#114664</code></li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Make MetadataPathFinder.find_distributions a classmethod for
consistency with CPython. Closes <a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>.
(<a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>)</li>
<li>Allow <code>MetadataPathFinder.invalidate_caches</code> to be called
as a classmethod.</li>
</ul>
<h1>v7.0.2</h1>
<p>No significant changes.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/importlib_metadata/commit/f5d6b5f3f3f6fffe01b340c5a19562433db148a9"><code>f5d6b5f</code></a>
Finalize</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/2ef3b5fd9f04730ac4561b6ec5fd7f230bfd18e2"><code>2ef3b5f</code></a>
Merge commit '1711b2c198'</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/1711b2c1984b2f871fe12c9c14fd7a0b42d32987"><code>1711b2c</code></a>
Need to include names from test.support for py312 compat.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/47b14acde7b15472b02a14c7abdd7e5545af37f5"><code>47b14ac</code></a>
Make MetadataPathFinder.find_distributions a classmethod for consistency
with...</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/adc4b124fc57cc3864bf68c61f7fa046757ffa02"><code>adc4b12</code></a>
Ensure tests do not leak references in sys.modules.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/07d894d96777e77f9dac3ec671f2dce4c584a26d"><code>07d894d</code></a>
Copy backport of isolated_modules from importlib_resources.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/e30a16d471f62555db5605d5652bede9a1234b1a"><code>e30a16d</code></a>
Consolidated test support logic in jaraco.test.cpython.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/41ca0390dbb52543104f12c0629f0bbb882e48ea"><code>41ca039</code></a>
Moved compatibility tests to the compat package, as they're not included
in C...</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/5950f43b8f44a1b700342ffd4633c147309b1c7c"><code>5950f43</code></a>
Remove legacy logic for Python 3.7.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/ffa719bbd8876b43964b704af34b6bce50ac7271"><code>ffa719b</code></a>
Moved compatibility module to compat package.</li>
<li>Additional commits viewable in <a
href="https://github.com/python/importlib_metadata/compare/v7.0.1...v7.1.0">compare
view</a></li>
</ul>
</details>
<br />

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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
VadVergasov pushed a commit to VadVergasov/CodeforcesApiPy that referenced this pull request Jul 6, 2024
Bumps [importlib-metadata](https://github.com/python/importlib_metadata)
from 5.0.0 to 8.0.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/importlib_metadata/blob/main/NEWS.rst">importlib-metadata's
changelog</a>.</em></p>
<blockquote>
<h1>v8.0.0</h1>
<h2>Deprecations and Removals</h2>
<ul>
<li>Message.<strong>getitem</strong> now raises a KeyError on missing
keys. (<a
href="https://redirect.github.com/python/importlib_metadata/issues/371">#371</a>)</li>
<li>Removed deprecated support for Distribution subclasses not
implementing abstract methods.</li>
</ul>
<h1>v7.2.1</h1>
<h2>Bugfixes</h2>
<ul>
<li>When reading installed files from an egg, use
<code>relative_to(walk_up=True)</code> to honor files installed outside
of the installation root. (<a
href="https://redirect.github.com/python/importlib_metadata/issues/455">#455</a>)</li>
</ul>
<h1>v7.2.0</h1>
<h2>Features</h2>
<ul>
<li><code>python/cpython#109829</code></li>
<li>Updated fixtures for <a
href="https://redirect.github.com/python/cpython/issues/120801">python/cpython#120801</a>.</li>
</ul>
<h1>v7.1.0</h1>
<h2>Features</h2>
<ul>
<li><code>python/cpython#114664</code></li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Make MetadataPathFinder.find_distributions a classmethod for
consistency with CPython. Closes <a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>.
(<a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>)</li>
<li>Allow <code>MetadataPathFinder.invalidate_caches</code> to be called
as a classmethod.</li>
</ul>
<h1>v7.0.2</h1>
<p>No significant changes.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/importlib_metadata/commit/f3901686abc47853523f3b211873fc2b9e0c5ab5"><code>f390168</code></a>
Finalize</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/c3bae1e905c3d8394bd4f28512cac50fc61e77ae"><code>c3bae1e</code></a>
Merge pull request <a
href="https://redirect.github.com/python/importlib_metadata/issues/491">#491</a>
from python/debt/remove-legacy</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/a970a491b56a3bf529821ce21867af4573cf2e0d"><code>a970a49</code></a>
Message.<strong>getitem</strong> now raises a KeyError on missing
keys.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/32c14aa622cd6d8c41449f5163370dc60af1e5dc"><code>32c14aa</code></a>
Removed deprecated support for Distribution subclasses not implementing
abstr...</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/b76931df96cb577bedbfac086d507a731a74b4b3"><code>b76931d</code></a>
Finalize</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/48d2a85c1c093a5f0b860be988449a2a1335ca63"><code>48d2a85</code></a>
Merge pull request <a
href="https://redirect.github.com/python/importlib_metadata/issues/482">#482</a>
from dan-blanchard/fix-relative-to</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/b94b42ef3103250a0f509f68170037199dc86583"><code>b94b42e</code></a>
Add news fragment</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/e4d1dcca7244c0d890c57eb24b3b8a6a76f4910e"><code>e4d1dcc</code></a>
Remove additional method in SimplePath.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/07a2a4402fb39f03facea611fa9da8d9b927602e"><code>07a2a44</code></a>
Revert &quot;Fix mypy failure that has nothing to do with this
PR&quot;</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/b815aee5352ed728f6f90ba7362f3dddf46ab418"><code>b815aee</code></a>
Mark compat code as uncovered.</li>
<li>Additional commits viewable in <a
href="https://github.com/python/importlib_metadata/compare/v5.0.0...v8.0.0">compare
view</a></li>
</ul>
</details>
<br />


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

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
VadVergasov pushed a commit to VadVergasov/CodeforcesApiPy that referenced this pull request Jul 6, 2024
Bumps [importlib-metadata](https://github.com/python/importlib_metadata)
from 5.0.0 to 8.0.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/python/importlib_metadata/blob/main/NEWS.rst">importlib-metadata's
changelog</a>.</em></p>
<blockquote>
<h1>v8.0.0</h1>
<h2>Deprecations and Removals</h2>
<ul>
<li>Message.<strong>getitem</strong> now raises a KeyError on missing
keys. (<a
href="https://redirect.github.com/python/importlib_metadata/issues/371">#371</a>)</li>
<li>Removed deprecated support for Distribution subclasses not
implementing abstract methods.</li>
</ul>
<h1>v7.2.1</h1>
<h2>Bugfixes</h2>
<ul>
<li>When reading installed files from an egg, use
<code>relative_to(walk_up=True)</code> to honor files installed outside
of the installation root. (<a
href="https://redirect.github.com/python/importlib_metadata/issues/455">#455</a>)</li>
</ul>
<h1>v7.2.0</h1>
<h2>Features</h2>
<ul>
<li><code>python/cpython#109829</code></li>
<li>Updated fixtures for <a
href="https://redirect.github.com/python/cpython/issues/120801">python/cpython#120801</a>.</li>
</ul>
<h1>v7.1.0</h1>
<h2>Features</h2>
<ul>
<li><code>python/cpython#114664</code></li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>Make MetadataPathFinder.find_distributions a classmethod for
consistency with CPython. Closes <a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>.
(<a
href="https://redirect.github.com/python/importlib_metadata/issues/484">#484</a>)</li>
<li>Allow <code>MetadataPathFinder.invalidate_caches</code> to be called
as a classmethod.</li>
</ul>
<h1>v7.0.2</h1>
<p>No significant changes.</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/python/importlib_metadata/commit/f3901686abc47853523f3b211873fc2b9e0c5ab5"><code>f390168</code></a>
Finalize</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/c3bae1e905c3d8394bd4f28512cac50fc61e77ae"><code>c3bae1e</code></a>
Merge pull request <a
href="https://redirect.github.com/python/importlib_metadata/issues/491">#491</a>
from python/debt/remove-legacy</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/a970a491b56a3bf529821ce21867af4573cf2e0d"><code>a970a49</code></a>
Message.<strong>getitem</strong> now raises a KeyError on missing
keys.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/32c14aa622cd6d8c41449f5163370dc60af1e5dc"><code>32c14aa</code></a>
Removed deprecated support for Distribution subclasses not implementing
abstr...</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/b76931df96cb577bedbfac086d507a731a74b4b3"><code>b76931d</code></a>
Finalize</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/48d2a85c1c093a5f0b860be988449a2a1335ca63"><code>48d2a85</code></a>
Merge pull request <a
href="https://redirect.github.com/python/importlib_metadata/issues/482">#482</a>
from dan-blanchard/fix-relative-to</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/b94b42ef3103250a0f509f68170037199dc86583"><code>b94b42e</code></a>
Add news fragment</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/e4d1dcca7244c0d890c57eb24b3b8a6a76f4910e"><code>e4d1dcc</code></a>
Remove additional method in SimplePath.</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/07a2a4402fb39f03facea611fa9da8d9b927602e"><code>07a2a44</code></a>
Revert &quot;Fix mypy failure that has nothing to do with this
PR&quot;</li>
<li><a
href="https://github.com/python/importlib_metadata/commit/b815aee5352ed728f6f90ba7362f3dddf46ab418"><code>b815aee</code></a>
Mark compat code as uncovered.</li>
<li>Additional commits viewable in <a
href="https://github.com/python/importlib_metadata/compare/v5.0.0...v8.0.0">compare
view</a></li>
</ul>
</details>
<br />


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

Signed-off-by: dependabot[bot] <support@github.com>
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.

None yet

5 participants