v2.0 is a major release with a number of breaking changes, focused mostly on cleaning up deprecated parts of the API to reduce confusion. The library is ~9,000 lines slimmer, has fewer dependencies, should be less confusing, and will be easier to maintain.
Changes
* **BREAKING**: The minimum Python version is now 3.7.
* The `pool_size` and `max_overflow` configurables are now parsed by the SQLAlchemy `engine_from_config` helpers. (also in v1.5.1, 533)
* **BREAKING**: A number of deprecated backwards compatibility APIs were removed. (534)
* **BREAKING**: The HVAC client has been removed. It did not appear anyone was using this and the version we supported was very out of date. (534)
* **BREAKING** Vestigial support for Pyramid's `pshell`. Use `baseplate-shell` instead. (534)
* Make UnixUser/UnixGroup fall back to IDs if name isn't found (also in v1.5.1, 535)
* **BREAKING**: Remove deprecated observer configuration functions (536)
* **BREAKING**: The experiments framework is now in its own library, [experiments.py]. (538)
* Improved type hinting on `baseplate.lib.cached_property` to make mypy happy with inheritance. (540)
* **BREAKING**: The edge_context definitions are now in their own library, [edgecontext], shared between Python and Go! (540)
* **BREAKING**: Switch from Raven to Sentry SDK (545)
* **BREAKING**: The `request.trace` attribute is now named `request.span` to make it clearer it's not just for tracing, but rather the core of the whole observability system in Baseplate. (546)
* Switch to TCompactProtocol by default (547)
* **BREAKING**: Runtime metrics now use tags instead of complicated metric names. (548)
* Improve error messaging around context object reuse and span use after completion (550)
* Upgrade `python-json-logger` dependency (551)
* Change package name for cqlmapper to its new name on PyPI (552)
* Allow maximum mqueue size to be configured in trace and event publisher sidecars (also in v1.5.3, 553)
* **BREAKING**: Rework tagged metrics to ensure proper aggregations. If you're using tagged metrics right now you'll need to update metrics queries. (556)
* Make trace IDs strings to allow us to change their format in the future (557)
* Add optional bool field "retryable" to Error in thrift definition (559)
* Allow sidecars to be configured to not crash if metrics or trace collectors respond with errors (576)
[experiments.py]: https://github.com/reddit/experiments.py
[edgecontext]: https://github.com/reddit/edgecontext
Bug fixes
* Fix swapped queue size / message size limits in tracing sidecar (also in v1.5.2, 537)
* `baseplate-script` now defers loading the application until logging is set up. This makes it more consistent with `baseplate-serve` and allows applications to control their logging better. (543)
Known Issues
* Returning an HTTPException subclass as a response in a Pyramid application may result in no body content being returned to the client. This bug was introduced in v1.5.0. See 575.
Upgrading
As always, use the [baseplate.py-upgrader](https://github.com/reddit/baseplate.py-upgrader) to get automatic upgrades and advice on things that need to be done manually.