pjdev-sqlmodel 4.1.0__tar.gz → 4.1.0a2__tar.gz
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.
- {pjdev_sqlmodel-4.1.0 → pjdev_sqlmodel-4.1.0a2}/PKG-INFO +4 -3
- {pjdev_sqlmodel-4.1.0 → pjdev_sqlmodel-4.1.0a2}/src/pjdev_sqlmodel/__about__.py +1 -1
- {pjdev_sqlmodel-4.1.0 → pjdev_sqlmodel-4.1.0a2}/src/pjdev_sqlmodel/utilities.py +39 -4
- {pjdev_sqlmodel-4.1.0 → pjdev_sqlmodel-4.1.0a2}/.gitignore +0 -0
- {pjdev_sqlmodel-4.1.0 → pjdev_sqlmodel-4.1.0a2}/LICENSE.txt +0 -0
- {pjdev_sqlmodel-4.1.0 → pjdev_sqlmodel-4.1.0a2}/README.md +0 -0
- {pjdev_sqlmodel-4.1.0 → pjdev_sqlmodel-4.1.0a2}/pyproject.toml +0 -0
- {pjdev_sqlmodel-4.1.0 → pjdev_sqlmodel-4.1.0a2}/src/pjdev_sqlmodel/__init__.py +0 -0
- {pjdev_sqlmodel-4.1.0 → pjdev_sqlmodel-4.1.0a2}/src/pjdev_sqlmodel/models/__init__.py +0 -0
- {pjdev_sqlmodel-4.1.0 → pjdev_sqlmodel-4.1.0a2}/src/pjdev_sqlmodel/models/db_models.py +0 -0
- {pjdev_sqlmodel-4.1.0 → pjdev_sqlmodel-4.1.0a2}/src/pjdev_sqlmodel/models/settings_models.py +0 -0
- {pjdev_sqlmodel-4.1.0 → pjdev_sqlmodel-4.1.0a2}/src/pjdev_sqlmodel/settings_service.py +0 -0
- {pjdev_sqlmodel-4.1.0 → pjdev_sqlmodel-4.1.0a2}/src/pjdev_sqlmodel/sqlmodel_service.py +0 -0
- {pjdev_sqlmodel-4.1.0 → pjdev_sqlmodel-4.1.0a2}/tests/__init__.py +0 -0
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: pjdev-sqlmodel
|
|
3
|
-
Version: 4.1.
|
|
3
|
+
Version: 4.1.0a2
|
|
4
4
|
Project-URL: Documentation, https://gitlab.purplejay.net/keystone/python
|
|
5
5
|
Project-URL: Issues, https://gitlab.purplejay.net/keystone/python/issues
|
|
6
6
|
Project-URL: Source, https://gitlab.purplejay.net/keystone/python
|
|
7
7
|
Author-email: Purple Jay LLC <apps+keystone-python-221-issue-@purplejay.io>
|
|
8
|
-
License: MIT
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE.txt
|
|
9
10
|
Classifier: Development Status :: 4 - Beta
|
|
10
11
|
Classifier: Programming Language :: Python
|
|
11
12
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -8,6 +8,7 @@ import pandas as pd
|
|
|
8
8
|
from openpyxl.reader.excel import load_workbook
|
|
9
9
|
from loguru import logger
|
|
10
10
|
from sqlalchemy import Engine
|
|
11
|
+
from sqlmodel import select
|
|
11
12
|
|
|
12
13
|
from pjdev_sqlmodel import session_context, sqlmodel_service
|
|
13
14
|
from pjdev_sqlmodel.models import ModelBase
|
|
@@ -15,10 +16,14 @@ from pjdev_sqlmodel.models import ModelBase
|
|
|
15
16
|
T = TypeVar("T", bound=ModelBase)
|
|
16
17
|
|
|
17
18
|
|
|
18
|
-
def get_files_in_directory(directory: Path) -> List[Path]:
|
|
19
|
-
|
|
20
|
-
f for f in directory.glob("
|
|
19
|
+
def get_files_in_directory(directory: Path, file_name='*', force_presence=False) -> List[Path]:
|
|
20
|
+
file_obj = [f for f in directory.glob(f"**/{file_name}.xlsx") if not f.name.startswith("~$")] + [
|
|
21
|
+
f for f in directory.glob(f"**/{file_name}.csv")
|
|
21
22
|
]
|
|
23
|
+
if force_presence and len(file_obj) == 0:
|
|
24
|
+
logger.error(f'Failed to find files matching the {directory}/{file_name} pattern and presence is required. Exiting...')
|
|
25
|
+
exit(1)
|
|
26
|
+
return file_obj
|
|
22
27
|
|
|
23
28
|
|
|
24
29
|
def get_csv_columns(file_path):
|
|
@@ -167,6 +172,36 @@ def load_raw_excel_data(
|
|
|
167
172
|
)
|
|
168
173
|
|
|
169
174
|
|
|
175
|
+
def convert_table_to_df(InputTable: type[BaseModel]):
|
|
176
|
+
with session_context() as session:
|
|
177
|
+
statement = select(InputTable)
|
|
178
|
+
results = session.exec(statement).all()
|
|
179
|
+
|
|
180
|
+
headers = []
|
|
181
|
+
field_names = []
|
|
182
|
+
for name, annotation in InputTable.__annotations__.items():
|
|
183
|
+
field = InputTable.__fields__[name]
|
|
184
|
+
alias = field.alias if field.alias else name
|
|
185
|
+
headers.append(alias)
|
|
186
|
+
field_names.append(name)
|
|
187
|
+
|
|
188
|
+
data = []
|
|
189
|
+
for res in results:
|
|
190
|
+
new_obj = {}
|
|
191
|
+
for i in range(len(headers)):
|
|
192
|
+
header = headers[i]
|
|
193
|
+
field_name = field_names[i]
|
|
194
|
+
new_obj[header] = getattr(res, field_name)
|
|
195
|
+
data.append(new_obj)
|
|
196
|
+
df = pd.DataFrame(data)
|
|
197
|
+
return df
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def convert_table_to_csv(InputTable: type[BaseModel], file: Path):
|
|
201
|
+
df = convert_table_to_df(InputTable)
|
|
202
|
+
df.to_csv(file, index=False)
|
|
203
|
+
|
|
204
|
+
|
|
170
205
|
def __read_csv(
|
|
171
206
|
file: Path | str,
|
|
172
207
|
cols: Optional[List[str]] = None,
|
|
@@ -208,4 +243,4 @@ def convert_to_csv(
|
|
|
208
243
|
df = pd.DataFrame(dict_data)
|
|
209
244
|
|
|
210
245
|
# Export DataFrame to CSV
|
|
211
|
-
df.to_csv(filename, index=index, columns=cols)
|
|
246
|
+
df.to_csv(filename, index=index, columns=cols)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pjdev_sqlmodel-4.1.0 → pjdev_sqlmodel-4.1.0a2}/src/pjdev_sqlmodel/models/settings_models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|