Breaking changes:
- Queries and Parameters are now immutable. This makes a bunch of stuff simpler for me and avoids a couple of bugs. There are
possibly race conditions related to id() usage that are also now all gone, woohoo. This does mean parameter values must be hashable, but there's a check in there to turn any lists/seq etc into a tuple, and I'm not sure what else you'd run into frequently that would hit this.
- Drop Python 3.6 and 3.7 support... sorry :( 3.10 added to CI as well.
- Passing parameters to Q(sql, params) is removed (was deprecated ages ago).
- Passing a lambda to Q(lambda: f'sql') is removed (was deprecated ages ago).
New stuff:
- Implement Extensions and Replacers system - this is considered internal for now but it's quite general purpose, you may
be able to do some fun stuff with it. (everybody wants an ECS implementation in their SQL preprocessor, right?)
- Implement query persistance/caching using extensions/replacers
- Refactor reparameterization to use extensions/replacers
Deprecations:
- ParameterList is deprecated in the public API - it was only ever really a type alias, so you
probably have no need to import it, but it can sneak in with autoimport in IDEs and stuff, so I'm
not removing it right away...