pytrilogy 0.0.2.30__py3-none-any.whl → 0.0.2.31__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.

Potentially problematic release.


This version of pytrilogy might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pytrilogy
3
- Version: 0.0.2.30
3
+ Version: 0.0.2.31
4
4
  Summary: Declarative, typed query language that compiles to SQL.
5
5
  Home-page:
6
6
  Author:
@@ -1,4 +1,4 @@
1
- trilogy/__init__.py,sha256=pHqmnZdLkM4fDNn1mC3MRXMe1IoPU8UoCt1E5fjGFl0,291
1
+ trilogy/__init__.py,sha256=VblpsLULNBnUhw05evBTHbgeqv65Ler6brQxBYz86lM,291
2
2
  trilogy/compiler.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  trilogy/constants.py,sha256=KiyYnctoZen4Hzv8WG2jeN-IE-dfQbWHdVCUeTZYjBg,1270
4
4
  trilogy/engine.py,sha256=R5ubIxYyrxRExz07aZCUfrTsoXCHQ8DKFTDsobXdWdA,1102
@@ -70,14 +70,14 @@ trilogy/parsing/common.py,sha256=t7yiL_3f6rz_rouF9et84v5orAgs-EprV4V9ghQ6ql4,100
70
70
  trilogy/parsing/config.py,sha256=Z-DaefdKhPDmSXLgg5V4pebhSB0h590vI0_VtHnlukI,111
71
71
  trilogy/parsing/exceptions.py,sha256=92E5i2frv5hj9wxObJZsZqj5T6bglvPzvdvco_vW1Zk,38
72
72
  trilogy/parsing/helpers.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
73
- trilogy/parsing/parse_engine.py,sha256=JwG98fotPpvh5VC-CcHknCTFid9-Zj1Wfo8CyPOnJzs,64431
73
+ trilogy/parsing/parse_engine.py,sha256=goN7oQqvSjU3Vqm4lXs4bNVAoHEMT-JkL_o_fhYy9vo,64591
74
74
  trilogy/parsing/render.py,sha256=VKyo8wEOuiOzUtJ6w9EoGGmkhlqDQyy8wFj_Q_h6EfE,15263
75
75
  trilogy/parsing/trilogy.lark,sha256=_z5px2N-e8oLUf7SpPMXXNqbAykDkZOvP4_lPgf5-Uk,12245
76
76
  trilogy/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
77
  trilogy/scripts/trilogy.py,sha256=PHxvv6f2ODv0esyyhWxlARgra8dVhqQhYl0lTrSyVNo,3729
78
- pytrilogy-0.0.2.30.dist-info/LICENSE.md,sha256=5ZRvtTyCCFwz1THxDTjAu3Lidds9WjPvvzgVwPSYNDo,1042
79
- pytrilogy-0.0.2.30.dist-info/METADATA,sha256=1Z7e7dhoCLe38WhBkVs29Igt7BY_5C9OVJrUVmvkgdw,8403
80
- pytrilogy-0.0.2.30.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
81
- pytrilogy-0.0.2.30.dist-info/entry_points.txt,sha256=0petKryjvvtEfTlbZC1AuMFumH_WQ9v8A19LvoS6G6c,54
82
- pytrilogy-0.0.2.30.dist-info/top_level.txt,sha256=cAy__NW_eMAa_yT9UnUNlZLFfxcg6eimUAZ184cdNiE,8
83
- pytrilogy-0.0.2.30.dist-info/RECORD,,
78
+ pytrilogy-0.0.2.31.dist-info/LICENSE.md,sha256=5ZRvtTyCCFwz1THxDTjAu3Lidds9WjPvvzgVwPSYNDo,1042
79
+ pytrilogy-0.0.2.31.dist-info/METADATA,sha256=ouEJ1harU8vFjegOhfJuIsAfDrwyyhA8Tb1rbQiH4lU,8403
80
+ pytrilogy-0.0.2.31.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
81
+ pytrilogy-0.0.2.31.dist-info/entry_points.txt,sha256=0petKryjvvtEfTlbZC1AuMFumH_WQ9v8A19LvoS6G6c,54
82
+ pytrilogy-0.0.2.31.dist-info/top_level.txt,sha256=cAy__NW_eMAa_yT9UnUNlZLFfxcg6eimUAZ184cdNiE,8
83
+ pytrilogy-0.0.2.31.dist-info/RECORD,,
trilogy/__init__.py CHANGED
@@ -4,6 +4,6 @@ from trilogy.executor import Executor
4
4
  from trilogy.parser import parse
5
5
  from trilogy.constants import CONFIG
6
6
 
7
- __version__ = "0.0.2.30"
7
+ __version__ = "0.0.2.31"
8
8
 
9
9
  __all__ = ["parse", "Executor", "Dialects", "Environment", "CONFIG"]
@@ -162,6 +162,21 @@ def parse_concept_reference(
162
162
  return lookup, namespace, name, parent
163
163
 
164
164
 
165
+ def expr_to_boolean(
166
+ root,
167
+ ) -> Union[Comparison, Conditional, SubselectComparison, Parenthetical]:
168
+ if not isinstance(root, (Comparison, Conditional, Parenthetical)):
169
+ if arg_to_datatype(root) == DataType.BOOL:
170
+ root = Comparison(left=root, right=True, operator=ComparisonOperator.EQ)
171
+ else:
172
+ root = Comparison(
173
+ left=root,
174
+ right=MagicConstants.NULL,
175
+ operator=ComparisonOperator.IS_NOT,
176
+ )
177
+ return root
178
+
179
+
165
180
  def unwrap_transformation(
166
181
  input: Union[
167
182
  FilterItem,
@@ -1022,15 +1037,7 @@ class ParseToObjects(Transformer):
1022
1037
 
1023
1038
  def where(self, args):
1024
1039
  root = args[0]
1025
- if not isinstance(root, (Comparison, Conditional, Parenthetical)):
1026
- if arg_to_datatype(root) == DataType.BOOL:
1027
- root = Comparison(left=root, right=True, operator=ComparisonOperator.EQ)
1028
- else:
1029
- root = Comparison(
1030
- left=root,
1031
- right=MagicConstants.NULL,
1032
- operator=ComparisonOperator.IS_NOT,
1033
- )
1040
+ root = expr_to_boolean(root)
1034
1041
  return WhereClause(conditional=root)
1035
1042
 
1036
1043
  def having(self, args):
@@ -1838,7 +1845,8 @@ class ParseToObjects(Transformer):
1838
1845
  @v_args(meta=True)
1839
1846
  def fcase_when(self, meta, args) -> CaseWhen:
1840
1847
  args = process_function_args(args, meta=meta, environment=self.environment)
1841
- return CaseWhen(comparison=args[0], expr=args[1])
1848
+ root = expr_to_boolean(args[0])
1849
+ return CaseWhen(comparison=root, expr=args[1])
1842
1850
 
1843
1851
  @v_args(meta=True)
1844
1852
  def fcase_else(self, meta, args) -> CaseElse: