sqlspec 0.16.1__cp312-cp312-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.

Files changed (148) hide show
  1. 51ff5a9eadfdefd49f98__mypyc.cpython-312-x86_64-linux-gnu.so +0 -0
  2. sqlspec/__init__.py +92 -0
  3. sqlspec/__main__.py +12 -0
  4. sqlspec/__metadata__.py +14 -0
  5. sqlspec/_serialization.py +77 -0
  6. sqlspec/_sql.py +1780 -0
  7. sqlspec/_typing.py +680 -0
  8. sqlspec/adapters/__init__.py +0 -0
  9. sqlspec/adapters/adbc/__init__.py +5 -0
  10. sqlspec/adapters/adbc/_types.py +12 -0
  11. sqlspec/adapters/adbc/config.py +361 -0
  12. sqlspec/adapters/adbc/driver.py +512 -0
  13. sqlspec/adapters/aiosqlite/__init__.py +19 -0
  14. sqlspec/adapters/aiosqlite/_types.py +13 -0
  15. sqlspec/adapters/aiosqlite/config.py +253 -0
  16. sqlspec/adapters/aiosqlite/driver.py +248 -0
  17. sqlspec/adapters/asyncmy/__init__.py +19 -0
  18. sqlspec/adapters/asyncmy/_types.py +12 -0
  19. sqlspec/adapters/asyncmy/config.py +180 -0
  20. sqlspec/adapters/asyncmy/driver.py +274 -0
  21. sqlspec/adapters/asyncpg/__init__.py +21 -0
  22. sqlspec/adapters/asyncpg/_types.py +17 -0
  23. sqlspec/adapters/asyncpg/config.py +229 -0
  24. sqlspec/adapters/asyncpg/driver.py +344 -0
  25. sqlspec/adapters/bigquery/__init__.py +18 -0
  26. sqlspec/adapters/bigquery/_types.py +12 -0
  27. sqlspec/adapters/bigquery/config.py +298 -0
  28. sqlspec/adapters/bigquery/driver.py +558 -0
  29. sqlspec/adapters/duckdb/__init__.py +22 -0
  30. sqlspec/adapters/duckdb/_types.py +12 -0
  31. sqlspec/adapters/duckdb/config.py +504 -0
  32. sqlspec/adapters/duckdb/driver.py +368 -0
  33. sqlspec/adapters/oracledb/__init__.py +32 -0
  34. sqlspec/adapters/oracledb/_types.py +14 -0
  35. sqlspec/adapters/oracledb/config.py +317 -0
  36. sqlspec/adapters/oracledb/driver.py +538 -0
  37. sqlspec/adapters/psqlpy/__init__.py +16 -0
  38. sqlspec/adapters/psqlpy/_types.py +11 -0
  39. sqlspec/adapters/psqlpy/config.py +214 -0
  40. sqlspec/adapters/psqlpy/driver.py +530 -0
  41. sqlspec/adapters/psycopg/__init__.py +32 -0
  42. sqlspec/adapters/psycopg/_types.py +17 -0
  43. sqlspec/adapters/psycopg/config.py +426 -0
  44. sqlspec/adapters/psycopg/driver.py +796 -0
  45. sqlspec/adapters/sqlite/__init__.py +15 -0
  46. sqlspec/adapters/sqlite/_types.py +11 -0
  47. sqlspec/adapters/sqlite/config.py +240 -0
  48. sqlspec/adapters/sqlite/driver.py +294 -0
  49. sqlspec/base.py +571 -0
  50. sqlspec/builder/__init__.py +62 -0
  51. sqlspec/builder/_base.py +473 -0
  52. sqlspec/builder/_column.py +320 -0
  53. sqlspec/builder/_ddl.py +1346 -0
  54. sqlspec/builder/_ddl_utils.py +103 -0
  55. sqlspec/builder/_delete.py +76 -0
  56. sqlspec/builder/_insert.py +256 -0
  57. sqlspec/builder/_merge.py +71 -0
  58. sqlspec/builder/_parsing_utils.py +140 -0
  59. sqlspec/builder/_select.py +170 -0
  60. sqlspec/builder/_update.py +188 -0
  61. sqlspec/builder/mixins/__init__.py +55 -0
  62. sqlspec/builder/mixins/_cte_and_set_ops.py +222 -0
  63. sqlspec/builder/mixins/_delete_operations.py +41 -0
  64. sqlspec/builder/mixins/_insert_operations.py +244 -0
  65. sqlspec/builder/mixins/_join_operations.py +122 -0
  66. sqlspec/builder/mixins/_merge_operations.py +476 -0
  67. sqlspec/builder/mixins/_order_limit_operations.py +135 -0
  68. sqlspec/builder/mixins/_pivot_operations.py +153 -0
  69. sqlspec/builder/mixins/_select_operations.py +603 -0
  70. sqlspec/builder/mixins/_update_operations.py +187 -0
  71. sqlspec/builder/mixins/_where_clause.py +621 -0
  72. sqlspec/cli.py +247 -0
  73. sqlspec/config.py +395 -0
  74. sqlspec/core/__init__.py +63 -0
  75. sqlspec/core/cache.cpython-312-x86_64-linux-gnu.so +0 -0
  76. sqlspec/core/cache.py +871 -0
  77. sqlspec/core/compiler.cpython-312-x86_64-linux-gnu.so +0 -0
  78. sqlspec/core/compiler.py +417 -0
  79. sqlspec/core/filters.cpython-312-x86_64-linux-gnu.so +0 -0
  80. sqlspec/core/filters.py +830 -0
  81. sqlspec/core/hashing.cpython-312-x86_64-linux-gnu.so +0 -0
  82. sqlspec/core/hashing.py +310 -0
  83. sqlspec/core/parameters.cpython-312-x86_64-linux-gnu.so +0 -0
  84. sqlspec/core/parameters.py +1237 -0
  85. sqlspec/core/result.cpython-312-x86_64-linux-gnu.so +0 -0
  86. sqlspec/core/result.py +677 -0
  87. sqlspec/core/splitter.cpython-312-x86_64-linux-gnu.so +0 -0
  88. sqlspec/core/splitter.py +819 -0
  89. sqlspec/core/statement.cpython-312-x86_64-linux-gnu.so +0 -0
  90. sqlspec/core/statement.py +676 -0
  91. sqlspec/driver/__init__.py +19 -0
  92. sqlspec/driver/_async.py +502 -0
  93. sqlspec/driver/_common.py +631 -0
  94. sqlspec/driver/_sync.py +503 -0
  95. sqlspec/driver/mixins/__init__.py +6 -0
  96. sqlspec/driver/mixins/_result_tools.py +193 -0
  97. sqlspec/driver/mixins/_sql_translator.py +86 -0
  98. sqlspec/exceptions.py +193 -0
  99. sqlspec/extensions/__init__.py +0 -0
  100. sqlspec/extensions/aiosql/__init__.py +10 -0
  101. sqlspec/extensions/aiosql/adapter.py +461 -0
  102. sqlspec/extensions/litestar/__init__.py +6 -0
  103. sqlspec/extensions/litestar/_utils.py +52 -0
  104. sqlspec/extensions/litestar/cli.py +48 -0
  105. sqlspec/extensions/litestar/config.py +92 -0
  106. sqlspec/extensions/litestar/handlers.py +260 -0
  107. sqlspec/extensions/litestar/plugin.py +145 -0
  108. sqlspec/extensions/litestar/providers.py +454 -0
  109. sqlspec/loader.cpython-312-x86_64-linux-gnu.so +0 -0
  110. sqlspec/loader.py +760 -0
  111. sqlspec/migrations/__init__.py +35 -0
  112. sqlspec/migrations/base.py +414 -0
  113. sqlspec/migrations/commands.py +443 -0
  114. sqlspec/migrations/loaders.py +402 -0
  115. sqlspec/migrations/runner.py +213 -0
  116. sqlspec/migrations/tracker.py +140 -0
  117. sqlspec/migrations/utils.py +129 -0
  118. sqlspec/protocols.py +407 -0
  119. sqlspec/py.typed +0 -0
  120. sqlspec/storage/__init__.py +23 -0
  121. sqlspec/storage/backends/__init__.py +0 -0
  122. sqlspec/storage/backends/base.py +163 -0
  123. sqlspec/storage/backends/fsspec.py +386 -0
  124. sqlspec/storage/backends/obstore.py +459 -0
  125. sqlspec/storage/capabilities.py +102 -0
  126. sqlspec/storage/registry.py +239 -0
  127. sqlspec/typing.py +299 -0
  128. sqlspec/utils/__init__.py +3 -0
  129. sqlspec/utils/correlation.py +150 -0
  130. sqlspec/utils/deprecation.py +106 -0
  131. sqlspec/utils/fixtures.cpython-312-x86_64-linux-gnu.so +0 -0
  132. sqlspec/utils/fixtures.py +58 -0
  133. sqlspec/utils/logging.py +127 -0
  134. sqlspec/utils/module_loader.py +89 -0
  135. sqlspec/utils/serializers.py +4 -0
  136. sqlspec/utils/singleton.py +32 -0
  137. sqlspec/utils/sync_tools.cpython-312-x86_64-linux-gnu.so +0 -0
  138. sqlspec/utils/sync_tools.py +237 -0
  139. sqlspec/utils/text.cpython-312-x86_64-linux-gnu.so +0 -0
  140. sqlspec/utils/text.py +96 -0
  141. sqlspec/utils/type_guards.cpython-312-x86_64-linux-gnu.so +0 -0
  142. sqlspec/utils/type_guards.py +1139 -0
  143. sqlspec-0.16.1.dist-info/METADATA +365 -0
  144. sqlspec-0.16.1.dist-info/RECORD +148 -0
  145. sqlspec-0.16.1.dist-info/WHEEL +7 -0
  146. sqlspec-0.16.1.dist-info/entry_points.txt +2 -0
  147. sqlspec-0.16.1.dist-info/licenses/LICENSE +21 -0
  148. sqlspec-0.16.1.dist-info/licenses/NOTICE +29 -0
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()
@@ -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()