etlplus 0.16.6__py3-none-any.whl → 0.16.7__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 (57) hide show
  1. etlplus/README.md +4 -4
  2. etlplus/api/enums.py +2 -2
  3. etlplus/cli/README.md +9 -7
  4. etlplus/cli/main.py +1 -1
  5. etlplus/database/README.md +7 -7
  6. etlplus/file/README.md +7 -5
  7. etlplus/file/accdb.py +2 -1
  8. etlplus/file/arrow.py +2 -1
  9. etlplus/file/bson.py +2 -1
  10. etlplus/file/cbor.py +2 -1
  11. etlplus/file/cfg.py +1 -1
  12. etlplus/file/conf.py +1 -1
  13. etlplus/file/dat.py +1 -1
  14. etlplus/file/dta.py +1 -1
  15. etlplus/file/duckdb.py +2 -1
  16. etlplus/file/enums.py +1 -1
  17. etlplus/file/fwf.py +2 -1
  18. etlplus/file/hbs.py +2 -1
  19. etlplus/file/hdf5.py +2 -1
  20. etlplus/file/ini.py +2 -1
  21. etlplus/file/ion.py +1 -1
  22. etlplus/file/jinja2.py +2 -1
  23. etlplus/file/log.py +1 -1
  24. etlplus/file/mat.py +1 -1
  25. etlplus/file/mdb.py +2 -1
  26. etlplus/file/msgpack.py +2 -1
  27. etlplus/file/mustache.py +2 -1
  28. etlplus/file/nc.py +1 -1
  29. etlplus/file/numbers.py +2 -1
  30. etlplus/file/ods.py +2 -1
  31. etlplus/file/pb.py +2 -1
  32. etlplus/file/pbf.py +2 -1
  33. etlplus/file/properties.py +2 -1
  34. etlplus/file/proto.py +2 -1
  35. etlplus/file/psv.py +2 -1
  36. etlplus/file/rda.py +2 -1
  37. etlplus/file/rds.py +1 -1
  38. etlplus/file/sas7bdat.py +2 -1
  39. etlplus/file/sav.py +1 -1
  40. etlplus/file/sqlite.py +2 -1
  41. etlplus/file/sylk.py +2 -1
  42. etlplus/file/tab.py +2 -1
  43. etlplus/file/toml.py +2 -1
  44. etlplus/file/vm.py +2 -1
  45. etlplus/file/wks.py +2 -1
  46. etlplus/file/xls.py +1 -1
  47. etlplus/file/xlsm.py +2 -2
  48. etlplus/file/xpt.py +2 -1
  49. etlplus/file/zsav.py +2 -1
  50. etlplus/ops/README.md +10 -9
  51. etlplus/templates/README.md +11 -9
  52. {etlplus-0.16.6.dist-info → etlplus-0.16.7.dist-info}/METADATA +32 -28
  53. {etlplus-0.16.6.dist-info → etlplus-0.16.7.dist-info}/RECORD +57 -57
  54. {etlplus-0.16.6.dist-info → etlplus-0.16.7.dist-info}/WHEEL +0 -0
  55. {etlplus-0.16.6.dist-info → etlplus-0.16.7.dist-info}/entry_points.txt +0 -0
  56. {etlplus-0.16.6.dist-info → etlplus-0.16.7.dist-info}/licenses/LICENSE +0 -0
  57. {etlplus-0.16.6.dist-info → etlplus-0.16.7.dist-info}/top_level.txt +0 -0
etlplus/README.md CHANGED
@@ -16,8 +16,8 @@ Back to project overview: see the top-level [README](../README.md).
16
16
  - [etlplus.cli](cli/README.md): Command-line interface definitions for `etlplus`
17
17
  - [etlplus.database](database/README.md): Database engine, schema, and ORM helpers
18
18
  - [etlplus.templates](templates/README.md): SQL and DDL template helpers
19
- - [etlplus.validation](validation/README.md): Data validation utilities and helpers
20
- - [etlplus.workflow](etlplus/workflow/README.md): Helpers for data connectors, pipelines, jobs, and
19
+ - [etlplus.ops](ops/README.md): Extract/validate/transform/load primitives
20
+ - [etlplus.workflow](workflow/README.md): Helpers for data connectors, pipelines, jobs, and
21
21
  profiles
22
22
 
23
23
  ## Quickstart
@@ -36,7 +36,7 @@ load(filtered, "file", "output.json", file_format="json")
36
36
  Use the provided classes to load and validate configuration files:
37
37
 
38
38
  ```python
39
- from etlplus.workflow import Config
39
+ from etlplus import Config
40
40
 
41
41
  cfg = Config.from_yaml("pipeline.yml")
42
42
  ```
@@ -47,7 +47,7 @@ cfg = Config.from_yaml("pipeline.yml")
47
47
  ## Example: Loading a Pipeline Config
48
48
 
49
49
  ```python
50
- from etlplus.workflow import Config
50
+ from etlplus import Config
51
51
 
52
52
  config = Config.from_yaml("configs/pipeline.yml")
53
53
  print(config)
etlplus/api/enums.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  :mod:`etlplus.api.enums` module.
3
3
 
4
- File-specific REST API-aligned enums and helpers.
4
+ REST API-aligned enums and helpers.
5
5
  """
6
6
 
7
7
  from __future__ import annotations
@@ -21,7 +21,7 @@ __all__ = [
21
21
 
22
22
 
23
23
  class HttpMethod(CoercibleStrEnum):
24
- """Supported HTTP verbs that accept JSON payloads."""
24
+ """Supported HTTP verbs with a helper for request-body allowance."""
25
25
 
26
26
  # -- Constants -- #
27
27
 
etlplus/cli/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Documentation for the `etlplus.cli` subpackage: command-line interface for ETLPlus workflows.
4
4
 
5
5
  - Provides a CLI for running ETL pipelines, jobs, and utilities
6
- - Supports commands for running, validating, and inspecting pipelines
6
+ - Supports commands for extracting, transforming, validating data, and running pipelines
7
7
  - Includes options for configuration, state, and output control
8
8
  - Exposes handlers for custom command integration
9
9
 
@@ -17,20 +17,22 @@ Back to project overview: see the top-level [README](../../README.md).
17
17
 
18
18
  ## Available Commands
19
19
 
20
+ - **check**: Inspect pipeline configuration (jobs, sources, targets)
21
+ - **extract**: Extract data from files/APIs/databases
22
+ - **transform**: Transform records
23
+ - **load**: Load data to files/APIs/databases
24
+ - **render**: Render SQL DDL from table specs
25
+ - **validate**: Validate data against rules
20
26
  - **run**: Execute a pipeline or job
21
- - **validate**: Validate pipeline or config files
22
- - **inspect**: Show pipeline/job details
23
27
 
24
28
  ## Command Options
25
29
 
26
- - `--config`: Path to config file
27
- - `--state`: Path to state file
28
- - `--output`: Output file or format
30
+ Use `etlplus <command> --help` for the exact options supported by each command.
29
31
 
30
32
  ## Example: Running a Pipeline
31
33
 
32
34
  ```bash
33
- etlplus run --config configs/pipeline.yml --output results.json
35
+ etlplus run --config configs/pipeline.yml --job file_to_file_customers
34
36
  ```
35
37
 
36
38
  ## See Also
etlplus/cli/main.py CHANGED
@@ -4,7 +4,7 @@
4
4
  Entry point helpers for the Typer-powered ``etlplus`` CLI.
5
5
 
6
6
  This module exposes :func:`main` for the console script as well as
7
- :func:`create_parser` for callers that still need an ``argparse`` parser.
7
+ :func:`create_parser`, which is kept for compatibility but now raises.
8
8
  """
9
9
 
10
10
  from __future__ import annotations
@@ -18,8 +18,8 @@ Back to project overview: see the top-level [README](../../README.md).
18
18
 
19
19
  ## Database Engine and Connections
20
20
 
21
- - Manage connections to supported databases
22
- - Configure engines for different backends
21
+ - Build SQLAlchemy engines with `make_engine`
22
+ - Load connection strings from pipeline configs
23
23
 
24
24
  ## Schema and DDL Helpers
25
25
 
@@ -31,14 +31,14 @@ Back to project overview: see the top-level [README](../../README.md).
31
31
  - Map rows to Python objects
32
32
  - Simple CRUD helpers for tabular data
33
33
 
34
- ## Example: Creating a Table
34
+ ## Example: Rendering DDL From a Spec
35
35
 
36
36
  ```python
37
- from etlplus.database import Schema, Engine
37
+ from etlplus.database import load_table_spec, render_table_sql
38
38
 
39
- engine = Engine.connect("sqlite:///example.db")
40
- schema = Schema.from_dict({"name": "users", "columns": [ ... ]})
41
- engine.create_table(schema)
39
+ spec = load_table_spec("schemas/users.yml")
40
+ sql = render_table_sql(spec, template="ddl")
41
+ print(sql)
42
42
  ```
43
43
 
44
44
  ## See Also
etlplus/file/README.md CHANGED
@@ -4,7 +4,7 @@ Documentation for the `etlplus.file` subpackage: unified file format support and
4
4
  and writing data files.
5
5
 
6
6
  - Provides a consistent interface for reading and writing files in various formats
7
- - Supports all formats defined in `FileFormat` (see below)
7
+ - Defines many formats in `FileFormat`; read/write support varies by format
8
8
  - Includes helpers for inferring file format and compression from filenames, extensions, or MIME
9
9
  types
10
10
  - Exposes a `File` class with instance methods for reading and writing data
@@ -23,7 +23,8 @@ Back to project overview: see the top-level [README](../../README.md).
23
23
 
24
24
  ## Supported File Formats
25
25
 
26
- The following formats are defined in `FileFormat` and supported for reading and writing:
26
+ The following formats are implemented for reading/writing (unless noted). For the full support
27
+ matrix across all `FileFormat` values, see the top-level [README](../../README.md).
27
28
 
28
29
  | Format | Description |
29
30
  |-----------|---------------------------------------------|
@@ -37,13 +38,14 @@ The following formats are defined in `FileFormat` and supported for reading and
37
38
  | parquet | Apache Parquet columnar format |
38
39
  | tsv | Tab-separated values text files |
39
40
  | txt | Plain text files |
40
- | xls | Microsoft Excel (legacy .xls) |
41
+ | xls | Microsoft Excel (legacy .xls; read-only) |
41
42
  | xlsx | Microsoft Excel (modern .xlsx) |
42
43
  | zip | ZIP-compressed files (see Compression) |
43
44
  | xml | XML files |
44
45
  | yaml | YAML files |
45
46
 
46
- Compression formats (gz, zip) are also supported as wrappers for other formats.
47
+ Compression formats (gz, zip) are also supported as wrappers for other formats. Formats not listed
48
+ here are currently stubbed and will raise `NotImplementedError` on read/write.
47
49
 
48
50
  ## Inferring File Format and Compression
49
51
 
@@ -77,7 +79,7 @@ f.write(data)
77
79
  ```
78
80
 
79
81
  - The `write()` method serializes and writes data in the appropriate format.
80
- - Supports all formats listed above.
82
+ - Supports the implemented formats listed above.
81
83
 
82
84
  ## File Instance Methods
83
85
 
etlplus/file/accdb.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.accdb` module.
3
3
 
4
- Helpers for reading/writing newer Microsoft Access database (ACCDB) files.
4
+ Stub helpers for reading/writing newer Microsoft Access database (ACCDB) files
5
+ (not implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/arrow.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.arrow` module.
3
3
 
4
- Helpers for reading/writing Apache Arrow (ARROW) files.
4
+ Stub helpers for reading/writing Apache Arrow (ARROW) files (not implemented
5
+ yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/bson.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.bson` module.
3
3
 
4
- Helpers for reading/writing Binary JSON (BSON) files.
4
+ Stub helpers for reading/writing Binary JSON (BSON) files (not implemented
5
+ yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/cbor.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.cbor` module.
3
3
 
4
- Helpers for reading/writing Concise Binary Object Representation (CBOR) files.
4
+ Stub helpers for reading/writing Concise Binary Object Representation (CBOR)
5
+ files (not implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/cfg.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  :mod:`etlplus.file.cfg` module.
3
3
 
4
- Helpers for reading/writing config (CFG) files.
4
+ Stub helpers for reading/writing config (CFG) files (not implemented yet).
5
5
 
6
6
  Notes
7
7
  -----
etlplus/file/conf.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  :mod:`etlplus.file.conf` module.
3
3
 
4
- Helpers for reading/writing config (CONF) files.
4
+ Stub helpers for reading/writing config (CONF) files (not implemented yet).
5
5
 
6
6
  Notes
7
7
  -----
etlplus/file/dat.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  :mod:`etlplus.file.dat` module.
3
3
 
4
- Helpers for reading/writing data (DAT) files.
4
+ Stub helpers for reading/writing data (DAT) files (not implemented yet).
5
5
 
6
6
  Notes
7
7
  -----
etlplus/file/dta.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  :mod:`etlplus.file.dta` module.
3
3
 
4
- Helpers for reading/writing Stata (DTA) data files.
4
+ Stub helpers for reading/writing Stata (DTA) data files (not implemented yet).
5
5
 
6
6
  Notes
7
7
  -----
etlplus/file/duckdb.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.duckdb` module.
3
3
 
4
- Helpers for reading/writing DuckDB database (DUCKDB) files.
4
+ Stub helpers for reading/writing DuckDB database (DUCKDB) files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/enums.py CHANGED
@@ -57,7 +57,7 @@ class CompressionFormat(CoercibleStrEnum):
57
57
 
58
58
 
59
59
  class FileFormat(CoercibleStrEnum):
60
- """Supported file formats for extraction."""
60
+ """Defined file formats (read/write support varies by format)."""
61
61
 
62
62
  # -- Constants -- #
63
63
 
etlplus/file/fwf.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.fwf` module.
3
3
 
4
- Helpers for reading/writing Fixed-Width Fields (FWF) files.
4
+ Stub helpers for reading/writing Fixed-Width Fields (FWF) files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/hbs.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.hbs` module.
3
3
 
4
- Helpers for reading/writing Handlebars (HBS) template files.
4
+ Stub helpers for reading/writing Handlebars (HBS) template files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/hdf5.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.hdf5` module.
3
3
 
4
- Helpers for reading/writing Hierarchical Data Format (HDF5) files.
4
+ Stub helpers for reading/writing Hierarchical Data Format (HDF5) files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/ini.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.ini` module.
3
3
 
4
- Helpers for reading/writing initialization (INI) files.
4
+ Stub helpers for reading/writing initialization (INI) files (not implemented
5
+ yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/ion.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  :mod:`etlplus.file.ion` module.
3
3
 
4
- Helpers for reading/writing Amazon Ion (ION) files.
4
+ Stub helpers for reading/writing Amazon Ion (ION) files (not implemented yet).
5
5
 
6
6
  Notes
7
7
  -----
etlplus/file/jinja2.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.jinja2` module.
3
3
 
4
- Helpers for reading/writing compressed Jinja2 (JINJA2) template files.
4
+ Stub helpers for reading/writing compressed Jinja2 (JINJA2) template files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/log.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  :mod:`etlplus.file.log` module.
3
3
 
4
- Helpers for reading/writing generic log (LOG) files.
4
+ Stub helpers for reading/writing generic log (LOG) files (not implemented yet).
5
5
 
6
6
  Notes
7
7
  -----
etlplus/file/mat.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  :mod:`etlplus.file.mat` module.
3
3
 
4
- Helpers for reading/writing MATLAB (MAT) data files.
4
+ Stub helpers for reading/writing MATLAB (MAT) data files (not implemented yet).
5
5
 
6
6
  Notes
7
7
  -----
etlplus/file/mdb.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.mdb` module.
3
3
 
4
- Helpers for reading/writing newer Microsoft Access database (MDB) files.
4
+ Stub helpers for reading/writing newer Microsoft Access database (MDB) files
5
+ (not implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/msgpack.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.msgpack` module.
3
3
 
4
- Helpers for reading/writing MessagePack (MSGPACK) files.
4
+ Stub helpers for reading/writing MessagePack (MSGPACK) files (not implemented
5
+ yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/mustache.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.mustache` module.
3
3
 
4
- Helpers for reading/writing Mustache (MUSTACHE) template files.
4
+ Stub helpers for reading/writing Mustache (MUSTACHE) template files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/nc.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  :mod:`etlplus.file.nc` module.
3
3
 
4
- Helpers for reading/writing NetCDF (NC) data files.
4
+ Stub helpers for reading/writing NetCDF (NC) data files (not implemented yet).
5
5
 
6
6
  Notes
7
7
  -----
etlplus/file/numbers.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.numbers` module.
3
3
 
4
- Helpers for reading/writing Apple Numbers (NUMBERS) spreadsheet files.
4
+ Stub helpers for reading/writing Apple Numbers (NUMBERS) spreadsheet files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/ods.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.ods` module.
3
3
 
4
- Helpers for reading/writing OpenDocument (ODS) spreadsheet files.
4
+ Stub helpers for reading/writing OpenDocument (ODS) spreadsheet files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/pb.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.pb` module.
3
3
 
4
- Helpers for reading/writing Protocol Buffer (PB) files.
4
+ Stub helpers for reading/writing Protocol Buffer (PB) files (not implemented
5
+ yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/pbf.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.pbf` module.
3
3
 
4
- Helpers for reading/writing Protocolbuffer Binary Format (PBF) files.
4
+ Stub helpers for reading/writing Protocolbuffer Binary Format (PBF) files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.properties` module.
3
3
 
4
- Helpers for reading/writing properties (PROPERTIES) files.
4
+ Stub helpers for reading/writing properties (PROPERTIES) files (not implemented
5
+ yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/proto.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.proto` module.
3
3
 
4
- Helpers for reading/writing Protocol Buffers schema (PROTO) files.
4
+ Stub helpers for reading/writing Protocol Buffers schema (PROTO) files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/psv.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.psv` module.
3
3
 
4
- Helpers for reading/writing Pipe-Separated Values (PSV) files.
4
+ Stub helpers for reading/writing Pipe-Separated Values (PSV) files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/rda.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.rda` module.
3
3
 
4
- Helpers for reading/writing RData workspace/object bundle (RDA) files.
4
+ Stub helpers for reading/writing RData workspace/object bundle (RDA) files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/rds.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  :mod:`etlplus.file.rds` module.
3
3
 
4
- Helpers for reading/writing R (RDS) data files.
4
+ Stub helpers for reading/writing R (RDS) data files (not implemented yet).
5
5
 
6
6
  Notes
7
7
  -----
etlplus/file/sas7bdat.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.sas7bdat` module.
3
3
 
4
- Helpers for reading/writing SAS (SAS7BDAT) data files.
4
+ Stub helpers for reading/writing SAS (SAS7BDAT) data files (not implemented
5
+ yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/sav.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  :mod:`etlplus.file.sav` module.
3
3
 
4
- Helpers for reading/writing SPSS (SAV) data files.
4
+ Stub helpers for reading/writing SPSS (SAV) data files (not implemented yet).
5
5
 
6
6
  Notes
7
7
  -----
etlplus/file/sqlite.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.sqlite` module.
3
3
 
4
- Helpers for reading/writing SQLite database (SQLITE) files.
4
+ Stub helpers for reading/writing SQLite database (SQLITE) files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/sylk.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.sylk` module.
3
3
 
4
- Helpers for reading/writing Symbolic Link (SYLK) data files.
4
+ Stub helpers for reading/writing Symbolic Link (SYLK) data files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/tab.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.tab` module.
3
3
 
4
- Helpers for reading/writing "tab"-formatted (TAB) files.
4
+ Stub helpers for reading/writing "tab"-formatted (TAB) files (not implemented
5
+ yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/toml.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.toml` module.
3
3
 
4
- Helpers for reading/writing Tom's Obvious Minimal Language (TOML) files.
4
+ Stub helpers for reading/writing Tom's Obvious Minimal Language (TOML) files
5
+ (not implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/vm.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.vm` module.
3
3
 
4
- Helpers for reading/writing Apache Velocity (VM) template files.
4
+ Stub helpers for reading/writing Apache Velocity (VM) template files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/wks.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.wks` module.
3
3
 
4
- Helpers for reading/writing Lotus 1-2-3 (WKS) spreadsheet files.
4
+ Stub helpers for reading/writing Lotus 1-2-3 (WKS) spreadsheet files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/xls.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """
2
2
  :mod:`etlplus.file.xls` module.
3
3
 
4
- Helpers for reading/writing Excel XLS files.
4
+ Helpers for reading Excel XLS files (write is not supported).
5
5
  """
6
6
 
7
7
  from __future__ import annotations
etlplus/file/xlsm.py CHANGED
@@ -1,8 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.xlsm` module.
3
3
 
4
- Helpers for reading/writing Microsoft Excel Macro-Enabled (XLSM) spreadsheet
5
- files.
4
+ Stub helpers for reading/writing Microsoft Excel Macro-Enabled (XLSM)
5
+ spreadsheet files (not implemented yet).
6
6
 
7
7
  Notes
8
8
  -----
etlplus/file/xpt.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.xpt` module.
3
3
 
4
- Helpers for reading/writing SAS Transport (XPT) files.
4
+ Stub helpers for reading/writing SAS Transport (XPT) files (not implemented
5
+ yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/file/zsav.py CHANGED
@@ -1,7 +1,8 @@
1
1
  """
2
2
  :mod:`etlplus.file.zsav` module.
3
3
 
4
- Helpers for reading/writing compressed SPSS (ZSAV) data files.
4
+ Stub helpers for reading/writing compressed SPSS (ZSAV) data files (not
5
+ implemented yet).
5
6
 
6
7
  Notes
7
8
  -----
etlplus/ops/README.md CHANGED
@@ -1,14 +1,16 @@
1
- # etlplus.ops subpackage
1
+ # `etlplus.ops` Subpackage
2
2
 
3
- Documentation for the `etlplus.validation` subpackage: data validation utilities and helpers.
3
+ Documentation for the `etlplus.ops` subpackage: core ETL primitives used by the CLI and pipeline
4
+ runner.
4
5
 
5
- - Provides flexible data validation for ETL pipelines
6
- - Supports type checking, required fields, and custom rules
7
- - Includes utilities for rule definition and validation logic
6
+ - Extract data from files, APIs, and databases (database extract is a placeholder today)
7
+ - Validate JSON-like data with schema-style rules
8
+ - Transform records (filter, map, select, sort, aggregate)
9
+ - Load data into files and APIs (database load is a placeholder today)
8
10
 
9
11
  Back to project overview: see the top-level [README](../../README.md).
10
12
 
11
- - [etlplus.ops subpackage](#etlplusops-subpackage)
13
+ - [`etlplus.ops` Subpackage](#etlplusops-subpackage)
12
14
  - [Validation Features](#validation-features)
13
15
  - [Defining Validation Rules](#defining-validation-rules)
14
16
  - [Example: Validating Data](#example-validating-data)
@@ -19,7 +21,6 @@ Back to project overview: see the top-level [README](../../README.md).
19
21
  - Type checking (string, number, boolean, etc.)
20
22
  - Required/optional fields
21
23
  - Enum and pattern validation
22
- - Custom rule support
23
24
 
24
25
  ## Defining Validation Rules
25
26
 
@@ -35,7 +36,7 @@ rules = {
35
36
  ## Example: Validating Data
36
37
 
37
38
  ```python
38
- from etlplus.validation import validate
39
+ from etlplus.ops import validate
39
40
 
40
41
  result = validate({"name": "Alice", "age": 30}, rules)
41
42
  if result["valid"]:
@@ -47,4 +48,4 @@ else:
47
48
  ## See Also
48
49
 
49
50
  - Top-level CLI and library usage in the main [README](../../README.md)
50
- - Validation utilities in [utils.py](utils.py)
51
+ - Validation utilities in [validate.py](validate.py)
@@ -1,10 +1,11 @@
1
1
  # `etlplus.templates` Subpackage
2
2
 
3
- Documentation for the `etlplus.templates` subpackage: SQL and DDL template helpers.
3
+ Documentation for the `etlplus.templates` subpackage: bundled SQL/DDL templates used by the database
4
+ helpers.
4
5
 
5
6
  - Provides Jinja2 templates for DDL and view generation
6
- - Supports templated SQL for multiple database backends
7
- - Includes helpers for rendering templates with schema metadata
7
+ - Used by `etlplus.database.render_table_sql` and related helpers
8
+ - Exposed as plain template files you can reuse with your own Jinja2 setup
8
9
 
9
10
  Back to project overview: see the top-level [README](../../README.md).
10
11
 
@@ -21,21 +22,22 @@ Back to project overview: see the top-level [README](../../README.md).
21
22
 
22
23
  ## Rendering Templates
23
24
 
24
- Use the helpers to render templates with your schema or table metadata:
25
+ ETLPlus does not currently expose a `render_template` helper in this package. Use the database
26
+ helpers instead:
25
27
 
26
28
  ```python
27
- from etlplus.templates import render_template
29
+ from etlplus.database import render_table_sql, load_table_spec
28
30
 
29
- sql = render_template("ddl.sql.j2", schema=my_schema)
31
+ spec = load_table_spec("schemas/users.yml")
32
+ sql = render_table_sql(spec, template="ddl")
30
33
  ```
31
34
 
32
35
  ## Example: Rendering a DDL Template
33
36
 
34
37
  ```python
35
- from etlplus.templates import render_template
38
+ from etlplus.database import render_tables_to_string
36
39
 
37
- schema = {"name": "users", "columns": [ ... ]}
38
- sql = render_template("ddl.sql.j2", schema=schema)
40
+ sql = render_tables_to_string(["schemas/users.yml"], template="ddl")
39
41
  print(sql)
40
42
  ```
41
43
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: etlplus
3
- Version: 0.16.6
3
+ Version: 0.16.7
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
@@ -141,7 +141,7 @@ ETLPlus supports Python 3.13 and above.
141
141
 
142
142
  - **Extract** data from multiple sources:
143
143
  - Files (CSV, JSON, XML, YAML)
144
- - Databases (connection string support)
144
+ - Databases (connection string support; extract is a placeholder today)
145
145
  - REST APIs (GET)
146
146
 
147
147
  - **Validate** data with flexible rules:
@@ -161,7 +161,7 @@ ETLPlus supports Python 3.13 and above.
161
161
 
162
162
  - **Load** data to multiple targets:
163
163
  - Files (CSV, JSON, XML, YAML)
164
- - Databases (connection string support)
164
+ - Databases (connection string support; load is a placeholder today)
165
165
  - REST APIs (PATCH, POST, PUT)
166
166
 
167
167
  ## Installation
@@ -188,7 +188,7 @@ etlplus --help
188
188
  etlplus --version
189
189
 
190
190
  # One-liner: extract CSV, filter, select, and write JSON
191
- etlplus extract file examples/data/sample.csv \
191
+ etlplus extract examples/data/sample.csv \
192
192
  | etlplus transform --operations '{"filter": {"field": "age", "op": "gt", "value": 25}, "select": ["name", "email"]}' \
193
193
  - temp/sample_output.json
194
194
  ```
@@ -218,8 +218,9 @@ include GET for extract and PATCH/POST/PUT for load.
218
218
 
219
219
  ### Databases (`database`)
220
220
 
221
- Database connectors use connection strings for extraction and loading, and
222
- DDL can be rendered from table specs for migrations or schema checks.
221
+ Database connectors use connection strings for extraction and loading, and DDL can be rendered from
222
+ table specs for migrations or schema checks. Database extract/load operations are currently
223
+ placeholders; plan to integrate a database client in your runner.
223
224
 
224
225
  ### Files (`file`)
225
226
 
@@ -298,7 +299,7 @@ Recognized file formats are listed in the tables below. Support for reading to o
298
299
  | `numbers` | N | N | Apple Numbers |
299
300
  | `ods` | N | N | OpenDocument |
300
301
  | `wks` | N | N | Lotus 1-2-3 |
301
- | `xls` | Y | Y | Microsoft Excel (BIFF) |
302
+ | `xls` | Y | N | Microsoft Excel (BIFF; read-only) |
302
303
  | `xlsm` | N | N | Microsoft Excel Macro-Enabled (Open XML) |
303
304
  | `xlsx` | Y | Y | Microsoft Excel (Open XML) |
304
305
 
@@ -320,8 +321,8 @@ Recognized file formats are listed in the tables below. Support for reading to o
320
321
 
321
322
  #### Logs and Event Streams
322
323
 
323
- | Format | Supported | Description |
324
- | --- | --- | --- |
324
+ | Format | Read | Write | Description |
325
+ | --- | --- | --- | --- |
325
326
  | `log` | N | N | Generic log file |
326
327
 
327
328
  #### Data Archives
@@ -354,13 +355,15 @@ etlplus --help
354
355
  etlplus --version
355
356
  ```
356
357
 
357
- The CLI is implemented with Typer (Click-based). There is no argparse compatibility layer, so rely
358
- on the documented commands/flags and run `etlplus <command> --help` for current options.
358
+ The CLI is implemented with Typer (Click-based). The legacy argparse parser has been removed
359
+ (`create_parser` now raises), so rely on the documented commands/flags and run `etlplus <command>
360
+ --help` for current options.
359
361
 
360
362
  **Example error messages:**
361
363
 
362
364
  - If you omit a required argument: `Error: Missing required argument 'SOURCE'.`
363
- - If you place an option before its argument: `Error: Option '--source-format' must follow the 'SOURCE' argument.`
365
+ - If you place an option before its argument: `Error: Option '--source-format' must follow the
366
+ 'SOURCE' argument.`
364
367
 
365
368
  #### Argument Order and Required Options
366
369
 
@@ -424,27 +427,27 @@ specific parser.
424
427
 
425
428
  Extract from JSON file:
426
429
  ```bash
427
- etlplus extract file examples/data/sample.json
430
+ etlplus extract examples/data/sample.json
428
431
  ```
429
432
 
430
433
  Extract from CSV file:
431
434
  ```bash
432
- etlplus extract file examples/data/sample.csv
435
+ etlplus extract examples/data/sample.csv
433
436
  ```
434
437
 
435
438
  Extract from XML file:
436
439
  ```bash
437
- etlplus extract file examples/data/sample.xml
440
+ etlplus extract examples/data/sample.xml
438
441
  ```
439
442
 
440
443
  Extract from REST API:
441
444
  ```bash
442
- etlplus extract api https://api.example.com/data
445
+ etlplus extract https://api.example.com/data
443
446
  ```
444
447
 
445
448
  Save extracted data to file:
446
449
  ```bash
447
- etlplus extract file examples/data/sample.csv > temp/sample_output.json
450
+ etlplus extract examples/data/sample.csv > temp/sample_output.json
448
451
  ```
449
452
 
450
453
  #### Validate Data
@@ -510,13 +513,13 @@ etlplus transform \
510
513
 
511
514
  Load to JSON file:
512
515
  ```bash
513
- etlplus extract file examples/data/sample.json \
516
+ etlplus extract examples/data/sample.json \
514
517
  | etlplus load temp/sample_output.json --target-type file
515
518
  ```
516
519
 
517
520
  Load to CSV file:
518
521
  ```bash
519
- etlplus extract file examples/data/sample.csv \
522
+ etlplus extract examples/data/sample.csv \
520
523
  | etlplus load temp/sample_output.csv --target-type file
521
524
  ```
522
525
 
@@ -553,13 +556,13 @@ operations = {
553
556
  transformed = transform(data, operations)
554
557
 
555
558
  # Load data
556
- load(transformed, "file", "temp/sample_output.json", format="json")
559
+ load(transformed, "file", "temp/sample_output.json", file_format="json")
557
560
  ```
558
561
 
559
562
  For YAML-driven pipelines executed end-to-end (extract → validate → transform → load), see:
560
563
 
561
564
  - Authoring: [`docs/pipeline-guide.md`](docs/pipeline-guide.md)
562
- - Runner API and internals: [`docs/run-module.md`](docs/run-module.md)
565
+ - Runner API and internals: see `etlplus.ops.run` docstrings and `docs/pipeline-guide.md`.
563
566
 
564
567
  CLI quick reference for pipelines:
565
568
 
@@ -576,7 +579,7 @@ etlplus run --config examples/configs/pipeline.yml --job file_to_file_customers
576
579
 
577
580
  ```bash
578
581
  # 1. Extract from CSV
579
- etlplus extract file examples/data/sample.csv > temp/sample_extracted.json
582
+ etlplus extract examples/data/sample.csv > temp/sample_extracted.json
580
583
 
581
584
  # 2. Transform (filter and select fields)
582
585
  etlplus transform \
@@ -611,7 +614,7 @@ etlplus load output.bin --target-type file --target-format csv < data.json
611
614
 
612
615
  # Leave the flags off when extensions already match the desired format
613
616
  etlplus extract data.csv --source-type file
614
- etlplus load data.json --target-type file < data.json
617
+ etlplus load output.json --target-type file < data.json
615
618
  ```
616
619
 
617
620
  ## Transformation Operations
@@ -706,8 +709,9 @@ Looking for the HTTP client and pagination helpers? See the dedicated docs in
706
709
 
707
710
  Curious how the pipeline runner composes API requests, pagination, and load calls?
708
711
 
709
- - Runner overview and helpers: [`docs/run-module.md`](docs/run-module.md)
710
- - Unified "connector" vocabulary (API/File/DB): `etlplus/config/connector.py`
712
+ - Runner overview and helpers: see `etlplus.ops.run` docstrings and
713
+ [`docs/pipeline-guide.md`](docs/pipeline-guide.md)
714
+ - Unified "connector" vocabulary (API/File/DB): `etlplus/connector`
711
715
  - API/file targets reuse the same shapes as sources; API targets typically set a `method`.
712
716
 
713
717
  ### Running Tests
@@ -721,7 +725,7 @@ pytest tests/ -v
721
725
  We split tests into two layers:
722
726
 
723
727
  - **Unit (`tests/unit/`)**: single function or class, no real I/O, fast, uses stubs/monkeypatch
724
- (e.g. `etlplus.cli.create_parser`, transform + validate helpers).
728
+ (e.g. small helpers in `etlplus.utils`, transform + validate helpers).
725
729
  - **Integration (`tests/integration/`)**: end-to-end flows (CLI `main()`, pipeline `run()`,
726
730
  pagination + rate limit defaults, file/API connector interactions) may touch temp files and use
727
731
  fake clients.
@@ -808,7 +812,7 @@ Navigate to detailed documentation for each subpackage:
808
812
  - [etlplus.cli](etlplus/cli/README.md): Command-line interface definitions for `etlplus`
809
813
  - [etlplus.database](etlplus/database/README.md): Database engine, schema, and ORM helpers
810
814
  - [etlplus.templates](etlplus/templates/README.md): SQL and DDL template helpers
811
- - [etlplus.validation](etlplus/validation/README.md): Data validation utilities and helpers
815
+ - [etlplus.ops](etlplus/ops/README.md): Extract/validate/transform/load primitives
812
816
  - [etlplus.workflow](etlplus/workflow/README.md): Helpers for data connectors, pipelines, jobs, and
813
817
  profiles
814
818
 
@@ -824,7 +828,7 @@ Navigate to detailed documentation for each subpackage:
824
828
  - API client docs: [`etlplus/api/README.md`](etlplus/api/README.md)
825
829
  - Examples: [`examples/README.md`](examples/README.md)
826
830
  - Pipeline authoring guide: [`docs/pipeline-guide.md`](docs/pipeline-guide.md)
827
- - Runner internals: [`docs/run-module.md`](docs/run-module.md)
831
+ - Runner internals: see `etlplus.ops.run` docstrings and [`docs/pipeline-guide.md`](docs/pipeline-guide.md)
828
832
  - Design notes (Mapping inputs, dict outputs): [`docs/pipeline-guide.md#design-notes-mapping-inputs-dict-outputs`](docs/pipeline-guide.md#design-notes-mapping-inputs-dict-outputs)
829
833
  - Typing philosophy: [`CONTRIBUTING.md#typing-philosophy`](CONTRIBUTING.md#typing-philosophy)
830
834
  - Demo and walkthrough: [`DEMO.md`](DEMO.md)
@@ -1,4 +1,4 @@
1
- etlplus/README.md,sha256=L3un9q7Q7Mstfh0dmSjpsZMZzsOz2tvlWw4_-Y_LZEs,1887
1
+ etlplus/README.md,sha256=0q3QrboL0YCP1idUVRTw5IKDV2XPBCh44lLb-JUZBFw,1852
2
2
  etlplus/__init__.py,sha256=yHZt-sjjfPjB_CrNhcT9bcMlZCfwiul39ZhQ2VfxpRs,318
3
3
  etlplus/__main__.py,sha256=btoROneNiigyfBU7BSzPKZ1R9gzBMpxcpsbPwmuHwTM,479
4
4
  etlplus/__version__.py,sha256=1E0GMK_yUWCMQFKxXjTvyMwofi0qT2k4CDNiHWiymWE,327
@@ -13,7 +13,7 @@ etlplus/api/__init__.py,sha256=eIHkdNBZv6ViB_5MhW3f3vWMYJLFoF4Tr3Wnb3O7B4E,4647
13
13
  etlplus/api/auth.py,sha256=PZEJIBwLwnUGfF76s32a5GnLcpDvu4ghEd-wEAHx4rU,12260
14
14
  etlplus/api/config.py,sha256=WmH1GOQxoBAr3vUsmYIyMbXSt7kiyNbtKjyMS1dqt-A,17653
15
15
  etlplus/api/endpoint_client.py,sha256=UtvK4h_-fxINM-5QcumkcLJsL0Uw4L0L_4RMxC024Yk,30737
16
- etlplus/api/enums.py,sha256=Tvkru6V8fzQh2JM2FDLcA_yaPENOKz5JgzxLhieqEvc,1141
16
+ etlplus/api/enums.py,sha256=YaeFbsmiP1uZIhRBxFjqFRyCDiVvE5KVWNtbWRUXkkQ,1142
17
17
  etlplus/api/errors.py,sha256=8LuZfExUpZ67PPqPr6SdAmFA-wc0ocw4JHoBYyEcg0s,4664
18
18
  etlplus/api/request_manager.py,sha256=K3tlRFflUM-_S-optnHzJx_AWcbd0ZQGVX_NytkN4zg,18690
19
19
  etlplus/api/retry_manager.py,sha256=RV5xkmbExNHF_b-IN5RWx2wawiJzeklc9miGXPQb7U4,11326
@@ -27,13 +27,13 @@ etlplus/api/pagination/paginator.py,sha256=B0OK_0FVmUz3-lCDeKgDOqYJOoEQtjO6I5eSm
27
27
  etlplus/api/rate_limiting/__init__.py,sha256=8VIjkW2wGjTFJjjAqOBSFKcKsBFuYndS4o33PLSo_q8,1072
28
28
  etlplus/api/rate_limiting/config.py,sha256=U8T8BxrX87uFR-ksTG1FkmxoVr-FTaLIa0wWeXIcZss,9775
29
29
  etlplus/api/rate_limiting/rate_limiter.py,sha256=qmOf15qvhFk2htMsGcHfgzATqOBd2BdrG8ShadfOIgY,7035
30
- etlplus/cli/README.md,sha256=8H_G2d3HteYIU6ReX9K9DM485QjWDT5vHMQbGD_vv20,1237
30
+ etlplus/cli/README.md,sha256=FKZ5KV--khWolN0CZsmcq026HPoCkVjKHBsT2k8hBBI,1444
31
31
  etlplus/cli/__init__.py,sha256=J97-Rv931IL1_b4AXnB7Fbbd7HKnHBpx18NQfC_kE6c,299
32
32
  etlplus/cli/commands.py,sha256=Mbnu_YYUrOumbDjkul9x5VjP8VXW5u08xNi4nLF9Yyo,25048
33
33
  etlplus/cli/constants.py,sha256=0F7dXIQKWUhhVu2Us527GJeknJIWpBqz7CK2e5OQgcE,1947
34
34
  etlplus/cli/handlers.py,sha256=JdN7W7mqmQL9xyU7PkBtsQf7eu3j5-E2AhAQvbfy-4g,18470
35
35
  etlplus/cli/io.py,sha256=tGGNQ4ecezqj-mD285fgBVrYdphdeqApsyV9VojOj1I,7836
36
- etlplus/cli/main.py,sha256=68_uJwmWajhOC9o4R_ns8IQloC9BFmAKC_9GlQOxKWg,5239
36
+ etlplus/cli/main.py,sha256=TwIog4jZTft86D_FEYWsNQu8XiU-MtoQFL6DNmVS_w0,5236
37
37
  etlplus/cli/options.py,sha256=vfXT3YLh7wG1iC-aTdSg6ItMC8l6n0Lozmy53XjqLbA,1199
38
38
  etlplus/cli/state.py,sha256=3Dq5BKct0uAvRajtc2yHbsX7wqepZOwlAMKsyvQcnqk,7918
39
39
  etlplus/cli/types.py,sha256=tclhKVJXDqHzlTQBYKARfqMgDOcuBJ-Zej2pvFy96WM,652
@@ -46,77 +46,77 @@ etlplus/connector/enums.py,sha256=43NziUOpol4YvBtM13WJJzY1EAQOjaWESxLl7J2ZT8U,10
46
46
  etlplus/connector/file.py,sha256=AsEXUHOokP2s5NQoTazF3Skz7qMj-1FNdvRZj9LfdbM,2858
47
47
  etlplus/connector/types.py,sha256=51UPD4edtMRiRL35ZVfbmKTodhrLUiRP5P067SZGzms,953
48
48
  etlplus/connector/utils.py,sha256=fS2hPAfuhKTg_L2xDxF5fJnsO1SuuDIiEWU7GuaJKUM,2933
49
- etlplus/database/README.md,sha256=3Af5BEGLkBmMoGOLtS1GQuj4wKPh_CwSp5NEPMf2uaY,1435
49
+ etlplus/database/README.md,sha256=suWTTipq1pcswlhZT_qHaOnsgPeqMjttX3MV0w40jdY,1429
50
50
  etlplus/database/__init__.py,sha256=AKJsDl2RHuRGPS-eXgNJeh4aSncJP5Y0yLApBF6i7i8,1052
51
51
  etlplus/database/ddl.py,sha256=-7EAbyLkU8m3eYlHSNLFOQr1I4fPEbF0hTyByzjyvsU,7909
52
52
  etlplus/database/engine.py,sha256=eDFnp4vzhoKuyLJSeHYpndHLUr27neS7CgdvMw8mNok,4384
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=ivU8svVs1fktQiW5ozvh1N-IOSLCAQ3oM9bW8DUFwIw,3630
56
+ etlplus/file/README.md,sha256=gjmreSBxq6MS8P5njTRskcQNk2RS5eMOngAUTh68VTI,3847
57
57
  etlplus/file/__init__.py,sha256=X03bosSM-uSd6dh3ur0un6_ozFRw2Tm4PE6kVUjtXK8,475
58
58
  etlplus/file/_imports.py,sha256=Cozv7d5G2P9PNgy2M4vrz0Wzo7hx9FTC0WcGcuVqga0,3193
59
59
  etlplus/file/_io.py,sha256=Z3aTujy0rpbMKJHvO2UZ6bA1ohO-6ZiemyxF4GsayRc,3951
60
- etlplus/file/accdb.py,sha256=mMwnNXd3rB0Z_1uN6wpiF0jL4flUmZbMBoiIS3Fq5mg,1691
61
- etlplus/file/arrow.py,sha256=nkSXiDCFOSbEJX387h-c91WeYPFZehj2r3_iznVy5HE,1704
60
+ etlplus/file/accdb.py,sha256=6BiYRSlmJlEFyxktQk4pcEW9nWdKL59wQ6gH5YnWAfM,1718
61
+ etlplus/file/arrow.py,sha256=vQxcZQvQdPLw-WdrdPORqLrKaXwrX2sjJTND2Mbz5nE,1731
62
62
  etlplus/file/avro.py,sha256=GR9GbDNcQ7TpaPKhcC6JL79XicSmNDIhH3cP0QDmLJg,4447
63
- etlplus/file/bson.py,sha256=CYpA1PSPzyM9Dtv5ik3RG0GUwLjucJGbrhyo7THcVa0,1623
64
- etlplus/file/cbor.py,sha256=NNQkCRenh9YOYdeR-w-AbUfK9sjGkwoA0Idtr-dclm4,1677
65
- etlplus/file/cfg.py,sha256=HuGuxNIKPWyg14mIBlVB5Ch_npf9zObRt2mgoymzB_A,1720
66
- etlplus/file/conf.py,sha256=x6OH9in-VKkTIPtlwbYEsYDJ703oFJjUFHVCoFULhvk,1778
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
67
  etlplus/file/core.py,sha256=IzcG4pQLq3QCQhswbgdWKxHSvmzvWzYweBrz7t6HDDo,8888
68
68
  etlplus/file/csv.py,sha256=FTdxlVs3vsaj_t7vGY-unNiCpJI2TWuiaf2_8dJan6M,1754
69
- etlplus/file/dat.py,sha256=o4FN-6_HCVXuD-If3aYfIqU4QTZMvECNZ5Yx4wr15ew,1652
70
- etlplus/file/dta.py,sha256=7DuvvKSgbpBoKZHm7CWJ7NKstRasp0fUEj1XF02YgsE,1626
71
- etlplus/file/duckdb.py,sha256=kCFxNUEI9gEeeMWJuCHyfKVsqvhij4Q7LJVpZ3AMDYw,1641
72
- etlplus/file/enums.py,sha256=5cwIfcoYGEjaX0AzaJzY0PjztKykzFTQ1HBnb2NTEXs,11065
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
73
  etlplus/file/feather.py,sha256=joOdQf_oIu__i8hwy5X4eK6MSqh6O0kKnub2VWD_Clg,2679
74
- etlplus/file/fwf.py,sha256=ktXIKatOPUs6YeB30K7BNvfwwB4BkXoYEomsvCjk_ss,1599
74
+ etlplus/file/fwf.py,sha256=uI6mjpGL0wPyiYe39j--G_6HoXEbe1yWkbyk1jRCc0c,1626
75
75
  etlplus/file/gz.py,sha256=NfiXiE37rS2YC7dk1YC1ELbbEpzJdypIy-no9cVoaco,2641
76
- etlplus/file/hbs.py,sha256=jxAPY10R_2vhP-1QWGBmANCI1dJ9vetaLo5Mp8kMa3Y,1624
77
- etlplus/file/hdf5.py,sha256=hjpBUue5ss6R8ljZ-gYxDxpOLGBKgNvmAvn97uNmYAw,1634
78
- etlplus/file/ini.py,sha256=ZL_0Wq5-yNcveyKF-minH2AFh-RmspM06myHquAobao,1711
79
- etlplus/file/ion.py,sha256=ZK0g-47GQi9fCDT4EeXCgiVbWmmj7SU1WHwt-CrLwCU,1720
80
- etlplus/file/jinja2.py,sha256=TV-ZIzsJIg4hJyvWI7TWaMRjqL2s18Dg3ig3Hs50_pE,1640
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
81
  etlplus/file/json.py,sha256=vY3UYjzQzmJUAY0avR2cm70hTTED4xEF38WEEj0DhDQ,2140
82
- etlplus/file/log.py,sha256=6Te617oy8RWrzCa6hC0O65ygPIpfzkLBcP-x9glwM9g,1691
83
- etlplus/file/mat.py,sha256=JbZ7SziCqYZR8LljyLoSn05_-bPSzNH16KNB-wvzdpM,1664
84
- etlplus/file/mdb.py,sha256=Xlxx9RZlnErOrzYRFnzzOZltc99FalhoUY-oAiiQpPg,1667
85
- etlplus/file/msgpack.py,sha256=GOYfgxyK2N8Opy8kLsz4uDhVrT1vyOcVQ4eJvdhrNdA,1668
86
- etlplus/file/mustache.py,sha256=qOddtbtZwDyoXzHzqxpnUoO_lWKf3NPyfp-V21o0cRw,1657
87
- etlplus/file/nc.py,sha256=a1_er7Fco0FVw3GtDrd_OzZAI7U_sP9x-wi9qRgebaw,1680
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
88
  etlplus/file/ndjson.py,sha256=jpZgLZL-Vy4a6tsm5cxy0G9kW-x-X5kFSbnUn-XjIJw,2442
89
- etlplus/file/numbers.py,sha256=HkG3ISk35FZnorwECuciIiI4HZWFp9E-mRhOfhYclx8,1620
90
- etlplus/file/ods.py,sha256=MVEM1E2uLFmnTyCnyhljsrgdBC8psUGSVUGLmiuZTLM,1810
89
+ etlplus/file/numbers.py,sha256=Fo58Kshl5c489H2yYsxIMWfS0Wp3e0viUyoZfVcEcQI,1647
90
+ etlplus/file/ods.py,sha256=DBDJh5_O19s3XEfSgfrfX5ze5-gsIqfkdvS42D91I5E,1837
91
91
  etlplus/file/orc.py,sha256=RdK4IERoLWnGSgpBclfDmwMmtac8VYyet3Z9AFCyj2E,2612
92
92
  etlplus/file/parquet.py,sha256=6klk-GgNnFBbsRU0J8LiGm5c67A6FcX1AEZNf-cNSPM,2768
93
- etlplus/file/pb.py,sha256=0OOSmuFUfmB-DZILSA9FO2JgXfJmt9TnigH3E2gW4AI,1625
94
- etlplus/file/pbf.py,sha256=89fF58WkXmOBJh8Jh2zcA0cKBkB5neXMWyz95toPnXo,1630
95
- etlplus/file/properties.py,sha256=4KSRGWo_-fthVdOnJKXqUvHA2I6igcGWW9fnWJK7oLA,1728
96
- etlplus/file/proto.py,sha256=LjHFWVYEIyADwpd9Lzzd1FAcM8pFXN1pwoptxEDOvfQ,1678
97
- etlplus/file/psv.py,sha256=J-fPTMgTZFHZWJL6kLKaFgLXhtEtK66hJW59YLaWe9E,1736
98
- etlplus/file/rda.py,sha256=dSrHwLl_qu8bhnltWIuYqxpguP3JLH39JLOVxHsHLhE,1678
99
- etlplus/file/rds.py,sha256=o1IKY6CmLXSp-Iv7kBDFkT8X5QVTy5uVAZMm-7sUo4Y,1635
100
- etlplus/file/sas7bdat.py,sha256=yyX7YrnmZ91EY9WeTB_eZAqjCSEgD_9WTLGpD4Sv5AY,1716
101
- etlplus/file/sav.py,sha256=ij02gnYOevRV9e8dbDwi3plulkw-qEQoxccvydHXZK4,1607
102
- etlplus/file/sqlite.py,sha256=NRb93RuIDlu1eRMZnYDjDBhFO88gkDT7tvpmfgA4hQE,1662
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
103
  etlplus/file/stub.py,sha256=4vlqjIo_bBy69dIU2y2iy5fqnezt_bOuS218zyijQfs,1749
104
- etlplus/file/sylk.py,sha256=QwciGJVWxEKz3TH4s7hshHHLAfKiCqBxyV4umg9EVQI,1667
105
- etlplus/file/tab.py,sha256=Y9u5J-efoKIMIYnARhrPXA2KEF0pJ7deZF4zkz7ZID0,1994
106
- etlplus/file/toml.py,sha256=0kGJEF2353kNQWFbYd8G4XWjuPHvdl7vPILCWglsyk0,1636
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
107
  etlplus/file/tsv.py,sha256=SUe-UeL3zExX2idvpHiMWuRm5VQ8AyqqlNJckc9CDCU,1776
108
108
  etlplus/file/txt.py,sha256=Ys7MmKBOiHQnRK0Bb3VuIIny2_1Ejr-V_YdPlUfOEjc,2321
109
- etlplus/file/vm.py,sha256=K3EE-4TpXECcHxS1EEVmLOidkqj-MJeeztTRTRUaQ1o,1599
110
- etlplus/file/wks.py,sha256=dZtf_6ObJVUj_m7XIUAzuTDQkmYk0mhA9LF3rVltatI,1665
111
- etlplus/file/xls.py,sha256=dNfhaDSbSy-xQrE3qriCrmfXRQY7HqAtog91b-7RmpA,1782
112
- etlplus/file/xlsm.py,sha256=pZHybknmipUHEwjQBHWiU4HfVMLkGG7Zxe3rxBrxPT0,1748
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
113
  etlplus/file/xlsx.py,sha256=UOwz-IIeRU2GyAI8Upx2hn7v3KPZalpIaGO9hXuaOGo,2192
114
114
  etlplus/file/xml.py,sha256=lor8KsclDSy1tdOExL1GmYpaQVcZGRNEwOd2liiPPbk,4389
115
- etlplus/file/xpt.py,sha256=L70o8cIGWPeBdbfVJk-b9I9PE2MICtLkwhJjzqIeBgU,1712
115
+ etlplus/file/xpt.py,sha256=9lW8ievpqF4PKPFRWH0ZlmGe7BR8TP_ETRogNQ79TOA,1739
116
116
  etlplus/file/yaml.py,sha256=b_SxDSEQPVXQv9a9Ih4wAcI940pE5Ksy5pQE6K6ckhw,2062
117
117
  etlplus/file/zip.py,sha256=8wnmnGW_pGTx65736CzAG67XIi5y98KxucRT8sNDeuQ,4195
118
- etlplus/file/zsav.py,sha256=5hMuBjYeHw--UL2ZCCDn6TzJkr_YNhdQhvKI6nr3WW0,1674
119
- etlplus/ops/README.md,sha256=8omi7DYZhelc26JKk8Cm8QR8I3OGwziysPj1ivx41iQ,1380
118
+ etlplus/file/zsav.py,sha256=WasYgfogIQAvm4LWkDWgeeeyYWvY4MSoh-SrScqqBOM,1701
119
+ etlplus/ops/README.md,sha256=SP1yW0aATvMp_HEslSjf2Hff-At96QDkfXxh3FcDbO0,1465
120
120
  etlplus/ops/__init__.py,sha256=r5_-pPhSLCD1nq1EbN0rQrLOGpudueeIxCH_JvT2bt0,1718
121
121
  etlplus/ops/enums.py,sha256=dC_8CfaTiB2i83Az-oG-2hkjMuAfDADNbcMF2f94UeU,4014
122
122
  etlplus/ops/extract.py,sha256=fPk8LLjEmCZ5U59IUm15vG5aXTmduteCqtsVIlxvvxI,11022
@@ -126,7 +126,7 @@ etlplus/ops/transform.py,sha256=-41uw_pwOGsMTUYxtXaeYOmTF_fTkN-L4Q9KT1OFe78,2567
126
126
  etlplus/ops/types.py,sha256=Cvp8AJzJhJ1iYjyHd7j9ZLioxE2NdK__3g6fOI0qq6Q,4198
127
127
  etlplus/ops/utils.py,sha256=9UXym1W4qCMxBkcqCPUmI1QJ27yh1kOAbVnI1KsAGwE,10855
128
128
  etlplus/ops/validate.py,sha256=VtMhrH6itd_PFH4IhBOndvJpxxOPI56OAJhnrSyT_6U,13323
129
- etlplus/templates/README.md,sha256=IfPXlj1TGVA-uFWosHJhE2rabFW-znxOlOMazO9Z5cE,1361
129
+ etlplus/templates/README.md,sha256=hkeFypVEhxygSB4H40BuGJmZHzs8DbpPnhGt9mvgY_c,1478
130
130
  etlplus/templates/__init__.py,sha256=tsniN7XJYs3NwYxJ6c2HD5upHP3CDkLx-bQCMt97UOM,106
131
131
  etlplus/templates/ddl.sql.j2,sha256=s8fMWvcb4eaJVXkifuib1aQPljtZ8buuyB_uA-ZdU3Q,4734
132
132
  etlplus/templates/view.sql.j2,sha256=Iy8DHfhq5yyvrUKDxqp_aHIEXY4Tm6j4wT7YDEFWAhk,2180
@@ -135,9 +135,9 @@ etlplus/workflow/__init__.py,sha256=XgCQr684om0rONrQZ61yQ0r4qqFQL0iLAAB2Mn2BRSE,
135
135
  etlplus/workflow/dag.py,sha256=-f1x8N1eb-PUuiOwEvFLmJwfR7JaMDJihlCHlhrFhgE,2937
136
136
  etlplus/workflow/jobs.py,sha256=hLE9QJUzQaI0aOEon0P-xxxa6xHp997ANei4F310WRY,8711
137
137
  etlplus/workflow/profile.py,sha256=FQU3bzBZ9_yjKC9kCXKN1FQDS9zjNUjtWB1r3UL95_Q,1993
138
- etlplus-0.16.6.dist-info/licenses/LICENSE,sha256=MuNO63i6kWmgnV2pbP2SLqP54mk1BGmu7CmbtxMmT-U,1069
139
- etlplus-0.16.6.dist-info/METADATA,sha256=_6gQGwfRwLCcr9OF_s313Nuka2e4TvxOsyHtu4M-JSE,28114
140
- etlplus-0.16.6.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
141
- etlplus-0.16.6.dist-info/entry_points.txt,sha256=6w-2-jzuPa55spzK34h-UKh2JTEShh38adFRONNP9QE,45
142
- etlplus-0.16.6.dist-info/top_level.txt,sha256=aWWF-udn_sLGuHTM6W6MLh99ArS9ROkUWO8Mi8y1_2U,8
143
- etlplus-0.16.6.dist-info/RECORD,,
138
+ etlplus-0.16.7.dist-info/licenses/LICENSE,sha256=MuNO63i6kWmgnV2pbP2SLqP54mk1BGmu7CmbtxMmT-U,1069
139
+ etlplus-0.16.7.dist-info/METADATA,sha256=F2JOWX7lBq84wFev4eeGCXXsnXuOpxulCkBMjsBoxnE,28401
140
+ etlplus-0.16.7.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
141
+ etlplus-0.16.7.dist-info/entry_points.txt,sha256=6w-2-jzuPa55spzK34h-UKh2JTEShh38adFRONNP9QE,45
142
+ etlplus-0.16.7.dist-info/top_level.txt,sha256=aWWF-udn_sLGuHTM6W6MLh99ArS9ROkUWO8Mi8y1_2U,8
143
+ etlplus-0.16.7.dist-info/RECORD,,