148 lines
6 KiB
Markdown
148 lines
6 KiB
Markdown
# Changelog
|
|
|
|
## 0.7.1
|
|
|
|
+ Add documentation ([Read The Docs](https://suou.readthedocs.io/))
|
|
+ Improved decorator typing
|
|
|
|
## 0.7.0 "The Lucky Update"
|
|
|
|
+ Add RNG/random selection overloads such as `luck()`, `rng_overload()`
|
|
+ Add 7 new throwable exceptions
|
|
+ Add color utilities: `chalk` object and `WebColor()`
|
|
+ Add `.terminal` module, to ease TUI development
|
|
+ `calendar`: add `parse_time()`
|
|
+ Add validators `not_greater_than()`, `not_less_than()`
|
|
+ Add `@future()` decorator: it signals features not yet intended to be public, for instance, backported as a part of a bug fix.
|
|
|
|
## 0.6.1
|
|
|
|
- First release on PyPI under the name `suou`.
|
|
- **BREAKING**: if you installed `sakuragasaki46-suou<=0.6.0` you need to uninstall and reinstall or things may break.
|
|
- Fix `sqlalchemy.asyncio.SQLAlchemy()` to use context vars; `expire_on_commit=` is now configurable at instantiation. Fix some missing re-exports.
|
|
|
|
## 0.6.0
|
|
|
|
+ `.sqlalchemy` has been made a subpackage and split; `sqlalchemy_async` (moved to `sqlalchemy.asyncio`) has been deprecated. Update your imports.
|
|
+ Add several new utilities to `.sqlalchemy`: `BitSelector`, `secret_column`, `a_relationship`, `SessionWrapper`,
|
|
`wrap=` argument to SQLAlchemy. Also removed dead batteries
|
|
+ Add `.waiter` module. For now, non-functional ~
|
|
+ Add `ArgConfigSource` to `.configparse`
|
|
+ Add Z85 (`z85encode()` `z85decode()`) encoding support
|
|
+ Add more strings to `.legal` module
|
|
+ `.signing` module is now covered by tests
|
|
+ New decorator `dei_args()`. Now offensive naming is no more a worry!
|
|
|
|
## 0.5.3
|
|
|
|
- Added docstring to `SQLAlchemy()`.
|
|
- More type fixes.
|
|
|
|
## 0.5.2
|
|
|
|
- Fixed poorly handled merge conflict leaving `.sqlalchemy` modulem unusable
|
|
|
|
## 0.5.1
|
|
|
|
- Fixed return types for `.sqlalchemy` module
|
|
|
|
## 0.5.0
|
|
|
|
+ `sqlalchemy`: add `unbound_fk()`, `bound_fk()`
|
|
+ Add `sqlalchemy_async` module with `SQLAlchemy()` async database binding.
|
|
* Supports being used as an async context manager
|
|
* Automatically handles commit and rollback
|
|
+ `sqlalchemy_async` also offers `async_query()`
|
|
+ Changed `sqlalchemy.parent_children()` to use `lazy='selectin'` by default
|
|
+ Add `timed_cache()`, `alru_cache()`, `TimedDict()`, `none_pass()`, `twocolon_list()`, `quote_css_string()`, `must_be()`
|
|
+ Add module `calendar` with `want_*` date type conversion utilities and `age_and_days()`
|
|
+ Move obsolete stuff to `obsolete` package (includes configparse 0.3 as of now)
|
|
+ Add `redact` module with `redact_url_password()`
|
|
+ Add more exceptions: `NotFoundError()`, `BabelTowerError()`
|
|
+ Add `sass` module
|
|
+ Add `quart` module with `negotiate()`, `add_rest()`, `add_i18n()`, `WantsContentType`
|
|
+ Add `dei` module: it implements a compact and standardized representation for pronouns, inspired by the one in use at PronounDB
|
|
|
|
## 0.4.1
|
|
|
|
- Fixed return types for `.sqlalchemy` module.
|
|
- `sqlalchemy.parent_children()` now takes a `lazy` parameter. Backported from 0.5.1.
|
|
|
|
## 0.4.0
|
|
|
|
+ `pydantic` is now a hard dependency
|
|
+ `ConfigProperty` has now been generalized: check out `classtools.ValueProperty`
|
|
+ **BREAKING**: Changed the behavior of `makelist()`: **different behavior when used with callables**.
|
|
* When applied as a decorator on callable, it converts its return type to a list.
|
|
* Pass `wrap=False` to treat callables as simple objects, restoring the 0.3 behavior.
|
|
+ New module `lex` to make tokenization more affordable — with functions `symbol_table()` and `lex()`
|
|
+ Add `dorks` module and `flask.harden()`. `dorks` contains common endpoints which may be target by hackers
|
|
+ Add `sqlalchemy.bool_column()`: make making flags painless
|
|
+ Introduce `rb64encode()` and `rb64decode()` to deal with issues about Base64 and padding
|
|
* `b64encode()` and `b64decode()` pad to the right
|
|
* `rb64encode()` and `rb64decode()` pad to the left, then strip leading `'A'` in output
|
|
+ Added `addattr()`, `PrefixIdentifier()`, `mod_floor()`, `mod_ceil()`
|
|
+ First version to have unit tests! (Coverage is not yet complete)
|
|
|
|
## 0.3.8
|
|
|
|
- Fixed return types for `.sqlalchemy` module.
|
|
- `sqlalchemy.parent_children()` now takes a `lazy` parameter. Backported from 0.5.1.
|
|
|
|
## 0.3.7
|
|
|
|
- Fixed a bug in `b64decode()` padding handling which made the function inconsistent and non injective. Now, leading `'A'` is NEVER stripped.
|
|
|
|
## 0.3.6
|
|
|
|
- Fixed `ConfigValue` behavior with multiple sources. It used to iterate through all the sources, possibly overwriting; now, iteration stops at first non-missing value
|
|
|
|
## 0.3.5
|
|
|
|
- Fixed cb32 handling. Now leading zeros in SIQ's are stripped, and `.from_cb32()` was implemented
|
|
|
|
## 0.3.4
|
|
|
|
- Bug fixes in `.flask_restx` regarding error handling
|
|
- Fixed a bug in `.configparse` dealing with unset values from multiple sources
|
|
|
|
## 0.3.3
|
|
|
|
- Fixed leftovers in `snowflake` module from unchecked code copying — i.e. `SnowflakeGen.generate_one()` used to require an unused typ= parameter
|
|
- Fixed a bug in `id_column()` that made it fail to provide a working generator — again, this won't be backported
|
|
|
|
## 0.3.2
|
|
|
|
- Fixed bugs in Snowflake generation and serialization of negative values
|
|
|
|
## 0.3.0
|
|
|
|
- Fixed `cb32encode()` and `b32lencode()` doing wrong padding — **UNSOLVED in 0.2.x** which is out of support, effective immediately
|
|
- **Changed behavior** of `kwargs_prefix()` which now removes keys from original mapping by default
|
|
- Add SQLAlchemy auth loaders i.e. `sqlalchemy.require_auth_base()`, `flask_sqlalchemy`.
|
|
What auth loaders do is loading user token and signature into app
|
|
- `sqlalchemy`: add `parent_children()` and `create_session()`
|
|
- Implement `UserSigner()`
|
|
- Improve JSON handling in `flask_restx`
|
|
- Add base2048 (i.e. [BIP-39](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki)) codec
|
|
- Add `split_bits()`, `join_bits()`, `ltuple()`, `rtuple()`, `ssv_list()`, `additem()`
|
|
- Add `markdown` extensions
|
|
- Add Snowflake manipulation utilities
|
|
|
|
## 0.2.3
|
|
|
|
- Bug fixes in `classtools` and `sqlalchemy`
|
|
|
|
## 0.2.1
|
|
|
|
- Add `codecs.jsonencode`
|
|
|
|
## 0.2.0
|
|
|
|
- Add `i18n`, `itertools`
|
|
- Add `toml` as a hard dependency
|
|
- Add support for Python dicts as `ConfigSource`
|
|
- Implement ULID -> SIQ migrator (with flaws)
|
|
- First release on pip under name `sakuragasaki46-suou`
|
|
- Improve sqlalchemy support
|
|
|