pytrilogy 0.0.3.119__tar.gz → 0.0.3.120__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 (174) hide show
  1. {pytrilogy-0.0.3.119/pytrilogy.egg-info → pytrilogy-0.0.3.120}/PKG-INFO +1 -1
  2. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120/pytrilogy.egg-info}/PKG-INFO +1 -1
  3. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/__init__.py +1 -1
  4. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/ai/conversation.py +3 -4
  5. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/models/environment.py +3 -2
  6. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/discovery_utility.py +4 -4
  7. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/nodes/base_node.py +5 -1
  8. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/LICENSE.md +0 -0
  9. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/README.md +0 -0
  10. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/pyproject.toml +0 -0
  11. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/pytrilogy.egg-info/SOURCES.txt +0 -0
  12. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/pytrilogy.egg-info/dependency_links.txt +0 -0
  13. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/pytrilogy.egg-info/entry_points.txt +0 -0
  14. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/pytrilogy.egg-info/requires.txt +0 -0
  15. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/pytrilogy.egg-info/top_level.txt +0 -0
  16. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/requirements.txt +0 -0
  17. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/setup.cfg +0 -0
  18. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_datatypes.py +0 -0
  19. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_declarations.py +0 -0
  20. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_derived_concepts.py +0 -0
  21. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_discovery_nodes.py +0 -0
  22. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_enums.py +0 -0
  23. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_environment.py +0 -0
  24. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_execute_models.py +0 -0
  25. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_executor.py +0 -0
  26. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_failure.py +0 -0
  27. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_functions.py +0 -0
  28. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_imports.py +0 -0
  29. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_metadata.py +0 -0
  30. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_models.py +0 -0
  31. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_multi_join_assignments.py +0 -0
  32. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_parse_engine.py +0 -0
  33. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_parsing.py +0 -0
  34. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_parsing_failures.py +0 -0
  35. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_partial_handling.py +0 -0
  36. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_query_processing.py +0 -0
  37. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_query_render.py +0 -0
  38. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_select.py +0 -0
  39. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_show.py +0 -0
  40. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_statements.py +0 -0
  41. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_typing.py +0 -0
  42. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_undefined_concept.py +0 -0
  43. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_user_functions.py +0 -0
  44. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_validators.py +0 -0
  45. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/tests/test_where_clause.py +0 -0
  46. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/ai/__init__.py +0 -0
  47. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/ai/constants.py +0 -0
  48. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/ai/enums.py +0 -0
  49. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/ai/execute.py +0 -0
  50. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/ai/models.py +0 -0
  51. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/ai/prompts.py +0 -0
  52. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/ai/providers/__init__.py +0 -0
  53. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/ai/providers/anthropic.py +0 -0
  54. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/ai/providers/base.py +0 -0
  55. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/ai/providers/google.py +0 -0
  56. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/ai/providers/openai.py +0 -0
  57. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/ai/providers/utils.py +0 -0
  58. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/authoring/__init__.py +0 -0
  59. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/constants.py +0 -0
  60. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/__init__.py +0 -0
  61. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/constants.py +0 -0
  62. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/enums.py +0 -0
  63. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/env_processor.py +0 -0
  64. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/environment_helpers.py +0 -0
  65. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/ergonomics.py +0 -0
  66. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/exceptions.py +0 -0
  67. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/functions.py +0 -0
  68. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/graph_models.py +0 -0
  69. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/internal.py +0 -0
  70. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/models/__init__.py +0 -0
  71. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/models/author.py +0 -0
  72. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/models/build.py +0 -0
  73. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/models/build_environment.py +0 -0
  74. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/models/core.py +0 -0
  75. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/models/datasource.py +0 -0
  76. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/models/execute.py +0 -0
  77. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/optimization.py +0 -0
  78. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/optimizations/__init__.py +0 -0
  79. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/optimizations/base_optimization.py +0 -0
  80. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/optimizations/hide_unused_concept.py +0 -0
  81. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/optimizations/inline_datasource.py +0 -0
  82. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/optimizations/predicate_pushdown.py +0 -0
  83. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/__init__.py +0 -0
  84. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/concept_strategies_v3.py +0 -0
  85. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/discovery_node_factory.py +0 -0
  86. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/discovery_validation.py +0 -0
  87. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/graph_utils.py +0 -0
  88. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/__init__.py +0 -0
  89. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/basic_node.py +0 -0
  90. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/common.py +0 -0
  91. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/constant_node.py +0 -0
  92. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/filter_node.py +0 -0
  93. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/group_node.py +0 -0
  94. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/group_to_node.py +0 -0
  95. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/multiselect_node.py +0 -0
  96. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/node_merge_node.py +0 -0
  97. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/recursive_node.py +0 -0
  98. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/rowset_node.py +0 -0
  99. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/select_helpers/__init__.py +0 -0
  100. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/select_helpers/datasource_injection.py +0 -0
  101. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/select_merge_node.py +0 -0
  102. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/select_node.py +0 -0
  103. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/synonym_node.py +0 -0
  104. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/union_node.py +0 -0
  105. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/unnest_node.py +0 -0
  106. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/node_generators/window_node.py +0 -0
  107. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/nodes/__init__.py +0 -0
  108. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/nodes/filter_node.py +0 -0
  109. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/nodes/group_node.py +0 -0
  110. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/nodes/merge_node.py +0 -0
  111. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/nodes/recursive_node.py +0 -0
  112. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/nodes/select_node_v2.py +0 -0
  113. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/nodes/union_node.py +0 -0
  114. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/nodes/unnest_node.py +0 -0
  115. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/nodes/window_node.py +0 -0
  116. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/processing/utility.py +0 -0
  117. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/query_processor.py +0 -0
  118. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/statements/__init__.py +0 -0
  119. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/statements/author.py +0 -0
  120. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/statements/build.py +0 -0
  121. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/statements/common.py +0 -0
  122. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/statements/execute.py +0 -0
  123. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/utility.py +0 -0
  124. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/validation/__init__.py +0 -0
  125. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/validation/common.py +0 -0
  126. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/validation/concept.py +0 -0
  127. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/validation/datasource.py +0 -0
  128. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/validation/environment.py +0 -0
  129. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/core/validation/fix.py +0 -0
  130. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/dialect/__init__.py +0 -0
  131. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/dialect/base.py +0 -0
  132. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/dialect/bigquery.py +0 -0
  133. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/dialect/common.py +0 -0
  134. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/dialect/config.py +0 -0
  135. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/dialect/dataframe.py +0 -0
  136. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/dialect/duckdb.py +0 -0
  137. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/dialect/enums.py +0 -0
  138. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/dialect/metadata.py +0 -0
  139. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/dialect/postgres.py +0 -0
  140. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/dialect/presto.py +0 -0
  141. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/dialect/snowflake.py +0 -0
  142. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/dialect/sql_server.py +0 -0
  143. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/engine.py +0 -0
  144. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/executor.py +0 -0
  145. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/hooks/__init__.py +0 -0
  146. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/hooks/base_hook.py +0 -0
  147. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/hooks/graph_hook.py +0 -0
  148. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/hooks/query_debugger.py +0 -0
  149. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/metadata/__init__.py +0 -0
  150. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/parser.py +0 -0
  151. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/parsing/__init__.py +0 -0
  152. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/parsing/common.py +0 -0
  153. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/parsing/config.py +0 -0
  154. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/parsing/exceptions.py +0 -0
  155. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/parsing/helpers.py +0 -0
  156. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/parsing/parse_engine.py +0 -0
  157. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/parsing/render.py +0 -0
  158. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/parsing/trilogy.lark +0 -0
  159. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/py.typed +0 -0
  160. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/render.py +0 -0
  161. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/scripts/__init__.py +0 -0
  162. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/scripts/trilogy.py +0 -0
  163. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/std/__init__.py +0 -0
  164. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/std/color.preql +0 -0
  165. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/std/date.preql +0 -0
  166. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/std/display.preql +0 -0
  167. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/std/geography.preql +0 -0
  168. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/std/metric.preql +0 -0
  169. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/std/money.preql +0 -0
  170. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/std/net.preql +0 -0
  171. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/std/ranking.preql +0 -0
  172. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/std/report.preql +0 -0
  173. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/std/semantic.preql +0 -0
  174. {pytrilogy-0.0.3.119 → pytrilogy-0.0.3.120}/trilogy/utility.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytrilogy
3
- Version: 0.0.3.119
3
+ Version: 0.0.3.120
4
4
  Summary: Declarative, typed query language that compiles to SQL.
5
5
  Classifier: Programming Language :: Python
6
6
  Classifier: Programming Language :: Python :: 3
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pytrilogy
3
- Version: 0.0.3.119
3
+ Version: 0.0.3.120
4
4
  Summary: Declarative, typed query language that compiles to SQL.
5
5
  Classifier: Programming Language :: Python
6
6
  Classifier: Programming Language :: Python :: 3
@@ -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.119"
7
+ __version__ = "0.0.3.120"
8
8
 
9
9
  __all__ = ["parse", "Executor", "Dialects", "Environment", "CONFIG"]
@@ -61,7 +61,7 @@ class Conversation:
61
61
  if "```" in content:
62
62
  parts = content.split("```")
63
63
  if len(parts) >= 3:
64
- return parts[1].strip()
64
+ return parts[-2].strip()
65
65
  return content
66
66
 
67
67
  def generate_query(
@@ -78,7 +78,7 @@ class Conversation:
78
78
  if not response.strip()[-1] == ";":
79
79
  response += ";"
80
80
  try:
81
- env, raw = environment.parse(response)
81
+ _, raw = environment.parse(response)
82
82
  process_query(statement=raw[-1], environment=environment)
83
83
  return response
84
84
  except (
@@ -90,10 +90,9 @@ class Conversation:
90
90
  ) as e2:
91
91
  e = e2
92
92
  self.add_message(
93
- f"The previous response could not be parsed due to the error: {str(e)}. Please generate a new query with the issues fixed. Use the same response format.",
93
+ f"Your extracted response - {response} - could not be parsed due to the error: {str(e)}. Please generate a new query with the issues fixed. Use the same response format.",
94
94
  role="user",
95
95
  )
96
-
97
96
  raise Exception(
98
97
  f"Failed to generate a valid query after {attempts} attempts. Last error: {str(e)}. Full conversation: {self.messages}"
99
98
  )
@@ -215,7 +215,7 @@ class Environment(BaseModel):
215
215
  functions: Dict[str, CustomFunctionFactory] = Field(default_factory=dict)
216
216
  data_types: Dict[str, CustomType] = Field(default_factory=dict)
217
217
  named_statements: Dict[str, SelectLineage] = Field(default_factory=dict)
218
- imports: Dict[str, list[Import]] = Field(
218
+ imports: defaultdict[str, list[Import]] = Field(
219
219
  default_factory=lambda: defaultdict(list) # type: ignore
220
220
  )
221
221
  namespace: str = DEFAULT_NAMESPACE
@@ -252,7 +252,7 @@ class Environment(BaseModel):
252
252
  concepts=self.concepts.duplicate(),
253
253
  functions=dict(self.functions),
254
254
  data_types=dict(self.data_types),
255
- imports=dict(self.imports),
255
+ imports=defaultdict(list, self.imports),
256
256
  namespace=self.namespace,
257
257
  working_path=self.working_path,
258
258
  environment_config=self.config.model_copy(deep=True),
@@ -262,6 +262,7 @@ class Environment(BaseModel):
262
262
  alias_origin_lookup={
263
263
  k: v.duplicate() for k, v in self.alias_origin_lookup.items()
264
264
  },
265
+ env_file_path=self.env_file_path,
265
266
  )
266
267
 
267
268
  def _add_path_concepts(self):
@@ -40,15 +40,15 @@ def calculate_effective_parent_grain(
40
40
  pairs = join.concept_pairs or []
41
41
  for key in pairs:
42
42
  left = key.existing_datasource
43
- logger.info(f"adding left grain {left.grain} for join key {key.left}")
43
+ logger.debug(f"adding left grain {left.grain} for join key {key.left}")
44
44
  grain += left.grain
45
45
  seen.add(left.name)
46
46
  keys = [key.right for key in pairs]
47
47
  join_grain = BuildGrain.from_concepts(keys)
48
48
  if join_grain == join.right_datasource.grain:
49
- logger.info(f"irrelevant right join {join}, does not change grain")
49
+ logger.debug(f"irrelevant right join {join}, does not change grain")
50
50
  else:
51
- logger.info(
51
+ logger.debug(
52
52
  f"join changes grain, adding {join.right_datasource.grain} to {grain}"
53
53
  )
54
54
  grain += join.right_datasource.grain
@@ -68,7 +68,7 @@ def calculate_effective_parent_grain(
68
68
  ]
69
69
  )
70
70
  ):
71
- logger.info(f"adding unjoined grain {x.grain} for datasource {x.name}")
71
+ logger.debug(f"adding unjoined grain {x.grain} for datasource {x.name}")
72
72
  grain += x.grain
73
73
  return grain
74
74
  else:
@@ -258,10 +258,14 @@ class StrategyNode:
258
258
  self.partial_lcl = LooseBuildConceptList(concepts=partials)
259
259
  return partials
260
260
 
261
- def add_output_concepts(self, concepts: List[BuildConcept], rebuild: bool = True):
261
+ def add_output_concepts(
262
+ self, concepts: List[BuildConcept], rebuild: bool = True, unhide: bool = True
263
+ ):
262
264
  for concept in concepts:
263
265
  if concept.address not in self.output_lcl.addresses:
264
266
  self.output_concepts.append(concept)
267
+ if unhide and concept.address in self.hidden_concepts:
268
+ self.hidden_concepts.remove(concept.address)
265
269
  self.output_lcl = LooseBuildConceptList(concepts=self.output_concepts)
266
270
  if rebuild:
267
271
  self.rebuild_cache()
File without changes
File without changes
File without changes