#########
Changelog
#########

Version 1.3.1
=============

* `~firebird.base.buffer` module:

  - Added `.MemoryBuffer.write_sized_string` for symetry with `.read_sized_string`.
  - Now `.MemoryBuffer` string functions has also `errors` parameter in addition to `encoding`.

* `~firebird.base.config` module:

  - Direct assignment to `.Config` option raises a `ValueError` exception with message
    "Cannot assign values to option itself, use `option.value` instead".

Version 1.3.0
=============

* `~firebird.base.config` module:

  - Layout produced by `.get_config()` was changed.
  - `.Config` has new constructor keyword-only argument `description`.
  - Fix: uregistered bug in config.ListOption - value and default was the same instance

Version 1.2.0
=============

* Build scheme changed to `PEP 517`.
* Various changes to documentation and type hint adjustments.
* `~firebird.base.config` module:

  - **BREAKING CHANGE**: `.ApplicationDirectoryScheme` was replaced by
    `~firebird.base.config.DirectoryScheme` class, and
    `~firebird.base.config.get_directory_scheme()` has changed signature.
  - Directory scheme was reworked and now also supports concept of HOME directory.
  - New MacOS directory scheme support. As I don't have access to MacOS, this support
    should be considered EXPERIMENTAL. Any feedback about it's correctness is welcome.
  - Added: New `.Config` constructor keyword-only `bool` argument `optional` and
    associated `~Config.optional` read-only property.
  - Added: `.Config.has_value()` function.
  - New class: `.PathOption` for Configuration options with `pathlib.Path` value.
* `~firebird.base.protobuf` module:

  - Added: function `.get_message_factory`.
* `~firebird.base.signal` module:

  - Fix: Bug in `eventsocket` signature handling.
* `~firebird.base.trace` module:

  - Added: `apply_to_descendants` boolean configuration option to apply configuration also
    to all registered descendant classes. The default value is `True`.

Version 1.1.0
=============

* New module: `signal` - Callback system based on Signals and Slots, and "Delphi events"
* `~firebird.base.types` module:

  - `~firebird.base.types.load` function now supports `object_name[.object_name...]`
    specifications instead single `object_name`.
* `~firebird.base.config` module:

  - New class `.ApplicationDirectoryScheme`
  - `~firebird.base.config.Config.load_config()`: raises error when section is missing,
    better error handling when exception is raised while loading options
  - `~firebird.base.config.PyCallableOption` `signature` argument could be
    `inspect.Signature` or Callable
  - Introduced `.PROTO_CONFIG` constant with fully qualified name for `ConfigProto` protobuf
  - Optional argument `to_default` in `~firebird.base.config.Option.clear()` is now keyword-only.
* `~firebird.base.logging` module:

  - `.get_logging_id()` uses `__qualname__` instead `__name__`
* `~firebird.base.protobuf` module:

  - Added direct support for key well-known data types `Empty`, `Any`, `Duration`,
    `Timestamp`, `Struct`, `Value`, `ListValue` and `FieldMask`. They are automatically
    registered. New constants 'PROTO_<type>' with fully qualified names.
  - `~firebird.base.protobuf.create_message()` has new optional `serialized` argument with
    `bytes` that should be parsed into newly created message instance.
  - New functions `~firebird.base.protobuf.struct2dict()` and `~firebird.base.protobuf.dict2struct()`
* `~firebird.base.trace` module:

  - `~firebird.base.trace.TraceFlag` value `DISABLED` was renamed to `NONE`.
  - Added support for trace configuration based on `~firebird.base.config`, using new
    classes `~firebird.base.trace.BaseTraceConfig`, `~firebird.base.trace.TracedMethodConfig`,
    `~firebird.base.trace.TracedClassConfig` and `~firebird.base.trace.TraceConfig`.
  - New methods in `~firebird.base.trace.TraceManager`:

    - `~firebird.base.trace.TraceManager.load_config()` to update trace from configuration.
    - `~firebird.base.trace.TraceManager.set_flag()` and
      `~firebird.base.trace.TraceManager.clear_flag()`.
* `~firebird.base.types` module:

  - `~firebird.base.types.MIME` now handles access to properties more efficiently and faster.
  - New function `~firebird.base.types.load()`.
* Changes in documentation.

Version 1.0.0
=============

* Documentation: new examples for :doc:`trace`, :doc:`logging` and :doc:`hooks`
* Documentation: adjustments to css
* DataList is now generic class
* `.DataList.extract()` has new 'copy' argument.

Version 0.6.1
=============

* Promoted to stable
* More documentation

Version 0.6.0
=============

* New module: `~firebird.base.strconv` - Data conversion from/to string
* New module: `~firebird.base.trace` - Trace/audit for class instances
* Reworked module: `~firebird.base.config` - Classes for configuration definitions

  - New class: `.ConfigOption` - Configuration option with `Config` value
  - New class: `.ConfigListOption` - Configuration option with list of `Config` values
  - New class: `.DataclassOption` - Configuration option with a dataclass value
* Changed module: `~firebird.base.types`

  - New class: `.MIME` - MIME type specification
  - New class: `.PyExpr` - Source code for Python expression
  - New class: `.PyCode` - Python source code
  - New class: `.PyCallable` - Source code for Python callable
  - Removed function: str2bool
* Changed module: `~firebird.base.logging`

  - Trace/audit functionality removed (into new module `~firebird.base.trace`)

Version 0.5.0
=============

Initial release.
