Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3 tests fail #482

Open
yurivict opened this issue Sep 10, 2024 · 0 comments
Open

3 tests fail #482

yurivict opened this issue Sep 10, 2024 · 0 comments

Comments

@yurivict
Copy link

Please checkout the F.A.Q page before creating a bug ticket to make sure it is not already addressed.

Describe the bug

==================================================================================== test session starts ====================================================================================
platform freebsd14 -- Python 3.11.9, pytest-8.1.1, pluggy-1.5.0
Using --randomly-seed=3183454742
PyQt5 5.15.10 -- Qt runtime 5.15.14 -- Qt compiled 5.15.14
benchmark: 4.0.0 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
rootdir: /usr/ports/devel/py-deepdiff/work-py311/deepdiff-8.0.1
configfile: pytest.ini
plugins: hypothesis-6.98.18, timeout-2.1.0, enabler-3.1.1, anyio-4.4.0, time-machine-2.11.0, datadir-1.5.0, flake8-1.1.1, isort-4.0.0, rerunfailures-11.1.2, checkdocs-2.13.0, flaky-3.8.1, flakes-4.0.5, cov-5.0.0, mock-3.10.0, forked-1.6.0, randomly-3.12.0, asyncio-0.23.8, xdist-3.6.1, env-0.6.2, aspectlib-2.0.0, qt-4.2.0, benchmark-4.0.0
asyncio: mode=Mode.STRICT
4 workers [930 items]   
ss..........................................................................................................................................................................F......... [ 19%]
............F.............................................................................................................F...........................s............................... [ 39%]
..............................................................s..............................................................................................................s.....s. [ 58%]
.......s.....s....................................................................................................................................................................... [ 78%]
..........................................................................................s....................................................................................s..... [ 97%]
.......................
========================================================================================= FAILURES ==========================================================================================
_____________________________________________________________________ TestDeepDiffPretty.test_namedtuple_seriazliation ______________________________________________________________________
[gw3] freebsd14 -- Python 3.11.9 /usr/local/bin/python3.11

self = <tests.test_serialization.TestDeepDiffPretty object at 0x1d07256f2b10>

    def test_namedtuple_seriazliation(self):
        op_code = Opcode(tag="replace", t1_from_index=0, t1_to_index=1, t2_from_index=10, t2_to_index=20)
        serialized = json_dumps(op_code)
        expected = '{"tag":"replace","t1_from_index":0,"t1_to_index":1,"t2_from_index":10,"t2_to_index":20,"old_values":null,"new_values":null}'
>       assert serialized == expected
E       assert '["replace", ..., null, null]' == '{"tag":"repl...values":null}'
E         
E         - {"tag":"replace","t1_from_index":0,"t1_to_index":1,"t2_from_index":10,"t2_to_index":20,"old_values":null,"new_values":null}
E         + ["replace", 0, 1, 10, 20, null, null]

tests/test_serialization.py:361: AssertionError
___________________________________________________________________________ TestDeepDiffPretty.test_reversed_list ___________________________________________________________________________
[gw3] freebsd14 -- Python 3.11.9 /usr/local/bin/python3.11

self = <tests.test_serialization.TestDeepDiffPretty object at 0x1d07256f3110>

    def test_reversed_list(self):
        items = reversed([1, 2, 3])
    
        serialized = json_dumps(items)
        serialized2 = json_dumps(items)
    
>       assert '[3,2,1]' == serialized
E       AssertionError: assert '[3,2,1]' == '[3, 2, 1]'
E         
E         - [3, 2, 1]
E         ?    -  -
E         + [3,2,1]

tests/test_serialization.py:369: AssertionError
_________________________________________________________________ TestDeltaCompareFunc.test_list_of_alphabet_and_its_delta __________________________________________________________________
[gw0] freebsd14 -- Python 3.11.9 /usr/local/bin/python3.11

self = <tests.test_delta.TestDeltaCompareFunc object at 0x37510655ded0>

    def test_list_of_alphabet_and_its_delta(self):
        l1 = "A B C D E F G D H".split()
        l2 = "B C X D H Y Z".split()
        diff = DeepDiff(l1, l2)
    
        # Problem: The index of values_changed should be either all for AFTER removals or BEFORE removals.
        # What we have here is that F & G transformation to Y and Z is not compatible with A and E removal
        # it is really meant for the removals to happen first, and then have indexes in L2 for values changing
        # rather than indexes in L1. Here what we need to have is:
        # A B C D E F G D H
        # A B C-X-E
        # B C D F G D H  # removal
    
        # What we really need is to report is as it is in difflib for delta specifically:
        # A B C D E F G D H
        # B C D E F G D H     delete    t1[0:1] --> t2[0:0]    ['A'] --> []
        # B C D E F G D H     equal     t1[1:3] --> t2[0:2] ['B', 'C'] --> ['B', 'C']
        # B C X D H           replace   t1[3:7] --> t2[2:3] ['D', 'E', 'F', 'G'] --> ['X']
        # B C X D H           equal     t1[7:9] --> t2[3:5] ['D', 'H'] --> ['D', 'H']
        # B C X D H Y Z       insert    t1[9:9] --> t2[5:7]       [] --> ['Y', 'Z']
    
        # So in this case, it needs to also include information about what stays equal in the delta
        # NOTE: the problem is that these operations need to be performed in a specific order.
        # DeepDiff removes that order and just buckets all insertions vs. replace vs. delete in their own buckets.
        # For times that we use Difflib, we may want to keep the information for the array_change key
        # just for the sake of delta, but not for reporting in deepdiff itself.
        # that way we can re-apply the changes as they were reported in delta.
    
        delta = Delta(diff)
        assert l2 == l1 + delta
        with pytest.raises(ValueError) as exc_info:
            l1 == l2 - delta
        assert "Please recreate the delta with bidirectional=True" == str(exc_info.value)
    
        delta2 = Delta(diff, bidirectional=True)
        assert l2 == l1 + delta2
        assert l1 == l2 - delta2
    
        dump = Delta(diff, bidirectional=True).dumps()
        delta3 = Delta(dump, bidirectional=True)
    
        assert l2 == l1 + delta3
        assert l1 == l2 - delta3
    
        dump4 = Delta(diff, bidirectional=True, serializer=json_dumps).dumps()
>       delta4 = Delta(dump4, bidirectional=True, deserializer=json_loads)

tests/test_delta.py:2431: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
deepdiff/delta.py:130: in __init__
    self.diff = _deserializer(diff, safe_to_import=safe_to_import)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

obj = '{"values_changed": {"root[3]": {"new_value": "X", "old_value": "D", "new_path": "root[2]"}, "root[5]": {"new_value": ...3, 7, 2, 3, ["D", "E", "F", "G"], ["X"]], ["equal", 7, 9, 3, 5, null, null], ["insert", 9, 9, 5, 7, [], ["Y", "Z"]]]}}'
safe_to_import = None

    def _deserializer(obj, safe_to_import=None):
        result = deserializer(obj)
        if result.get('_iterable_opcodes'):
            _iterable_opcodes = {}
            for path, op_codes in result['_iterable_opcodes'].items():
                _iterable_opcodes[path] = []
                for op_code in op_codes:
                    _iterable_opcodes[path].append(
>                       Opcode(
                            **op_code
                        )
                    )
E                   TypeError: deepdiff.helper.Opcode() argument after ** must be a mapping, not list

deepdiff/delta.py:102: TypeError

-------- coverage: platform freebsd14, python 3.11.9-final-0 ---------
Name                          Stmts   Miss  Cover
-------------------------------------------------
conftest.py                      56      8    86%
deepdiff/__init__.py              9      1    89%
deepdiff/anyset.py               46      0   100%
deepdiff/base.py                 33      0   100%
deepdiff/commands.py            117      3    97%
deepdiff/deephash.py            357      6    98%
deepdiff/delta.py               696     49    93%
deepdiff/diff.py                927     21    98%
deepdiff/distance.py            167     11    93%
deepdiff/helper.py              404     19    95%
deepdiff/lfucache.py            153      6    96%
deepdiff/model.py               433      2    99%
deepdiff/operator.py             28      1    96%
deepdiff/path.py                178     25    86%
deepdiff/search.py              148      0   100%
deepdiff/serialization.py       259     14    95%
tests/__init__.py                45      4    91%
tests/test_anyset.py             33      0   100%
tests/test_cache.py              66     13    80%
tests/test_command.py            84      0   100%
tests/test_delta.py             920     15    98%
tests/test_diff_datetime.py      39      0   100%
tests/test_diff_math.py          80      0   100%
tests/test_diff_numpy.py         12      0   100%
tests/test_diff_other.py        122      0   100%
tests/test_diff_text.py        1054     30    97%
tests/test_diff_tree.py         131      5    96%
tests/test_distance.py          132      0   100%
tests/test_hash.py              644      8    99%
tests/test_helper.py             83      0   100%
tests/test_ignore_order.py      490     32    93%
tests/test_lfucache.py           36      0   100%
tests/test_model.py             141      0   100%
tests/test_operators.py         129      3    98%
tests/test_path.py               27      0   100%
tests/test_search.py            346      2    99%
tests/test_serialization.py     216      1    99%
-------------------------------------------------
TOTAL                          8841    279    97%

================================================================================== short test summary info ==================================================================================
FAILED tests/test_serialization.py::TestDeepDiffPretty::test_namedtuple_seriazliation - assert '["replace", ..., null, null]' == '{"tag":"repl...values":null}'
FAILED tests/test_serialization.py::TestDeepDiffPretty::test_reversed_list - AssertionError: assert '[3,2,1]' == '[3, 2, 1]'
FAILED tests/test_delta.py::TestDeltaCompareFunc::test_list_of_alphabet_and_its_delta - TypeError: deepdiff.helper.Opcode() argument after ** must be a mapping, not list
======================================================================== 3 failed, 917 passed, 10 skipped in 29.64s =========================================================================
*** Error code 1

To Reproduce
pytest

OS, DeepDiff version and Python version (please complete the following information):

  • OS: FreeBSD 14.1
  • Python Version 3.11
  • DeepDiff Version 8.0.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant