query-cache-common 1.9.1__tar.gz → 1.10.0__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 (21) hide show
  1. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/PKG-INFO +1 -1
  2. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/models/services/execution_service_models.py +2 -0
  3. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/models/services/sql_service_models.py +1 -0
  4. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/models/shared_models.py +16 -0
  5. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/utils.py +19 -0
  6. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/.gitignore +0 -0
  7. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/pyproject.toml +0 -0
  8. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/__init__.py +0 -0
  9. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/auth.py +0 -0
  10. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/constants.py +0 -0
  11. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/decorators.py +0 -0
  12. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/models/__init__.py +0 -0
  13. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/models/_typing.py +0 -0
  14. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/models/base.py +0 -0
  15. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/models/converters.py +0 -0
  16. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/models/fields.py +0 -0
  17. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/models/services/__init__.py +0 -0
  18. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/models/services/client_telemetry_service_models.py +0 -0
  19. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/models/services/client_validation_service_models.py +0 -0
  20. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/models/services/clone_service_models.py +0 -0
  21. {query_cache_common-1.9.1 → query_cache_common-1.10.0}/src/query_cache_common/models/services/explain_service_models.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: query-cache-common
3
- Version: 1.9.1
3
+ Version: 1.10.0
4
4
  Summary: Common code for Query Cache shared across client and server
5
5
  License:
6
6
  Apache License
@@ -47,6 +47,7 @@ class SQLExecution(BaseSerDeModel):
47
47
  query_dependencies: t.List[shared_models.QueryDependency] = field(default_factory=list)
48
48
  semantic_extras: t.Dict[str, str] = field(default_factory=dict)
49
49
  labels: t.Dict[str, str] = field(default_factory=dict)
50
+ dbt_node_state: t.Optional[shared_models.DbtNodeState] = None
50
51
 
51
52
  @classmethod
52
53
  def from_submit_sql_request(
@@ -62,6 +63,7 @@ class SQLExecution(BaseSerDeModel):
62
63
  query_dependencies=req.query_dependencies,
63
64
  semantic_extras=req.semantic_extras,
64
65
  labels=req.labels,
66
+ dbt_node_state=req.dbt_node_state,
65
67
  )
66
68
 
67
69
 
@@ -47,6 +47,7 @@ class SubmitEnrichedSQLRequest(BaseSerDeModel):
47
47
  clone_table_properties: t.Optional[TableProperties] = None
48
48
  stale_upstream_policy: shared_models.StaleUpstreamPolicy = shared_models.StaleUpstreamPolicy.ANY
49
49
  clone_chain_depth_limit: t.Optional[int] = None
50
+ dbt_node_state: t.Optional[shared_models.DbtNodeState] = None
50
51
 
51
52
 
52
53
  @proto_dataclass(sql_service_pb2.QueryHashMatchMetadataInfo)
@@ -101,3 +101,19 @@ class ExplainedDecision(BaseSerDeModel):
101
101
  clone_rejection_reason=RejectionReason.NO_SUITABLE_MATCH_FOUND,
102
102
  is_stale=False,
103
103
  )
104
+
105
+
106
+ @proto_dataclass(shared_pb2.DbtNodeState)
107
+ class DbtNodeState(BaseSerDeModel):
108
+ node_unique_id: str
109
+ target_name: str
110
+ project_name: str
111
+ resource_type: str
112
+ node_hash: str
113
+ node_body_hash: str
114
+ node_configs_hash: str
115
+ node_relation_hash: str
116
+ node_macros_hash: str
117
+ node_contract_hash: str
118
+ profile_name: str
119
+ node_persisted_descriptions_hash: t.Optional[str] = None
@@ -26,6 +26,25 @@ def str_to_bool(s: str | None) -> bool:
26
26
  return s.lower() in ("true", "1", "t", "y", "yes", "on")
27
27
 
28
28
 
29
+ def to_bool(value: t.Any) -> bool:
30
+ """Coerce a bool, int, or string to a boolean.
31
+
32
+ Unlike str_to_bool, this accepts bools and ints directly (strings are delegated to
33
+ str_to_bool) and raises ValueError for any other type rather than silently
34
+ returning False.
35
+ """
36
+ if isinstance(value, bool):
37
+ return value
38
+ if isinstance(value, str):
39
+ return str_to_bool(value)
40
+ if isinstance(value, int):
41
+ return bool(value)
42
+ raise ValueError(
43
+ f"Cannot convert value of type {type(value).__name__} to bool: {value!r}. "
44
+ "Expected bool, int, or string (e.g., 'true', 'false', 'yes', 'no')."
45
+ )
46
+
47
+
29
48
  def current_epoch_millis() -> int:
30
49
  """Return the current time in milliseconds since Unix epoch."""
31
50
  return time.time_ns() // 1_000_000