* Restore 2.14 getwithbase, add a new method for class key deduplication
* Use the original getwithbase code, not some equivalent
* Fix mocking
* Test key exceptions
* Restore 2.14 getwithbase, add a new method for class key deduplication
* Use the original getwithbase code, not some equivalent
* Fix mocking
* Test key exceptions
* Popen cleanup.
* Improve the test for response headers.
* Fix default headers of Httpx and H2 handlers, add tests.
* Check Location in redirect tests.
* Simplify bindaddress tests.
* Add download_latency to HttpxDownloadHandler, add tests.
* Remove explicit method="GET".
* Don't expect a specific value in test_download_with_maxsize_very_large_file
* Use a non-existent scheme in test_unsupported_scheme.
* Remporarily rollback the test_download_latency test check.
* Better check in test_download_latency.
* Improve logic for StreamCloseReason.CANCELLED.
* Cover 2.15.0 in the release notes (up to 31bf7c3).
* Replace VERSION.
* Document unified download handler exceptions.
* Updates.
* Cover 2.15.0 in the release notes (up to 0c6ccf5).
* Cover 2.15.0 in the release notes (up to b68f267).
* Run linkcheck and fix issues.
* Cleanup unused link targets.
* Cleanup.
* Use AsyncCrawlerProcess if TWISTED_REACTOR_ENABLED=False.
* defer.Deferred -> Deferred.
* Allow Shell with TWISTED_REACTOR_ENABLED=False.
* Shell workflow notes.
* Remove an unused argument.
* Shell.fetch_available.
* Shell._use_reactor.
* Some more comments.
* Simplify _schedule() and fix the spider shell var.
* More async def.
* Reactorless shell support.
* Add pragma: no cover.
* More notes.
* Remove a TODO.
* overall prettyfication
- don't create empty mutable containers (lists, dicts) where it is appropriate
- removed from ignore section and applied some rules from ruff (but keep them ignored in tests)
- use `deque` in `_AsyncCooperatorAdapter` instead of `list.pop(0)`
- remove `f` prefix from strings without any formatting
* return `SIM300` to ignore
* apply ruff rules to all files
* another one
* remove extra space in pyproject.toml
* simplify `__getattr__` in `scrapy.utils.url`
* lazy `url_is_from_any_domain` and `url_is_from_spider`
* improve typing
* specify `arg_to_iter` with None as arg
* improve trackref
- use `NoneType` from `types` since python 3.9 is no longer supported
- use `monotonic` instead of `time` and fix flakiness of `get_oldest`
* tracing GC is no joke
* refine tests
* explain the tests
* add note for pypy in docs + ...
return empty tuple instead of list in `iter_all`