sqlspec 0.16.1__cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.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 sqlspec might be problematic. Click here for more details.
- 51ff5a9eadfdefd49f98__mypyc.cpython-39-x86_64-linux-gnu.so +0 -0
- sqlspec/__init__.py +92 -0
- sqlspec/__main__.py +12 -0
- sqlspec/__metadata__.py +14 -0
- sqlspec/_serialization.py +77 -0
- sqlspec/_sql.py +1780 -0
- sqlspec/_typing.py +680 -0
- sqlspec/adapters/__init__.py +0 -0
- sqlspec/adapters/adbc/__init__.py +5 -0
- sqlspec/adapters/adbc/_types.py +12 -0
- sqlspec/adapters/adbc/config.py +361 -0
- sqlspec/adapters/adbc/driver.py +512 -0
- sqlspec/adapters/aiosqlite/__init__.py +19 -0
- sqlspec/adapters/aiosqlite/_types.py +13 -0
- sqlspec/adapters/aiosqlite/config.py +253 -0
- sqlspec/adapters/aiosqlite/driver.py +248 -0
- sqlspec/adapters/asyncmy/__init__.py +19 -0
- sqlspec/adapters/asyncmy/_types.py +12 -0
- sqlspec/adapters/asyncmy/config.py +180 -0
- sqlspec/adapters/asyncmy/driver.py +274 -0
- sqlspec/adapters/asyncpg/__init__.py +21 -0
- sqlspec/adapters/asyncpg/_types.py +17 -0
- sqlspec/adapters/asyncpg/config.py +229 -0
- sqlspec/adapters/asyncpg/driver.py +344 -0
- sqlspec/adapters/bigquery/__init__.py +18 -0
- sqlspec/adapters/bigquery/_types.py +12 -0
- sqlspec/adapters/bigquery/config.py +298 -0
- sqlspec/adapters/bigquery/driver.py +558 -0
- sqlspec/adapters/duckdb/__init__.py +22 -0
- sqlspec/adapters/duckdb/_types.py +12 -0
- sqlspec/adapters/duckdb/config.py +504 -0
- sqlspec/adapters/duckdb/driver.py +368 -0
- sqlspec/adapters/oracledb/__init__.py +32 -0
- sqlspec/adapters/oracledb/_types.py +14 -0
- sqlspec/adapters/oracledb/config.py +317 -0
- sqlspec/adapters/oracledb/driver.py +538 -0
- sqlspec/adapters/psqlpy/__init__.py +16 -0
- sqlspec/adapters/psqlpy/_types.py +11 -0
- sqlspec/adapters/psqlpy/config.py +214 -0
- sqlspec/adapters/psqlpy/driver.py +530 -0
- sqlspec/adapters/psycopg/__init__.py +32 -0
- sqlspec/adapters/psycopg/_types.py +17 -0
- sqlspec/adapters/psycopg/config.py +426 -0
- sqlspec/adapters/psycopg/driver.py +796 -0
- sqlspec/adapters/sqlite/__init__.py +15 -0
- sqlspec/adapters/sqlite/_types.py +11 -0
- sqlspec/adapters/sqlite/config.py +240 -0
- sqlspec/adapters/sqlite/driver.py +294 -0
- sqlspec/base.py +571 -0
- sqlspec/builder/__init__.py +62 -0
- sqlspec/builder/_base.py +473 -0
- sqlspec/builder/_column.py +320 -0
- sqlspec/builder/_ddl.py +1346 -0
- sqlspec/builder/_ddl_utils.py +103 -0
- sqlspec/builder/_delete.py +76 -0
- sqlspec/builder/_insert.py +256 -0
- sqlspec/builder/_merge.py +71 -0
- sqlspec/builder/_parsing_utils.py +140 -0
- sqlspec/builder/_select.py +170 -0
- sqlspec/builder/_update.py +188 -0
- sqlspec/builder/mixins/__init__.py +55 -0
- sqlspec/builder/mixins/_cte_and_set_ops.py +222 -0
- sqlspec/builder/mixins/_delete_operations.py +41 -0
- sqlspec/builder/mixins/_insert_operations.py +244 -0
- sqlspec/builder/mixins/_join_operations.py +122 -0
- sqlspec/builder/mixins/_merge_operations.py +476 -0
- sqlspec/builder/mixins/_order_limit_operations.py +135 -0
- sqlspec/builder/mixins/_pivot_operations.py +153 -0
- sqlspec/builder/mixins/_select_operations.py +603 -0
- sqlspec/builder/mixins/_update_operations.py +187 -0
- sqlspec/builder/mixins/_where_clause.py +621 -0
- sqlspec/cli.py +247 -0
- sqlspec/config.py +395 -0
- sqlspec/core/__init__.py +63 -0
- sqlspec/core/cache.cpython-39-x86_64-linux-gnu.so +0 -0
- sqlspec/core/cache.py +871 -0
- sqlspec/core/compiler.cpython-39-x86_64-linux-gnu.so +0 -0
- sqlspec/core/compiler.py +417 -0
- sqlspec/core/filters.cpython-39-x86_64-linux-gnu.so +0 -0
- sqlspec/core/filters.py +830 -0
- sqlspec/core/hashing.cpython-39-x86_64-linux-gnu.so +0 -0
- sqlspec/core/hashing.py +310 -0
- sqlspec/core/parameters.cpython-39-x86_64-linux-gnu.so +0 -0
- sqlspec/core/parameters.py +1237 -0
- sqlspec/core/result.cpython-39-x86_64-linux-gnu.so +0 -0
- sqlspec/core/result.py +677 -0
- sqlspec/core/splitter.cpython-39-x86_64-linux-gnu.so +0 -0
- sqlspec/core/splitter.py +819 -0
- sqlspec/core/statement.cpython-39-x86_64-linux-gnu.so +0 -0
- sqlspec/core/statement.py +676 -0
- sqlspec/driver/__init__.py +19 -0
- sqlspec/driver/_async.py +502 -0
- sqlspec/driver/_common.py +631 -0
- sqlspec/driver/_sync.py +503 -0
- sqlspec/driver/mixins/__init__.py +6 -0
- sqlspec/driver/mixins/_result_tools.py +193 -0
- sqlspec/driver/mixins/_sql_translator.py +86 -0
- sqlspec/exceptions.py +193 -0
- sqlspec/extensions/__init__.py +0 -0
- sqlspec/extensions/aiosql/__init__.py +10 -0
- sqlspec/extensions/aiosql/adapter.py +461 -0
- sqlspec/extensions/litestar/__init__.py +6 -0
- sqlspec/extensions/litestar/_utils.py +52 -0
- sqlspec/extensions/litestar/cli.py +48 -0
- sqlspec/extensions/litestar/config.py +92 -0
- sqlspec/extensions/litestar/handlers.py +260 -0
- sqlspec/extensions/litestar/plugin.py +145 -0
- sqlspec/extensions/litestar/providers.py +454 -0
- sqlspec/loader.cpython-39-x86_64-linux-gnu.so +0 -0
- sqlspec/loader.py +760 -0
- sqlspec/migrations/__init__.py +35 -0
- sqlspec/migrations/base.py +414 -0
- sqlspec/migrations/commands.py +443 -0
- sqlspec/migrations/loaders.py +402 -0
- sqlspec/migrations/runner.py +213 -0
- sqlspec/migrations/tracker.py +140 -0
- sqlspec/migrations/utils.py +129 -0
- sqlspec/protocols.py +407 -0
- sqlspec/py.typed +0 -0
- sqlspec/storage/__init__.py +23 -0
- sqlspec/storage/backends/__init__.py +0 -0
- sqlspec/storage/backends/base.py +163 -0
- sqlspec/storage/backends/fsspec.py +386 -0
- sqlspec/storage/backends/obstore.py +459 -0
- sqlspec/storage/capabilities.py +102 -0
- sqlspec/storage/registry.py +239 -0
- sqlspec/typing.py +299 -0
- sqlspec/utils/__init__.py +3 -0
- sqlspec/utils/correlation.py +150 -0
- sqlspec/utils/deprecation.py +106 -0
- sqlspec/utils/fixtures.cpython-39-x86_64-linux-gnu.so +0 -0
- sqlspec/utils/fixtures.py +58 -0
- sqlspec/utils/logging.py +127 -0
- sqlspec/utils/module_loader.py +89 -0
- sqlspec/utils/serializers.py +4 -0
- sqlspec/utils/singleton.py +32 -0
- sqlspec/utils/sync_tools.cpython-39-x86_64-linux-gnu.so +0 -0
- sqlspec/utils/sync_tools.py +237 -0
- sqlspec/utils/text.cpython-39-x86_64-linux-gnu.so +0 -0
- sqlspec/utils/text.py +96 -0
- sqlspec/utils/type_guards.cpython-39-x86_64-linux-gnu.so +0 -0
- sqlspec/utils/type_guards.py +1139 -0
- sqlspec-0.16.1.dist-info/METADATA +365 -0
- sqlspec-0.16.1.dist-info/RECORD +148 -0
- sqlspec-0.16.1.dist-info/WHEEL +7 -0
- sqlspec-0.16.1.dist-info/entry_points.txt +2 -0
- sqlspec-0.16.1.dist-info/licenses/LICENSE +21 -0
- sqlspec-0.16.1.dist-info/licenses/NOTICE +29 -0
|
Binary file
|
sqlspec/__init__.py
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""SQLSpec: Safe and elegant SQL query building for Python."""
|
|
2
|
+
|
|
3
|
+
from sqlspec import adapters, base, builder, core, driver, exceptions, extensions, loader, migrations, typing, utils
|
|
4
|
+
from sqlspec.__metadata__ import __version__
|
|
5
|
+
from sqlspec._sql import SQLFactory, sql
|
|
6
|
+
from sqlspec.base import SQLSpec
|
|
7
|
+
from sqlspec.builder import (
|
|
8
|
+
Column,
|
|
9
|
+
ColumnExpression,
|
|
10
|
+
CreateTable,
|
|
11
|
+
Delete,
|
|
12
|
+
DropTable,
|
|
13
|
+
FunctionColumn,
|
|
14
|
+
Insert,
|
|
15
|
+
Merge,
|
|
16
|
+
QueryBuilder,
|
|
17
|
+
Select,
|
|
18
|
+
Update,
|
|
19
|
+
)
|
|
20
|
+
from sqlspec.config import AsyncDatabaseConfig, SyncDatabaseConfig
|
|
21
|
+
from sqlspec.core import (
|
|
22
|
+
SQL,
|
|
23
|
+
ArrowResult,
|
|
24
|
+
CacheConfig,
|
|
25
|
+
CacheStats,
|
|
26
|
+
ParameterConverter,
|
|
27
|
+
ParameterProcessor,
|
|
28
|
+
ParameterStyle,
|
|
29
|
+
ParameterStyleConfig,
|
|
30
|
+
SQLResult,
|
|
31
|
+
Statement,
|
|
32
|
+
StatementConfig,
|
|
33
|
+
)
|
|
34
|
+
from sqlspec.core import filters as filters
|
|
35
|
+
from sqlspec.driver import AsyncDriverAdapterBase, ExecutionResult, SyncDriverAdapterBase
|
|
36
|
+
from sqlspec.loader import SQLFile, SQLFileLoader
|
|
37
|
+
from sqlspec.typing import ConnectionT, DictRow, ModelDTOT, ModelT, RowT, StatementParameters, SupportedSchemaModel
|
|
38
|
+
|
|
39
|
+
__all__ = (
|
|
40
|
+
"SQL",
|
|
41
|
+
"ArrowResult",
|
|
42
|
+
"AsyncDatabaseConfig",
|
|
43
|
+
"AsyncDriverAdapterBase",
|
|
44
|
+
"CacheConfig",
|
|
45
|
+
"CacheStats",
|
|
46
|
+
"Column",
|
|
47
|
+
"ColumnExpression",
|
|
48
|
+
"ConnectionT",
|
|
49
|
+
"CreateTable",
|
|
50
|
+
"Delete",
|
|
51
|
+
"DictRow",
|
|
52
|
+
"DropTable",
|
|
53
|
+
"ExecutionResult",
|
|
54
|
+
"FunctionColumn",
|
|
55
|
+
"Insert",
|
|
56
|
+
"Merge",
|
|
57
|
+
"ModelDTOT",
|
|
58
|
+
"ModelT",
|
|
59
|
+
"ParameterConverter",
|
|
60
|
+
"ParameterProcessor",
|
|
61
|
+
"ParameterStyle",
|
|
62
|
+
"ParameterStyleConfig",
|
|
63
|
+
"QueryBuilder",
|
|
64
|
+
"RowT",
|
|
65
|
+
"SQLFactory",
|
|
66
|
+
"SQLFile",
|
|
67
|
+
"SQLFileLoader",
|
|
68
|
+
"SQLResult",
|
|
69
|
+
"SQLSpec",
|
|
70
|
+
"Select",
|
|
71
|
+
"Statement",
|
|
72
|
+
"StatementConfig",
|
|
73
|
+
"StatementParameters",
|
|
74
|
+
"SupportedSchemaModel",
|
|
75
|
+
"SyncDatabaseConfig",
|
|
76
|
+
"SyncDriverAdapterBase",
|
|
77
|
+
"Update",
|
|
78
|
+
"__version__",
|
|
79
|
+
"adapters",
|
|
80
|
+
"base",
|
|
81
|
+
"builder",
|
|
82
|
+
"core",
|
|
83
|
+
"driver",
|
|
84
|
+
"exceptions",
|
|
85
|
+
"extensions",
|
|
86
|
+
"filters",
|
|
87
|
+
"loader",
|
|
88
|
+
"migrations",
|
|
89
|
+
"sql",
|
|
90
|
+
"typing",
|
|
91
|
+
"utils",
|
|
92
|
+
)
|
sqlspec/__main__.py
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
from sqlspec.cli import add_migration_commands as build_cli_interface
|
|
2
|
+
|
|
3
|
+
__all__ = ("run_cli",)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def run_cli() -> None: # pragma: no cover
|
|
7
|
+
"""SQLSpec CLI."""
|
|
8
|
+
build_cli_interface()()
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
if __name__ == "__main__": # pragma: no cover
|
|
12
|
+
run_cli()
|
sqlspec/__metadata__.py
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"""Metadata for the project."""
|
|
2
|
+
|
|
3
|
+
from importlib.metadata import PackageNotFoundError, metadata, version
|
|
4
|
+
|
|
5
|
+
__all__ = ("__project__", "__version__")
|
|
6
|
+
|
|
7
|
+
try:
|
|
8
|
+
__version__ = version("sqlspec")
|
|
9
|
+
__project__ = metadata("sqlspec")["Name"]
|
|
10
|
+
except PackageNotFoundError: # pragma: no cover
|
|
11
|
+
__version__ = "0.0.1"
|
|
12
|
+
__project__ = "SQLSpec"
|
|
13
|
+
finally:
|
|
14
|
+
del version, PackageNotFoundError, metadata
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
import enum
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from sqlspec.typing import PYDANTIC_INSTALLED, BaseModel
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def _type_to_string(value: Any) -> str: # pragma: no cover
|
|
9
|
+
if isinstance(value, datetime.datetime):
|
|
10
|
+
return convert_datetime_to_gmt_iso(value)
|
|
11
|
+
if isinstance(value, datetime.date):
|
|
12
|
+
return convert_date_to_iso(value)
|
|
13
|
+
if isinstance(value, enum.Enum):
|
|
14
|
+
return str(value.value)
|
|
15
|
+
if PYDANTIC_INSTALLED and isinstance(value, BaseModel):
|
|
16
|
+
return value.model_dump_json()
|
|
17
|
+
try:
|
|
18
|
+
return str(value)
|
|
19
|
+
except Exception as exc:
|
|
20
|
+
raise TypeError from exc
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
try:
|
|
24
|
+
from msgspec.json import Decoder, Encoder
|
|
25
|
+
|
|
26
|
+
encoder, decoder = Encoder(enc_hook=_type_to_string), Decoder()
|
|
27
|
+
decode_json = decoder.decode
|
|
28
|
+
|
|
29
|
+
def encode_json(data: Any) -> str: # pragma: no cover
|
|
30
|
+
return encoder.encode(data).decode("utf-8")
|
|
31
|
+
|
|
32
|
+
except ImportError:
|
|
33
|
+
try:
|
|
34
|
+
from orjson import ( # pyright: ignore[reportMissingImports]
|
|
35
|
+
OPT_NAIVE_UTC, # pyright: ignore[reportUnknownVariableType]
|
|
36
|
+
OPT_SERIALIZE_NUMPY, # pyright: ignore[reportUnknownVariableType]
|
|
37
|
+
OPT_SERIALIZE_UUID, # pyright: ignore[reportUnknownVariableType]
|
|
38
|
+
)
|
|
39
|
+
from orjson import dumps as _encode_json # pyright: ignore[reportUnknownVariableType,reportMissingImports]
|
|
40
|
+
from orjson import loads as decode_json # type: ignore[no-redef,assignment,unused-ignore]
|
|
41
|
+
|
|
42
|
+
def encode_json(data: Any) -> str: # pragma: no cover
|
|
43
|
+
return _encode_json(
|
|
44
|
+
data, default=_type_to_string, option=OPT_SERIALIZE_NUMPY | OPT_NAIVE_UTC | OPT_SERIALIZE_UUID
|
|
45
|
+
).decode("utf-8")
|
|
46
|
+
|
|
47
|
+
except ImportError:
|
|
48
|
+
from json import dumps as encode_json # type: ignore[assignment]
|
|
49
|
+
from json import loads as decode_json # type: ignore[assignment]
|
|
50
|
+
|
|
51
|
+
__all__ = ("convert_date_to_iso", "convert_datetime_to_gmt_iso", "decode_json", "encode_json")
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def convert_datetime_to_gmt_iso(dt: datetime.datetime) -> str: # pragma: no cover
|
|
55
|
+
"""Handle datetime serialization for nested timestamps.
|
|
56
|
+
|
|
57
|
+
Args:
|
|
58
|
+
dt: The datetime to convert.
|
|
59
|
+
|
|
60
|
+
Returns:
|
|
61
|
+
The ISO formatted datetime string.
|
|
62
|
+
"""
|
|
63
|
+
if not dt.tzinfo:
|
|
64
|
+
dt = dt.replace(tzinfo=datetime.timezone.utc)
|
|
65
|
+
return dt.isoformat().replace("+00:00", "Z")
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def convert_date_to_iso(dt: datetime.date) -> str: # pragma: no cover
|
|
69
|
+
"""Handle datetime serialization for nested timestamps.
|
|
70
|
+
|
|
71
|
+
Args:
|
|
72
|
+
dt: The date to convert.
|
|
73
|
+
|
|
74
|
+
Returns:
|
|
75
|
+
The ISO formatted date string.
|
|
76
|
+
"""
|
|
77
|
+
return dt.isoformat()
|