query-cache-common 1.9.0__tar.gz → 1.9.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 (21) hide show
  1. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/.gitignore +7 -2
  2. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/PKG-INFO +1 -1
  3. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/utils.py +25 -3
  4. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/pyproject.toml +0 -0
  5. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/__init__.py +0 -0
  6. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/auth.py +0 -0
  7. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/constants.py +0 -0
  8. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/decorators.py +0 -0
  9. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/models/__init__.py +0 -0
  10. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/models/_typing.py +0 -0
  11. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/models/base.py +0 -0
  12. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/models/converters.py +0 -0
  13. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/models/fields.py +0 -0
  14. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/models/services/__init__.py +0 -0
  15. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/models/services/client_telemetry_service_models.py +0 -0
  16. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/models/services/client_validation_service_models.py +0 -0
  17. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/models/services/clone_service_models.py +0 -0
  18. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/models/services/execution_service_models.py +0 -0
  19. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/models/services/explain_service_models.py +0 -0
  20. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/models/services/sql_service_models.py +0 -0
  21. {query_cache_common-1.9.0 → query_cache_common-1.9.2}/src/query_cache_common/models/shared_models.py +0 -0
@@ -213,9 +213,11 @@ data/
213
213
  # Service account credentials
214
214
  .creds/
215
215
 
216
- # Load test generated files
217
- tooling/load_test/data/*.json
216
+ # Load test generated files (flat JSONs + timestamped run dirs)
217
+ tooling/load_test/data/
218
218
  tooling/load_test/proto/
219
+ # Active k8s load-test run ID written by k8s prepare-run.
220
+ tooling/load_test/k8s/.run-id
219
221
 
220
222
  # Turbo integration test
221
223
  tests/integration/dbt_run_cache_turbo/projects/
@@ -229,3 +231,6 @@ docs/superpowers/
229
231
 
230
232
  # Git worktrees
231
233
  .worktrees/
234
+
235
+ # Google Antigravity CLI (agy)
236
+ .antigravitycli/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: query-cache-common
3
- Version: 1.9.0
3
+ Version: 1.9.2
4
4
  Summary: Common code for Query Cache shared across client and server
5
5
  License:
6
6
  Apache License
@@ -26,23 +26,45 @@ 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
32
51
 
33
52
 
34
53
  def extract_select_from_ctas(create: CreateStatement) -> SqlglotExpression:
35
- """Extract the SELECT statement from a CREATE TABLE / VIEW AS statement.
54
+ """Extract the query from a CREATE TABLE / VIEW AS statement.
55
+
56
+ The query body may be a single SELECT or a set operation (UNION / INTERSECT /
57
+ EXCEPT), optionally wrapped in parentheses.
36
58
 
37
59
  Args:
38
60
  create: The CTAS statement.
39
61
 
40
62
  Returns:
41
- The extracted SELECT statement.
63
+ The extracted query expression.
42
64
  """
43
65
  from sqlglot import exp
44
66
 
45
- if not isinstance(create.expression, (exp.Subquery, exp.Select)):
67
+ if not isinstance(create.expression, (exp.Subquery, exp.Query)):
46
68
  raise ValueError(
47
69
  "Invalid CREATE statement. Only CREATE ... AS SELECT statements are supported"
48
70
  )