sqlspec 0.16.1__cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.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-312-aarch64-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-312-aarch64-linux-gnu.so +0 -0
- sqlspec/core/cache.py +871 -0
- sqlspec/core/compiler.cpython-312-aarch64-linux-gnu.so +0 -0
- sqlspec/core/compiler.py +417 -0
- sqlspec/core/filters.cpython-312-aarch64-linux-gnu.so +0 -0
- sqlspec/core/filters.py +830 -0
- sqlspec/core/hashing.cpython-312-aarch64-linux-gnu.so +0 -0
- sqlspec/core/hashing.py +310 -0
- sqlspec/core/parameters.cpython-312-aarch64-linux-gnu.so +0 -0
- sqlspec/core/parameters.py +1237 -0
- sqlspec/core/result.cpython-312-aarch64-linux-gnu.so +0 -0
- sqlspec/core/result.py +677 -0
- sqlspec/core/splitter.cpython-312-aarch64-linux-gnu.so +0 -0
- sqlspec/core/splitter.py +819 -0
- sqlspec/core/statement.cpython-312-aarch64-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-312-aarch64-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-312-aarch64-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-312-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/sync_tools.py +237 -0
- sqlspec/utils/text.cpython-312-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/text.py +96 -0
- sqlspec/utils/type_guards.cpython-312-aarch64-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
sqlspec/utils/text.py
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"""General utility functions."""
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
import unicodedata
|
|
5
|
+
from functools import lru_cache
|
|
6
|
+
from typing import Optional
|
|
7
|
+
|
|
8
|
+
_SLUGIFY_REMOVE_NON_ALPHANUMERIC = re.compile(r"[^\w]+", re.UNICODE)
|
|
9
|
+
_SLUGIFY_HYPHEN_COLLAPSE = re.compile(r"-+")
|
|
10
|
+
|
|
11
|
+
_SNAKE_CASE_LOWER_OR_DIGIT_TO_UPPER = re.compile(r"(?<=[a-z0-9])(?=[A-Z])", re.UNICODE)
|
|
12
|
+
_SNAKE_CASE_UPPER_TO_UPPER_LOWER = re.compile(r"(?<=[A-Z])(?=[A-Z][a-z])", re.UNICODE)
|
|
13
|
+
_SNAKE_CASE_HYPHEN_SPACE = re.compile(r"[.\s@-]+", re.UNICODE)
|
|
14
|
+
_SNAKE_CASE_REMOVE_NON_WORD = re.compile(r"[^\w]+", re.UNICODE)
|
|
15
|
+
_SNAKE_CASE_MULTIPLE_UNDERSCORES = re.compile(r"__+", re.UNICODE)
|
|
16
|
+
|
|
17
|
+
__all__ = ("camelize", "check_email", "slugify", "snake_case")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def check_email(email: str) -> str:
|
|
21
|
+
"""Validate an email address.
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
email: The email to validate.
|
|
25
|
+
|
|
26
|
+
Raises:
|
|
27
|
+
ValueError: If the email is invalid.
|
|
28
|
+
|
|
29
|
+
Returns:
|
|
30
|
+
The validated email.
|
|
31
|
+
"""
|
|
32
|
+
if "@" not in email:
|
|
33
|
+
msg = "Invalid email!"
|
|
34
|
+
raise ValueError(msg)
|
|
35
|
+
return email.lower()
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def slugify(value: str, allow_unicode: bool = False, separator: Optional[str] = None) -> str:
|
|
39
|
+
"""Convert a string to a URL-friendly slug.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
value: The string to slugify
|
|
43
|
+
allow_unicode: Allow unicode characters in slug.
|
|
44
|
+
separator: Separator character for word boundaries. Defaults to "-".
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
A slugified string.
|
|
48
|
+
"""
|
|
49
|
+
if allow_unicode:
|
|
50
|
+
value = unicodedata.normalize("NFKC", value)
|
|
51
|
+
else:
|
|
52
|
+
value = unicodedata.normalize("NFKD", value).encode("ascii", "ignore").decode("ascii")
|
|
53
|
+
value = value.lower().strip()
|
|
54
|
+
sep = separator if separator is not None else "-"
|
|
55
|
+
if not sep:
|
|
56
|
+
return _SLUGIFY_REMOVE_NON_ALPHANUMERIC.sub("", value)
|
|
57
|
+
value = _SLUGIFY_REMOVE_NON_ALPHANUMERIC.sub(sep, value)
|
|
58
|
+
if sep == "-":
|
|
59
|
+
value = value.strip("-")
|
|
60
|
+
return _SLUGIFY_HYPHEN_COLLAPSE.sub("-", value)
|
|
61
|
+
value = re.sub(rf"^{re.escape(sep)}+|{re.escape(sep)}+$", "", value)
|
|
62
|
+
return re.sub(rf"{re.escape(sep)}+", sep, value)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
@lru_cache(maxsize=100)
|
|
66
|
+
def camelize(string: str) -> str:
|
|
67
|
+
"""Convert a string to camel case.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
string: The string to convert.
|
|
71
|
+
|
|
72
|
+
Returns:
|
|
73
|
+
The converted string.
|
|
74
|
+
"""
|
|
75
|
+
return "".join(word if index == 0 else word.capitalize() for index, word in enumerate(string.split("_")))
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
@lru_cache(maxsize=100)
|
|
79
|
+
def snake_case(string: str) -> str:
|
|
80
|
+
"""Convert a string to snake_case.
|
|
81
|
+
|
|
82
|
+
Args:
|
|
83
|
+
string: The string to convert.
|
|
84
|
+
|
|
85
|
+
Returns:
|
|
86
|
+
The snake_case version of the string.
|
|
87
|
+
"""
|
|
88
|
+
if not string:
|
|
89
|
+
return ""
|
|
90
|
+
s = _SNAKE_CASE_HYPHEN_SPACE.sub("_", string)
|
|
91
|
+
s = _SNAKE_CASE_REMOVE_NON_WORD.sub("", s)
|
|
92
|
+
s = _SNAKE_CASE_LOWER_OR_DIGIT_TO_UPPER.sub("_", s)
|
|
93
|
+
s = _SNAKE_CASE_UPPER_TO_UPPER_LOWER.sub("_", s)
|
|
94
|
+
s = s.lower()
|
|
95
|
+
s = s.strip("_")
|
|
96
|
+
return _SNAKE_CASE_MULTIPLE_UNDERSCORES.sub("_", s)
|
|
Binary file
|