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 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 typing_extensions import Self, TypeAlias, TypeIs, TypeVarTuple, Unpack
6
+ from typing import TypeAlias
8
7
 
9
- NoneType = type(None)
8
+ from typing_extensions import Self, TypeIs, TypeVarTuple, Unpack
10
9
 
11
10
 
12
- __all__ = ("NoneType", "Self", "TypeAlias", "TypeIs", "TypeVarTuple", "Unpack")
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, Callable, TypedDict
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/understanding-json-schema/reference/string#built-in-formats
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/understanding-json-schema/reference/string#built-in-formats
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]]
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Any, Callable
3
+ from collections.abc import Callable
4
+ from typing import Any
4
5
 
5
6
  from jsonlogic.core import Operator
6
7
  from jsonlogic.typing import JSON, JSONLogicPrimitive, OperatorArgument
@@ -1,8 +1,10 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Any, Callable, cast
3
+ from collections.abc import Callable
4
+ from types import NoneType
5
+ from typing import Any, cast
4
6
 
5
- from jsonlogic._compat import NoneType, TypeIs
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 [cast_from_schema(val, item_type, variable_casts) for val, item_type in zip(value, prefix_items)]
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
@@ -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 Callable, Generic, Literal, NoReturn, TypeVar, overload
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
@@ -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)
@@ -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, Callable, ClassVar, cast
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(operator=operator, if_elses=list(zip(arguments[::2], arguments[1::2])), leading_else=arguments[-1])
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 typing import Callable, Type, TypeVar, overload
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 UnkownOperator(Exception):
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 = Type[Operator]
26
+ OperatorType: TypeAlias = type[Operator]
26
27
 
27
- OperatorTypeT = TypeVar("OperatorTypeT", bound=Type[Operator])
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
- UnkownOperator: "unknown"
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
- UnkownOperator: If the provided ID does not exist.
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 UnkownOperator(operator_id) # noqa: B904
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, Callable, TypedDict
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/understanding-json-schema/reference/string#built-in-formats
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/understanding-json-schema/reference/string#built-in-formats
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 either a JSON primitive or a list of JSON Logic primitives.
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 operator arguments.
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, Iterator, Literal, TypeVar
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) -> Iterator[None]:
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
1
+ Metadata-Version: 2.5
2
2
  Name: python-jsonlogic
3
- Version: 0.1.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 License
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: Typing :: Typed
38
- Classifier: License :: OSI Approved :: MIT License
39
- Classifier: Intended Audience :: Developers
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
- Requires-Python: >=3.8
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,5 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.43.0)
2
+ Generator: hatchling 1.32.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
-
@@ -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