Skip to content

Commit 4dbcbb4

Browse files
committed
adding better type hints for json_dumps
1 parent 2773e1e commit 4dbcbb4

File tree

3 files changed

+43
-8
lines changed

3 files changed

+43
-8
lines changed

deepdiff/diff.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from enum import Enum
1313
from copy import deepcopy
1414
from math import isclose as is_close
15-
from typing import List, Dict, Callable, Union, Any, Pattern, Tuple, Optional
15+
from typing import List, Dict, Callable, Union, Any, Pattern, Tuple, Optional, Set, FrozenSet
1616
from collections.abc import Mapping, Iterable, Sequence
1717
from collections import defaultdict
1818
from inspect import getmembers
@@ -131,7 +131,7 @@ def __init__(self,
131131
encodings: Optional[List[str]]=None,
132132
exclude_obj_callback: Optional[Callable]=None,
133133
exclude_obj_callback_strict: Optional[Callable]=None,
134-
exclude_paths: Union[str, List[str], None]=None,
134+
exclude_paths: Union[str, List[str], Set[str], FrozenSet[str], None]=None,
135135
exclude_regex_paths: Union[str, List[str], Pattern[str], List[Pattern[str]], None]=None,
136136
exclude_types: Optional[List[Any]]=None,
137137
get_deep_distance: bool=False,

deepdiff/helper.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -785,6 +785,7 @@ class FlatDataAction(EnumBase):
785785
attribute_added = 'attribute_added'
786786
unordered_iterable_item_added = 'unordered_iterable_item_added'
787787
unordered_iterable_item_removed = 'unordered_iterable_item_removed'
788+
initiated = "initiated"
788789

789790

790791
OPCODE_TAG_TO_FLAT_DATA_ACTION = {
@@ -797,7 +798,7 @@ class FlatDataAction(EnumBase):
797798
FLAT_DATA_ACTION_TO_OPCODE_TAG = {v: i for i, v in OPCODE_TAG_TO_FLAT_DATA_ACTION.items()}
798799

799800

800-
UnkownValueCode = 'unknown___'
801+
UnkownValueCode: str = 'unknown___'
801802

802803

803804
class FlatDeltaRow(NamedTuple):

deepdiff/serialization.py

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@
1414
from copy import deepcopy, copy
1515
from functools import partial
1616
from collections.abc import Mapping
17-
from typing import Callable, Optional, Union
17+
from typing import (
18+
Callable, Optional, Union,
19+
overload, Literal, Any,
20+
)
1821
from deepdiff.helper import (
1922
strings,
2023
get_type,
@@ -337,8 +340,8 @@ def find_class(self, module, name):
337340
# Forbid everything else.
338341
raise ForbiddenModule(FORBIDDEN_MODULE_MSG.format(module_dot_class)) from None
339342

340-
def persistent_load(self, persistent_id):
341-
if persistent_id == "<<NoneType>>":
343+
def persistent_load(self, pid):
344+
if pid == "<<NoneType>>":
342345
return type(None)
343346

344347

@@ -642,9 +645,40 @@ def object_hook(self, obj): # type: ignore
642645
return obj
643646

644647

648+
649+
@overload
650+
def json_dumps(
651+
item: Any,
652+
**kwargs,
653+
) -> str:
654+
...
655+
656+
657+
@overload
658+
def json_dumps(
659+
item: Any,
660+
default_mapping:Optional[dict],
661+
force_use_builtin_json: bool,
662+
return_bytes:Literal[True],
663+
**kwargs,
664+
) -> bytes:
665+
...
666+
667+
668+
@overload
669+
def json_dumps(
670+
item: Any,
671+
default_mapping:Optional[dict],
672+
force_use_builtin_json: bool,
673+
return_bytes:Literal[False],
674+
**kwargs,
675+
) -> str:
676+
...
677+
678+
645679
def json_dumps(
646-
item,
647-
default_mapping=None,
680+
item: Any,
681+
default_mapping:Optional[dict]=None,
648682
force_use_builtin_json: bool = False,
649683
return_bytes: bool = False,
650684
**kwargs,

0 commit comments

Comments
 (0)