omlish 0.0.0.dev298__py3-none-any.whl → 0.0.0.dev299__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.
- omlish/__about__.py +2 -2
- omlish/argparse/cli.py +1 -0
- omlish/lang/functions.py +3 -0
- omlish/sql/__init__.py +4 -4
- omlish/sql/alchemy/apiadapter.py +5 -0
- omlish/sql/api/__init__.py +6 -2
- omlish/sql/api/_queries.py +9 -5
- omlish/sql/api/asquery.py +67 -0
- omlish/sql/api/funcs.py +13 -3
- omlish/sql/api/queries.py +0 -39
- omlish/sql/api/resources.py +9 -1
- {omlish-0.0.0.dev298.dist-info → omlish-0.0.0.dev299.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev298.dist-info → omlish-0.0.0.dev299.dist-info}/RECORD +17 -16
- {omlish-0.0.0.dev298.dist-info → omlish-0.0.0.dev299.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev298.dist-info → omlish-0.0.0.dev299.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev298.dist-info → omlish-0.0.0.dev299.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev298.dist-info → omlish-0.0.0.dev299.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
omlish/argparse/cli.py
CHANGED
omlish/lang/functions.py
CHANGED
omlish/sql/__init__.py
CHANGED
@@ -5,9 +5,9 @@ from .. import lang as _lang
|
|
5
5
|
|
6
6
|
|
7
7
|
if _ta.TYPE_CHECKING:
|
8
|
-
from . import api
|
8
|
+
from . import api # noqa
|
9
9
|
else:
|
10
|
-
api = _lang.proxy_import('.api', __package__)
|
10
|
+
globals()['api'] = _lang.proxy_import('.api', __package__)
|
11
11
|
|
12
12
|
from .dbs import ( # noqa
|
13
13
|
DbLoc,
|
@@ -24,6 +24,6 @@ from .qualifiedname import ( # noqa
|
|
24
24
|
)
|
25
25
|
|
26
26
|
if _ta.TYPE_CHECKING:
|
27
|
-
from . import queries
|
27
|
+
from . import queries # noqa
|
28
28
|
else:
|
29
|
-
queries = _lang.proxy_import('.queries', __package__)
|
29
|
+
globals()['queries'] = _lang.proxy_import('.queries', __package__)
|
omlish/sql/alchemy/apiadapter.py
CHANGED
@@ -25,6 +25,11 @@ class SqlalchemyApiWrapper(api.ContextCloser, ta.Generic[T]):
|
|
25
25
|
self._u = u
|
26
26
|
self._auto_close = auto_close
|
27
27
|
|
28
|
+
@property
|
29
|
+
@ta.override
|
30
|
+
def _is_resourceless(self) -> bool:
|
31
|
+
return not self._auto_close
|
32
|
+
|
28
33
|
def _close(self) -> None:
|
29
34
|
if self._auto_close and hasattr(self._u, 'close'):
|
30
35
|
self._u.close()
|
omlish/sql/api/__init__.py
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
from .asquery import ( # noqa
|
2
|
+
AsQueryParams,
|
3
|
+
as_query,
|
4
|
+
as_query_,
|
5
|
+
)
|
6
|
+
|
1
7
|
from .base import ( # noqa
|
2
8
|
Querier,
|
3
9
|
Rows,
|
@@ -37,8 +43,6 @@ from .funcs import ( # noqa
|
|
37
43
|
from .queries import ( # noqa
|
38
44
|
QueryMode,
|
39
45
|
Query,
|
40
|
-
|
41
|
-
as_query,
|
42
46
|
)
|
43
47
|
|
44
48
|
from .resources import ( # noqa
|
omlish/sql/api/_queries.py
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
"""
|
2
2
|
TODO:
|
3
3
|
- dialect lol
|
4
|
+
- args lol
|
4
5
|
"""
|
5
6
|
from ..queries import Stmt
|
6
7
|
from ..queries.rendering import render
|
7
|
-
from .
|
8
|
+
from .asquery import AsQueryParams
|
9
|
+
from .asquery import as_query_
|
8
10
|
from .queries import Query
|
9
11
|
from .queries import QueryMode
|
10
12
|
|
@@ -12,17 +14,19 @@ from .queries import QueryMode
|
|
12
14
|
##
|
13
15
|
|
14
16
|
|
15
|
-
@
|
17
|
+
@as_query_.register
|
16
18
|
def _(
|
17
19
|
stmt: Stmt,
|
18
20
|
*,
|
19
|
-
|
21
|
+
params: AsQueryParams,
|
20
22
|
) -> Query:
|
21
23
|
rq = render(stmt)
|
22
24
|
|
23
|
-
|
25
|
+
if rq.args:
|
26
|
+
raise NotImplementedError
|
27
|
+
|
24
28
|
return Query(
|
25
|
-
mode=QueryMode.of(mode, QueryMode.QUERY),
|
29
|
+
mode=QueryMode.of(params.mode, QueryMode.QUERY),
|
26
30
|
text=rq.s,
|
27
31
|
args=[],
|
28
32
|
)
|
@@ -0,0 +1,67 @@
|
|
1
|
+
import dataclasses as dc
|
2
|
+
import functools
|
3
|
+
import typing as ta
|
4
|
+
|
5
|
+
from ... import check
|
6
|
+
from .base import Querier
|
7
|
+
from .queries import Query
|
8
|
+
from .queries import QueryMode
|
9
|
+
|
10
|
+
|
11
|
+
##
|
12
|
+
|
13
|
+
|
14
|
+
@dc.dataclass(frozen=True, kw_only=True)
|
15
|
+
class AsQueryParams:
|
16
|
+
mode: QueryMode | str | None = None
|
17
|
+
querier: Querier | None = None
|
18
|
+
|
19
|
+
|
20
|
+
def as_query(
|
21
|
+
obj: ta.Any,
|
22
|
+
*args: ta.Any,
|
23
|
+
mode: QueryMode | str | None = None,
|
24
|
+
querier: Querier | None = None,
|
25
|
+
) -> Query:
|
26
|
+
return as_query_(
|
27
|
+
obj,
|
28
|
+
*args,
|
29
|
+
params=AsQueryParams(
|
30
|
+
mode=mode,
|
31
|
+
querier=querier,
|
32
|
+
),
|
33
|
+
)
|
34
|
+
|
35
|
+
|
36
|
+
@functools.singledispatch
|
37
|
+
def as_query_(
|
38
|
+
obj: ta.Any,
|
39
|
+
*args: ta.Any,
|
40
|
+
params: AsQueryParams,
|
41
|
+
) -> Query:
|
42
|
+
raise TypeError(obj)
|
43
|
+
|
44
|
+
|
45
|
+
@as_query_.register
|
46
|
+
def _(
|
47
|
+
q: Query,
|
48
|
+
*,
|
49
|
+
params: AsQueryParams,
|
50
|
+
) -> Query:
|
51
|
+
if params.mode is not None:
|
52
|
+
check.arg(q.mode is QueryMode.of(params.mode))
|
53
|
+
|
54
|
+
return q
|
55
|
+
|
56
|
+
|
57
|
+
@as_query_.register
|
58
|
+
def _(
|
59
|
+
s: str,
|
60
|
+
*args: ta.Any,
|
61
|
+
params: AsQueryParams,
|
62
|
+
) -> Query:
|
63
|
+
return Query(
|
64
|
+
mode=QueryMode.of(params.mode, QueryMode.QUERY),
|
65
|
+
text=s,
|
66
|
+
args=args,
|
67
|
+
)
|
omlish/sql/api/funcs.py
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
import typing as ta
|
2
2
|
|
3
|
+
from .asquery import as_query
|
3
4
|
from .base import Querier
|
4
5
|
from .base import Rows
|
5
6
|
from .queries import QueryMode
|
6
|
-
from .queries import as_query
|
7
7
|
from .rows import Row
|
8
8
|
|
9
9
|
|
@@ -15,7 +15,12 @@ def query(
|
|
15
15
|
obj: ta.Any,
|
16
16
|
*args: ta.Any,
|
17
17
|
) -> Rows:
|
18
|
-
q = as_query(
|
18
|
+
q = as_query(
|
19
|
+
obj,
|
20
|
+
*args,
|
21
|
+
mode=QueryMode.QUERY,
|
22
|
+
querier=querier,
|
23
|
+
)
|
19
24
|
|
20
25
|
return querier.query(q)
|
21
26
|
|
@@ -40,7 +45,12 @@ def exec( # noqa
|
|
40
45
|
obj: ta.Any,
|
41
46
|
*args: ta.Any,
|
42
47
|
) -> None:
|
43
|
-
q = as_query(
|
48
|
+
q = as_query(
|
49
|
+
obj,
|
50
|
+
*args,
|
51
|
+
mode=QueryMode.EXEC,
|
52
|
+
querier=querier,
|
53
|
+
)
|
44
54
|
|
45
55
|
with querier.query(q):
|
46
56
|
pass
|
omlish/sql/api/queries.py
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
import dataclasses as dc
|
2
2
|
import enum
|
3
|
-
import functools
|
4
3
|
import typing as ta
|
5
4
|
|
6
5
|
from ... import check
|
@@ -35,41 +34,3 @@ class Query(lang.Final):
|
|
35
34
|
mode: QueryMode
|
36
35
|
text: str
|
37
36
|
args: ta.Sequence[ta.Any]
|
38
|
-
|
39
|
-
|
40
|
-
##
|
41
|
-
|
42
|
-
|
43
|
-
@functools.singledispatch
|
44
|
-
def as_query(
|
45
|
-
obj: ta.Any,
|
46
|
-
*args: ta.Any,
|
47
|
-
mode: QueryMode | str | None = None,
|
48
|
-
**kwargs: ta.Any,
|
49
|
-
) -> Query:
|
50
|
-
raise TypeError(obj)
|
51
|
-
|
52
|
-
|
53
|
-
@as_query.register
|
54
|
-
def _(
|
55
|
-
q: Query,
|
56
|
-
*,
|
57
|
-
mode: QueryMode | str | None = None,
|
58
|
-
) -> Query:
|
59
|
-
if mode is not None:
|
60
|
-
check.arg(q.mode is QueryMode.of(mode))
|
61
|
-
|
62
|
-
return q
|
63
|
-
|
64
|
-
|
65
|
-
@as_query.register
|
66
|
-
def _(
|
67
|
-
s: str,
|
68
|
-
*args: ta.Any,
|
69
|
-
mode: QueryMode | str | None = None,
|
70
|
-
) -> Query:
|
71
|
-
return Query(
|
72
|
-
mode=QueryMode.of(mode, QueryMode.QUERY),
|
73
|
-
text=s,
|
74
|
-
args=args,
|
75
|
-
)
|
omlish/sql/api/resources.py
CHANGED
@@ -38,6 +38,10 @@ class Closer(lang.Abstract):
|
|
38
38
|
self.__repr = repr(self)
|
39
39
|
self.__traceback = traceback.format_stack()[:-1]
|
40
40
|
|
41
|
+
@property
|
42
|
+
def _is_resourceless(self) -> bool:
|
43
|
+
return False
|
44
|
+
|
41
45
|
@ta.final
|
42
46
|
def close(self) -> None:
|
43
47
|
self.__closed = True
|
@@ -47,7 +51,11 @@ class Closer(lang.Abstract):
|
|
47
51
|
pass
|
48
52
|
|
49
53
|
def __del__(self) -> None:
|
50
|
-
if
|
54
|
+
if (
|
55
|
+
not self._is_resourceless and
|
56
|
+
self.__debug and
|
57
|
+
not self.__closed
|
58
|
+
):
|
51
59
|
warnings.warn(
|
52
60
|
f'\n\n{(sep := ("=" * 40))}\n'
|
53
61
|
f'{self.__class__.__name__} object {self.__repr} '
|
@@ -1,5 +1,5 @@
|
|
1
1
|
omlish/.manifests.json,sha256=pjGUyLHaoWpPqRP3jz2u1fC1qoRc2lvrEcpU_Ax2tdg,8253
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=tghPJ3r3hoOBraig8kr81p5Jv_kgJPAvrhVaVK8Li7o,3478
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
4
4
|
omlish/c3.py,sha256=rer-TPOFDU6fYq_AWio_AmA-ckZ8JDY5shIzQ_yXfzA,8414
|
5
5
|
omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
|
@@ -87,7 +87,7 @@ omlish/antlr/_runtime/xpath/XPathLexer.py,sha256=WvGKQjQnu7pX5C4CFKtsCzba2B2W6ie
|
|
87
87
|
omlish/antlr/_runtime/xpath/__init__.py,sha256=lMd_BbXYdlDhZQN_q0TKN978XW5G0pq618F0NaLkpFE,71
|
88
88
|
omlish/argparse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
89
89
|
omlish/argparse/all.py,sha256=NeeMM5MIebY7XDAHaCxUzeesEoUYwsf5i9PrBUcO1cI,1057
|
90
|
-
omlish/argparse/cli.py,sha256=
|
90
|
+
omlish/argparse/cli.py,sha256=KftfiN0fBOdybCWoTW4l967r8OrXe_WtjOQWARcHTv0,8746
|
91
91
|
omlish/asyncs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
92
92
|
omlish/asyncs/all.py,sha256=MjW0P9K8XBrw6AaH2X_qD5Y7hEZOF0cktqFv5BDGH-k,649
|
93
93
|
omlish/asyncs/bridge.py,sha256=oFCqwGY9u9JYB-tee7GS0gjtIFp19rdZD2Z0YPRjj9k,9738
|
@@ -473,7 +473,7 @@ omlish/lang/contextmanagers.py,sha256=pN8X4ZCagqU9_xWumi8gZPdMIWlInA-_zQrkl7o5VP
|
|
473
473
|
omlish/lang/datetimes.py,sha256=mrTtA67JYpfQwSlzdPcBtvm6dAyYM_dXNnlxFwFQH0M,228
|
474
474
|
omlish/lang/descriptors.py,sha256=zBtgO9LjdSTGHNUgiIqswh78WOVoGH6KzS0NbgB1Wls,6572
|
475
475
|
omlish/lang/enums.py,sha256=F9tflHfaAoV2MpyuhZzpfX9-H55M3zNa9hCszsngEo8,111
|
476
|
-
omlish/lang/functions.py,sha256=
|
476
|
+
omlish/lang/functions.py,sha256=51CoKtH_-CXUsKvtCexaR3OLZOtIwSdv4f4DtGBZdpA,6029
|
477
477
|
omlish/lang/generators.py,sha256=5tbjVAywiZH6oAdj1sJLRMtIkC9y3rAkecLT7Z3m7_g,5251
|
478
478
|
omlish/lang/imports.py,sha256=aC1u2eTrxHhhxShKbJvXswe3aJ7K76vT4YK8LrsvRWU,10476
|
479
479
|
omlish/lang/iterables.py,sha256=HOjcxOwyI5bBApDLsxRAGGhTTmw7fdZl2kEckxRVl-0,1994
|
@@ -720,28 +720,29 @@ omlish/specs/proto/_antlr/Protobuf3Listener.py,sha256=hjzAJjcj4xWRim-68v-6QwIsPV
|
|
720
720
|
omlish/specs/proto/_antlr/Protobuf3Parser.py,sha256=VmkUyJx3WxIgAecOa1BGwbO9fVNysZt5-arQ-wDubpk,132411
|
721
721
|
omlish/specs/proto/_antlr/Protobuf3Visitor.py,sha256=zEVBXly2k9Cqmgdb45QwpLR-fZCEq8hpp2WQj-s7Wps,8782
|
722
722
|
omlish/specs/proto/_antlr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
723
|
-
omlish/sql/__init__.py,sha256=
|
723
|
+
omlish/sql/__init__.py,sha256=DXK3EjPKXKS0WUV-bIVtzH0GsmOqCYrNLFkvDJGCORM,501
|
724
724
|
omlish/sql/abc.py,sha256=3hrCjB4jnPVMef_YXClCblzYUZ9l9yaxJJdd5_Nu9GM,4043
|
725
725
|
omlish/sql/dbapi.py,sha256=DfMxCyltpMj6hUiLti1omUvJyMGbrkGxcz2ywolOpPA,2979
|
726
726
|
omlish/sql/dbs.py,sha256=65e388987upJpsFX8bNL7uhiYv2sCsmk9Y04V0MXdsI,1873
|
727
727
|
omlish/sql/params.py,sha256=Z4VPet6GhNqD1T_MXSWSHkdy3cpUEhST-OplC4B_fYI,4433
|
728
728
|
omlish/sql/qualifiedname.py,sha256=c3GQzxh9sNyE_TP32PnlCun_F2bKXvX1ohtt6esTsjo,2269
|
729
729
|
omlish/sql/alchemy/__init__.py,sha256=mZiu0F4Y_5qQpl-xz4xnb0feVGZTDp3I4R6k7SVY_7M,760
|
730
|
-
omlish/sql/alchemy/apiadapter.py,sha256=
|
730
|
+
omlish/sql/alchemy/apiadapter.py,sha256=QrkvlzqMl_S2nxOPQ8-g1UaWRSTZNna1-8XouOn8xdY,2696
|
731
731
|
omlish/sql/alchemy/asyncs.py,sha256=MwZwWIaZsUCQLcTA8mdHUPZmR-pXEVSAsvd15FCm3W4,3692
|
732
732
|
omlish/sql/alchemy/duckdb.py,sha256=kr7pIhiBLNAuZrcigHDtFg9zHkVcrRW3LfryO9VJ4mk,3749
|
733
733
|
omlish/sql/alchemy/exprs.py,sha256=gO4Fj4xEY-PuDgV-N8hBMy55glZz7O-4H7v1LWabfZY,323
|
734
734
|
omlish/sql/alchemy/secrets.py,sha256=WEeaec1ejQcE3Yaa7p5BSP9AMGEzy1lwr7QMSRL0VBw,180
|
735
735
|
omlish/sql/alchemy/sqlean.py,sha256=RbkuOuFIfM4fowwKk8-sQ6Dxk-tTUwxS94nY5Kxt52s,403
|
736
|
-
omlish/sql/api/__init__.py,sha256=
|
737
|
-
omlish/sql/api/_queries.py,sha256=
|
736
|
+
omlish/sql/api/__init__.py,sha256=Ee-DgQPo_fUqlYL3NBzk6kmj_cXlnZIua5jk85UHWHI,951
|
737
|
+
omlish/sql/api/_queries.py,sha256=FqIrtU6JdzQD4S4zv9tdDuzCLHSgJjK8WSfT7Ag4umI,530
|
738
|
+
omlish/sql/api/asquery.py,sha256=8eBoJyyu0kHW3k3yytEcT-B6UAI_slKB0QtSK_WQS7g,1203
|
738
739
|
omlish/sql/api/base.py,sha256=E_t54OFr0BX604vOfQZGxh_n6EdOBF2Tvnrg25dMKXo,1314
|
739
740
|
omlish/sql/api/columns.py,sha256=UBol4bfwZ1nhcjv2gE1JhUMzRFeqtiCDo2T9CUGYb64,1943
|
740
741
|
omlish/sql/api/dbapi.py,sha256=bDVqmljmLMdurMhIy3vx-dJvK1KiZ7XBhZ2Zx6W9aBs,2627
|
741
742
|
omlish/sql/api/errors.py,sha256=YtC2gz5DqRTT3uCJniUOufVH1GEnFIc5ElkYLK3BHwM,230
|
742
|
-
omlish/sql/api/funcs.py,sha256=
|
743
|
-
omlish/sql/api/queries.py,sha256=
|
744
|
-
omlish/sql/api/resources.py,sha256=
|
743
|
+
omlish/sql/api/funcs.py,sha256=kOMMzODkJHyKVmGKFS-6GIgil5I6ha1qjqA3IecgCvI,819
|
744
|
+
omlish/sql/api/queries.py,sha256=OVsVqNyXXJQVDPfV3GFE2gwnHyGEenS65rTQRTNGx1Y,735
|
745
|
+
omlish/sql/api/resources.py,sha256=DTVQmKjhaLi27jHWYkF20VhwGvIazZWxyKzF0Wn9-dc,2228
|
745
746
|
omlish/sql/api/rows.py,sha256=Jo3AA_6Wt7tlwLO6-rp0arzYFqZXSxPudGPkW2xCYgQ,1346
|
746
747
|
omlish/sql/parsing/Minisql.g4,sha256=Jw8xT-8UI6ySHAgStyCg5QX9NTCinvTenLJReWiZIJU,4578
|
747
748
|
omlish/sql/parsing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -842,9 +843,9 @@ omlish/typedvalues/holder.py,sha256=ZTnHiw-K38ciOBLEdwgrltr7Xp8jjEs_0Lp69DH-G-o,
|
|
842
843
|
omlish/typedvalues/marshal.py,sha256=hWHRLcrGav7lvXJDtb9bNI0ickl4SKPQ6F4BbTpqw3A,4219
|
843
844
|
omlish/typedvalues/reflect.py,sha256=Ih1YgU-srUjsvBn_P7C66f73_VCvcwqE3ffeBnZBgt4,674
|
844
845
|
omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
|
845
|
-
omlish-0.0.0.
|
846
|
-
omlish-0.0.0.
|
847
|
-
omlish-0.0.0.
|
848
|
-
omlish-0.0.0.
|
849
|
-
omlish-0.0.0.
|
850
|
-
omlish-0.0.0.
|
846
|
+
omlish-0.0.0.dev299.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
847
|
+
omlish-0.0.0.dev299.dist-info/METADATA,sha256=T9HA9WB2SuPxxk-DiWerqiu1KkDizRIPRBitUe0csao,4416
|
848
|
+
omlish-0.0.0.dev299.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
|
849
|
+
omlish-0.0.0.dev299.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
850
|
+
omlish-0.0.0.dev299.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
851
|
+
omlish-0.0.0.dev299.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|