etlplus 0.16.10__py3-none-any.whl → 0.17.3__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.
Files changed (70) hide show
  1. etlplus/file/README.md +33 -0
  2. etlplus/file/_imports.py +35 -20
  3. etlplus/file/_io.py +138 -15
  4. etlplus/file/_r.py +48 -0
  5. etlplus/file/_sql.py +224 -0
  6. etlplus/file/accdb.py +7 -6
  7. etlplus/file/arrow.py +29 -10
  8. etlplus/file/avro.py +13 -10
  9. etlplus/file/bson.py +94 -10
  10. etlplus/file/cbor.py +29 -17
  11. etlplus/file/cfg.py +7 -6
  12. etlplus/file/conf.py +7 -6
  13. etlplus/file/core.py +1 -1
  14. etlplus/file/csv.py +8 -7
  15. etlplus/file/dat.py +52 -11
  16. etlplus/file/dta.py +36 -16
  17. etlplus/file/duckdb.py +72 -11
  18. etlplus/file/enums.py +29 -0
  19. etlplus/file/feather.py +15 -30
  20. etlplus/file/fwf.py +44 -10
  21. etlplus/file/gz.py +12 -7
  22. etlplus/file/hbs.py +7 -6
  23. etlplus/file/hdf5.py +71 -8
  24. etlplus/file/ini.py +60 -17
  25. etlplus/file/ion.py +7 -6
  26. etlplus/file/jinja2.py +7 -6
  27. etlplus/file/json.py +10 -11
  28. etlplus/file/log.py +7 -6
  29. etlplus/file/mat.py +7 -6
  30. etlplus/file/mdb.py +7 -6
  31. etlplus/file/msgpack.py +27 -15
  32. etlplus/file/mustache.py +7 -6
  33. etlplus/file/nc.py +69 -11
  34. etlplus/file/ndjson.py +10 -6
  35. etlplus/file/numbers.py +7 -6
  36. etlplus/file/ods.py +48 -11
  37. etlplus/file/orc.py +15 -30
  38. etlplus/file/parquet.py +10 -6
  39. etlplus/file/pb.py +36 -24
  40. etlplus/file/pbf.py +7 -6
  41. etlplus/file/properties.py +44 -18
  42. etlplus/file/proto.py +24 -18
  43. etlplus/file/psv.py +12 -11
  44. etlplus/file/rda.py +57 -15
  45. etlplus/file/rds.py +50 -14
  46. etlplus/file/sas7bdat.py +26 -16
  47. etlplus/file/sav.py +34 -16
  48. etlplus/file/sqlite.py +70 -10
  49. etlplus/file/stub.py +8 -6
  50. etlplus/file/sylk.py +7 -6
  51. etlplus/file/tab.py +13 -13
  52. etlplus/file/toml.py +56 -17
  53. etlplus/file/tsv.py +8 -7
  54. etlplus/file/txt.py +10 -7
  55. etlplus/file/vm.py +7 -6
  56. etlplus/file/wks.py +7 -6
  57. etlplus/file/xls.py +8 -5
  58. etlplus/file/xlsm.py +48 -10
  59. etlplus/file/xlsx.py +10 -6
  60. etlplus/file/xml.py +11 -9
  61. etlplus/file/xpt.py +46 -10
  62. etlplus/file/yaml.py +10 -11
  63. etlplus/file/zip.py +10 -5
  64. etlplus/file/zsav.py +7 -6
  65. {etlplus-0.16.10.dist-info → etlplus-0.17.3.dist-info}/METADATA +44 -26
  66. {etlplus-0.16.10.dist-info → etlplus-0.17.3.dist-info}/RECORD +70 -68
  67. {etlplus-0.16.10.dist-info → etlplus-0.17.3.dist-info}/WHEEL +0 -0
  68. {etlplus-0.16.10.dist-info → etlplus-0.17.3.dist-info}/entry_points.txt +0 -0
  69. {etlplus-0.16.10.dist-info → etlplus-0.17.3.dist-info}/licenses/LICENSE +0 -0
  70. {etlplus-0.16.10.dist-info → etlplus-0.17.3.dist-info}/top_level.txt +0 -0
etlplus/file/zip.py CHANGED
@@ -12,6 +12,9 @@ from pathlib import Path
12
12
 
13
13
  from ..types import JSONData
14
14
  from ..types import JSONDict
15
+ from ..types import StrPath
16
+ from ._io import coerce_path
17
+ from ._io import ensure_parent_dir
15
18
  from .enums import CompressionFormat
16
19
  from .enums import FileFormat
17
20
  from .enums import infer_file_format_and_compression
@@ -87,14 +90,14 @@ def _extract_payload(
87
90
 
88
91
 
89
92
  def read(
90
- path: Path,
93
+ path: StrPath,
91
94
  ) -> JSONData:
92
95
  """
93
96
  Read ZIP content from *path* and parse the inner payload(s).
94
97
 
95
98
  Parameters
96
99
  ----------
97
- path : Path
100
+ path : StrPath
98
101
  Path to the ZIP file on disk.
99
102
 
100
103
  Returns
@@ -107,6 +110,7 @@ def read(
107
110
  ValueError
108
111
  If the ZIP archive is empty.
109
112
  """
113
+ path = coerce_path(path)
110
114
  with zipfile.ZipFile(path, 'r') as archive:
111
115
  entries = [entry for entry in archive.infolist() if not entry.is_dir()]
112
116
  if not entries:
@@ -137,7 +141,7 @@ def read(
137
141
 
138
142
 
139
143
  def write(
140
- path: Path,
144
+ path: StrPath,
141
145
  data: JSONData,
142
146
  ) -> int:
143
147
  """
@@ -145,7 +149,7 @@ def write(
145
149
 
146
150
  Parameters
147
151
  ----------
148
- path : Path
152
+ path : StrPath
149
153
  Path to the ZIP file on disk.
150
154
  data : JSONData
151
155
  Data to write.
@@ -155,6 +159,7 @@ def write(
155
159
  int
156
160
  Number of records written.
157
161
  """
162
+ path = coerce_path(path)
158
163
  fmt = _resolve_format(path.name)
159
164
  inner_name = Path(path.name).with_suffix('').name
160
165
 
@@ -165,7 +170,7 @@ def write(
165
170
  count = File(tmp_path, fmt).write(data)
166
171
  payload = tmp_path.read_bytes()
167
172
 
168
- path.parent.mkdir(parents=True, exist_ok=True)
173
+ ensure_parent_dir(path)
169
174
  with zipfile.ZipFile(
170
175
  path,
171
176
  'w',
etlplus/file/zsav.py CHANGED
@@ -18,11 +18,11 @@ Notes
18
18
 
19
19
  from __future__ import annotations
20
20
 
21
- from pathlib import Path
22
-
23
21
  from ..types import JSONData
24
22
  from ..types import JSONList
23
+ from ..types import StrPath
25
24
  from . import stub
25
+ from ._io import coerce_path
26
26
 
27
27
  # SECTION: EXPORTS ========================================================== #
28
28
 
@@ -38,14 +38,14 @@ __all__ = [
38
38
 
39
39
 
40
40
  def read(
41
- path: Path,
41
+ path: StrPath,
42
42
  ) -> JSONList:
43
43
  """
44
44
  Read ZSAV content from *path*.
45
45
 
46
46
  Parameters
47
47
  ----------
48
- path : Path
48
+ path : StrPath
49
49
  Path to the ZSAV file on disk.
50
50
 
51
51
  Returns
@@ -57,7 +57,7 @@ def read(
57
57
 
58
58
 
59
59
  def write(
60
- path: Path,
60
+ path: StrPath,
61
61
  data: JSONData,
62
62
  ) -> int:
63
63
  """
@@ -65,7 +65,7 @@ def write(
65
65
 
66
66
  Parameters
67
67
  ----------
68
- path : Path
68
+ path : StrPath
69
69
  Path to the ZSAV file on disk.
70
70
  data : JSONData
71
71
  Data to write as ZSAV file. Should be a list of dictionaries or a
@@ -76,4 +76,5 @@ def write(
76
76
  int
77
77
  The number of rows written to the ZSAV file.
78
78
  """
79
+ path = coerce_path(path)
79
80
  return stub.write(path, data, format_name='ZSAV')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: etlplus
3
- Version: 0.16.10
3
+ Version: 0.17.3
4
4
  Summary: A Swiss Army knife for simple ETL operations
5
5
  Home-page: https://github.com/Dagitali/ETLPlus
6
6
  Author: ETLPlus Team
@@ -32,6 +32,7 @@ Requires-Dist: typer>=0.21.0
32
32
  Requires-Dist: xlrd>=2.0.2
33
33
  Requires-Dist: xlwt>=1.3.0
34
34
  Provides-Extra: dev
35
+ Requires-Dist: autopep8>=2.3.2; extra == "dev"
35
36
  Requires-Dist: black>=25.9.0; extra == "dev"
36
37
  Requires-Dist: build>=1.2.2; extra == "dev"
37
38
  Requires-Dist: flake8>=7.3.0; extra == "dev"
@@ -44,6 +45,17 @@ Requires-Dist: ruff>=0.14.4; extra == "dev"
44
45
  Provides-Extra: docs
45
46
  Requires-Dist: sphinx>=4.0.0; extra == "docs"
46
47
  Requires-Dist: sphinx-rtd-theme>=1.0.0; extra == "docs"
48
+ Provides-Extra: file
49
+ Requires-Dist: pymongo>=4.9.1; extra == "file"
50
+ Requires-Dist: cbor2>=5.6.4; extra == "file"
51
+ Requires-Dist: duckdb>=1.1.0; extra == "file"
52
+ Requires-Dist: msgpack>=1.0.8; extra == "file"
53
+ Requires-Dist: netCDF4>=1.7.2; extra == "file"
54
+ Requires-Dist: odfpy>=1.4.1; extra == "file"
55
+ Requires-Dist: pyreadr>=0.5.2; extra == "file"
56
+ Requires-Dist: pyreadstat>=1.3.3; extra == "file"
57
+ Requires-Dist: tomli-w>=1.2.0; extra == "file"
58
+ Requires-Dist: xarray>=2024.9.0; extra == "file"
47
59
  Dynamic: home-page
48
60
  Dynamic: license-file
49
61
  Dynamic: requires-python
@@ -176,6 +188,12 @@ For development:
176
188
  pip install -e ".[dev]"
177
189
  ```
178
190
 
191
+ For full file-format support (optional extras):
192
+
193
+ ```bash
194
+ pip install -e ".[file]"
195
+ ```
196
+
179
197
  ## Quickstart
180
198
 
181
199
  Get up and running in under a minute.
@@ -240,10 +258,10 @@ Recognized file formats are listed in the tables below. Support for reading to o
240
258
  | Format | Read | Write | Description |
241
259
  | --- | --- | --- | --- |
242
260
  | `csv` | Y | Y | Comma-Separated Values |
243
- | `dat` | N | N | Generic data file, often delimited or fixed-width |
244
- | `fwf` | N | N | Fixed-Width Fields |
245
- | `psv` | N | N | Pipe-Separated Values |
246
- | `tab` | N | N | Often synonymous with TSV |
261
+ | `dat` | Y | Y | Generic data file, often delimited or fixed-width |
262
+ | `fwf` | Y | Y | Fixed-Width Fields |
263
+ | `psv` | Y | Y | Pipe-Separated Values |
264
+ | `tab` | Y | Y | Often synonymous with TSV |
247
265
  | `tsv` | Y | Y | Tab-Separated Values |
248
266
  | `txt` | Y | Y | Plain text, often delimited or fixed-width |
249
267
 
@@ -253,11 +271,11 @@ Recognized file formats are listed in the tables below. Support for reading to o
253
271
  | --- | --- | --- | --- |
254
272
  | `cfg` | N | N | Config-style key-value pairs |
255
273
  | `conf` | N | N | Config-style key-value pairs |
256
- | `ini` | N | N | Config-style key-value pairs |
274
+ | `ini` | Y | Y | Config-style key-value pairs |
257
275
  | `json` | Y | Y | JavaScript Object Notation |
258
276
  | `ndjson` | Y | Y | Newline-Delimited JSON |
259
- | `properties` | N | N | Java-style key-value pairs |
260
- | `toml` | N | N | Tom's Obvious Minimal Language |
277
+ | `properties` | Y | Y | Java-style key-value pairs |
278
+ | `toml` | Y | Y | Tom's Obvious Minimal Language |
261
279
  | `xml` | Y | Y | Extensible Markup Language |
262
280
  | `yaml` | Y | Y | YAML Ain't Markup Language |
263
281
 
@@ -265,7 +283,7 @@ Recognized file formats are listed in the tables below. Support for reading to o
265
283
 
266
284
  | Format | Read | Write | Description |
267
285
  | --- | --- | --- | --- |
268
- | `arrow` | N | N | Apache Arrow IPC |
286
+ | `arrow` | Y | Y | Apache Arrow IPC |
269
287
  | `feather` | Y | Y | Apache Arrow Feather |
270
288
  | `orc` | Y | Y | Optimized Row Columnar; common in Hadoop |
271
289
  | `parquet` | Y | Y | Apache Parquet; common in Big Data |
@@ -275,48 +293,48 @@ Recognized file formats are listed in the tables below. Support for reading to o
275
293
  | Format | Read | Write | Description |
276
294
  | --- | --- | --- | --- |
277
295
  | `avro` | Y | Y | Apache Avro |
278
- | `bson` | N | N | Binary JSON; common with MongoDB exports/dumps |
279
- | `cbor` | N | N | Concise Binary Object Representation |
296
+ | `bson` | Y | Y | Binary JSON; common with MongoDB exports/dumps |
297
+ | `cbor` | Y | Y | Concise Binary Object Representation |
280
298
  | `ion` | N | N | Amazon Ion |
281
- | `msgpack` | N | N | MessagePack |
282
- | `pb` | N | N | Protocol Buffers (Google Protobuf) |
299
+ | `msgpack` | Y | Y | MessagePack |
300
+ | `pb` | Y | Y | Protocol Buffers (Google Protobuf) |
283
301
  | `pbf` | N | N | Protocolbuffer Binary Format; often for GIS data |
284
- | `proto` | N | N | Protocol Buffers schema; often in .pb / .bin |
302
+ | `proto` | Y | Y | Protocol Buffers schema; often in .pb / .bin |
285
303
 
286
304
  #### Databases and Embedded Storage
287
305
 
288
306
  | Format | Read | Write | Description |
289
307
  | --- | --- | --- | --- |
290
308
  | `accdb` | N | N | Microsoft Access (newer format) |
291
- | `duckdb` | N | N | DuckDB |
309
+ | `duckdb` | Y | Y | DuckDB |
292
310
  | `mdb` | N | N | Microsoft Access (older format) |
293
- | `sqlite` | N | N | SQLite |
311
+ | `sqlite` | Y | Y | SQLite |
294
312
 
295
313
  #### Spreadsheets
296
314
 
297
315
  | Format | Read | Write | Description |
298
316
  | --- | --- | --- | --- |
299
317
  | `numbers` | N | N | Apple Numbers |
300
- | `ods` | N | N | OpenDocument |
318
+ | `ods` | Y | Y | OpenDocument |
301
319
  | `wks` | N | N | Lotus 1-2-3 |
302
320
  | `xls` | Y | N | Microsoft Excel (BIFF; read-only) |
303
- | `xlsm` | N | N | Microsoft Excel Macro-Enabled (Open XML) |
321
+ | `xlsm` | Y | Y | Microsoft Excel Macro-Enabled (Open XML) |
304
322
  | `xlsx` | Y | Y | Microsoft Excel (Open XML) |
305
323
 
306
324
  #### Statistical / Scientific / Numeric Computing
307
325
 
308
326
  | Format | Read | Write | Description |
309
327
  | --- | --- | --- | --- |
310
- | `dta` | N | N | Stata |
311
- | `hdf5` | N | N | Hierarchical Data Format |
328
+ | `dta` | Y | Y | Stata |
329
+ | `hdf5` | Y | N | Hierarchical Data Format |
312
330
  | `mat` | N | N | MATLAB |
313
- | `nc` | N | N | NetCDF |
314
- | `rda` | N | N | RData workspace/object |
315
- | `rds` | N | N | R data |
316
- | `sas7bdat` | N | N | SAS data |
317
- | `sav` | N | N | SPSS data |
331
+ | `nc` | Y | Y | NetCDF |
332
+ | `rda` | Y | Y | RData workspace/object |
333
+ | `rds` | Y | Y | R data |
334
+ | `sas7bdat` | Y | N | SAS data |
335
+ | `sav` | Y | Y | SPSS data |
318
336
  | `sylk` | N | N | Symbolic Link |
319
- | `xpt` | N | N | SAS Transport |
337
+ | `xpt` | Y | Y | SAS Transport |
320
338
  | `zsav` | N | N | Compressed SPSS data |
321
339
 
322
340
  #### Logs and Event Streams
@@ -53,69 +53,71 @@ etlplus/database/engine.py,sha256=eDFnp4vzhoKuyLJSeHYpndHLUr27neS7CgdvMw8mNok,43
53
53
  etlplus/database/orm.py,sha256=ZCHkeVEUns2eievlFzmLyVKA3YVPea1xs6vrcUBZ7Jw,10010
54
54
  etlplus/database/schema.py,sha256=813C0Dd3WE53KTYot4dgjAxctgKXLXx-8_Rk_4r2e28,7022
55
55
  etlplus/database/types.py,sha256=_pkQyC14TzAlgyeIqZG4F5LWYknZbHw3TW68Auk7Ya0,795
56
- etlplus/file/README.md,sha256=gjmreSBxq6MS8P5njTRskcQNk2RS5eMOngAUTh68VTI,3847
56
+ etlplus/file/README.md,sha256=cAh8JD5uTp6q65jW3JS5J1-CtDw8b67FGGMQyGenrDg,5508
57
57
  etlplus/file/__init__.py,sha256=X03bosSM-uSd6dh3ur0un6_ozFRw2Tm4PE6kVUjtXK8,475
58
- etlplus/file/_imports.py,sha256=Cozv7d5G2P9PNgy2M4vrz0Wzo7hx9FTC0WcGcuVqga0,3193
59
- etlplus/file/_io.py,sha256=Z3aTujy0rpbMKJHvO2UZ6bA1ohO-6ZiemyxF4GsayRc,3951
60
- etlplus/file/accdb.py,sha256=6BiYRSlmJlEFyxktQk4pcEW9nWdKL59wQ6gH5YnWAfM,1718
61
- etlplus/file/arrow.py,sha256=vQxcZQvQdPLw-WdrdPORqLrKaXwrX2sjJTND2Mbz5nE,1731
62
- etlplus/file/avro.py,sha256=GR9GbDNcQ7TpaPKhcC6JL79XicSmNDIhH3cP0QDmLJg,4447
63
- etlplus/file/bson.py,sha256=IpR0d1JkBox6yRP-6wlS-C1Oe9VxOyj52Oo6mGDSelA,1650
64
- etlplus/file/cbor.py,sha256=-6UukC1OysWcgLxO5KxRPFIMa8JON3XiYsRBEn8zqBc,1704
65
- etlplus/file/cfg.py,sha256=8StrkG4b_N2My9niqQ1J8eDmCafIyg-wiDINfDbXGwk,1747
66
- etlplus/file/conf.py,sha256=7GatAdy0VGmCCYL92CKBcuqIkXrgwprvnXn7i36C5pQ,1805
67
- etlplus/file/core.py,sha256=IzcG4pQLq3QCQhswbgdWKxHSvmzvWzYweBrz7t6HDDo,8888
68
- etlplus/file/csv.py,sha256=FTdxlVs3vsaj_t7vGY-unNiCpJI2TWuiaf2_8dJan6M,1754
69
- etlplus/file/dat.py,sha256=ceUDuhFjwqJiO3I_T0pm1WmCr8_WhOB6-0mL-h0wx3k,1679
70
- etlplus/file/dta.py,sha256=tmbhF2F5wRCoJk3nMEj4dvXzWAD-tnuNOBQL9KxIB9o,1653
71
- etlplus/file/duckdb.py,sha256=lzE3Ik9gk07-YkpxwB7XY7WAJhzeiOPtjAnviINs6Jo,1668
72
- etlplus/file/enums.py,sha256=48Hb0Pgt-eDC29EQK5A9kCydQtJ1aZXD7g-q0WCiCfM,11086
73
- etlplus/file/feather.py,sha256=joOdQf_oIu__i8hwy5X4eK6MSqh6O0kKnub2VWD_Clg,2679
74
- etlplus/file/fwf.py,sha256=uI6mjpGL0wPyiYe39j--G_6HoXEbe1yWkbyk1jRCc0c,1626
75
- etlplus/file/gz.py,sha256=NfiXiE37rS2YC7dk1YC1ELbbEpzJdypIy-no9cVoaco,2641
76
- etlplus/file/hbs.py,sha256=gu9dffaEJDjXvNwkBNytYexf6YJB2THB0IySua6wX8o,1651
77
- etlplus/file/hdf5.py,sha256=SliDFNhG14U0Bd6BlD2IkTO_PFwo7jxeauc_FNgyOy4,1661
78
- etlplus/file/ini.py,sha256=qup40MuIXwcXisw4ODnzwqjvHRTaZofLhYtaZHgAaes,1738
79
- etlplus/file/ion.py,sha256=LmfU1WKHDEQMShPVW1jZU5CKPRpD0qacznx_6N_ZnfE,1747
80
- etlplus/file/jinja2.py,sha256=-BDMtFks3VhUQixydBM9cNqJrQZBOa_NCoYZ4xXwgdc,1667
81
- etlplus/file/json.py,sha256=vY3UYjzQzmJUAY0avR2cm70hTTED4xEF38WEEj0DhDQ,2140
82
- etlplus/file/log.py,sha256=1DkPzzI2GhtYwCCBLQbCmUELuQFKJaIHpGWPYGcCMhg,1718
83
- etlplus/file/mat.py,sha256=BH8jdpNc-za5Ci30rLTl0DYnFhP5w-xL_V2i7k7_YvI,1691
84
- etlplus/file/mdb.py,sha256=lFqkTHmcaWNlaNkwu_qqlc7XSq82yoOBxUz_YbArfV8,1694
85
- etlplus/file/msgpack.py,sha256=YU6DhPtBPULiOMHto0r_ioHqt1ILZi1OEfLye5y64-o,1695
86
- etlplus/file/mustache.py,sha256=nfrmN0EZbId-3rZSvustHw3VVVO9fz03K4PILOCSklQ,1684
87
- etlplus/file/nc.py,sha256=EQYwR5053a_yKNShYQ-sAWTK69goDPTrgK6F_2Puf44,1707
88
- etlplus/file/ndjson.py,sha256=jpZgLZL-Vy4a6tsm5cxy0G9kW-x-X5kFSbnUn-XjIJw,2442
89
- etlplus/file/numbers.py,sha256=Fo58Kshl5c489H2yYsxIMWfS0Wp3e0viUyoZfVcEcQI,1647
90
- etlplus/file/ods.py,sha256=DBDJh5_O19s3XEfSgfrfX5ze5-gsIqfkdvS42D91I5E,1837
91
- etlplus/file/orc.py,sha256=RdK4IERoLWnGSgpBclfDmwMmtac8VYyet3Z9AFCyj2E,2612
92
- etlplus/file/parquet.py,sha256=6klk-GgNnFBbsRU0J8LiGm5c67A6FcX1AEZNf-cNSPM,2768
93
- etlplus/file/pb.py,sha256=1Yb9dmU9zKT0uCSrb7towV_0l9pPUv-HKfrQEtCkBLs,1652
94
- etlplus/file/pbf.py,sha256=eOGQhxgqRZ39tHAgO1ZU9J6LLQoiT6kcokujczASWJI,1657
95
- etlplus/file/properties.py,sha256=DLIJNBDVhNyDZTBAui2u6KtsjSfj9-NqJ21t6QjAUaU,1755
96
- etlplus/file/proto.py,sha256=cVsztidiWEMRhseZ64ODIVaWaZZwoxQgmdqtezCrB_8,1705
97
- etlplus/file/psv.py,sha256=Vf99_4QXPFBQJ1Itp3p7cT1YHlgu_4eT1HQUk9_BXU8,1763
98
- etlplus/file/rda.py,sha256=WCqM3vgCZa8hJYvszCenPhaflg62SuskUMC4VK4gfqs,1705
99
- etlplus/file/rds.py,sha256=fVkvggU67QZniQMZQXzi-obos9xyuHwz13e62OSMfLU,1662
100
- etlplus/file/sas7bdat.py,sha256=VoqHQ4BH8WEjlgl0Za6g3hfQMhNQjVxYEP5BxBAqXqc,1743
101
- etlplus/file/sav.py,sha256=anStccP9vInq_44_litvWMPCGoQm-yAU0sZ0PpKsr2g,1634
102
- etlplus/file/sqlite.py,sha256=nrUHC7dqwiPHsNoxRMvo7DwTiqOXxAs6TPq7HQbwdCw,1689
103
- etlplus/file/stub.py,sha256=4vlqjIo_bBy69dIU2y2iy5fqnezt_bOuS218zyijQfs,1749
104
- etlplus/file/sylk.py,sha256=PCs_cA5lap6taf9bK5JY50seixomrsQE0wUrsFvXEmc,1694
105
- etlplus/file/tab.py,sha256=Hz7YjKP68OXwwd7EVl_U0O3WvsoPwerOddGL63p3-7Q,2021
106
- etlplus/file/toml.py,sha256=KGxqNX7V3ajsqSagU8aIBxwMrbxFPAleLKiljyAcqNA,1663
107
- etlplus/file/tsv.py,sha256=SUe-UeL3zExX2idvpHiMWuRm5VQ8AyqqlNJckc9CDCU,1776
108
- etlplus/file/txt.py,sha256=Ys7MmKBOiHQnRK0Bb3VuIIny2_1Ejr-V_YdPlUfOEjc,2321
109
- etlplus/file/vm.py,sha256=psRbD1mH5QyLNlX1txpn4eghUawdIA30aIjf-wP0szQ,1626
110
- etlplus/file/wks.py,sha256=BblAhTzAXn93LK1xdkdWcYypYfZa2PxqvgVCuC_sq6w,1692
111
- etlplus/file/xls.py,sha256=OK0_MZYaPWFDWbAdp-suz2wSg89px1EWT4kY2e9R3pg,1799
112
- etlplus/file/xlsm.py,sha256=BDux1Tm7iccmbvtKk_X5bPET0PpF0IW9c7ympIJroEo,1775
113
- etlplus/file/xlsx.py,sha256=UOwz-IIeRU2GyAI8Upx2hn7v3KPZalpIaGO9hXuaOGo,2192
114
- etlplus/file/xml.py,sha256=lor8KsclDSy1tdOExL1GmYpaQVcZGRNEwOd2liiPPbk,4389
115
- etlplus/file/xpt.py,sha256=9lW8ievpqF4PKPFRWH0ZlmGe7BR8TP_ETRogNQ79TOA,1739
116
- etlplus/file/yaml.py,sha256=b_SxDSEQPVXQv9a9Ih4wAcI940pE5Ksy5pQE6K6ckhw,2062
117
- etlplus/file/zip.py,sha256=8wnmnGW_pGTx65736CzAG67XIi5y98KxucRT8sNDeuQ,4195
118
- etlplus/file/zsav.py,sha256=WasYgfogIQAvm4LWkDWgeeeyYWvY4MSoh-SrScqqBOM,1701
58
+ etlplus/file/_imports.py,sha256=-YLe8cuMDl5y54f_eDg3MrtgKBs1hHsKUuVSxM-PWLY,3620
59
+ etlplus/file/_io.py,sha256=SYj3x-1ZdZIV-xKuq7CN802WNLlTlsSfXMvsFp_1Bzg,6535
60
+ etlplus/file/_r.py,sha256=VFKhHrE1gvRjav0L8ilVMJml493l-lq6a5CMVQbZ_Yo,1025
61
+ etlplus/file/_sql.py,sha256=Ohu6n7pamAUcIZHgUOH7-GUZnwC94XA87kytnY3mkcM,4843
62
+ etlplus/file/accdb.py,sha256=WWNixN9MBf1Skix6-TN8mOgyOJUM3YERfB933ZlZgGU,1790
63
+ etlplus/file/arrow.py,sha256=sZAoblsr_ccXecWs7lHFgzsBt-rm_v0H4xTAWU7z97s,2455
64
+ etlplus/file/avro.py,sha256=KEooiVBZU4NBliLUrutrCKu41SHUW-UMd_THRDKvjEM,4614
65
+ etlplus/file/bson.py,sha256=p3JAB0vsODk6LhFy4vNzgVYkzft40ogDUUoZ-1Ghdsw,3884
66
+ etlplus/file/cbor.py,sha256=YT7Vmtq5ZwTu6PYJx5M93B-Nu-9KrRzYSnFy2BTt37w,2286
67
+ etlplus/file/cfg.py,sha256=KuyVwRmnmfwAICZXFcK7h5r6PDnabvxOreFHojFl9Q4,1819
68
+ etlplus/file/conf.py,sha256=UJj6P8CAxkov6_pREuzm3Tiy3n8YOkYyMPvqPLp0mMY,1877
69
+ etlplus/file/core.py,sha256=dF99pR-OTdmOTVjjTwwly_QuBjIThP9nGxeDykfHKMY,8889
70
+ etlplus/file/csv.py,sha256=t6vTmFB45L5i8yh5j-5U-UfyuFvwF7spq7qjhOBGzbM,1845
71
+ etlplus/file/dat.py,sha256=EX_GU99TJvrC4ky8MQI0hT5CFF2NOrf9IPi1K39cyfc,2942
72
+ etlplus/file/dta.py,sha256=wM-HixEqipgi9J3VRgC7dxHPDqDPCQBiCi7au7tqLaI,2297
73
+ etlplus/file/duckdb.py,sha256=Nii-LGVLpeuTcrm87mWExgsMIEvMhj6KUuX4hSPWHCA,3897
74
+ etlplus/file/enums.py,sha256=UBX6FXzf3GyLvTuoMc7zTJoFWxKH4NGp-tSXZTO_WkQ,11943
75
+ etlplus/file/feather.py,sha256=mrZ7XjdlT36fLd3-mko87XH5Np097Zt8xTMZIe6whEc,2294
76
+ etlplus/file/fwf.py,sha256=BTi6TACxuwACB-DqBFnGfpMDu63jh_KWWNOCQzL2l3w,2755
77
+ etlplus/file/gz.py,sha256=lQQO1B5SSSWloU9jFwKWdxR5Vux6fj9Oc_epgq6lYTY,2786
78
+ etlplus/file/hbs.py,sha256=N97M9Dhw7rSwKRkEINiGA5cUYh8HZadwRzY-m1Bft9c,1723
79
+ etlplus/file/hdf5.py,sha256=gycDzSvxmnIClUDR0Wq7eVShvopAUCLuTW2QK0MxEHg,3331
80
+ etlplus/file/ini.py,sha256=rCggxqT29PG0P8TZs2R7251QBQqRRy41OZIfXMrCmPA,3131
81
+ etlplus/file/ion.py,sha256=6tlvTI0fnj7ki6I7MbNqAm9Roh2x8dsrBHXXmEwZeO8,1819
82
+ etlplus/file/jinja2.py,sha256=1nCXaxCLgrWHJY1kNRxQWw4pri4xcXUVECYqzpQhq20,1739
83
+ etlplus/file/json.py,sha256=nBGefvQCxgVAaehzQ93lZ7d_ACAg56HzGmpzExxZj6I,2151
84
+ etlplus/file/log.py,sha256=xiv_KFBssSrA9KSO7acaH7Vs9VhTjHOZGVbeNipyHdM,1790
85
+ etlplus/file/mat.py,sha256=ayWfnZmwHLmde8zI1pyEpXEEOG6wztsclotmAmKE5HA,1763
86
+ etlplus/file/mdb.py,sha256=iQkkjP1YRj03zmQyrt_spOmEEIcd5T9FsJYSICj-EzU,1766
87
+ etlplus/file/msgpack.py,sha256=3VzhnPDNfLopGc2VsUlGh29wjgqfWIL1a2CX_SjHIT0,2317
88
+ etlplus/file/mustache.py,sha256=Pqk70AZ4BmGUKzOCGz0g6kGxQHLohw-qYsi62vkj6sQ,1756
89
+ etlplus/file/nc.py,sha256=-uzRn0LDrsafmSbnR2bqJ9no08gKNUnL3zVov8kearw,3465
90
+ etlplus/file/ndjson.py,sha256=uNTaKj76qpC7jJYcAd1L-zBDDU6qHKPIG7owklsAEB0,2556
91
+ etlplus/file/numbers.py,sha256=1bi3YB7uvIm4sNfL7oDYh7C5_4yHEcOMaPKfnr7iYYk,1719
92
+ etlplus/file/ods.py,sha256=sncrER3B7_gQXuhQw1N2crcSYIuby_CwRDzDS4EdNzY,2973
93
+ etlplus/file/orc.py,sha256=KTUlQs81QtBRscNAvHxoXNH0XQkTkcm3tPHY5F83K3k,2227
94
+ etlplus/file/parquet.py,sha256=sTBcf19N9ljJ0xB18rUKtDxjg-_2iixIO4dCWvdMDy0,2882
95
+ etlplus/file/pb.py,sha256=DHHw4vH6kHFnIPf10FE_ZInKUB8xwd5sBuFRmv95um8,2050
96
+ etlplus/file/pbf.py,sha256=zYuLQQ-ZbqL2x8Lgz8iON3VzrxsEMn9AtOijBe1VnCY,1729
97
+ etlplus/file/properties.py,sha256=vQ_hC4eQJCyoNP_nHQp4lkVcWedsfjy16wk2qfSVNhY,2694
98
+ etlplus/file/proto.py,sha256=4fIOEqMRIxXw2-xocEMne3VxnIvwNqON-68VRgPd6Ig,1986
99
+ etlplus/file/psv.py,sha256=gDRtxh20_ANFu3zKuZsL4bQ1zDwfFh5mHviX4lgQMGQ,1875
100
+ etlplus/file/rda.py,sha256=rd1INc2CffK7AmoEcmV2p-ZrULl7ElMwLRATYuL_w7E,2973
101
+ etlplus/file/rds.py,sha256=EdiIh8sQbIOWsH0DodFCC6kdcb-AedGYBSn-j1LOGkE,2772
102
+ etlplus/file/sas7bdat.py,sha256=e3IPMvPR1mEFZuE-ZrhaMYX1eHD2T6-Ri19qlYYAbeA,2092
103
+ etlplus/file/sav.py,sha256=PsQxRbmfKM_vxjm__MsqCLDMt3Aeg7YdDgctKIM24Y0,2200
104
+ etlplus/file/sqlite.py,sha256=SmY8lfwskhSNpCmySkgtE5OB3EN59GctVQ2deD8xC4w,3688
105
+ etlplus/file/stub.py,sha256=9H7OPIjd2UG97E_-X0p-WFXNVDTBjXMUYuLQVAi8WTM,1850
106
+ etlplus/file/sylk.py,sha256=q-B77bpsaXeudpb0aF61ivpyUUnL4B4-rk3EeKX4ojo,1766
107
+ etlplus/file/tab.py,sha256=aBD6em_4-ulUnmAAcULAaFUIK8unfYeO0AiLUD4KnJM,2058
108
+ etlplus/file/toml.py,sha256=q_fmRx1luW5-Y1XByG66xn6vtP-MLSwtlvAh-ll-S_s,2857
109
+ etlplus/file/tsv.py,sha256=PcfWARV0DrLHSqbXbowf48EmTqlQttUOCd8i31yuKlU,1867
110
+ etlplus/file/txt.py,sha256=bsPDNfBSWGp-hxwkAREyS36V7bIfgagG8XrY4JT_N1U,2434
111
+ etlplus/file/vm.py,sha256=dgPyIP0Evy5ZkaTDGvbhDVAtkN7LZMg2BCJVlQ6DnTo,1698
112
+ etlplus/file/wks.py,sha256=9i2DtazxM0Cq8USghk6yL0Bg_dJ-I0f_-N0ENumLahQ,1764
113
+ etlplus/file/xls.py,sha256=RCShbzMP6pljQ0iGCHus3hCcSbUya5goMTUPVy4ZCGs,1901
114
+ etlplus/file/xlsm.py,sha256=v5VyNO_Ku2izDqv0dHKnHGWaVaRmIyPGjzFlAJYpwQE,2897
115
+ etlplus/file/xlsx.py,sha256=2l0h2euCUwAnbFYKQ07hELzgon8LMOBgOYkMbIQ54Pc,2306
116
+ etlplus/file/xml.py,sha256=RMW9wYkNpJuHI7N_mGZpvhwZfL5ncguv_OS0S5uKS6A,4478
117
+ etlplus/file/xpt.py,sha256=kFeSxPvyKdLHyZhc4qfJ_IPSiR07DCMlRS01t1_fLX4,2923
118
+ etlplus/file/yaml.py,sha256=2n7wgObAWjfo6PZAfg1TR-xQTaYZ4p8Xs6e8Ch2q6_A,2123
119
+ etlplus/file/zip.py,sha256=NY_QpNQwXmdLP3WZyOVNPjAOjCs9XOczxMQAfUjMGXw,4334
120
+ etlplus/file/zsav.py,sha256=FO3SpZ2dMsifg2cj3m1zrka2Jduw14bfa0O-TT_rVuY,1773
119
121
  etlplus/ops/README.md,sha256=SP1yW0aATvMp_HEslSjf2Hff-At96QDkfXxh3FcDbO0,1465
120
122
  etlplus/ops/__init__.py,sha256=r5_-pPhSLCD1nq1EbN0rQrLOGpudueeIxCH_JvT2bt0,1718
121
123
  etlplus/ops/enums.py,sha256=dC_8CfaTiB2i83Az-oG-2hkjMuAfDADNbcMF2f94UeU,4014
@@ -135,9 +137,9 @@ etlplus/workflow/__init__.py,sha256=XgCQr684om0rONrQZ61yQ0r4qqFQL0iLAAB2Mn2BRSE,
135
137
  etlplus/workflow/dag.py,sha256=-f1x8N1eb-PUuiOwEvFLmJwfR7JaMDJihlCHlhrFhgE,2937
136
138
  etlplus/workflow/jobs.py,sha256=hLE9QJUzQaI0aOEon0P-xxxa6xHp997ANei4F310WRY,8711
137
139
  etlplus/workflow/profile.py,sha256=FQU3bzBZ9_yjKC9kCXKN1FQDS9zjNUjtWB1r3UL95_Q,1993
138
- etlplus-0.16.10.dist-info/licenses/LICENSE,sha256=MuNO63i6kWmgnV2pbP2SLqP54mk1BGmu7CmbtxMmT-U,1069
139
- etlplus-0.16.10.dist-info/METADATA,sha256=UGV39FYsRF7O2tL135t1RtoKhNm4C4pkqd7RTKjQYqU,28505
140
- etlplus-0.16.10.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
141
- etlplus-0.16.10.dist-info/entry_points.txt,sha256=6w-2-jzuPa55spzK34h-UKh2JTEShh38adFRONNP9QE,45
142
- etlplus-0.16.10.dist-info/top_level.txt,sha256=aWWF-udn_sLGuHTM6W6MLh99ArS9ROkUWO8Mi8y1_2U,8
143
- etlplus-0.16.10.dist-info/RECORD,,
140
+ etlplus-0.17.3.dist-info/licenses/LICENSE,sha256=MuNO63i6kWmgnV2pbP2SLqP54mk1BGmu7CmbtxMmT-U,1069
141
+ etlplus-0.17.3.dist-info/METADATA,sha256=7sjB06ZlNP9-KPrvRRADx1kmQvn-yvjSPg_BEeyKVy8,29129
142
+ etlplus-0.17.3.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
143
+ etlplus-0.17.3.dist-info/entry_points.txt,sha256=6w-2-jzuPa55spzK34h-UKh2JTEShh38adFRONNP9QE,45
144
+ etlplus-0.17.3.dist-info/top_level.txt,sha256=aWWF-udn_sLGuHTM6W6MLh99ArS9ROkUWO8Mi8y1_2U,8
145
+ etlplus-0.17.3.dist-info/RECORD,,