sqlspec 0.14.1__py3-none-any.whl → 0.15.0__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 sqlspec might be problematic. Click here for more details.

Files changed (158) hide show
  1. sqlspec/__init__.py +50 -25
  2. sqlspec/__main__.py +1 -1
  3. sqlspec/__metadata__.py +1 -3
  4. sqlspec/_serialization.py +1 -2
  5. sqlspec/_sql.py +256 -120
  6. sqlspec/_typing.py +278 -142
  7. sqlspec/adapters/adbc/__init__.py +4 -3
  8. sqlspec/adapters/adbc/_types.py +12 -0
  9. sqlspec/adapters/adbc/config.py +115 -260
  10. sqlspec/adapters/adbc/driver.py +462 -367
  11. sqlspec/adapters/aiosqlite/__init__.py +18 -3
  12. sqlspec/adapters/aiosqlite/_types.py +13 -0
  13. sqlspec/adapters/aiosqlite/config.py +199 -129
  14. sqlspec/adapters/aiosqlite/driver.py +230 -269
  15. sqlspec/adapters/asyncmy/__init__.py +18 -3
  16. sqlspec/adapters/asyncmy/_types.py +12 -0
  17. sqlspec/adapters/asyncmy/config.py +80 -168
  18. sqlspec/adapters/asyncmy/driver.py +260 -225
  19. sqlspec/adapters/asyncpg/__init__.py +19 -4
  20. sqlspec/adapters/asyncpg/_types.py +17 -0
  21. sqlspec/adapters/asyncpg/config.py +82 -181
  22. sqlspec/adapters/asyncpg/driver.py +285 -383
  23. sqlspec/adapters/bigquery/__init__.py +17 -3
  24. sqlspec/adapters/bigquery/_types.py +12 -0
  25. sqlspec/adapters/bigquery/config.py +191 -258
  26. sqlspec/adapters/bigquery/driver.py +474 -646
  27. sqlspec/adapters/duckdb/__init__.py +14 -3
  28. sqlspec/adapters/duckdb/_types.py +12 -0
  29. sqlspec/adapters/duckdb/config.py +415 -351
  30. sqlspec/adapters/duckdb/driver.py +343 -413
  31. sqlspec/adapters/oracledb/__init__.py +19 -5
  32. sqlspec/adapters/oracledb/_types.py +14 -0
  33. sqlspec/adapters/oracledb/config.py +123 -379
  34. sqlspec/adapters/oracledb/driver.py +507 -560
  35. sqlspec/adapters/psqlpy/__init__.py +13 -3
  36. sqlspec/adapters/psqlpy/_types.py +11 -0
  37. sqlspec/adapters/psqlpy/config.py +93 -254
  38. sqlspec/adapters/psqlpy/driver.py +505 -234
  39. sqlspec/adapters/psycopg/__init__.py +19 -5
  40. sqlspec/adapters/psycopg/_types.py +17 -0
  41. sqlspec/adapters/psycopg/config.py +143 -403
  42. sqlspec/adapters/psycopg/driver.py +706 -872
  43. sqlspec/adapters/sqlite/__init__.py +14 -3
  44. sqlspec/adapters/sqlite/_types.py +11 -0
  45. sqlspec/adapters/sqlite/config.py +202 -118
  46. sqlspec/adapters/sqlite/driver.py +264 -303
  47. sqlspec/base.py +105 -9
  48. sqlspec/{statement/builder → builder}/__init__.py +12 -14
  49. sqlspec/{statement/builder → builder}/_base.py +120 -55
  50. sqlspec/{statement/builder → builder}/_column.py +17 -6
  51. sqlspec/{statement/builder → builder}/_ddl.py +46 -79
  52. sqlspec/{statement/builder → builder}/_ddl_utils.py +5 -10
  53. sqlspec/{statement/builder → builder}/_delete.py +6 -25
  54. sqlspec/{statement/builder → builder}/_insert.py +6 -64
  55. sqlspec/builder/_merge.py +56 -0
  56. sqlspec/{statement/builder → builder}/_parsing_utils.py +3 -10
  57. sqlspec/{statement/builder → builder}/_select.py +11 -56
  58. sqlspec/{statement/builder → builder}/_update.py +12 -18
  59. sqlspec/{statement/builder → builder}/mixins/__init__.py +10 -14
  60. sqlspec/{statement/builder → builder}/mixins/_cte_and_set_ops.py +48 -59
  61. sqlspec/{statement/builder → builder}/mixins/_insert_operations.py +22 -16
  62. sqlspec/{statement/builder → builder}/mixins/_join_operations.py +1 -3
  63. sqlspec/{statement/builder → builder}/mixins/_merge_operations.py +3 -5
  64. sqlspec/{statement/builder → builder}/mixins/_order_limit_operations.py +3 -3
  65. sqlspec/{statement/builder → builder}/mixins/_pivot_operations.py +4 -8
  66. sqlspec/{statement/builder → builder}/mixins/_select_operations.py +21 -36
  67. sqlspec/{statement/builder → builder}/mixins/_update_operations.py +3 -14
  68. sqlspec/{statement/builder → builder}/mixins/_where_clause.py +52 -79
  69. sqlspec/cli.py +4 -5
  70. sqlspec/config.py +180 -133
  71. sqlspec/core/__init__.py +63 -0
  72. sqlspec/core/cache.py +873 -0
  73. sqlspec/core/compiler.py +396 -0
  74. sqlspec/core/filters.py +828 -0
  75. sqlspec/core/hashing.py +310 -0
  76. sqlspec/core/parameters.py +1209 -0
  77. sqlspec/core/result.py +664 -0
  78. sqlspec/{statement → core}/splitter.py +321 -191
  79. sqlspec/core/statement.py +651 -0
  80. sqlspec/driver/__init__.py +7 -10
  81. sqlspec/driver/_async.py +387 -176
  82. sqlspec/driver/_common.py +527 -289
  83. sqlspec/driver/_sync.py +390 -172
  84. sqlspec/driver/mixins/__init__.py +2 -19
  85. sqlspec/driver/mixins/_result_tools.py +168 -0
  86. sqlspec/driver/mixins/_sql_translator.py +6 -3
  87. sqlspec/exceptions.py +5 -252
  88. sqlspec/extensions/aiosql/adapter.py +93 -96
  89. sqlspec/extensions/litestar/config.py +0 -1
  90. sqlspec/extensions/litestar/handlers.py +15 -26
  91. sqlspec/extensions/litestar/plugin.py +16 -14
  92. sqlspec/extensions/litestar/providers.py +17 -52
  93. sqlspec/loader.py +424 -105
  94. sqlspec/migrations/__init__.py +12 -0
  95. sqlspec/migrations/base.py +92 -68
  96. sqlspec/migrations/commands.py +24 -106
  97. sqlspec/migrations/loaders.py +402 -0
  98. sqlspec/migrations/runner.py +49 -51
  99. sqlspec/migrations/tracker.py +31 -44
  100. sqlspec/migrations/utils.py +64 -24
  101. sqlspec/protocols.py +7 -183
  102. sqlspec/storage/__init__.py +1 -1
  103. sqlspec/storage/backends/base.py +37 -40
  104. sqlspec/storage/backends/fsspec.py +136 -112
  105. sqlspec/storage/backends/obstore.py +138 -160
  106. sqlspec/storage/capabilities.py +5 -4
  107. sqlspec/storage/registry.py +57 -106
  108. sqlspec/typing.py +136 -115
  109. sqlspec/utils/__init__.py +2 -3
  110. sqlspec/utils/correlation.py +0 -3
  111. sqlspec/utils/deprecation.py +6 -6
  112. sqlspec/utils/fixtures.py +6 -6
  113. sqlspec/utils/logging.py +0 -2
  114. sqlspec/utils/module_loader.py +7 -12
  115. sqlspec/utils/singleton.py +0 -1
  116. sqlspec/utils/sync_tools.py +16 -37
  117. sqlspec/utils/text.py +12 -51
  118. sqlspec/utils/type_guards.py +443 -232
  119. {sqlspec-0.14.1.dist-info → sqlspec-0.15.0.dist-info}/METADATA +7 -2
  120. sqlspec-0.15.0.dist-info/RECORD +134 -0
  121. sqlspec/adapters/adbc/transformers.py +0 -108
  122. sqlspec/driver/connection.py +0 -207
  123. sqlspec/driver/mixins/_cache.py +0 -114
  124. sqlspec/driver/mixins/_csv_writer.py +0 -91
  125. sqlspec/driver/mixins/_pipeline.py +0 -508
  126. sqlspec/driver/mixins/_query_tools.py +0 -796
  127. sqlspec/driver/mixins/_result_utils.py +0 -138
  128. sqlspec/driver/mixins/_storage.py +0 -912
  129. sqlspec/driver/mixins/_type_coercion.py +0 -128
  130. sqlspec/driver/parameters.py +0 -138
  131. sqlspec/statement/__init__.py +0 -21
  132. sqlspec/statement/builder/_merge.py +0 -95
  133. sqlspec/statement/cache.py +0 -50
  134. sqlspec/statement/filters.py +0 -625
  135. sqlspec/statement/parameters.py +0 -956
  136. sqlspec/statement/pipelines/__init__.py +0 -210
  137. sqlspec/statement/pipelines/analyzers/__init__.py +0 -9
  138. sqlspec/statement/pipelines/analyzers/_analyzer.py +0 -646
  139. sqlspec/statement/pipelines/context.py +0 -109
  140. sqlspec/statement/pipelines/transformers/__init__.py +0 -7
  141. sqlspec/statement/pipelines/transformers/_expression_simplifier.py +0 -88
  142. sqlspec/statement/pipelines/transformers/_literal_parameterizer.py +0 -1247
  143. sqlspec/statement/pipelines/transformers/_remove_comments_and_hints.py +0 -76
  144. sqlspec/statement/pipelines/validators/__init__.py +0 -23
  145. sqlspec/statement/pipelines/validators/_dml_safety.py +0 -290
  146. sqlspec/statement/pipelines/validators/_parameter_style.py +0 -370
  147. sqlspec/statement/pipelines/validators/_performance.py +0 -714
  148. sqlspec/statement/pipelines/validators/_security.py +0 -967
  149. sqlspec/statement/result.py +0 -435
  150. sqlspec/statement/sql.py +0 -1774
  151. sqlspec/utils/cached_property.py +0 -25
  152. sqlspec/utils/statement_hashing.py +0 -203
  153. sqlspec-0.14.1.dist-info/RECORD +0 -145
  154. /sqlspec/{statement/builder → builder}/mixins/_delete_operations.py +0 -0
  155. {sqlspec-0.14.1.dist-info → sqlspec-0.15.0.dist-info}/WHEEL +0 -0
  156. {sqlspec-0.14.1.dist-info → sqlspec-0.15.0.dist-info}/entry_points.txt +0 -0
  157. {sqlspec-0.14.1.dist-info → sqlspec-0.15.0.dist-info}/licenses/LICENSE +0 -0
  158. {sqlspec-0.14.1.dist-info → sqlspec-0.15.0.dist-info}/licenses/NOTICE +0 -0
sqlspec/__init__.py CHANGED
@@ -1,67 +1,92 @@
1
1
  """SQLSpec: Safe and elegant SQL query building for Python."""
2
2
 
3
- from sqlspec import adapters, base, driver, exceptions, extensions, loader, statement, typing, utils
3
+ from sqlspec import adapters, base, builder, core, driver, exceptions, extensions, loader, migrations, typing, utils
4
4
  from sqlspec.__metadata__ import __version__
5
- from sqlspec._sql import SQLFactory
5
+ from sqlspec._sql import SQLFactory, sql
6
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
+ )
7
20
  from sqlspec.config import AsyncDatabaseConfig, SyncDatabaseConfig
8
- from sqlspec.exceptions import (
9
- NotFoundError,
10
- ParameterError,
11
- SQLBuilderError,
12
- SQLFileNotFoundError,
13
- SQLFileParseError,
14
- SQLParsingError,
15
- SQLValidationError,
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,
16
33
  )
34
+ from sqlspec.core import filters as filters
35
+ from sqlspec.driver import AsyncDriverAdapterBase, ExecutionResult, SyncDriverAdapterBase
17
36
  from sqlspec.loader import SQLFile, SQLFileLoader
18
- from sqlspec.statement.builder import Column, ColumnExpression, Delete, FunctionColumn, Insert, Merge, Select, Update
19
- from sqlspec.statement.result import ArrowResult, SQLResult
20
- from sqlspec.statement.sql import SQL, SQLConfig
21
- from sqlspec.typing import ConnectionT, DictRow, ModelDTOT, ModelT, RowT, StatementParameters
22
-
23
- sql = SQLFactory()
37
+ from sqlspec.typing import ConnectionT, DictRow, ModelDTOT, ModelT, RowT, StatementParameters, SupportedSchemaModel
24
38
 
25
39
  __all__ = (
26
40
  "SQL",
27
41
  "ArrowResult",
28
42
  "AsyncDatabaseConfig",
43
+ "AsyncDriverAdapterBase",
44
+ "CacheConfig",
45
+ "CacheStats",
29
46
  "Column",
30
47
  "ColumnExpression",
31
48
  "ConnectionT",
49
+ "CreateTable",
32
50
  "Delete",
33
51
  "DictRow",
52
+ "DropTable",
53
+ "ExecutionResult",
34
54
  "FunctionColumn",
35
55
  "Insert",
36
56
  "Merge",
37
57
  "ModelDTOT",
38
58
  "ModelT",
39
- "NotFoundError",
40
- "ParameterError",
59
+ "ParameterConverter",
60
+ "ParameterProcessor",
61
+ "ParameterStyle",
62
+ "ParameterStyleConfig",
63
+ "QueryBuilder",
41
64
  "RowT",
42
- "SQLBuilderError",
43
- "SQLConfig",
65
+ "SQLFactory",
44
66
  "SQLFile",
45
67
  "SQLFileLoader",
46
- "SQLFileNotFoundError",
47
- "SQLFileParseError",
48
- "SQLParsingError",
49
68
  "SQLResult",
50
69
  "SQLSpec",
51
- "SQLValidationError",
52
70
  "Select",
71
+ "Statement",
72
+ "StatementConfig",
53
73
  "StatementParameters",
74
+ "SupportedSchemaModel",
54
75
  "SyncDatabaseConfig",
76
+ "SyncDriverAdapterBase",
55
77
  "Update",
56
78
  "__version__",
57
79
  "adapters",
58
80
  "base",
81
+ "builder",
82
+ "core",
59
83
  "driver",
60
84
  "exceptions",
61
85
  "extensions",
86
+ "filters",
62
87
  "loader",
88
+ "migrations",
63
89
  "sql",
64
- "statement",
65
90
  "typing",
66
91
  "utils",
67
92
  )
sqlspec/__main__.py CHANGED
@@ -4,7 +4,7 @@ __all__ = ("run_cli",)
4
4
 
5
5
 
6
6
  def run_cli() -> None: # pragma: no cover
7
- """SQLSpec CLI"""
7
+ """SQLSpec CLI."""
8
8
  build_cli_interface()()
9
9
 
10
10
 
sqlspec/__metadata__.py CHANGED
@@ -1,4 +1,4 @@
1
- """Metadata for the Project."""
1
+ """Metadata for the project."""
2
2
 
3
3
  from importlib.metadata import PackageNotFoundError, metadata, version
4
4
 
@@ -6,9 +6,7 @@ __all__ = ("__project__", "__version__")
6
6
 
7
7
  try:
8
8
  __version__ = version("sqlspec")
9
- """Version of the project."""
10
9
  __project__ = metadata("sqlspec")["Name"]
11
- """Name of the project."""
12
10
  except PackageNotFoundError: # pragma: no cover
13
11
  __version__ = "0.0.1"
14
12
  __project__ = "SQLSpec"
sqlspec/_serialization.py CHANGED
@@ -15,10 +15,9 @@ def _type_to_string(value: Any) -> str: # pragma: no cover
15
15
  if PYDANTIC_INSTALLED and isinstance(value, BaseModel):
16
16
  return value.model_dump_json()
17
17
  try:
18
- val = str(value)
18
+ return str(value)
19
19
  except Exception as exc:
20
20
  raise TypeError from exc
21
- return val
22
21
 
23
22
 
24
23
  try: