wai-common 0.0.46
Python library with common functionality for other Waikato projects.
License: MIT

Python library with common functionality for other Waikato projects.
Changelog
=========

0.0.46 (2025-05-14)
-------------------

- removed restrictions from `requirements.txt`


0.0.45 (2025-04-14)
-------------------

- using underscore in project name now


0.0.44 (2024-02-16)
-------------------

- fixed methods `get_location` and `make_fit` of the `NormalizedLocatedObject` class

0.0.43 (2024-02-16)
-------------------

- added support for normalized geometric shapes (module `wai.common.geometry`):
  NormalizedPoint, NormalizedPolygon, NormalizedRectangle
- added support for normalized located objects (module `wai.common.imaging.locateobjects`):
  NormalizedLocatedObject, NormalizedLocatedObjects

0.0.42 (2023-08-18)
-------------------

- `wai.common._functions` now imports `Hashable` from `collections.abc` instead
  of `collections` (got removed in Python 3.10)

0.0.41 (2022-12-14)
-------------------

- String serialisation of spectra now produces a .spec-file formatted string.
- Bug fixes.

0.0.40 (2022-07-27)
-------------------

- improved checks in `LocatedObject.has_polygon()` to avoid parse errors when
  `poly_x` and `poly_y` are empty strings

0.0.39 (2022-05-23)
-------------------

- fixed `LocatedObjects.from_report` method: no longer skips field names that
  end with x/y/width/height, only when they exactly match that name.

0.0.38 (2022-05-23)
-------------------

- Added serialisers for lists and tuples.

0.0.37 (2021-08-26)
-------------------

- Bug fixes.

0.0.36 (2021-07-16)
-------------------

- Added serialisers for raw binary data and dictionaries.
- Added tools for working with subsets and permutations.

0.0.35 (2020-08-05)
-------------------

- Bug fixes.

0.0.34 (2020-07-30)
-------------------

- Added function to get the standard app configuration directory on a system.

0.0.33 (2020-07-30)
-------------------

- Bug fixes.

0.0.32 (2020-07-29)
-------------------

- Fixed bug where option handlers weren't respecting redefinitions of option help text.

0.0.31 (2020-03-31)
-------------------

- Removed Rational class as a better implementation is provided by fractions.Fraction.
- Several changes to CLI classes:

  - Can query the optionality of all option types.
  - Default values are now unchecked.
  - TypedOption no longer produces lists of lists for certain combinations of nargs and action.
  - Argument parsers log by default (instead of printing to stdout/stderr).

- Can now get all registered classes from a ClassRegistry.

0.0.30 (2020-03-23)
-------------------

- Added a partial implementation of rational numbers.

0.0.29 (2020-03-18)
-------------------

- Bug fixes.
- Initial values for options on CLIInstantiable objects can be specified in internal format.

0.0.28 (2020-03-12)
-------------------

- Bug fixes.

0.0.27 (2020-03-12)
-------------------

- Additional functionality for ClassRegistry.
- New cli Option, ClassOption, selects from a predefined set of classes.
- import_code can now optionally bypass aliasing of inner classes.
- meta.code_repr package for representing values as Python code.

0.0.26 (2020-03-11)
-------------------

- Fixed bug in Option descriptors which prevented them from working with generic
  option-handlers in Python3.6.

0.0.25 (2020-03-10)
-------------------

- Added LazyDescriptor.
- Added function to get the fully-qualified name of a class.
- Added function to get the import code for a class.
- Added ClassRegistry class.
- Added meta-constants module.
- Added command-line utilities.

0.0.24 (2020-02-21)
-------------------

- Fixed typing bug in dynamic_defaults.

0.0.23 (2020-02-20)
-------------------

- Added dynamic defaults.
- Added function to get the kwargs that are supplied to a function (non-default).
- Added decorator ensure_error_type which wraps exceptions not of a particular
  type in that type.
- Removed json package, now in its own repository, wai-json.

0.0.22 (2020-02-12)
-------------------

- Added instanceoptionalmethod, a decorator for methods which can be called from
  either the class or an instance, and take whichever they are called from as their
  first argument.
- Added LoggingMixin, which adds logging support to classes.
- Added serialisation utilities.
- Added utility for a standard library logger.

0.0.21 (2020-01-24)
-------------------

- Added logging utilities package, with utility for a standard root logger.

0.0.20 (2019-12-16)
-------------------

- Added extra methods to Polygon, Point.

0.0.19 (2019-11-27)
-------------------

- Reworking of JSON configurations to unify value setting between internal and JSON values.
- Adding caching of non-varying calculated attributes to improve serialisation time.

0.0.18 (2019-11-15)
-------------------

- Added PathContextManager, which is a context manager which changes the cwd temporarily.
- Added ensure_path, which creates a directory if it doesn't exist.

0.0.17 (2019-10-31)
-------------------

- Added TypeVarProperty, for easier caching of dynamic type variables.
- Added depth argument to flatten (iterators and sequences).

0.0.16 (2019-10-22)
-------------------

- Added support for ADAMS report files.
- Added basic support for geometry.
- Added support for working with located objects in image-classification/identification
  tasks.

0.0.15 (2019-10-09)
-------------------

- Bug fixes.

0.0.14 (2019-10-09)
-------------------

- Configuration schema caching is now lazier than ever.
- JSON serialisation now validates in both directions.

0.0.13 (2019-10-09)
-------------------

- Fixed bug in Configuration where cached schema were preventing grand-inheritance.

0.0.12 (2019-10-09)
-------------------

- Added support for checking Python versions.
- get_argument_to_typevar now works with Python3.6 and Python3.7.

0.0.11 (2019-10-09)
-------------------

- Fix so that JSON schema definitions propagate through all composite schema.

0.0.10 (2019-10-08)
-------------------

- JSON schema package now has tools for working with references/definitions.
- Configurations now validate additional properties as JSON by default.

0.0.9 (2019-10-04)
-------------------

- Added StrictConfiguration, which disables additional properties by default.
- Minor fixes.

0.0.8 (2019-09-19)
-------------------

- Fixed bug in get_argument_to_typevar.
- Added new property type for configurations, MapProperty, which behaves like a dict from
  strings to some sub-property type.
- Configurations now support: validation of additional properties, initialisation by value
  or JSON, programmatically getting/setting additional properties.

0.0.7 (2019-09-18)
-------------------

- Added meta package for typing functionality.

0.0.6 (2019-09-17)
-------------------

- Fixed bug where Absent was being validated after Property.validate_value had checked
  it, and therefore failing.

0.0.5 (2019-09-17)
-------------------

- Added interfaces for serialising/deserialising JSON using custom representations.
- Added exception package to meta package for processing exceptions. Currently only
  contains ExceptionChainer, which captures exceptions as a context-manager and then
  provides methods for processing them.
- Added utility interface JSONValidatedBiserialisable.
- Refactored configurations and properties to be more understandable.
- Added AnyOfProperty.

0.0.4 (2019-09-13)
-------------------

- Two new iterable functions, all_meet_predicate and any_meets_predicate.
- Added meta-functions for determining if methods in base-classes have been overridden
  by sub-classes.
- Rejigged abc package.
- Added JSON package, with tools for working with JSON and JSONSchema. Also specifies the
  configuration class, which allows for easy manipulation of JSON files in an object-oriented
  manner.

0.0.3 (2019-08-30)
-------------------

- Added load_dir function to file package, which can load all files in a directory.
- Added is_hashable to test if an object is hashable.
- Added Interval class representing intervals on the number line.
- Added exception InvalidStateError for classes that get into an invalid setup.
- Added typing module for type-related functionality.
- Added first, which finds the first element of an iterable to match a predicate.
- Added statistics package with quartile functions.
- Added random, which returns the elements of an iterator in random order.
- Added meta package, with functions to set and retrieve arbitrary meta-data against
  objects.
- Added ConstantIterator class, which returns the same value over and over again.
- Added metadata module to iterate, for working with metadata in iterables of objects.
- Modified TwoWayDict so type-inference works with Python-3.7.

0.0.2 (2019-08-09)
-------------------

- Removed restriction that switch only work with enums. Now can switch on any type.
  Onus is on the user to handle modifications of the switched value during switching.
- Added **abc** package, with utilities for working with abstract classes/methods.
- Added **decorator** package, with custom decorators.

0.0.1 (2019-08-09)
-------------------

- Initial release