pytrilogy 0.0.3.21__tar.gz → 0.0.3.23__tar.gz

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.

Files changed (134) hide show
  1. {pytrilogy-0.0.3.21/pytrilogy.egg-info → pytrilogy-0.0.3.23}/PKG-INFO +1 -1
  2. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23/pytrilogy.egg-info}/PKG-INFO +1 -1
  3. pytrilogy-0.0.3.23/pytrilogy.egg-info/entry_points.txt +2 -0
  4. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/setup.py +1 -1
  5. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/__init__.py +1 -1
  6. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/models/build.py +4 -0
  7. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/models/execute.py +1 -1
  8. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/concept_strategies_v3.py +12 -8
  9. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/parsing/parse_engine.py +4 -1
  10. pytrilogy-0.0.3.21/pytrilogy.egg-info/entry_points.txt +0 -2
  11. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/LICENSE.md +0 -0
  12. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/README.md +0 -0
  13. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/pyproject.toml +0 -0
  14. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/pytrilogy.egg-info/SOURCES.txt +0 -0
  15. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/pytrilogy.egg-info/dependency_links.txt +0 -0
  16. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/pytrilogy.egg-info/requires.txt +0 -0
  17. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/pytrilogy.egg-info/top_level.txt +0 -0
  18. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/setup.cfg +0 -0
  19. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_datatypes.py +0 -0
  20. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_declarations.py +0 -0
  21. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_derived_concepts.py +0 -0
  22. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_discovery_nodes.py +0 -0
  23. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_enums.py +0 -0
  24. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_environment.py +0 -0
  25. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_executor.py +0 -0
  26. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_functions.py +0 -0
  27. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_imports.py +0 -0
  28. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_metadata.py +0 -0
  29. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_models.py +0 -0
  30. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_multi_join_assignments.py +0 -0
  31. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_parse_engine.py +0 -0
  32. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_parsing.py +0 -0
  33. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_partial_handling.py +0 -0
  34. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_query_processing.py +0 -0
  35. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_query_render.py +0 -0
  36. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_select.py +0 -0
  37. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_show.py +0 -0
  38. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_statements.py +0 -0
  39. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_typing.py +0 -0
  40. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_undefined_concept.py +0 -0
  41. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_user_functions.py +0 -0
  42. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/tests/test_where_clause.py +0 -0
  43. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/authoring/__init__.py +0 -0
  44. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/compiler.py +0 -0
  45. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/constants.py +0 -0
  46. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/__init__.py +0 -0
  47. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/constants.py +0 -0
  48. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/enums.py +0 -0
  49. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/env_processor.py +0 -0
  50. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/environment_helpers.py +0 -0
  51. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/ergonomics.py +0 -0
  52. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/exceptions.py +0 -0
  53. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/functions.py +0 -0
  54. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/graph_models.py +0 -0
  55. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/internal.py +0 -0
  56. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/models/__init__.py +0 -0
  57. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/models/author.py +0 -0
  58. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/models/build_environment.py +0 -0
  59. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/models/core.py +0 -0
  60. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/models/datasource.py +0 -0
  61. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/models/environment.py +0 -0
  62. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/optimization.py +0 -0
  63. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/optimizations/__init__.py +0 -0
  64. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/optimizations/base_optimization.py +0 -0
  65. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/optimizations/inline_constant.py +0 -0
  66. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/optimizations/inline_datasource.py +0 -0
  67. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/optimizations/predicate_pushdown.py +0 -0
  68. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/__init__.py +0 -0
  69. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/graph_utils.py +0 -0
  70. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/__init__.py +0 -0
  71. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/basic_node.py +0 -0
  72. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/common.py +0 -0
  73. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/filter_node.py +0 -0
  74. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/group_node.py +0 -0
  75. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/group_to_node.py +0 -0
  76. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/multiselect_node.py +0 -0
  77. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/node_merge_node.py +0 -0
  78. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/rowset_node.py +0 -0
  79. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/select_helpers/__init__.py +0 -0
  80. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/select_helpers/datasource_injection.py +0 -0
  81. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/select_merge_node.py +0 -0
  82. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/select_node.py +0 -0
  83. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/synonym_node.py +0 -0
  84. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/union_node.py +0 -0
  85. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/unnest_node.py +0 -0
  86. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/node_generators/window_node.py +0 -0
  87. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/nodes/__init__.py +0 -0
  88. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/nodes/base_node.py +0 -0
  89. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/nodes/filter_node.py +0 -0
  90. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/nodes/group_node.py +0 -0
  91. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/nodes/merge_node.py +0 -0
  92. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/nodes/select_node_v2.py +0 -0
  93. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/nodes/union_node.py +0 -0
  94. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/nodes/unnest_node.py +0 -0
  95. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/nodes/window_node.py +0 -0
  96. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/processing/utility.py +0 -0
  97. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/query_processor.py +0 -0
  98. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/statements/__init__.py +0 -0
  99. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/statements/author.py +0 -0
  100. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/statements/build.py +0 -0
  101. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/statements/common.py +0 -0
  102. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/core/statements/execute.py +0 -0
  103. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/dialect/__init__.py +0 -0
  104. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/dialect/base.py +0 -0
  105. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/dialect/bigquery.py +0 -0
  106. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/dialect/common.py +0 -0
  107. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/dialect/config.py +0 -0
  108. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/dialect/dataframe.py +0 -0
  109. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/dialect/duckdb.py +0 -0
  110. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/dialect/enums.py +0 -0
  111. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/dialect/postgres.py +0 -0
  112. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/dialect/presto.py +0 -0
  113. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/dialect/snowflake.py +0 -0
  114. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/dialect/sql_server.py +0 -0
  115. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/engine.py +0 -0
  116. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/executor.py +0 -0
  117. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/hooks/__init__.py +0 -0
  118. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/hooks/base_hook.py +0 -0
  119. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/hooks/graph_hook.py +0 -0
  120. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/hooks/query_debugger.py +0 -0
  121. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/metadata/__init__.py +0 -0
  122. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/parser.py +0 -0
  123. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/parsing/__init__.py +0 -0
  124. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/parsing/common.py +0 -0
  125. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/parsing/config.py +0 -0
  126. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/parsing/exceptions.py +0 -0
  127. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/parsing/helpers.py +0 -0
  128. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/parsing/render.py +0 -0
  129. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/parsing/trilogy.lark +0 -0
  130. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/py.typed +0 -0
  131. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/render.py +0 -0
  132. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/scripts/__init__.py +0 -0
  133. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/scripts/trilogy.py +0 -0
  134. {pytrilogy-0.0.3.21 → pytrilogy-0.0.3.23}/trilogy/utility.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytrilogy
3
- Version: 0.0.3.21
3
+ Version: 0.0.3.23
4
4
  Summary: Declarative, typed query language that compiles to SQL.
5
5
  Home-page:
6
6
  Author:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytrilogy
3
- Version: 0.0.3.21
3
+ Version: 0.0.3.23
4
4
  Summary: Declarative, typed query language that compiles to SQL.
5
5
  Home-page:
6
6
  Author:
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ trilogy = trilogy.scripts.trilogy:cli
@@ -49,7 +49,7 @@ setuptools.setup(
49
49
  "snowflake": ["snowflake-sqlalchemy"],
50
50
  },
51
51
  entry_points={
52
- "console_scripts": ["trilogy=preql.scripts.trilogy:cli"],
52
+ "console_scripts": ["trilogy=trilogy.scripts.trilogy:cli"],
53
53
  },
54
54
  classifiers=[
55
55
  "Programming Language :: Python",
@@ -4,6 +4,6 @@ from trilogy.dialect.enums import Dialects
4
4
  from trilogy.executor import Executor
5
5
  from trilogy.parser import parse
6
6
 
7
- __version__ = "0.0.3.21"
7
+ __version__ = "0.0.3.23"
8
8
 
9
9
  __all__ = ["parse", "Executor", "Dialects", "Environment", "CONFIG"]
@@ -1721,6 +1721,10 @@ class Factory:
1721
1721
  components=base.components, where_clause=where
1722
1722
  )
1723
1723
 
1724
+ @build.register
1725
+ def _(self, base: TupleWrapper) -> TupleWrapper:
1726
+ return TupleWrapper(val=[self.build(x) for x in base.val], type=base.type)
1727
+
1724
1728
  @build.register
1725
1729
  def _(self, base: FilterItem) -> BuildFilterItem:
1726
1730
  return BuildFilterItem.model_construct(
@@ -162,7 +162,7 @@ class CTE(BaseModel):
162
162
  base += (
163
163
  f"\n-- Nullable: {', '.join([str(x) for x in self.nullable_concepts])}."
164
164
  )
165
-
165
+ base += "\n"
166
166
  return base
167
167
 
168
168
  def inline_parent_datasource(
@@ -787,15 +787,19 @@ def _search_concepts(
787
787
  )
788
788
  # if anything we need to get is in the filter set and it's a computed value
789
789
  # we need to get _everything_ in this loop
790
- if any(
791
- [
792
- x.derivation not in (Derivation.ROOT, Derivation.CONSTANT)
793
- and x.address in conditions.row_arguments
794
- for x in mandatory_list
795
- ]
796
- ):
790
+ required_filters = [
791
+ x
792
+ for x in mandatory_list
793
+ if x.derivation not in (Derivation.ROOT, Derivation.CONSTANT)
794
+ and not (
795
+ x.derivation == Derivation.AGGREGATE
796
+ and x.granularity == Granularity.SINGLE_ROW
797
+ )
798
+ and x.address in conditions.row_arguments
799
+ ]
800
+ if any(required_filters):
797
801
  logger.info(
798
- f"{depth_to_prefix(depth)}{LOGGER_PREFIX} derived condition row input present in mandatory list, forcing condition evaluation at this level. "
802
+ f"{depth_to_prefix(depth)}{LOGGER_PREFIX} derived condition row inputs {[x.address for x in required_filters]} present in mandatory list, forcing condition evaluation at this level. "
799
803
  )
800
804
  mandatory_list = completion_mandatory
801
805
  must_evaluate_condition_on_this_level_not_push_down = True
@@ -1342,7 +1342,10 @@ class ParseToObjects(Transformer):
1342
1342
  )
1343
1343
 
1344
1344
  def expr_tuple(self, args):
1345
- return TupleWrapper(content=tuple(args))
1345
+ datatypes = set([arg_to_datatype(x) for x in args])
1346
+ if len(datatypes) != 1:
1347
+ raise ParseError("Tuple must have same type for all elements")
1348
+ return TupleWrapper(val=tuple(args), type=datatypes.pop())
1346
1349
 
1347
1350
  def parenthetical(self, args):
1348
1351
  return Parenthetical(content=args[0])
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- trilogy = preql.scripts.trilogy:cli
File without changes
File without changes
File without changes