Added
- Support for suppressing and soloing logging to console per thread.
- `TypedStruct`: Support for inheritance.
- `EasyMeta`: the `before_subclass_init` hook.
- `wait` and `iter_wait` support `log_interval` and `log_level` for printing
the thrown `PredicateNotSatisfied` to the log.
- `takesome`: a new generator that partially yields a sequence
- `repr` and `hash` to typed struct fields.
- `PersistentCache`: allow disabling persistence via env-var (`DISABLE_CACHING_PERSISTENCE`)
- collections: raising user-friendly exceptions for failed object queries (too many, too few)
Fixed
- `ExponentialBackoff`: return the value **before** the incrementation.
- `concurrent`: capture `KeyboardInterrupt` exceptions like any other.
- doctests in various functions and classes.
- `SynchronizedSingleton` on `contextmanager` deadlock when some (but not all)
of the CMs throw.
- `resilient` between `timecache`s bug.
- `FilterCollection`: deal with missing attributes on objects (163)
- `PersistentCache`: don't clear old version when changing cache version
- concurrency: documentation
- `SynchronizedSingleton`: deadlock condition when used with `contextmanager` (150)
- concurrency: make 'async' available only in python < 3.7, where it became reserved
Changed
- Reorganization:
- Moved tokens to a proper module.
- Moved function from `easypy.concurrency` and `easypy.timing` to new module
`easypy.sync`
- Moved `throttled` from `easypy.concurrency` to `easypy.timing`.
- `easypy.signals`: Async handlers are invoked first, then the sequential handlers.
- `async` -> `asynchronous`: to support python 3.7, where this word is reserved
- `concurrency.concurrent`: `.result` property changed into method `.result()`, which also waits on the thread
- `easypy.colors`: clean-up, documentation, and reverse-parsing from ansi to markup
Removed
- `Bunch`: The rigid `KEYS` feature.
- `synchronized_on_first_call`.
- `ExponentialBackoff`: The unused `iteration` argument.
- `easypy.cartesian`
- `easypy.selective_queue`
- `easypy.timezone`
Deprecated
- `locking_lru_cache`.