python-jsonlogic 0.1.0__py3-none-any.whl → 0.2.0__py3-none-any.whl
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.
- jsonlogic/_compat.py +3 -4
- jsonlogic/core.py +0 -3
- jsonlogic/evaluation/evaluation_settings.py +4 -3
- jsonlogic/evaluation/utils.py +2 -1
- jsonlogic/json_schema/__init__.py +8 -3
- jsonlogic/json_schema/types.py +3 -2
- jsonlogic/operators/__init__.py +3 -0
- jsonlogic/operators/operators.py +42 -2
- jsonlogic/registry.py +8 -7
- jsonlogic/typechecking/typecheck_settings.py +4 -3
- jsonlogic/typing.py +3 -5
- jsonlogic/utils.py +4 -3
- {python_jsonlogic-0.1.0.dist-info → python_jsonlogic-0.2.0.dist-info}/METADATA +11 -32
- python_jsonlogic-0.2.0.dist-info/RECORD +25 -0
- {python_jsonlogic-0.1.0.dist-info → python_jsonlogic-0.2.0.dist-info}/WHEEL +1 -2
- python_jsonlogic-0.1.0.dist-info/RECORD +0 -26
- python_jsonlogic-0.1.0.dist-info/top_level.txt +0 -1
- {python_jsonlogic-0.1.0.dist-info → python_jsonlogic-0.2.0.dist-info/licenses}/LICENSE +0 -0
jsonlogic/_compat.py
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import sys
|
|
2
2
|
|
|
3
3
|
if sys.version_info >= (3, 13):
|
|
4
|
-
from types import NoneType
|
|
5
4
|
from typing import Self, TypeAlias, TypeIs, TypeVarTuple, Unpack
|
|
6
5
|
else:
|
|
7
|
-
from
|
|
6
|
+
from typing import TypeAlias
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
from typing_extensions import Self, TypeIs, TypeVarTuple, Unpack
|
|
10
9
|
|
|
11
10
|
|
|
12
|
-
__all__ = ("
|
|
11
|
+
__all__ = ("Self", "TypeAlias", "TypeIs", "TypeVarTuple", "Unpack")
|
jsonlogic/core.py
CHANGED
|
@@ -13,9 +13,6 @@ from .json_schema.types import AnyType, JSONSchemaType
|
|
|
13
13
|
from .typing import JSON, JSONLogicPrimitive, JSONObject, OperatorArgument
|
|
14
14
|
|
|
15
15
|
if TYPE_CHECKING:
|
|
16
|
-
# This is a hack to make Pylance think `TypeAlias` comes from `typing`
|
|
17
|
-
from typing import TypeAlias
|
|
18
|
-
|
|
19
16
|
from .evaluation import EvaluationContext
|
|
20
17
|
from .registry import OperatorRegistry
|
|
21
18
|
from .typechecking import TypecheckContext
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
from collections.abc import Callable
|
|
3
4
|
from dataclasses import dataclass, field
|
|
4
5
|
from datetime import date, datetime
|
|
5
|
-
from typing import Any,
|
|
6
|
+
from typing import Any, TypedDict
|
|
6
7
|
|
|
7
8
|
from jsonlogic._compat import Self
|
|
8
9
|
from jsonlogic.resolving import PointerReferenceParser, ReferenceParser
|
|
@@ -37,7 +38,7 @@ class EvaluationSettings:
|
|
|
37
38
|
|
|
38
39
|
Default: :python:`{"date": date.fromisoformat, "date-time": datetime.fromisoformat}`.
|
|
39
40
|
|
|
40
|
-
.. _JSON Schema formats: https://json-schema.org/
|
|
41
|
+
.. _JSON Schema formats: https://json-schema.org/draft/2020-12/draft-bhutton-json-schema-validation-00#rfc.section.7.2
|
|
41
42
|
"""
|
|
42
43
|
|
|
43
44
|
literal_casts: list[Callable[[str], Any]] = field(default_factory=list)
|
|
@@ -83,7 +84,7 @@ class EvaluationSettingsDict(TypedDict, total=False):
|
|
|
83
84
|
|
|
84
85
|
Default: :python:`{"date": date.fromisoformat, "date-time": datetime.fromisoformat}`.
|
|
85
86
|
|
|
86
|
-
.. _JSON Schema formats: https://json-schema.org/
|
|
87
|
+
.. _JSON Schema formats: https://json-schema.org/draft/2020-12/draft-bhutton-json-schema-validation-00#rfc.section.7.2
|
|
87
88
|
"""
|
|
88
89
|
|
|
89
90
|
literal_casts: list[Callable[[str], Any]]
|
jsonlogic/evaluation/utils.py
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from collections.abc import Callable
|
|
4
|
+
from types import NoneType
|
|
5
|
+
from typing import Any, cast
|
|
4
6
|
|
|
5
|
-
from jsonlogic._compat import
|
|
7
|
+
from jsonlogic._compat import TypeIs
|
|
6
8
|
from jsonlogic.typing import JSON, JSONLogicPrimitive
|
|
7
9
|
|
|
8
10
|
from .types import (
|
|
@@ -179,6 +181,9 @@ def cast_from_schema(value: JSON, json_schema: dict[str, Any], variable_casts: d
|
|
|
179
181
|
prefix_items = cast("list[dict[str, Any]] | None", json_schema.get("prefixItems"))
|
|
180
182
|
if prefix_items is not None: # TODO check for min/maxItems?
|
|
181
183
|
# TODO return a tuple instead? Needs decision
|
|
182
|
-
return [
|
|
184
|
+
return [
|
|
185
|
+
cast_from_schema(val, item_type, variable_casts)
|
|
186
|
+
for val, item_type in zip(value, prefix_items, strict=True)
|
|
187
|
+
]
|
|
183
188
|
|
|
184
189
|
return value
|
jsonlogic/json_schema/types.py
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from abc import ABC, abstractmethod
|
|
4
|
+
from collections.abc import Callable
|
|
4
5
|
from dataclasses import dataclass
|
|
5
|
-
from typing import
|
|
6
|
+
from typing import Generic, Literal, NoReturn, TypeVar, overload
|
|
6
7
|
|
|
7
8
|
from jsonlogic._compat import Self, TypeAlias, TypeVarTuple, Unpack
|
|
8
9
|
|
|
@@ -92,7 +93,7 @@ class JSONSchemaType(ABC):
|
|
|
92
93
|
return UnionType(self, value)
|
|
93
94
|
|
|
94
95
|
|
|
95
|
-
class UnionType(JSONSchemaType):
|
|
96
|
+
class UnionType(JSONSchemaType): # noqa: PLW1641
|
|
96
97
|
types: set[JSONSchemaPrimitiveType]
|
|
97
98
|
|
|
98
99
|
@overload
|
jsonlogic/operators/__init__.py
CHANGED
|
@@ -13,6 +13,7 @@ from .operators import (
|
|
|
13
13
|
Map,
|
|
14
14
|
Minus,
|
|
15
15
|
Modulo,
|
|
16
|
+
Multiply,
|
|
16
17
|
NotEqual,
|
|
17
18
|
Plus,
|
|
18
19
|
Var,
|
|
@@ -29,6 +30,7 @@ __all__ = (
|
|
|
29
30
|
"Map",
|
|
30
31
|
"Minus",
|
|
31
32
|
"Modulo",
|
|
33
|
+
"Multiply",
|
|
32
34
|
"NotEqual",
|
|
33
35
|
"Plus",
|
|
34
36
|
"Var",
|
|
@@ -49,5 +51,6 @@ operator_registry.register("<=", LessThanOrEqual)
|
|
|
49
51
|
operator_registry.register("+", Plus)
|
|
50
52
|
operator_registry.register("-", Minus)
|
|
51
53
|
operator_registry.register("/", Division)
|
|
54
|
+
operator_registry.register("*", Multiply)
|
|
52
55
|
operator_registry.register("%", Modulo)
|
|
53
56
|
operator_registry.register("map", Map)
|
jsonlogic/operators/operators.py
CHANGED
|
@@ -2,8 +2,9 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import functools
|
|
4
4
|
import operator
|
|
5
|
+
from collections.abc import Callable
|
|
5
6
|
from dataclasses import dataclass
|
|
6
|
-
from typing import Any,
|
|
7
|
+
from typing import Any, ClassVar, cast
|
|
7
8
|
|
|
8
9
|
from jsonlogic._compat import Self
|
|
9
10
|
from jsonlogic.core import JSONLogicSyntaxError, Operator
|
|
@@ -138,7 +139,11 @@ class If(Operator):
|
|
|
138
139
|
raise JSONLogicSyntaxError(f"{operator!r} expects at least 3 arguments, got {len(arguments)}")
|
|
139
140
|
if len(arguments) % 2 == 0:
|
|
140
141
|
raise JSONLogicSyntaxError(f"{operator!r} expects an odd number of arguments, got {len(arguments)}")
|
|
141
|
-
return cls(
|
|
142
|
+
return cls(
|
|
143
|
+
operator=operator,
|
|
144
|
+
if_elses=list(zip(arguments[::2], arguments[1::2], strict=False)),
|
|
145
|
+
leading_else=arguments[-1],
|
|
146
|
+
)
|
|
142
147
|
|
|
143
148
|
def typecheck(self, context: TypecheckContext) -> JSONSchemaType:
|
|
144
149
|
for i, (cond, _) in enumerate(self.if_elses, start=1):
|
|
@@ -235,6 +240,41 @@ class Modulo(BinaryOperator):
|
|
|
235
240
|
operator_symbol = "%"
|
|
236
241
|
|
|
237
242
|
|
|
243
|
+
@dataclass
|
|
244
|
+
class Multiply(Operator):
|
|
245
|
+
arguments: list[OperatorArgument]
|
|
246
|
+
|
|
247
|
+
@classmethod
|
|
248
|
+
def from_expression(cls, operator: str, arguments: list[OperatorArgument]) -> Self:
|
|
249
|
+
if not len(arguments) >= 2:
|
|
250
|
+
raise JSONLogicSyntaxError(f"{operator!r} expects at least two arguments, got {len(arguments)}")
|
|
251
|
+
return cls(operator=operator, arguments=arguments)
|
|
252
|
+
|
|
253
|
+
def typecheck(self, context: TypecheckContext) -> JSONSchemaType:
|
|
254
|
+
types = (get_type(obj, context) for obj in self.arguments)
|
|
255
|
+
result_type = next(types)
|
|
256
|
+
|
|
257
|
+
for i, typ in enumerate(types, start=1):
|
|
258
|
+
try:
|
|
259
|
+
result_type = result_type.binary_op(typ, "*")
|
|
260
|
+
except UnsupportedOperation:
|
|
261
|
+
if len(self.arguments) == 2:
|
|
262
|
+
msg = f'Operator "*" not supported for types {result_type.name} and {typ.name}'
|
|
263
|
+
else:
|
|
264
|
+
msg = f'Operator "*" not supported for types {result_type.name} (argument {i}) and {typ.name} (argument {i + 1})' # noqa: E501
|
|
265
|
+
context.add_diagnostic(
|
|
266
|
+
msg,
|
|
267
|
+
"operator",
|
|
268
|
+
self,
|
|
269
|
+
)
|
|
270
|
+
return AnyType()
|
|
271
|
+
|
|
272
|
+
return result_type
|
|
273
|
+
|
|
274
|
+
def evaluate(self, context: EvaluationContext) -> Any:
|
|
275
|
+
return functools.reduce(lambda a, b: get_value(a, context) * get_value(b, context), self.arguments)
|
|
276
|
+
|
|
277
|
+
|
|
238
278
|
@dataclass
|
|
239
279
|
class Plus(Operator):
|
|
240
280
|
arguments: list[OperatorArgument]
|
jsonlogic/registry.py
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from
|
|
5
|
+
from collections.abc import Callable
|
|
6
|
+
from typing import TypeVar, overload
|
|
6
7
|
|
|
7
8
|
from ._compat import Self, TypeAlias
|
|
8
9
|
from .core import Operator
|
|
@@ -15,16 +16,16 @@ class AlreadyRegistered(Exception):
|
|
|
15
16
|
self.operator_id = operator_id
|
|
16
17
|
|
|
17
18
|
|
|
18
|
-
class
|
|
19
|
+
class UnknownOperator(Exception):
|
|
19
20
|
"""The provided ID does not exist in the registry."""
|
|
20
21
|
|
|
21
22
|
def __init__(self, operator_id: str, /) -> None:
|
|
22
23
|
self.operator_id = operator_id
|
|
23
24
|
|
|
24
25
|
|
|
25
|
-
OperatorType: TypeAlias =
|
|
26
|
+
OperatorType: TypeAlias = type[Operator]
|
|
26
27
|
|
|
27
|
-
OperatorTypeT = TypeVar("OperatorTypeT", bound=
|
|
28
|
+
OperatorTypeT = TypeVar("OperatorTypeT", bound=type[Operator])
|
|
28
29
|
|
|
29
30
|
|
|
30
31
|
class OperatorRegistry:
|
|
@@ -41,7 +42,7 @@ class OperatorRegistry:
|
|
|
41
42
|
>>> reg.get("unknown")
|
|
42
43
|
Traceback (most recent call last):
|
|
43
44
|
...
|
|
44
|
-
|
|
45
|
+
UnknownOperator: "unknown"
|
|
45
46
|
"""
|
|
46
47
|
|
|
47
48
|
def __init__(self) -> None:
|
|
@@ -101,12 +102,12 @@ class OperatorRegistry:
|
|
|
101
102
|
operator_id: The registered ID of the operator.
|
|
102
103
|
|
|
103
104
|
Raises:
|
|
104
|
-
|
|
105
|
+
UnknownOperator: If the provided ID does not exist.
|
|
105
106
|
"""
|
|
106
107
|
try:
|
|
107
108
|
return self._registry[operator_id]
|
|
108
109
|
except KeyError:
|
|
109
|
-
raise
|
|
110
|
+
raise UnknownOperator(operator_id) # noqa: B904
|
|
110
111
|
|
|
111
112
|
def remove(self, operator_id: str, /) -> None:
|
|
112
113
|
"""Remove the operator from the registry.
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
from collections.abc import Callable
|
|
3
4
|
from dataclasses import dataclass, field
|
|
4
|
-
from typing import Any,
|
|
5
|
+
from typing import Any, TypedDict
|
|
5
6
|
|
|
6
7
|
from jsonlogic._compat import Self
|
|
7
8
|
from jsonlogic.json_schema.types import DatetimeType, DateType, JSONSchemaType
|
|
@@ -74,7 +75,7 @@ class TypecheckSettings:
|
|
|
74
75
|
|
|
75
76
|
Default: :python:`{"date": DateType, "date-time": DatetimeType}`.
|
|
76
77
|
|
|
77
|
-
.. _JSON Schema formats: https://json-schema.org/
|
|
78
|
+
.. _JSON Schema formats: https://json-schema.org/draft/2020-12/draft-bhutton-json-schema-validation-00#rfc.section.7.2
|
|
78
79
|
"""
|
|
79
80
|
|
|
80
81
|
literal_casts: dict[Callable[[str], Any], type[JSONSchemaType]] = field(default_factory=dict)
|
|
@@ -179,7 +180,7 @@ class TypecheckSettingsDict(TypedDict, total=False):
|
|
|
179
180
|
|
|
180
181
|
Default: :python:`{"date": DateType, "date-time": DatetimeType}`.
|
|
181
182
|
|
|
182
|
-
.. _JSON Schema formats: https://json-schema.org/
|
|
183
|
+
.. _JSON Schema formats: https://json-schema.org/draft/2020-12/draft-bhutton-json-schema-validation-00#rfc.section.7.2
|
|
183
184
|
"""
|
|
184
185
|
|
|
185
186
|
literal_casts: dict[Callable[[str], Any], type[JSONSchemaType]]
|
jsonlogic/typing.py
CHANGED
|
@@ -7,9 +7,6 @@ from typing import TYPE_CHECKING
|
|
|
7
7
|
from ._compat import TypeAlias
|
|
8
8
|
|
|
9
9
|
if TYPE_CHECKING:
|
|
10
|
-
# This is a hack to make Pylance think `TypeAlias` comes from `typing`
|
|
11
|
-
from typing import TypeAlias
|
|
12
|
-
|
|
13
10
|
from jsonlogic.core import Operator
|
|
14
11
|
|
|
15
12
|
JSONPrimitive: TypeAlias = "str | int | float | bool | None"
|
|
@@ -20,7 +17,7 @@ JSONArray: TypeAlias = "list[JSON]"
|
|
|
20
17
|
JSON: TypeAlias = "JSONPrimitive | JSONArray | JSONObject"
|
|
21
18
|
|
|
22
19
|
JSONLogicPrimitive: TypeAlias = "JSONPrimitive | list[JSONLogicPrimitive]"
|
|
23
|
-
"""A JSON Logic primitive is recursively defined as
|
|
20
|
+
"""A JSON Logic primitive is recursively defined either as a JSON primitive or a list of JSON Logic primitives.
|
|
24
21
|
|
|
25
22
|
Such primitives are only considered when dealing with operator arguments:
|
|
26
23
|
|
|
@@ -36,7 +33,8 @@ Such primitives are only considered when dealing with operator arguments:
|
|
|
36
33
|
"""
|
|
37
34
|
|
|
38
35
|
OperatorArgument: TypeAlias = "Operator | JSONLogicPrimitive | list[OperatorArgument]"
|
|
39
|
-
"""An operator argument is recursively defined a JSON Logic primitive, an operator or a list of
|
|
36
|
+
"""An operator argument is recursively defined either as a JSON Logic primitive, an operator or a list of
|
|
37
|
+
operator arguments.
|
|
40
38
|
|
|
41
39
|
.. code-block:: json
|
|
42
40
|
|
jsonlogic/utils.py
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import enum
|
|
4
|
+
from collections.abc import Generator
|
|
4
5
|
from contextlib import contextmanager
|
|
5
|
-
from typing import Generic,
|
|
6
|
+
from typing import Generic, Literal, TypeVar
|
|
6
7
|
|
|
7
8
|
from ._compat import TypeAlias
|
|
8
9
|
|
|
@@ -17,7 +18,7 @@ class _UnsetTypeEnum(enum.Enum):
|
|
|
17
18
|
UNSET = _UnsetTypeEnum.UNSET
|
|
18
19
|
"""A sentinel value representing an unset (or not provided) value."""
|
|
19
20
|
|
|
20
|
-
UnsetType: TypeAlias = Literal[UNSET]
|
|
21
|
+
UnsetType: TypeAlias = Literal[_UnsetTypeEnum.UNSET]
|
|
21
22
|
"""The type of the :data:`UNSET` sentinel value."""
|
|
22
23
|
|
|
23
24
|
|
|
@@ -38,7 +39,7 @@ class DataStack(Generic[DataT]):
|
|
|
38
39
|
return self._stack[-index - 1]
|
|
39
40
|
|
|
40
41
|
@contextmanager
|
|
41
|
-
def push(self, data: DataT) ->
|
|
42
|
+
def push(self, data: DataT) -> Generator[None]:
|
|
42
43
|
self._stack.append(data)
|
|
43
44
|
|
|
44
45
|
try:
|
|
@@ -1,47 +1,26 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: python-jsonlogic
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: An extensible and sane implementation of JsonLogic
|
|
5
5
|
Author-email: Victorien <contact@vctrn.dev>
|
|
6
|
-
License: MIT
|
|
7
|
-
|
|
8
|
-
Copyright (c) 2024 Victorien
|
|
9
|
-
|
|
10
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
-
in the Software without restriction, including without limitation the rights
|
|
13
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
-
furnished to do so, subject to the following conditions:
|
|
16
|
-
|
|
17
|
-
The above copyright notice and this permission notice shall be included in all
|
|
18
|
-
copies or substantial portions of the Software.
|
|
19
|
-
|
|
20
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
-
SOFTWARE.
|
|
27
|
-
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
License-File: LICENSE
|
|
28
8
|
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
29
10
|
Classifier: Operating System :: OS Independent
|
|
30
11
|
Classifier: Programming Language :: Python :: 3
|
|
31
12
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
32
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
33
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
34
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
35
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
36
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
37
|
-
Classifier:
|
|
38
|
-
Classifier:
|
|
39
|
-
Classifier:
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
40
19
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
41
|
-
|
|
20
|
+
Classifier: Typing :: Typed
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Requires-Dist: typing-extensions>=4.10.0; python_version < '3.13'
|
|
42
23
|
Description-Content-Type: text/x-rst
|
|
43
|
-
License-File: LICENSE
|
|
44
|
-
Requires-Dist: typing-extensions >=4.10.0 ; python_version < "3.13"
|
|
45
24
|
|
|
46
25
|
================
|
|
47
26
|
python-jsonlogic
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
jsonlogic/__init__.py,sha256=WTPdQl-Rrtc-OfsPgsAbb19vk1BX8aLc7-phJHaiVlU,141
|
|
2
|
+
jsonlogic/_compat.py,sha256=_PLU9LwVbGpD5euwA0ep4FubXkfD9aOyQvytBgFIjJo,292
|
|
3
|
+
jsonlogic/core.py,sha256=apGQlCA6GVaUPyVOuikth9RnTdJ4Q0ZmTQCTmAbeILQ,4546
|
|
4
|
+
jsonlogic/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
jsonlogic/registry.py,sha256=KI0NGL1TNh6qHcgx8-FShS52BtDCi0bKRS38ZhIVAPY,4422
|
|
6
|
+
jsonlogic/resolving.py,sha256=CGokLqmORsGnW70OenQDQ8LqxXVLyT_hs5HrTlsQr8o,6208
|
|
7
|
+
jsonlogic/typing.py,sha256=fyYofShQ6BDqB0eJwtCHqVaYkAJaMDZ3i1JgrkDfPkw,1356
|
|
8
|
+
jsonlogic/utils.py,sha256=fYTafaoEh4_hwqN_cOJAxjIcIzU4463752yG0aEhPks,1099
|
|
9
|
+
jsonlogic/evaluation/__init__.py,sha256=H2rpdRh5rQOPZytSzv1oPwN8ryTbQ0ld1A_dBVmrjmQ,221
|
|
10
|
+
jsonlogic/evaluation/evaluation_context.py,sha256=Fc-rw-3b9NGEmWUkDxu566VzZM9RSL0NBRGIERXLcnk,3153
|
|
11
|
+
jsonlogic/evaluation/evaluation_settings.py,sha256=khpbid8WwHFc2-2kRRlbClM7H58tyge087WlgDEdpWY,4342
|
|
12
|
+
jsonlogic/evaluation/utils.py,sha256=Xz3DmBxaRFdwQFlZgqDb7S0s7oz-2cNIPjz9_7sXG98,2469
|
|
13
|
+
jsonlogic/json_schema/__init__.py,sha256=OSnYrsPCwvLwJbG39trhL9wrlrx_8-8Xwkm4Rs2mZmo,6183
|
|
14
|
+
jsonlogic/json_schema/types.py,sha256=z9rmBDWTOftZDidtTOCMEdXK-tNuJgW65Rb1yLEEgyk,11652
|
|
15
|
+
jsonlogic/operators/__init__.py,sha256=wyQobqKOIEj5yfDGtFbTIIcKYGsQRdF9yzOWLXBkvgw,1223
|
|
16
|
+
jsonlogic/operators/operators.py,sha256=DFkLwmPrqqr2nmLWAf40POrDegjxNOQw0q89JDBUMQg,14313
|
|
17
|
+
jsonlogic/typechecking/__init__.py,sha256=yIp0d70ziF3bfXQGqyeaHkbT8DMR1PVJH4O3-Wf-5lk,416
|
|
18
|
+
jsonlogic/typechecking/diagnostics.py,sha256=G8EhcW4DNEaApTLLMMNbdXP8DU5C416hONT4MeEArpo,1027
|
|
19
|
+
jsonlogic/typechecking/typecheck_context.py,sha256=oJpez_ePYxxEQf7nyfqFjtozBQbw8UgZykxULhBp_Hw,2773
|
|
20
|
+
jsonlogic/typechecking/typecheck_settings.py,sha256=o_2C6reXnbAd4mgG1TTmAOz9GmAtkVTt_Vh7c4vtPfY,7512
|
|
21
|
+
jsonlogic/typechecking/utils.py,sha256=htUzTj9H9oeNcuRZUONEFgAS45GU7rA-3hhiLvMGdeM,2042
|
|
22
|
+
python_jsonlogic-0.2.0.dist-info/METADATA,sha256=SN7xFsqoNgkkmMbQnyLRp-pD6XWQREDpFoV6ke_dDVA,4041
|
|
23
|
+
python_jsonlogic-0.2.0.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
|
|
24
|
+
python_jsonlogic-0.2.0.dist-info/licenses/LICENSE,sha256=pwChAwmTaG21Ggy-ermM6ybFgQWEuA0gLT-Vy77X-Og,1066
|
|
25
|
+
python_jsonlogic-0.2.0.dist-info/RECORD,,
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
jsonlogic/__init__.py,sha256=WTPdQl-Rrtc-OfsPgsAbb19vk1BX8aLc7-phJHaiVlU,141
|
|
2
|
-
jsonlogic/_compat.py,sha256=ZHFZJyFxctpCSZQ_yzVd5GBaMj5IbG1EcPzhbZxeFig,339
|
|
3
|
-
jsonlogic/core.py,sha256=zbSdLa98KbyatWtHiqy8BPGHbrWA9ofaZUrVSfaRPMk,4655
|
|
4
|
-
jsonlogic/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
jsonlogic/registry.py,sha256=cxLatZAb2KA0-yHRcJw7_zDwr4hscFCfkyiSBxVc_kQ,4397
|
|
6
|
-
jsonlogic/resolving.py,sha256=CGokLqmORsGnW70OenQDQ8LqxXVLyT_hs5HrTlsQr8o,6208
|
|
7
|
-
jsonlogic/typing.py,sha256=zhj69vXN03LJUlAHFgWX0Wv-hB1ABB5IWR9ZapeG-zM,1455
|
|
8
|
-
jsonlogic/utils.py,sha256=oasigplji6XWZYvi5Ni-jE96aicL50a-olfA3xaEL54,1055
|
|
9
|
-
jsonlogic/evaluation/__init__.py,sha256=H2rpdRh5rQOPZytSzv1oPwN8ryTbQ0ld1A_dBVmrjmQ,221
|
|
10
|
-
jsonlogic/evaluation/evaluation_context.py,sha256=Fc-rw-3b9NGEmWUkDxu566VzZM9RSL0NBRGIERXLcnk,3153
|
|
11
|
-
jsonlogic/evaluation/evaluation_settings.py,sha256=3Y7nEKSGBkyR7tlJSsLYzfzzOK84sP9JCQHL4KJuKqk,4295
|
|
12
|
-
jsonlogic/evaluation/utils.py,sha256=Gqu5qtwhMiYz5p-5wNN3lIq9IAyJ4MpGpmaZ3ZbpH00,2442
|
|
13
|
-
jsonlogic/json_schema/__init__.py,sha256=GlAAjqT5nUclkp47jA4zNVEIoZBl4srfZSyOK2KmQ-8,6080
|
|
14
|
-
jsonlogic/json_schema/types.py,sha256=9fcMYvREv6W2ciGLp9nV97Y11q8D0Kbj2Wss0O13QQ8,11608
|
|
15
|
-
jsonlogic/operators/__init__.py,sha256=oYl9xAb2zVz98Ti3g26xsJUai0qDSW7PWxyJBM-JJGc,1151
|
|
16
|
-
jsonlogic/operators/operators.py,sha256=3IfpnkD7kPpSVBj9V2_yBkFwasmRLRlYME6ga2k9g_w,12811
|
|
17
|
-
jsonlogic/typechecking/__init__.py,sha256=yIp0d70ziF3bfXQGqyeaHkbT8DMR1PVJH4O3-Wf-5lk,416
|
|
18
|
-
jsonlogic/typechecking/diagnostics.py,sha256=G8EhcW4DNEaApTLLMMNbdXP8DU5C416hONT4MeEArpo,1027
|
|
19
|
-
jsonlogic/typechecking/typecheck_context.py,sha256=oJpez_ePYxxEQf7nyfqFjtozBQbw8UgZykxULhBp_Hw,2773
|
|
20
|
-
jsonlogic/typechecking/typecheck_settings.py,sha256=hZRv-Ksm_7fR1A0Pa2N5qZYW2s1nPAX8S_MDQbCbC1I,7465
|
|
21
|
-
jsonlogic/typechecking/utils.py,sha256=htUzTj9H9oeNcuRZUONEFgAS45GU7rA-3hhiLvMGdeM,2042
|
|
22
|
-
python_jsonlogic-0.1.0.dist-info/LICENSE,sha256=pwChAwmTaG21Ggy-ermM6ybFgQWEuA0gLT-Vy77X-Og,1066
|
|
23
|
-
python_jsonlogic-0.1.0.dist-info/METADATA,sha256=yIcn0MeE4fAa9vykxND3rx3-2SFUPegE_p4pMDSUPxQ,5260
|
|
24
|
-
python_jsonlogic-0.1.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
25
|
-
python_jsonlogic-0.1.0.dist-info/top_level.txt,sha256=lLRbjjIh7LDDjBpH9sw5tkb3tzCg-jNwiExwm8-bj0Y,10
|
|
26
|
-
python_jsonlogic-0.1.0.dist-info/RECORD,,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
jsonlogic
|
|
File without changes
|