nested-diff
Advanced tools
@@ -23,3 +23,3 @@ # Copyright 2018-2025 Michael Samoglyadov | ||
| __version__ = '1.7.1' | ||
| __version__ = '1.8.0' | ||
| __author__ = 'Michael Samoglyadov' | ||
@@ -26,0 +26,0 @@ __license__ = 'Apache License, Version 2.0' |
+38
-0
@@ -453,2 +453,40 @@ # Copyright 2019-2024 Michael Samoglyadov | ||
| class PprintDumper(Dumper): | ||
| """Pprint dumper.""" | ||
| def __init__(self, **kwargs): | ||
| """Initialize dumper.""" | ||
| super().__init__() | ||
| import pprint | ||
| self.codec = pprint.PrettyPrinter(**self.get_opts(kwargs)) | ||
| def encode(self, data): | ||
| """Encode data as pprint does.""" | ||
| return self.codec.pformat(data) | ||
| @staticmethod | ||
| def get_opts(opts): | ||
| """Extend options by default values. | ||
| Args: | ||
| opts: Kwargs for pprint.PrettyPrinter as dict. | ||
| Returns: | ||
| Options extended by default values. | ||
| """ | ||
| defaults = { | ||
| 'indent': 1, | ||
| 'width': 80, | ||
| 'depth': None, | ||
| 'compact': True, | ||
| 'sort_dicts': True, | ||
| } | ||
| defaults.update(opts) | ||
| return defaults | ||
| class TomlDumper(Dumper): | ||
@@ -455,0 +493,0 @@ """TOML dumper.""" |
@@ -20,2 +20,3 @@ # Copyright 2019-2024 Michael Samoglyadov | ||
| import sys | ||
| import warnings | ||
@@ -152,7 +153,8 @@ import nested_diff | ||
| '--values', | ||
| choices=('repr', 'none', 'json', 'yaml'), | ||
| choices=('repr', 'none', 'json', 'pprint', 'yaml'), | ||
| default='repr', | ||
| help='values format; "none" means no values printed, "repr" is a ' | ||
| 'python representation of the object, rest are themselves; default' | ||
| ' is "%(default)s"', | ||
| ' is "%(default)s". NOTE: yaml is deprecated here due to explicit' | ||
| ' ends for scalar values in yaml v1.2', | ||
| ) | ||
@@ -337,3 +339,13 @@ | ||
| self.__val_encoder = nested_diff.cli.JsonDumper(indent=2) | ||
| elif values == 'pprint': | ||
| self.__val_encoder = nested_diff.cli.PprintDumper() | ||
| elif values == 'yaml': | ||
| warnings.warn( | ||
| ( | ||
| 'YAML as diff values formatter is deprecated and' | ||
| ' will be removed soon' | ||
| ), | ||
| FutureWarning, | ||
| stacklevel=3, | ||
| ) | ||
| self.__val_encoder = nested_diff.cli.YamlDumper( | ||
@@ -340,0 +352,0 @@ explicit_start=False, |
@@ -60,3 +60,3 @@ # Copyright 2019-2024 Michael Samoglyadov | ||
| self.key_prefix = {key: '' for key in self.key_line_prefix} | ||
| self.key_prefix = dict.fromkeys(self.key_line_prefix, '') | ||
| self.key_suffix = self.key_prefix.copy() | ||
@@ -71,3 +71,3 @@ | ||
| self.val_prefix = {key: '' for key in self.val_line_prefix} | ||
| self.val_prefix = dict.fromkeys(self.val_line_prefix, '') | ||
| self.val_suffix = self.val_prefix.copy() | ||
@@ -391,12 +391,12 @@ | ||
| self.key_line_prefix['A'] = f"\x1b[1;32m{self.key_line_prefix['A']}" | ||
| self.key_line_prefix['R'] = f"\x1b[1;31m{self.key_line_prefix['R']}" | ||
| self.key_line_prefix['A'] = f'\x1b[1;32m{self.key_line_prefix["A"]}' | ||
| self.key_line_prefix['R'] = f'\x1b[1;31m{self.key_line_prefix["R"]}' | ||
| self.val_line_prefix['A'] = f"\x1b[32m{self.val_line_prefix['A']}" | ||
| self.val_line_prefix['C'] = f"\x1b[34m{self.val_line_prefix['C']}" | ||
| self.val_line_prefix['E'] = f"\x1b[34m{self.val_line_prefix['E']}" | ||
| self.val_line_prefix['H'] = f"\x1b[35m{self.val_line_prefix['H']}" | ||
| self.val_line_prefix['N'] = f"\x1b[32m{self.val_line_prefix['N']}" | ||
| self.val_line_prefix['O'] = f"\x1b[31m{self.val_line_prefix['O']}" | ||
| self.val_line_prefix['R'] = f"\x1b[31m{self.val_line_prefix['R']}" | ||
| self.val_line_prefix['A'] = f'\x1b[32m{self.val_line_prefix["A"]}' | ||
| self.val_line_prefix['C'] = f'\x1b[34m{self.val_line_prefix["C"]}' | ||
| self.val_line_prefix['E'] = f'\x1b[34m{self.val_line_prefix["E"]}' | ||
| self.val_line_prefix['H'] = f'\x1b[35m{self.val_line_prefix["H"]}' | ||
| self.val_line_prefix['N'] = f'\x1b[32m{self.val_line_prefix["N"]}' | ||
| self.val_line_prefix['O'] = f'\x1b[31m{self.val_line_prefix["O"]}' | ||
| self.val_line_prefix['R'] = f'\x1b[31m{self.val_line_prefix["R"]}' | ||
@@ -403,0 +403,0 @@ @staticmethod |
+2
-2
| Metadata-Version: 2.4 | ||
| Name: nested_diff | ||
| Version: 1.7.1 | ||
| Version: 1.8.0 | ||
| Summary: Recursive diff and patch for nested structures. | ||
@@ -40,3 +40,3 @@ Keywords: diff,nested-diff,recursive-diff,nested-data,data-structures | ||
| Requires-Dist: pytest-ruff ; extra == "test" | ||
| Requires-Dist: ruff==0.8.2 ; extra == "test" | ||
| Requires-Dist: ruff==0.11.13 ; extra == "test" | ||
| Project-URL: Homepage, https://github.com/mr-mixas/Nested-Diff.py | ||
@@ -43,0 +43,0 @@ Project-URL: Repository, https://github.com/mr-mixas/Nested-Diff.py.git |
+1
-2
@@ -59,3 +59,3 @@ [build-system] | ||
| 'pytest-ruff', | ||
| 'ruff==0.8.2', | ||
| 'ruff==0.11.13', | ||
| ] | ||
@@ -74,3 +74,2 @@ | ||
| '--cov=nested_diff', | ||
| '--cov-fail-under=99', | ||
| '--cov-report=term-missing', | ||
@@ -77,0 +76,0 @@ '--no-cov-on-fail', |
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
100668
1.35%2055
1.93%