pytest-dev / pytest

The pytest framework makes it easy to write small tests, yet scales to support complex functional testing
https://pytest.org
MIT License
12.18k stars 2.7k forks source link

[prerelease] Performance regression? #9478

Closed The-Compiler closed 2 years ago

The-Compiler commented 2 years ago

According to nikolaizujev on Twitter:

Tested on several internal projects, noticed almost 2x slowdown compared to 6.2.5 on py3.8

Unfortunately no reproducer, but I got .prof dumps from them: Dropbox - pytest - Simplify your life

Opening this to remind myself to have a look at those before the final release - but ideally we'd have a proper reproducer so we can e.g. bisect this. Does anyone have any guess what could be the culprit? I only see a very small slowdown for my own project.

@hroncok Is there perhaps a way to find out which packages in Fedora took significantly longer to run tests with pytest 7 compared to 6? This would mainly be for runs which still pass, because if there are failures, all bets regarding the runtime are off anyways.

hroncok commented 2 years ago

@hroncok Is there perhaps a way to find out which packages in Fedora took significantly longer to run tests with pytest 7 compared to 6?

There is. I can rebuild all the succeeded packages with pytest 6 and then we can parse the time information for pytest from the logs. We also have the overall build time, but that is unfortunately influenced by unstable external factors.

The-Compiler commented 2 years ago

If you could do that, that'd be amazing! Would be great to see how big the impact is, and also perhaps find a project to reproduce the issue with. Let me know if there is something I can help with.

hroncok commented 2 years ago

For pytest 7:

while read line; do
  pkg=$(echo "$line" | cut -f1)
  chroot=$(echo "$line" | cut -f2)  # this will always be the same, but meh
  buildid=$(echo "$line" | cut -f3)
  url="https://download.copr.fedorainfracloud.org/results/churchyard/pytest-7/${chroot}/$(printf "%08d" $buildid)-${pkg}/build.log.gz"
  echo $pkg
  curl -s -L "$url" | gzip -d - | grep -E '^=+ [[:digit:]]+ passed.* =+$'
  echo
  echo
done < <(copr monitor churchyard/pytest-7 --output-format text-row | grep 'succeeded$')

...running...

hroncok commented 2 years ago

In the meantime, the pytest 6 builds run in https://copr.fedorainfracloud.org/coprs/churchyard/pytest-6/builds/

I the times will indeed be off, I can resubmit the pytest-7 builds once more to eliminate a difference in e.g. upgraded hardware or whatever, the pytest-7 builds are quite old now.

hroncok commented 2 years ago

pytest 7

2ping
================== 121 passed, 4 skipped in 63.86s (0:01:03) ===================

abrt
============================== 45 passed in 2.25s ==============================

andriller
======================== 88 passed, 2 warnings in 3.96s ========================

androguard
==== 102 passed, 2 skipped, 30 deselected, 1 xfailed, 27 warnings in 45.16s ====

APLpy

argparse-manpage
============================== 11 passed in 4.05s ==============================

artifacts
======================== 28 passed, 2 warnings in 2.11s ========================

auditwheel
======================== 73 passed, 1 warning in 0.76s =========================

...

The entire log: pytest-7.txt


In case you want to parse that, note that some packages have no info (pytest was not actually invoked during the build or the output is unusual) and some have multiple infos (pytest was invoked multiple times during one build).

hroncok commented 2 years ago

noticed almost 2x slowdown compared to 6.2.5 on py3.8

The Fedora tests are with Python 3.10.1.

The-Compiler commented 2 years ago

Great, thank you! Parsed with:

import pathlib
import re
from rich import print  # optional

txt = pathlib.Path("pytest-7.txt").read_text()
data = [e.strip().splitlines() for e in txt.strip().split("\n\n")]

total_times = {}

for name, *rest in data:
    if not rest:
        continue
    # print(name)

    times = []
    for line in rest:
        assert line.startswith("=") and line.endswith("=")
        m = re.match(r".* in ([\d.]*)s ", line)
        times.append(float(m.group(1)))

    total_times[name] = sum(times)

print(total_times)

so we should be able to compare things once you have the same logs for pytest 6 ready. Thanks again! FWIW I'd hope that the Python version doesn't make a difference, given that the reporter had the slowdown with two different pytest versions but the same Python version (I assume).

The-Compiler commented 2 years ago

I've compared the two profile files - the information in them seem to be a little tricky, but here is what I learned:

Unfortunately I can't seem to get the callees of that from the profile... but one offender I found by clicking around seems to be pathlib.is_file in _getconftestmodules - pytest 6:

image

pytest 7:

image

Similarly, during collection, with pytest 6:

image

pytest 7:

image


A different look with another tool (pyprof2calltree and KCacheGrind instead of SnakeViz), pytest 6:

image

pytest 7:

image


Take it with a grain of salt as interpreting Python profiles seems to differ a bit depending on the tools usually, but that gives us a rough idea where to look I guess. @bluetech do you have any idea how this could happen? I'm also wondering if there is simply something different about their environment, or they perhaps have a virtualenv or somesuch which isn't in norecursedirs for one setup but not the others...

The-Compiler commented 2 years ago

After some more digging around, it looks like most of that code is older - I wonder if this is caused by 614f5394b50ac88b7aa4e97b43acb08aca383d95 (and 16e5fbe3714b0e1b0ab0d27bf3938bf2218c90cd missing some case) perhaps?

RonnyPfannschmidt commented 2 years ago

the way the code repeatedly checks for dirs/files and subdirs seems confusingly expensive, it may be sensible to put the conftests/ancors into the collection tree (and link the conftests to pakcages/directories)

hroncok commented 2 years ago

Note that the pytest 6 file may not contain the exact same set of packages, so don't count a naïve total sum: pytest-6.txt

The-Compiler commented 2 years ago

Some more detailed analysis based on those two logs:

```python import pathlib import dataclasses import operator import re import rich import rich.table @dataclasses.dataclass class Entry: name: str time6: float time7: float dabs: float = dataclasses.field(init=False) drel: float = dataclasses.field(init=False) def __post_init__(self): self.dabs = self.time7 - self.time6 self.drel = self.dabs / self.time6 * 100 def parse_log(path: pathlib.Path): txt = path.read_text() data = [e.strip().splitlines() for e in txt.strip().split("\n\n")] total_times = {} for name, *rest in data: if not rest: continue # print(name) times = [] for line in rest: assert line.startswith("=") and line.endswith("=") m = re.match(r".* in ([\d.]*)s ", line) times.append(float(m.group(1))) total_times[name] = sum(times) return total_times def gen_entries(times6, times7): for name in times6.keys() | times7.keys(): if times6.get(name) == 0: continue try: yield Entry(name=name, time6=times6[name], time7=times7[name]) except KeyError: pass def avg(elems): lst = list(elems) return sum(lst) / len(lst) def main(): times6 = parse_log(pathlib.Path("pytest-6.txt")) times7 = parse_log(pathlib.Path("pytest-7.txt")) entries = sorted(gen_entries(times6, times7), key=operator.attrgetter("drel")) table = rich.table.Table() delta = "\N{Greek Capital Letter Delta}" table.add_column("Name") table.add_column("pytest 6", justify="right") table.add_column("pytest 7", justify="right") table.add_column(f"{delta}abs", justify="right") table.add_column(f"{delta}rel", justify="right") for e in entries: table.add_row(e.name, f"{e.time6:.02f}", f"{e.time7:.02f}", f"{e.dabs:.02f}", f"{e.drel:.02f}%") sum6 = sum(e.time6 for e in entries) sum7 = sum(e.time7 for e in entries) sumabs = sum(e.dabs for e in entries) sumrel = sumabs / sum6 * 100 table.add_row("sum", f"{sum6:.02f}", f"{sum7:.02f}", f"{sumabs:.02f}", f"{sumrel:.02f}%", style="blue") avg6 = avg(e.time6 for e in entries) avg7 = avg(e.time7 for e in entries) avgabs = avg(e.dabs for e in entries) avgrel = avg(e.drel for e in entries) table.add_row("avg", f"{avg6:.02f}", f"{avg7:.02f}", f"{avgabs:.02f}", f"{avgrel:.02f}%", style="blue") rich.print(table) if __name__ == "__main__": main() ```

results in:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┓
┃ Name                                      ┃ pytest 6 ┃ pytest 7 ┃    Δabs ┃    Δrel ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━┩
[...]
│ python-validators                         │     0.47 │     1.38 │    0.91 │ 193.62% │
│ python-tinycss2                           │     1.23 │     3.62 │    2.39 │ 194.31% │
│ python-managesieve                        │     0.18 │     0.53 │    0.35 │ 194.44% │
│ python-uamqp                              │     0.96 │     2.83 │    1.87 │ 194.79% │
│ python-rangeparser                        │     0.01 │     0.03 │    0.02 │ 200.00% │
│ python-whichcraft                         │     0.01 │     0.03 │    0.02 │ 200.00% │
│ python-pathvalidate                       │     3.46 │    10.64 │    7.18 │ 207.51% │
│ python-biscuits                           │     0.07 │     0.22 │    0.15 │ 214.29% │
│ python-colorzero                          │     3.77 │    11.87 │    8.10 │ 214.85% │
│ python-tomli-w                            │     0.49 │     1.57 │    1.08 │ 220.41% │
│ python-tomli                              │     0.82 │     2.92 │    2.10 │ 256.10% │
│ python-node-semver                        │     1.09 │     3.92 │    2.83 │ 259.63% │
│ sum                                       │ 31191.28 │ 41189.35 │ 9998.07 │  32.05% │
│ avg                                       │    32.73 │    43.22 │   10.49 │  24.50% │
└───────────────────────────────────────────┴──────────┴──────────┴─────────┴─────────┘

So it does look like the build in total (only considering packages in both sets) took some 2h 45min longer, or around 30%...

Of course there are a lot of factors involved, but it does seem like things got slower overall, perhaps enough that we should take a closer look?

Full output:

``` ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┓ ┃ Name ┃ pytest 6 ┃ pytest 7 ┃ Δabs ┃ Δrel ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━┩ │ python-jupyter-console │ 62.87 │ 3.48 │ -59.39 │ -94.46% │ │ python-typing-extensions │ 0.93 │ 0.41 │ -0.52 │ -55.91% │ │ python3-pyPEG2 │ 0.32 │ 0.18 │ -0.14 │ -43.75% │ │ pytest │ 166.15 │ 94.75 │ -71.40 │ -42.97% │ │ python-google-api-core │ 16.50 │ 10.05 │ -6.45 │ -39.09% │ │ python-tifffile │ 584.13 │ 370.39 │ -213.74 │ -36.59% │ │ python-sentinels │ 0.03 │ 0.02 │ -0.01 │ -33.33% │ │ python-hypothesis-fspaths │ 10.64 │ 7.40 │ -3.24 │ -30.45% │ │ python-configobj │ 0.36 │ 0.26 │ -0.10 │ -27.78% │ │ python-smbprotocol │ 4.02 │ 2.92 │ -1.10 │ -27.36% │ │ h5py │ 6.06 │ 4.53 │ -1.53 │ -25.25% │ │ python-webob │ 9.88 │ 7.47 │ -2.41 │ -24.39% │ │ python-aiohttp-cors │ 1.56 │ 1.21 │ -0.35 │ -22.44% │ │ python-cherrypy │ 111.02 │ 87.13 │ -23.89 │ -21.52% │ │ python-traitlets │ 2.52 │ 1.98 │ -0.54 │ -21.43% │ │ python-mongomock │ 1.96 │ 1.54 │ -0.42 │ -21.43% │ │ python-paste │ 1.88 │ 1.48 │ -0.40 │ -21.28% │ │ python-toml-adapt │ 0.05 │ 0.04 │ -0.01 │ -20.00% │ │ python-configargparse │ 0.20 │ 0.16 │ -0.04 │ -20.00% │ │ python-sqlalchemy │ 879.23 │ 712.83 │ -166.40 │ -18.93% │ │ python-pytest-mpi │ 24.19 │ 19.80 │ -4.39 │ -18.15% │ │ python-plyvel │ 3.06 │ 2.51 │ -0.55 │ -17.97% │ │ python-mutagen │ 35.39 │ 29.58 │ -5.81 │ -16.42% │ │ python-typish │ 0.62 │ 0.52 │ -0.10 │ -16.13% │ │ python-opnsense │ 0.19 │ 0.16 │ -0.03 │ -15.79% │ │ python-pymochad │ 0.13 │ 0.11 │ -0.02 │ -15.38% │ │ python-alembic │ 12.02 │ 10.26 │ -1.76 │ -14.64% │ │ python-sphinx-kr-theme │ 0.07 │ 0.06 │ -0.01 │ -14.29% │ │ python-service-identity │ 0.28 │ 0.24 │ -0.04 │ -14.29% │ │ python-webpy │ 10.61 │ 9.13 │ -1.48 │ -13.95% │ │ python-pytn3270 │ 0.87 │ 0.76 │ -0.11 │ -12.64% │ │ python-compal │ 0.08 │ 0.07 │ -0.01 │ -12.50% │ │ cloud-init │ 31.82 │ 27.91 │ -3.91 │ -12.29% │ │ python-license-expression │ 0.92 │ 0.81 │ -0.11 │ -11.96% │ │ python-aioeafm │ 0.09 │ 0.08 │ -0.01 │ -11.11% │ │ python-requests-futures │ 0.09 │ 0.08 │ -0.01 │ -11.11% │ │ python-copr-common │ 0.09 │ 0.08 │ -0.01 │ -11.11% │ │ python-google-cloud-core │ 0.85 │ 0.76 │ -0.09 │ -10.59% │ │ python-pyocr │ 0.96 │ 0.86 │ -0.10 │ -10.42% │ │ python-git-url-parse │ 0.21 │ 0.19 │ -0.02 │ -9.52% │ │ python-ipykernel │ 50.69 │ 45.97 │ -4.72 │ -9.31% │ │ python-kajiki │ 0.86 │ 0.78 │ -0.08 │ -9.30% │ │ python-overpy │ 13.91 │ 12.66 │ -1.25 │ -8.99% │ │ python-blessed │ 8.84 │ 8.07 │ -0.77 │ -8.71% │ │ python-healpy │ 9.19 │ 8.41 │ -0.78 │ -8.49% │ │ python-userpath │ 2.19 │ 2.01 │ -0.18 │ -8.22% │ │ python-niaaml │ 68.88 │ 64.05 │ -4.83 │ -7.01% │ │ python-pymemcache │ 2.09 │ 1.95 │ -0.14 │ -6.70% │ │ python-simplejson │ 1.21 │ 1.13 │ -0.08 │ -6.61% │ │ pyproj │ 20.93 │ 19.59 │ -1.34 │ -6.40% │ │ python-priority │ 9.44 │ 8.85 │ -0.59 │ -6.25% │ │ python-google-cloud-firestore │ 12.85 │ 12.06 │ -0.79 │ -6.15% │ │ python-APScheduler │ 6.73 │ 6.37 │ -0.36 │ -5.35% │ │ python-fissix │ 25.53 │ 24.25 │ -1.28 │ -5.01% │ │ python-importlib-metadata │ 0.45 │ 0.43 │ -0.02 │ -4.44% │ │ python-tenacity │ 2.97 │ 2.84 │ -0.13 │ -4.38% │ │ python-prompt-toolkit │ 22.26 │ 21.32 │ -0.94 │ -4.22% │ │ python-google-cloud-bigquery │ 21.68 │ 20.77 │ -0.91 │ -4.20% │ │ pew │ 20.11 │ 19.30 │ -0.81 │ -4.03% │ │ python-typeguard │ 0.78 │ 0.75 │ -0.03 │ -3.85% │ │ python-msrest │ 4.42 │ 4.25 │ -0.17 │ -3.85% │ │ python-astroscrappy │ 15.13 │ 14.56 │ -0.57 │ -3.77% │ │ python-rope │ 2.20 │ 2.12 │ -0.08 │ -3.64% │ │ python-shapely │ 1.40 │ 1.35 │ -0.05 │ -3.57% │ │ python-niaclass │ 3.48 │ 3.36 │ -0.12 │ -3.45% │ │ python-pdir2 │ 0.58 │ 0.56 │ -0.02 │ -3.45% │ │ fonttools │ 29.01 │ 28.02 │ -0.99 │ -3.41% │ │ python-nb2plots │ 185.39 │ 179.13 │ -6.26 │ -3.38% │ │ python-faker │ 39.49 │ 38.16 │ -1.33 │ -3.37% │ │ python-reedsolo │ 2.53 │ 2.45 │ -0.08 │ -3.16% │ │ python-pycec │ 0.32 │ 0.31 │ -0.01 │ -3.13% │ │ python-vcstool │ 0.34 │ 0.33 │ -0.01 │ -2.94% │ │ python-landslide │ 0.34 │ 0.33 │ -0.01 │ -2.94% │ │ python-kombu │ 16.16 │ 15.69 │ -0.47 │ -2.91% │ │ python-notebook │ 32.70 │ 31.82 │ -0.88 │ -2.69% │ │ python-pymediainfo │ 1.95 │ 1.90 │ -0.05 │ -2.56% │ │ python-asttokens │ 11.88 │ 11.59 │ -0.29 │ -2.44% │ │ python-aiosasl │ 0.42 │ 0.41 │ -0.01 │ -2.38% │ │ python-alarmdecoder │ 0.43 │ 0.42 │ -0.01 │ -2.33% │ │ rpkg-util │ 2.66 │ 2.60 │ -0.06 │ -2.26% │ │ python-git-revise │ 4.51 │ 4.41 │ -0.10 │ -2.22% │ │ python-kafka │ 11.92 │ 11.68 │ -0.24 │ -2.01% │ │ python-Bottleneck │ 43.32 │ 42.47 │ -0.85 │ -1.96% │ │ emacs-jedi │ 1.54 │ 1.51 │ -0.03 │ -1.95% │ │ python-wled │ 8.25 │ 8.09 │ -0.16 │ -1.94% │ │ python-structlog │ 1.05 │ 1.03 │ -0.02 │ -1.90% │ │ python-habitipy │ 5.82 │ 5.71 │ -0.11 │ -1.89% │ │ python-nixio │ 86.26 │ 84.66 │ -1.60 │ -1.85% │ │ python-pytest-venv │ 2.71 │ 2.66 │ -0.05 │ -1.85% │ │ python-testinfra │ 8.69 │ 8.53 │ -0.16 │ -1.84% │ │ python-texext │ 3.28 │ 3.22 │ -0.06 │ -1.83% │ │ python-ZEO │ 0.55 │ 0.54 │ -0.01 │ -1.82% │ │ argparse-manpage │ 4.12 │ 4.05 │ -0.07 │ -1.70% │ │ python-emcee │ 120.15 │ 118.17 │ -1.98 │ -1.65% │ │ python-missingno │ 1.24 │ 1.22 │ -0.02 │ -1.61% │ │ python-opentracing │ 0.66 │ 0.65 │ -0.01 │ -1.52% │ │ python-more-executors │ 135.00 │ 133.06 │ -1.94 │ -1.44% │ │ python-check-manifest │ 5.71 │ 5.63 │ -0.08 │ -1.40% │ │ python-cryptography │ 90.60 │ 89.43 │ -1.17 │ -1.29% │ │ certbot │ 22.91 │ 22.62 │ -0.29 │ -1.27% │ │ python-pydata-sphinx-theme │ 8.90 │ 8.79 │ -0.11 │ -1.24% │ │ python-daphne │ 14.89 │ 14.71 │ -0.18 │ -1.21% │ │ python-guizero │ 38.24 │ 37.79 │ -0.45 │ -1.18% │ │ python-pygments │ 23.70 │ 23.46 │ -0.24 │ -1.01% │ │ python-redis │ 4.03 │ 3.99 │ -0.04 │ -0.99% │ │ python-pymatreader │ 72.90 │ 72.35 │ -0.55 │ -0.75% │ │ python-tempora │ 1.41 │ 1.40 │ -0.01 │ -0.71% │ │ python-SALib │ 109.79 │ 109.09 │ -0.70 │ -0.64% │ │ python-pyinels │ 7.21 │ 7.17 │ -0.04 │ -0.55% │ │ python-pytest-mpl │ 25.78 │ 25.64 │ -0.14 │ -0.54% │ │ python-boutdata │ 1065.63 │ 1061.17 │ -4.46 │ -0.42% │ │ python-dogpile-cache │ 34.74 │ 34.64 │ -0.10 │ -0.29% │ │ python-pynetdicom │ 826.07 │ 823.90 │ -2.17 │ -0.26% │ │ python-theano │ 171.18 │ 170.79 │ -0.39 │ -0.23% │ │ python-dask │ 272.56 │ 272.03 │ -0.53 │ -0.19% │ │ python-pyhomematic │ 9.63 │ 9.62 │ -0.01 │ -0.10% │ │ python-pycomfoair │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-zsh │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ pycolumnize │ 0.03 │ 0.03 │ 0.00 │ 0.00% │ │ python-sphinx-click │ 0.11 │ 0.11 │ 0.00 │ 0.00% │ │ python-colcon-output │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-cd │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-devtools │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-powershell │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-aioopenssl │ 4.06 │ 4.06 │ 0.00 │ 0.00% │ │ python-btlewrap │ 0.09 │ 0.09 │ 0.00 │ 0.00% │ │ python-stackprinter │ 0.22 │ 0.22 │ 0.00 │ 0.00% │ │ python-colcon-defaults │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-textwrap3 │ 0.17 │ 0.17 │ 0.00 │ 0.00% │ │ fasttrack │ 1.10 │ 1.10 │ 0.00 │ 0.00% │ │ python-distroinfo │ 3.61 │ 3.61 │ 0.00 │ 0.00% │ │ python-resultsdb_api │ 0.14 │ 0.14 │ 0.00 │ 0.00% │ │ python-allpairspy │ 0.08 │ 0.08 │ 0.00 │ 0.00% │ │ python-colcon-argcomplete │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-extension-helpers │ 0.38 │ 0.38 │ 0.00 │ 0.00% │ │ python-git-changelog │ 0.15 │ 0.15 │ 0.00 │ 0.00% │ │ python-colcon-metadata │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-pyclipper │ 0.14 │ 0.14 │ 0.00 │ 0.00% │ │ python-lacrosse │ 0.15 │ 0.15 │ 0.00 │ 0.00% │ │ python-mongoquery │ 0.04 │ 0.04 │ 0.00 │ 0.00% │ │ python-stdio-mgr │ 0.02 │ 0.02 │ 0.00 │ 0.00% │ │ python-colcon-recursive-crawl │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-pkg-config │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-lcov-result │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-sphinx-math-dollar │ 0.54 │ 0.54 │ 0.00 │ 0.00% │ │ python-cs │ 0.36 │ 0.36 │ 0.00 │ 0.00% │ │ mkosi │ 0.42 │ 0.42 │ 0.00 │ 0.00% │ │ python-colcon-coveragepy-result │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-test-result │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-certbot-dns-route53 │ 5.48 │ 5.48 │ 0.00 │ 0.00% │ │ python-colcon-ed │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-setuptools_scm_git_archive │ 0.02 │ 0.02 │ 0.00 │ 0.00% │ │ python-colcon-parallel-executor │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-mixin │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-bash │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-notification │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-wsaccel │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-pytest-error-for-skips │ 0.11 │ 0.11 │ 0.00 │ 0.00% │ │ python-colcon-ros-bazel │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-path │ 4.57 │ 4.57 │ 0.00 │ 0.00% │ │ python-colcon-library-path │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-python-setup-py │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-package-selection │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-krbcontext │ 0.12 │ 0.12 │ 0.00 │ 0.00% │ │ python-terminado │ 36.48 │ 36.51 │ 0.03 │ 0.08% │ │ python-cached_property │ 7.19 │ 7.20 │ 0.01 │ 0.14% │ │ python-curio │ 92.72 │ 92.85 │ 0.13 │ 0.14% │ │ duplicity │ 739.77 │ 741.15 │ 1.38 │ 0.19% │ │ python-restfly │ 51.65 │ 51.77 │ 0.12 │ 0.23% │ │ python-cachelib │ 24.01 │ 24.07 │ 0.06 │ 0.25% │ │ python-requests │ 65.84 │ 66.01 │ 0.17 │ 0.26% │ │ python-networkx │ 99.93 │ 100.19 │ 0.26 │ 0.26% │ │ androguard │ 45.04 │ 45.16 │ 0.12 │ 0.27% │ │ yt-dlp │ 50.13 │ 50.28 │ 0.15 │ 0.30% │ │ python-watchdog │ 36.31 │ 36.42 │ 0.11 │ 0.30% │ │ python-fastpurge │ 6.53 │ 6.55 │ 0.02 │ 0.31% │ │ python-patsy │ 25.93 │ 26.01 │ 0.08 │ 0.31% │ │ python-google-cloud-storage │ 9.63 │ 9.66 │ 0.03 │ 0.31% │ │ python-jaraco-functools │ 3.11 │ 3.12 │ 0.01 │ 0.32% │ │ 2ping │ 63.65 │ 63.86 │ 0.21 │ 0.33% │ │ python-jinja2 │ 2.93 │ 2.94 │ 0.01 │ 0.34% │ │ python-pyvirtualdisplay │ 70.71 │ 70.98 │ 0.27 │ 0.38% │ │ python-glymur │ 35.03 │ 35.17 │ 0.14 │ 0.40% │ │ python-sshtunnel │ 58.12 │ 58.36 │ 0.24 │ 0.41% │ │ python-pytest-httpbin │ 2.42 │ 2.43 │ 0.01 │ 0.41% │ │ python-sphinxcontrib-websupport │ 4.83 │ 4.85 │ 0.02 │ 0.41% │ │ python-meautility │ 2.41 │ 2.42 │ 0.01 │ 0.41% │ │ python-zeroconf │ 77.72 │ 78.05 │ 0.33 │ 0.42% │ │ python-pyswip │ 4.67 │ 4.69 │ 0.02 │ 0.43% │ │ python-spake2 │ 2.33 │ 2.34 │ 0.01 │ 0.43% │ │ reuse │ 22.67 │ 22.77 │ 0.10 │ 0.44% │ │ python-sphinx-hoverxref │ 2.19 │ 2.20 │ 0.01 │ 0.46% │ │ python-flask-caching │ 85.70 │ 86.12 │ 0.42 │ 0.49% │ │ python-waterfurnace │ 10.13 │ 10.18 │ 0.05 │ 0.49% │ │ python-photutils │ 163.54 │ 164.36 │ 0.82 │ 0.50% │ │ pipenv │ 3.89 │ 3.91 │ 0.02 │ 0.51% │ │ python-pytest-xprocess │ 36.76 │ 36.95 │ 0.19 │ 0.52% │ │ cvise │ 45.26 │ 45.54 │ 0.28 │ 0.62% │ │ python-swagger-spec-validator │ 1.61 │ 1.62 │ 0.01 │ 0.62% │ │ python-pexpect │ 171.16 │ 172.25 │ 1.09 │ 0.64% │ │ python-pywt │ 71.53 │ 71.99 │ 0.46 │ 0.64% │ │ python-ssdp │ 3.05 │ 3.07 │ 0.02 │ 0.66% │ │ python-click-spinner │ 3.03 │ 3.05 │ 0.02 │ 0.66% │ │ python-mirakuru │ 74.17 │ 74.67 │ 0.50 │ 0.67% │ │ python-insteon │ 64.19 │ 64.64 │ 0.45 │ 0.70% │ │ python-easyprocess │ 61.08 │ 61.56 │ 0.48 │ 0.79% │ │ python-pytest-timeout │ 39.51 │ 39.83 │ 0.32 │ 0.81% │ │ python-pyphi │ 55.25 │ 55.72 │ 0.47 │ 0.85% │ │ pre-commit │ 99.14 │ 100.04 │ 0.90 │ 0.91% │ │ python-metakernel │ 37.45 │ 37.80 │ 0.35 │ 0.93% │ │ python-sphinx-notfound-page │ 6.29 │ 6.35 │ 0.06 │ 0.95% │ │ artifacts │ 2.09 │ 2.11 │ 0.02 │ 0.96% │ │ python-sphinxcontrib-openapi │ 12.48 │ 12.60 │ 0.12 │ 0.96% │ │ python-neurodsp │ 5.06 │ 5.11 │ 0.05 │ 0.99% │ │ python-uvicorn │ 38.53 │ 38.92 │ 0.39 │ 1.01% │ │ python-libsass │ 0.98 │ 0.99 │ 0.01 │ 1.02% │ │ python-pyphen │ 9.78 │ 9.88 │ 0.10 │ 1.02% │ │ python-hpack │ 10.61 │ 10.72 │ 0.11 │ 1.04% │ │ python-pydocstyle │ 6.67 │ 6.74 │ 0.07 │ 1.05% │ │ python-lesscpy │ 13.75 │ 13.90 │ 0.15 │ 1.09% │ │ python-paramiko │ 15.57 │ 15.74 │ 0.17 │ 1.09% │ │ python-pytest-testinfra │ 8.97 │ 9.07 │ 0.10 │ 1.11% │ │ python-cartopy │ 55.04 │ 55.70 │ 0.66 │ 1.20% │ │ python-hupper │ 10.38 │ 10.51 │ 0.13 │ 1.25% │ │ python-pytenable │ 190.27 │ 192.74 │ 2.47 │ 1.30% │ │ python-guessit │ 81.25 │ 82.36 │ 1.11 │ 1.37% │ │ python-keyrings-alt │ 0.72 │ 0.73 │ 0.01 │ 1.39% │ │ python-calligrabot │ 0.71 │ 0.72 │ 0.01 │ 1.41% │ │ python-jsonpickle │ 1.39 │ 1.41 │ 0.02 │ 1.44% │ │ python-reproject │ 99.56 │ 101.08 │ 1.52 │ 1.53% │ │ python-wurlitzer │ 0.65 │ 0.66 │ 0.01 │ 1.54% │ │ python-fpylll │ 77.90 │ 79.10 │ 1.20 │ 1.54% │ │ python-fs │ 26.97 │ 27.39 │ 0.42 │ 1.56% │ │ python-ptyprocess │ 3.70 │ 3.76 │ 0.06 │ 1.62% │ │ python-pynwb │ 30.49 │ 30.99 │ 0.50 │ 1.64% │ │ python-starlette │ 6.52 │ 6.63 │ 0.11 │ 1.69% │ │ rebase-helper │ 11.79 │ 11.99 │ 0.20 │ 1.70% │ │ python-amqp │ 49.68 │ 50.53 │ 0.85 │ 1.71% │ │ python-odml │ 6.34 │ 6.45 │ 0.11 │ 1.74% │ │ python-earthpy │ 4.58 │ 4.66 │ 0.08 │ 1.75% │ │ python-pytest-mock │ 2.26 │ 2.30 │ 0.04 │ 1.77% │ │ bandit │ 6.71 │ 6.83 │ 0.12 │ 1.79% │ │ python-bluepyopt │ 126.04 │ 128.30 │ 2.26 │ 1.79% │ │ python-arrow │ 16.15 │ 16.44 │ 0.29 │ 1.80% │ │ copr-rpmbuild │ 1.11 │ 1.13 │ 0.02 │ 1.80% │ │ python-versioningit │ 97.68 │ 99.44 │ 1.76 │ 1.80% │ │ python-pytest-bdd │ 12.20 │ 12.43 │ 0.23 │ 1.89% │ │ python-bidict │ 5.75 │ 5.86 │ 0.11 │ 1.91% │ │ python-pytest-services │ 2.07 │ 2.11 │ 0.04 │ 1.93% │ │ python-diff-match-patch │ 1.54 │ 1.57 │ 0.03 │ 1.95% │ │ python-blackbird │ 2.05 │ 2.09 │ 0.04 │ 1.95% │ │ python-zipp │ 0.50 │ 0.51 │ 0.01 │ 2.00% │ │ python-falcon │ 69.51 │ 70.93 │ 1.42 │ 2.04% │ │ mock │ 0.95 │ 0.97 │ 0.02 │ 2.11% │ │ dumb-init │ 8.49 │ 8.67 │ 0.18 │ 2.12% │ │ python-jupyter-sphinx │ 38.81 │ 39.66 │ 0.85 │ 2.19% │ │ python-pingouin │ 37.83 │ 38.66 │ 0.83 │ 2.19% │ │ pyproject-rpm-macros │ 19.13 │ 19.55 │ 0.42 │ 2.20% │ │ copr-backend │ 80.59 │ 82.40 │ 1.81 │ 2.25% │ │ python-xeddsa │ 3.94 │ 4.03 │ 0.09 │ 2.28% │ │ python-pytest-subtests │ 0.43 │ 0.44 │ 0.01 │ 2.33% │ │ python-pytest-forked │ 0.43 │ 0.44 │ 0.01 │ 2.33% │ │ jrnl │ 9.38 │ 9.60 │ 0.22 │ 2.35% │ │ python-lfpykit │ 8.86 │ 9.07 │ 0.21 │ 2.37% │ │ python-textdistance │ 29.63 │ 30.34 │ 0.71 │ 2.40% │ │ python-pydyf │ 1.20 │ 1.23 │ 0.03 │ 2.50% │ │ python-scripttest │ 1.19 │ 1.22 │ 0.03 │ 2.52% │ │ container-workflow-tool │ 1.55 │ 1.59 │ 0.04 │ 2.58% │ │ python-asyncpg │ 60.64 │ 62.26 │ 1.62 │ 2.67% │ │ python-epc │ 20.38 │ 20.93 │ 0.55 │ 2.70% │ │ python-prometheus_client │ 4.67 │ 4.80 │ 0.13 │ 2.78% │ │ python-ansible-runner │ 68.75 │ 70.67 │ 1.92 │ 2.79% │ │ python-lfpy │ 156.60 │ 161.03 │ 4.43 │ 2.83% │ │ python-cachez │ 1.06 │ 1.09 │ 0.03 │ 2.83% │ │ python-async-upnp-client │ 1.40 │ 1.44 │ 0.04 │ 2.86% │ │ python-cornice │ 4.50 │ 4.63 │ 0.13 │ 2.89% │ │ nicotine+ │ 14.13 │ 14.54 │ 0.41 │ 2.90% │ │ python-cloudpickle │ 7.85 │ 8.08 │ 0.23 │ 2.93% │ │ python-pebble │ 10.90 │ 11.22 │ 0.32 │ 2.94% │ │ python-scripttester │ 0.34 │ 0.35 │ 0.01 │ 2.94% │ │ python-ipyparallel │ 280.77 │ 289.05 │ 8.28 │ 2.95% │ │ python-liblarch │ 8.45 │ 8.70 │ 0.25 │ 2.96% │ │ cozy │ 4.72 │ 4.86 │ 0.14 │ 2.97% │ │ python-sphinx_rtd_theme │ 3.02 │ 3.11 │ 0.09 │ 2.98% │ │ python-readthedocs-sphinx-ext │ 2.68 │ 2.76 │ 0.08 │ 2.99% │ │ python-metaextract │ 1.33 │ 1.37 │ 0.04 │ 3.01% │ │ python-gsd │ 3.97 │ 4.09 │ 0.12 │ 3.02% │ │ pyserial-asyncio │ 0.33 │ 0.34 │ 0.01 │ 3.03% │ │ python-numpy-stl │ 3.94 │ 4.06 │ 0.12 │ 3.05% │ │ python-ws4py │ 4.26 │ 4.39 │ 0.13 │ 3.05% │ │ python-httpcore │ 10.11 │ 10.42 │ 0.31 │ 3.07% │ │ python-portend │ 0.97 │ 1.00 │ 0.03 │ 3.09% │ │ andriller │ 3.84 │ 3.96 │ 0.12 │ 3.13% │ │ python-pyriemann │ 6.37 │ 6.57 │ 0.20 │ 3.14% │ │ python-opentelemetry │ 32.45 │ 33.47 │ 1.02 │ 3.14% │ │ python-acme │ 15.82 │ 16.32 │ 0.50 │ 3.16% │ │ python-conda-package-handling │ 0.94 │ 0.97 │ 0.03 │ 3.19% │ │ snakemake │ 9.33 │ 9.63 │ 0.30 │ 3.22% │ │ python-azure-core │ 20.17 │ 20.83 │ 0.66 │ 3.27% │ │ python-sphinxcontrib-bibtex │ 15.62 │ 16.14 │ 0.52 │ 3.33% │ │ python-Automat │ 0.30 │ 0.31 │ 0.01 │ 3.33% │ │ mycli │ 4.80 │ 4.96 │ 0.16 │ 3.33% │ │ pyzor │ 4.47 │ 4.62 │ 0.15 │ 3.36% │ │ python-libcst │ 27.55 │ 28.48 │ 0.93 │ 3.38% │ │ python-libpysal │ 29.70 │ 30.72 │ 1.02 │ 3.43% │ │ python-wheel │ 6.05 │ 6.26 │ 0.21 │ 3.47% │ │ python-suds │ 4.32 │ 4.47 │ 0.15 │ 3.47% │ │ python-pytest-regressions │ 3.32 │ 3.44 │ 0.12 │ 3.61% │ │ python-fastavro │ 1.92 │ 1.99 │ 0.07 │ 3.65% │ │ python-trimesh │ 660.77 │ 684.87 │ 24.10 │ 3.65% │ │ python-matplotlib │ 336.97 │ 349.31 │ 12.34 │ 3.66% │ │ abrt │ 2.17 │ 2.25 │ 0.08 │ 3.69% │ │ python-plaster-pastedeploy │ 0.54 │ 0.56 │ 0.02 │ 3.70% │ │ python-aresponses │ 0.27 │ 0.28 │ 0.01 │ 3.70% │ │ python-asgiref │ 7.55 │ 7.83 │ 0.28 │ 3.71% │ │ python-hypothesmith │ 493.68 │ 512.12 │ 18.44 │ 3.74% │ │ python-zarr │ 37.85 │ 39.27 │ 1.42 │ 3.75% │ │ python-imbalanced-learn │ 104.44 │ 108.37 │ 3.93 │ 3.76% │ │ python-pytest-subprocess │ 3.71 │ 3.85 │ 0.14 │ 3.77% │ │ python-owl_rl │ 1.84 │ 1.91 │ 0.07 │ 3.80% │ │ python-sphinxtesters │ 4.71 │ 4.89 │ 0.18 │ 3.82% │ │ python-etcd3gw │ 0.26 │ 0.27 │ 0.01 │ 3.85% │ │ litecli │ 4.68 │ 4.86 │ 0.18 │ 3.85% │ │ python-niapy │ 330.65 │ 343.48 │ 12.83 │ 3.88% │ │ python-ansiwrap │ 0.76 │ 0.79 │ 0.03 │ 3.95% │ │ python-cffi │ 211.55 │ 220.06 │ 8.51 │ 4.02% │ │ python-rasterio │ 48.33 │ 50.28 │ 1.95 │ 4.03% │ │ python-apprise │ 26.80 │ 27.90 │ 1.10 │ 4.10% │ │ python-fiona │ 11.16 │ 11.62 │ 0.46 │ 4.12% │ │ rst2txt │ 0.24 │ 0.25 │ 0.01 │ 4.17% │ │ python-parsley │ 3.04 │ 3.17 │ 0.13 │ 4.28% │ │ sen │ 2.54 │ 2.65 │ 0.11 │ 4.33% │ │ weasyprint │ 90.75 │ 94.69 │ 3.94 │ 4.34% │ │ python-mplcairo │ 248.26 │ 259.05 │ 10.79 │ 4.35% │ │ python-geopy │ 1.15 │ 1.20 │ 0.05 │ 4.35% │ │ python-typer │ 26.40 │ 27.58 │ 1.18 │ 4.47% │ │ python-pyqtgraph │ 138.41 │ 144.65 │ 6.24 │ 4.51% │ │ python-social-auth-core │ 25.91 │ 27.08 │ 1.17 │ 4.52% │ │ python-mpmath │ 72.35 │ 75.62 │ 3.27 │ 4.52% │ │ python-stompest │ 2.54 │ 2.66 │ 0.12 │ 4.72% │ │ python-hdate │ 5.26 │ 5.51 │ 0.25 │ 4.75% │ │ python-retryz │ 1.05 │ 1.10 │ 0.05 │ 4.76% │ │ python-altgraph │ 0.21 │ 0.22 │ 0.01 │ 4.76% │ │ python-azure-appconfiguration │ 0.42 │ 0.44 │ 0.02 │ 4.76% │ │ mkdocs-markdownextradata-plugin │ 0.21 │ 0.22 │ 0.01 │ 4.76% │ │ python-py-gql │ 5.90 │ 6.19 │ 0.29 │ 4.92% │ │ python-jmespath │ 430.69 │ 451.99 │ 21.30 │ 4.95% │ │ python-pytest-xdist │ 39.77 │ 41.75 │ 1.98 │ 4.98% │ │ python-pybtex-docutils │ 0.20 │ 0.21 │ 0.01 │ 5.00% │ │ python-sphinx │ 126.46 │ 132.89 │ 6.43 │ 5.08% │ │ python-dijitso │ 0.78 │ 0.82 │ 0.04 │ 5.13% │ │ python-llfuse │ 1.16 │ 1.22 │ 0.06 │ 5.17% │ │ borgbackup │ 260.53 │ 274.30 │ 13.77 │ 5.29% │ │ python-progressbar2 │ 2.64 │ 2.78 │ 0.14 │ 5.30% │ │ python-cffsubr │ 6.16 │ 6.49 │ 0.33 │ 5.36% │ │ python-parso │ 7.08 │ 7.46 │ 0.38 │ 5.37% │ │ python-urllib3 │ 9.99 │ 10.53 │ 0.54 │ 5.41% │ │ python-augeas │ 12.03 │ 12.69 │ 0.66 │ 5.49% │ │ python-build │ 53.14 │ 56.07 │ 2.93 │ 5.51% │ │ python-jupyter-packaging │ 0.54 │ 0.57 │ 0.03 │ 5.56% │ │ python-fsspec │ 20.29 │ 21.42 │ 1.13 │ 5.57% │ │ python-emoji │ 1.43 │ 1.51 │ 0.08 │ 5.59% │ │ python-astropy │ 295.43 │ 312.09 │ 16.66 │ 5.64% │ │ exaile │ 0.88 │ 0.93 │ 0.05 │ 5.68% │ │ fmf │ 8.46 │ 8.95 │ 0.49 │ 5.79% │ │ gnofract4d │ 42.58 │ 45.08 │ 2.50 │ 5.87% │ │ visidata │ 0.34 │ 0.36 │ 0.02 │ 5.88% │ │ python-sphinxcontrib-jsmath │ 0.68 │ 0.72 │ 0.04 │ 5.88% │ │ copr-messaging │ 0.51 │ 0.54 │ 0.03 │ 5.88% │ │ python-cu2qu │ 3.36 │ 3.56 │ 0.20 │ 5.95% │ │ python-jwcrypto │ 7.02 │ 7.44 │ 0.42 │ 5.98% │ │ libvirt-test-API │ 5.51 │ 5.84 │ 0.33 │ 5.99% │ │ python-google-cloud-spanner │ 23.70 │ 25.13 │ 1.43 │ 6.03% │ │ python-sphinxcontrib-programoutput │ 5.28 │ 5.60 │ 0.32 │ 6.06% │ │ python-certbot-dns-ovh │ 0.33 │ 0.35 │ 0.02 │ 6.06% │ │ python-jose │ 37.51 │ 39.81 │ 2.30 │ 6.13% │ │ python-microfs │ 1.14 │ 1.21 │ 0.07 │ 6.14% │ │ frr │ 11.72 │ 12.44 │ 0.72 │ 6.14% │ │ python-jupyter-client │ 164.34 │ 174.57 │ 10.23 │ 6.22% │ │ gaupol │ 20.50 │ 21.78 │ 1.28 │ 6.24% │ │ patool │ 7.25 │ 7.71 │ 0.46 │ 6.34% │ │ fedfind │ 3.92 │ 4.17 │ 0.25 │ 6.38% │ │ python-dns-lexicon │ 94.06 │ 100.08 │ 6.02 │ 6.40% │ │ python-x3dh │ 5.26 │ 5.60 │ 0.34 │ 6.46% │ │ python-dotenv │ 1.07 │ 1.14 │ 0.07 │ 6.54% │ │ liquidctl │ 3.64 │ 3.88 │ 0.24 │ 6.59% │ │ conda │ 198.66 │ 211.95 │ 13.29 │ 6.69% │ │ python-myst-parser │ 6.81 │ 7.27 │ 0.46 │ 6.75% │ │ python-convertdate │ 6.73 │ 7.19 │ 0.46 │ 6.84% │ │ python-matplotlib-scalebar │ 1.90 │ 2.03 │ 0.13 │ 6.84% │ │ python-drgn │ 1.89 │ 2.02 │ 0.13 │ 6.88% │ │ python-botocore │ 937.78 │ 1002.44 │ 64.66 │ 6.90% │ │ python-pdfkit │ 1.14 │ 1.22 │ 0.08 │ 7.02% │ │ python-nagiosplugin │ 1.41 │ 1.51 │ 0.10 │ 7.09% │ │ python-daikin │ 43.42 │ 46.52 │ 3.10 │ 7.14% │ │ python-paste-deploy │ 0.28 │ 0.30 │ 0.02 │ 7.14% │ │ python-ephem │ 2.23 │ 2.39 │ 0.16 │ 7.17% │ │ gpaw │ 29.21 │ 31.31 │ 2.10 │ 7.19% │ │ python-flask-sqlalchemy │ 0.54 │ 0.58 │ 0.04 │ 7.41% │ │ python-test_server │ 26.00 │ 27.93 │ 1.93 │ 7.42% │ │ python-nilearn │ 829.63 │ 891.28 │ 61.65 │ 7.43% │ │ python-prawcore │ 0.40 │ 0.43 │ 0.03 │ 7.50% │ │ python-stochastic │ 2.51 │ 2.70 │ 0.19 │ 7.57% │ │ python-jsonref │ 0.26 │ 0.28 │ 0.02 │ 7.69% │ │ python-cookiecutter │ 4.37 │ 4.71 │ 0.34 │ 7.78% │ │ awscli │ 264.32 │ 285.42 │ 21.10 │ 7.98% │ │ python-hypothesis │ 757.06 │ 818.41 │ 61.35 │ 8.10% │ │ python-geoplot │ 19.84 │ 21.45 │ 1.61 │ 8.11% │ │ python-setuptools │ 70.81 │ 76.68 │ 5.87 │ 8.29% │ │ python-boututils │ 0.12 │ 0.13 │ 0.01 │ 8.33% │ │ python-pyrpm │ 0.36 │ 0.39 │ 0.03 │ 8.33% │ │ python-resumable-urlretrieve │ 0.12 │ 0.13 │ 0.01 │ 8.33% │ │ python-docker-squash │ 0.24 │ 0.26 │ 0.02 │ 8.33% │ │ python-PyMuPDF │ 1.66 │ 1.80 │ 0.14 │ 8.43% │ │ python-twine │ 1.65 │ 1.79 │ 0.14 │ 8.48% │ │ python-ansible-compat │ 13.97 │ 15.16 │ 1.19 │ 8.52% │ │ python-colcon-bazel │ 0.23 │ 0.25 │ 0.02 │ 8.70% │ │ python-inflect │ 0.69 │ 0.75 │ 0.06 │ 8.70% │ │ python-asyncio-dgram │ 0.80 │ 0.87 │ 0.07 │ 8.75% │ │ python-pyelectro │ 0.80 │ 0.87 │ 0.07 │ 8.75% │ │ copr-keygen │ 0.34 │ 0.37 │ 0.03 │ 8.82% │ │ python-partd │ 1.23 │ 1.34 │ 0.11 │ 8.94% │ │ python-maya │ 2.57 │ 2.80 │ 0.23 │ 8.95% │ │ python-certbot-dns-plesk │ 0.33 │ 0.36 │ 0.03 │ 9.09% │ │ python-threadpoolctl │ 0.11 │ 0.12 │ 0.01 │ 9.09% │ │ python-crashtest │ 0.22 │ 0.24 │ 0.02 │ 9.09% │ │ python-rangehttpserver │ 0.11 │ 0.12 │ 0.01 │ 9.09% │ │ python-colcon-ros-bundle │ 0.22 │ 0.24 │ 0.02 │ 9.09% │ │ python-s3transfer │ 28.57 │ 31.20 │ 2.63 │ 9.21% │ │ python-libNeuroML │ 3.68 │ 4.02 │ 0.34 │ 9.24% │ │ python-zxcvbn │ 0.54 │ 0.59 │ 0.05 │ 9.26% │ │ python-pyswarms │ 44.80 │ 48.96 │ 4.16 │ 9.29% │ │ python-trustme │ 20.76 │ 22.69 │ 1.93 │ 9.30% │ │ python-steam │ 1.07 │ 1.17 │ 0.10 │ 9.35% │ │ python-html2text │ 2.67 │ 2.92 │ 0.25 │ 9.36% │ │ python-certbot-dns-rfc2136 │ 0.32 │ 0.35 │ 0.03 │ 9.37% │ │ python-google-auth-oauthlib │ 0.32 │ 0.35 │ 0.03 │ 9.37% │ │ python-certbot-dns-dnsimple │ 0.32 │ 0.35 │ 0.03 │ 9.37% │ │ python-certbot-dns-dnsmadeeasy │ 0.32 │ 0.35 │ 0.03 │ 9.37% │ │ python-certbot-dns-nsone │ 0.32 │ 0.35 │ 0.03 │ 9.37% │ │ python-pip │ 18.66 │ 20.42 │ 1.76 │ 9.43% │ │ python-eccodes │ 2.12 │ 2.32 │ 0.20 │ 9.43% │ │ cura │ 29.01 │ 31.76 │ 2.75 │ 9.48% │ │ python-pem │ 0.21 │ 0.23 │ 0.02 │ 9.52% │ │ python-sphinx-intl │ 0.21 │ 0.23 │ 0.02 │ 9.52% │ │ python-pytest-shutil │ 1.67 │ 1.83 │ 0.16 │ 9.58% │ │ proselint │ 3.11 │ 3.41 │ 0.30 │ 9.65% │ │ python-pint │ 24.33 │ 26.68 │ 2.35 │ 9.66% │ │ python-certbot-dns-google │ 0.51 │ 0.56 │ 0.05 │ 9.80% │ │ python-exoscale │ 2.13 │ 2.34 │ 0.21 │ 9.86% │ │ python-async-generator │ 0.20 │ 0.22 │ 0.02 │ 10.00% │ │ python-kdcproxy │ 0.10 │ 0.11 │ 0.01 │ 10.00% │ │ python-click-plugins │ 0.10 │ 0.11 │ 0.01 │ 10.00% │ │ python3-pytest-asyncio │ 1.79 │ 1.97 │ 0.18 │ 10.06% │ │ copr-cli │ 1.19 │ 1.31 │ 0.12 │ 10.08% │ │ python-colcon-core │ 3.93 │ 4.33 │ 0.40 │ 10.18% │ │ python-certbot-dns-digitalocean │ 0.29 │ 0.32 │ 0.03 │ 10.34% │ │ python-pyscaffold │ 14.01 │ 15.46 │ 1.45 │ 10.35% │ │ python-breathe │ 0.77 │ 0.85 │ 0.08 │ 10.39% │ │ python-setuptools_scm │ 45.76 │ 50.54 │ 4.78 │ 10.45% │ │ python-webtest │ 4.47 │ 4.94 │ 0.47 │ 10.51% │ │ python-pynetbox │ 0.38 │ 0.42 │ 0.04 │ 10.53% │ │ python-gast │ 0.38 │ 0.42 │ 0.04 │ 10.53% │ │ python-snuggs │ 0.38 │ 0.42 │ 0.04 │ 10.53% │ │ python-pytools │ 0.95 │ 1.05 │ 0.10 │ 10.53% │ │ python-datrie │ 2.28 │ 2.52 │ 0.24 │ 10.53% │ │ copr-frontend │ 51.85 │ 57.33 │ 5.48 │ 10.57% │ │ python-pycurl │ 20.04 │ 22.17 │ 2.13 │ 10.63% │ │ python-streamlink │ 15.30 │ 16.94 │ 1.64 │ 10.72% │ │ python-attrs │ 19.68 │ 21.82 │ 2.14 │ 10.87% │ │ python-pycdlib │ 9.64 │ 10.70 │ 1.06 │ 11.00% │ │ python-beanbag │ 0.09 │ 0.10 │ 0.01 │ 11.11% │ │ python-smart_open │ 0.09 │ 0.10 │ 0.01 │ 11.11% │ │ python-websocket-client │ 0.18 │ 0.20 │ 0.02 │ 11.11% │ │ python-easyargs │ 0.09 │ 0.10 │ 0.01 │ 11.11% │ │ python-click-repl │ 0.09 │ 0.10 │ 0.01 │ 11.11% │ │ python-fastcache │ 19.13 │ 21.27 │ 2.14 │ 11.19% │ │ python-jsons │ 1.07 │ 1.19 │ 0.12 │ 11.21% │ │ python-pysnooper │ 1.07 │ 1.19 │ 0.12 │ 11.21% │ │ python-pytest-sugar │ 1.77 │ 1.97 │ 0.20 │ 11.30% │ │ python-ipywidgets │ 1.68 │ 1.87 │ 0.19 │ 11.31% │ │ python-pytest-cov │ 72.85 │ 81.10 │ 8.25 │ 11.32% │ │ python-h5io │ 0.44 │ 0.49 │ 0.05 │ 11.36% │ │ python-pytest-virtualenv │ 0.60 │ 0.67 │ 0.07 │ 11.67% │ │ python-robosignatory │ 2.22 │ 2.48 │ 0.26 │ 11.71% │ │ python-praw │ 14.87 │ 16.62 │ 1.75 │ 11.77% │ │ fedmsg │ 13.39 │ 14.99 │ 1.60 │ 11.95% │ │ python-billiard │ 1.16 │ 1.30 │ 0.14 │ 12.07% │ │ python-pytest-freezegun │ 0.91 │ 1.02 │ 0.11 │ 12.09% │ │ python-asteval │ 0.98 │ 1.10 │ 0.12 │ 12.24% │ │ wad │ 0.56 │ 0.63 │ 0.07 │ 12.50% │ │ python-flask-socketio │ 0.32 │ 0.36 │ 0.04 │ 12.50% │ │ python-certbot-dns-sakuracloud │ 0.32 │ 0.36 │ 0.04 │ 12.50% │ │ python-pyunicorn │ 8.08 │ 9.10 │ 1.02 │ 12.62% │ │ python-certbot-dns-cloudflare │ 0.39 │ 0.44 │ 0.05 │ 12.82% │ │ python-flit │ 2.25 │ 2.54 │ 0.29 │ 12.89% │ │ resultsdb │ 4.95 │ 5.59 │ 0.64 │ 12.93% │ │ python-google-cloud-automl │ 7.41 │ 8.37 │ 0.96 │ 12.96% │ │ python-fslpy │ 116.43 │ 131.61 │ 15.18 │ 13.04% │ │ python-nbclient │ 57.16 │ 64.63 │ 7.47 │ 13.07% │ │ python-zstandard │ 23.95 │ 27.08 │ 3.13 │ 13.07% │ │ python-maxminddb │ 1.37 │ 1.55 │ 0.18 │ 13.14% │ │ python-poetry-core │ 3.50 │ 3.96 │ 0.46 │ 13.14% │ │ python-fixit │ 1.14 │ 1.29 │ 0.15 │ 13.16% │ │ xonsh │ 58.26 │ 65.93 │ 7.67 │ 13.17% │ │ python-pytelegrambotapi │ 1.28 │ 1.45 │ 0.17 │ 13.28% │ │ python-distro │ 1.19 │ 1.35 │ 0.16 │ 13.45% │ │ python-proto-plus │ 1.11 │ 1.26 │ 0.15 │ 13.51% │ │ python-advisory-parser │ 0.37 │ 0.42 │ 0.05 │ 13.51% │ │ python-mako │ 3.03 │ 3.44 │ 0.41 │ 13.53% │ │ home-assistant-cli │ 0.88 │ 1.00 │ 0.12 │ 13.64% │ │ python-pytest-tornado │ 0.29 │ 0.33 │ 0.04 │ 13.79% │ │ python-pyedflib │ 5.21 │ 5.93 │ 0.72 │ 13.82% │ │ python-virtualenv │ 25.79 │ 29.37 │ 3.58 │ 13.88% │ │ python-ffc │ 8.93 │ 10.18 │ 1.25 │ 14.00% │ │ python-requests-toolbelt │ 1.69 │ 1.93 │ 0.24 │ 14.20% │ │ python-chardet │ 25.70 │ 29.35 │ 3.65 │ 14.20% │ │ python-sexpdata │ 0.21 │ 0.24 │ 0.03 │ 14.29% │ │ python-pytest-metadata │ 0.21 │ 0.24 │ 0.03 │ 14.29% │ │ odfpy │ 1.10 │ 1.26 │ 0.16 │ 14.55% │ │ python-multidict │ 1.35 │ 1.55 │ 0.20 │ 14.81% │ │ python-PyGithub │ 44.10 │ 50.65 │ 6.55 │ 14.85% │ │ ocrmypdf │ 214.98 │ 247.22 │ 32.24 │ 15.00% │ │ httpie │ 17.71 │ 20.37 │ 2.66 │ 15.02% │ │ python-nbformat │ 1.39 │ 1.60 │ 0.21 │ 15.11% │ │ python-certbot-dns-cloudxns │ 0.33 │ 0.38 │ 0.05 │ 15.15% │ │ python-cbor2 │ 1.18 │ 1.36 │ 0.18 │ 15.25% │ │ python-haversion │ 0.13 │ 0.15 │ 0.02 │ 15.38% │ │ python-marshmallow-enum │ 0.13 │ 0.15 │ 0.02 │ 15.38% │ │ python-fastapi │ 12.02 │ 13.87 │ 1.85 │ 15.39% │ │ python-sortedcontainers │ 10.58 │ 12.23 │ 1.65 │ 15.60% │ │ python-gitlab │ 1.41 │ 1.63 │ 0.22 │ 15.60% │ │ python-periodictable │ 1.73 │ 2.00 │ 0.27 │ 15.61% │ │ python-certbot-dns-gehirn │ 0.32 │ 0.37 │ 0.05 │ 15.62% │ │ python-freezegun │ 0.83 │ 0.96 │ 0.13 │ 15.66% │ │ python-rfc3986 │ 2.48 │ 2.87 │ 0.39 │ 15.73% │ │ python-graphql-core │ 4.98 │ 5.77 │ 0.79 │ 15.86% │ │ modulemd-tools │ 0.88 │ 1.02 │ 0.14 │ 15.91% │ │ freeipa-healthcheck │ 1.94 │ 2.25 │ 0.31 │ 15.98% │ │ python-txaio │ 0.31 │ 0.36 │ 0.05 │ 16.13% │ │ python-astral │ 0.73 │ 0.85 │ 0.12 │ 16.44% │ │ python-google-cloud-bigtable │ 19.48 │ 22.70 │ 3.22 │ 16.53% │ │ python-abimap │ 0.54 │ 0.63 │ 0.09 │ 16.67% │ │ python-readability-lxml │ 0.18 │ 0.21 │ 0.03 │ 16.67% │ │ python-pygit2 │ 3.00 │ 3.50 │ 0.50 │ 16.67% │ │ sgmanager │ 0.06 │ 0.07 │ 0.01 │ 16.67% │ │ python-dukpy │ 0.06 │ 0.07 │ 0.01 │ 16.67% │ │ ursa-major │ 0.48 │ 0.56 │ 0.08 │ 16.67% │ │ python-nudatus │ 0.06 │ 0.07 │ 0.01 │ 16.67% │ │ python-aiomqtt │ 6.18 │ 7.22 │ 1.04 │ 16.83% │ │ python-scramp │ 0.53 │ 0.62 │ 0.09 │ 16.98% │ │ python-pytest-ordering │ 0.41 │ 0.48 │ 0.07 │ 17.07% │ │ python-pep517 │ 1.52 │ 1.78 │ 0.26 │ 17.11% │ │ python-indexed_gzip │ 1087.85 │ 1273.99 │ 186.14 │ 17.11% │ │ python-engineio │ 5.01 │ 5.87 │ 0.86 │ 17.17% │ │ python-noiseprotocol │ 4.41 │ 5.18 │ 0.77 │ 17.46% │ │ python-databases │ 1.14 │ 1.34 │ 0.20 │ 17.54% │ │ python-exdir │ 2.96 │ 3.48 │ 0.52 │ 17.57% │ │ python-requests-kerberos │ 0.17 │ 0.20 │ 0.03 │ 17.65% │ │ python-testpath │ 0.17 │ 0.20 │ 0.03 │ 17.65% │ │ python-markupsafe │ 0.17 │ 0.20 │ 0.03 │ 17.65% │ │ python-plaster │ 0.28 │ 0.33 │ 0.05 │ 17.86% │ │ python-testfixtures │ 1.99 │ 2.35 │ 0.36 │ 18.09% │ │ python-azure-mgmt-loganalytics │ 0.22 │ 0.26 │ 0.04 │ 18.18% │ │ python-pyemd │ 0.11 │ 0.13 │ 0.02 │ 18.18% │ │ python-ansible-pygments │ 0.22 │ 0.26 │ 0.04 │ 18.18% │ │ python-werkzeug │ 14.49 │ 17.14 │ 2.65 │ 18.29% │ │ python-represent │ 0.27 │ 0.32 │ 0.05 │ 18.52% │ │ python-msrestazure │ 3.01 │ 3.57 │ 0.56 │ 18.60% │ │ python-pyrsistent │ 9.91 │ 11.76 │ 1.85 │ 18.67% │ │ python-eyed3 │ 0.96 │ 1.14 │ 0.18 │ 18.75% │ │ fedora-third-party │ 0.16 │ 0.19 │ 0.03 │ 18.75% │ │ python-pytest-xvfb │ 0.64 │ 0.76 │ 0.12 │ 18.75% │ │ python-nuheat │ 0.16 │ 0.19 │ 0.03 │ 18.75% │ │ python-fontMath │ 1.27 │ 1.51 │ 0.24 │ 18.90% │ │ python-google-cloud-bigquery-storage │ 2.80 │ 3.33 │ 0.53 │ 18.93% │ │ python-vine │ 0.21 │ 0.25 │ 0.04 │ 19.05% │ │ python-fields │ 0.21 │ 0.25 │ 0.04 │ 19.05% │ │ python-pecan-notario │ 0.21 │ 0.25 │ 0.04 │ 19.05% │ │ python-anymarkup │ 0.21 │ 0.25 │ 0.04 │ 19.05% │ │ flatpak-module-tools │ 0.47 │ 0.56 │ 0.09 │ 19.15% │ │ python-port-for │ 0.20 │ 0.24 │ 0.04 │ 20.00% │ │ python-colcon-ros │ 0.10 │ 0.12 │ 0.02 │ 20.00% │ │ python-openqa_client │ 0.20 │ 0.24 │ 0.04 │ 20.00% │ │ python-hass-data-detective │ 0.05 │ 0.06 │ 0.01 │ 20.00% │ │ python-tcxreader │ 6.14 │ 7.37 │ 1.23 │ 20.03% │ │ python-whoosh │ 9.22 │ 11.07 │ 1.85 │ 20.07% │ │ python-cvxopt │ 2.64 │ 3.17 │ 0.53 │ 20.08% │ │ python-aiofiles │ 1.59 │ 1.91 │ 0.32 │ 20.13% │ │ python-jupyter-core │ 0.64 │ 0.77 │ 0.13 │ 20.31% │ │ pybind11 │ 7.51 │ 9.05 │ 1.54 │ 20.51% │ │ python-colcon-bundle │ 0.68 │ 0.82 │ 0.14 │ 20.59% │ │ python-pytest-steps │ 1.01 │ 1.22 │ 0.21 │ 20.79% │ │ python-qstylizer │ 0.24 │ 0.29 │ 0.05 │ 20.83% │ │ python-CacheControl │ 0.43 │ 0.52 │ 0.09 │ 20.93% │ │ python-wikipedia │ 0.19 │ 0.23 │ 0.04 │ 21.05% │ │ python-pluggy │ 0.19 │ 0.23 │ 0.04 │ 21.05% │ │ python-cftime │ 46.43 │ 56.22 │ 9.79 │ 21.09% │ │ python-fastjsonschema │ 0.66 │ 0.80 │ 0.14 │ 21.21% │ │ python-docopt │ 0.33 │ 0.40 │ 0.07 │ 21.21% │ │ python-charset-normalizer │ 2.20 │ 2.67 │ 0.47 │ 21.36% │ │ python-google-crc32c │ 0.14 │ 0.17 │ 0.03 │ 21.43% │ │ python-citeproc-py │ 0.14 │ 0.17 │ 0.03 │ 21.43% │ │ python-libarchive-c │ 0.28 │ 0.34 │ 0.06 │ 21.43% │ │ python-azure-mgmt-sql │ 0.46 │ 0.56 │ 0.10 │ 21.74% │ │ python-requests-credssp │ 0.27 │ 0.33 │ 0.06 │ 22.22% │ │ python-pyairnow │ 0.18 │ 0.22 │ 0.04 │ 22.22% │ │ pydeps │ 0.36 │ 0.44 │ 0.08 │ 22.22% │ │ python-requests-file │ 0.09 │ 0.11 │ 0.02 │ 22.22% │ │ python-evic │ 0.09 │ 0.11 │ 0.02 │ 22.22% │ │ python-pycoingecko │ 0.18 │ 0.22 │ 0.04 │ 22.22% │ │ diceware │ 0.94 │ 1.15 │ 0.21 │ 22.34% │ │ python-hyperframe │ 0.31 │ 0.38 │ 0.07 │ 22.58% │ │ python-azure-mgmt-compute │ 2.61 │ 3.20 │ 0.59 │ 22.61% │ │ python-google-cloud-private-ca │ 4.31 │ 5.29 │ 0.98 │ 22.74% │ │ mu │ 4.92 │ 6.06 │ 1.14 │ 23.17% │ │ python-lz4 │ 956.48 │ 1178.22 │ 221.74 │ 23.18% │ │ python-adal │ 0.69 │ 0.85 │ 0.16 │ 23.19% │ │ python-jnius │ 0.73 │ 0.90 │ 0.17 │ 23.29% │ │ python-jedi │ 34.86 │ 43.05 │ 8.19 │ 23.49% │ │ python-execnet │ 24.18 │ 29.96 │ 5.78 │ 23.90% │ │ python-codecov │ 0.25 │ 0.31 │ 0.06 │ 24.00% │ │ python-knack │ 0.79 │ 0.98 │ 0.19 │ 24.05% │ │ paternoster │ 5.92 │ 7.35 │ 1.43 │ 24.16% │ │ python-google-cloud-build │ 1.59 │ 1.98 │ 0.39 │ 24.53% │ │ python-pytest-repeat │ 0.57 │ 0.71 │ 0.14 │ 24.56% │ │ did │ 0.28 │ 0.35 │ 0.07 │ 25.00% │ │ python-accuweather │ 0.20 │ 0.25 │ 0.05 │ 25.00% │ │ python-winrm │ 0.20 │ 0.25 │ 0.05 │ 25.00% │ │ python-parse_type │ 0.48 │ 0.60 │ 0.12 │ 25.00% │ │ python-jinja2-cli │ 0.04 │ 0.05 │ 0.01 │ 25.00% │ │ python-betamax-matchers │ 0.04 │ 0.05 │ 0.01 │ 25.00% │ │ python-mccabe │ 0.04 │ 0.05 │ 0.01 │ 25.00% │ │ python-pyte │ 0.86 │ 1.08 │ 0.22 │ 25.58% │ │ python-ufoLib2 │ 0.39 │ 0.49 │ 0.10 │ 25.64% │ │ python-google-cloud-asset │ 3.53 │ 4.44 │ 0.91 │ 25.78% │ │ python-platformdirs │ 0.27 │ 0.34 │ 0.07 │ 25.93% │ │ python-google-cloud-billing │ 1.31 │ 1.65 │ 0.34 │ 25.95% │ │ python-sphinxcontrib-htmlhelp │ 0.83 │ 1.05 │ 0.22 │ 26.51% │ │ python-et_xmlfile │ 0.41 │ 0.52 │ 0.11 │ 26.83% │ │ docker-compose │ 22.94 │ 29.15 │ 6.21 │ 27.07% │ │ virt-lightning │ 0.11 │ 0.14 │ 0.03 │ 27.27% │ │ python-OBD │ 0.84 │ 1.07 │ 0.23 │ 27.38% │ │ python-click │ 1.24 │ 1.58 │ 0.34 │ 27.42% │ │ python-flask-babel │ 0.29 │ 0.37 │ 0.08 │ 27.59% │ │ python-filelock │ 1.45 │ 1.85 │ 0.40 │ 27.59% │ │ python-google-cloud-bigquery-connection │ 0.83 │ 1.06 │ 0.23 │ 27.71% │ │ toot │ 0.36 │ 0.46 │ 0.10 │ 27.78% │ │ python-cairosvg │ 5.86 │ 7.49 │ 1.63 │ 27.82% │ │ python-pybtex │ 2.84 │ 3.63 │ 0.79 │ 27.82% │ │ backintime │ 11.66 │ 14.91 │ 3.25 │ 27.87% │ │ python-pyerfa │ 1.47 │ 1.88 │ 0.41 │ 27.89% │ │ python-sphinx-testing │ 0.93 │ 1.19 │ 0.26 │ 27.96% │ │ tracer │ 0.25 │ 0.32 │ 0.07 │ 28.00% │ │ python-qcelemental │ 4.39 │ 5.62 │ 1.23 │ 28.02% │ │ python-celery │ 10.45 │ 13.38 │ 2.93 │ 28.04% │ │ python-jwt │ 1.28 │ 1.64 │ 0.36 │ 28.12% │ │ morphio │ 0.64 │ 0.82 │ 0.18 │ 28.12% │ │ python-cssutils │ 3.16 │ 4.05 │ 0.89 │ 28.16% │ │ python-pytest-lazy-fixture │ 1.20 │ 1.54 │ 0.34 │ 28.33% │ │ python-pytest-sourceorder │ 0.07 │ 0.09 │ 0.02 │ 28.57% │ │ python-requests-exoscale-auth │ 0.07 │ 0.09 │ 0.02 │ 28.57% │ │ resultsdb_conventions │ 0.07 │ 0.09 │ 0.02 │ 28.57% │ │ python-toml │ 0.14 │ 0.18 │ 0.04 │ 28.57% │ │ auditwheel │ 0.59 │ 0.76 │ 0.17 │ 28.81% │ │ python-mwclient │ 0.62 │ 0.80 │ 0.18 │ 29.03% │ │ python-semver │ 0.55 │ 0.71 │ 0.16 │ 29.09% │ │ python-configupdater │ 0.24 │ 0.31 │ 0.07 │ 29.17% │ │ python-pytest-toolbox │ 0.17 │ 0.22 │ 0.05 │ 29.41% │ │ python-tomlkit │ 4.37 │ 5.66 │ 1.29 │ 29.52% │ │ python-google-cloud-containeranalysis │ 0.64 │ 0.83 │ 0.19 │ 29.69% │ │ python-pynacl │ 25.54 │ 33.16 │ 7.62 │ 29.84% │ │ python-pytest-multihost │ 0.10 │ 0.13 │ 0.03 │ 30.00% │ │ python-remoto │ 0.10 │ 0.13 │ 0.03 │ 30.00% │ │ python-autobahn │ 1.23 │ 1.60 │ 0.37 │ 30.08% │ │ uflash │ 0.23 │ 0.30 │ 0.07 │ 30.43% │ │ python-google-cloud-functions │ 0.98 │ 1.28 │ 0.30 │ 30.61% │ │ python-mechanicalsoup │ 1.92 │ 2.51 │ 0.59 │ 30.73% │ │ python-gios │ 0.26 │ 0.34 │ 0.08 │ 30.77% │ │ python-pgspecial │ 0.13 │ 0.17 │ 0.04 │ 30.77% │ │ python-google-cloud-bigquery-datatransfer │ 1.29 │ 1.69 │ 0.40 │ 31.01% │ │ python-pybv │ 1.25 │ 1.64 │ 0.39 │ 31.20% │ │ python-copr │ 0.22 │ 0.29 │ 0.07 │ 31.82% │ │ python-textfsm │ 0.22 │ 0.29 │ 0.07 │ 31.82% │ │ python-numpydoc │ 1.35 │ 1.78 │ 0.43 │ 31.85% │ │ python-capturer │ 0.53 │ 0.70 │ 0.17 │ 32.08% │ │ python-javaproperties │ 1.37 │ 1.81 │ 0.44 │ 32.12% │ │ python-surt │ 0.28 │ 0.37 │ 0.09 │ 32.14% │ │ python-google-cloud-container │ 5.02 │ 6.64 │ 1.62 │ 32.27% │ │ copr-dist-git │ 4.21 │ 5.57 │ 1.36 │ 32.30% │ │ python-branca │ 2.85 │ 3.78 │ 0.93 │ 32.63% │ │ python-google-resumable-media │ 1.01 │ 1.34 │ 0.33 │ 32.67% │ │ python-name-that-hash │ 0.27 │ 0.36 │ 0.09 │ 33.33% │ │ python-cligj │ 0.09 │ 0.12 │ 0.03 │ 33.33% │ │ python-memcached │ 0.09 │ 0.12 │ 0.03 │ 33.33% │ │ python-brother │ 0.39 │ 0.52 │ 0.13 │ 33.33% │ │ python-rebulk │ 0.90 │ 1.20 │ 0.30 │ 33.33% │ │ testcloud │ 0.33 │ 0.44 │ 0.11 │ 33.33% │ │ python-pycosat │ 0.06 │ 0.08 │ 0.02 │ 33.33% │ │ python-repomd │ 0.12 │ 0.16 │ 0.04 │ 33.33% │ │ python-click-help-colors │ 0.06 │ 0.08 │ 0.02 │ 33.33% │ │ python-click-didyoumean │ 0.03 │ 0.04 │ 0.01 │ 33.33% │ │ python-freetype │ 0.03 │ 0.04 │ 0.01 │ 33.33% │ │ python-imagesize │ 0.03 │ 0.04 │ 0.01 │ 33.33% │ │ python-filetype │ 0.06 │ 0.08 │ 0.02 │ 33.33% │ │ python-gevent-eventemitter │ 0.06 │ 0.08 │ 0.02 │ 33.33% │ │ python-send2trash │ 0.06 │ 0.08 │ 0.02 │ 33.33% │ │ pytz │ 0.86 │ 1.15 │ 0.29 │ 33.72% │ │ python-virtualenv-clone │ 10.70 │ 14.32 │ 3.62 │ 33.83% │ │ python-contextily │ 1.12 │ 1.50 │ 0.38 │ 33.93% │ │ python-cairocffi │ 0.50 │ 0.67 │ 0.17 │ 34.00% │ │ python-coloredlogs │ 0.55 │ 0.74 │ 0.19 │ 34.55% │ │ python-importmagic │ 0.26 │ 0.35 │ 0.09 │ 34.62% │ │ python-inject │ 0.20 │ 0.27 │ 0.07 │ 35.00% │ │ python-ajsonrpc │ 0.20 │ 0.27 │ 0.07 │ 35.00% │ │ python-google-cloud-iam │ 0.54 │ 0.73 │ 0.19 │ 35.19% │ │ python-compreffor │ 0.17 │ 0.23 │ 0.06 │ 35.29% │ │ python-annexremote │ 0.25 │ 0.34 │ 0.09 │ 36.00% │ │ python-wcwidth │ 0.11 │ 0.15 │ 0.04 │ 36.36% │ │ python-google-cloud-redis │ 1.59 │ 2.17 │ 0.58 │ 36.48% │ │ python-geopandas │ 77.61 │ 106.01 │ 28.40 │ 36.59% │ │ python-notario │ 0.49 │ 0.67 │ 0.18 │ 36.73% │ │ python-dpkt │ 1.17 │ 1.60 │ 0.43 │ 36.75% │ │ python-google-cloud-apigee-connect │ 0.68 │ 0.93 │ 0.25 │ 36.76% │ │ python-typer-cli │ 4.25 │ 5.83 │ 1.58 │ 37.18% │ │ python-astropy-healpix │ 18.31 │ 25.13 │ 6.82 │ 37.25% │ │ python-flaky │ 0.51 │ 0.70 │ 0.19 │ 37.25% │ │ python-google-cloud-access-approval │ 0.67 │ 0.92 │ 0.25 │ 37.31% │ │ python-colcon-cmake │ 0.08 │ 0.11 │ 0.03 │ 37.50% │ │ python-enrich │ 0.08 │ 0.11 │ 0.03 │ 37.50% │ │ python-xbout │ 197.21 │ 271.33 │ 74.12 │ 37.58% │ │ python-jeepney │ 0.21 │ 0.29 │ 0.08 │ 38.10% │ │ python-readme-renderer │ 0.47 │ 0.65 │ 0.18 │ 38.30% │ │ python-sphinxcontrib-devhelp │ 0.39 │ 0.54 │ 0.15 │ 38.46% │ │ python-azure-keyvault-keys │ 0.57 │ 0.79 │ 0.22 │ 38.60% │ │ python-certbot-apache │ 37.38 │ 51.87 │ 14.49 │ 38.76% │ │ python-environs │ 0.36 │ 0.50 │ 0.14 │ 38.89% │ │ python-watchgod │ 0.41 │ 0.57 │ 0.16 │ 39.02% │ │ python-cerberus │ 0.96 │ 1.34 │ 0.38 │ 39.58% │ │ python-tldextract │ 0.30 │ 0.42 │ 0.12 │ 40.00% │ │ python-translitcodec │ 0.05 │ 0.07 │ 0.02 │ 40.00% │ │ python-netdisco │ 0.05 │ 0.07 │ 0.02 │ 40.00% │ │ python-icalendar │ 0.47 │ 0.66 │ 0.19 │ 40.43% │ │ python-mplcursors │ 17.75 │ 24.93 │ 7.18 │ 40.45% │ │ python-google-cloud-appengine-admin │ 3.31 │ 4.65 │ 1.34 │ 40.48% │ │ python-google-cloud-kms │ 1.90 │ 2.67 │ 0.77 │ 40.53% │ │ python-sphinxcontrib-serializinghtml │ 0.39 │ 0.55 │ 0.16 │ 41.03% │ │ python-google-cloud-api-gateway │ 1.21 │ 1.71 │ 0.50 │ 41.32% │ │ python-smart-gardena │ 0.36 │ 0.51 │ 0.15 │ 41.67% │ │ python-subprocess-tee │ 0.12 │ 0.17 │ 0.05 │ 41.67% │ │ python-aioflo │ 0.12 │ 0.17 │ 0.05 │ 41.67% │ │ python-howdoi │ 2.35 │ 3.33 │ 0.98 │ 41.70% │ │ python-venusian │ 0.31 │ 0.44 │ 0.13 │ 41.94% │ │ python-http-client │ 0.07 │ 0.10 │ 0.03 │ 42.86% │ │ python-pure-protobuf │ 0.14 │ 0.20 │ 0.06 │ 42.86% │ │ python-dns │ 3.21 │ 4.59 │ 1.38 │ 42.99% │ │ python-mock │ 1.06 │ 1.52 │ 0.46 │ 43.40% │ │ python-socketio │ 1.83 │ 2.64 │ 0.81 │ 44.26% │ │ python-pyct │ 0.18 │ 0.26 │ 0.08 │ 44.44% │ │ python-pdfminer │ 0.36 │ 0.52 │ 0.16 │ 44.44% │ │ python-tblib │ 0.90 │ 1.30 │ 0.40 │ 44.44% │ │ distgen │ 0.38 │ 0.55 │ 0.17 │ 44.74% │ │ python-dbus-next │ 0.67 │ 0.97 │ 0.30 │ 44.78% │ │ python-parsel │ 0.20 │ 0.29 │ 0.09 │ 45.00% │ │ python-pymeeus │ 1.33 │ 1.93 │ 0.60 │ 45.11% │ │ babel │ 5.94 │ 8.65 │ 2.71 │ 45.62% │ │ python-grabbit │ 0.81 │ 1.18 │ 0.37 │ 45.68% │ │ python-autopage │ 0.28 │ 0.41 │ 0.13 │ 46.43% │ │ python-soupsieve │ 1.68 │ 2.46 │ 0.78 │ 46.43% │ │ python-amply │ 0.45 │ 0.66 │ 0.21 │ 46.67% │ │ python-schema │ 0.32 │ 0.47 │ 0.15 │ 46.87% │ │ python-vdf │ 0.19 │ 0.28 │ 0.09 │ 47.37% │ │ python-aiosnmp │ 0.19 │ 0.28 │ 0.09 │ 47.37% │ │ pyflakes │ 2.06 │ 3.04 │ 0.98 │ 47.57% │ │ python-google-cloud-billing-budgets │ 0.98 │ 1.45 │ 0.47 │ 47.96% │ │ python-chaospy │ 53.56 │ 79.30 │ 25.74 │ 48.06% │ │ python-nibabel │ 132.65 │ 196.42 │ 63.77 │ 48.07% │ │ python-network-runner │ 0.31 │ 0.46 │ 0.15 │ 48.39% │ │ python-google-cloud-bigquery-reservation │ 1.45 │ 2.16 │ 0.71 │ 48.97% │ │ python-rply │ 0.14 │ 0.21 │ 0.07 │ 50.00% │ │ python-texttable │ 0.04 │ 0.06 │ 0.02 │ 50.00% │ │ python-tambo │ 0.10 │ 0.15 │ 0.05 │ 50.00% │ │ vim-fugitive-pagure │ 0.02 │ 0.03 │ 0.01 │ 50.00% │ │ python-mergedeep │ 0.04 │ 0.06 │ 0.02 │ 50.00% │ │ python-jaraco-classes │ 0.04 │ 0.06 │ 0.02 │ 50.00% │ │ python-yourls │ 0.04 │ 0.06 │ 0.02 │ 50.00% │ │ python-cmarkgfm │ 0.02 │ 0.03 │ 0.01 │ 50.00% │ │ python-maps │ 0.10 │ 0.15 │ 0.05 │ 50.00% │ │ python-aaargh │ 0.04 │ 0.06 │ 0.02 │ 50.00% │ │ python-ukkonen │ 0.02 │ 0.03 │ 0.01 │ 50.00% │ │ python-mistune │ 0.16 │ 0.24 │ 0.08 │ 50.00% │ │ python-pystalk │ 0.04 │ 0.06 │ 0.02 │ 50.00% │ │ python-ssdeep │ 0.06 │ 0.09 │ 0.03 │ 50.00% │ │ python-cytoolz │ 0.88 │ 1.32 │ 0.44 │ 50.00% │ │ python-sqlalchemy-collectd │ 0.18 │ 0.27 │ 0.09 │ 50.00% │ │ python-param │ 1.64 │ 2.47 │ 0.83 │ 50.61% │ │ python-certbot-dns-luadns │ 0.33 │ 0.50 │ 0.17 │ 51.52% │ │ python-google-cloud-os-config │ 4.49 │ 6.83 │ 2.34 │ 52.12% │ │ python-trezor │ 0.42 │ 0.64 │ 0.22 │ 52.38% │ │ python-pyvlx │ 0.51 │ 0.78 │ 0.27 │ 52.94% │ │ jpype │ 5.10 │ 7.80 │ 2.70 │ 52.94% │ │ sshuttle │ 0.77 │ 1.18 │ 0.41 │ 53.25% │ │ python-lsp-jsonrpc │ 0.30 │ 0.46 │ 0.16 │ 53.33% │ │ python-django-prometheus │ 0.15 │ 0.23 │ 0.08 │ 53.33% │ │ python-latexcodec │ 0.56 │ 0.86 │ 0.30 │ 53.57% │ │ python-jellyfish │ 0.41 │ 0.63 │ 0.22 │ 53.66% │ │ python-shtab │ 0.13 │ 0.20 │ 0.07 │ 53.85% │ │ python-rdflib-jsonld │ 0.37 │ 0.57 │ 0.20 │ 54.05% │ │ python-setuptools_git │ 0.24 │ 0.37 │ 0.13 │ 54.17% │ │ python-dockerfile-parse │ 5.27 │ 8.15 │ 2.88 │ 54.65% │ │ python-ncclient │ 1.24 │ 1.92 │ 0.68 │ 54.84% │ │ python-sphinxcontrib-qthelp │ 0.82 │ 1.27 │ 0.45 │ 54.88% │ │ python-certbot-dns-linode │ 0.36 │ 0.56 │ 0.20 │ 55.56% │ │ rpmdeplint │ 0.09 │ 0.14 │ 0.05 │ 55.56% │ │ python-pytest-spec │ 0.09 │ 0.14 │ 0.05 │ 55.56% │ │ python-pid │ 0.09 │ 0.14 │ 0.05 │ 55.56% │ │ python-smartcols │ 0.09 │ 0.14 │ 0.05 │ 55.56% │ │ python-anymarkup-core │ 0.23 │ 0.36 │ 0.13 │ 56.52% │ │ python-fqdn │ 0.14 │ 0.22 │ 0.08 │ 57.14% │ │ python-pytest-datafiles │ 0.31 │ 0.49 │ 0.18 │ 58.06% │ │ pycairo │ 0.70 │ 1.11 │ 0.41 │ 58.57% │ │ python-ddt │ 0.17 │ 0.27 │ 0.10 │ 58.82% │ │ python-pox │ 0.05 │ 0.08 │ 0.03 │ 60.00% │ │ python-ciso8601 │ 0.05 │ 0.08 │ 0.03 │ 60.00% │ │ python-outcome │ 0.05 │ 0.08 │ 0.03 │ 60.00% │ │ python-admesh │ 0.05 │ 0.08 │ 0.03 │ 60.00% │ │ python-utils │ 0.10 │ 0.16 │ 0.06 │ 60.00% │ │ python-voluptuous-serialize │ 0.05 │ 0.08 │ 0.03 │ 60.00% │ │ python-sniffio │ 0.05 │ 0.08 │ 0.03 │ 60.00% │ │ python-funcy │ 0.54 │ 0.87 │ 0.33 │ 61.11% │ │ python-pyxs │ 0.13 │ 0.21 │ 0.08 │ 61.54% │ │ python-netaddr │ 0.94 │ 1.52 │ 0.58 │ 61.70% │ │ python-wsproto │ 0.55 │ 0.89 │ 0.34 │ 61.82% │ │ python-responses │ 0.45 │ 0.73 │ 0.28 │ 62.22% │ │ python-bcrypt │ 0.98 │ 1.59 │ 0.61 │ 62.24% │ │ python-pytaglib │ 0.08 │ 0.13 │ 0.05 │ 62.50% │ │ python-sure │ 0.16 │ 0.26 │ 0.10 │ 62.50% │ │ python-webencodings │ 0.08 │ 0.13 │ 0.05 │ 62.50% │ │ python-pretend │ 0.08 │ 0.13 │ 0.05 │ 62.50% │ │ resalloc │ 1.13 │ 1.84 │ 0.71 │ 62.83% │ │ vex │ 0.19 │ 0.31 │ 0.12 │ 63.16% │ │ python-minidb │ 0.11 │ 0.18 │ 0.07 │ 63.64% │ │ python-graphql-relay │ 0.23 │ 0.38 │ 0.15 │ 65.22% │ │ python-lazyarray │ 0.26 │ 0.43 │ 0.17 │ 65.38% │ │ python-jsonmodels │ 0.74 │ 1.23 │ 0.49 │ 66.22% │ │ python-yubico │ 0.06 │ 0.10 │ 0.04 │ 66.67% │ │ python3-typed_ast │ 0.06 │ 0.10 │ 0.04 │ 66.67% │ │ python-ansicolor │ 0.06 │ 0.10 │ 0.04 │ 66.67% │ │ python-fuzzyfinder │ 0.03 │ 0.05 │ 0.02 │ 66.67% │ │ python-atomicwrites │ 0.03 │ 0.05 │ 0.02 │ 66.67% │ │ python-ansicolors │ 0.06 │ 0.10 │ 0.04 │ 66.67% │ │ python-sly │ 0.06 │ 0.10 │ 0.04 │ 66.67% │ │ python-readlike │ 0.03 │ 0.05 │ 0.02 │ 66.67% │ │ python-click-default-group │ 0.03 │ 0.05 │ 0.02 │ 66.67% │ │ python-duecredit │ 0.31 │ 0.52 │ 0.21 │ 67.74% │ │ thonny │ 0.39 │ 0.66 │ 0.27 │ 69.23% │ │ python-cssselect2 │ 0.73 │ 1.24 │ 0.51 │ 69.86% │ │ python-jsonrpc-server │ 0.20 │ 0.34 │ 0.14 │ 70.00% │ │ python-zict │ 0.20 │ 0.34 │ 0.14 │ 70.00% │ │ python-mercantile │ 0.84 │ 1.43 │ 0.59 │ 70.24% │ │ tldr │ 0.07 │ 0.12 │ 0.05 │ 71.43% │ │ python-parsedatetime │ 0.35 │ 0.60 │ 0.25 │ 71.43% │ │ tmt │ 0.95 │ 1.63 │ 0.68 │ 71.58% │ │ python-flexmock │ 0.74 │ 1.27 │ 0.53 │ 71.62% │ │ python-pypubsub │ 0.57 │ 0.98 │ 0.41 │ 71.93% │ │ autojump │ 0.11 │ 0.19 │ 0.08 │ 72.73% │ │ python-dominate │ 0.11 │ 0.19 │ 0.08 │ 72.73% │ │ python-protego │ 7.89 │ 13.70 │ 5.81 │ 73.64% │ │ spec2scl │ 0.19 │ 0.33 │ 0.14 │ 73.68% │ │ python-iso3166 │ 0.04 │ 0.07 │ 0.03 │ 75.00% │ │ python-zm │ 0.08 │ 0.14 │ 0.06 │ 75.00% │ │ python-whatever │ 0.08 │ 0.14 │ 0.06 │ 75.00% │ │ python-ujson │ 0.43 │ 0.76 │ 0.33 │ 76.74% │ │ python-inflection │ 0.54 │ 0.96 │ 0.42 │ 77.78% │ │ python-pyarlo │ 0.27 │ 0.48 │ 0.21 │ 77.78% │ │ python-metar │ 0.32 │ 0.57 │ 0.25 │ 78.12% │ │ python-sphinxcontrib-applehelp │ 0.40 │ 0.72 │ 0.32 │ 80.00% │ │ python-argon2-cffi │ 3.84 │ 6.93 │ 3.09 │ 80.47% │ │ python-six │ 0.36 │ 0.65 │ 0.29 │ 80.56% │ │ python-junit_xml │ 0.11 │ 0.20 │ 0.09 │ 81.82% │ │ python-iniconfig │ 0.06 │ 0.11 │ 0.05 │ 83.33% │ │ python-ring-doorbell │ 0.12 │ 0.22 │ 0.10 │ 83.33% │ │ python-tabulate │ 0.83 │ 1.53 │ 0.70 │ 84.34% │ │ python-itsdangerous │ 1.29 │ 2.38 │ 1.09 │ 84.50% │ │ python-hamcrest │ 0.73 │ 1.35 │ 0.62 │ 84.93% │ │ python-pastel │ 0.07 │ 0.13 │ 0.06 │ 85.71% │ │ python-identify │ 0.54 │ 1.01 │ 0.47 │ 87.04% │ │ python-markdown-it-py │ 1.55 │ 2.90 │ 1.35 │ 87.10% │ │ rust-packaging │ 0.16 │ 0.30 │ 0.14 │ 87.50% │ │ python-flake8-import-order │ 0.51 │ 0.96 │ 0.45 │ 88.24% │ │ python-affine │ 0.23 │ 0.44 │ 0.21 │ 91.30% │ │ python-snaptime │ 0.12 │ 0.23 │ 0.11 │ 91.67% │ │ python-uritemplate │ 0.13 │ 0.25 │ 0.12 │ 92.31% │ │ marshalparser │ 371.57 │ 715.72 │ 344.15 │ 92.62% │ │ salt-lint │ 0.14 │ 0.27 │ 0.13 │ 92.86% │ │ python-awesomeversion │ 0.30 │ 0.58 │ 0.28 │ 93.33% │ │ python-aiomodbus │ 0.15 │ 0.29 │ 0.14 │ 93.33% │ │ python-bleach │ 0.73 │ 1.42 │ 0.69 │ 94.52% │ │ python-colorful │ 0.39 │ 0.77 │ 0.38 │ 97.44% │ │ python-vcrpy │ 0.65 │ 1.29 │ 0.64 │ 98.46% │ │ python-shellingham │ 0.02 │ 0.04 │ 0.02 │ 100.00% │ │ python-collectd_systemd │ 0.03 │ 0.06 │ 0.03 │ 100.00% │ │ python-editdistance-s │ 0.01 │ 0.02 │ 0.01 │ 100.00% │ │ python-kiwisolver │ 0.20 │ 0.40 │ 0.20 │ 100.00% │ │ python-backcall │ 0.01 │ 0.02 │ 0.01 │ 100.00% │ │ python-yattag │ 0.05 │ 0.10 │ 0.05 │ 100.00% │ │ python-email-validator │ 0.10 │ 0.20 │ 0.10 │ 100.00% │ │ remctl │ 0.04 │ 0.08 │ 0.04 │ 100.00% │ │ python-mdit-py-plugins │ 0.55 │ 1.10 │ 0.55 │ 100.00% │ │ python-aioesphomeapi │ 0.47 │ 0.94 │ 0.47 │ 100.00% │ │ python-aspy.yaml │ 0.03 │ 0.06 │ 0.03 │ 100.00% │ │ python-uri-templates │ 0.02 │ 0.04 │ 0.02 │ 100.00% │ │ python-editdistance │ 0.01 │ 0.02 │ 0.01 │ 100.00% │ │ python-ots │ 0.01 │ 0.02 │ 0.01 │ 100.00% │ │ python-pytest-fixture-config │ 0.02 │ 0.04 │ 0.02 │ 100.00% │ │ pylibacl │ 0.10 │ 0.20 │ 0.10 │ 100.00% │ │ python-pytest-datadir │ 0.03 │ 0.06 │ 0.03 │ 100.00% │ │ python-sseclient-py │ 0.04 │ 0.08 │ 0.04 │ 100.00% │ │ python-requests-mock │ 0.02 │ 0.04 │ 0.02 │ 100.00% │ │ python-h11 │ 0.36 │ 0.72 │ 0.36 │ 100.00% │ │ python-colcon-package-information │ 0.01 │ 0.02 │ 0.01 │ 100.00% │ │ crypto-policies │ 0.19 │ 0.38 │ 0.19 │ 100.00% │ │ python-flake8-polyfill │ 0.04 │ 0.08 │ 0.04 │ 100.00% │ │ python-tinyrpc │ 1.11 │ 2.23 │ 1.12 │ 100.90% │ │ python-mackup │ 0.22 │ 0.45 │ 0.23 │ 104.55% │ │ pythran │ 7801.49 │ 16548.91 │ 8747.42 │ 112.12% │ │ python-registry │ 0.07 │ 0.15 │ 0.08 │ 114.29% │ │ python-dbfread │ 0.07 │ 0.15 │ 0.08 │ 114.29% │ │ python-airspeed │ 0.24 │ 0.52 │ 0.28 │ 116.67% │ │ python-arpeggio │ 0.58 │ 1.26 │ 0.68 │ 117.24% │ │ python-requests-unixsocket │ 0.15 │ 0.33 │ 0.18 │ 120.00% │ │ python-yarl │ 2.66 │ 5.93 │ 3.27 │ 122.93% │ │ python-wcmatch │ 2.50 │ 5.68 │ 3.18 │ 127.20% │ │ python-cli-helpers │ 0.21 │ 0.48 │ 0.27 │ 128.57% │ │ python-sortedcollections │ 0.32 │ 0.76 │ 0.44 │ 137.50% │ │ python-GridDataFormats │ 0.90 │ 2.15 │ 1.25 │ 138.89% │ │ python-jaraco-path │ 0.05 │ 0.12 │ 0.07 │ 140.00% │ │ python-systemd │ 0.14 │ 0.34 │ 0.20 │ 142.86% │ │ python-teslajsonpy │ 0.43 │ 1.05 │ 0.62 │ 144.19% │ │ python-packaging │ 27.58 │ 67.76 │ 40.18 │ 145.69% │ │ python-cfgv │ 0.15 │ 0.37 │ 0.22 │ 146.67% │ │ python-validators │ 0.47 │ 1.38 │ 0.91 │ 193.62% │ │ python-tinycss2 │ 1.23 │ 3.62 │ 2.39 │ 194.31% │ │ python-managesieve │ 0.18 │ 0.53 │ 0.35 │ 194.44% │ │ python-uamqp │ 0.96 │ 2.83 │ 1.87 │ 194.79% │ │ python-rangeparser │ 0.01 │ 0.03 │ 0.02 │ 200.00% │ │ python-whichcraft │ 0.01 │ 0.03 │ 0.02 │ 200.00% │ │ python-pathvalidate │ 3.46 │ 10.64 │ 7.18 │ 207.51% │ │ python-biscuits │ 0.07 │ 0.22 │ 0.15 │ 214.29% │ │ python-colorzero │ 3.77 │ 11.87 │ 8.10 │ 214.85% │ │ python-tomli-w │ 0.49 │ 1.57 │ 1.08 │ 220.41% │ │ python-tomli │ 0.82 │ 2.92 │ 2.10 │ 256.10% │ │ python-node-semver │ 1.09 │ 3.92 │ 2.83 │ 259.63% │ │ sum │ 31191.28 │ 41189.35 │ 9998.07 │ 32.05% │ │ avg │ 32.73 │ 43.22 │ 10.49 │ 24.50% │ └───────────────────────────────────────────┴──────────┴──────────┴─────────┴─────────┘ ```
hroncok commented 2 years ago

Should I restart the 7 builds to make it more up to date?

The-Compiler commented 2 years ago

If you don't mind the additional load this puts on Fedora infra, that would be great - I guess it would certainly make the values more accurate.

hroncok commented 2 years ago

Updated pytest 7 times: pytest-7.txt

The-Compiler commented 2 years ago

Well, this is looking very different indeed:

│ python-bleach                             │     0.73 │     1.47 │    0.74 │ 101.37% │
│ python-tinyrpc                            │     1.11 │     2.25 │    1.14 │ 102.70% │
│ python-managesieve                        │     0.18 │     0.37 │    0.19 │ 105.56% │
│ python-validators                         │     0.47 │     0.98 │    0.51 │ 108.51% │
│ python-flake8-import-order                │     0.51 │     1.07 │    0.56 │ 109.80% │
│ python-yarl                               │     2.66 │     5.86 │    3.20 │ 120.30% │
│ python-dbfread                            │     0.07 │     0.16 │    0.09 │ 128.57% │
│ python-tinycss2                           │     1.23 │     2.88 │    1.65 │ 134.15% │
│ python-tomli-w                            │     0.49 │     1.21 │    0.72 │ 146.94% │
│ python-systemd                            │     0.14 │     0.35 │    0.21 │ 150.00% │
│ python-tomli                              │     0.82 │     2.42 │    1.60 │ 195.12% │
│ python-rangeparser                        │     0.01 │     0.03 │    0.02 │ 200.00% │
│ python-pathvalidate                       │     3.46 │    10.39 │    6.93 │ 200.29% │
│ python-uamqp                              │     0.96 │     2.90 │    1.94 │ 202.08% │
│ python-colorzero                          │     3.77 │    11.69 │    7.92 │ 210.08% │
│ python-node-semver                        │     1.09 │     3.78 │    2.69 │ 246.79% │
│ sum                                       │ 31253.31 │ 31544.78 │  291.47 │   0.93% │
│ avg                                       │    33.50 │    33.81 │    0.31 │  18.31% │
└───────────────────────────────────────────┴──────────┴──────────┴─────────┴─────────┘

(note that "100%" still means "double the original time" though...)

Anyone volunteering to look into some of those projects in more detail to figure out if the same tests did run, and if so, if there really is some kind of slowdown in pytest with them?

Full output:

``` ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━┓ ┃ Name ┃ pytest 6 ┃ pytest 7 ┃ Δabs ┃ Δrel ┃ ┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━┩ │ python-jupyter-console │ 62.87 │ 3.06 │ -59.81 │ -95.13% │ │ python-typing-extensions │ 0.93 │ 0.42 │ -0.51 │ -54.84% │ │ python3-pyPEG2 │ 0.32 │ 0.17 │ -0.15 │ -46.88% │ │ pytest │ 166.15 │ 89.40 │ -76.75 │ -46.19% │ │ python-traitlets │ 2.52 │ 1.43 │ -1.09 │ -43.25% │ │ python-sentinels │ 0.03 │ 0.02 │ -0.01 │ -33.33% │ │ python-hypothesis-fspaths │ 10.64 │ 7.36 │ -3.28 │ -30.83% │ │ python-configobj │ 0.36 │ 0.25 │ -0.11 │ -30.56% │ │ python-jsons │ 1.07 │ 0.77 │ -0.30 │ -28.04% │ │ h5py │ 6.06 │ 4.37 │ -1.69 │ -27.89% │ │ python-mongomock │ 1.96 │ 1.43 │ -0.53 │ -27.04% │ │ python-arrow │ 16.15 │ 12.56 │ -3.59 │ -22.23% │ │ python-smbprotocol │ 4.02 │ 3.16 │ -0.86 │ -21.39% │ │ python-mutagen │ 35.39 │ 28.05 │ -7.34 │ -20.74% │ │ python-configargparse │ 0.20 │ 0.16 │ -0.04 │ -20.00% │ │ python-toml-adapt │ 0.05 │ 0.04 │ -0.01 │ -20.00% │ │ python-pytest-mpi │ 24.19 │ 19.38 │ -4.81 │ -19.88% │ │ python-alembic │ 12.02 │ 9.67 │ -2.35 │ -19.55% │ │ python-userpath │ 2.19 │ 1.78 │ -0.41 │ -18.72% │ │ python-rangehttpserver │ 0.11 │ 0.09 │ -0.02 │ -18.18% │ │ python-paste │ 1.88 │ 1.54 │ -0.34 │ -18.09% │ │ python-opnsense │ 0.19 │ 0.16 │ -0.03 │ -15.79% │ │ python-pymochad │ 0.13 │ 0.11 │ -0.02 │ -15.38% │ │ python-kajiki │ 0.86 │ 0.73 │ -0.13 │ -15.12% │ │ python-typish │ 0.62 │ 0.53 │ -0.09 │ -14.52% │ │ python-webob │ 9.88 │ 8.46 │ -1.42 │ -14.37% │ │ python-sphinx-kr-theme │ 0.07 │ 0.06 │ -0.01 │ -14.29% │ │ python-git-url-parse │ 0.21 │ 0.18 │ -0.03 │ -14.29% │ │ python-pytn3270 │ 0.87 │ 0.75 │ -0.12 │ -13.79% │ │ cloud-init │ 31.82 │ 27.67 │ -4.15 │ -13.04% │ │ python-google-cloud-bigquery │ 21.68 │ 18.87 │ -2.81 │ -12.96% │ │ python-compal │ 0.08 │ 0.07 │ -0.01 │ -12.50% │ │ python-habitipy │ 5.82 │ 5.10 │ -0.72 │ -12.37% │ │ python-hypothesis │ 757.06 │ 664.64 │ -92.42 │ -12.21% │ │ python-btlewrap │ 0.09 │ 0.08 │ -0.01 │ -11.11% │ │ python-copr-common │ 0.09 │ 0.08 │ -0.01 │ -11.11% │ │ python-requests-futures │ 0.09 │ 0.08 │ -0.01 │ -11.11% │ │ python-ipykernel │ 50.69 │ 45.11 │ -5.58 │ -11.01% │ │ python-service-identity │ 0.28 │ 0.25 │ -0.03 │ -10.71% │ │ python-google-cloud-core │ 0.85 │ 0.76 │ -0.09 │ -10.59% │ │ python-pyocr │ 0.96 │ 0.86 │ -0.10 │ -10.42% │ │ python-sphinx-click │ 0.11 │ 0.10 │ -0.01 │ -9.09% │ │ python-starlette │ 6.52 │ 5.94 │ -0.58 │ -8.90% │ │ python-krbcontext │ 0.12 │ 0.11 │ -0.01 │ -8.33% │ │ python-opentelemetry │ 32.45 │ 29.84 │ -2.61 │ -8.04% │ │ python-pynetbox │ 0.38 │ 0.35 │ -0.03 │ -7.89% │ │ python-APScheduler │ 6.73 │ 6.21 │ -0.52 │ -7.73% │ │ python-license-expression │ 0.92 │ 0.85 │ -0.07 │ -7.61% │ │ python-cssutils │ 3.16 │ 2.92 │ -0.24 │ -7.59% │ │ docker-compose │ 22.94 │ 21.20 │ -1.74 │ -7.59% │ │ python-abimap │ 0.54 │ 0.50 │ -0.04 │ -7.41% │ │ python-aiohttp-cors │ 1.56 │ 1.45 │ -0.11 │ -7.05% │ │ python-google-cloud-bigtable │ 19.48 │ 18.12 │ -1.36 │ -6.98% │ │ python-importlib-metadata │ 0.45 │ 0.42 │ -0.03 │ -6.67% │ │ python-git-changelog │ 0.15 │ 0.14 │ -0.01 │ -6.67% │ │ python-pytest-venv │ 2.71 │ 2.54 │ -0.17 │ -6.27% │ │ python-pycec │ 0.32 │ 0.30 │ -0.02 │ -6.25% │ │ python-pymemcache │ 2.09 │ 1.96 │ -0.13 │ -6.22% │ │ python-SALib │ 109.79 │ 103.21 │ -6.58 │ -5.99% │ │ python-overpy │ 13.91 │ 13.10 │ -0.81 │ -5.82% │ │ python-simplejson │ 1.21 │ 1.14 │ -0.07 │ -5.79% │ │ python-mock │ 1.06 │ 1.00 │ -0.06 │ -5.66% │ │ python-ZEO │ 0.55 │ 0.52 │ -0.03 │ -5.45% │ │ python-kafka │ 11.92 │ 11.28 │ -0.64 │ -5.37% │ │ python-trimesh │ 660.77 │ 625.56 │ -35.21 │ -5.33% │ │ backintime │ 11.66 │ 11.04 │ -0.62 │ -5.32% │ │ python-pdir2 │ 0.58 │ 0.55 │ -0.03 │ -5.17% │ │ python-cornice │ 4.50 │ 4.28 │ -0.22 │ -4.89% │ │ python-sexpdata │ 0.21 │ 0.20 │ -0.01 │ -4.76% │ │ python-aiosasl │ 0.42 │ 0.40 │ -0.02 │ -4.76% │ │ python-reedsolo │ 2.53 │ 2.41 │ -0.12 │ -4.74% │ │ python-tenacity │ 2.97 │ 2.83 │ -0.14 │ -4.71% │ │ python-notebook │ 32.70 │ 31.20 │ -1.50 │ -4.59% │ │ python-setuptools_git │ 0.24 │ 0.23 │ -0.01 │ -4.17% │ │ python-pymediainfo │ 1.95 │ 1.87 │ -0.08 │ -4.10% │ │ python-plyvel │ 3.06 │ 2.94 │ -0.12 │ -3.92% │ │ python-msrest │ 4.42 │ 4.25 │ -0.17 │ -3.85% │ │ python-structlog │ 1.05 │ 1.01 │ -0.04 │ -3.81% │ │ copr-dist-git │ 4.21 │ 4.05 │ -0.16 │ -3.80% │ │ python-pydata-sphinx-theme │ 8.90 │ 8.58 │ -0.32 │ -3.60% │ │ python-cherrypy │ 111.02 │ 107.24 │ -3.78 │ -3.40% │ │ python-check-manifest │ 5.71 │ 5.53 │ -0.18 │ -3.15% │ │ python-more-executors │ 135.00 │ 130.85 │ -4.15 │ -3.07% │ │ python-priority │ 9.44 │ 9.15 │ -0.29 │ -3.07% │ │ python-libsass │ 0.98 │ 0.95 │ -0.03 │ -3.06% │ │ python-shapely │ 1.40 │ 1.36 │ -0.04 │ -2.86% │ │ python-kombu │ 16.16 │ 15.70 │ -0.46 │ -2.85% │ │ python-chaospy │ 53.56 │ 52.06 │ -1.50 │ -2.80% │ │ python-acme │ 15.82 │ 15.38 │ -0.44 │ -2.78% │ │ python-zstandard │ 23.95 │ 23.29 │ -0.66 │ -2.76% │ │ python-test_server │ 26.00 │ 25.29 │ -0.71 │ -2.73% │ │ python-jedi │ 34.86 │ 33.93 │ -0.93 │ -2.67% │ │ python-typeguard │ 0.78 │ 0.76 │ -0.02 │ -2.56% │ │ python-pyriemann │ 6.37 │ 6.21 │ -0.16 │ -2.51% │ │ python-prompt-toolkit │ 22.26 │ 21.73 │ -0.53 │ -2.38% │ │ python-alarmdecoder │ 0.43 │ 0.42 │ -0.01 │ -2.33% │ │ python-tcxreader │ 6.14 │ 6.00 │ -0.14 │ -2.28% │ │ pyproj │ 20.93 │ 20.46 │ -0.47 │ -2.25% │ │ python-fissix │ 25.53 │ 24.98 │ -0.55 │ -2.15% │ │ pythran │ 7801.49 │ 7634.30 │ -167.19 │ -2.14% │ │ python-healpy │ 9.19 │ 9.01 │ -0.18 │ -1.96% │ │ python-pytest-testinfra │ 8.97 │ 8.81 │ -0.16 │ -1.78% │ │ python-google-cloud-firestore │ 12.85 │ 12.63 │ -0.22 │ -1.71% │ │ python-indexed_gzip │ 1087.85 │ 1069.27 │ -18.58 │ -1.71% │ │ python-sqlalchemy │ 879.23 │ 864.53 │ -14.70 │ -1.67% │ │ python-nb2plots │ 185.39 │ 182.47 │ -2.92 │ -1.58% │ │ pipenv │ 3.89 │ 3.83 │ -0.06 │ -1.54% │ │ python-cartopy │ 55.04 │ 54.24 │ -0.80 │ -1.45% │ │ python-metakernel │ 37.45 │ 36.91 │ -0.54 │ -1.44% │ │ python-guizero │ 38.24 │ 37.70 │ -0.54 │ -1.41% │ │ python-photutils │ 163.54 │ 161.25 │ -2.29 │ -1.40% │ │ python-sshtunnel │ 58.12 │ 57.32 │ -0.80 │ -1.38% │ │ emacs-jedi │ 1.54 │ 1.52 │ -0.02 │ -1.30% │ │ python-PyGithub │ 44.10 │ 43.55 │ -0.55 │ -1.25% │ │ python-git-revise │ 4.51 │ 4.46 │ -0.05 │ -1.11% │ │ pew │ 20.11 │ 19.90 │ -0.21 │ -1.04% │ │ python-pyphi │ 55.25 │ 54.68 │ -0.57 │ -1.03% │ │ python-dns-lexicon │ 94.06 │ 93.15 │ -0.91 │ -0.97% │ │ certbot │ 22.91 │ 22.69 │ -0.22 │ -0.96% │ │ python-dogpile-cache │ 34.74 │ 34.41 │ -0.33 │ -0.95% │ │ resalloc │ 1.13 │ 1.12 │ -0.01 │ -0.88% │ │ python-pingouin │ 37.83 │ 37.50 │ -0.33 │ -0.87% │ │ python-howdoi │ 2.35 │ 2.33 │ -0.02 │ -0.85% │ │ python-sphinxtesters │ 4.71 │ 4.67 │ -0.04 │ -0.85% │ │ python-google-cloud-storage │ 9.63 │ 9.55 │ -0.08 │ -0.83% │ │ python-missingno │ 1.24 │ 1.23 │ -0.01 │ -0.81% │ │ python-pygments │ 23.70 │ 23.54 │ -0.16 │ -0.68% │ │ python-bluepyopt │ 126.04 │ 125.33 │ -0.71 │ -0.56% │ │ python-pyinels │ 7.21 │ 7.17 │ -0.04 │ -0.55% │ │ python-emcee │ 120.15 │ 119.51 │ -0.64 │ -0.53% │ │ python-aioopenssl │ 4.06 │ 4.04 │ -0.02 │ -0.49% │ │ python-lfpy │ 156.60 │ 155.85 │ -0.75 │ -0.48% │ │ python-daphne │ 14.89 │ 14.82 │ -0.07 │ -0.47% │ │ python-astroscrappy │ 15.13 │ 15.06 │ -0.07 │ -0.46% │ │ python-pexpect │ 171.16 │ 170.41 │ -0.75 │ -0.44% │ │ python-jupyter-client │ 164.34 │ 163.63 │ -0.71 │ -0.43% │ │ python-spake2 │ 2.33 │ 2.32 │ -0.01 │ -0.43% │ │ python-pywt │ 71.53 │ 71.24 │ -0.29 │ -0.41% │ │ python-nixio │ 86.26 │ 85.95 │ -0.31 │ -0.36% │ │ python-jaraco-functools │ 3.11 │ 3.10 │ -0.01 │ -0.32% │ │ python-sphinx-notfound-page │ 6.29 │ 6.27 │ -0.02 │ -0.32% │ │ fonttools │ 29.01 │ 28.92 │ -0.09 │ -0.31% │ │ python-cached_property │ 7.19 │ 7.17 │ -0.02 │ -0.28% │ │ python-sphinxcontrib-bibtex │ 15.62 │ 15.58 │ -0.04 │ -0.26% │ │ python-tifffile │ 584.13 │ 582.67 │ -1.46 │ -0.25% │ │ python-redis │ 4.03 │ 4.02 │ -0.01 │ -0.25% │ │ python-path │ 4.57 │ 4.56 │ -0.01 │ -0.22% │ │ python-neurodsp │ 5.06 │ 5.05 │ -0.01 │ -0.20% │ │ python-curio │ 92.72 │ 92.54 │ -0.18 │ -0.19% │ │ xonsh │ 58.26 │ 58.16 │ -0.10 │ -0.17% │ │ python-pyhomematic │ 9.63 │ 9.62 │ -0.01 │ -0.10% │ │ python-pymatreader │ 72.90 │ 72.85 │ -0.05 │ -0.07% │ │ python-matplotlib │ 336.97 │ 336.84 │ -0.13 │ -0.04% │ │ python-imbalanced-learn │ 104.44 │ 104.42 │ -0.02 │ -0.02% │ │ python-colcon-test-result │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-recursive-crawl │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-mixin │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-texext │ 3.28 │ 3.28 │ 0.00 │ 0.00% │ │ python-aioflo │ 0.12 │ 0.12 │ 0.00 │ 0.00% │ │ python-wsaccel │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-prawcore │ 0.40 │ 0.40 │ 0.00 │ 0.00% │ │ python-sphinx-testing │ 0.93 │ 0.93 │ 0.00 │ 0.00% │ │ python-opentracing │ 0.66 │ 0.66 │ 0.00 │ 0.00% │ │ python-setuptools_scm_git_archive │ 0.02 │ 0.02 │ 0.00 │ 0.00% │ │ jpype │ 5.10 │ 5.10 │ 0.00 │ 0.00% │ │ python-colcon-lcov-result │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-python-setup-py │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-tempora │ 1.41 │ 1.41 │ 0.00 │ 0.00% │ │ python-aioeafm │ 0.09 │ 0.09 │ 0.00 │ 0.00% │ │ python-colcon-defaults │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-altgraph │ 0.21 │ 0.21 │ 0.00 │ 0.00% │ │ python-colcon-package-selection │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-zsh │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-notification │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-devtools │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-parallel-executor │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-cd │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-library-path │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-bash │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-terminado │ 36.48 │ 36.48 │ 0.00 │ 0.00% │ │ pycolumnize │ 0.03 │ 0.03 │ 0.00 │ 0.00% │ │ python-landslide │ 0.34 │ 0.34 │ 0.00 │ 0.00% │ │ python-pytest-error-for-skips │ 0.11 │ 0.11 │ 0.00 │ 0.00% │ │ python-stdio-mgr │ 0.02 │ 0.02 │ 0.00 │ 0.00% │ │ python-colcon-coveragepy-result │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-mongoquery │ 0.04 │ 0.04 │ 0.00 │ 0.00% │ │ python-colcon-ros-bazel │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-ed │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-resultsdb_api │ 0.14 │ 0.14 │ 0.00 │ 0.00% │ │ python-keyrings-alt │ 0.72 │ 0.72 │ 0.00 │ 0.00% │ │ python-Automat │ 0.30 │ 0.30 │ 0.00 │ 0.00% │ │ python-lacrosse │ 0.15 │ 0.15 │ 0.00 │ 0.00% │ │ python-docker-squash │ 0.24 │ 0.24 │ 0.00 │ 0.00% │ │ python-allpairspy │ 0.08 │ 0.08 │ 0.00 │ 0.00% │ │ python-colcon-package-information │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-output │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-colcon-metadata │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ mkosi │ 0.42 │ 0.42 │ 0.00 │ 0.00% │ │ fasttrack │ 1.10 │ 1.10 │ 0.00 │ 0.00% │ │ python-pybtex-docutils │ 0.20 │ 0.20 │ 0.00 │ 0.00% │ │ python-trustme │ 20.76 │ 20.76 │ 0.00 │ 0.00% │ │ python-pycomfoair │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-requests │ 65.84 │ 65.84 │ 0.00 │ 0.00% │ │ python-scripttester │ 0.34 │ 0.34 │ 0.00 │ 0.00% │ │ python-colcon-argcomplete │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-cachez │ 1.06 │ 1.06 │ 0.00 │ 0.00% │ │ python-diff-match-patch │ 1.54 │ 1.54 │ 0.00 │ 0.00% │ │ python-colcon-pkg-config │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-cs │ 0.36 │ 0.36 │ 0.00 │ 0.00% │ │ python-hupper │ 10.38 │ 10.38 │ 0.00 │ 0.00% │ │ python-colcon-powershell │ 0.01 │ 0.01 │ 0.00 │ 0.00% │ │ python-restfly │ 51.65 │ 51.67 │ 0.02 │ 0.04% │ │ python-mplcursors │ 17.75 │ 17.77 │ 0.02 │ 0.11% │ │ python-lfpykit │ 8.86 │ 8.87 │ 0.01 │ 0.11% │ │ python-pyvirtualdisplay │ 70.71 │ 70.80 │ 0.09 │ 0.13% │ │ python-theano │ 171.18 │ 171.40 │ 0.22 │ 0.13% │ │ python-easyprocess │ 61.08 │ 61.16 │ 0.08 │ 0.13% │ │ python-lesscpy │ 13.75 │ 13.77 │ 0.02 │ 0.15% │ │ python-aiomqtt │ 6.18 │ 6.19 │ 0.01 │ 0.16% │ │ argparse-manpage │ 4.12 │ 4.13 │ 0.01 │ 0.24% │ │ python-flask-caching │ 85.70 │ 85.94 │ 0.24 │ 0.28% │ │ python-ssdp │ 3.05 │ 3.06 │ 0.01 │ 0.33% │ │ python-cachelib │ 24.01 │ 24.09 │ 0.08 │ 0.33% │ │ 2ping │ 63.65 │ 63.87 │ 0.22 │ 0.35% │ │ python-pyqtgraph │ 138.41 │ 138.91 │ 0.50 │ 0.36% │ │ python-x3dh │ 5.26 │ 5.28 │ 0.02 │ 0.38% │ │ python-meautility │ 2.41 │ 2.42 │ 0.01 │ 0.41% │ │ python-mirakuru │ 74.17 │ 74.50 │ 0.33 │ 0.44% │ │ python-sphinx-hoverxref │ 2.19 │ 2.20 │ 0.01 │ 0.46% │ │ python-fastpurge │ 6.53 │ 6.56 │ 0.03 │ 0.46% │ │ python-watchdog │ 36.31 │ 36.48 │ 0.17 │ 0.47% │ │ python-blackbird │ 2.05 │ 2.06 │ 0.01 │ 0.49% │ │ python-social-auth-core │ 25.91 │ 26.04 │ 0.13 │ 0.50% │ │ python-pytenable │ 190.27 │ 191.23 │ 0.96 │ 0.50% │ │ python-reproject │ 99.56 │ 100.07 │ 0.51 │ 0.51% │ │ python-geopandas │ 77.61 │ 78.03 │ 0.42 │ 0.54% │ │ python-webpy │ 10.61 │ 10.67 │ 0.06 │ 0.57% │ │ python-waterfurnace │ 10.13 │ 10.19 │ 0.06 │ 0.59% │ │ python-build │ 53.14 │ 53.46 │ 0.32 │ 0.60% │ │ python-patsy │ 25.93 │ 26.09 │ 0.16 │ 0.62% │ │ python-pytest-timeout │ 39.51 │ 39.76 │ 0.25 │ 0.63% │ │ python-pyswip │ 4.67 │ 4.70 │ 0.03 │ 0.64% │ │ python-webtest │ 4.47 │ 4.50 │ 0.03 │ 0.67% │ │ python-setuptools │ 70.81 │ 71.31 │ 0.50 │ 0.71% │ │ dumb-init │ 8.49 │ 8.55 │ 0.06 │ 0.71% │ │ python-pyphen │ 9.78 │ 9.85 │ 0.07 │ 0.72% │ │ python-jsonpickle │ 1.39 │ 1.40 │ 0.01 │ 0.72% │ │ python-zeroconf │ 77.72 │ 78.35 │ 0.63 │ 0.81% │ │ python-ptyprocess │ 3.70 │ 3.73 │ 0.03 │ 0.81% │ │ python-setuptools_scm │ 45.76 │ 46.14 │ 0.38 │ 0.83% │ │ python-distro │ 1.19 │ 1.20 │ 0.01 │ 0.84% │ │ python-jmespath │ 430.69 │ 434.39 │ 3.70 │ 0.86% │ │ python-amqp │ 49.68 │ 50.11 │ 0.43 │ 0.87% │ │ python-pynetdicom │ 826.07 │ 833.50 │ 7.43 │ 0.90% │ │ duplicity │ 739.77 │ 746.75 │ 6.98 │ 0.94% │ │ python-nbclient │ 57.16 │ 57.72 │ 0.56 │ 0.98% │ │ python-gsd │ 3.97 │ 4.01 │ 0.04 │ 1.01% │ │ python-jinja2 │ 2.93 │ 2.96 │ 0.03 │ 1.02% │ │ marshalparser │ 371.57 │ 375.57 │ 4.00 │ 1.08% │ │ python-fpylll │ 77.90 │ 78.74 │ 0.84 │ 1.08% │ │ python-readthedocs-sphinx-ext │ 2.68 │ 2.71 │ 0.03 │ 1.12% │ │ python-insteon │ 64.19 │ 64.91 │ 0.72 │ 1.12% │ │ python-hpack │ 10.61 │ 10.73 │ 0.12 │ 1.13% │ │ androguard │ 45.04 │ 45.58 │ 0.54 │ 1.20% │ │ python-uvicorn │ 38.53 │ 39.00 │ 0.47 │ 1.22% │ │ python-uranium │ 20.26 │ 20.51 │ 0.25 │ 1.23% │ │ python-pyelectro │ 0.80 │ 0.81 │ 0.01 │ 1.25% │ │ python-praw │ 14.87 │ 15.06 │ 0.19 │ 1.28% │ │ python-sphinxcontrib-openapi │ 12.48 │ 12.64 │ 0.16 │ 1.28% │ │ python-earthpy │ 4.58 │ 4.64 │ 0.06 │ 1.31% │ │ python-werkzeug │ 14.49 │ 14.68 │ 0.19 │ 1.31% │ │ python-fs │ 26.97 │ 27.33 │ 0.36 │ 1.33% │ │ python-branca │ 2.85 │ 2.89 │ 0.04 │ 1.40% │ │ python-liblarch │ 8.45 │ 8.57 │ 0.12 │ 1.42% │ │ python-pytest-services │ 2.07 │ 2.10 │ 0.03 │ 1.45% │ │ copr-backend │ 80.59 │ 81.77 │ 1.18 │ 1.46% │ │ python-sphinxcontrib-jsmath │ 0.68 │ 0.69 │ 0.01 │ 1.47% │ │ python-prometheus_client │ 4.67 │ 4.74 │ 0.07 │ 1.50% │ │ python-sphinxcontrib-programoutput │ 5.28 │ 5.36 │ 0.08 │ 1.52% │ │ python-nibabel │ 132.65 │ 134.69 │ 2.04 │ 1.54% │ │ python-chardet │ 25.70 │ 26.10 │ 0.40 │ 1.56% │ │ python-niapy │ 330.65 │ 335.82 │ 5.17 │ 1.56% │ │ borgbackup │ 260.53 │ 264.75 │ 4.22 │ 1.62% │ │ python-pydyf │ 1.20 │ 1.22 │ 0.02 │ 1.67% │ │ python-pytest-mpl │ 25.78 │ 26.21 │ 0.43 │ 1.67% │ │ python-hdate │ 5.26 │ 5.35 │ 0.09 │ 1.71% │ │ python-periodictable │ 1.73 │ 1.76 │ 0.03 │ 1.73% │ │ python-fslpy │ 116.43 │ 118.50 │ 2.07 │ 1.78% │ │ python-pytest-regressions │ 3.32 │ 3.38 │ 0.06 │ 1.81% │ │ python-tomlkit │ 4.37 │ 4.45 │ 0.08 │ 1.83% │ │ python-jupyter-packaging │ 0.54 │ 0.55 │ 0.01 │ 1.85% │ │ python-plaster-pastedeploy │ 0.54 │ 0.55 │ 0.01 │ 1.85% │ │ python-asgiref │ 7.55 │ 7.69 │ 0.14 │ 1.85% │ │ conda │ 198.66 │ 202.38 │ 3.72 │ 1.87% │ │ python-sphinx_rtd_theme │ 3.02 │ 3.08 │ 0.06 │ 1.99% │ │ python-zipp │ 0.50 │ 0.51 │ 0.01 │ 2.00% │ │ python-pytest-httpbin │ 2.42 │ 2.47 │ 0.05 │ 2.07% │ │ weasyprint │ 90.75 │ 92.63 │ 1.88 │ 2.07% │ │ mock │ 0.95 │ 0.97 │ 0.02 │ 2.11% │ │ python-async-upnp-client │ 1.40 │ 1.43 │ 0.03 │ 2.14% │ │ python-pynwb │ 30.49 │ 31.17 │ 0.68 │ 2.23% │ │ python-asyncpg │ 60.64 │ 62.03 │ 1.39 │ 2.29% │ │ python-pyswarms │ 44.80 │ 45.84 │ 1.04 │ 2.32% │ │ python-exoscale │ 2.13 │ 2.18 │ 0.05 │ 2.35% │ │ python-boutdata │ 1065.63 │ 1091.16 │ 25.53 │ 2.40% │ │ python-pydocstyle │ 6.67 │ 6.83 │ 0.16 │ 2.40% │ │ python-swagger-spec-validator │ 1.61 │ 1.65 │ 0.04 │ 2.48% │ │ python-scripttest │ 1.19 │ 1.22 │ 0.03 │ 2.52% │ │ python-niaclass │ 3.48 │ 3.57 │ 0.09 │ 2.59% │ │ python-llfuse │ 1.16 │ 1.19 │ 0.03 │ 2.59% │ │ python-geopy │ 1.15 │ 1.18 │ 0.03 │ 2.61% │ │ python-extension-helpers │ 0.38 │ 0.39 │ 0.01 │ 2.63% │ │ python-falcon │ 69.51 │ 71.37 │ 1.86 │ 2.68% │ │ python-astropy-healpix │ 18.31 │ 18.80 │ 0.49 │ 2.68% │ │ python-Bottleneck │ 43.32 │ 44.49 │ 1.17 │ 2.70% │ │ python-azure-core │ 20.17 │ 20.72 │ 0.55 │ 2.73% │ │ python-numpy-stl │ 3.94 │ 4.05 │ 0.11 │ 2.79% │ │ python3-pytest-asyncio │ 1.79 │ 1.84 │ 0.05 │ 2.79% │ │ python-emoji │ 1.43 │ 1.47 │ 0.04 │ 2.80% │ │ python-typer-cli │ 4.25 │ 4.37 │ 0.12 │ 2.82% │ │ python-paramiko │ 15.57 │ 16.01 │ 0.44 │ 2.83% │ │ ocrmypdf │ 214.98 │ 221.06 │ 6.08 │ 2.83% │ │ fedmsg │ 13.39 │ 13.77 │ 0.38 │ 2.84% │ │ python-ipyparallel │ 280.77 │ 288.86 │ 8.09 │ 2.88% │ │ patool │ 7.25 │ 7.46 │ 0.21 │ 2.90% │ │ pyzor │ 4.47 │ 4.60 │ 0.13 │ 2.91% │ │ pyproject-rpm-macros │ 19.13 │ 19.69 │ 0.56 │ 2.93% │ │ python-rasterio │ 48.33 │ 49.75 │ 1.42 │ 2.94% │ │ python-vcstool │ 0.34 │ 0.35 │ 0.01 │ 2.94% │ │ python-blessed │ 8.84 │ 9.10 │ 0.26 │ 2.94% │ │ python-pytest-subprocess │ 3.71 │ 3.82 │ 0.11 │ 2.96% │ │ python-certbot-apache │ 37.38 │ 38.49 │ 1.11 │ 2.97% │ │ nicotine+ │ 14.13 │ 14.55 │ 0.42 │ 2.97% │ │ python-astropy │ 295.43 │ 304.32 │ 8.89 │ 3.01% │ │ pre-commit │ 99.14 │ 102.13 │ 2.99 │ 3.02% │ │ pyserial-asyncio │ 0.33 │ 0.34 │ 0.01 │ 3.03% │ │ fedfind │ 3.92 │ 4.04 │ 0.12 │ 3.06% │ │ python-wurlitzer │ 0.65 │ 0.67 │ 0.02 │ 3.08% │ │ python-portend │ 0.97 │ 1.00 │ 0.03 │ 3.09% │ │ python-fastavro │ 1.92 │ 1.98 │ 0.06 │ 3.13% │ │ python-wheel │ 6.05 │ 6.24 │ 0.19 │ 3.14% │ │ python-rope │ 2.20 │ 2.27 │ 0.07 │ 3.18% │ │ python-pytest-xdist │ 39.77 │ 41.05 │ 1.28 │ 3.22% │ │ python-virtualenv-clone │ 10.70 │ 11.05 │ 0.35 │ 3.27% │ │ python-parsley │ 3.04 │ 3.14 │ 0.10 │ 3.29% │ │ gnofract4d │ 42.58 │ 44.01 │ 1.43 │ 3.36% │ │ python-faker │ 39.49 │ 40.82 │ 1.33 │ 3.37% │ │ python-scikit-learn │ 450.81 │ 466.01 │ 15.20 │ 3.37% │ │ python-networkx │ 99.93 │ 103.39 │ 3.46 │ 3.46% │ │ python-odml │ 6.34 │ 6.56 │ 0.22 │ 3.47% │ │ python-guessit │ 81.25 │ 84.10 │ 2.85 │ 3.51% │ │ python-libcst │ 27.55 │ 28.52 │ 0.97 │ 3.52% │ │ python-ws4py │ 4.26 │ 4.41 │ 0.15 │ 3.52% │ │ rebase-helper │ 11.79 │ 12.21 │ 0.42 │ 3.56% │ │ python-testinfra │ 8.69 │ 9.00 │ 0.31 │ 3.57% │ │ python-plaster │ 0.28 │ 0.29 │ 0.01 │ 3.57% │ │ python-contextily │ 1.12 │ 1.16 │ 0.04 │ 3.57% │ │ python-pytest-bdd │ 12.20 │ 12.64 │ 0.44 │ 3.61% │ │ python-ansible-compat │ 13.97 │ 14.48 │ 0.51 │ 3.65% │ │ python-flask-sqlalchemy │ 0.54 │ 0.56 │ 0.02 │ 3.70% │ │ python-sphinx-math-dollar │ 0.54 │ 0.56 │ 0.02 │ 3.70% │ │ python-dotenv │ 1.07 │ 1.11 │ 0.04 │ 3.74% │ │ python-mpmath │ 72.35 │ 75.07 │ 2.72 │ 3.76% │ │ python-s3transfer │ 28.57 │ 29.65 │ 1.08 │ 3.78% │ │ python-xeddsa │ 3.94 │ 4.09 │ 0.15 │ 3.81% │ │ jrnl │ 9.38 │ 9.74 │ 0.36 │ 3.84% │ │ python-importmagic │ 0.26 │ 0.27 │ 0.01 │ 3.85% │ │ litecli │ 4.68 │ 4.86 │ 0.18 │ 3.85% │ │ fmf │ 8.46 │ 8.79 │ 0.33 │ 3.90% │ │ python-sphinx │ 126.46 │ 131.41 │ 4.95 │ 3.91% │ │ python-apprise │ 26.80 │ 27.85 │ 1.05 │ 3.92% │ │ python-xbout │ 197.21 │ 204.97 │ 7.76 │ 3.93% │ │ sen │ 2.54 │ 2.64 │ 0.10 │ 3.94% │ │ python-ansiwrap │ 0.76 │ 0.79 │ 0.03 │ 3.95% │ │ python-fiona │ 11.16 │ 11.61 │ 0.45 │ 4.03% │ │ cvise │ 45.26 │ 47.10 │ 1.84 │ 4.07% │ │ python-textdistance │ 29.63 │ 30.85 │ 1.22 │ 4.12% │ │ rpkg-util │ 2.66 │ 2.77 │ 0.11 │ 4.14% │ │ python-mplcairo │ 248.26 │ 258.59 │ 10.33 │ 4.16% │ │ rst2txt │ 0.24 │ 0.25 │ 0.01 │ 4.17% │ │ mycli │ 4.80 │ 5.00 │ 0.20 │ 4.17% │ │ python-asttokens │ 11.88 │ 12.38 │ 0.50 │ 4.21% │ │ python-pint │ 24.33 │ 25.36 │ 1.03 │ 4.23% │ │ python-convertdate │ 6.73 │ 7.02 │ 0.29 │ 4.31% │ │ python-cryptography │ 90.60 │ 94.56 │ 3.96 │ 4.37% │ │ python-distroinfo │ 3.61 │ 3.77 │ 0.16 │ 4.43% │ │ python-pebble │ 10.90 │ 11.39 │ 0.49 │ 4.50% │ │ copr-rpmbuild │ 1.11 │ 1.16 │ 0.05 │ 4.50% │ │ frr │ 11.72 │ 12.25 │ 0.53 │ 4.52% │ │ python-stackprinter │ 0.22 │ 0.23 │ 0.01 │ 4.55% │ │ python-streamlink │ 15.30 │ 16.01 │ 0.71 │ 4.64% │ │ python-pytest-subtests │ 0.43 │ 0.45 │ 0.02 │ 4.65% │ │ python-CacheControl │ 0.43 │ 0.45 │ 0.02 │ 4.65% │ │ python-stompest │ 2.54 │ 2.66 │ 0.12 │ 4.72% │ │ python-retryz │ 1.05 │ 1.10 │ 0.05 │ 4.76% │ │ httpie │ 17.71 │ 18.56 │ 0.85 │ 4.80% │ │ python-html2text │ 2.67 │ 2.80 │ 0.13 │ 4.87% │ │ python-owl_rl │ 1.84 │ 1.93 │ 0.09 │ 4.89% │ │ python-dask │ 272.56 │ 285.90 │ 13.34 │ 4.89% │ │ python-cloudpickle │ 7.85 │ 8.24 │ 0.39 │ 4.97% │ │ yt-dlp │ 50.13 │ 52.66 │ 2.53 │ 5.05% │ │ abrt │ 2.17 │ 2.28 │ 0.11 │ 5.07% │ │ python-epc │ 20.38 │ 21.42 │ 1.04 │ 5.10% │ │ python-dijitso │ 0.78 │ 0.82 │ 0.04 │ 5.13% │ │ python-jose │ 37.51 │ 39.45 │ 1.94 │ 5.17% │ │ liquidctl │ 3.64 │ 3.83 │ 0.19 │ 5.22% │ │ python-metaextract │ 1.33 │ 1.40 │ 0.07 │ 5.26% │ │ python-aiosnmp │ 0.19 │ 0.20 │ 0.01 │ 5.26% │ │ python-matplotlib-scalebar │ 1.90 │ 2.00 │ 0.10 │ 5.26% │ │ python-microfs │ 1.14 │ 1.20 │ 0.06 │ 5.26% │ │ python-typer │ 26.40 │ 27.79 │ 1.39 │ 5.27% │ │ python-zarr │ 37.85 │ 39.85 │ 2.00 │ 5.28% │ │ python-daikin │ 43.42 │ 45.72 │ 2.30 │ 5.30% │ │ python-botocore │ 937.78 │ 988.56 │ 50.78 │ 5.41% │ │ python-suds │ 4.32 │ 4.56 │ 0.24 │ 5.56% │ │ python-httpcore │ 10.11 │ 10.68 │ 0.57 │ 5.64% │ │ python-progressbar2 │ 2.64 │ 2.79 │ 0.15 │ 5.68% │ │ cozy │ 4.72 │ 4.99 │ 0.27 │ 5.72% │ │ libvirt-test-API │ 5.51 │ 5.83 │ 0.32 │ 5.81% │ │ python-textwrap3 │ 0.17 │ 0.18 │ 0.01 │ 5.88% │ │ python-requests-kerberos │ 0.17 │ 0.18 │ 0.01 │ 5.88% │ │ visidata │ 0.34 │ 0.36 │ 0.02 │ 5.88% │ │ copr-messaging │ 0.51 │ 0.54 │ 0.03 │ 5.88% │ │ python-geoplot │ 19.84 │ 21.02 │ 1.18 │ 5.95% │ │ python-parso │ 7.08 │ 7.51 │ 0.43 │ 6.07% │ │ python-pytest-mock │ 2.26 │ 2.40 │ 0.14 │ 6.19% │ │ python-asyncio-dgram │ 0.80 │ 0.85 │ 0.05 │ 6.25% │ │ python-google-auth-oauthlib │ 0.32 │ 0.34 │ 0.02 │ 6.25% │ │ andriller │ 3.84 │ 4.08 │ 0.24 │ 6.25% │ │ python-py-gql │ 5.90 │ 6.27 │ 0.37 │ 6.27% │ │ python-pytools │ 0.95 │ 1.01 │ 0.06 │ 6.32% │ │ python-pytest-cov │ 72.85 │ 77.57 │ 4.72 │ 6.48% │ │ python-breathe │ 0.77 │ 0.82 │ 0.05 │ 6.49% │ │ python-partd │ 1.23 │ 1.31 │ 0.08 │ 6.50% │ │ python-cu2qu │ 3.36 │ 3.58 │ 0.22 │ 6.55% │ │ gpaw │ 29.21 │ 31.13 │ 1.92 │ 6.57% │ │ python-pytest-shutil │ 1.67 │ 1.78 │ 0.11 │ 6.59% │ │ python-versioningit │ 97.68 │ 104.14 │ 6.46 │ 6.61% │ │ python-cookiecutter │ 4.37 │ 4.66 │ 0.29 │ 6.64% │ │ python-pytest-virtualenv │ 0.60 │ 0.64 │ 0.04 │ 6.67% │ │ artifacts │ 2.09 │ 2.23 │ 0.14 │ 6.70% │ │ exaile │ 0.88 │ 0.94 │ 0.06 │ 6.82% │ │ home-assistant-cli │ 0.88 │ 0.94 │ 0.06 │ 6.82% │ │ reuse │ 22.67 │ 24.22 │ 1.55 │ 6.84% │ │ bandit │ 6.71 │ 7.17 │ 0.46 │ 6.86% │ │ python-certbot-dns-digitalocean │ 0.29 │ 0.31 │ 0.02 │ 6.90% │ │ python-nilearn │ 829.63 │ 887.96 │ 58.33 │ 7.03% │ │ python-calligrabot │ 0.71 │ 0.76 │ 0.05 │ 7.04% │ │ resultsdb │ 4.95 │ 5.30 │ 0.35 │ 7.07% │ │ python-paste-deploy │ 0.28 │ 0.30 │ 0.02 │ 7.14% │ │ python-pyclipper │ 0.14 │ 0.15 │ 0.01 │ 7.14% │ │ python-azure-appconfiguration │ 0.42 │ 0.45 │ 0.03 │ 7.14% │ │ python-asteval │ 0.98 │ 1.05 │ 0.07 │ 7.14% │ │ python-google-cloud-automl │ 7.41 │ 7.94 │ 0.53 │ 7.15% │ │ python-libpysal │ 29.70 │ 31.85 │ 2.15 │ 7.24% │ │ python-coloredlogs │ 0.55 │ 0.59 │ 0.04 │ 7.27% │ │ python-virtualenv │ 25.79 │ 27.69 │ 1.90 │ 7.37% │ │ python-augeas │ 12.03 │ 12.92 │ 0.89 │ 7.40% │ │ python-aresponses │ 0.27 │ 0.29 │ 0.02 │ 7.41% │ │ copr-cli │ 1.19 │ 1.28 │ 0.09 │ 7.56% │ │ python-sphinxcontrib-websupport │ 4.83 │ 5.20 │ 0.37 │ 7.66% │ │ python-certbot-dns-cloudflare │ 0.39 │ 0.42 │ 0.03 │ 7.69% │ │ python-marshmallow-enum │ 0.13 │ 0.14 │ 0.01 │ 7.69% │ │ python-etcd3gw │ 0.26 │ 0.28 │ 0.02 │ 7.69% │ │ python-billiard │ 1.16 │ 1.25 │ 0.09 │ 7.76% │ │ python-tblib │ 0.90 │ 0.97 │ 0.07 │ 7.78% │ │ python-pyunicorn │ 8.08 │ 8.71 │ 0.63 │ 7.80% │ │ python-nagiosplugin │ 1.41 │ 1.52 │ 0.11 │ 7.80% │ │ python-wled │ 8.25 │ 8.90 │ 0.65 │ 7.88% │ │ python-snuggs │ 0.38 │ 0.41 │ 0.03 │ 7.89% │ │ python-datrie │ 2.28 │ 2.46 │ 0.18 │ 7.89% │ │ babel │ 5.94 │ 6.41 │ 0.47 │ 7.91% │ │ python-pip │ 18.66 │ 20.15 │ 1.49 │ 7.98% │ │ python-eccodes │ 2.12 │ 2.29 │ 0.17 │ 8.02% │ │ python-advisory-parser │ 0.37 │ 0.40 │ 0.03 │ 8.11% │ │ python-maya │ 2.57 │ 2.78 │ 0.21 │ 8.17% │ │ python-cerberus │ 0.96 │ 1.04 │ 0.08 │ 8.33% │ │ python-boututils │ 0.12 │ 0.13 │ 0.01 │ 8.33% │ │ python-steam │ 1.07 │ 1.16 │ 0.09 │ 8.41% │ │ python-PyMuPDF │ 1.66 │ 1.80 │ 0.14 │ 8.43% │ │ python-sortedcontainers │ 10.58 │ 11.48 │ 0.90 │ 8.51% │ │ python-jupyter-sphinx │ 38.81 │ 42.13 │ 3.32 │ 8.55% │ │ python-inflect │ 0.69 │ 0.75 │ 0.06 │ 8.70% │ │ freeipa-healthcheck │ 1.94 │ 2.11 │ 0.17 │ 8.76% │ │ python-requests-toolbelt │ 1.69 │ 1.84 │ 0.15 │ 8.88% │ │ python-certbot-dns-luadns │ 0.33 │ 0.36 │ 0.03 │ 9.09% │ │ python-pyemd │ 0.11 │ 0.12 │ 0.01 │ 9.09% │ │ python-colcon-ros-bundle │ 0.22 │ 0.24 │ 0.02 │ 9.09% │ │ python-copr │ 0.22 │ 0.24 │ 0.02 │ 9.09% │ │ python-threadpoolctl │ 0.11 │ 0.12 │ 0.01 │ 9.09% │ │ python-glymur │ 35.03 │ 38.27 │ 3.24 │ 9.25% │ │ python-zxcvbn │ 0.54 │ 0.59 │ 0.05 │ 9.26% │ │ python-pytest-forked │ 0.43 │ 0.47 │ 0.04 │ 9.30% │ │ python-urllib3 │ 9.99 │ 10.92 │ 0.93 │ 9.31% │ │ python-certbot-dns-dnsimple │ 0.32 │ 0.35 │ 0.03 │ 9.37% │ │ python-certbot-dns-gehirn │ 0.32 │ 0.35 │ 0.03 │ 9.37% │ │ python-certbot-dns-dnsmadeeasy │ 0.32 │ 0.35 │ 0.03 │ 9.37% │ │ python-pyedflib │ 5.21 │ 5.70 │ 0.49 │ 9.40% │ │ python-robosignatory │ 2.22 │ 2.43 │ 0.21 │ 9.46% │ │ python-drgn │ 1.89 │ 2.07 │ 0.18 │ 9.52% │ │ python-pem │ 0.21 │ 0.23 │ 0.02 │ 9.52% │ │ python-myst-parser │ 6.81 │ 7.46 │ 0.65 │ 9.54% │ │ python-pycountry │ 0.52 │ 0.57 │ 0.05 │ 9.62% │ │ python-kdcproxy │ 0.10 │ 0.11 │ 0.01 │ 10.00% │ │ python-openqa_client │ 0.20 │ 0.22 │ 0.02 │ 10.00% │ │ python-colcon-ros │ 0.10 │ 0.11 │ 0.01 │ 10.00% │ │ python-tldextract │ 0.30 │ 0.33 │ 0.03 │ 10.00% │ │ python-nbformat │ 1.39 │ 1.53 │ 0.14 │ 10.07% │ │ python-pytest-sugar │ 1.77 │ 1.95 │ 0.18 │ 10.17% │ │ python-ffc │ 8.93 │ 9.84 │ 0.91 │ 10.19% │ │ python-pyscaffold │ 14.01 │ 15.44 │ 1.43 │ 10.21% │ │ container-workflow-tool │ 1.55 │ 1.71 │ 0.16 │ 10.32% │ │ python-pytest-tornado │ 0.29 │ 0.32 │ 0.03 │ 10.34% │ │ pybind11 │ 7.51 │ 8.29 │ 0.78 │ 10.39% │ │ python-colcon-core │ 3.93 │ 4.34 │ 0.41 │ 10.43% │ │ snakemake │ 9.33 │ 10.31 │ 0.98 │ 10.50% │ │ python-gast │ 0.38 │ 0.42 │ 0.04 │ 10.53% │ │ python-testfixtures │ 1.99 │ 2.20 │ 0.21 │ 10.55% │ │ python-poetry-core │ 3.50 │ 3.87 │ 0.37 │ 10.57% │ │ cura │ 29.01 │ 32.09 │ 3.08 │ 10.62% │ │ python-pycdlib │ 9.64 │ 10.67 │ 1.03 │ 10.68% │ │ python-autopage │ 0.28 │ 0.31 │ 0.03 │ 10.71% │ │ python-niaaml │ 68.88 │ 76.31 │ 7.43 │ 10.79% │ │ python-freezegun │ 0.83 │ 0.92 │ 0.09 │ 10.84% │ │ proselint │ 3.11 │ 3.45 │ 0.34 │ 10.93% │ │ python-pytest-xvfb │ 0.64 │ 0.71 │ 0.07 │ 10.94% │ │ copr-frontend │ 51.85 │ 57.53 │ 5.68 │ 10.95% │ │ python-websocket-client │ 0.18 │ 0.20 │ 0.02 │ 11.11% │ │ python-pyrpm │ 0.36 │ 0.40 │ 0.04 │ 11.11% │ │ python-requests-file │ 0.09 │ 0.10 │ 0.01 │ 11.11% │ │ python-readability-lxml │ 0.18 │ 0.20 │ 0.02 │ 11.11% │ │ python-smart_open │ 0.09 │ 0.10 │ 0.01 │ 11.11% │ │ python-easyargs │ 0.09 │ 0.10 │ 0.01 │ 11.11% │ │ rpmdeplint │ 0.09 │ 0.10 │ 0.01 │ 11.11% │ │ python-libNeuroML │ 3.68 │ 4.09 │ 0.41 │ 11.14% │ │ python-ephem │ 2.23 │ 2.48 │ 0.25 │ 11.21% │ │ python-fastapi │ 12.02 │ 13.38 │ 1.36 │ 11.31% │ │ python-scramp │ 0.53 │ 0.59 │ 0.06 │ 11.32% │ │ python-h5io │ 0.44 │ 0.49 │ 0.05 │ 11.36% │ │ python-jwcrypto │ 7.02 │ 7.82 │ 0.80 │ 11.40% │ │ python-eyed3 │ 0.96 │ 1.07 │ 0.11 │ 11.46% │ │ python-jsonref │ 0.26 │ 0.29 │ 0.03 │ 11.54% │ │ python-adal │ 0.69 │ 0.77 │ 0.08 │ 11.59% │ │ python-fastcache │ 19.13 │ 21.35 │ 2.22 │ 11.60% │ │ gaupol │ 20.50 │ 22.89 │ 2.39 │ 11.66% │ │ python-hypothesmith │ 493.68 │ 551.75 │ 58.07 │ 11.76% │ │ python-markupsafe │ 0.17 │ 0.19 │ 0.02 │ 11.76% │ │ python-google-api-core │ 16.50 │ 18.47 │ 1.97 │ 11.94% │ │ python-pytest-freezegun │ 0.91 │ 1.02 │ 0.11 │ 12.09% │ │ python-certbot-dns-cloudxns │ 0.33 │ 0.37 │ 0.04 │ 12.12% │ │ python-certbot-dns-ovh │ 0.33 │ 0.37 │ 0.04 │ 12.12% │ │ python-pysnooper │ 1.07 │ 1.20 │ 0.13 │ 12.15% │ │ python-pygit2 │ 3.00 │ 3.37 │ 0.37 │ 12.33% │ │ python-stochastic │ 2.51 │ 2.82 │ 0.31 │ 12.35% │ │ python-colcon-cmake │ 0.08 │ 0.09 │ 0.01 │ 12.50% │ │ python-google-cloud-spanner │ 23.70 │ 26.70 │ 3.00 │ 12.66% │ │ python-semver │ 0.55 │ 0.62 │ 0.07 │ 12.73% │ │ diceware │ 0.94 │ 1.06 │ 0.12 │ 12.77% │ │ python-colcon-bazel │ 0.23 │ 0.26 │ 0.03 │ 13.04% │ │ python-databases │ 1.14 │ 1.29 │ 0.15 │ 13.16% │ │ python-fixit │ 1.14 │ 1.29 │ 0.15 │ 13.16% │ │ python-graphql-core │ 4.98 │ 5.64 │ 0.66 │ 13.25% │ │ python-requests-unixsocket │ 0.15 │ 0.17 │ 0.02 │ 13.33% │ │ python-crashtest │ 0.22 │ 0.25 │ 0.03 │ 13.64% │ │ python-ansible-pygments │ 0.22 │ 0.25 │ 0.03 │ 13.64% │ │ awscli │ 264.32 │ 300.53 │ 36.21 │ 13.70% │ │ python-flask-babel │ 0.29 │ 0.33 │ 0.04 │ 13.79% │ │ python-bidict │ 5.75 │ 6.55 │ 0.80 │ 13.91% │ │ python-pytelegrambotapi │ 1.28 │ 1.46 │ 0.18 │ 14.06% │ │ python-gitlab │ 1.41 │ 1.61 │ 0.20 │ 14.18% │ │ wad │ 0.56 │ 0.64 │ 0.08 │ 14.29% │ │ python-requests-exoscale-auth │ 0.07 │ 0.08 │ 0.01 │ 14.29% │ │ python-sphinx-intl │ 0.21 │ 0.24 │ 0.03 │ 14.29% │ │ python-pecan-notario │ 0.21 │ 0.24 │ 0.03 │ 14.29% │ │ python-pytest-metadata │ 0.21 │ 0.24 │ 0.03 │ 14.29% │ │ python-trezor │ 0.42 │ 0.48 │ 0.06 │ 14.29% │ │ mkdocs-markdownextradata-plugin │ 0.21 │ 0.24 │ 0.03 │ 14.29% │ │ python-argon2-cffi │ 3.84 │ 4.39 │ 0.55 │ 14.32% │ │ python-engineio │ 5.01 │ 5.73 │ 0.72 │ 14.37% │ │ python-cvxopt │ 2.64 │ 3.02 │ 0.38 │ 14.39% │ │ python-rfc3986 │ 2.48 │ 2.85 │ 0.37 │ 14.92% │ │ python-charset-normalizer │ 2.20 │ 2.53 │ 0.33 │ 15.00% │ │ python-async-generator │ 0.20 │ 0.23 │ 0.03 │ 15.00% │ │ python-capturer │ 0.53 │ 0.61 │ 0.08 │ 15.09% │ │ python-pep517 │ 1.52 │ 1.75 │ 0.23 │ 15.13% │ │ python-fsspec │ 20.29 │ 23.37 │ 3.08 │ 15.18% │ │ python-haversion │ 0.13 │ 0.15 │ 0.02 │ 15.38% │ │ python-twine │ 1.65 │ 1.91 │ 0.26 │ 15.76% │ │ python-codecov │ 0.25 │ 0.29 │ 0.04 │ 16.00% │ │ python-ipywidgets │ 1.68 │ 1.95 │ 0.27 │ 16.07% │ │ python-cbor2 │ 1.18 │ 1.37 │ 0.19 │ 16.10% │ │ python-txaio │ 0.31 │ 0.36 │ 0.05 │ 16.13% │ │ python-pycoingecko │ 0.18 │ 0.21 │ 0.03 │ 16.67% │ │ python-GridDataFormats │ 0.90 │ 1.05 │ 0.15 │ 16.67% │ │ python-resumable-urlretrieve │ 0.12 │ 0.14 │ 0.02 │ 16.67% │ │ python-qstylizer │ 0.24 │ 0.28 │ 0.04 │ 16.67% │ │ sgmanager │ 0.06 │ 0.07 │ 0.01 │ 16.67% │ │ python-nudatus │ 0.06 │ 0.07 │ 0.01 │ 16.67% │ │ python-pdfkit │ 1.14 │ 1.33 │ 0.19 │ 16.67% │ │ python-gevent-eventemitter │ 0.06 │ 0.07 │ 0.01 │ 16.67% │ │ python-noiseprotocol │ 4.41 │ 5.15 │ 0.74 │ 16.78% │ │ python-flit │ 2.25 │ 2.63 │ 0.38 │ 16.89% │ │ flatpak-module-tools │ 0.47 │ 0.55 │ 0.08 │ 17.02% │ │ python-multidict │ 1.35 │ 1.58 │ 0.23 │ 17.04% │ │ python-sphinxcontrib-qthelp │ 0.82 │ 0.96 │ 0.14 │ 17.07% │ │ python-mako │ 3.03 │ 3.55 │ 0.52 │ 17.16% │ │ python-graphql-relay │ 0.23 │ 0.27 │ 0.04 │ 17.39% │ │ copr-keygen │ 0.34 │ 0.40 │ 0.06 │ 17.65% │ │ python-testpath │ 0.17 │ 0.20 │ 0.03 │ 17.65% │ │ did │ 0.28 │ 0.33 │ 0.05 │ 17.86% │ │ python-pycurl │ 20.04 │ 23.62 │ 3.58 │ 17.86% │ │ python-fontMath │ 1.27 │ 1.50 │ 0.23 │ 18.11% │ │ odfpy │ 1.10 │ 1.30 │ 0.20 │ 18.18% │ │ python-docopt │ 0.33 │ 0.39 │ 0.06 │ 18.18% │ │ python-azure-mgmt-loganalytics │ 0.22 │ 0.26 │ 0.04 │ 18.18% │ │ virt-lightning │ 0.11 │ 0.13 │ 0.02 │ 18.18% │ │ python-pynacl │ 25.54 │ 30.20 │ 4.66 │ 18.25% │ │ mu │ 4.92 │ 5.82 │ 0.90 │ 18.29% │ │ python-whoosh │ 9.22 │ 10.91 │ 1.69 │ 18.33% │ │ python-certbot-dns-nsone │ 0.32 │ 0.38 │ 0.06 │ 18.75% │ │ python-nuheat │ 0.16 │ 0.19 │ 0.03 │ 18.75% │ │ fedora-third-party │ 0.16 │ 0.19 │ 0.03 │ 18.75% │ │ python-aiofiles │ 1.59 │ 1.89 │ 0.30 │ 18.87% │ │ python-proto-plus │ 1.11 │ 1.32 │ 0.21 │ 18.92% │ │ python-anymarkup │ 0.21 │ 0.25 │ 0.04 │ 19.05% │ │ python-google-cloud-functions │ 0.98 │ 1.17 │ 0.19 │ 19.39% │ │ python-hass-data-detective │ 0.05 │ 0.06 │ 0.01 │ 20.00% │ │ pylibacl │ 0.10 │ 0.12 │ 0.02 │ 20.00% │ │ python-remoto │ 0.10 │ 0.12 │ 0.02 │ 20.00% │ │ python-port-for │ 0.20 │ 0.24 │ 0.04 │ 20.00% │ │ python-yattag │ 0.05 │ 0.06 │ 0.01 │ 20.00% │ │ python-parsedatetime │ 0.35 │ 0.42 │ 0.07 │ 20.00% │ │ python-amply │ 0.45 │ 0.54 │ 0.09 │ 20.00% │ │ python-jupyter-core │ 0.64 │ 0.77 │ 0.13 │ 20.31% │ │ modulemd-tools │ 0.88 │ 1.06 │ 0.18 │ 20.45% │ │ paternoster │ 5.92 │ 7.16 │ 1.24 │ 20.95% │ │ python-pluggy │ 0.19 │ 0.23 │ 0.04 │ 21.05% │ │ python-jwt │ 1.28 │ 1.55 │ 0.27 │ 21.09% │ │ python-google-crc32c │ 0.14 │ 0.17 │ 0.03 │ 21.43% │ │ python-toml │ 0.14 │ 0.17 │ 0.03 │ 21.43% │ │ python-google-cloud-bigquery-connection │ 0.83 │ 1.01 │ 0.18 │ 21.69% │ │ python-tabulate │ 0.83 │ 1.01 │ 0.18 │ 21.69% │ │ python-azure-mgmt-sql │ 0.46 │ 0.56 │ 0.10 │ 21.74% │ │ python-flask-socketio │ 0.32 │ 0.39 │ 0.07 │ 21.88% │ │ python-jnius │ 0.73 │ 0.89 │ 0.16 │ 21.92% │ │ python-pytest-ordering │ 0.41 │ 0.50 │ 0.09 │ 21.95% │ │ python-filelock │ 1.45 │ 1.77 │ 0.32 │ 22.07% │ │ python-lz4 │ 956.48 │ 1168.68 │ 212.20 │ 22.19% │ │ python-platformdirs │ 0.27 │ 0.33 │ 0.06 │ 22.22% │ │ python-name-that-hash │ 0.27 │ 0.33 │ 0.06 │ 22.22% │ │ python-evic │ 0.09 │ 0.11 │ 0.02 │ 22.22% │ │ python-environs │ 0.36 │ 0.44 │ 0.08 │ 22.22% │ │ python-memcached │ 0.09 │ 0.11 │ 0.02 │ 22.22% │ │ python-beanbag │ 0.09 │ 0.11 │ 0.02 │ 22.22% │ │ python-pyairnow │ 0.18 │ 0.22 │ 0.04 │ 22.22% │ │ python-execnet │ 24.18 │ 29.58 │ 5.40 │ 22.33% │ │ python-bcrypt │ 0.98 │ 1.20 │ 0.22 │ 22.45% │ │ python-google-cloud-asset │ 3.53 │ 4.33 │ 0.80 │ 22.66% │ │ python-pytest-steps │ 1.01 │ 1.24 │ 0.23 │ 22.77% │ │ python-sphinxcontrib-htmlhelp │ 0.83 │ 1.02 │ 0.19 │ 22.89% │ │ ursa-major │ 0.48 │ 0.59 │ 0.11 │ 22.92% │ │ python-pgspecial │ 0.13 │ 0.16 │ 0.03 │ 23.08% │ │ python-pybtex │ 2.84 │ 3.50 │ 0.66 │ 23.24% │ │ python-pyte │ 0.86 │ 1.06 │ 0.20 │ 23.26% │ │ python-attrs │ 19.68 │ 24.28 │ 4.60 │ 23.37% │ │ auditwheel │ 0.59 │ 0.73 │ 0.14 │ 23.73% │ │ python-mercantile │ 0.84 │ 1.04 │ 0.20 │ 23.81% │ │ python-google-cloud-private-ca │ 4.31 │ 5.34 │ 1.03 │ 23.90% │ │ python-astral │ 0.73 │ 0.91 │ 0.18 │ 24.66% │ │ python-javaproperties │ 1.37 │ 1.71 │ 0.34 │ 24.82% │ │ python-msrestazure │ 3.01 │ 3.76 │ 0.75 │ 24.92% │ │ python-libarchive-c │ 0.28 │ 0.35 │ 0.07 │ 25.00% │ │ python-winrm │ 0.20 │ 0.25 │ 0.05 │ 25.00% │ │ python-accuweather │ 0.20 │ 0.25 │ 0.05 │ 25.00% │ │ python-mccabe │ 0.04 │ 0.05 │ 0.01 │ 25.00% │ │ python-smart-gardena │ 0.36 │ 0.45 │ 0.09 │ 25.00% │ │ python-betamax-matchers │ 0.04 │ 0.05 │ 0.01 │ 25.00% │ │ remctl │ 0.04 │ 0.05 │ 0.01 │ 25.00% │ │ python-jinja2-cli │ 0.04 │ 0.05 │ 0.01 │ 25.00% │ │ python-aaargh │ 0.04 │ 0.05 │ 0.01 │ 25.00% │ │ python-zm │ 0.08 │ 0.10 │ 0.02 │ 25.00% │ │ python-pytest-lazy-fixture │ 1.20 │ 1.50 │ 0.30 │ 25.00% │ │ python-knack │ 0.79 │ 0.99 │ 0.20 │ 25.32% │ │ python-google-cloud-bigquery-storage │ 2.80 │ 3.51 │ 0.71 │ 25.36% │ │ python-mechanicalsoup │ 1.92 │ 2.41 │ 0.49 │ 25.52% │ │ python-ufoLib2 │ 0.39 │ 0.49 │ 0.10 │ 25.64% │ │ python-celery │ 10.45 │ 13.14 │ 2.69 │ 25.74% │ │ python-google-cloud-build │ 1.59 │ 2.00 │ 0.41 │ 25.79% │ │ python-represent │ 0.27 │ 0.34 │ 0.07 │ 25.93% │ │ python-azure-mgmt-compute │ 2.61 │ 3.29 │ 0.68 │ 26.05% │ │ python-maxminddb │ 1.37 │ 1.73 │ 0.36 │ 26.28% │ │ python-wikipedia │ 0.19 │ 0.24 │ 0.05 │ 26.32% │ │ python-mwclient │ 0.62 │ 0.79 │ 0.17 │ 27.42% │ │ python-google-cloud-billing │ 1.31 │ 1.67 │ 0.36 │ 27.48% │ │ python-readme-renderer │ 0.47 │ 0.60 │ 0.13 │ 27.66% │ │ pydeps │ 0.36 │ 0.46 │ 0.10 │ 27.78% │ │ python-cairosvg │ 5.86 │ 7.50 │ 1.64 │ 27.99% │ │ python-pytest-repeat │ 0.57 │ 0.73 │ 0.16 │ 28.07% │ │ python-pytest-sourceorder │ 0.07 │ 0.09 │ 0.02 │ 28.57% │ │ python-pastel │ 0.07 │ 0.09 │ 0.02 │ 28.57% │ │ resultsdb_conventions │ 0.07 │ 0.09 │ 0.02 │ 28.57% │ │ python-hyperframe │ 0.31 │ 0.40 │ 0.09 │ 29.03% │ │ python-exdir │ 2.96 │ 3.82 │ 0.86 │ 29.05% │ │ pytz │ 0.86 │ 1.11 │ 0.25 │ 29.07% │ │ python-parse_type │ 0.48 │ 0.62 │ 0.14 │ 29.17% │ │ python-configupdater │ 0.24 │ 0.31 │ 0.07 │ 29.17% │ │ python-et_xmlfile │ 0.41 │ 0.53 │ 0.12 │ 29.27% │ │ python-google-cloud-apigee-connect │ 0.68 │ 0.88 │ 0.20 │ 29.41% │ │ python-pytest-toolbox │ 0.17 │ 0.22 │ 0.05 │ 29.41% │ │ python-qcelemental │ 4.39 │ 5.69 │ 1.30 │ 29.61% │ │ python-requests-credssp │ 0.27 │ 0.35 │ 0.08 │ 29.63% │ │ python-pyerfa │ 1.47 │ 1.91 │ 0.44 │ 29.93% │ │ python-ajsonrpc │ 0.20 │ 0.26 │ 0.06 │ 30.00% │ │ python-pytest-multihost │ 0.10 │ 0.13 │ 0.03 │ 30.00% │ │ python-pyrsistent │ 9.91 │ 12.89 │ 2.98 │ 30.07% │ │ uflash │ 0.23 │ 0.30 │ 0.07 │ 30.43% │ │ tmt │ 0.95 │ 1.24 │ 0.29 │ 30.53% │ │ python-uritemplate │ 0.13 │ 0.17 │ 0.04 │ 30.77% │ │ python-gios │ 0.26 │ 0.34 │ 0.08 │ 30.77% │ │ python-google-cloud-containeranalysis │ 0.64 │ 0.84 │ 0.20 │ 31.25% │ │ python-google-cloud-os-config │ 4.49 │ 5.90 │ 1.41 │ 31.40% │ │ python-textfsm │ 0.22 │ 0.29 │ 0.07 │ 31.82% │ │ python-fastjsonschema │ 0.66 │ 0.87 │ 0.21 │ 31.82% │ │ python-icalendar │ 0.47 │ 0.62 │ 0.15 │ 31.91% │ │ tracer │ 0.25 │ 0.33 │ 0.08 │ 32.00% │ │ python-surt │ 0.28 │ 0.37 │ 0.09 │ 32.14% │ │ python-vcrpy │ 0.65 │ 0.86 │ 0.21 │ 32.31% │ │ python-google-resumable-media │ 1.01 │ 1.34 │ 0.33 │ 32.67% │ │ python-pybv │ 1.25 │ 1.66 │ 0.41 │ 32.80% │ │ python-pyarlo │ 0.27 │ 0.36 │ 0.09 │ 33.33% │ │ testcloud │ 0.33 │ 0.44 │ 0.11 │ 33.33% │ │ python-pyct │ 0.18 │ 0.24 │ 0.06 │ 33.33% │ │ python-brother │ 0.39 │ 0.52 │ 0.13 │ 33.33% │ │ python-pycosat │ 0.06 │ 0.08 │ 0.02 │ 33.33% │ │ python-dukpy │ 0.06 │ 0.08 │ 0.02 │ 33.33% │ │ python-ring-doorbell │ 0.12 │ 0.16 │ 0.04 │ 33.33% │ │ python-send2trash │ 0.06 │ 0.08 │ 0.02 │ 33.33% │ │ python-iniconfig │ 0.06 │ 0.08 │ 0.02 │ 33.33% │ │ python-repomd │ 0.12 │ 0.16 │ 0.04 │ 33.33% │ │ python-filetype │ 0.06 │ 0.08 │ 0.02 │ 33.33% │ │ python-freetype │ 0.03 │ 0.04 │ 0.01 │ 33.33% │ │ python-aspy.yaml │ 0.03 │ 0.04 │ 0.01 │ 33.33% │ │ python-imagesize │ 0.03 │ 0.04 │ 0.01 │ 33.33% │ │ python-flaky │ 0.51 │ 0.68 │ 0.17 │ 33.33% │ │ python-collectd_systemd │ 0.03 │ 0.04 │ 0.01 │ 33.33% │ │ python-azure-keyvault-keys │ 0.57 │ 0.76 │ 0.19 │ 33.33% │ │ python-jeepney │ 0.21 │ 0.28 │ 0.07 │ 33.33% │ │ python-fields │ 0.21 │ 0.28 │ 0.07 │ 33.33% │ │ python-autobahn │ 1.23 │ 1.65 │ 0.42 │ 34.15% │ │ python-dpkt │ 1.17 │ 1.57 │ 0.40 │ 34.19% │ │ python-dns │ 3.21 │ 4.31 │ 1.10 │ 34.27% │ │ morphio │ 0.64 │ 0.86 │ 0.22 │ 34.37% │ │ python-google-cloud-container │ 5.02 │ 6.77 │ 1.75 │ 34.86% │ │ python-inject │ 0.20 │ 0.27 │ 0.07 │ 35.00% │ │ python-parsel │ 0.20 │ 0.27 │ 0.07 │ 35.00% │ │ python-google-cloud-iam │ 0.54 │ 0.73 │ 0.19 │ 35.19% │ │ python-google-cloud-redis │ 1.59 │ 2.15 │ 0.56 │ 35.22% │ │ python-compreffor │ 0.17 │ 0.23 │ 0.06 │ 35.29% │ │ python-pytest-datafiles │ 0.31 │ 0.42 │ 0.11 │ 35.48% │ │ python-pure-protobuf │ 0.14 │ 0.19 │ 0.05 │ 35.71% │ │ pyflakes │ 2.06 │ 2.80 │ 0.74 │ 35.92% │ │ toot │ 0.36 │ 0.49 │ 0.13 │ 36.11% │ │ python-wcwidth │ 0.11 │ 0.15 │ 0.04 │ 36.36% │ │ python-awesomeversion │ 0.30 │ 0.41 │ 0.11 │ 36.67% │ │ python-OBD │ 0.84 │ 1.15 │ 0.31 │ 36.90% │ │ python-numpydoc │ 1.35 │ 1.85 │ 0.50 │ 37.04% │ │ python-enrich │ 0.08 │ 0.11 │ 0.03 │ 37.50% │ │ python-vine │ 0.21 │ 0.29 │ 0.08 │ 38.10% │ │ python-google-cloud-access-approval │ 0.67 │ 0.93 │ 0.26 │ 38.81% │ │ python-pdfminer │ 0.36 │ 0.50 │ 0.14 │ 38.89% │ │ python-sqlalchemy-collectd │ 0.18 │ 0.25 │ 0.07 │ 38.89% │ │ python-pymeeus │ 1.33 │ 1.85 │ 0.52 │ 39.10% │ │ python-affine │ 0.23 │ 0.32 │ 0.09 │ 39.13% │ │ python-cairocffi │ 0.50 │ 0.70 │ 0.20 │ 40.00% │ │ python-rebulk │ 0.90 │ 1.26 │ 0.36 │ 40.00% │ │ python-netdisco │ 0.05 │ 0.07 │ 0.02 │ 40.00% │ │ python-tambo │ 0.10 │ 0.14 │ 0.04 │ 40.00% │ │ python-translitcodec │ 0.05 │ 0.07 │ 0.02 │ 40.00% │ │ python-maps │ 0.10 │ 0.14 │ 0.04 │ 40.00% │ │ python-sniffio │ 0.05 │ 0.07 │ 0.02 │ 40.00% │ │ python-sphinxcontrib-applehelp │ 0.40 │ 0.56 │ 0.16 │ 40.00% │ │ python-aioesphomeapi │ 0.47 │ 0.66 │ 0.19 │ 40.43% │ │ python-socketio │ 1.83 │ 2.57 │ 0.74 │ 40.44% │ │ python-rdflib-jsonld │ 0.37 │ 0.52 │ 0.15 │ 40.54% │ │ python-schema │ 0.32 │ 0.45 │ 0.13 │ 40.62% │ │ python-sphinxcontrib-serializinghtml │ 0.39 │ 0.55 │ 0.16 │ 41.03% │ │ python-google-cloud-kms │ 1.90 │ 2.68 │ 0.78 │ 41.05% │ │ python-google-cloud-api-gateway │ 1.21 │ 1.71 │ 0.50 │ 41.32% │ │ python-soupsieve │ 1.68 │ 2.38 │ 0.70 │ 41.67% │ │ python-dbus-next │ 0.67 │ 0.95 │ 0.28 │ 41.79% │ │ python-venusian │ 0.31 │ 0.44 │ 0.13 │ 41.94% │ │ python-vdf │ 0.19 │ 0.27 │ 0.08 │ 42.11% │ │ python-http-client │ 0.07 │ 0.10 │ 0.03 │ 42.86% │ │ python-google-cloud-appengine-admin │ 3.31 │ 4.73 │ 1.42 │ 42.90% │ │ python-grabbit │ 0.81 │ 1.16 │ 0.35 │ 43.21% │ │ python-lsp-jsonrpc │ 0.30 │ 0.43 │ 0.13 │ 43.33% │ │ python-google-cloud-bigquery-datatransfer │ 1.29 │ 1.85 │ 0.56 │ 43.41% │ │ python-sphinxcontrib-devhelp │ 0.39 │ 0.56 │ 0.17 │ 43.59% │ │ python-google-cloud-billing-budgets │ 0.98 │ 1.41 │ 0.43 │ 43.88% │ │ python-annexremote │ 0.25 │ 0.36 │ 0.11 │ 44.00% │ │ python-pytest-spec │ 0.09 │ 0.13 │ 0.04 │ 44.44% │ │ distgen │ 0.38 │ 0.55 │ 0.17 │ 44.74% │ │ python-notario │ 0.49 │ 0.71 │ 0.22 │ 44.90% │ │ python-google-cloud-bigquery-reservation │ 1.45 │ 2.11 │ 0.66 │ 45.52% │ │ python-dockerfile-parse │ 5.27 │ 7.78 │ 2.51 │ 47.63% │ │ python-cytoolz │ 0.88 │ 1.30 │ 0.42 │ 47.73% │ │ python-duecredit │ 0.31 │ 0.46 │ 0.15 │ 48.39% │ │ python-watchgod │ 0.41 │ 0.61 │ 0.20 │ 48.78% │ │ python-wcmatch │ 2.50 │ 3.72 │ 1.22 │ 48.80% │ │ python-responses │ 0.45 │ 0.67 │ 0.22 │ 48.89% │ │ python-requests-mock │ 0.02 │ 0.03 │ 0.01 │ 50.00% │ │ python-jaraco-classes │ 0.04 │ 0.06 │ 0.02 │ 50.00% │ │ python-mergedeep │ 0.04 │ 0.06 │ 0.02 │ 50.00% │ │ python-sseclient-py │ 0.04 │ 0.06 │ 0.02 │ 50.00% │ │ python-uri-templates │ 0.02 │ 0.03 │ 0.01 │ 50.00% │ │ python-mistune │ 0.16 │ 0.24 │ 0.08 │ 50.00% │ │ python-shellingham │ 0.02 │ 0.03 │ 0.01 │ 50.00% │ │ python-texttable │ 0.04 │ 0.06 │ 0.02 │ 50.00% │ │ python-yourls │ 0.04 │ 0.06 │ 0.02 │ 50.00% │ │ python-whatever │ 0.08 │ 0.12 │ 0.04 │ 50.00% │ │ python-webencodings │ 0.08 │ 0.12 │ 0.04 │ 50.00% │ │ vim-fugitive-pagure │ 0.02 │ 0.03 │ 0.01 │ 50.00% │ │ python-ukkonen │ 0.02 │ 0.03 │ 0.01 │ 50.00% │ │ python-pystalk │ 0.04 │ 0.06 │ 0.02 │ 50.00% │ │ python-ssdeep │ 0.06 │ 0.09 │ 0.03 │ 50.00% │ │ python-airspeed │ 0.24 │ 0.36 │ 0.12 │ 50.00% │ │ python-ansicolors │ 0.06 │ 0.09 │ 0.03 │ 50.00% │ │ python-subprocess-tee │ 0.12 │ 0.18 │ 0.06 │ 50.00% │ │ python-yubico │ 0.06 │ 0.09 │ 0.03 │ 50.00% │ │ python-ncclient │ 1.24 │ 1.87 │ 0.63 │ 50.81% │ │ python-network-runner │ 0.31 │ 0.47 │ 0.16 │ 51.61% │ │ vex │ 0.19 │ 0.29 │ 0.10 │ 52.63% │ │ python-h11 │ 0.36 │ 0.55 │ 0.19 │ 52.78% │ │ python-ddt │ 0.17 │ 0.26 │ 0.09 │ 52.94% │ │ python-django-prometheus │ 0.15 │ 0.23 │ 0.08 │ 53.33% │ │ python-latexcodec │ 0.56 │ 0.86 │ 0.30 │ 53.57% │ │ python-param │ 1.64 │ 2.52 │ 0.88 │ 53.66% │ │ python-shtab │ 0.13 │ 0.20 │ 0.07 │ 53.85% │ │ pycairo │ 0.70 │ 1.08 │ 0.38 │ 54.29% │ │ python-kiwisolver │ 0.20 │ 0.31 │ 0.11 │ 55.00% │ │ python-pid │ 0.09 │ 0.14 │ 0.05 │ 55.56% │ │ python-sure │ 0.16 │ 0.25 │ 0.09 │ 56.25% │ │ python-wsproto │ 0.55 │ 0.86 │ 0.31 │ 56.36% │ │ python-anymarkup-core │ 0.23 │ 0.36 │ 0.13 │ 56.52% │ │ python-rply │ 0.14 │ 0.22 │ 0.08 │ 57.14% │ │ python-fqdn │ 0.14 │ 0.22 │ 0.08 │ 57.14% │ │ sshuttle │ 0.77 │ 1.21 │ 0.44 │ 57.14% │ │ python-colcon-bundle │ 0.68 │ 1.07 │ 0.39 │ 57.35% │ │ python-jellyfish │ 0.41 │ 0.65 │ 0.24 │ 58.54% │ │ python-funcy │ 0.54 │ 0.86 │ 0.32 │ 59.26% │ │ python-metar │ 0.32 │ 0.51 │ 0.19 │ 59.38% │ │ python-jsonmodels │ 0.74 │ 1.18 │ 0.44 │ 59.46% │ │ python-pox │ 0.05 │ 0.08 │ 0.03 │ 60.00% │ │ python-jaraco-path │ 0.05 │ 0.08 │ 0.03 │ 60.00% │ │ python-admesh │ 0.05 │ 0.08 │ 0.03 │ 60.00% │ │ python-outcome │ 0.05 │ 0.08 │ 0.03 │ 60.00% │ │ python-netaddr │ 0.94 │ 1.51 │ 0.57 │ 60.64% │ │ python-pyvlx │ 0.51 │ 0.82 │ 0.31 │ 60.78% │ │ python-pypubsub │ 0.57 │ 0.92 │ 0.35 │ 61.40% │ │ python-lazyarray │ 0.26 │ 0.42 │ 0.16 │ 61.54% │ │ python-pretend │ 0.08 │ 0.13 │ 0.05 │ 62.50% │ │ python-pytaglib │ 0.08 │ 0.13 │ 0.05 │ 62.50% │ │ python-flexmock │ 0.74 │ 1.21 │ 0.47 │ 63.51% │ │ python-arpeggio │ 0.58 │ 0.96 │ 0.38 │ 65.52% │ │ python-smartcols │ 0.09 │ 0.15 │ 0.06 │ 66.67% │ │ python-sly │ 0.06 │ 0.10 │ 0.04 │ 66.67% │ │ python-pytest-datadir │ 0.03 │ 0.05 │ 0.02 │ 66.67% │ │ python3-typed_ast │ 0.06 │ 0.10 │ 0.04 │ 66.67% │ │ python-atomicwrites │ 0.03 │ 0.05 │ 0.02 │ 66.67% │ │ python-ansicolor │ 0.06 │ 0.10 │ 0.04 │ 66.67% │ │ python-fuzzyfinder │ 0.03 │ 0.05 │ 0.02 │ 66.67% │ │ python-readlike │ 0.03 │ 0.05 │ 0.02 │ 66.67% │ │ python-cssselect2 │ 0.73 │ 1.22 │ 0.49 │ 67.12% │ │ python-conda-package-handling │ 0.94 │ 1.59 │ 0.65 │ 69.15% │ │ python-pyxs │ 0.13 │ 0.22 │ 0.09 │ 69.23% │ │ python-ujson │ 0.43 │ 0.73 │ 0.30 │ 69.77% │ │ python-jsonrpc-server │ 0.20 │ 0.34 │ 0.14 │ 70.00% │ │ python-utils │ 0.10 │ 0.17 │ 0.07 │ 70.00% │ │ python-hamcrest │ 0.73 │ 1.25 │ 0.52 │ 71.23% │ │ python-protego │ 7.89 │ 13.52 │ 5.63 │ 71.36% │ │ python-registry │ 0.07 │ 0.12 │ 0.05 │ 71.43% │ │ tldr │ 0.07 │ 0.12 │ 0.05 │ 71.43% │ │ python-cli-helpers │ 0.21 │ 0.36 │ 0.15 │ 71.43% │ │ thonny │ 0.39 │ 0.67 │ 0.28 │ 71.79% │ │ python-six │ 0.36 │ 0.62 │ 0.26 │ 72.22% │ │ autojump │ 0.11 │ 0.19 │ 0.08 │ 72.73% │ │ python-junit_xml │ 0.11 │ 0.19 │ 0.08 │ 72.73% │ │ python-minidb │ 0.11 │ 0.19 │ 0.08 │ 72.73% │ │ python-dominate │ 0.11 │ 0.19 │ 0.08 │ 72.73% │ │ spec2scl │ 0.19 │ 0.33 │ 0.14 │ 73.68% │ │ python-zict │ 0.20 │ 0.35 │ 0.15 │ 75.00% │ │ python-iso3166 │ 0.04 │ 0.07 │ 0.03 │ 75.00% │ │ python-teslajsonpy │ 0.43 │ 0.76 │ 0.33 │ 76.74% │ │ python-identify │ 0.54 │ 0.96 │ 0.42 │ 77.78% │ │ python-sortedcollections │ 0.32 │ 0.57 │ 0.25 │ 78.12% │ │ python-email-validator │ 0.10 │ 0.18 │ 0.08 │ 80.00% │ │ python-voluptuous-serialize │ 0.05 │ 0.09 │ 0.04 │ 80.00% │ │ python-itsdangerous │ 1.29 │ 2.33 │ 1.04 │ 80.62% │ │ python-markdown-it-py │ 1.55 │ 2.80 │ 1.25 │ 80.65% │ │ rust-packaging │ 0.16 │ 0.29 │ 0.13 │ 81.25% │ │ crypto-policies │ 0.19 │ 0.35 │ 0.16 │ 84.21% │ │ python-snaptime │ 0.12 │ 0.23 │ 0.11 │ 91.67% │ │ python-mdit-py-plugins │ 0.55 │ 1.06 │ 0.51 │ 92.73% │ │ salt-lint │ 0.14 │ 0.27 │ 0.13 │ 92.86% │ │ python-colorful │ 0.39 │ 0.76 │ 0.37 │ 94.87% │ │ python-inflection │ 0.54 │ 1.06 │ 0.52 │ 96.30% │ │ python-cmarkgfm │ 0.02 │ 0.04 │ 0.02 │ 100.00% │ │ python-backcall │ 0.01 │ 0.02 │ 0.01 │ 100.00% │ │ python-biscuits │ 0.07 │ 0.14 │ 0.07 │ 100.00% │ │ python-whichcraft │ 0.01 │ 0.02 │ 0.01 │ 100.00% │ │ python-pytest-fixture-config │ 0.02 │ 0.04 │ 0.02 │ 100.00% │ │ python-aiomodbus │ 0.15 │ 0.30 │ 0.15 │ 100.00% │ │ python-editdistance-s │ 0.01 │ 0.02 │ 0.01 │ 100.00% │ │ python-flake8-polyfill │ 0.04 │ 0.08 │ 0.04 │ 100.00% │ │ python-mackup │ 0.22 │ 0.44 │ 0.22 │ 100.00% │ │ python-editdistance │ 0.01 │ 0.02 │ 0.01 │ 100.00% │ │ python-ots │ 0.01 │ 0.02 │ 0.01 │ 100.00% │ │ python-bleach │ 0.73 │ 1.47 │ 0.74 │ 101.37% │ │ python-tinyrpc │ 1.11 │ 2.25 │ 1.14 │ 102.70% │ │ python-managesieve │ 0.18 │ 0.37 │ 0.19 │ 105.56% │ │ python-validators │ 0.47 │ 0.98 │ 0.51 │ 108.51% │ │ python-flake8-import-order │ 0.51 │ 1.07 │ 0.56 │ 109.80% │ │ python-yarl │ 2.66 │ 5.86 │ 3.20 │ 120.30% │ │ python-dbfread │ 0.07 │ 0.16 │ 0.09 │ 128.57% │ │ python-tinycss2 │ 1.23 │ 2.88 │ 1.65 │ 134.15% │ │ python-tomli-w │ 0.49 │ 1.21 │ 0.72 │ 146.94% │ │ python-systemd │ 0.14 │ 0.35 │ 0.21 │ 150.00% │ │ python-tomli │ 0.82 │ 2.42 │ 1.60 │ 195.12% │ │ python-rangeparser │ 0.01 │ 0.03 │ 0.02 │ 200.00% │ │ python-pathvalidate │ 3.46 │ 10.39 │ 6.93 │ 200.29% │ │ python-uamqp │ 0.96 │ 2.90 │ 1.94 │ 202.08% │ │ python-colorzero │ 3.77 │ 11.69 │ 7.92 │ 210.08% │ │ python-node-semver │ 1.09 │ 3.78 │ 2.69 │ 246.79% │ │ sum │ 31253.31 │ 31544.78 │ 291.47 │ 0.93% │ │ avg │ 33.50 │ 33.81 │ 0.31 │ 18.31% │ └───────────────────────────────────────────┴──────────┴──────────┴─────────┴─────────┘ ```
bluetech commented 2 years ago

I'll definitely look at some of them.

I'm going to bet that the slowness comes from the extra stats due to the pathlib migration, possibly with the addition of a slow filesystem setup on the Fedora/user's system (maybe running NFS or such?). But I'm not making assumptions :)

hroncok commented 2 years ago

No NFS, the filesystem is local. (I'll double check.)

The-Compiler commented 2 years ago

Great, thanks @bluetech! I already asked the reporter and they said:

Latest MacOS, plus same result within python3.8 Docker image. Packages installed using pip install --user

So nothing too special, at least from what it sounds like there...

asottile commented 2 years ago

I can reproduce the slowdown pretty easily using python-node-semver from above -- appears to mostly be spending time in pathlib though it's due to a hot call here: https://github.com/pytest-dev/pytest/blob/71baf24b6d41da6704433ca9909b5e6d954564b9/src/_pytest/main.py#L539 (which gets called 10s of thousands of times -- approximately 20x per test)

I've attached a profile generated using these tools

this is using ~stock python 3.8.10 on ubuntu 20.04

log7

asottile commented 2 years ago

this patch "fixes" the performance issue, though I haven't studied the code close enough to see whether the optimization is correct:

$ diff -u old.py ../venv-pytest7/lib/python3.8/site-packages/_pytest/config/__init__.py
--- old.py  2022-01-06 19:47:05.974081512 -0500
+++ ../venv-pytest7/lib/python3.8/site-packages/_pytest/config/__init__.py  2022-01-06 19:45:09.238082625 -0500
@@ -524,6 +525,7 @@
                 if x.is_dir():
                     self._getconftestmodules(x, importmode, rootpath)

+    @lru_cache(maxsize=1)
     def _getconftestmodules(
         self, path: Path, importmode: Union[str, ImportMode], rootpath: Path
     ) -> List[types.ModuleType]:
asottile commented 2 years ago

heh, bisecting gives a commit that definitely makes sense 614f5394b50ac88b7aa4e97b43acb08aca383d95:

614f5394b50ac88b7aa4e97b43acb08aca383d95 is the first bad commit
commit 614f5394b50ac88b7aa4e97b43acb08aca383d95
Author: Ran Benita <ran@unusedvar.com>
Date:   Fri Oct 1 14:28:16 2021 +0300

    Avoid `@lru_cache` on methods

    The problem with `@lru_cache` on methods is that it also captures `self`
    and leaks it until the entry is evicted (if ever).

 src/_pytest/assertion/rewrite.py | 7 ++-----
 src/_pytest/config/__init__.py   | 1 -
 2 files changed, 2 insertions(+), 6 deletions(-)
bisect run success

I bisected using this script:

#!/usr/bin/env bash
set -euxo pipefail
pip uninstall -yqq pytest >& /dev/null
pip install -qq . >& /dev/null
cd ../python-node-semver
git clean -fxfdq
timeout 2.5 pytest nodesemver || exit 1

and this technique

git bisect start
git bisect bad HEAD
git bisect good 6.2.5
git bisect run ../t.sh
asottile commented 2 years ago

the story doesn't quite end there though -- the second commit in that patch is supposed to patch up that performance hit but makes a tiny edge-case mistake on the caching code -- it ignores the case when the cached value is falsey

fixing that gets us most of the way back to the pytest 6.x performance but not quite because the beginning of _getconftestmodules still invokes a lot of slow pathlib is_file and parent calls (~15% slower than 6.2.5 (which is way better than 230% slower!))

diff --git a/src/_pytest/config/__init__.py b/src/_pytest/config/__init__.py
index dee3d4974..174d80a01 100644
--- a/src/_pytest/config/__init__.py
+++ b/src/_pytest/config/__init__.py
@@ -538,7 +538,7 @@ class PytestPluginManager(PluginManager):
         # Optimization: avoid repeated searches in the same directory.
         # Assumes always called with same importmode and rootpath.
         existing_clist = self._dirpath2confmods.get(directory)
-        if existing_clist:
+        if existing_clist is not None:
             return existing_clist

         # XXX these days we may rather want to use config.rootpath
asottile commented 2 years ago

an idea to get back to the original caching but without a memory leak would be to assign a per-instance lru_cache:

diff --git a/src/_pytest/config/__init__.py b/src/_pytest/config/__init__.py
index dee3d4974..15a9c0ef1 100644
--- a/src/_pytest/config/__init__.py
+++ b/src/_pytest/config/__init__.py
@@ -354,6 +354,7 @@ class PytestPluginManager(PluginManager):
         self._confcutdir: Optional[Path] = None
         self._noconftest = False
         self._duplicatepaths: Set[Path] = set()
+        self._getconftestmodules = lru_cache(maxsize=128)(self._getconftestmodules_uncached)

         # plugins that were explicitly skipped with pytest.skip
         # list of (module name, skip reason)
@@ -524,7 +525,7 @@ class PytestPluginManager(PluginManager):
                 if x.is_dir():
                     self._getconftestmodules(x, importmode, rootpath)

-    def _getconftestmodules(
+    def _getconftestmodules_uncached(
         self, path: Path, importmode: Union[str, ImportMode], rootpath: Path
     ) -> List[types.ModuleType]:
         if self._noconftest:

I used the same technique in my text editor though admittedly for a different reason

nicoddemus commented 2 years ago

an idea to get back to the original caching but without a memory leak would be to assign a per-instance lru_cache

This is interesting, but doesn't that still creates a circular reference, because lru_cache(...)(self._getconftestmodules_uncached) references a bound method (which references self), which is then stored in a variable in self?

Perhaps it is simple enough to implement an infinite cache using a dict? Caching all calls seems feasible in this case.

bluetech commented 2 years ago

Great stuff @asottile, especially the diagram. I am able to reproduce your findings.

First, I am going to submit your is None patch and backport it. I think that we should do it anyway, to have a proper baseline for any other improvements in the git history. For me the timings are:

Regarding adding back the lru_cache to _getconftestmodules, I would like to avoid it; I always had a bad feeling about it. Aside from the double caching and missing the path->directory normalization, I just feel that caching side-effecting functions is not a good idea with lru_cache but needs more care. So I'd like to find a way to recover the lost performance some other way.

In the meantime, IMO the is None fix will be sufficient to unblock the 7.0 release, but that's up to @The-Compiler to decide (I'm fine with either way, including bringing back the lru_cache for now).

The-Compiler commented 2 years ago

I agree that should be sufficient. I feel like that gets things to the same ballpark again, so that we can have further performance fixes in 7.0.1 or 7.1.0.

The-Compiler commented 2 years ago

Thanks to @bluetech @asottile @hroncok for an incredibly quick turnaround on what seemed like a tricky issue without much detail! :heart:

The-Compiler commented 2 years ago

Oh, also, how do folks feel about a quick 7.0.0rc2 now? We still need to take care of #9002 and #9471 (plus potentially "unknown unknowns" from #9415?), but that would mean it's easy for people (and probably Fedora?) to test the fixes which we have so far (and it makes it easier to ask the original reporter to test this fix too).

hroncok commented 2 years ago

I might be able to test that in Fedroa with the git HEAD as well even without rc.

asottile commented 2 years ago

an idea to get back to the original caching but without a memory leak would be to assign a per-instance lru_cache

This is interesting, but doesn't that still creates a circular reference, because lru_cache(...)(self._getconftestmodules_uncached) references a bound method (which references self), which is then stored in a variable in self?

Perhaps it is simple enough to implement an infinite cache using a dict? Caching all calls seems feasible in this case.

the memory issue isn't due to a cycle but due to lru_cache being attached to the class (~essentially a global variable with process lifetime). when the cache is assigned to the instance it is collected with the instance itself

The-Compiler commented 2 years ago

FWIW the reporter said:

Great news! I confirm no more delays detected on my projects. Well done. Tnx

And someone else also said:

Tests collection time went from 32s (6.2.5) to 2.3s (7.0.0) on a large test suite of 4000 tests Party popper

(edited to add the correction from the follow-up tweet)

so looks like all in all, 7.0.0 was a great performance improvement - thanks to everyone involved!