| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
…ems` Manual minimal backport from commit e89d23b. Fix pytest-dev#12355. In the issue, it was reported that the `reorder_items` has quadratic (or worse...) behavior with certain simple parametrizations. After some debugging I found that the problem happens because the "Fix items_by_argkey order" loop keeps adding the same item to the deque, and it reaches epic sizes which causes the slowdown. I don't claim to understand how the `reorder_items` algorithm works, but if as far as I understand, if an item already exists in the deque, the correct thing to do is to move it to the front. Since a deque doesn't have such an (efficient) operation, this switches to `OrderedDict` which can efficiently append from both sides, deduplicate and move to front.
| for key in argkeys_cache[scope].get(item, []): | ||
| items_by_argkey[scope][key].appendleft(item) | ||
| scoped_items_by_argkey[key][item] = None | ||
| scoped_items_by_argkey[key].move_to_end(item, last=False) |
There was a problem hiding this comment.
Oh.. So this was backported after all. Makes sense given that the regression appeared in v8.2.2.
Sorry, something went wrong.
This patch temporarily restricts pytest version below 8.2.2 under PyPy due to a discovered regression that it introduced [[1]]. The regression has been observed on at least `pypy3.9-7.3.16`, `pypy3.10-7.3.19` and `pypy3.11-7.3.19`. It can be triggered by running the following in affected runtimes: pytest --collect-only --no-cov tests/test_abc.py tests/test_copy.py tests/test_incorrect_args.py tests/test_multidict.py tests/test_mypy.py tests/test_pickle.py tests/test_types.py tests/test_update.py tests/test_version.py [1]: pytest-dev/pytest#13312 [2]: pytest-dev/pytest#12414 [3]: pytest-dev/pytest#12409
| Back | FazBrowse Home | New Git URL |
Manual minimal backport from commit e89d23b.