annotate tests/test-rust-ancestor.py @ 52838:e52dc683bf6b

rust-pyo3: switch over to the pyo3 `InnerRevlog` This does many things that would involve a lot of churn if done separately: - Move the ancestors, revision and dagops modules to use the new `SharedByPyObject` instead of the old `UnsafePyLeaked` - Move the ancestors and discovery Python tests to using PyO3 - Change all calls to `importrust` to use `pyo3=True`, where applicable # Benchmarks I've run a bunch of benchmarks that involve revlog use. The TL;DR is that the pyo3 code is basically always very slightly faster if/when it's not within the noise levels. Here is the report: ``` ### data-env-vars.name = heptapod-public-2024-03-25-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 8.425445 ~~~~~ after: 8.170007 (-3.03%, -0.26) ### data-env-vars.name = heptapod-public-2024-03-25-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 8.328969 ~~~~~ after: 8.193693 (-1.62%, -0.14) ### data-env-vars.name = heptapod-public-2024-03-25-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.318721 ~~~~~ after: 0.317050 ### data-env-vars.name = heptapod-public-2024-03-25-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.315603 ~~~~~ after: 0.311842 (-1.19%, -0.00) ### data-env-vars.name = heptapod-public-2024-03-25-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 15.422452 ~~~~~ after: 15.417195 ### data-env-vars.name = heptapod-public-2024-03-25-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 15.424805 ~~~~~ after: 15.417188 ### data-env-vars.name = heptapod-public-2024-03-25-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 8.447181 ~~~~~ after: 8.279321 (-1.99%, -0.17) ### data-env-vars.name = heptapod-public-2024-03-25-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 8.399840 ~~~~~ after: 8.310752 (-1.06%, -0.09) ### data-env-vars.name = heptapod-public-2024-03-25-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.352319 ~~~~~ after: 0.353375 ### data-env-vars.name = heptapod-public-2024-03-25-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.322006 ~~~~~ after: 0.323852 ### data-env-vars.name = heptapod-public-2024-03-25-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 16.183304 ~~~~~ after: 16.177351 ### data-env-vars.name = heptapod-public-2024-03-25-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 16.169041 ~~~~~ after: 16.173200 ### data-env-vars.name = mercurial-public-2018-08-01-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 0.559746 ~~~~~ after: 0.548727 (-1.97%, -0.01) ### data-env-vars.name = mercurial-public-2018-08-01-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 0.551662 ~~~~~ after: 0.548478 ### data-env-vars.name = mercurial-public-2018-08-01-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.294767 ~~~~~ after: 0.291008 (-1.28%, -0.00) ### data-env-vars.name = mercurial-public-2018-08-01-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.290598 ~~~~~ after: 0.288139 ### data-env-vars.name = mercurial-public-2018-08-01-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 0.128753 ~~~~~ after: 0.127942 ### data-env-vars.name = mercurial-public-2018-08-01-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 0.128310 ~~~~~ after: 0.128236 ### data-env-vars.name = mercurial-public-2018-08-01-ds2-pnm # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 4.968975 ~~~~~ after: 4.804225 (-3.32%, -0.16) ### data-env-vars.name = mercurial-public-2018-08-01-ds2-pnm # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 5.038150 ~~~~~ after: 4.821872 (-4.29%, -0.22) ### data-env-vars.name = mercurial-public-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 0.560542 ~~~~~ after: 0.557323 ### data-env-vars.name = mercurial-public-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 0.554099 ~~~~~ after: 0.553200 ### data-env-vars.name = mercurial-public-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.292676 ~~~~~ after: 0.292513 ### data-env-vars.name = mercurial-public-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.288629 ~~~~~ after: 0.287737 ### data-env-vars.name = mercurial-public-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 0.223442 ~~~~~ after: 0.223168 ### data-env-vars.name = mercurial-public-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 0.223376 ~~~~~ after: 0.222181 ### data-env-vars.name = mercurial-public-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 4.691464 ~~~~~ after: 4.567641 (-2.64%, -0.12) ### data-env-vars.name = mercurial-public-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 4.700062 ~~~~~ after: 4.616739 (-1.77%, -0.08) ### data-env-vars.name = mercurial-public-2024-03-22-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 0.708915 ~~~~~ after: 0.697581 (-1.60%, -0.01) ### data-env-vars.name = mercurial-public-2024-03-22-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 0.698667 ~~~~~ after: 0.693792 ### data-env-vars.name = mercurial-public-2024-03-22-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.302459 ~~~~~ after: 0.296517 (-1.96%, -0.01) ### data-env-vars.name = mercurial-public-2024-03-22-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.297432 ~~~~~ after: 0.293347 (-1.37%, -0.00) ### data-env-vars.name = mercurial-public-2024-03-22-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 0.200229 ~~~~~ after: 0.199035 ### data-env-vars.name = mercurial-public-2024-03-22-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 0.199995 ~~~~~ after: 0.199130 ### data-env-vars.name = mercurial-public-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 0.712384 ~~~~~ after: 0.703804 (-1.20%, -0.01) ### data-env-vars.name = mercurial-public-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 0.704736 ~~~~~ after: 0.699944 ### data-env-vars.name = mercurial-public-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.300989 ~~~~~ after: 0.300870 ### data-env-vars.name = mercurial-public-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.296388 ~~~~~ after: 0.295122 ### data-env-vars.name = mercurial-public-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 0.323753 ~~~~~ after: 0.328260 (+1.39%, +0.00) ### data-env-vars.name = mercurial-public-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 0.326091 ~~~~~ after: 0.325825 ### data-env-vars.name = mozilla-central-2018-08-01-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 36.797693 ~~~~~ after: 35.395390 (-3.81%, -1.40) ### data-env-vars.name = mozilla-central-2018-08-01-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 36.400602 ~~~~~ after: 35.793828 (-1.67%, -0.61) ### data-env-vars.name = mozilla-central-2018-08-01-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.303372 ~~~~~ after: 0.302275 ### data-env-vars.name = mozilla-central-2018-08-01-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.300228 ~~~~~ after: 0.299014 ### data-env-vars.name = mozilla-central-2018-08-01-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 133.610273 ~~~~~ after: 134.082667 ### data-env-vars.name = mozilla-central-2018-08-01-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 133.560602 ~~~~~ after: 133.560186 ### data-env-vars.name = mozilla-central-2018-08-01-ds2-pnm # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 32.279654 ~~~~~ after: 31.937365 (-1.06%, -0.34) ### data-env-vars.name = mozilla-central-2018-08-01-ds2-pnm # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 32.393790 ~~~~~ after: 32.059161 (-1.03%, -0.33) ### data-env-vars.name = mozilla-central-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 36.750314 ~~~~~ after: 35.659837 (-2.97%, -1.09) ### data-env-vars.name = mozilla-central-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 36.132511 ~~~~~ after: 35.533999 (-1.66%, -0.60) ### data-env-vars.name = mozilla-central-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.426249 ~~~~~ after: 0.427237 ### data-env-vars.name = mozilla-central-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.297567 ~~~~~ after: 0.297548 ### data-env-vars.name = mozilla-central-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 135.684726 ~~~~~ after: 135.554733 ### data-env-vars.name = mozilla-central-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 135.521429 ~~~~~ after: 135.471735 ### data-env-vars.name = mozilla-central-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 32.138181 ~~~~~ after: 31.376612 (-2.37%, -0.76) ### data-env-vars.name = mozilla-central-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 32.436170 ~~~~~ after: 31.800662 (-1.96%, -0.64) ### data-env-vars.name = mozilla-central-2024-03-22-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 56.412651 ~~~~~ after: 55.968979 ### data-env-vars.name = mozilla-central-2024-03-22-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 57.291139 ~~~~~ after: 55.623600 (-2.91%, -1.67) ### data-env-vars.name = mozilla-central-2024-03-22-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.305015 ~~~~~ after: 0.302645 ### data-env-vars.name = mozilla-central-2024-03-22-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.299651 ~~~~~ after: 0.296140 (-1.17%, -0.00) ### data-env-vars.name = mozilla-central-2024-03-22-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 372.603646 ~~~~~ after: 379.958592 (+1.97%, +7.35) ### data-env-vars.name = mozilla-central-2024-03-22-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 372.571283 ~~~~~ after: 376.975082 (+1.18%, +4.40) ### data-env-vars.name = mozilla-central-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 57.900620 ~~~~~ after: 56.628974 (-2.20%, -1.27) ### data-env-vars.name = mozilla-central-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 56.772457 ~~~~~ after: 56.219994 ### data-env-vars.name = mozilla-central-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.497401 ~~~~~ after: 0.498934 ### data-env-vars.name = mozilla-central-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.298446 ~~~~~ after: 0.297411 ### data-env-vars.name = mozilla-central-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 376.794500 ~~~~~ after: 377.126872 ### data-env-vars.name = mozilla-central-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 377.108643 ~~~~~ after: 378.355222 ### data-env-vars.name = mozilla-try-2024-03-26-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 58.211350 ~~~~~ after: 56.179941 (-3.49%, -2.03) ### data-env-vars.name = mozilla-try-2024-03-26-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 1.221867 ~~~~~ after: 1.171836 (-4.09%, -0.05) ### data-env-vars.name = mozilla-try-2024-03-26-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = yes # benchmark.variants.rev = none before: 169.190180 ~~~~~ after: 167.816681 ### data-env-vars.name = mozilla-try-2024-03-26-ds2-pnm # benchmark.name = hg.command.unbundle # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.resource-usage = default # benchmark.variants.reuse-external-delta-parent = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = unbundle # benchmark.variants.validate = default # benchmark.variants.verbosity = quiet before: 70.573063 ~~~~~ after: 70.149730 ### data-env-vars.name = mozilla-try-2024-03-26-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 2469.554928 ~~~~~ after: 2459.756854 ### data-env-vars.name = mozilla-try-2024-03-26-ds2-pnm # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 63.259498 ~~~~~ after: 62.934324 ### data-env-vars.name = mozilla-unified-2024-03-22-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 52.009024 ~~~~~ after: 51.021327 (-1.90%, -0.99) ### data-env-vars.name = mozilla-unified-2024-03-22-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 52.021120 ~~~~~ after: 51.187100 (-1.60%, -0.83) ### data-env-vars.name = mozilla-unified-2024-03-22-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.316214 ~~~~~ after: 0.313213 ### data-env-vars.name = mozilla-unified-2024-03-22-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.314039 ~~~~~ after: 0.309434 (-1.47%, -0.00) ### data-env-vars.name = mozilla-unified-2024-03-22-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 419.229602 ~~~~~ after: 418.731461 ### data-env-vars.name = mozilla-unified-2024-03-22-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 419.121169 ~~~~~ after: 418.893086 ### data-env-vars.name = mozilla-unified-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 52.298052 ~~~~~ after: 51.680823 (-1.18%, -0.62) ### data-env-vars.name = mozilla-unified-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 51.979719 ~~~~~ after: 50.517619 (-2.81%, -1.46) ### data-env-vars.name = mozilla-unified-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.542347 ~~~~~ after: 0.541494 ### data-env-vars.name = mozilla-unified-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.361585 ~~~~~ after: 0.359601 ### data-env-vars.name = mozilla-unified-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 424.435573 ~~~~~ after: 425.054393 ### data-env-vars.name = mozilla-unified-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 425.369579 ~~~~~ after: 424.182501 ### data-env-vars.name = netbeans-2018-08-01-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 17.169597 ~~~~~ after: 16.809620 (-2.10%, -0.36) ### data-env-vars.name = netbeans-2018-08-01-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 17.052174 ~~~~~ after: 16.873865 (-1.05%, -0.18) ### data-env-vars.name = netbeans-2018-08-01-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.300405 ~~~~~ after: 0.296493 (-1.30%, -0.00) ### data-env-vars.name = netbeans-2018-08-01-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.296907 ~~~~~ after: 0.291884 (-1.69%, -0.01) ### data-env-vars.name = netbeans-2018-08-01-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 76.353166 ~~~~~ after: 76.315550 ### data-env-vars.name = netbeans-2018-08-01-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 76.304418 ~~~~~ after: 76.314896 ### data-env-vars.name = netbeans-2018-08-01-ds2-pnm # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 41.448226 ~~~~~ after: 39.696075 (-4.23%, -1.75) ### data-env-vars.name = netbeans-2018-08-01-ds2-pnm # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 41.489911 ~~~~~ after: 40.213760 (-3.08%, -1.28) ### data-env-vars.name = netbeans-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 17.276211 ~~~~~ after: 16.934238 (-1.98%, -0.34) ### data-env-vars.name = netbeans-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 17.275566 ~~~~~ after: 17.151560 ### data-env-vars.name = netbeans-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.363647 ~~~~~ after: 0.364217 ### data-env-vars.name = netbeans-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.292249 ~~~~~ after: 0.293737 ### data-env-vars.name = netbeans-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 77.242740 ~~~~~ after: 77.165247 ### data-env-vars.name = netbeans-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 77.189009 ~~~~~ after: 77.153971 ### data-env-vars.name = netbeans-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 40.341299 ~~~~~ after: 40.604985 ### data-env-vars.name = netbeans-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 40.585503 ~~~~~ after: 40.820806 ### data-env-vars.name = netbeans-2019-11-07-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 17.515332 ~~~~~ after: 17.190762 (-1.85%, -0.32) ### data-env-vars.name = netbeans-2019-11-07-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 17.343596 ~~~~~ after: 17.050369 (-1.69%, -0.29) ### data-env-vars.name = netbeans-2019-11-07-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.316108 ~~~~~ after: 0.315292 ### data-env-vars.name = netbeans-2019-11-07-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.311521 ~~~~~ after: 0.307919 (-1.16%, -0.00) ### data-env-vars.name = netbeans-2019-11-07-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 80.169792 ~~~~~ after: 80.090093 ### data-env-vars.name = netbeans-2019-11-07-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 80.168257 ~~~~~ after: 80.203922 ### data-env-vars.name = netbeans-2019-11-07-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 17.471723 ~~~~~ after: 17.104498 (-2.10%, -0.37) ### data-env-vars.name = netbeans-2019-11-07-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 17.351268 ~~~~~ after: 17.039244 (-1.80%, -0.31) ### data-env-vars.name = netbeans-2019-11-07-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.379920 ~~~~~ after: 0.380529 ### data-env-vars.name = netbeans-2019-11-07-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.306940 ~~~~~ after: 0.308172 ### data-env-vars.name = netbeans-2019-11-07-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 81.143787 ~~~~~ after: 81.205227 ### data-env-vars.name = netbeans-2019-11-07-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 81.208757 ~~~~~ after: 81.201285 ### data-env-vars.name = pypy-2018-08-01-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 1.409354 ~~~~~ after: 1.384783 (-1.74%, -0.02) ### data-env-vars.name = pypy-2018-08-01-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 1.395327 ~~~~~ after: 1.379295 (-1.15%, -0.02) ### data-env-vars.name = pypy-2018-08-01-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.305516 ~~~~~ after: 0.301302 (-1.38%, -0.00) ### data-env-vars.name = pypy-2018-08-01-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.300681 ~~~~~ after: 0.296424 (-1.42%, -0.00) ### data-env-vars.name = pypy-2018-08-01-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 1.228350 ~~~~~ after: 1.225184 ### data-env-vars.name = pypy-2018-08-01-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 1.227250 ~~~~~ after: 1.226652 ### data-env-vars.name = pypy-2018-08-01-ds2-pnm # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 10.441251 ~~~~~ after: 10.233845 (-1.99%, -0.21) ### data-env-vars.name = pypy-2018-08-01-ds2-pnm # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 10.477187 ~~~~~ after: 10.518723 ### data-env-vars.name = pypy-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 1.406229 ~~~~~ after: 1.383834 (-1.59%, -0.02) ### data-env-vars.name = pypy-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 1.404700 ~~~~~ after: 1.386296 (-1.31%, -0.02) ### data-env-vars.name = pypy-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.303247 ~~~~~ after: 0.304695 ### data-env-vars.name = pypy-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.295575 ~~~~~ after: 0.294873 ### data-env-vars.name = pypy-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 1.614998 ~~~~~ after: 1.619019 ### data-env-vars.name = pypy-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 1.608089 ~~~~~ after: 1.613761 ### data-env-vars.name = pypy-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 10.494740 ~~~~~ after: 10.183642 (-2.96%, -0.31) ### data-env-vars.name = pypy-2018-08-01-zstd-sparse-revlog # benchmark.name = hg.perf.unbundle # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = default # benchmark.variants.revs = any-10000-extra-rev # benchmark.variants.source = default before: 10.153362 ~~~~~ after: 10.208118 ### data-env-vars.name = pypy-2024-03-22-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 1.613760 ~~~~~ after: 1.595667 (-1.12%, -0.02) ### data-env-vars.name = pypy-2024-03-22-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 1.601770 ~~~~~ after: 1.589591 ### data-env-vars.name = pypy-2024-03-22-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.300656 ~~~~~ after: 0.299511 ### data-env-vars.name = pypy-2024-03-22-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.298116 ~~~~~ after: 0.34f44a ### data-env-vars.name = pypy-2024-03-22-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 1.451637 ~~~~~ after: 1.449828 ### data-env-vars.name = pypy-2024-03-22-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 1.447463 ~~~~~ after: 1.447144 ### data-env-vars.name = pypy-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 1.618347 ~~~~~ after: 1.593819 (-1.52%, -0.02) ### data-env-vars.name = pypy-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 1.610104 ~~~~~ after: 1.591181 (-1.18%, -0.02) ### data-env-vars.name = pypy-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.299082 ~~~~~ after: 0.302411 (+1.11%, +0.00) ### data-env-vars.name = pypy-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.294385 ~~~~~ after: 0.294103 ### data-env-vars.name = pypy-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 1.896348 ~~~~~ after: 1.892661 ### data-env-vars.name = pypy-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 1.897075 ~~~~~ after: 1.896864 ### data-env-vars.name = tryton-public-2024-03-22-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 1.823667 ~~~~~ after: 1.791246 (-1.78%, -0.03) ### data-env-vars.name = tryton-public-2024-03-22-ds2-pnm # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 1.820555 ~~~~~ after: 1.765854 (-3.00%, -0.05) ### data-env-vars.name = tryton-public-2024-03-22-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.340665 ~~~~~ after: 0.336729 (-1.16%, -0.00) ### data-env-vars.name = tryton-public-2024-03-22-ds2-pnm # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.335204 ~~~~~ after: 0.333865 ### data-env-vars.name = tryton-public-2024-03-22-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 0.262541 ~~~~~ after: 0.261794 ### data-env-vars.name = tryton-public-2024-03-22-ds2-pnm # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 0.261495 ~~~~~ after: 0.260879 ### data-env-vars.name = tryton-public-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 1.856138 ~~~~~ after: 1.784902 (-3.84%, -0.07) ### data-env-vars.name = tryton-public-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.cat # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.files = all-root # benchmark.variants.output = plain # benchmark.variants.rev = tip before: 1.811432 ~~~~~ after: 1.782845 (-1.58%, -0.03) ### data-env-vars.name = tryton-public-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.343215 ~~~~~ after: 0.341859 ### data-env-vars.name = tryton-public-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.command.log # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.limit-rev = 1000 # benchmark.variants.patch = no # benchmark.variants.rev = none before: 0.332617 ~~~~~ after: 0.331202 ### data-env-vars.name = tryton-public-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rhg # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 0.590326 ~~~~~ after: 0.590407 ### data-env-vars.name = tryton-public-2024-03-22-zstd-sparse-revlog # benchmark.name = hg.perf.read-revisions # bin-env-vars.hg.flavor = rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.order = default # benchmark.variants.revlog = manifestlog before: 0.589567 ~~~~~ after: 0.588821 ```
author Rapha?l Gom?s <rgomes@octobus.net>
date Tue, 07 Jan 2025 17:34:25 +0100
parents 507fec66014f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
41053
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40968
diff changeset
1 import sys
40968
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
2
46113
59fa3890d40a node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents: 43944
diff changeset
3 from mercurial.node import wdirrev
41350
ab0d762d89ef rust-cpython: raising error.WdirUnsupported
Georges Racinet <georges.racinet@octobus.net>
parents: 41246
diff changeset
4
43944
8a8305f557d0 test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43076
diff changeset
5 from mercurial.testing import revlog as revlogtesting
8a8305f557d0 test: extract some generic data and utility from test-rust-ancestor.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 43076
diff changeset
6
40968
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
7 try:
52838
e52dc683bf6b rust-pyo3: switch over to the pyo3 `InnerRevlog`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 52535
diff changeset
8 from mercurial import pyo3_rustext
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41694
diff changeset
9
52413
20fe0bf9a9a5 rust-pyo3: dagop submodule implementation
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52405
diff changeset
10 pyo3_rustext.__name__
40968
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
11 except ImportError:
52838
e52dc683bf6b rust-pyo3: switch over to the pyo3 `InnerRevlog`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 52535
diff changeset
12 pyo3_rustext = None
40968
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
13
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
14 try:
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
15 from mercurial.cext import parsers as cparsers
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
16 except ImportError:
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
17 cparsers = None
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
18
41053
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40968
diff changeset
19
52532
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
20 class RustAncestorsTestMixin:
40968
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
21 """Test the correctness of binding to Rust code.
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
22
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
23 This test is merely for the binding to Rust itself: extraction of
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
24 Python variable, giving back the results etc.
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
25
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
26 It is not meant to test the algorithmic correctness of the operations
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
27 on ancestors it provides. Hence the very simple embedded index data is
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
28 good enough.
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
29
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
30 Algorithmic correctness is asserted by the Rust unit tests.
52532
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
31
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
32 At this point, we have two sets of bindings, in `hg-cpython` and
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
33 `hg-pyo3`. This class used to be for the first and now contains
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
34 the tests that are identical in both bindings. As of this writing,
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
35 there are more implementations in `hg-cpython` than `hg-pyo3`, hence
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
36 some more tests in the subclass for `hg-cpython`. When the work on PyO3
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
37 is complete, the subclasses for `hg-cpython` should have no specific
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
38 test left. Later on, when we remove the dead code in `hg-cpython`, the tests
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
39 should migrate from the mixin to the class for `hg-pyo3`, until we can
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
40 simply remove the mixin.
40968
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
41 """
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
42
52532
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
43 @classmethod
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
44 def ancestors_mod(cls):
52838
e52dc683bf6b rust-pyo3: switch over to the pyo3 `InnerRevlog`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 52535
diff changeset
45 return pyo3_rustext.ancestor
52532
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
46
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
47 @classmethod
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
48 def dagop_mod(cls):
52838
e52dc683bf6b rust-pyo3: switch over to the pyo3 `InnerRevlog`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 52535
diff changeset
49 return pyo3_rustext.dagop
52532
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
50
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
51 @classmethod
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
52 def graph_error(cls):
52838
e52dc683bf6b rust-pyo3: switch over to the pyo3 `InnerRevlog`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 52535
diff changeset
53 return pyo3_rustext.GraphError
52532
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
54
41053
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40968
diff changeset
55 def testiteratorrevlist(self):
52532
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
56 AncestorsIterator = self.ancestors_mod().AncestorsIterator
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
57
51236
7eea2e4109ae rust-index: using the `hg::index::Index` in ancestors iterator and lazy set
Georges Racinet <georges.racinet@octobus.net>
parents: 50976
diff changeset
58 idx = self.parserustindex()
41053
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40968
diff changeset
59 # checking test assumption about the index binary data:
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41694
diff changeset
60 self.assertEqual(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41694
diff changeset
61 {i: (r[5], r[6]) for i, r in enumerate(idx)},
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41694
diff changeset
62 {0: (-1, -1), 1: (0, -1), 2: (1, -1), 3: (2, -1)},
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41694
diff changeset
63 )
41053
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40968
diff changeset
64 ait = AncestorsIterator(idx, [3], 0, True)
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40968
diff changeset
65 self.assertEqual([r for r in ait], [3, 2, 1, 0])
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40968
diff changeset
66
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40968
diff changeset
67 ait = AncestorsIterator(idx, [3], 0, False)
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40968
diff changeset
68 self.assertEqual([r for r in ait], [2, 1, 0])
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40968
diff changeset
69
52533
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
70 ait = AncestorsIterator(idx, [3], 0, False)
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
71 # tainting the index with a mutation, let's see what happens
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
72 # (should be more critical with AncestorsIterator)
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
73 del idx[0:2]
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
74 try:
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
75 next(ait)
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
76 except RuntimeError as exc:
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
77 assert "leaked reference after mutation" in exc.args[0]
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
78 else:
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
79 raise AssertionError("Expected an exception")
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
80
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
81 def testlazyancestors(self):
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
82 LazyAncestors = self.ancestors_mod().LazyAncestors
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
83
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
84 idx = self.parserustindex()
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
85 start_count = sys.getrefcount(idx.inner) # should be 2 (see Python doc)
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
86 self.assertEqual(
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
87 {i: (r[5], r[6]) for i, r in enumerate(idx)},
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
88 {0: (-1, -1), 1: (0, -1), 2: (1, -1), 3: (2, -1)},
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
89 )
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
90 lazy = LazyAncestors(idx, [3], 0, True)
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
91 # the LazyAncestors instance holds just one reference to the
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
92 # inner revlog. TODO check that this is normal
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
93 self.assertEqual(sys.getrefcount(idx.inner), start_count + 1)
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
94
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
95 self.assertTrue(2 in lazy)
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
96 self.assertTrue(bool(lazy))
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
97 self.assertFalse(None in lazy)
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
98 self.assertEqual(list(lazy), [3, 2, 1, 0])
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
99 # a second time to validate that we spawn new iterators
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
100 self.assertEqual(list(lazy), [3, 2, 1, 0])
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
101
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
102 # now let's watch the refcounts closer
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
103 ait = iter(lazy)
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
104 self.assertEqual(sys.getrefcount(idx.inner), start_count + 2)
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
105 del ait
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
106 self.assertEqual(sys.getrefcount(idx.inner), start_count + 1)
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
107 del lazy
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
108 self.assertEqual(sys.getrefcount(idx.inner), start_count)
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
109
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
110 # let's check bool for an empty one
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
111 self.assertFalse(LazyAncestors(idx, [0], 0, False))
6b694bdf752a rust-pyo3: implementation of LazyAncestors
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52532
diff changeset
112
52532
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
113 def testrefcount(self):
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
114 AncestorsIterator = self.ancestors_mod().AncestorsIterator
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
115
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
116 idx = self.parserustindex()
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
117 start_count = sys.getrefcount(idx.inner)
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
118
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
119 # refcount increases upon iterator init...
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
120 ait = AncestorsIterator(idx, [3], 0, True)
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
121 self.assertEqual(sys.getrefcount(idx.inner), start_count + 1)
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
122 self.assertEqual(next(ait), 3)
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
123
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
124 # and decreases once the iterator is removed
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
125 del ait
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
126 self.assertEqual(sys.getrefcount(idx.inner), start_count)
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
127
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
128 # and removing ref to the index after iterator init is no issue
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
129 ait = AncestorsIterator(idx, [3], 0, True)
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
130 del idx
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
131 self.assertEqual(list(ait), [3, 2, 1, 0])
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
132
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
133 # the index is not tracked by the GC, hence there is nothing more
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
134 # we can assert to check that it is properly deleted once its refcount
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
135 # drops to 0
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
136
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
137 def testgrapherror(self):
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
138 AncestorsIterator = self.ancestors_mod().AncestorsIterator
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
139 GraphError = self.graph_error()
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
140
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
141 data = (
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
142 revlogtesting.data_non_inlined[: 64 + 27]
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
143 + b'\xf2'
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
144 + revlogtesting.data_non_inlined[64 + 28 :]
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
145 )
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
146 idx = self.parserustindex(data=data)
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
147 with self.assertRaises(GraphError) as arc:
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
148 AncestorsIterator(idx, [1], -1, False)
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
149 exc = arc.exception
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
150 self.assertIsInstance(exc, ValueError)
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
151 # rust-cpython issues appropriate str instances for Python 2 and 3
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
152 self.assertEqual(exc.args, ('ParentOutOfRange', 1))
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
153
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
154 def testwdirunsupported(self):
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
155 AncestorsIterator = self.ancestors_mod().AncestorsIterator
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
156 GraphError = self.graph_error()
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
157
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
158 # trying to access ancestors of the working directory raises
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
159 idx = self.parserustindex()
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
160 with self.assertRaises(GraphError) as arc:
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
161 list(AncestorsIterator(idx, [wdirrev], -1, False))
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
162
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
163 exc = arc.exception
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
164 self.assertIsInstance(exc, ValueError)
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
165 # rust-cpython issues appropriate str instances for Python 2 and 3
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
166 self.assertEqual(exc.args, ('InvalidRevision', wdirrev))
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
167
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
168 def testheadrevs(self):
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
169 dagop = self.dagop_mod()
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
170
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
171 idx = self.parserustindex()
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
172 self.assertEqual(dagop.headrevs(idx, [1, 2, 3]), {3})
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
173
41188
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41114
diff changeset
174 def testmissingancestors(self):
52532
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
175 MissingAncestors = self.ancestors_mod().MissingAncestors
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
176
51237
59d81768ad6d rust-index: using `hg::index::Index` in MissingAncestors
Georges Racinet on incendie.racinet.fr <georges@racinet.fr>
parents: 51236
diff changeset
177 idx = self.parserustindex()
41188
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41114
diff changeset
178 missanc = MissingAncestors(idx, [1])
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41114
diff changeset
179 self.assertTrue(missanc.hasbases())
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41114
diff changeset
180 self.assertEqual(missanc.missingancestors([3]), [2, 3])
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41114
diff changeset
181 missanc.addbases({2})
41243
5257e6299d4c rust-cpython: set conversion for MissingAncestors.bases()
Georges Racinet <georges.racinet@octobus.net>
parents: 41188
diff changeset
182 self.assertEqual(missanc.bases(), {1, 2})
41188
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41114
diff changeset
183 self.assertEqual(missanc.missingancestors([3]), [3])
41246
619ee4039bd4 rust: MissingAncestors.basesheads()
Georges Racinet <georges.racinet@octobus.net>
parents: 41243
diff changeset
184 self.assertEqual(missanc.basesheads(), {2})
41188
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41114
diff changeset
185
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41114
diff changeset
186 def testmissingancestorsremove(self):
52532
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
187 MissingAncestors = self.ancestors_mod().MissingAncestors
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
188
51237
59d81768ad6d rust-index: using `hg::index::Index` in MissingAncestors
Georges Racinet on incendie.racinet.fr <georges@racinet.fr>
parents: 51236
diff changeset
189 idx = self.parserustindex()
41188
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41114
diff changeset
190 missanc = MissingAncestors(idx, [1])
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41114
diff changeset
191 revs = {0, 1, 2, 3}
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41114
diff changeset
192 missanc.removeancestorsfrom(revs)
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41114
diff changeset
193 self.assertEqual(revs, {2, 3})
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41114
diff changeset
194
52532
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
195 def test_rank(self):
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
196 dagop = self.dagop_mod()
40968
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
197
52413
20fe0bf9a9a5 rust-pyo3: dagop submodule implementation
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52405
diff changeset
198 idx = self.parserustindex()
20fe0bf9a9a5 rust-pyo3: dagop submodule implementation
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52405
diff changeset
199 try:
52532
3ffcdbf0b432 rust: test AncestorsIterator without duplication
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52413
diff changeset
200 dagop.rank(idx, 1, 2)
52413
20fe0bf9a9a5 rust-pyo3: dagop submodule implementation
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52405
diff changeset
201 except pyo3_rustext.GraphError as exc:
20fe0bf9a9a5 rust-pyo3: dagop submodule implementation
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52405
diff changeset
202 self.assertEqual(exc.args, ("InconsistentGraphData",))
20fe0bf9a9a5 rust-pyo3: dagop submodule implementation
Georges Racinet <georges.racinet@cloudcrane.io>
parents: 52405
diff changeset
203
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41694
diff changeset
204
40968
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
205 if __name__ == '__main__':
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
206 import silenttestrunner
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41694
diff changeset
207
40968
74f41329bf55 rust-cpython: testing the bindings from Python
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
208 silenttestrunner.main(__name__)