All notable changes to the dictIO project will be documented in this file.
The changelog format is based on Keep a Changelog.
- Updated to download-artifact@v4 (from download-artifact@v3)
- GitHub workflows: Replaced pip install tox with pip install tox-uv
- GitHub workflows: Removed cache: 'pip' for tox-uv compatibility
- GitHub workflows: Install dependencies: change singleline run statements to multiline run statements
- GitHub workflows: Add step to install 'uv' package
- GitHub workflows: Add step to install 'uv' package
- GitHub workflows: Install dependencies: change from 'pip install' to 'uv pip install'
- GitHub workflow _test_future.yml : updated Python version to 3.13.0-alpha - 3.13.0
- GitHub workflow _test_future.yml : updated name of test job to 'test313'
- updated to ruff==0.5.1 (from ruff==0.4.2)
- updated to pyright==1.1.371 (from pyright==1.1.360)
- updated to setup-python@v5 (from setup-python@v4)
- updated to actions-gh-pages@v4 (from actions-gh-pages@v3)
- updated to upload-artifact@v4 (from upload-artifact@v3)
- updated to black[jupyter]==24.4 (from black[jupyter]==23.12)
- updated to version: '==24.4' (from version: '==23.12')
- updated to sourcery==1.21 (from sourcery==1.16)
- updated to checkout@v4 (from checkout@v3)
0.3.4 - 2024-05-22
- updated to ruff==0.4.2 (from ruff==0.2.1)
- updated to pyright==1.1.360 (from pyright==1.1.350)
- updated to sourcery==1.16 (from sourcery==1.15)
- updated to lxml>=5.2 (from lxml>=5.1)
- updated to types-lxml>=2024.4 (from types-lxml>=5.1)
- updated to pytest>=8.2 (from pytest>=7.4)
- updated to pytest-cov>=5.0 (from pytest-cov>=4.1)
- updated to Sphinx>=7.3 (from Sphinx>=7.2)
- updated to sphinx-argparse-cli>=1.15 (from sphinx-argparse-cli>=1.11)
- updated to myst-parser>=3.0 (from myst-parser>=2.0)
- updated to furo>=2024.4 (from furo>=2023.9.10)
- updated to numpy>=1.26,<2.0 (from numpy>=1.26)
- removed black
- replaced black formatter with ruff formatter
- Changed publishing workflow to use OpenID Connect (Trusted Publisher Management) when publishing to PyPI
- Updated copyright statement
- VS Code settings: Turned off automatic venv activation
0.3.3 - 2024-02-21
- corrected name of cli script (wrong: dictIO correct: dictParser)
0.3.2 - 2024-02-21
- README.md : Under
Development Setup
, added a step to install current package in "editable" mode, using the pip install -e option. This removes the need to manually add /src to the PythonPath environment variable in order for debugging and tests to work.
- VS Code settings: Removed the setting which added the /src folder to PythonPath. This is no longer necessary. Installing the project itself as a package in "editable" mode, using the pip install -e option, solves the issue and removes the need to manually add /src to the PythonPath environment variable.
- Moved all project configuration from setup.cfg to pyproject.toml
- Moved all tox configuration from setup.cfg to tox.ini.
- Moved pytest configuration from pyproject.toml to pytest.ini
- Deleted setup.cfg
- updated to black[jupyter]==24.1 (from black[jupyter]==23.12)
- updated to version: '==24.1' (from version: '==23.12')
- updated to ruff==0.2.1 (from ruff==0.1.8)
- updated to pyright==1.1.350 (from pyright==1.1.338)
- updated to sourcery==1.15 (from sourcery==1.14)
- updated to lxml>=5.1 (from lxml>=4.9)
0.3.1 - 2024-01-09
- Solved a bug that led to single character references not being identified (solves #14).
0.3.0 - 2024-01-08
- Enabled recognition of strings with nested quotes in it (solves #2)
- GitHub workflows: Included Python 3.12 release version as standard, and Python 3.13.0a2 as "future" test.
- updated to black[jupyter]==23.12 (from black[jupyter]==23.11)
- updated to ruff==0.1.8 (from ruff==0.1.6)
- updated to pyright==1.1.338 (from pyright==1.1.336)
0.2.9 - 2023-09-20
- Updated dependencies to latest versions
0.2.8 - 2023-06-22
- Modularized GitHub workflows
- Changed default Python version in GitHub workflows from 3.10 to 3.11
- requirements-dev.txt: Updated dependencies to latest versions
0.2.7 - 2023-05-04
- dependencies: updated dependencies to latest versions
- ruff: added rule-set "B" (flake8-bugbear)
0.2.6 - 2023-01-11
- Added missing DocStrings for public classes, methods and functions
- Changed links to package documentation to open README.html, not the default index page
0.2.5 - 2023-01-04
- Linter: Migrated from flake8 to ruff.
(Added ruff; removed flake8 and isort) - Adjusted GitHub CI workflow accordingly.
(Added ruff job; removed flake8 and isort jobs) - VS Code settings: Adjusted Pylance configuration
- Sphinx documentation: Rebuilt API documentation
- Added a batch file 'qa.bat' in root folder to ease local execution of code quality checks
0.2.4 - 2022-12-12
- Moved dev-only dependencies from requirements.txt to requirements-dev.txt
- dictIO/
__utils__
.py : ensured that imported symbols get also exported
(added "as" clause -> "from x import y as y" instead of only "from x import y") - Configured code quality tools flake8, black, isort, pyright
- Improved code quality, resolving all warnings and errors flagged by the configured code quality tools (flake8, black, isort, pyright, sourcery)
- Added support for selected numpy functions (diag, eye, ones, zeros)
which can now be used in expressions.
This is an experimental feature which might be removed or changed in future. - Added GitHub workflow 'main.yml' for continuous integration (runs all CI tasks except Sphinx)
- format checks: black, isort
- lint check: flake8, flake8-bugbear
- type check: pyright
- test: uses tox to run pytest on {Windows, Linux, MacOS} with {py39, py310}
- publish: publishing to PyPI (runs only on push of new tag vx.x.x, and after all other jobs succeeded)
- merge_to_release_branch: merge tagged commit to release branch (runs after publish)
0.2.3 - 2022-12-01
- Code formatting: Changed from yapf to black
- STYLEGUIDE.md : Adjusted to match black formatting
- VS Code settings: Updated to use black as formatter
- requirements.txt: Updated dependencies to their most recent versions
- GitHub actions (yml files): Updated following actions to their most recent versions:
- checkout@v1 -> checkout@v3
- setup-python@v2 -> setup-python@v4
- cache@v2 -> cache@v3
- Added sourcery configuration (.sourcery.yaml)
- Added py.typed file into the package root folder and included it setup.cfg as package_data
- Documentation: Included sub-package dictIO.utils in documentation
0.2.2 - 2022-11-08
- JsonParser: JsonParser now supports the usage of references and expressions, similar to the CppParser.
0.2.1 - 2022-10-13
- XmlParser: Solved a bug where default namespaces in an XML file would not be parsed correctly.
0.2.0 - 2022-09-29
- dictIO.utils.path.py: Added two new functions
- highest_common_root_folder(paths)
- relative_path(from_path, to_path)
- Replaced usages of pathlib.Path.resolve_to() with dictIO.utils.path.relative_path()
- dictIO.utils.path.py: Removed obsolete function silent_remove()
0.1.2 - 2022-09-27
-
XmlParser: Changed how empty XML nodes get parsed.
The value for an empty node is now saved as an empty dict, i.e. {}, instead of None. This change solves issue #4.
Problem was that None is not iterable, and code such as the following had caused an exception:if '_attributes' in my_parsed_xml_dict[node_key]: ...
because my_parsed_xml_dict[node_key] had been None.
Now, with the code change in place, my_parsed_xml_dict[node_key] would resolve to an empty dict ( {} ) instead of to None. As a dict is formally iterable (even when empty), querying code as above does no longer crash.
0.1.1 - 2022-08-19
- cppDict:
- Added method include(dict_to_include). This method adds an include directive for the passed in dict inside the dict the method is called on.
0.1.0 - 2022-05-28
-
Simplified imports from namespace dictIO. Example:
- Old (<= v0.0.22):
from dictIO.dictParser import DictParser
- New:
from dictIO import DictParser
- Old (<= v0.0.22):
-
parser.py
-
Parser.remove_quotes_from_string()
- Changed default of 'all' argument from True to False
This change was introduced in order to, by default, protect inner quotes in i.e. a farn filter expression "var in ['item1', 'item2']" from being removed.
- Changed default of 'all' argument from True to False
-
CppParser._parse_tokenized_dict()
- Changed implementation of the conditional code where a key value pair gets parsed.
This change was introduced in order to better identify invalid key value pairs.
Two invalid keys were added in test_parser_dict (section 'invalid') and a respective test was added.
- Changed implementation of the conditional code where a key value pair gets parsed.
-
-
formatter.py
- JsonFormatter.insert_includes()
- Changed correction of backslashes, so that backslashes in include paths are not substituted by forwardslashes but actually escaped in Json compliant way.
- JsonFormatter.insert_includes()
-
dictWriter.py
- DictWriter.write()
- Changed default of 'mode' argument from 'w' (overwrite) to 'a' (append)
- DictWriter.write()
-
utils\strings.py
- plural() function moved to farn package (-> moved into utils\logging.py module in farn)
It was moved since the plural() function is currently used in farn logging only (neither in dictIO nor in ospx).
- plural() function moved to farn package (-> moved into utils\logging.py module in farn)
0.0.22 - 2022-05-09
- First public release
0.0.17 - 2022-02-14
- Added support for Python 3.10