gaard-core 0.2.0__tar.gz → 0.2.2__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.
Files changed (57) hide show
  1. {gaard_core-0.2.0 → gaard_core-0.2.2}/PKG-INFO +2 -2
  2. {gaard_core-0.2.0 → gaard_core-0.2.2}/pyproject.toml +2 -2
  3. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/query_intent/llm_classifier.py +2 -2
  4. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/query_pipeline/models.py +1 -0
  5. gaard_core-0.2.2/src/gaard_core/sql_validator/__init__.py +0 -0
  6. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/sql_validator/select_only.py +1 -1
  7. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core.egg-info/PKG-INFO +2 -2
  8. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core.egg-info/SOURCES.txt +1 -0
  9. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core.egg-info/requires.txt +1 -1
  10. {gaard_core-0.2.0 → gaard_core-0.2.2}/tests/test_sql_validator.py +6 -0
  11. {gaard_core-0.2.0 → gaard_core-0.2.2}/README.md +0 -0
  12. {gaard_core-0.2.0 → gaard_core-0.2.2}/setup.cfg +0 -0
  13. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/__init__.py +0 -0
  14. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/errors.py +0 -0
  15. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/execution/__init__.py +0 -0
  16. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/execution/mock_executor.py +0 -0
  17. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/json_utils.py +0 -0
  18. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/llm_output.py +0 -0
  19. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/prompt_compiler/__init__.py +0 -0
  20. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/prompt_compiler/intent_classification_prompt.py +0 -0
  21. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/prompt_compiler/models.py +0 -0
  22. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/prompt_compiler/result_classification_prompt.py +0 -0
  23. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/prompt_compiler/result_interpretation_prompt.py +0 -0
  24. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/prompt_compiler/schema_formatter.py +0 -0
  25. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/prompt_compiler/sql_generation_prompt.py +0 -0
  26. /gaard_core-0.2.0/src/gaard_core/query_pipeline/__init__.py → /gaard_core-0.2.2/src/gaard_core/py.typed +0 -0
  27. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/query_intent/__init__.py +0 -0
  28. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/query_intent/mock_classifier.py +0 -0
  29. {gaard_core-0.2.0/src/gaard_core/result_interpreter → gaard_core-0.2.2/src/gaard_core/query_pipeline}/__init__.py +0 -0
  30. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/query_pipeline/llm_sql_generator.py +0 -0
  31. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/query_pipeline/mock_sql_generator.py +0 -0
  32. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/query_pipeline/pipeline.py +0 -0
  33. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/result_classifier/__init__.py +0 -0
  34. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/result_classifier/llm_classifier.py +0 -0
  35. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/result_classifier/mock_classifier.py +0 -0
  36. {gaard_core-0.2.0/src/gaard_core/schema → gaard_core-0.2.2/src/gaard_core/result_interpreter}/__init__.py +0 -0
  37. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/result_interpreter/llm_interpreter.py +0 -0
  38. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/result_interpreter/mock_interpreter.py +0 -0
  39. {gaard_core-0.2.0/src/gaard_core/sql_validator → gaard_core-0.2.2/src/gaard_core/schema}/__init__.py +0 -0
  40. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/schema/cache.py +0 -0
  41. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/schema/context.py +0 -0
  42. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core/schema/models.py +0 -0
  43. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core.egg-info/dependency_links.txt +0 -0
  44. {gaard_core-0.2.0 → gaard_core-0.2.2}/src/gaard_core.egg-info/top_level.txt +0 -0
  45. {gaard_core-0.2.0 → gaard_core-0.2.2}/tests/test_json_utils.py +0 -0
  46. {gaard_core-0.2.0 → gaard_core-0.2.2}/tests/test_llm_output.py +0 -0
  47. {gaard_core-0.2.0 → gaard_core-0.2.2}/tests/test_llm_query_intent_classifier.py +0 -0
  48. {gaard_core-0.2.0 → gaard_core-0.2.2}/tests/test_llm_result_classifier.py +0 -0
  49. {gaard_core-0.2.0 → gaard_core-0.2.2}/tests/test_llm_result_interpreter.py +0 -0
  50. {gaard_core-0.2.0 → gaard_core-0.2.2}/tests/test_llm_sql_generator.py +0 -0
  51. {gaard_core-0.2.0 → gaard_core-0.2.2}/tests/test_query_pipeline.py +0 -0
  52. {gaard_core-0.2.0 → gaard_core-0.2.2}/tests/test_result_classification_prompt_compiler.py +0 -0
  53. {gaard_core-0.2.0 → gaard_core-0.2.2}/tests/test_result_interpretation_prompt_compiler.py +0 -0
  54. {gaard_core-0.2.0 → gaard_core-0.2.2}/tests/test_schema_context_cache.py +0 -0
  55. {gaard_core-0.2.0 → gaard_core-0.2.2}/tests/test_schema_context_service.py +0 -0
  56. {gaard_core-0.2.0 → gaard_core-0.2.2}/tests/test_schema_prompt_formatter.py +0 -0
  57. {gaard_core-0.2.0 → gaard_core-0.2.2}/tests/test_sql_generation_prompt_compiler.py +0 -0
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gaard-core
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: Core GAARD query pipeline, prompt compiler, policies and SQL validation
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
7
- Requires-Dist: gaard-plugin-api<0.3.0,>=0.2.0
7
+ Requires-Dist: gaard-plugin-api<0.3.0,>=0.2.2
8
8
  Requires-Dist: pydantic>=2.7.0
9
9
  Requires-Dist: sqlglot>=25.0.0
10
10
  Provides-Extra: dev
@@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "gaard-core"
7
- version = "0.2.0"
7
+ version = "0.2.2"
8
8
  description = "Core GAARD query pipeline, prompt compiler, policies and SQL validation"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
11
11
  dependencies = [
12
- "gaard-plugin-api>=0.2.0,<0.3.0",
12
+ "gaard-plugin-api>=0.2.2,<0.3.0",
13
13
  "pydantic>=2.7.0",
14
14
  "sqlglot>=25.0.0",
15
15
  ]
@@ -1,5 +1,5 @@
1
1
  import json
2
- from typing import Any, Protocol
2
+ from typing import Any, Protocol, cast
3
3
 
4
4
  from gaard_core.llm_output import remove_thinking_blocks
5
5
  from gaard_core.prompt_compiler.intent_classification_prompt import (
@@ -105,7 +105,7 @@ def parse_query_intent_decision(value: object) -> QueryIntentDecision:
105
105
 
106
106
  def parse_confidence(value: object) -> float:
107
107
  try:
108
- confidence = float(value)
108
+ confidence = float(cast(Any, value))
109
109
  except (TypeError, ValueError):
110
110
  return 0.0
111
111
 
@@ -29,6 +29,7 @@ class QueryIntentClassification(BaseModel):
29
29
  class QueryRequest(BaseModel):
30
30
  question: str = Field(min_length=1)
31
31
  datasource_id: str = "default"
32
+ datasource_ids: list[str] = Field(default_factory=list)
32
33
  user_id: str = "local-admin"
33
34
  interpret: bool = True
34
35
 
@@ -19,7 +19,7 @@ class SelectOnlySqlValidator:
19
19
 
20
20
  statement = statements[0]
21
21
 
22
- if not isinstance(statement, exp.Select):
22
+ if not isinstance(statement, (exp.Select, exp.SetOperation)):
23
23
  raise SqlValidationError(f"Only SELECT queries are allowed. {sql}")
24
24
 
25
25
  forbidden_expressions = (
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gaard-core
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: Core GAARD query pipeline, prompt compiler, policies and SQL validation
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
7
- Requires-Dist: gaard-plugin-api<0.3.0,>=0.2.0
7
+ Requires-Dist: gaard-plugin-api<0.3.0,>=0.2.2
8
8
  Requires-Dist: pydantic>=2.7.0
9
9
  Requires-Dist: sqlglot>=25.0.0
10
10
  Provides-Extra: dev
@@ -4,6 +4,7 @@ src/gaard_core/__init__.py
4
4
  src/gaard_core/errors.py
5
5
  src/gaard_core/json_utils.py
6
6
  src/gaard_core/llm_output.py
7
+ src/gaard_core/py.typed
7
8
  src/gaard_core.egg-info/PKG-INFO
8
9
  src/gaard_core.egg-info/SOURCES.txt
9
10
  src/gaard_core.egg-info/dependency_links.txt
@@ -1,4 +1,4 @@
1
- gaard-plugin-api<0.3.0,>=0.2.0
1
+ gaard-plugin-api<0.3.0,>=0.2.2
2
2
  pydantic>=2.7.0
3
3
  sqlglot>=25.0.0
4
4
 
@@ -22,6 +22,12 @@ def test_validator_accepts_mysql_quoted_identifier() -> None:
22
22
  validator.validate("SELECT COUNT(*) AS total_leads FROM `lead`")
23
23
 
24
24
 
25
+ def test_validator_accepts_union_of_literal_selects() -> None:
26
+ validator = SelectOnlySqlValidator()
27
+
28
+ validator.validate("SELECT 'form_id' AS column_name UNION ALL SELECT 'status'")
29
+
30
+
25
31
  def test_validator_rejects_delete() -> None:
26
32
  validator = SelectOnlySqlValidator()
27
33
 
File without changes
File without changes