What's Changed
* Ensure localizables are localized before using them as strings by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1360
* Mock servers during tests, so they no longer open browser windows by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1359
* Ensure extensions managed by App are sorted in a stable manner by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1362
* Fix mypy violations by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1364
* Add a cache API by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1310
* Ensure Betty's own deprecation warnings are emitted by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1365
* Fix mypy violations by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1367
* Improve cache fixtures, and introduce one for an App-compatible Cache implementation by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1368
* Add additional package classifiers by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1369
* Make Cache.get() return a context manager by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1371
* Remove dead code by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1375
* Improve a variable name that was no longer accurate by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1376
* Isolate QApplication from tests, and ensure there is only one QApplication instance as per Qt guidelines by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1377
* Fix broken JSON due to HTML escaping by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1384
* npm dependencies (Maps extension)(deps): bump css-loader from 6.11.0 to 7.1.0 in /betty/extension/maps/assets/betty.extension.npm._Npm/src by dependabot in https://github.com/bartfeenstra/betty/pull/1385
* npm dependencies (Trees extension)(deps): bump css-loader from 6.11.0 to 7.1.0 in /betty/extension/trees/assets/betty.extension.npm._Npm/src by dependabot in https://github.com/bartfeenstra/betty/pull/1387
* npm dependencies (Cotton Candy extension)(deps): bump css-loader from 6.11.0 to 7.1.0 in /betty/extension/cotton_candy/assets/betty.extension.npm._Npm/src by dependabot in https://github.com/bartfeenstra/betty/pull/1386
* Rewrite Python dependency constraints to allow for more accurate and granular future compatibility by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1389
* Do not use live caches during tests by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1370
* Reduce memory consumption by adding slots to EntityCollection and subclasses by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1390
* Limit Github Actions test runs to 30 minutes by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1391
* Run sphinx-docs with concurrency by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1392
* Simplify the asyncio API by bartfeenstra in https://github.com/bartfeenstra/betty/pull/1393
**Full Changelog**: https://github.com/bartfeenstra/betty/compare/0.3.2...0.3.3