ping-dataexport 0.2.0__tar.gz → 0.2.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.
Files changed (51) hide show
  1. {ping_dataexport-0.2.0/src/ping_dataexport.egg-info → ping_dataexport-0.2.2}/PKG-INFO +13 -9
  2. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/README.md +11 -7
  3. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/pyproject.toml +2 -2
  4. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/__init__.py +1 -1
  5. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/cli.py +1 -1
  6. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/job/spec.py +2 -2
  7. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/job/validator.py +2 -1
  8. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2/src/ping_dataexport.egg-info}/PKG-INFO +13 -9
  9. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/LICENSE +0 -0
  10. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/MANIFEST.in +0 -0
  11. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/config.sample.ini +0 -0
  12. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/job.sample.ini +0 -0
  13. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/setup.cfg +0 -0
  14. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/__config__.py +0 -0
  15. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/__main__.py +0 -0
  16. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/api.py +0 -0
  17. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/applogger.py +0 -0
  18. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/config.py +0 -0
  19. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/db/__init__.py +0 -0
  20. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/db/connector.py +0 -0
  21. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/db/oracle_connector.py +0 -0
  22. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/db/pyodbc_connector.py +0 -0
  23. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/db/sqlite_connector.py +0 -0
  24. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/db/type_map.py +0 -0
  25. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/errors.py +0 -0
  26. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/export/__init__.py +0 -0
  27. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/export/engine.py +0 -0
  28. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/export/options.py +0 -0
  29. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/export/runner.py +0 -0
  30. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/export/util.py +0 -0
  31. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/job/__init__.py +0 -0
  32. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/job/executor.py +0 -0
  33. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/job/shared_context.py +0 -0
  34. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/paths.py +0 -0
  35. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/planner/__init__.py +0 -0
  36. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/planner/base.py +0 -0
  37. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/planner/datelist.py +0 -0
  38. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/planner/groupby.py +0 -0
  39. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/planner/monthbydate.py +0 -0
  40. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/planner/single.py +0 -0
  41. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/planner/watermark.py +0 -0
  42. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/writer/__init__.py +0 -0
  43. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/writer/arrow_map.py +0 -0
  44. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/writer/base.py +0 -0
  45. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/writer/delimited.py +0 -0
  46. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport/writer/parquet.py +0 -0
  47. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport.egg-info/SOURCES.txt +0 -0
  48. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport.egg-info/dependency_links.txt +0 -0
  49. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport.egg-info/entry_points.txt +0 -0
  50. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport.egg-info/requires.txt +0 -0
  51. {ping_dataexport-0.2.0 → ping_dataexport-0.2.2}/src/ping_dataexport.egg-info/top_level.txt +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ping-dataexport
3
- Version: 0.2.0
4
- Summary: Universal database data export to CSV/TXT/Parquet streaming, typed, no pandas
3
+ Version: 0.2.2
4
+ Summary: PING's Data Export Tool - To Parquet/CSV/TEXT as Accelerator for Data & AI Project
5
5
  Author: vorapol
6
6
  License-Expression: Apache-2.0
7
7
  Keywords: export,database,csv,parquet,etl,data-platform,airflow
@@ -31,6 +31,9 @@ Dynamic: license-file
31
31
 
32
32
  ## PING (ping-godhand)'s Universal Data Exporter
33
33
 
34
+ > **Provided as-is. No support, no warranty, no roadmap commitments, use at
35
+ > your own risk.**
36
+
34
37
  ## คำอธิบาย (ภาษาไทย)
35
38
 
36
39
  โปรแกรมช่วย Export ข้อมูลอย่างง่าย: เชื่อมต่อฐานข้อมูล รันคำสั่ง SQL
@@ -178,14 +181,14 @@ All options:
178
181
  | `-m` | `--mode` | export mode: `groupby` \| `date` \| `relativedate` \| `monthbydate` \| `splitrow` \| `watermark` — see section 4 |
179
182
  | `-col` | `--column` | column the mode partitions on |
180
183
  | `-row` | `--row` | rows per file (`-m splitrow`) |
181
- | `-df` | `--datefrom` | start / anchor date `yyyy-MM-dd` |
184
+ | `-df` | `--datefrom` | start / anchor date `yyyy-MM-dd`; omitted with `-dr`/`-mr` ⇒ today (system date) |
182
185
  | `-dt` | `--dateto` | end date `yyyy-MM-dd` (`-m date`) |
183
186
  | `-dr` | `--daysrelative` | days back from `-df` (`-m relativedate`) |
184
187
  | `-mr` | `--monthsrelative` | months back from `-df` (`-m monthbydate`) |
185
188
  | `-rm` | `--removeexisting` | `Yes`: clear the output directory before exporting |
186
189
  | `-j` | `--job` | run one job.ini section — see section 5 |
187
190
  | `-jf` | `--jobfile` | job file path (default `./job.ini`) |
188
- | `-pl` | `--parallel` | run ALL job sections in parallel with N workers (default: CPU count) |
191
+ | `-p` | `--parallel` | run ALL job sections in parallel with N workers (default: CPU count); `-pl` still works as a legacy alias |
189
192
  | `-n` | `--name` | job name shown in logs and the default log filename |
190
193
  | `-cf` | `--configfile` | config file path (default `./config.ini`) |
191
194
  | `-lf` | `--logfile` | log file path |
@@ -225,7 +228,8 @@ daily/
225
228
  └── sales_2026-01-05.csv
226
229
  ```
227
230
 
228
- **`relativedate` — N days back from an anchor date, anchor included:**
231
+ **`relativedate` — N days back from an anchor date, anchor included
232
+ (omit `-df` to anchor on today):**
229
233
 
230
234
  ```bash
231
235
  ping-dataexport -s DB01 -q "SELECT * FROM sales" -m relativedate -col txn_date \
@@ -240,7 +244,7 @@ rel/
240
244
  ```
241
245
 
242
246
  **`monthbydate` — N months back plus the anchor month (the anchor month stops
243
- at the anchor date):**
247
+ at the anchor date; omit `-df` to anchor on today):**
244
248
 
245
249
  ```bash
246
250
  ping-dataexport -s DB01 -q "SELECT * FROM sales" -m monthbydate -col txn_date \
@@ -295,7 +299,7 @@ file — see *Output and logs* below):
295
299
 
296
300
  Put recurring exports in a job file so you never retype long commands. Each
297
301
  `[Section]` is **one job**: run one with `-j SectionName`, or all of them at
298
- once with `-pl`. Every key is simply a CLI option written as a config key:
302
+ once with `-p`. Every key is simply a CLI option written as a config key:
299
303
 
300
304
  ```ini
301
305
  [DailySales]
@@ -319,7 +323,7 @@ Output=out/full_dump.parquet
319
323
  ```bash
320
324
  ping-dataexport -j DailySales # one section (job.ini by default, -jf elsewhere)
321
325
  ping-dataexport -j DailySales -od other_dir # CLI options override the section
322
- ping-dataexport -pl 4 # ALL sections in parallel, 4 workers
326
+ ping-dataexport -p 4 # ALL sections in parallel, 4 workers
323
327
  ```
324
328
 
325
329
  Every job.ini key and the CLI option it mirrors (keys are case-insensitive):
@@ -381,7 +385,7 @@ only, no metadata lookups.
381
385
  - Every run logs structured lines to stdout and to a log file:
382
386
  `-lf path` > `LogFile=` in config.ini > default
383
387
  `{ExportFolder}/logs/log_{jobname}.txt`.
384
- - CLI exit codes: `0` success, `1` failure (in `-pl` parallel mode: `1` if any
388
+ - CLI exit codes: `0` success, `1` failure (in `-p` parallel mode: `1` if any
385
389
  job failed).
386
390
 
387
391
  ## ODBC prerequisites (ODBC sources only)
@@ -2,6 +2,9 @@
2
2
 
3
3
  ## PING (ping-godhand)'s Universal Data Exporter
4
4
 
5
+ > **Provided as-is. No support, no warranty, no roadmap commitments, use at
6
+ > your own risk.**
7
+
5
8
  ## คำอธิบาย (ภาษาไทย)
6
9
 
7
10
  โปรแกรมช่วย Export ข้อมูลอย่างง่าย: เชื่อมต่อฐานข้อมูล รันคำสั่ง SQL
@@ -149,14 +152,14 @@ All options:
149
152
  | `-m` | `--mode` | export mode: `groupby` \| `date` \| `relativedate` \| `monthbydate` \| `splitrow` \| `watermark` — see section 4 |
150
153
  | `-col` | `--column` | column the mode partitions on |
151
154
  | `-row` | `--row` | rows per file (`-m splitrow`) |
152
- | `-df` | `--datefrom` | start / anchor date `yyyy-MM-dd` |
155
+ | `-df` | `--datefrom` | start / anchor date `yyyy-MM-dd`; omitted with `-dr`/`-mr` ⇒ today (system date) |
153
156
  | `-dt` | `--dateto` | end date `yyyy-MM-dd` (`-m date`) |
154
157
  | `-dr` | `--daysrelative` | days back from `-df` (`-m relativedate`) |
155
158
  | `-mr` | `--monthsrelative` | months back from `-df` (`-m monthbydate`) |
156
159
  | `-rm` | `--removeexisting` | `Yes`: clear the output directory before exporting |
157
160
  | `-j` | `--job` | run one job.ini section — see section 5 |
158
161
  | `-jf` | `--jobfile` | job file path (default `./job.ini`) |
159
- | `-pl` | `--parallel` | run ALL job sections in parallel with N workers (default: CPU count) |
162
+ | `-p` | `--parallel` | run ALL job sections in parallel with N workers (default: CPU count); `-pl` still works as a legacy alias |
160
163
  | `-n` | `--name` | job name shown in logs and the default log filename |
161
164
  | `-cf` | `--configfile` | config file path (default `./config.ini`) |
162
165
  | `-lf` | `--logfile` | log file path |
@@ -196,7 +199,8 @@ daily/
196
199
  └── sales_2026-01-05.csv
197
200
  ```
198
201
 
199
- **`relativedate` — N days back from an anchor date, anchor included:**
202
+ **`relativedate` — N days back from an anchor date, anchor included
203
+ (omit `-df` to anchor on today):**
200
204
 
201
205
  ```bash
202
206
  ping-dataexport -s DB01 -q "SELECT * FROM sales" -m relativedate -col txn_date \
@@ -211,7 +215,7 @@ rel/
211
215
  ```
212
216
 
213
217
  **`monthbydate` — N months back plus the anchor month (the anchor month stops
214
- at the anchor date):**
218
+ at the anchor date; omit `-df` to anchor on today):**
215
219
 
216
220
  ```bash
217
221
  ping-dataexport -s DB01 -q "SELECT * FROM sales" -m monthbydate -col txn_date \
@@ -266,7 +270,7 @@ file — see *Output and logs* below):
266
270
 
267
271
  Put recurring exports in a job file so you never retype long commands. Each
268
272
  `[Section]` is **one job**: run one with `-j SectionName`, or all of them at
269
- once with `-pl`. Every key is simply a CLI option written as a config key:
273
+ once with `-p`. Every key is simply a CLI option written as a config key:
270
274
 
271
275
  ```ini
272
276
  [DailySales]
@@ -290,7 +294,7 @@ Output=out/full_dump.parquet
290
294
  ```bash
291
295
  ping-dataexport -j DailySales # one section (job.ini by default, -jf elsewhere)
292
296
  ping-dataexport -j DailySales -od other_dir # CLI options override the section
293
- ping-dataexport -pl 4 # ALL sections in parallel, 4 workers
297
+ ping-dataexport -p 4 # ALL sections in parallel, 4 workers
294
298
  ```
295
299
 
296
300
  Every job.ini key and the CLI option it mirrors (keys are case-insensitive):
@@ -352,7 +356,7 @@ only, no metadata lookups.
352
356
  - Every run logs structured lines to stdout and to a log file:
353
357
  `-lf path` > `LogFile=` in config.ini > default
354
358
  `{ExportFolder}/logs/log_{jobname}.txt`.
355
- - CLI exit codes: `0` success, `1` failure (in `-pl` parallel mode: `1` if any
359
+ - CLI exit codes: `0` success, `1` failure (in `-p` parallel mode: `1` if any
356
360
  job failed).
357
361
 
358
362
  ## ODBC prerequisites (ODBC sources only)
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "ping-dataexport"
7
- version = "0.2.0"
8
- description = "Universal database data export to CSV/TXT/Parquet streaming, typed, no pandas"
7
+ version = "0.2.2"
8
+ description = "PING's Data Export Tool - To Parquet/CSV/TEXT as Accelerator for Data & AI Project"
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
11
11
  license-files = ["LICENSE"]
@@ -8,4 +8,4 @@ The package uses relative imports only and has no import-time side effects, so
8
8
  the directory can be copied into any project and imported directly.
9
9
  """
10
10
 
11
- __version__ = "0.2.0"
11
+ __version__ = "0.2.2"
@@ -91,7 +91,7 @@ def build_parser() -> argparse.ArgumentParser:
91
91
  p.add_argument("-lf", "--logfile", help="log file path")
92
92
  p.add_argument("-t", "--test", action="store_true", default=False,
93
93
  help="test mode: preview only, no files")
94
- p.add_argument("-pl", "--parallel", nargs="?", const=0, type=int, metavar="N",
94
+ p.add_argument("-p", "-pl", "--parallel", nargs="?", const=0, type=int, metavar="N",
95
95
  help="run ALL job sections in parallel with N workers (default: CPU count)")
96
96
  return p
97
97
 
@@ -169,8 +169,8 @@ class JobSpecBuilder:
169
169
 
170
170
  datefrom = parse_strict_date(datefrom_v, what="--datefrom") if datefrom_v else None
171
171
  dateto = parse_strict_date(dateto_v, what="--dateto") if dateto_v else None
172
- if mode == "monthbydate" and datefrom is None:
173
- datefrom = self.today # anchor defaults to today
172
+ if mode in ("relativedate", "monthbydate") and datefrom is None:
173
+ datefrom = self.today # -dr/-mr without -df: anchor = current system date
174
174
 
175
175
  output = layered("output")
176
176
  outputdir = layered("outputdir")
@@ -45,7 +45,8 @@ class JobValidator:
45
45
  e(spec, f"--datefrom {spec.datefrom} is after --dateto {spec.dateto}")
46
46
  if spec.mode == "relativedate":
47
47
  if not spec.datefrom or spec.daysrelative is None:
48
- e(spec, "--mode relativedate requires --datefrom and --daysrelative")
48
+ e(spec, "--mode relativedate requires --daysrelative "
49
+ "(--datefrom defaults to today when omitted)")
49
50
  if spec.daysrelative < 0:
50
51
  e(spec, "--daysrelative must be >= 0")
51
52
  if spec.mode == "monthbydate":
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ping-dataexport
3
- Version: 0.2.0
4
- Summary: Universal database data export to CSV/TXT/Parquet streaming, typed, no pandas
3
+ Version: 0.2.2
4
+ Summary: PING's Data Export Tool - To Parquet/CSV/TEXT as Accelerator for Data & AI Project
5
5
  Author: vorapol
6
6
  License-Expression: Apache-2.0
7
7
  Keywords: export,database,csv,parquet,etl,data-platform,airflow
@@ -31,6 +31,9 @@ Dynamic: license-file
31
31
 
32
32
  ## PING (ping-godhand)'s Universal Data Exporter
33
33
 
34
+ > **Provided as-is. No support, no warranty, no roadmap commitments, use at
35
+ > your own risk.**
36
+
34
37
  ## คำอธิบาย (ภาษาไทย)
35
38
 
36
39
  โปรแกรมช่วย Export ข้อมูลอย่างง่าย: เชื่อมต่อฐานข้อมูล รันคำสั่ง SQL
@@ -178,14 +181,14 @@ All options:
178
181
  | `-m` | `--mode` | export mode: `groupby` \| `date` \| `relativedate` \| `monthbydate` \| `splitrow` \| `watermark` — see section 4 |
179
182
  | `-col` | `--column` | column the mode partitions on |
180
183
  | `-row` | `--row` | rows per file (`-m splitrow`) |
181
- | `-df` | `--datefrom` | start / anchor date `yyyy-MM-dd` |
184
+ | `-df` | `--datefrom` | start / anchor date `yyyy-MM-dd`; omitted with `-dr`/`-mr` ⇒ today (system date) |
182
185
  | `-dt` | `--dateto` | end date `yyyy-MM-dd` (`-m date`) |
183
186
  | `-dr` | `--daysrelative` | days back from `-df` (`-m relativedate`) |
184
187
  | `-mr` | `--monthsrelative` | months back from `-df` (`-m monthbydate`) |
185
188
  | `-rm` | `--removeexisting` | `Yes`: clear the output directory before exporting |
186
189
  | `-j` | `--job` | run one job.ini section — see section 5 |
187
190
  | `-jf` | `--jobfile` | job file path (default `./job.ini`) |
188
- | `-pl` | `--parallel` | run ALL job sections in parallel with N workers (default: CPU count) |
191
+ | `-p` | `--parallel` | run ALL job sections in parallel with N workers (default: CPU count); `-pl` still works as a legacy alias |
189
192
  | `-n` | `--name` | job name shown in logs and the default log filename |
190
193
  | `-cf` | `--configfile` | config file path (default `./config.ini`) |
191
194
  | `-lf` | `--logfile` | log file path |
@@ -225,7 +228,8 @@ daily/
225
228
  └── sales_2026-01-05.csv
226
229
  ```
227
230
 
228
- **`relativedate` — N days back from an anchor date, anchor included:**
231
+ **`relativedate` — N days back from an anchor date, anchor included
232
+ (omit `-df` to anchor on today):**
229
233
 
230
234
  ```bash
231
235
  ping-dataexport -s DB01 -q "SELECT * FROM sales" -m relativedate -col txn_date \
@@ -240,7 +244,7 @@ rel/
240
244
  ```
241
245
 
242
246
  **`monthbydate` — N months back plus the anchor month (the anchor month stops
243
- at the anchor date):**
247
+ at the anchor date; omit `-df` to anchor on today):**
244
248
 
245
249
  ```bash
246
250
  ping-dataexport -s DB01 -q "SELECT * FROM sales" -m monthbydate -col txn_date \
@@ -295,7 +299,7 @@ file — see *Output and logs* below):
295
299
 
296
300
  Put recurring exports in a job file so you never retype long commands. Each
297
301
  `[Section]` is **one job**: run one with `-j SectionName`, or all of them at
298
- once with `-pl`. Every key is simply a CLI option written as a config key:
302
+ once with `-p`. Every key is simply a CLI option written as a config key:
299
303
 
300
304
  ```ini
301
305
  [DailySales]
@@ -319,7 +323,7 @@ Output=out/full_dump.parquet
319
323
  ```bash
320
324
  ping-dataexport -j DailySales # one section (job.ini by default, -jf elsewhere)
321
325
  ping-dataexport -j DailySales -od other_dir # CLI options override the section
322
- ping-dataexport -pl 4 # ALL sections in parallel, 4 workers
326
+ ping-dataexport -p 4 # ALL sections in parallel, 4 workers
323
327
  ```
324
328
 
325
329
  Every job.ini key and the CLI option it mirrors (keys are case-insensitive):
@@ -381,7 +385,7 @@ only, no metadata lookups.
381
385
  - Every run logs structured lines to stdout and to a log file:
382
386
  `-lf path` > `LogFile=` in config.ini > default
383
387
  `{ExportFolder}/logs/log_{jobname}.txt`.
384
- - CLI exit codes: `0` success, `1` failure (in `-pl` parallel mode: `1` if any
388
+ - CLI exit codes: `0` success, `1` failure (in `-p` parallel mode: `1` if any
385
389
  job failed).
386
390
 
387
391
  ## ODBC prerequisites (ODBC sources only)
File without changes