Changelog#
All notable changes to the dictIO project will be documented in this file.
The changelog format is based on Keep a Changelog.
Unreleased#
-/-
0.3.3 - 2024-02-21#
Hotfix#
corrected name of cli script (wrong: dictIO correct: dictParser)
0.3.2 - 2024-02-21#
Added#
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.
Removed#
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.
Changed#
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
Dependencies#
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#
Solved a bug that led to single character references not being identified (solves #14).
0.3.0 - 2024-01-08#
Changed#
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.
Dependencies#
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#
Dependencies#
Updated dependencies to latest versions
0.2.8 - 2023-06-22#
Changed#
Modularized GitHub workflows
Changed default Python version in GitHub workflows from 3.10 to 3.11
Dependencies#
requirements-dev.txt: Updated dependencies to latest versions
0.2.7 - 2023-05-04#
Changed#
dependencies: updated dependencies to latest versions
ruff: added rule-set “B” (flake8-bugbear)
0.2.6 - 2023-01-11#
Changed#
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#
Changed#
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#
Added a batch file ‘qa.bat’ in root folder to ease local execution of code quality checks
0.2.4 - 2022-12-12#
Changed#
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#
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#
Changed#
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#
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#
Added#
JsonParser: JsonParser now supports the usage of references and expressions, similar to the CppParser.
0.2.1 - 2022-10-13#
Solved#
XmlParser: Solved a bug where default namespaces in an XML file would not be parsed correctly.
0.2.0 - 2022-09-29#
Added#
dictIO.utils.path.py: Added two new functions
highest_common_root_folder(paths)
relative_path(from_path, to_path)
Changed#
Replaced usages of pathlib.Path.resolve_to() with dictIO.utils.path.relative_path()
Removed#
dictIO.utils.path.py: Removed obsolete function silent_remove()
0.1.2 - 2022-09-27#
Solved#
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#
Added#
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#
Changed#
Simplified imports from namespace dictIO. Example:
Old (<= v0.0.22):
from dictIO.dictParser import DictParser
New:
from dictIO import DictParser
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.
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.
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.
dictWriter.py
DictWriter.write()
Changed default of ‘mode’ argument from ‘w’ (overwrite) to ‘a’ (append)
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).
0.0.22 - 2022-05-09#
First public release
0.0.17 - 2022-02-14#
Added#
Added support for Python 3.10