pjdev-sqlmodel 4.3.1__tar.gz → 4.3.2__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.3.1 → pjdev_sqlmodel-4.3.2}/PKG-INFO +1 -1
- {pjdev_sqlmodel-4.3.1 → pjdev_sqlmodel-4.3.2}/src/pjdev_sqlmodel/__about__.py +1 -1
- {pjdev_sqlmodel-4.3.1 → pjdev_sqlmodel-4.3.2}/src/pjdev_sqlmodel/utilities.py +39 -33
- {pjdev_sqlmodel-4.3.1 → pjdev_sqlmodel-4.3.2}/.gitignore +0 -0
- {pjdev_sqlmodel-4.3.1 → pjdev_sqlmodel-4.3.2}/LICENSE.txt +0 -0
- {pjdev_sqlmodel-4.3.1 → pjdev_sqlmodel-4.3.2}/README.md +0 -0
- {pjdev_sqlmodel-4.3.1 → pjdev_sqlmodel-4.3.2}/pyproject.toml +0 -0
- {pjdev_sqlmodel-4.3.1 → pjdev_sqlmodel-4.3.2}/src/pjdev_sqlmodel/__init__.py +0 -0
- {pjdev_sqlmodel-4.3.1 → pjdev_sqlmodel-4.3.2}/src/pjdev_sqlmodel/models/__init__.py +0 -0
- {pjdev_sqlmodel-4.3.1 → pjdev_sqlmodel-4.3.2}/src/pjdev_sqlmodel/models/db_models.py +0 -0
- {pjdev_sqlmodel-4.3.1 → pjdev_sqlmodel-4.3.2}/src/pjdev_sqlmodel/models/settings_models.py +0 -0
- {pjdev_sqlmodel-4.3.1 → pjdev_sqlmodel-4.3.2}/src/pjdev_sqlmodel/settings_service.py +0 -0
- {pjdev_sqlmodel-4.3.1 → pjdev_sqlmodel-4.3.2}/src/pjdev_sqlmodel/sqlmodel_service.py +0 -0
- {pjdev_sqlmodel-4.3.1 → pjdev_sqlmodel-4.3.2}/tests/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pjdev-sqlmodel
|
|
3
|
-
Version: 4.3.
|
|
3
|
+
Version: 4.3.2
|
|
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
|
|
@@ -21,7 +21,8 @@ def get_files_in_directory(directory: Path, file_name='*', force_presence=False)
|
|
|
21
21
|
f for f in directory.glob(f"**/{file_name}.csv")
|
|
22
22
|
]
|
|
23
23
|
if force_presence and len(file_obj) == 0:
|
|
24
|
-
logger.error(
|
|
24
|
+
logger.error(
|
|
25
|
+
f'Failed to find files matching the {directory}/{file_name} pattern and presence is required. Exiting...')
|
|
25
26
|
exit(1)
|
|
26
27
|
return file_obj
|
|
27
28
|
|
|
@@ -59,7 +60,7 @@ def load_csv_data(model_type: Type[T], data_files: List[Path]) -> None:
|
|
|
59
60
|
f
|
|
60
61
|
for f in data_files
|
|
61
62
|
if f.name.endswith(".csv")
|
|
62
|
-
|
|
63
|
+
and len(set(cols).difference(set(get_csv_columns(f)))) == 0
|
|
63
64
|
]
|
|
64
65
|
|
|
65
66
|
data: List[model_type] = []
|
|
@@ -74,10 +75,11 @@ def load_csv_data(model_type: Type[T], data_files: List[Path]) -> None:
|
|
|
74
75
|
|
|
75
76
|
|
|
76
77
|
def load_excel_data(
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
model_type: Type[T],
|
|
79
|
+
data_files: List[Path],
|
|
80
|
+
header_ndx: int = 0,
|
|
81
|
+
sheet_name: str | int = 0,
|
|
82
|
+
col_range: Optional[str] = None,
|
|
81
83
|
) -> None:
|
|
82
84
|
fields = model_type.model_fields.keys()
|
|
83
85
|
cols = [
|
|
@@ -92,10 +94,10 @@ def load_excel_data(
|
|
|
92
94
|
f
|
|
93
95
|
for f in data_files
|
|
94
96
|
if f.name.endswith(".xlsx")
|
|
95
|
-
|
|
97
|
+
and len(
|
|
96
98
|
set(cols).difference(set(get_excel_columns(f, header_ndx + 1, col_range)))
|
|
97
99
|
)
|
|
98
|
-
|
|
100
|
+
== 0
|
|
99
101
|
]
|
|
100
102
|
|
|
101
103
|
data: List[model_type] = []
|
|
@@ -106,7 +108,7 @@ def load_excel_data(
|
|
|
106
108
|
)
|
|
107
109
|
|
|
108
110
|
for file in filtered_files:
|
|
109
|
-
df = __read_excel(file, cols, header_ndx)
|
|
111
|
+
df = __read_excel(file=file, cols=cols, header_ndx=header_ndx, sheet_name=sheet_name)
|
|
110
112
|
data.extend(__convert_to_models(file.name, df, model_type))
|
|
111
113
|
|
|
112
114
|
with session_context() as session:
|
|
@@ -116,7 +118,7 @@ def load_excel_data(
|
|
|
116
118
|
|
|
117
119
|
|
|
118
120
|
def __convert_to_models(
|
|
119
|
-
|
|
121
|
+
filename: str, df: pd.DataFrame, model_type: Type[T]
|
|
120
122
|
) -> List[T]:
|
|
121
123
|
data: List[model_type] = []
|
|
122
124
|
try:
|
|
@@ -130,10 +132,10 @@ def __convert_to_models(
|
|
|
130
132
|
|
|
131
133
|
|
|
132
134
|
def load_raw_csv_data(
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
filename: Path,
|
|
136
|
+
table_name: str,
|
|
137
|
+
data_type_map: Optional[Dict[str, Type]] = None,
|
|
138
|
+
engine: Optional[Engine] = None,
|
|
137
139
|
) -> None:
|
|
138
140
|
df = __read_csv(filename, data_type_map=data_type_map)
|
|
139
141
|
|
|
@@ -151,13 +153,14 @@ def load_raw_csv_data(
|
|
|
151
153
|
|
|
152
154
|
|
|
153
155
|
def load_raw_excel_data(
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
156
|
+
filename: Path,
|
|
157
|
+
table_name: str,
|
|
158
|
+
header_ndx: int = 0,
|
|
159
|
+
sheet_name: str | int = 0,
|
|
160
|
+
data_type_map: Optional[Dict[str, Type]] = None,
|
|
161
|
+
engine: Optional[Engine] = None,
|
|
159
162
|
) -> None:
|
|
160
|
-
df = __read_excel(filename, header_ndx=header_ndx, data_type_map=data_type_map)
|
|
163
|
+
df = __read_excel(filename, header_ndx=header_ndx, data_type_map=data_type_map, sheet_name=sheet_name)
|
|
161
164
|
|
|
162
165
|
if df is None:
|
|
163
166
|
return
|
|
@@ -202,7 +205,8 @@ def convert_table_to_csv(InputTable: type[BaseModel], file: Path):
|
|
|
202
205
|
df.to_csv(file, index=False)
|
|
203
206
|
|
|
204
207
|
|
|
205
|
-
def export_to_sheet(InputTable: type[BaseModel], wb: Workbook, sheet_name: str, table_name: str = None,
|
|
208
|
+
def export_to_sheet(InputTable: type[BaseModel], wb: Workbook, sheet_name: str, table_name: str = None,
|
|
209
|
+
hide_sheet=False):
|
|
206
210
|
df = convert_table_to_df(InputTable)
|
|
207
211
|
ws = wb.create_sheet(title=sheet_name)
|
|
208
212
|
if hide_sheet:
|
|
@@ -242,9 +246,9 @@ def export_to_sheet(InputTable: type[BaseModel], wb: Workbook, sheet_name: str,
|
|
|
242
246
|
|
|
243
247
|
|
|
244
248
|
def __read_csv(
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
249
|
+
file: Path | str,
|
|
250
|
+
cols: Optional[List[str]] = None,
|
|
251
|
+
data_type_map: Optional[Dict[str, Type]] = None,
|
|
248
252
|
) -> pd.DataFrame:
|
|
249
253
|
return pd.read_csv(
|
|
250
254
|
file, engine="pyarrow", usecols=cols, na_filter=False, dtype=data_type_map
|
|
@@ -252,14 +256,16 @@ def __read_csv(
|
|
|
252
256
|
|
|
253
257
|
|
|
254
258
|
def __read_excel(
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
+
file: Path | str,
|
|
260
|
+
sheet_name: str | int = 0,
|
|
261
|
+
cols: Optional[List[str]] = None,
|
|
262
|
+
header_ndx: int = 0,
|
|
263
|
+
data_type_map: Optional[Dict[str, Type]] = None,
|
|
259
264
|
) -> pd.DataFrame:
|
|
260
265
|
return pd.read_excel(
|
|
261
266
|
io=file,
|
|
262
267
|
usecols=cols,
|
|
268
|
+
sheet_name=sheet_name,
|
|
263
269
|
na_filter=False,
|
|
264
270
|
header=header_ndx,
|
|
265
271
|
engine="calamine",
|
|
@@ -268,10 +274,10 @@ def __read_excel(
|
|
|
268
274
|
|
|
269
275
|
|
|
270
276
|
def convert_to_csv(
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
277
|
+
data: List[BaseModel],
|
|
278
|
+
col_mapping_tuple: Tuple[List[str], Dict[str, str], List[str]],
|
|
279
|
+
filename: Path,
|
|
280
|
+
index=False,
|
|
275
281
|
) -> None:
|
|
276
282
|
include_set, col_mapping, cols = col_mapping_tuple
|
|
277
283
|
dict_data = [
|
|
@@ -282,4 +288,4 @@ def convert_to_csv(
|
|
|
282
288
|
df = pd.DataFrame(dict_data)
|
|
283
289
|
|
|
284
290
|
# Export DataFrame to CSV
|
|
285
|
-
df.to_csv(filename, index=index, columns=cols)
|
|
291
|
+
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|