datajunction-query 0.0.1a106__py3-none-any.whl → 0.0.1a108__py3-none-any.whl

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.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: datajunction-query
3
- Version: 0.0.1a106
3
+ Version: 0.0.1a108
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>
@@ -1,8 +1,8 @@
1
- djqs/__about__.py,sha256=j78vxOUSY060CaSMf9BHgtejaUpHBmaFeGKqCo5EBT0,53
1
+ djqs/__about__.py,sha256=rVtLAopTAU0-BV-xPDIYfAygcjAnYbHwkO7T7s_9oZs,53
2
2
  djqs/__init__.py,sha256=nN5-uJoSVEwuc8n-wMygqeF0Xhxi_zqqbCgutZvAt3E,384
3
- djqs/config.py,sha256=8WLfe3M3maO4WhWb4ukrj8gdIlHQyLC4j9Q7KQ95bOQ,6662
3
+ djqs/config.py,sha256=2tfHXFbW9HgvIEQ1DT4_WnSfRoxCRHzS_ateekj0I94,6664
4
4
  djqs/constants.py,sha256=WS0uC-cKLQ_ZPhtevcv6tJ8WI6UtxYGZwTqJJtsTep0,485
5
- djqs/engine.py,sha256=xk6bkPvlXxUFPJHOyGOAWlOexl5UxvGwWJFjXkr1sbs,7341
5
+ djqs/engine.py,sha256=J5vHXG_xspI0AfJX3Mp0bZ99h5u7zJCVifDMZ-45w6g,7759
6
6
  djqs/enum.py,sha256=dHX8Z_0I_e7HQDUxQdpt18l7tC1P0NZru86ZGmMw23g,591
7
7
  djqs/exceptions.py,sha256=B9RqLG1Y3-5vz-iBiEKPIUBcE6TLpIfRZQ_rCyYFPqk,5983
8
8
  djqs/fixes.py,sha256=TcXnh0I1z4vEAupPatzrvnqyToGihndnxmLJtIn-_Z8,33
@@ -11,14 +11,14 @@ djqs/utils.py,sha256=iTctVXY4uSQnGn1O-_CdDXldiOwfufz582Lo8izox9M,906
11
11
  djqs/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  djqs/api/helpers.py,sha256=V-CFmflRYorZ90BI7b8EPWbsP8j7RKn0aDItC3-_QdQ,1359
13
13
  djqs/api/main.py,sha256=SR0vbX0W1v8orfluyfsALrT1G3bF9emH1KBWoO9lcyw,2237
14
- djqs/api/queries.py,sha256=jr07a8Yxj3YrJ4yT18hGw5WLavIFTq2OZ_ixfghe1Yo,7742
15
- djqs/api/tables.py,sha256=XsjfpKJDerE3N2zeSr-ymw2cI-AcHqK7wGasXTWrFZg,1675
14
+ djqs/api/queries.py,sha256=mcYI2xTvnBnHiNZcw0n5gjGdlAJbvmGsY6xovx_yjmE,7905
15
+ djqs/api/tables.py,sha256=c3_VugV5fqGQU0uf5Mn7fx7LJ6ZjzOB5svCW40r_yE0,1626
16
16
  djqs/db/postgres.py,sha256=MnCKlZiX3PgS3qGUvwXHfjrV9Bgjb_css7x7vSlZ6_8,4863
17
17
  djqs/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  djqs/models/query.py,sha256=n02TPSq8cZOuH49FyVieVwhGdrkaZ-4NpqCSuOgL5X4,3324
19
19
  djqs/models/table.py,sha256=EEJigO3RNjn-O9VWD7n3BtcvyKokQUiI5mfwKaGe-Lc,239
20
- datajunction_query-0.0.1a106.dist-info/METADATA,sha256=UXLZ6LuaM5PNSCJJJYrO0RzZiB7fUDpPU7UUM_zCxwU,9526
21
- datajunction_query-0.0.1a106.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
22
- datajunction_query-0.0.1a106.dist-info/licenses/AUTHORS.rst,sha256=G9YmXPfQ0kAuxqlCwvWVvUnZitP9hAc-rPfZ5q7Pv1U,235
23
- datajunction_query-0.0.1a106.dist-info/licenses/LICENSE.txt,sha256=KuSxhVgPuUGoYWphJig4POcTAIUNLUj8vOx-cqQFMj8,1081
24
- datajunction_query-0.0.1a106.dist-info/RECORD,,
20
+ datajunction_query-0.0.1a108.dist-info/METADATA,sha256=ViTRh2vTsjuFst8luulXYwJp-Zyws1x5WY_W5laFLpU,9526
21
+ datajunction_query-0.0.1a108.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
22
+ datajunction_query-0.0.1a108.dist-info/licenses/AUTHORS.rst,sha256=G9YmXPfQ0kAuxqlCwvWVvUnZitP9hAc-rPfZ5q7Pv1U,235
23
+ datajunction_query-0.0.1a108.dist-info/licenses/LICENSE.txt,sha256=KuSxhVgPuUGoYWphJig4POcTAIUNLUj8vOx-cqQFMj8,1081
24
+ datajunction_query-0.0.1a108.dist-info/RECORD,,
djqs/__about__.py CHANGED
@@ -2,4 +2,4 @@
2
2
  Version for Hatch
3
3
  """
4
4
 
5
- __version__ = "0.0.1a106"
5
+ __version__ = "0.0.1a108"
djqs/api/queries.py CHANGED
@@ -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)
djqs/api/tables.py CHANGED
@@ -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(
djqs/config.py CHANGED
@@ -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] = "",
djqs/engine.py CHANGED
@@ -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(