Skip to content

Changelog

This project adheres to Semantic Versioning and Keep a Changelog format.

  • Renamed FutureYAMLConfigManager to YAMLConfigManager (the "future" is now!)
  • FutureYAMLConfigManager is still available as a deprecated alias with a warning (will be removed in v1.1.0)
  • Migrated packaging from setup.py to pyproject.toml with hatchling build backend
  • Switched linting/formatting from black/isort to ruff
  • Updated CI workflows to latest GitHub Actions versions (checkout v4, setup-python v5)
  • Added macOS to test matrix
  • Use importlib.metadata for version discovery instead of hardcoded _version.py
  • Requires Python >=3.10
  • Simplified dependencies
  • Removed deprecated code (IK constant, _warn_deprecated function)
  • Removed deprecated properties (alias_dict, _raw_alias_dict)
  • jsonschema validation
  • attmap support
  • Legacy packaging files (setup.py, MANIFEST.in, requirements/)
  • Python 3.13 support
  • Missing import for urlopen from urllib.request
  • Missing import for Mapping from collections.abc
  • Deprecated Python < 3.7 compatibility code
  • New FutureYAMLConfigManager object, prep for v1.
  • Improved file locking system with read_lock and write_lock context managers
  • New from_x object construction API.
  • new functionality for handling names of config files
  • bugs with selecting a config file
  • bug with exiting Python on system interrupt
  • .priority_get() function on YAMLConfigManager object

This is a transition release that is compatible with the 0.X series, and also provides new capability from 1.0, which will not be backwards-compatible

  • new YAMLConfigManager object, to replace YacAttMap, which will be the new interface in 1.0.
  • a bug that prevented writing a readonly file to an external path
  • removed use2to3 for compatibility with setuptools upgrade.
  • if file is empty, initialize its contents to an empty dict, which prevents failure
  • check for previously applied path to yaml.SafeLoader before patching
  • Clarified message for __internal key.
  • jsonschema validation support. The YacAttMap contents can be validated when object is constructed and on every call to the write method
  • __internal key in YacAttMap object, which stores a attamp.AttMap of meta attributes. __internal can be accessed in clients as: yacman.IK
  • use of the following properties, which should be accessed via __internal key from now on:
    • YacAttMap.file_path
    • YacAttMap.writable
  • environment variables expansion in provided paths in select_config function
  • issues with locking nonexistent files; #41
  • AliasedYacAttMap class that supports top-level key aliases
  • improved file locking
  • possibility to provide a file path as entries in the YacAttMap constructor
  • extended lock wait time and the frequency of checks
  • drop Python 2 support
  • a problem with file locking after other process unlocked it before the timeout
  • load_yaml function can accommodate URLs.
  • possibility to use YacAttMap in a context manager even if it was not read from a file, but a file path attribute has been set
  • context manager functionality to YacAttMap class
  • method name: unlock to make_readonly
  • make_writable behavior: it re-reads the source file now
  • distribute license file with the package
  • silent lock creation failures in case the lock directory does not exist; #24
  • YacAttMap properties: file_path and writable
  • in select_config always use default config file path when no valid path is determined
  • strict_env argument to the select_config function
  • in select_config use the default_config_filepath even if no config_env_vars were specified
  • add support for multi-user context operation
  • writable argument to create the object in a read-only or writable mode
  • wait_max argument to specify the wait time for the lock before raising a RuntimeError
  • unlock method
  • make_writable method
  • entries argument accepting a file path becomes deprecated and throws a DeprecationWarning and will be removed altogether in the future release
  • Force all indexes to be strings (not floats or ints).
  • Allow providing a yaml string to constructor.
  • Improve constructor to allow either a dict or a filepath
  • Make printing prettier
  • Parameterize existence check for select_config.
  • Parameterize behavior when select_config filepath argument does not exist.
  • Fix bug when building a YacAttMap with a filepath in Python 2.7: Issue 6
  • Defer exception handling from load_yaml to client code.
  • Allow a YacAttMap to remember its own path so it can use write without an argument.
  • Changed select_load to just select so you load on your own.
  • Fixed packaging bug
  • First functional public release of yacman.