dapper-sqls 1.1.3__py3-none-any.whl → 1.2.1__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.
- dapper_sqls/__init__.py +3 -1
- dapper_sqls/_types.py +25 -2
- dapper_sqls/async_dapper/async_executors.py +127 -52
- dapper_sqls/builders/model/model.py +418 -33
- dapper_sqls/builders/model/utils.py +334 -42
- dapper_sqls/builders/query.py +164 -43
- dapper_sqls/builders/stored.py +15 -5
- dapper_sqls/builders/stp.py +6 -2
- dapper_sqls/config.py +40 -31
- dapper_sqls/dapper/executors.py +130 -55
- dapper_sqls/http/__init__.py +4 -0
- dapper_sqls/http/aiohttp.py +155 -0
- dapper_sqls/http/decorators.py +123 -0
- dapper_sqls/http/models.py +58 -0
- dapper_sqls/http/request.py +140 -0
- dapper_sqls/models/__init__.py +3 -5
- dapper_sqls/models/base.py +246 -20
- dapper_sqls/models/connection.py +1 -1
- dapper_sqls/models/query_field.py +214 -0
- dapper_sqls/models/result.py +314 -44
- dapper_sqls/sqlite/__init__.py +1 -0
- dapper_sqls/sqlite/async_local_database.py +69 -5
- dapper_sqls/sqlite/decorators.py +69 -0
- dapper_sqls/sqlite/installer.py +8 -4
- dapper_sqls/sqlite/local_database.py +39 -5
- dapper_sqls/sqlite/models.py +25 -1
- dapper_sqls/sqlite/utils.py +2 -1
- dapper_sqls/utils.py +16 -4
- dapper_sqls-1.2.1.dist-info/METADATA +41 -0
- dapper_sqls-1.2.1.dist-info/RECORD +40 -0
- {dapper_sqls-1.1.3.dist-info → dapper_sqls-1.2.1.dist-info}/WHEEL +1 -1
- dapper_sqls-1.1.3.dist-info/METADATA +0 -10
- dapper_sqls-1.1.3.dist-info/RECORD +0 -33
- {dapper_sqls-1.1.3.dist-info → dapper_sqls-1.2.1.dist-info}/top_level.txt +0 -0
@@ -1,13 +1,14 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
from sqlalchemy import create_engine, text, insert, delete, update
|
3
|
-
from .models import BaseTables, Path, System, EnvVar
|
2
|
+
from sqlalchemy import create_engine, text, insert, delete, update, Connection
|
3
|
+
from .models import BaseTables, Path, System, EnvVar, NotificationData
|
4
4
|
from .utils import get_value
|
5
5
|
|
6
6
|
class BaseLocalDatabase(object):
|
7
7
|
|
8
|
-
def __init__(self, app_name : str, path : str, is_new_database : bool):
|
8
|
+
def __init__(self, app_name : str, path : str, is_new_database : bool, insistent_tables : list[str]):
|
9
9
|
self._app_name = app_name
|
10
10
|
self.is_new_database = is_new_database
|
11
|
+
self.insistent_tables = insistent_tables
|
11
12
|
self._engine = create_engine(f'sqlite:///{path}')
|
12
13
|
|
13
14
|
@property
|
@@ -17,9 +18,22 @@ class BaseLocalDatabase(object):
|
|
17
18
|
@property
|
18
19
|
def app_name(self):
|
19
20
|
return self._app_name
|
21
|
+
|
22
|
+
def close(self):
|
23
|
+
self._engine.dispose()
|
24
|
+
self._engine.pool.dispose()
|
25
|
+
self._engine = None
|
20
26
|
|
21
|
-
def select(self, table : str, where : str = None):
|
22
|
-
|
27
|
+
def select(self, table : str, where : str = None, conn : Connection = None):
|
28
|
+
if not conn:
|
29
|
+
with self.engine.connect() as conn:
|
30
|
+
if where:
|
31
|
+
query = conn.execute(text(f"select * from {table} where App = '{self.app_name}' and {where}"))
|
32
|
+
else:
|
33
|
+
query = conn.execute(text(f"select * from {table} where App = '{self.app_name}'"))
|
34
|
+
data = [dict(zip(tuple(query.keys()), i)) for i in query.cursor]
|
35
|
+
return data
|
36
|
+
else:
|
23
37
|
if where:
|
24
38
|
query = conn.execute(text(f"select * from {table} where App = '{self.app_name}' and {where}"))
|
25
39
|
else:
|
@@ -107,6 +121,26 @@ class BaseLocalDatabase(object):
|
|
107
121
|
).values(Tema=theme)
|
108
122
|
conn.execute(stmt)
|
109
123
|
conn.commit()
|
124
|
+
|
125
|
+
def insert_notification(self, data : NotificationData):
|
126
|
+
with self.engine.connect() as conn:
|
127
|
+
ins = insert(BaseTables.notification).values(App=self.app_name, guid=data.guid, local=data.local, title=data.title, message=data.message, type=data.type,date=data.date)
|
128
|
+
conn.execute(ins)
|
129
|
+
conn.commit()
|
130
|
+
|
131
|
+
def delete_notification(self, guid : str):
|
132
|
+
with self.engine.connect() as conn:
|
133
|
+
conn.execute(delete(BaseTables.notification).where((BaseTables.notification.c.guid == guid) & (BaseTables.notification.c.App == self.app_name)))
|
134
|
+
conn.commit()
|
135
|
+
|
136
|
+
def clear_notification(self):
|
137
|
+
with self.engine.connect() as conn:
|
138
|
+
conn.execute(delete(BaseTables.notification).where(BaseTables.notification.c.App == self.app_name))
|
139
|
+
conn.commit()
|
140
|
+
|
141
|
+
def get_notifications(self):
|
142
|
+
notifications = self.select('notification')
|
143
|
+
return [NotificationData(**notification) for notification in notifications]
|
110
144
|
|
111
145
|
|
112
146
|
|
dapper_sqls/sqlite/models.py
CHANGED
@@ -1,8 +1,11 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
from sqlalchemy import MetaData, Table, Column, Integer, String
|
2
|
+
from sqlalchemy import MetaData, Table, Column, Integer, String, TIMESTAMP
|
3
|
+
from pydantic import BaseModel, Field
|
4
|
+
from datetime import datetime
|
3
5
|
|
4
6
|
class BaseTables:
|
5
7
|
meta_data = MetaData()
|
8
|
+
|
6
9
|
system = Table(
|
7
10
|
'system', meta_data,
|
8
11
|
Column('id', Integer, primary_key=True),
|
@@ -24,6 +27,19 @@ class BaseTables:
|
|
24
27
|
Column('Path', String)
|
25
28
|
)
|
26
29
|
|
30
|
+
notification = Table(
|
31
|
+
'notification',
|
32
|
+
meta_data,
|
33
|
+
Column('id', Integer, primary_key=True),
|
34
|
+
Column('App', String),
|
35
|
+
Column('guid', String, unique=True),
|
36
|
+
Column('local', String),
|
37
|
+
Column('title', String),
|
38
|
+
Column('message', String),
|
39
|
+
Column('type', String),
|
40
|
+
Column('date', TIMESTAMP),
|
41
|
+
)
|
42
|
+
|
27
43
|
class BaseTableModel(object):
|
28
44
|
def __init__(self, dados : dict):
|
29
45
|
self.id : int = dados['id']
|
@@ -47,6 +63,14 @@ class System(BaseTableModel):
|
|
47
63
|
super().__init__(dados)
|
48
64
|
self.Theme : str = dados['Tema']
|
49
65
|
|
66
|
+
class NotificationData(BaseModel):
|
67
|
+
guid : str = Field(..., description="")
|
68
|
+
date : datetime = Field(..., description="")
|
69
|
+
local : str = Field(..., description="")
|
70
|
+
title : str = Field(..., description="")
|
71
|
+
message : str = Field(..., description="")
|
72
|
+
type : str = Field(..., description="")
|
73
|
+
|
50
74
|
|
51
75
|
|
52
76
|
|
dapper_sqls/sqlite/utils.py
CHANGED
dapper_sqls/utils.py
CHANGED
@@ -1,9 +1,21 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
|
-
def get_dict_args(local
|
4
|
-
if
|
5
|
-
|
6
|
-
|
3
|
+
def get_dict_args(local: dict, ignore_args=None, ignore_values_none=True):
|
4
|
+
if ignore_args is None:
|
5
|
+
ignore_args = []
|
6
|
+
|
7
|
+
def is_valid_key(k, v):
|
8
|
+
if k in ('self', 'cls'):
|
9
|
+
return False
|
10
|
+
if k in ignore_args:
|
11
|
+
return False
|
12
|
+
if k.startswith('__') and k.endswith('__'):
|
13
|
+
return False
|
14
|
+
if ignore_values_none and v is None:
|
15
|
+
return False
|
16
|
+
return True
|
17
|
+
|
18
|
+
return {k: v for k, v in local.items() if is_valid_key(k, v)}
|
7
19
|
|
8
20
|
class ArgsStored:
|
9
21
|
def __init__(self, model : object | None, query : str | None, params : list | tuple | None, additional_sql : str, select_top : int | None):
|
@@ -0,0 +1,41 @@
|
|
1
|
+
Metadata-Version: 2.1
|
2
|
+
Name: dapper-sqls
|
3
|
+
Version: 1.2.1
|
4
|
+
Summary: UNKNOWN
|
5
|
+
Home-page: UNKNOWN
|
6
|
+
Author: Samuel Semedo
|
7
|
+
License: UNKNOWN
|
8
|
+
Platform: UNKNOWN
|
9
|
+
Requires-Dist: aiohappyeyeballs
|
10
|
+
Requires-Dist: aiohttp
|
11
|
+
Requires-Dist: aioodbc
|
12
|
+
Requires-Dist: aiosignal
|
13
|
+
Requires-Dist: aiosqlite
|
14
|
+
Requires-Dist: annotated-types
|
15
|
+
Requires-Dist: async-timeout
|
16
|
+
Requires-Dist: attrs
|
17
|
+
Requires-Dist: certifi
|
18
|
+
Requires-Dist: charset-normalizer
|
19
|
+
Requires-Dist: check-wheel-contents
|
20
|
+
Requires-Dist: click
|
21
|
+
Requires-Dist: colorama
|
22
|
+
Requires-Dist: frozenlist
|
23
|
+
Requires-Dist: greenlet
|
24
|
+
Requires-Dist: idna
|
25
|
+
Requires-Dist: multidict
|
26
|
+
Requires-Dist: packaging
|
27
|
+
Requires-Dist: propcache
|
28
|
+
Requires-Dist: pydantic
|
29
|
+
Requires-Dist: pydantic-core
|
30
|
+
Requires-Dist: PyJWT
|
31
|
+
Requires-Dist: pyodbc
|
32
|
+
Requires-Dist: requests
|
33
|
+
Requires-Dist: SQLAlchemy
|
34
|
+
Requires-Dist: tomli
|
35
|
+
Requires-Dist: typing-extensions
|
36
|
+
Requires-Dist: urllib3
|
37
|
+
Requires-Dist: wheel-filename
|
38
|
+
Requires-Dist: yarl
|
39
|
+
|
40
|
+
UNKNOWN
|
41
|
+
|
@@ -0,0 +1,40 @@
|
|
1
|
+
dapper_sqls/__init__.py,sha256=PEnB75qUOVDne--AevMMMaB34PbVuMVv4tIsBjLUcT4,473
|
2
|
+
dapper_sqls/_types.py,sha256=PM0wWdWjnDB5i-fl2AinWJkcssx4gs3gzhj8GSV1A2s,1186
|
3
|
+
dapper_sqls/config.py,sha256=WSG3m-8_snWrc8rg37BSTZcxcBOGAdR5mVdlWF3V-Tg,5038
|
4
|
+
dapper_sqls/decorators.py,sha256=I2Uo3Uj1-K4XVTNTvcejaUfd_tuUmM6kOWXrMyX1Dts,2767
|
5
|
+
dapper_sqls/utils.py,sha256=G_smIX7sHuBy_eGCdy1flpIJIr-Y-yZtjLdKAZXxwog,3645
|
6
|
+
dapper_sqls/async_dapper/__init__.py,sha256=lBXRyXMCaiwgcK5TCw5rg-niwFS4GcZVW5Q2enKcS-0,47
|
7
|
+
dapper_sqls/async_dapper/async_dapper.py,sha256=n9oDmgvRvB3TkuW3e-rcvy35VZfYespB9qn9qtCVa7s,2454
|
8
|
+
dapper_sqls/async_dapper/async_executors.py,sha256=8P-tvoq45fuPrzwbESbwlmTvb0OjBAuEhhNj30AxzlY,17213
|
9
|
+
dapper_sqls/builders/__init__.py,sha256=o_dGrHF09NOj3KFLpkpfaRzJMgYcddpQy-QTOJJTLPA,153
|
10
|
+
dapper_sqls/builders/query.py,sha256=Qf2V4MSSrZsHsMoSjczrAga5gcRf6Vl-vhJxtcLGVBA,8345
|
11
|
+
dapper_sqls/builders/stored.py,sha256=EHNRTLFYDVvqqWkmQggzJIbXfTKZN4Se8rbME7wLPHU,3131
|
12
|
+
dapper_sqls/builders/stp.py,sha256=LELylyG5tefcIk6kpsUTTuCkakRKTu93OwWCHB6mxU4,4915
|
13
|
+
dapper_sqls/builders/model/__init__.py,sha256=9cAgoo-zu82YhtsmePseZhfeX94UMwfYuP9j-3d597Q,41
|
14
|
+
dapper_sqls/builders/model/model.py,sha256=OULDuudqkj5oh1NlYzDJZwbQVDXh735LXhyCWiqpvWM,34668
|
15
|
+
dapper_sqls/builders/model/utils.py,sha256=w-EBGxwltFFIw4jGvuQAvyCAnoDysqaPhfk86JLvCTs,27583
|
16
|
+
dapper_sqls/dapper/__init__.py,sha256=AlQJ-QYMqKeerSQBM8Dc9_VQwUKCN4bl4ThKHsTlYms,38
|
17
|
+
dapper_sqls/dapper/dapper.py,sha256=3sFRtgw_M3zZI8dyDJacVFwzAuH7jbyQehfCiYMymZs,2584
|
18
|
+
dapper_sqls/dapper/executors.py,sha256=e6JZ2urLAMI3AyuxAquaQ9gficrtIxRswJnQS7pPTaM,16717
|
19
|
+
dapper_sqls/http/__init__.py,sha256=-BkIvJqXqnzFIpsBlipLUj_Hvbx_qvFwDF_LekmXh7Y,91
|
20
|
+
dapper_sqls/http/aiohttp.py,sha256=Z8ugmMI7YiowYwS3qArdmj_cq2neUo0cY3EY3n5CUos,6334
|
21
|
+
dapper_sqls/http/decorators.py,sha256=zBWujQ8pbSYCl1CAvGJieXDu97fPN4hITRafTISajhU,3942
|
22
|
+
dapper_sqls/http/models.py,sha256=dHWOZ_bo9EhRXFSIf1eHDe0zG6pY58_TWtif5Hr-xPg,1724
|
23
|
+
dapper_sqls/http/request.py,sha256=dbiCv1gc3IbHolzZteF2dlVeVA8jdHnT_n-gqWqdjGQ,5690
|
24
|
+
dapper_sqls/models/__init__.py,sha256=pRrgVBMx8_AHPBKr7Zv7a2Mr3gYJpVHl-lRXAKZ6cJE,496
|
25
|
+
dapper_sqls/models/base.py,sha256=KmlbLa9_k0ioGDWVjISes4kIP8OgElAoCqXbr3VbSCE,8588
|
26
|
+
dapper_sqls/models/connection.py,sha256=z5OkYeY5Qp-dXdy1bvZHAlov-Kq-lgMxC6RqNdTiiq4,1745
|
27
|
+
dapper_sqls/models/http.py,sha256=rCmf4Mj1bA_oc0k0vDxi2v1Cqd4oXDDU83P_6kNwTuA,356
|
28
|
+
dapper_sqls/models/query_field.py,sha256=QOQlB6hlVm7fGZqsAFgWGznLEDSR03uTI_--xDyUEao,7763
|
29
|
+
dapper_sqls/models/result.py,sha256=K_EIZxQljqFiHinbLwlda87ZCktZ4buvvws1smGIh5Q,12707
|
30
|
+
dapper_sqls/sqlite/__init__.py,sha256=EUREulLqSlZ43_3pEYlDJ3rF7i0cSwROnqrlZX9ircI,247
|
31
|
+
dapper_sqls/sqlite/async_local_database.py,sha256=VqMdAD2wdzqFMIKEpnOgbajEwwSmxLqtSkqWSipbu6o,7754
|
32
|
+
dapper_sqls/sqlite/decorators.py,sha256=hvehaUi6uV3BkLNOcbGhv3-fV0VJD0hLomXznSSMJEA,2420
|
33
|
+
dapper_sqls/sqlite/installer.py,sha256=nCDGRNUEvAEHx8Pw3izXx9miJJ3o5cjjPWA07nlqAD4,4781
|
34
|
+
dapper_sqls/sqlite/local_database.py,sha256=kuEVRJvzUUQg3X1Abq9ZYslO9n5IMovaCj7jnB51qSs,5902
|
35
|
+
dapper_sqls/sqlite/models.py,sha256=m1I0-iYDdv-4fVYMsAboRYHbMEcwI4GScZSdbs7_nUY,2232
|
36
|
+
dapper_sqls/sqlite/utils.py,sha256=22n2ry7_7b7XGDjwv3sY8swADpXDAynR0-E8WQrvHzc,230
|
37
|
+
dapper_sqls-1.2.1.dist-info/METADATA,sha256=Lcvmw9RHD9l5YFo7Lag1BaqHIdKwduFjcHlUWefuqHk,964
|
38
|
+
dapper_sqls-1.2.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
39
|
+
dapper_sqls-1.2.1.dist-info/top_level.txt,sha256=Pe1YqCPngnYbSVdhJyDrdFWHFCOqBvFW8WK7kTaIax4,12
|
40
|
+
dapper_sqls-1.2.1.dist-info/RECORD,,
|
@@ -1,10 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.1
|
2
|
-
Name: dapper_sqls
|
3
|
-
Version: 1.1.3
|
4
|
-
Author: Samuel Semedo
|
5
|
-
Requires-Dist: aioodbc==0.5.0
|
6
|
-
Requires-Dist: annotated-types==0.7.0
|
7
|
-
Requires-Dist: greenlet==3.1.1
|
8
|
-
Requires-Dist: pyodbc==5.2.0
|
9
|
-
Requires-Dist: SQLAlchemy==2.0.36
|
10
|
-
Requires-Dist: typing_extensions==4.12.2
|
@@ -1,33 +0,0 @@
|
|
1
|
-
dapper_sqls/__init__.py,sha256=-m_igeGpFiWm-B1WEpyNg9nIC3WApaLEdlbRg6v61cg,174
|
2
|
-
dapper_sqls/_types.py,sha256=GM_qDsjKGRSFC0NsU5hkqLKH-ydVKJ-1TgEkxQzi4Hw,181
|
3
|
-
dapper_sqls/config.py,sha256=CN5x_E8PlV734Ra57ensLbdFCxe7ASXp7M1wdubcT5s,4625
|
4
|
-
dapper_sqls/decorators.py,sha256=I2Uo3Uj1-K4XVTNTvcejaUfd_tuUmM6kOWXrMyX1Dts,2767
|
5
|
-
dapper_sqls/utils.py,sha256=0vXX-mhbwSL3Kx7_ErHaxaASgJzrs-g9kwW38kEJZDw,3452
|
6
|
-
dapper_sqls/async_dapper/__init__.py,sha256=lBXRyXMCaiwgcK5TCw5rg-niwFS4GcZVW5Q2enKcS-0,47
|
7
|
-
dapper_sqls/async_dapper/async_dapper.py,sha256=n9oDmgvRvB3TkuW3e-rcvy35VZfYespB9qn9qtCVa7s,2454
|
8
|
-
dapper_sqls/async_dapper/async_executors.py,sha256=uaI5xemBC3Cgs69utC6qqmaaMPdXegarkxyeWVkiTog,13156
|
9
|
-
dapper_sqls/builders/__init__.py,sha256=o_dGrHF09NOj3KFLpkpfaRzJMgYcddpQy-QTOJJTLPA,153
|
10
|
-
dapper_sqls/builders/query.py,sha256=9-wh2zALVNc4dbBcmkvZvKCxKxEoR4G8Sovcrp1go6Q,3895
|
11
|
-
dapper_sqls/builders/stored.py,sha256=dAaKeDfW_9mKqkEgpKrTHwZmzRpsb_iYuJW9v2RXAkA,2778
|
12
|
-
dapper_sqls/builders/stp.py,sha256=wYhhO-tlfH2izUyXhMn9sipy_8_IbKwcqkm0SvkdJfo,4739
|
13
|
-
dapper_sqls/builders/model/__init__.py,sha256=9cAgoo-zu82YhtsmePseZhfeX94UMwfYuP9j-3d597Q,41
|
14
|
-
dapper_sqls/builders/model/model.py,sha256=bawug0tc5PuRVgYU_3JdI7l9s4RyTQT3tDBF5TaGuQo,17026
|
15
|
-
dapper_sqls/builders/model/utils.py,sha256=nhTODL6WTGNI5vtKZ_cRyGcBtv8G574a52-HUT1axao,17240
|
16
|
-
dapper_sqls/dapper/__init__.py,sha256=AlQJ-QYMqKeerSQBM8Dc9_VQwUKCN4bl4ThKHsTlYms,38
|
17
|
-
dapper_sqls/dapper/dapper.py,sha256=3sFRtgw_M3zZI8dyDJacVFwzAuH7jbyQehfCiYMymZs,2584
|
18
|
-
dapper_sqls/dapper/executors.py,sha256=-Q9gFkNXyP1QSezta2AtywOIRx_8PsTyMOvl0q4SwH4,12760
|
19
|
-
dapper_sqls/models/__init__.py,sha256=z1kR1XLmwxQTMctvsbVR8lcXNafQXxkEP0mdbKzB31s,175
|
20
|
-
dapper_sqls/models/base.py,sha256=ddBgBPTVA2_cPNZ4QrYNXqcpsQ8m4Ipy7TWGoHxYF4c,766
|
21
|
-
dapper_sqls/models/connection.py,sha256=xSSB12_Odrdplfn7_724slEAE02rDt2yrdNFsD3ENuU,1746
|
22
|
-
dapper_sqls/models/http.py,sha256=rCmf4Mj1bA_oc0k0vDxi2v1Cqd4oXDDU83P_6kNwTuA,356
|
23
|
-
dapper_sqls/models/result.py,sha256=7IDY3omTGHV8IVpHdej1FaxGXmK1v6h_0iH9zov4Z94,3241
|
24
|
-
dapper_sqls/sqlite/__init__.py,sha256=A94N9nQArs7JIzGHn7gjFIBMVxFW9rnwk-y29fL7_6k,183
|
25
|
-
dapper_sqls/sqlite/async_local_database.py,sha256=cGdGeUjvtWHktkbTCQGbgCNzRdPV6EtDRnwp5x1OtyI,4450
|
26
|
-
dapper_sqls/sqlite/installer.py,sha256=XlXyvNEa59Qr1Kb4bw-7JXXKZBPOuHe7HSVr1KPDYg4,4560
|
27
|
-
dapper_sqls/sqlite/local_database.py,sha256=pNccTu8s34aPVVRQd8NRdDsY4yAszmF51kh9bSUY7f8,4190
|
28
|
-
dapper_sqls/sqlite/models.py,sha256=rZ2R4I3EhrgAxrQwj0vUZkLsjhjHcpCLCmPMBZM19hw,1403
|
29
|
-
dapper_sqls/sqlite/utils.py,sha256=ITuUrp8chmHoVWlP1Ro_EGrWagswuYjspSwmSfWBSrw,226
|
30
|
-
dapper_sqls-1.1.3.dist-info/METADATA,sha256=J8Fafn2-NCfnwxtTAitVOKOMfYxv79TMHZs0AeRAgEE,290
|
31
|
-
dapper_sqls-1.1.3.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
32
|
-
dapper_sqls-1.1.3.dist-info/top_level.txt,sha256=Pe1YqCPngnYbSVdhJyDrdFWHFCOqBvFW8WK7kTaIax4,12
|
33
|
-
dapper_sqls-1.1.3.dist-info/RECORD,,
|
File without changes
|