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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pjdev-sqlmodel
3
- Version: 4.3.1
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
@@ -1,4 +1,4 @@
1
1
  # SPDX-FileCopyrightText: 2024-present Chris O'Neill <chris@purplejay.io>
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
- __version__ = "4.3.1"
4
+ __version__ = "4.3.2"
@@ -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(f'Failed to find files matching the {directory}/{file_name} pattern and presence is required. Exiting...')
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
- and len(set(cols).difference(set(get_csv_columns(f)))) == 0
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
- model_type: Type[T],
78
- data_files: List[Path],
79
- header_ndx: int = 0,
80
- col_range: Optional[str] = None,
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
- and len(
97
+ and len(
96
98
  set(cols).difference(set(get_excel_columns(f, header_ndx + 1, col_range)))
97
99
  )
98
- == 0
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
- filename: str, df: pd.DataFrame, model_type: Type[T]
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
- filename: Path,
134
- table_name: str,
135
- data_type_map: Optional[Dict[str, Type]] = None,
136
- engine: Optional[Engine] = None,
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
- filename: Path,
155
- table_name: str,
156
- header_ndx: int = 0,
157
- data_type_map: Optional[Dict[str, Type]] = None,
158
- engine: Optional[Engine] = None,
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, hide_sheet=False):
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
- file: Path | str,
246
- cols: Optional[List[str]] = None,
247
- data_type_map: Optional[Dict[str, Type]] = None,
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
- file: Path | str,
256
- cols: Optional[List[str]] = None,
257
- header_ndx: int = 0,
258
- data_type_map: Optional[Dict[str, Type]] = None,
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
- data: List[BaseModel],
272
- col_mapping_tuple: Tuple[List[str], Dict[str, str], List[str]],
273
- filename: Path,
274
- index=False,
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