dir-content-diff 1.9.1__tar.gz → 1.11.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. dir_content_diff-1.11.0/.codespellrc +2 -0
  2. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.copier-answers.yml +1 -1
  3. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.github/workflows/commitlint.yml +3 -1
  4. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.github/workflows/run-tox.yml +1 -1
  5. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.pre-commit-config.yaml +6 -8
  6. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.pylintrc +1 -0
  7. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.readthedocs.yml +2 -2
  8. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/CHANGELOG.md +16 -0
  9. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/CONTRIBUTING.md +1 -1
  10. {dir_content_diff-1.9.1/dir_content_diff.egg-info → dir_content_diff-1.11.0}/PKG-INFO +2 -2
  11. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/dir_content_diff/__init__.py +16 -9
  12. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/dir_content_diff/base_comparators.py +13 -12
  13. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/dir_content_diff/comparators/morphio.py +1 -0
  14. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/dir_content_diff/comparators/pandas.py +1 -0
  15. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/dir_content_diff/comparators/voxcell.py +1 -0
  16. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/dir_content_diff/pytest_plugin.py +1 -0
  17. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/dir_content_diff/util.py +1 -0
  18. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0/dir_content_diff.egg-info}/PKG-INFO +2 -2
  19. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/dir_content_diff.egg-info/requires.txt +1 -1
  20. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/docs/source/conf.py +5 -4
  21. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/setup.py +2 -1
  22. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/tests/comparators/test_morphio.py +1 -0
  23. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/tests/comparators/test_pandas.py +1 -0
  24. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/tests/comparators/test_voxcell.py +1 -0
  25. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/tests/conftest.py +1 -0
  26. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/tests/generate_test_files.py +1 -0
  27. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/tests/test_base.py +37 -0
  28. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/tests/test_missing_deps.py +1 -0
  29. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/tests/test_pytest_plugin.py +1 -0
  30. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/tests/test_util.py +1 -0
  31. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/tests/test_version.py +1 -0
  32. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/tox.ini +4 -2
  33. dir_content_diff-1.9.1/.codespellrc +0 -2
  34. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.auto-changelog +0 -0
  35. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.auto-changelog-template.hbs +0 -0
  36. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.codespellignorelines +0 -0
  37. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.coveragerc +0 -0
  38. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.coveragerc_min_versions +0 -0
  39. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.flake8 +0 -0
  40. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.gitattributes +0 -0
  41. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  42. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  43. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  44. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.github/ISSUE_TEMPLATE/how_to_use.yaml +0 -0
  45. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.github/dependabot.yml +0 -0
  46. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.github/pull_request_template.md +0 -0
  47. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.github/workflows/publish-sdist.yml +0 -0
  48. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.gitignore +0 -0
  49. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/.gitreview +0 -0
  50. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/AUTHORS.md +0 -0
  51. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/LICENSE.txt +0 -0
  52. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/MANIFEST.in +0 -0
  53. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/README.md +0 -0
  54. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/codecov.yml +0 -0
  55. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/commitlint.config.js +0 -0
  56. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/dir_content_diff/comparators/__init__.py +0 -0
  57. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/dir_content_diff/comparators/dependencies.json +0 -0
  58. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/dir_content_diff.egg-info/SOURCES.txt +0 -0
  59. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/dir_content_diff.egg-info/dependency_links.txt +0 -0
  60. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/dir_content_diff.egg-info/entry_points.txt +0 -0
  61. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/dir_content_diff.egg-info/top_level.txt +0 -0
  62. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/docs/Makefile +0 -0
  63. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/docs/source/.gitignore +0 -0
  64. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/docs/source/api_ref.rst +0 -0
  65. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/docs/source/changelog.rst +0 -0
  66. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/docs/source/contributing.rst +0 -0
  67. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/docs/source/index.rst +0 -0
  68. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/package.json +0 -0
  69. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/pyproject.toml +0 -0
  70. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/setup.cfg +0 -0
  71. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/tests/__init__.py +0 -0
  72. {dir_content_diff-1.9.1 → dir_content_diff-1.11.0}/tests/comparators/__init__.py +0 -0
@@ -0,0 +1,2 @@
1
+ [codespell]
2
+ skip = .git/*,*.pdf
@@ -1,6 +1,6 @@
1
1
  # Changes here will be overwritten by Copier
2
2
 
3
- _commit: 0.1.54
3
+ _commit: 0.1.67
4
4
  _src_path: git@bbpgitlab.epfl.ch:neuromath/python-template.git
5
5
  author_email: ''
6
6
  author_name: Blue Brain Project, EPFL
@@ -8,6 +8,8 @@ jobs:
8
8
  check-pr-title:
9
9
  name: Check PR title
10
10
  runs-on: ubuntu-latest
11
+ env:
12
+ PR_TITLE: ${{ github.event.pull_request.title }}
11
13
  steps:
12
14
  - uses: actions/checkout@v4
13
15
  - uses: actions/setup-node@v4
@@ -16,4 +18,4 @@ jobs:
16
18
  - run: npm install -g --force commitlint @commitlint/cli commitlint-plugin-cleanfeet
17
19
  - run: npm install conventional-changelog-conventionalcommits
18
20
  - run: touch .git/COMMIT_EDITMSG
19
- - run: echo "${{ github.event.pull_request.title }}" | commitlint
21
+ - run: echo "$PR_TITLE" | commitlint
@@ -59,7 +59,7 @@ jobs:
59
59
  pip install tox
60
60
  tox run -e min_versions
61
61
  - name: JUnit Report Action
62
- uses: mikepenz/action-junit-report@v4
62
+ uses: mikepenz/action-junit-report@v5
63
63
  if: always() # always run even if the previous step fails
64
64
  with:
65
65
  report_paths: 'reports/pytest-*.xml'
@@ -1,8 +1,6 @@
1
- default_language_version:
2
- python: python3.10
3
1
  repos:
4
2
  - repo: https://github.com/pre-commit/pre-commit-hooks
5
- rev: v4.4.0
3
+ rev: v5.0.0
6
4
  hooks:
7
5
  - id: check-added-large-files
8
6
  - id: check-case-conflict
@@ -13,22 +11,22 @@ repos:
13
11
  - id: end-of-file-fixer
14
12
  - id: trailing-whitespace
15
13
  - repo: https://github.com/alessandrojcm/commitlint-pre-commit-hook
16
- rev: v9.5.0
14
+ rev: v9.18.0
17
15
  hooks:
18
16
  - id: commitlint
19
17
  stages:
20
18
  - commit-msg
21
19
  additional_dependencies: ['conventional-changelog-conventionalcommits']
22
20
  - repo: https://github.com/pycqa/isort
23
- rev: 5.12.0
21
+ rev: 5.13.2
24
22
  hooks:
25
23
  - id: isort
26
24
  - repo: https://github.com/psf/black
27
- rev: 23.9.1
25
+ rev: 24.10.0
28
26
  hooks:
29
27
  - id: black
30
28
  - repo: https://github.com/codespell-project/codespell
31
- rev: v2.2.5
29
+ rev: v2.3.0
32
30
  hooks:
33
31
  - id: codespell
34
32
  args: ["-x", ".codespellignorelines"]
@@ -38,6 +36,6 @@ repos:
38
36
  - id: pydocstyle
39
37
  additional_dependencies: ["tomli"]
40
38
  - repo: https://github.com/PyCQA/flake8
41
- rev: 6.1.0
39
+ rev: 7.1.1
42
40
  hooks:
43
41
  - id: flake8
@@ -3,6 +3,7 @@ disable=
3
3
  arguments-differ,
4
4
  invalid-name,
5
5
  too-many-lines,
6
+ too-many-positional-arguments
6
7
 
7
8
  [FORMAT]
8
9
  # Regexp for a line that is allowed to be longer than the limit.
@@ -6,9 +6,9 @@
6
6
  version: 2
7
7
 
8
8
  build:
9
- os: ubuntu-20.04
9
+ os: ubuntu-22.04
10
10
  tools:
11
- python: "3.9"
11
+ python: "3.11"
12
12
 
13
13
  sphinx:
14
14
  configuration: docs/source/conf.py
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.11.0](https://github.com/BlueBrain/dir-content-diff/compare/1.10.0..1.11.0)
4
+
5
+ > 6 November 2024
6
+
7
+ ### Build
8
+
9
+ - Drop support for Python 3.8 (dependabot[bot] - [#66](https://github.com/BlueBrain/dir-content-diff/pull/66))
10
+
11
+ ## [1.10.0](https://github.com/BlueBrain/dir-content-diff/compare/1.9.1..1.10.0)
12
+
13
+ > 10 September 2024
14
+
15
+ ### New Features
16
+
17
+ - Add parameters for load and save methods of base comparators (Adrien Berchet - [#64](https://github.com/BlueBrain/dir-content-diff/pull/64))
18
+
3
19
  ## [1.9.1](https://github.com/BlueBrain/dir-content-diff/compare/1.9.0..1.9.1)
4
20
 
5
21
  > 29 August 2024
@@ -59,7 +59,7 @@ When you wish to contribute to the code base, please consider the following guid
59
59
  or
60
60
 
61
61
  ```shell
62
- tox -e py310 -e lint -e docs -e check-packaging
62
+ tox run -e py39,lint,docs,check-packaging
63
63
  ```
64
64
 
65
65
  * Commit your changes using a descriptive commit message.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dir-content-diff
3
- Version: 1.9.1
3
+ Version: 1.11.0
4
4
  Summary: Simple tool to compare directory contents.
5
5
  Home-page: https://dir-content-diff.readthedocs.io
6
6
  Author: Blue Brain Project, EPFL
@@ -46,7 +46,7 @@ Requires-Dist: rst2pdf>=0.99; extra == "test"
46
46
  Requires-Dist: packaging>=20; extra == "test"
47
47
  Requires-Dist: pandas>=1.4; extra == "test"
48
48
  Requires-Dist: pytest>=6.2; extra == "test"
49
- Requires-Dist: pytest-html<4,>=2; extra == "test"
49
+ Requires-Dist: pytest-html>=3.2; extra == "test"
50
50
  Provides-Extra: pandas
51
51
  Requires-Dist: pandas>=1.4; extra == "pandas"
52
52
  Requires-Dist: pyarrow>=11; extra == "pandas"
@@ -2,6 +2,7 @@
2
2
 
3
3
  Simple tool to compare directory contents.
4
4
  """
5
+
5
6
  import copy
6
7
  import importlib.metadata
7
8
  import re
@@ -176,18 +177,22 @@ def export_formatted_file(file, formatted_file, comparator, **kwargs):
176
177
  file,
177
178
  **kwargs.get(
178
179
  "load_kwargs",
179
- comparator._default_load_kwargs
180
- if hasattr(comparator, "_default_load_kwargs")
181
- else {},
180
+ (
181
+ comparator._default_load_kwargs
182
+ if hasattr(comparator, "_default_load_kwargs")
183
+ else {}
184
+ ),
182
185
  ),
183
186
  )
184
187
  formatted_data = comparator.format_data(
185
188
  data,
186
189
  **kwargs.get(
187
190
  "format_data_kwargs",
188
- comparator._default_format_data_kwargs
189
- if hasattr(comparator, "_default_format_data_kwargs")
190
- else {},
191
+ (
192
+ comparator._default_format_data_kwargs
193
+ if hasattr(comparator, "_default_format_data_kwargs")
194
+ else {}
195
+ ),
191
196
  ),
192
197
  )
193
198
  Path(formatted_file).parent.mkdir(parents=True, exist_ok=True)
@@ -196,9 +201,11 @@ def export_formatted_file(file, formatted_file, comparator, **kwargs):
196
201
  formatted_file,
197
202
  **kwargs.get(
198
203
  "save_kwargs",
199
- comparator._default_save_kwargs
200
- if hasattr(comparator, "_default_save_kwargs")
201
- else {},
204
+ (
205
+ comparator._default_save_kwargs
206
+ if hasattr(comparator, "_default_save_kwargs")
207
+ else {}
208
+ ),
202
209
  ),
203
210
  )
204
211
  else:
@@ -1,4 +1,5 @@
1
1
  """Module containing the base comparators."""
2
+
2
3
  import configparser
3
4
  import filecmp
4
5
  import json
@@ -406,16 +407,16 @@ class JsonComparator(DictComparator):
406
407
  This comparator is based on the :class:`DictComparator` and uses the same parameters.
407
408
  """
408
409
 
409
- def load(self, path):
410
+ def load(self, path, **kwargs):
410
411
  """Open a JSON file."""
411
412
  with open(path) as file: # pylint: disable=unspecified-encoding
412
- data = json.load(file)
413
+ data = json.load(file, **kwargs)
413
414
  return data
414
415
 
415
- def save(self, data, path):
416
+ def save(self, data, path, **kwargs):
416
417
  """Save formatted data into a JSON file."""
417
418
  with open(path, "w", encoding="utf-8") as file:
418
- json.dump(data, file)
419
+ json.dump(data, file, **kwargs)
419
420
 
420
421
 
421
422
  class YamlComparator(DictComparator):
@@ -424,16 +425,16 @@ class YamlComparator(DictComparator):
424
425
  This comparator is based on the :class:`DictComparator` and uses the same parameters.
425
426
  """
426
427
 
427
- def load(self, path):
428
+ def load(self, path, **kwargs):
428
429
  """Open a YAML file."""
429
430
  with open(path) as file: # pylint: disable=unspecified-encoding
430
- data = yaml.full_load(file)
431
+ data = yaml.full_load(file, **kwargs)
431
432
  return data
432
433
 
433
- def save(self, data, path):
434
+ def save(self, data, path, **kwargs):
434
435
  """Save formatted data into a YAML file."""
435
436
  with open(path, "w", encoding="utf-8") as file:
436
- yaml.dump(data, file)
437
+ yaml.dump(data, file, **kwargs)
437
438
 
438
439
 
439
440
  class XmlComparator(DictComparator):
@@ -468,10 +469,10 @@ class XmlComparator(DictComparator):
468
469
  data = self.xmltodict(file.read())
469
470
  return data
470
471
 
471
- def save(self, data, path):
472
+ def save(self, data, path, root=False, **kwargs):
472
473
  """Save formatted data into a XML file."""
473
474
  with open(path, "w", encoding="utf-8") as file:
474
- file.write(dicttoxml(data["root"]).decode())
475
+ file.write(dicttoxml(data, root=root, **kwargs).decode())
475
476
 
476
477
  @staticmethod
477
478
  def _cast_from_attribute(text, attr):
@@ -544,10 +545,10 @@ class IniComparator(DictComparator):
544
545
  data.read(path)
545
546
  return self.configparser_to_dict(data)
546
547
 
547
- def save(self, data, path):
548
+ def save(self, data, path, **kwargs):
548
549
  """Save formatted data into a INI file."""
549
550
  with open(path, "w", encoding="utf-8") as file:
550
- self.dict_to_configparser(data).write(file)
551
+ self.dict_to_configparser(data, **kwargs).write(file)
551
552
 
552
553
  @staticmethod
553
554
  def configparser_to_dict(config):
@@ -1,4 +1,5 @@
1
1
  """Extension module to process morphology files with MorphIO and morph-tool."""
2
+
2
3
  from dir_content_diff import register_comparator
3
4
  from dir_content_diff.base_comparators import BaseComparator
4
5
  from dir_content_diff.util import import_error_message
@@ -1,4 +1,5 @@
1
1
  """Extension module to process files with Pandas."""
2
+
2
3
  from dir_content_diff import register_comparator
3
4
  from dir_content_diff.base_comparators import BaseComparator
4
5
  from dir_content_diff.util import import_error_message
@@ -1,4 +1,5 @@
1
1
  """Extension module to process files with Voxcell."""
2
+
2
3
  from dir_content_diff import register_comparator
3
4
  from dir_content_diff.base_comparators import BaseComparator
4
5
  from dir_content_diff.comparators.pandas import DataframeComparator
@@ -11,6 +11,7 @@ When this feature is triggered, the files that are processed by a comparator wit
11
11
  capability will be formatted and exported to a directory whose name is built from the compared
12
12
  directory with a suffix added. The default suffix is ``_FORMATTED`` and can be customized.
13
13
  """
14
+
14
15
  from dir_content_diff import _DEFAULT_EXPORT_SUFFIX
15
16
  from dir_content_diff import assert_equal_trees
16
17
 
@@ -1,4 +1,5 @@
1
1
  """Some utils used by the ``dir-content-diff`` package."""
2
+
2
3
  import importlib.resources
3
4
  import json
4
5
  import logging
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dir-content-diff
3
- Version: 1.9.1
3
+ Version: 1.11.0
4
4
  Summary: Simple tool to compare directory contents.
5
5
  Home-page: https://dir-content-diff.readthedocs.io
6
6
  Author: Blue Brain Project, EPFL
@@ -46,7 +46,7 @@ Requires-Dist: rst2pdf>=0.99; extra == "test"
46
46
  Requires-Dist: packaging>=20; extra == "test"
47
47
  Requires-Dist: pandas>=1.4; extra == "test"
48
48
  Requires-Dist: pytest>=6.2; extra == "test"
49
- Requires-Dist: pytest-html<4,>=2; extra == "test"
49
+ Requires-Dist: pytest-html>=3.2; extra == "test"
50
50
  Provides-Extra: pandas
51
51
  Requires-Dist: pandas>=1.4; extra == "pandas"
52
52
  Requires-Dist: pyarrow>=11; extra == "pandas"
@@ -35,7 +35,7 @@ rst2pdf>=0.99
35
35
  packaging>=20
36
36
  pandas>=1.4
37
37
  pytest>=6.2
38
- pytest-html<4,>=2
38
+ pytest-html>=3.2
39
39
 
40
40
  [voxcell]
41
41
  voxcell>=3.1.1
@@ -14,10 +14,11 @@ from importlib import metadata
14
14
 
15
15
  # -- Project information -----------------------------------------------------
16
16
 
17
- project = "Directory Content Difference"
17
+ project_name = "Directory Content Difference"
18
+ package_name = "dir-content-diff"
18
19
 
19
20
  # The short X.Y version
20
- version = metadata.version("dir-content-diff")
21
+ version = metadata.version(package_name)
21
22
 
22
23
  # The full version, including alpha/beta/rc tags
23
24
  release = version
@@ -61,10 +62,10 @@ html_theme = "sphinx-bluebrain-theme"
61
62
  # html_static_path = ['_static']
62
63
 
63
64
  html_theme_options = {
64
- "metadata_distribution": "dir-content-diff",
65
+ "metadata_distribution": package_name,
65
66
  }
66
67
 
67
- html_title = project
68
+ html_title = project_name
68
69
 
69
70
  # If true, links to the reST sources are added to the pages.
70
71
  html_show_sourcelink = False
@@ -1,4 +1,5 @@
1
1
  """Setup for the dir-content-diff package."""
2
+
2
3
  import json
3
4
  from pathlib import Path
4
5
 
@@ -33,7 +34,7 @@ test_reqs = [
33
34
  "packaging>=20",
34
35
  "pandas>=1.4",
35
36
  "pytest>=6.2",
36
- "pytest-html>=2,<4",
37
+ "pytest-html>=3.2",
37
38
  ]
38
39
 
39
40
  setup(
@@ -1,4 +1,5 @@
1
1
  """Test the MorphIO extensions of the ``dir-content-diff`` package."""
2
+
2
3
  # pylint: disable=redefined-outer-name
3
4
  # pylint: disable=unused-argument
4
5
  import re
@@ -1,4 +1,5 @@
1
1
  """Test the Pandas extension of the ``dir-content-diff`` package."""
2
+
2
3
  # pylint: disable=missing-function-docstring
3
4
  # pylint: disable=redefined-outer-name
4
5
  # pylint: disable=unused-argument
@@ -1,4 +1,5 @@
1
1
  """Test the Voxcell extension of the ``dir-content-diff`` package."""
2
+
2
3
  # pylint: disable=missing-function-docstring
3
4
  # pylint: disable=redefined-outer-name
4
5
  # pylint: disable=unused-argument
@@ -1,4 +1,5 @@
1
1
  """Configuration for the pytest test suite."""
2
+
2
3
  # pylint: disable=redefined-outer-name
3
4
  from pathlib import Path
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Function to create base files used for tests."""
2
+
2
3
  import configparser
3
4
  import copy
4
5
  import json
@@ -1,4 +1,5 @@
1
1
  """Test the base features of the ``dir-content-diff`` package."""
2
+
2
3
  # pylint: disable=missing-function-docstring
3
4
  # pylint: disable=redefined-outer-name
4
5
  # pylint: disable=unused-argument
@@ -410,9 +411,35 @@ class TestBaseComparator:
410
411
  assert kwargs_msg in no_report_diff_default
411
412
  assert no_report_diff_default.replace(kwargs_msg, "") == diff
412
413
 
414
+ @staticmethod
415
+ def common_test_load_save(tmp_path, comparator):
416
+ """Test load and save capabilities of the given comparator."""
417
+ initial_data = {
418
+ "a": {
419
+ "b": 1,
420
+ "c": [1, 2, 3],
421
+ "d": {
422
+ "test_str": "a str",
423
+ "test_int": 999,
424
+ },
425
+ }
426
+ }
427
+
428
+ initial_file = tmp_path / "initial_file.json"
429
+ comparator.save(initial_data, initial_file)
430
+
431
+ loaded_data = comparator.load(initial_file)
432
+
433
+ assert loaded_data == initial_data
434
+
413
435
  class TestJsonComparator:
414
436
  """Test the JSON comparator."""
415
437
 
438
+ def test_load_save(self, tmp_path):
439
+ """Test load and save capabilities of the comparator."""
440
+ comparator = dir_content_diff.JsonComparator()
441
+ TestBaseComparator.common_test_load_save(tmp_path, comparator)
442
+
416
443
  def test_format_data(self):
417
444
  """Test data formatting."""
418
445
  data = {
@@ -490,6 +517,11 @@ class TestBaseComparator:
490
517
  class TestXmlComparator:
491
518
  """Test the XML comparator."""
492
519
 
520
+ def test_load_save(self, tmp_path):
521
+ """Test load and save capabilities of the comparator."""
522
+ comparator = dir_content_diff.XmlComparator()
523
+ TestBaseComparator.common_test_load_save(tmp_path, comparator)
524
+
493
525
  def test_xmltodict(self):
494
526
  """Test all types of the xmltodict auto cast feature."""
495
527
  comparator = dir_content_diff.XmlComparator()
@@ -574,6 +606,11 @@ class TestBaseComparator:
574
606
  class TestIniComparator:
575
607
  """Test the INI comparator."""
576
608
 
609
+ def test_load_save(self, tmp_path):
610
+ """Test load and save capabilities of the comparator."""
611
+ comparator = dir_content_diff.IniComparator()
612
+ TestBaseComparator.common_test_load_save(tmp_path, comparator)
613
+
577
614
  def test_initodict(self, ref_tree):
578
615
  """Test conversion of INI files into dict."""
579
616
  data = configparser.ConfigParser()
@@ -1,4 +1,5 @@
1
1
  """Test comparators with missing deps."""
2
+
2
3
  import importlib
3
4
  from subprocess import run
4
5
 
@@ -1,4 +1,5 @@
1
1
  """Test the pytest plugin."""
2
+
2
3
  # pylint: disable=missing-function-docstring
3
4
  # pylint: disable=redefined-outer-name
4
5
  # pylint: disable=unused-argument
@@ -1,4 +1,5 @@
1
1
  """Test the ``dir-content-diff.util`` package."""
2
+
2
3
  import pytest
3
4
 
4
5
  import dir_content_diff.util
@@ -1,4 +1,5 @@
1
1
  """Test the version of the ``dir-content-diff`` package."""
2
+
2
3
  from importlib.metadata import version
3
4
 
4
5
  import dir_content_diff
@@ -30,6 +30,8 @@ commands =
30
30
  --html reports/pytest-{envname}.html \
31
31
  --junit-xml=reports/pytest-{envname}.xml \
32
32
  --self-contained-html \
33
+ --durations 10 \
34
+ --durations-min=2.0 \
33
35
  {posargs}
34
36
  coverage html -d reports/coverage-{envname}
35
37
  coverage xml -o reports/coverage-{envname}.xml
@@ -101,6 +103,6 @@ commands = make html SPHINXOPTS=-W
101
103
  [gh-actions]
102
104
  python =
103
105
  3.9: py39, lint
104
- 3.10: py310, docs
105
- 3.11: py311, check-packaging
106
+ 3.10: py310, check-packaging
107
+ 3.11: py311, docs
106
108
  3.12: py312
@@ -1,2 +0,0 @@
1
- [codespell]
2
- skip = .git/*