everysk-lib 1.9.8__cp311-cp311-win_amd64.whl → 1.10.0__cp311-cp311-win_amd64.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.
- everysk/core/retry.py +51 -0
- everysk/core/tests.py +138 -157
- everysk/sdk/brutils/cnpj.py +373 -0
- everysk/sdk/brutils/cnpj_pd.py +42 -0
- everysk/sdk/engines/expression.cp311-win_amd64.pyd +0 -0
- everysk/sdk/engines/helpers.cp311-win_amd64.pyd +0 -0
- everysk/settings.py +3 -0
- everysk/sql/connection.py +81 -33
- everysk/sql/model.py +1 -6
- everysk/sql/query.py +30 -14
- everysk/sql/row_factory.py +63 -0
- everysk/sql/settings.py +25 -2
- everysk/sql/utils.py +8 -7
- everysk/tests.py +1 -0
- {everysk_lib-1.9.8.dist-info → everysk_lib-1.10.0.dist-info}/METADATA +7 -5
- {everysk_lib-1.9.8.dist-info → everysk_lib-1.10.0.dist-info}/RECORD +20 -16
- {everysk_lib-1.9.8.dist-info → everysk_lib-1.10.0.dist-info}/.gitignore +0 -0
- {everysk_lib-1.9.8.dist-info → everysk_lib-1.10.0.dist-info}/WHEEL +0 -0
- {everysk_lib-1.9.8.dist-info → everysk_lib-1.10.0.dist-info}/licenses/LICENSE.txt +0 -0
- {everysk_lib-1.9.8.dist-info → everysk_lib-1.10.0.dist-info}/top_level.txt +0 -0
everysk/sql/query.py
CHANGED
|
@@ -8,12 +8,29 @@
|
|
|
8
8
|
#
|
|
9
9
|
###############################################################################
|
|
10
10
|
import hashlib
|
|
11
|
+
from functools import partial
|
|
11
12
|
|
|
12
|
-
from
|
|
13
|
+
from psycopg.types.json import Jsonb, set_json_dumps, set_json_loads
|
|
13
14
|
|
|
14
15
|
from everysk.core.object import BaseDict
|
|
16
|
+
from everysk.core.serialize import dumps, loads
|
|
15
17
|
from everysk.sql.utils import ConditionOperator
|
|
16
18
|
|
|
19
|
+
# https://www.psycopg.org/psycopg3/docs/basic/adapt.html#json-adaptation
|
|
20
|
+
set_json_dumps(
|
|
21
|
+
partial(
|
|
22
|
+
dumps,
|
|
23
|
+
add_class_path=True,
|
|
24
|
+
date_format='%Y-%m-%d',
|
|
25
|
+
datetime_format='%Y-%m-%dT%H:%M:%S',
|
|
26
|
+
indent=None,
|
|
27
|
+
separators=(',', ':'),
|
|
28
|
+
use_undefined=True,
|
|
29
|
+
)
|
|
30
|
+
)
|
|
31
|
+
set_json_loads(partial(loads, use_undefined=True, instantiate_object=True))
|
|
32
|
+
|
|
33
|
+
|
|
17
34
|
## Constants
|
|
18
35
|
_SQL_FIELDS = {
|
|
19
36
|
'bool': 'BOOLEAN',
|
|
@@ -42,7 +59,7 @@ _SQL_CREATE_SCHEMA = 'CREATE SCHEMA IF NOT EXISTS "{schema}"'
|
|
|
42
59
|
_SQL_CREATE_TABLE = 'CREATE TABLE IF NOT EXISTS "{schema}"."{table}" ({fields})'
|
|
43
60
|
|
|
44
61
|
# https://www.postgresqltutorial.com/postgresql-delete/
|
|
45
|
-
_SQL_DELETE = 'DELETE FROM "{schema}"."{table}" WHERE "{primary_key}" = ANY(
|
|
62
|
+
_SQL_DELETE = 'DELETE FROM "{schema}"."{table}" WHERE "{primary_key}" = ANY(%(ids)s)'
|
|
46
63
|
|
|
47
64
|
# https://www.postgresqltutorial.com/postgresql-tutorial/postgresql-upsert/
|
|
48
65
|
# https://stackoverflow.com/a/30917361
|
|
@@ -201,11 +218,13 @@ class Query:
|
|
|
201
218
|
|
|
202
219
|
try:
|
|
203
220
|
offset = int(offset)
|
|
204
|
-
except (ValueError, TypeError):
|
|
205
|
-
|
|
221
|
+
except (ValueError, TypeError) as error:
|
|
222
|
+
msg = 'Offset must be an integer or a string representing it.'
|
|
223
|
+
raise TypeError(msg) from error
|
|
206
224
|
|
|
207
225
|
if offset < 0:
|
|
208
|
-
|
|
226
|
+
msg = 'Offset must not be negative.'
|
|
227
|
+
raise TypeError(msg)
|
|
209
228
|
|
|
210
229
|
if offset == 0:
|
|
211
230
|
return ''
|
|
@@ -296,7 +315,7 @@ class Query:
|
|
|
296
315
|
"""
|
|
297
316
|
# Create the values string
|
|
298
317
|
# We do not use " here because we are using the values as placeholders
|
|
299
|
-
values = ', '.join(f'
|
|
318
|
+
values = ', '.join(f'%({field})s' for field in fields)
|
|
300
319
|
|
|
301
320
|
# Create the SQL query
|
|
302
321
|
update = ', '.join(f'"{field}" = EXCLUDED."{field}"' for field in fields)
|
|
@@ -320,17 +339,14 @@ class Query:
|
|
|
320
339
|
Args:
|
|
321
340
|
params (dict): A dictionary of parameters to prepare.
|
|
322
341
|
"""
|
|
323
|
-
# https://
|
|
342
|
+
# https://www.psycopg.org/psycopg3/docs/basic/adapt.html#json-adaptation
|
|
324
343
|
for key, value in params.items():
|
|
325
344
|
if isinstance(value, (set, tuple)):
|
|
326
|
-
params[key] =
|
|
327
|
-
elif isinstance(value, list):
|
|
328
|
-
params[key] =
|
|
345
|
+
params[key] = Jsonb(list(value))
|
|
346
|
+
elif isinstance(value, (dict, list)):
|
|
347
|
+
params[key] = Jsonb(value)
|
|
329
348
|
elif isinstance(value, BaseDict):
|
|
330
|
-
params[key] =
|
|
331
|
-
elif isinstance(value, str):
|
|
332
|
-
# Text is needed to differentiate between VARCHAR and TEXT
|
|
333
|
-
params[key] = Text(value)
|
|
349
|
+
params[key] = Jsonb(value.to_dict())
|
|
334
350
|
|
|
335
351
|
return params
|
|
336
352
|
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
###############################################################################
|
|
2
|
+
#
|
|
3
|
+
# (C) Copyright 2025 EVERYSK TECHNOLOGIES
|
|
4
|
+
#
|
|
5
|
+
# This is an unpublished work containing confidential and proprietary
|
|
6
|
+
# information of EVERYSK TECHNOLOGIES. Disclosure, use, or reproduction
|
|
7
|
+
# without authorization of EVERYSK TECHNOLOGIES is prohibited.
|
|
8
|
+
#
|
|
9
|
+
###############################################################################
|
|
10
|
+
from collections.abc import Callable, Iterable
|
|
11
|
+
from typing import Any
|
|
12
|
+
|
|
13
|
+
from psycopg import Cursor
|
|
14
|
+
from psycopg.rows import _get_names, no_result
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def cls_row(cls: type, loads: Callable | None = None) -> Callable:
|
|
18
|
+
"""
|
|
19
|
+
Function to convert a row from a cursor to an instance of the specified class.
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
cls (type): The class to instantiate for each row.
|
|
23
|
+
loads (callable | None, optional): Optional function to process each value. Defaults to None.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
def inner(cursor: Cursor) -> Callable:
|
|
27
|
+
names = _get_names(cursor)
|
|
28
|
+
if names is None:
|
|
29
|
+
return no_result
|
|
30
|
+
|
|
31
|
+
def cls_row_(values: Iterable) -> Any:
|
|
32
|
+
if loads is None:
|
|
33
|
+
return cls(**dict(zip(names, values, strict=True)))
|
|
34
|
+
|
|
35
|
+
return cls(**dict(zip(names, map(loads, values), strict=True)))
|
|
36
|
+
|
|
37
|
+
return cls_row_
|
|
38
|
+
|
|
39
|
+
return inner
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def dict_row(loads: Callable | None = None) -> Callable:
|
|
43
|
+
"""
|
|
44
|
+
Function to convert a row from a cursor to a dictionary.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
loads (Callable | None): Optional function to process each value. Defaults to None.
|
|
48
|
+
"""
|
|
49
|
+
|
|
50
|
+
def inner(cursor: Cursor) -> Callable:
|
|
51
|
+
names = _get_names(cursor)
|
|
52
|
+
if names is None:
|
|
53
|
+
return no_result
|
|
54
|
+
|
|
55
|
+
def dict_row_(values: Iterable) -> dict[str, Any]:
|
|
56
|
+
if loads is None:
|
|
57
|
+
return dict(zip(names, values, strict=True))
|
|
58
|
+
|
|
59
|
+
return dict(zip(names, map(loads, values), strict=True))
|
|
60
|
+
|
|
61
|
+
return dict_row_
|
|
62
|
+
|
|
63
|
+
return inner
|
everysk/sql/settings.py
CHANGED
|
@@ -17,6 +17,29 @@ POSTGRESQL_CONNECTION_PASSWORD: str = None
|
|
|
17
17
|
POSTGRESQL_CONNECTION_PORT: int = 5432
|
|
18
18
|
POSTGRESQL_CONNECTION_HOST: str = None
|
|
19
19
|
POSTGRESQL_CONNECTION_USER: str = None
|
|
20
|
-
# Disable, Allow, Prefer, Require, VerifyCA, VerifyFull
|
|
21
|
-
POSTGRESQL_CONNECTION_ENCRYPTION: str = 'Prefer'
|
|
22
20
|
POSTGRESQL_POOL_MAX_SIZE: int = 10
|
|
21
|
+
POSTGRESQL_POOL_MIN_SIZE: int = 1
|
|
22
|
+
|
|
23
|
+
# https://www.psycopg.org/psycopg3/docs/api/pool.html
|
|
24
|
+
# Maximum time, in seconds, that a connection can stay unused in the pool before being closed, and the pool shrunk.
|
|
25
|
+
# This only happens to connections more than min_size, if max_size allowed the pool to grow.
|
|
26
|
+
POSTGRESQL_POOL_MAX_IDLE: int = 60 * 5 # 5 minutes
|
|
27
|
+
|
|
28
|
+
# The maximum lifetime of a connection in the pool, in seconds. Connections used for longer get closed and replaced by
|
|
29
|
+
# a new one. The amount is reduced by a random 10% to avoid mass eviction.
|
|
30
|
+
POSTGRESQL_POOL_MAX_LIFETIME: int = 60 * 30 # 30 minutes
|
|
31
|
+
|
|
32
|
+
# Maximum number of requests that can be queued to the pool, after which new requests will fail.
|
|
33
|
+
# Raising TooManyRequests, 0 means no queue limit.
|
|
34
|
+
POSTGRESQL_POOL_MAX_WAITING: int = 0
|
|
35
|
+
|
|
36
|
+
# If the connections are opened on init or later.
|
|
37
|
+
POSTGRESQL_POOL_OPEN: bool = True
|
|
38
|
+
|
|
39
|
+
# Maximum time, in seconds, the pool will try to create a connection. If a connection attempt fails, the pool will try
|
|
40
|
+
# to reconnect a few times, using an exponential backoff and some random factor to avoid mass attempts.
|
|
41
|
+
POSTGRESQL_POOL_RECONNECT_TIMEOUT: int = 60 * 2 # 2 minutes
|
|
42
|
+
|
|
43
|
+
# The default maximum time in seconds that a client can wait to receive a connection
|
|
44
|
+
# from the pool (using connection() or getconn()).
|
|
45
|
+
POSTGRESQL_POOL_TIMEOUT: int = 30 # 30 seconds
|
everysk/sql/utils.py
CHANGED
|
@@ -17,6 +17,7 @@ _SQL_OPERATORS = {
|
|
|
17
17
|
'ilike': 'ILIKE',
|
|
18
18
|
'in': 'IN',
|
|
19
19
|
'inside': '?',
|
|
20
|
+
'insidebinary': '?|',
|
|
20
21
|
'isnotnull': 'IS NOT NULL',
|
|
21
22
|
'isnull': 'IS NULL',
|
|
22
23
|
'like': 'LIKE',
|
|
@@ -58,8 +59,8 @@ class ConditionOperator:
|
|
|
58
59
|
|
|
59
60
|
## Operators methods
|
|
60
61
|
def _operator_default(self) -> tuple[str, Any]:
|
|
61
|
-
"""Default operator method "field" <operator>
|
|
62
|
-
operation = f'{self.sql_operator}
|
|
62
|
+
"""Default operator method "field" <operator> %(field)s."""
|
|
63
|
+
operation = f'{self.sql_operator} %({self.field_operator})s'
|
|
63
64
|
sql = f'"{self.field}" {operation}'
|
|
64
65
|
return sql, self.value
|
|
65
66
|
|
|
@@ -69,9 +70,9 @@ class ConditionOperator:
|
|
|
69
70
|
return sql, f'%{value}'
|
|
70
71
|
|
|
71
72
|
def _operator_in(self) -> tuple[str, list]:
|
|
72
|
-
"""Operator method for in: "field" = ANY(
|
|
73
|
+
"""Operator method for in: "field" = ANY(%(field__in)s)."""
|
|
73
74
|
# https://www.psycopg.org/psycopg3/docs/basic/from_pg2.html#you-cannot-use-in-s-with-a-tuple
|
|
74
|
-
operation = f'ANY(
|
|
75
|
+
operation = f'ANY(%({self.field_operator})s)'
|
|
75
76
|
sql = f'"{self.field}" = {operation}'
|
|
76
77
|
if isinstance(self.value, str):
|
|
77
78
|
return sql, self.value.split(',')
|
|
@@ -98,8 +99,8 @@ class ConditionOperator:
|
|
|
98
99
|
return self._operator_like()
|
|
99
100
|
|
|
100
101
|
def _operator_nin(self) -> tuple[str, list]:
|
|
101
|
-
"""Operator method for nin: "field" != ALL(
|
|
102
|
-
operation = f'ALL(
|
|
102
|
+
"""Operator method for nin: "field" != ALL(%(field__nin)s)."""
|
|
103
|
+
operation = f'ALL(%({self.field_operator})s)'
|
|
103
104
|
sql = f'"{self.field}" != {operation}'
|
|
104
105
|
if isinstance(self.value, str):
|
|
105
106
|
return sql, self.value.split(',')
|
|
@@ -119,7 +120,7 @@ class ConditionOperator:
|
|
|
119
120
|
Example:
|
|
120
121
|
field__operator = 'age__gt'
|
|
121
122
|
value = 30
|
|
122
|
-
returns: ('"age" >
|
|
123
|
+
returns: ('"age" > %(age__gt)s', 30)
|
|
123
124
|
"""
|
|
124
125
|
method_name = f'_operator_{self.operator}'
|
|
125
126
|
if hasattr(self, method_name):
|
everysk/tests.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: everysk-lib
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.10.0
|
|
4
4
|
Summary: Generic lib to share python code on Everysk.
|
|
5
5
|
License-Expression: LicenseRef-Proprietary
|
|
6
6
|
Project-URL: Homepage, https://everysk.com/
|
|
@@ -19,13 +19,13 @@ Provides-Extra: requests
|
|
|
19
19
|
Requires-Dist: certifi==2025.10.5; extra == "requests"
|
|
20
20
|
Requires-Dist: charset_normalizer==3.4.4; extra == "requests"
|
|
21
21
|
Requires-Dist: idna==3.11; extra == "requests"
|
|
22
|
-
Requires-Dist: urllib3==2.
|
|
22
|
+
Requires-Dist: urllib3==2.6.3; extra == "requests"
|
|
23
23
|
Requires-Dist: requests==2.32.5; extra == "requests"
|
|
24
24
|
Provides-Extra: firestore
|
|
25
25
|
Requires-Dist: certifi==2025.10.5; extra == "firestore"
|
|
26
26
|
Requires-Dist: charset-normalizer==3.3.2; extra == "firestore"
|
|
27
27
|
Requires-Dist: idna==3.6; extra == "firestore"
|
|
28
|
-
Requires-Dist: urllib3==2.
|
|
28
|
+
Requires-Dist: urllib3==2.6.3; extra == "firestore"
|
|
29
29
|
Requires-Dist: requests==2.32.4; extra == "firestore"
|
|
30
30
|
Requires-Dist: pyasn1==0.5.1; extra == "firestore"
|
|
31
31
|
Requires-Dist: pyasn1-modules==0.3.0; extra == "firestore"
|
|
@@ -47,7 +47,7 @@ Provides-Extra: tasks
|
|
|
47
47
|
Requires-Dist: certifi==2025.10.5; extra == "tasks"
|
|
48
48
|
Requires-Dist: charset-normalizer==3.3.2; extra == "tasks"
|
|
49
49
|
Requires-Dist: idna==3.6; extra == "tasks"
|
|
50
|
-
Requires-Dist: urllib3==2.
|
|
50
|
+
Requires-Dist: urllib3==2.6.3; extra == "tasks"
|
|
51
51
|
Requires-Dist: requests==2.32.4; extra == "tasks"
|
|
52
52
|
Requires-Dist: pyasn1==0.5.1; extra == "tasks"
|
|
53
53
|
Requires-Dist: pyasn1-modules==0.3.0; extra == "tasks"
|
|
@@ -115,7 +115,9 @@ Requires-Dist: lark==1.2.2; extra == "expression"
|
|
|
115
115
|
Requires-Dist: numpy==1.26.4; extra == "expression"
|
|
116
116
|
Requires-Dist: pandas==2.1.4; extra == "expression"
|
|
117
117
|
Provides-Extra: postgresql
|
|
118
|
-
Requires-Dist:
|
|
118
|
+
Requires-Dist: psycopg-binary==3.3.0; extra == "postgresql"
|
|
119
|
+
Requires-Dist: psycopg-pool==3.3.0; extra == "postgresql"
|
|
120
|
+
Requires-Dist: psycopg==3.3.0; extra == "postgresql"
|
|
119
121
|
Dynamic: license-file
|
|
120
122
|
|
|
121
123
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
everysk/__init__.py,sha256=JeZGK9kmTaBRR6H4et-3UYE6x8D7xsFtrTnJ_tQXG_Q,1039
|
|
2
2
|
everysk/_version.py,sha256=_OPcym8X5j0fiafJLlKp8ADhMP5pHKqD2YySbH9f1PY,24501
|
|
3
3
|
everysk/config.py,sha256=PKwYhzgBUIQ2m_cS5muBRWssZa4I3B6D5Qa9eSqAu18,16653
|
|
4
|
-
everysk/settings.py,sha256=
|
|
5
|
-
everysk/tests.py,sha256
|
|
4
|
+
everysk/settings.py,sha256=Z_wPLDcAxjd6gW2lH6J8n6Q2j-x3V_AJGJmR5NapzBo,4008
|
|
5
|
+
everysk/tests.py,sha256=MlZ4_IXk639-tyTtmdWWMJD98bPK0eunRFCPZopj2fs,884
|
|
6
6
|
everysk/utils.py,sha256=nejrDn5n75YBk3BinEiDY5JhhdB7BaHX_9wpJ20RvXs,2654
|
|
7
7
|
everysk/version.py,sha256=q8j2yDrdm4lEtGtOIt4tY4TUlctwQYJJcVqscDabikA,617
|
|
8
8
|
everysk/api/__init__.py,sha256=nD4G5flQ8gbgmIVk7Ap-dktnJdiIMj45QnKxMKAPeAA,2250
|
|
@@ -37,12 +37,13 @@ everysk/core/log.py,sha256=qFRW9bO6jaELwrJ0MIaEUm2-uYFIyTbH2bQ3j0XpPio,30239
|
|
|
37
37
|
everysk/core/number.py,sha256=Al_9LLu7hj_4fTLPTiN3dzQvxctmMxB5i9I4Z4X5Lro,1204
|
|
38
38
|
everysk/core/object.py,sha256=9XMSPDlgLtGTKJLVimRIND4a7U1e_rZrERJGZw2j_lQ,53924
|
|
39
39
|
everysk/core/redis.py,sha256=HrG58dc_3EHnti2sBaijcyN8Hq4u3p1zst6-CSK9ySQ,36664
|
|
40
|
+
everysk/core/retry.py,sha256=wLU0fNKP7cNYKkYxMTjR--YFYM0ahXWP-39O_FObwfo,1897
|
|
40
41
|
everysk/core/serialize.py,sha256=8P5C7V98tB9vAQBEdu0NqMt8lktsD-Ol5REpTG1vNlw,25155
|
|
41
42
|
everysk/core/sftp.py,sha256=01_iDxqhcAO3FFKUp-8myV7qtf3I-Mi_cLZ6KrAfsGw,15600
|
|
42
43
|
everysk/core/signing.py,sha256=vImkFEiunqD-oO3e9Oi88z0x0jEEfO1lDIbC9RYxTn8,1956
|
|
43
44
|
everysk/core/slack.py,sha256=r9QH6RRe74Jz4-8XWLqbYq21msIlsVuC4fr_VUMFZPE,4394
|
|
44
45
|
everysk/core/string.py,sha256=K1BRlRNuhqlI7gdqOi40hjTHuxm1fF-RLqIAwm74eHc,5456
|
|
45
|
-
everysk/core/tests.py,sha256=
|
|
46
|
+
everysk/core/tests.py,sha256=qrfAfUDmgCvBn99X73fL5MUTo1P33gq0ftP5CTJetCc,14491
|
|
46
47
|
everysk/core/threads.py,sha256=CcL4Nv2Zzdxt1xjo0CbLSttSU29xHgSRiWF_JXr3GAA,7167
|
|
47
48
|
everysk/core/undefined.py,sha256=sNvP9qJJi3TINPSJiIWjqKz4o5DNBBYparoTRrDtJ_0,2757
|
|
48
49
|
everysk/core/unittests.py,sha256=ujGqGHCUAI25P4UgwHn9GpZAMBdqZ-lxxGERrckthIM,3289
|
|
@@ -67,13 +68,15 @@ everysk/sdk/base.py,sha256=aOhguqj-WfyHYm_qO5G675JdF5iJKf6x0Abt4jYKb_8,3668
|
|
|
67
68
|
everysk/sdk/settings.py,sha256=S9l3ZwC6jZwTvr_bnQtvwXJSKFsRF7yKj2btptd3abs,3147
|
|
68
69
|
everysk/sdk/tests.py,sha256=pZPSxu2roMCLFWHhnZFCSlA4nv_mFkwqNBkDsVfZ8GU,7611
|
|
69
70
|
everysk/sdk/worker_base.py,sha256=31zDyLtttU25h2kNbwk4yn0tTxHaIc_Ysq5Grm9A9d8,1555
|
|
71
|
+
everysk/sdk/brutils/cnpj.py,sha256=Dh3zcBiQoWm8gI5mV_-dv4a35Z0D8lSMGDcbCkdk3DE,12852
|
|
72
|
+
everysk/sdk/brutils/cnpj_pd.py,sha256=7NwIbIq2zupneAblxs2caspzNcdQcwdkDMyAGvgw7SU,1524
|
|
70
73
|
everysk/sdk/engines/__init__.py,sha256=1v06RoWC4qfxkfUdbQGF3yCuskXjrvbb_yF_6XCpO5E,1153
|
|
71
74
|
everysk/sdk/engines/cache.py,sha256=uCFfBVfEyjHRxTNiPXMFehPWaq8k0DbQ50f40JHt4Qg,6580
|
|
72
75
|
everysk/sdk/engines/compliance.py,sha256=Kd2buYlcKfUHEGmeZrGgT2JOnC7p12UOlDwFS69ssEM,1432
|
|
73
76
|
everysk/sdk/engines/cryptography.py,sha256=y07mfKbNDK86j4CnfmqqdL2KWBf0s6WN7xjuL-iS6g4,2111
|
|
74
|
-
everysk/sdk/engines/expression.cp311-win_amd64.pyd,sha256=
|
|
77
|
+
everysk/sdk/engines/expression.cp311-win_amd64.pyd,sha256=IuJ22ovJLYxN8F1fShlVDfx99VFSghZbu-kMFY_WGs8,3797504
|
|
75
78
|
everysk/sdk/engines/expression.pyi,sha256=ghE_B4tua8hqo7IahSWxl_5fJ_ONF8RVMgSM4Hf_NpU,1265
|
|
76
|
-
everysk/sdk/engines/helpers.cp311-win_amd64.pyd,sha256=
|
|
79
|
+
everysk/sdk/engines/helpers.cp311-win_amd64.pyd,sha256=c5-Ld3b5oYmx79WqkWG79J-sAjAX1uH_noFETPsyqPU,1039872
|
|
77
80
|
everysk/sdk/engines/helpers.pyi,sha256=CIcomtg79QWisRscba-Trs0X4tOlMT1gxykZjM90KYA,482
|
|
78
81
|
everysk/sdk/engines/lock.py,sha256=rPFY3e2hrKiRyFE0iHAuMad7Cv0KQBJsF9SbZcx43D0,4709
|
|
79
82
|
everysk/sdk/engines/market_data.py,sha256=lyMl_IOAEobFzzo6Jrtxa9ht95BJEmTUR6bXkLGaZLM,9426
|
|
@@ -120,14 +123,15 @@ everysk/server/routing.py,sha256=tHmmokv8msPY37T9F9_lovLZ9NP8bC8G_kxV92aM-tg,242
|
|
|
120
123
|
everysk/server/settings.py,sha256=C9nM3PYZQOKjq9KB2DB4ojGkkTJtj5pslWrUdMGYEwk,1309
|
|
121
124
|
everysk/server/tests.py,sha256=caw6jaXM0xjdi7Y10JpqUTCyUrUmKpG3uxigLcVRdew,1885
|
|
122
125
|
everysk/sql/__init__.py,sha256=lXZAWXrI2tlzw9uvJyThaWnksZqdbemQ2tqe-e7wUiU,413
|
|
123
|
-
everysk/sql/connection.py,sha256=
|
|
124
|
-
everysk/sql/model.py,sha256=
|
|
125
|
-
everysk/sql/query.py,sha256=
|
|
126
|
-
everysk/sql/
|
|
127
|
-
everysk/sql/
|
|
128
|
-
|
|
129
|
-
everysk_lib-1.
|
|
130
|
-
everysk_lib-1.
|
|
131
|
-
everysk_lib-1.
|
|
132
|
-
everysk_lib-1.
|
|
133
|
-
everysk_lib-1.
|
|
126
|
+
everysk/sql/connection.py,sha256=PujKm1i5gAvxU_FVT7IDuMb38D52dII52Gk8RI0vC_0,7928
|
|
127
|
+
everysk/sql/model.py,sha256=syHHTTS4JRTj_2Mu9ugmMu4b6qUY12t3VgfE3hSxYIc,14559
|
|
128
|
+
everysk/sql/query.py,sha256=yO2EoGoUoGace_9BNKN8jeyFV30yCrAhefAvGHqIFE4,14174
|
|
129
|
+
everysk/sql/row_factory.py,sha256=FEtB4d12ACT3Bp6g2k_Ty2p2HpTkPoVqODUS1_kSXys,1936
|
|
130
|
+
everysk/sql/settings.py,sha256=g5ZVm4Y3fhWGeXgTW6D309waGRBx2S6Ima4nY6ByTZw,2103
|
|
131
|
+
everysk/sql/utils.py,sha256=Hbk9INEcz12FoBeDvHh9qh0dTSmTCWAn_S1anJOJb1o,4327
|
|
132
|
+
everysk_lib-1.10.0.dist-info/licenses/LICENSE.txt,sha256=Q5YxWA62m0TsmpEmHeoRHg4oPu_8ektkZ3FWWm1pQWo,311
|
|
133
|
+
everysk_lib-1.10.0.dist-info/.gitignore,sha256=0A1r9HzLhR7IQ1rGPjbaW5HC6oIQ7xzVYZ1z1ZaVfmw,183
|
|
134
|
+
everysk_lib-1.10.0.dist-info/METADATA,sha256=D9ce4vT0AE0HhRR973hNbOfp0QKx31RQIJCtOZzSSEU,13407
|
|
135
|
+
everysk_lib-1.10.0.dist-info/WHEEL,sha256=JLOMsP7F5qtkAkINx5UnzbFguf8CqZeraV8o04b0I8I,101
|
|
136
|
+
everysk_lib-1.10.0.dist-info/top_level.txt,sha256=1s1Lfhd4gXolqzkh-ay3yy-EZKPiKnJfbZwx2fybxyk,14
|
|
137
|
+
everysk_lib-1.10.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|