datajunction-query 0.0.1a106__tar.gz → 0.0.1a107__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 datajunction-query might be problematic. Click here for more details.

Files changed (83) hide show
  1. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/PKG-INFO +1 -1
  2. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/config.djqs.yml +7 -0
  3. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/__about__.py +1 -1
  4. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/api/queries.py +6 -4
  5. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/api/tables.py +2 -3
  6. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/config.py +1 -1
  7. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/engine.py +20 -3
  8. datajunction_query-0.0.1a107/pdm.lock +1929 -0
  9. datajunction_query-0.0.1a107/tests/models/test_engine.py +37 -0
  10. datajunction_query-0.0.1a106/pdm.lock +0 -1861
  11. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/.coveragerc +0 -0
  12. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/.flake8 +0 -0
  13. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/.gitignore +0 -0
  14. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/.isort.cfg +0 -0
  15. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/.pre-commit-config.yaml +0 -0
  16. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/.pylintrc +0 -0
  17. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/.readthedocs.yml +0 -0
  18. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/AUTHORS.rst +0 -0
  19. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/CODE_OF_CONDUCT.md +0 -0
  20. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/Dockerfile +0 -0
  21. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/LICENSE.txt +0 -0
  22. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/Makefile +0 -0
  23. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/README.rst +0 -0
  24. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/alembic/README +0 -0
  25. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/alembic/env.py +0 -0
  26. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/alembic/script.py.mako +0 -0
  27. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/alembic/versions/2024_09_09_0000-b8f22b3549c7_initial_migration.py +0 -0
  28. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/alembic.ini +0 -0
  29. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/config.jsonschema +0 -0
  30. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/__init__.py +0 -0
  31. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/api/__init__.py +0 -0
  32. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/api/helpers.py +0 -0
  33. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/api/main.py +0 -0
  34. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/constants.py +0 -0
  35. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/db/postgres.py +0 -0
  36. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/enum.py +0 -0
  37. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/exceptions.py +0 -0
  38. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/fixes.py +0 -0
  39. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/models/__init__.py +0 -0
  40. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/models/query.py +0 -0
  41. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/models/table.py +0 -0
  42. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/typing.py +0 -0
  43. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/djqs/utils.py +0 -0
  44. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/docker/cockroachdb/cockroachdb_examples_init.sql +0 -0
  45. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/docker/cockroachdb/cockroachdb_metadata_init.sql +0 -0
  46. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/docker/cockroachdb/steam-games.csv +0 -0
  47. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/docker/cockroachdb/steam-hours-played.csv +0 -0
  48. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/docker/default.duckdb +0 -0
  49. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/docker/druid_environment +0 -0
  50. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/docker/druid_init.sh +0 -0
  51. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/docker/druid_spec.json +0 -0
  52. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/docker/duckdb.sql +0 -0
  53. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/docker/duckdb_load.py +0 -0
  54. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/docker/postgres_init.roads.sql +0 -0
  55. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/docker/postgres_init.sql +0 -0
  56. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/docker/spark.roads.sql +0 -0
  57. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/docker/spark_load_roads.py +0 -0
  58. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/docker/wait-for +0 -0
  59. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/openapi.json +0 -0
  60. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/pyproject.toml +0 -0
  61. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/scripts/generate-openapi.py +0 -0
  62. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/setup.cfg +0 -0
  63. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/__init__.py +0 -0
  64. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/api/__init__.py +0 -0
  65. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/api/queries_test.py +0 -0
  66. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/api/table_test.py +0 -0
  67. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/config.djqs.yml +0 -0
  68. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/conftest.py +0 -0
  69. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/exceptions_test.py +0 -0
  70. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/resources/contractors.parquet +0 -0
  71. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/resources/dispatchers.parquet +0 -0
  72. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/resources/hard_hat_state.parquet +0 -0
  73. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/resources/hard_hats.parquet +0 -0
  74. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/resources/municipality.parquet +0 -0
  75. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/resources/municipality_municipality_type.parquet +0 -0
  76. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/resources/municipality_type.parquet +0 -0
  77. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/resources/repair_order_details.parquet +0 -0
  78. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/resources/repair_orders.parquet +0 -0
  79. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/resources/repair_type.parquet +0 -0
  80. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/resources/us_region.parquet +0 -0
  81. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/resources/us_states.parquet +0 -0
  82. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tests/utils_test.py +0 -0
  83. {datajunction_query-0.0.1a106 → datajunction_query-0.0.1a107}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datajunction-query
3
- Version: 0.0.1a106
3
+ Version: 0.0.1a107
4
4
  Summary: OSS Implementation of a DataJunction Query Service
5
5
  Project-URL: repository, https://github.com/DataJunction/dj
6
6
  Author-email: DataJunction Authors <roberto@dealmeida.net>
@@ -12,6 +12,10 @@ engines:
12
12
  extra_params:
13
13
  http_scheme: http
14
14
  user: admin
15
+ - name: dj_system
16
+ version: ''
17
+ type: sqlalchemy
18
+ uri: postgresql+psycopg://readonly_user:readonly_pass@postgres_metadata:5432/dj
15
19
  catalogs:
16
20
  - name: warehouse
17
21
  engines:
@@ -19,3 +23,6 @@ catalogs:
19
23
  - name: tpch
20
24
  engines:
21
25
  - trino
26
+ - name: dj
27
+ engines:
28
+ - dj_system
@@ -2,4 +2,4 @@
2
2
  Version for Hatch
3
3
  """
4
4
 
5
- __version__ = "0.0.1a106"
5
+ __version__ = "0.0.1a107"
@@ -93,10 +93,12 @@ async def submit_query( # pylint: disable=too-many-arguments
93
93
  )
94
94
 
95
95
  # Set default catalog and engine if not explicitly specified in submitted query
96
- data["engine_name"] = data.get("engine_name") or settings.default_engine
97
- data["engine_version"] = (
98
- data.get("engine_version") or settings.default_engine_version
99
- )
96
+ if not data.get("engine_name") and not data.get("engine_version"):
97
+ data["engine_name"] = settings.default_engine
98
+ data["engine_version"] = settings.default_engine_version
99
+ else:
100
+ data["engine_name"] = data.get("engine_name") or settings.default_engine
101
+ data["engine_version"] = data.get("engine_version") or ""
100
102
  data["catalog_name"] = data.get("catalog_name") or settings.default_catalog
101
103
 
102
104
  create_query = QueryCreate(**data)
@@ -31,11 +31,10 @@ def table_columns(
31
31
  f"for `table` must be in the format `<catalog>.<schema>.<table>`",
32
32
  )
33
33
  settings = get_settings()
34
-
35
- if engine and engine_version:
34
+ if engine:
36
35
  engine_config = settings.find_engine(
37
36
  engine_name=engine,
38
- engine_version=engine_version or settings.default_engine_version,
37
+ engine_version=engine_version or "",
39
38
  )
40
39
  else:
41
40
  engine_config = settings.find_engine(
@@ -70,7 +70,7 @@ class Settings: # pylint: disable=too-many-instance-attributes
70
70
  name: Optional[str] = "DJQS",
71
71
  description: Optional[str] = "A DataJunction Query Service",
72
72
  url: Optional[str] = "http://localhost:8001/",
73
- index: Optional[str] = "postgresql://dj:dj@postgres_metadata:5432/dj",
73
+ index: Optional[str] = "postgresql://dj:dj@postgres_metadata:5432/djqs",
74
74
  default_catalog: Optional[str] = "",
75
75
  default_engine: Optional[str] = "",
76
76
  default_engine_version: Optional[str] = "",
@@ -6,7 +6,7 @@ import json
6
6
  import logging
7
7
  import os
8
8
  from dataclasses import asdict
9
- from datetime import datetime, timezone
9
+ from datetime import date, datetime, timezone
10
10
  from typing import Dict, List, Optional, Tuple
11
11
 
12
12
  import duckdb
@@ -84,7 +84,7 @@ def run_query( # pylint: disable=R0914
84
84
 
85
85
  settings = get_settings()
86
86
  engine_name = query.engine_name or settings.default_engine
87
- engine_version = query.engine_version or settings.default_engine_version
87
+ engine_version = query.engine_version
88
88
  engine = settings.find_engine(
89
89
  engine_name=engine_name,
90
90
  engine_version=engine_version,
@@ -164,6 +164,19 @@ def run_snowflake_query(
164
164
  return output
165
165
 
166
166
 
167
+ def serialize_for_json(obj):
168
+ """
169
+ Handle serialization of date/datetimes for JSON output.
170
+ """
171
+ if isinstance(obj, list):
172
+ return [serialize_for_json(x) for x in obj]
173
+ if isinstance(obj, dict):
174
+ return {k: serialize_for_json(v) for k, v in obj.items()}
175
+ if isinstance(obj, (date, datetime)):
176
+ return obj.isoformat()
177
+ return obj
178
+
179
+
167
180
  async def process_query(
168
181
  settings: Settings,
169
182
  postgres_pool: AsyncConnectionPool,
@@ -221,7 +234,11 @@ async def process_query(
221
234
 
222
235
  settings.results_backend.add(
223
236
  str(query.id),
224
- json.dumps([asdict(statement_result) for statement_result in results]),
237
+ json.dumps(
238
+ serialize_for_json(
239
+ [asdict(statement_result) for statement_result in results],
240
+ ),
241
+ ),
225
242
  )
226
243
 
227
244
  return QueryResults(