etlplus 0.11.10__tar.gz → 0.11.11__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 (170) hide show
  1. {etlplus-0.11.10/etlplus.egg-info → etlplus-0.11.11}/PKG-INFO +1 -1
  2. {etlplus-0.11.10 → etlplus-0.11.11/etlplus.egg-info}/PKG-INFO +1 -1
  3. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/file/test_u_file_core.py +57 -0
  4. {etlplus-0.11.10 → etlplus-0.11.11}/.coveragerc +0 -0
  5. {etlplus-0.11.10 → etlplus-0.11.11}/.editorconfig +0 -0
  6. {etlplus-0.11.10 → etlplus-0.11.11}/.gitattributes +0 -0
  7. {etlplus-0.11.10 → etlplus-0.11.11}/.github/actions/python-bootstrap/action.yml +0 -0
  8. {etlplus-0.11.10 → etlplus-0.11.11}/.github/workflows/ci.yml +0 -0
  9. {etlplus-0.11.10 → etlplus-0.11.11}/.gitignore +0 -0
  10. {etlplus-0.11.10 → etlplus-0.11.11}/.pre-commit-config.yaml +0 -0
  11. {etlplus-0.11.10 → etlplus-0.11.11}/.ruff.toml +0 -0
  12. {etlplus-0.11.10 → etlplus-0.11.11}/CODE_OF_CONDUCT.md +0 -0
  13. {etlplus-0.11.10 → etlplus-0.11.11}/CONTRIBUTING.md +0 -0
  14. {etlplus-0.11.10 → etlplus-0.11.11}/DEMO.md +0 -0
  15. {etlplus-0.11.10 → etlplus-0.11.11}/LICENSE +0 -0
  16. {etlplus-0.11.10 → etlplus-0.11.11}/MANIFEST.in +0 -0
  17. {etlplus-0.11.10 → etlplus-0.11.11}/Makefile +0 -0
  18. {etlplus-0.11.10 → etlplus-0.11.11}/README.md +0 -0
  19. {etlplus-0.11.10 → etlplus-0.11.11}/REFERENCES.md +0 -0
  20. {etlplus-0.11.10 → etlplus-0.11.11}/docs/README.md +0 -0
  21. {etlplus-0.11.10 → etlplus-0.11.11}/docs/pipeline-guide.md +0 -0
  22. {etlplus-0.11.10 → etlplus-0.11.11}/docs/snippets/installation_version.md +0 -0
  23. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/__init__.py +0 -0
  24. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/__main__.py +0 -0
  25. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/__version__.py +0 -0
  26. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/README.md +0 -0
  27. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/__init__.py +0 -0
  28. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/auth.py +0 -0
  29. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/config.py +0 -0
  30. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/endpoint_client.py +0 -0
  31. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/errors.py +0 -0
  32. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/pagination/__init__.py +0 -0
  33. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/pagination/client.py +0 -0
  34. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/pagination/config.py +0 -0
  35. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/pagination/paginator.py +0 -0
  36. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/rate_limiting/__init__.py +0 -0
  37. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/rate_limiting/config.py +0 -0
  38. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/rate_limiting/rate_limiter.py +0 -0
  39. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/request_manager.py +0 -0
  40. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/retry_manager.py +0 -0
  41. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/transport.py +0 -0
  42. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/api/types.py +0 -0
  43. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/cli/__init__.py +0 -0
  44. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/cli/commands.py +0 -0
  45. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/cli/constants.py +0 -0
  46. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/cli/handlers.py +0 -0
  47. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/cli/io.py +0 -0
  48. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/cli/main.py +0 -0
  49. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/cli/options.py +0 -0
  50. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/cli/state.py +0 -0
  51. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/cli/types.py +0 -0
  52. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/config/__init__.py +0 -0
  53. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/config/connector.py +0 -0
  54. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/config/jobs.py +0 -0
  55. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/config/pipeline.py +0 -0
  56. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/config/profile.py +0 -0
  57. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/config/types.py +0 -0
  58. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/config/utils.py +0 -0
  59. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/database/__init__.py +0 -0
  60. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/database/ddl.py +0 -0
  61. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/database/engine.py +0 -0
  62. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/database/orm.py +0 -0
  63. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/database/schema.py +0 -0
  64. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/database/types.py +0 -0
  65. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/enums.py +0 -0
  66. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/extract.py +0 -0
  67. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/__init__.py +0 -0
  68. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/avro.py +0 -0
  69. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/core.py +0 -0
  70. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/csv.py +0 -0
  71. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/enums.py +0 -0
  72. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/feather.py +0 -0
  73. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/gz.py +0 -0
  74. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/json.py +0 -0
  75. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/ndjson.py +0 -0
  76. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/orc.py +0 -0
  77. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/parquet.py +0 -0
  78. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/tsv.py +0 -0
  79. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/txt.py +0 -0
  80. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/xls.py +0 -0
  81. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/xlsx.py +0 -0
  82. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/xml.py +0 -0
  83. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/yaml.py +0 -0
  84. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/file/zip.py +0 -0
  85. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/load.py +0 -0
  86. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/mixins.py +0 -0
  87. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/py.typed +0 -0
  88. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/run.py +0 -0
  89. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/run_helpers.py +0 -0
  90. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/templates/__init__.py +0 -0
  91. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/templates/ddl.sql.j2 +0 -0
  92. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/templates/view.sql.j2 +0 -0
  93. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/transform.py +0 -0
  94. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/types.py +0 -0
  95. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/utils.py +0 -0
  96. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/validate.py +0 -0
  97. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/validation/__init__.py +0 -0
  98. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus/validation/utils.py +0 -0
  99. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus.egg-info/SOURCES.txt +0 -0
  100. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus.egg-info/dependency_links.txt +0 -0
  101. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus.egg-info/entry_points.txt +0 -0
  102. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus.egg-info/requires.txt +0 -0
  103. {etlplus-0.11.10 → etlplus-0.11.11}/etlplus.egg-info/top_level.txt +0 -0
  104. {etlplus-0.11.10 → etlplus-0.11.11}/examples/README.md +0 -0
  105. {etlplus-0.11.10 → etlplus-0.11.11}/examples/configs/ddl_spec.yml +0 -0
  106. {etlplus-0.11.10 → etlplus-0.11.11}/examples/configs/pipeline.yml +0 -0
  107. {etlplus-0.11.10 → etlplus-0.11.11}/examples/data/sample.csv +0 -0
  108. {etlplus-0.11.10 → etlplus-0.11.11}/examples/data/sample.json +0 -0
  109. {etlplus-0.11.10 → etlplus-0.11.11}/examples/data/sample.xml +0 -0
  110. {etlplus-0.11.10 → etlplus-0.11.11}/examples/data/sample.xsd +0 -0
  111. {etlplus-0.11.10 → etlplus-0.11.11}/examples/data/sample.yaml +0 -0
  112. {etlplus-0.11.10 → etlplus-0.11.11}/examples/quickstart_python.py +0 -0
  113. {etlplus-0.11.10 → etlplus-0.11.11}/pyproject.toml +0 -0
  114. {etlplus-0.11.10 → etlplus-0.11.11}/pytest.ini +0 -0
  115. {etlplus-0.11.10 → etlplus-0.11.11}/setup.cfg +0 -0
  116. {etlplus-0.11.10 → etlplus-0.11.11}/setup.py +0 -0
  117. {etlplus-0.11.10 → etlplus-0.11.11}/tests/__init__.py +0 -0
  118. {etlplus-0.11.10 → etlplus-0.11.11}/tests/conftest.py +0 -0
  119. {etlplus-0.11.10 → etlplus-0.11.11}/tests/integration/conftest.py +0 -0
  120. {etlplus-0.11.10 → etlplus-0.11.11}/tests/integration/test_i_cli.py +0 -0
  121. {etlplus-0.11.10 → etlplus-0.11.11}/tests/integration/test_i_examples_data_parity.py +0 -0
  122. {etlplus-0.11.10 → etlplus-0.11.11}/tests/integration/test_i_pagination_strategy.py +0 -0
  123. {etlplus-0.11.10 → etlplus-0.11.11}/tests/integration/test_i_pipeline_smoke.py +0 -0
  124. {etlplus-0.11.10 → etlplus-0.11.11}/tests/integration/test_i_pipeline_yaml_load.py +0 -0
  125. {etlplus-0.11.10 → etlplus-0.11.11}/tests/integration/test_i_run.py +0 -0
  126. {etlplus-0.11.10 → etlplus-0.11.11}/tests/integration/test_i_run_profile_pagination_defaults.py +0 -0
  127. {etlplus-0.11.10 → etlplus-0.11.11}/tests/integration/test_i_run_profile_rate_limit_defaults.py +0 -0
  128. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/api/conftest.py +0 -0
  129. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/api/test_u_auth.py +0 -0
  130. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/api/test_u_config.py +0 -0
  131. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/api/test_u_endpoint_client.py +0 -0
  132. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/api/test_u_mocks.py +0 -0
  133. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/api/test_u_pagination_client.py +0 -0
  134. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/api/test_u_pagination_config.py +0 -0
  135. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/api/test_u_paginator.py +0 -0
  136. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/api/test_u_rate_limit_config.py +0 -0
  137. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/api/test_u_rate_limiter.py +0 -0
  138. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/api/test_u_request_manager.py +0 -0
  139. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/api/test_u_retry_manager.py +0 -0
  140. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/api/test_u_transport.py +0 -0
  141. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/api/test_u_types.py +0 -0
  142. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/cli/conftest.py +0 -0
  143. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/cli/test_u_cli_handlers.py +0 -0
  144. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/cli/test_u_cli_io.py +0 -0
  145. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/cli/test_u_cli_main.py +0 -0
  146. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/cli/test_u_cli_state.py +0 -0
  147. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/config/test_u_config_utils.py +0 -0
  148. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/config/test_u_connector.py +0 -0
  149. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/config/test_u_jobs.py +0 -0
  150. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/config/test_u_pipeline.py +0 -0
  151. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/conftest.py +0 -0
  152. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/database/test_u_database_ddl.py +0 -0
  153. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/database/test_u_database_engine.py +0 -0
  154. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/database/test_u_database_orm.py +0 -0
  155. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/database/test_u_database_schema.py +0 -0
  156. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/file/test_u_file_enums.py +0 -0
  157. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/file/test_u_file_yaml.py +0 -0
  158. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/test_u_enums.py +0 -0
  159. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/test_u_extract.py +0 -0
  160. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/test_u_load.py +0 -0
  161. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/test_u_main.py +0 -0
  162. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/test_u_mixins.py +0 -0
  163. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/test_u_run.py +0 -0
  164. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/test_u_run_helpers.py +0 -0
  165. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/test_u_transform.py +0 -0
  166. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/test_u_utils.py +0 -0
  167. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/test_u_validate.py +0 -0
  168. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/test_u_version.py +0 -0
  169. {etlplus-0.11.10 → etlplus-0.11.11}/tests/unit/validation/test_u_validation_utils.py +0 -0
  170. {etlplus-0.11.10 → etlplus-0.11.11}/tools/update_demo_snippets.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: etlplus
3
- Version: 0.11.10
3
+ Version: 0.11.11
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: etlplus
3
- Version: 0.11.10
3
+ Version: 0.11.11
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
@@ -259,3 +259,60 @@ class TestFile:
259
259
  text = path.read_text(encoding='utf-8')
260
260
  assert text.startswith('<?xml')
261
261
  assert '<records>' in text
262
+
263
+ @pytest.mark.parametrize(
264
+ 'file_format,filename',
265
+ [
266
+ (FileFormat.AVRO, 'data.avro'),
267
+ (FileFormat.FEATHER, 'data.feather'),
268
+ (FileFormat.GZ, 'data.gz'),
269
+ (FileFormat.NDJSON, 'data.ndjson'),
270
+ (FileFormat.ORC, 'data.orc'),
271
+ (FileFormat.PARQUET, 'data.parquet'),
272
+ (FileFormat.TSV, 'data.tsv'),
273
+ (FileFormat.TXT, 'data.txt'),
274
+ (FileFormat.XLS, 'data.xls'),
275
+ (FileFormat.XLSX, 'data.xlsx'),
276
+ (FileFormat.ZIP, 'data.zip'),
277
+ ],
278
+ )
279
+ def test_stub_formats_raise_on_read(
280
+ self,
281
+ tmp_path: Path,
282
+ file_format: FileFormat,
283
+ filename: str,
284
+ ) -> None:
285
+ """Test stub formats raising NotImplementedError on read."""
286
+ path = tmp_path / filename
287
+ path.write_text('stub', encoding='utf-8')
288
+
289
+ with pytest.raises(NotImplementedError):
290
+ File(path, file_format).read()
291
+
292
+ @pytest.mark.parametrize(
293
+ 'file_format,filename',
294
+ [
295
+ (FileFormat.AVRO, 'data.avro'),
296
+ (FileFormat.FEATHER, 'data.feather'),
297
+ (FileFormat.GZ, 'data.gz'),
298
+ (FileFormat.NDJSON, 'data.ndjson'),
299
+ (FileFormat.ORC, 'data.orc'),
300
+ (FileFormat.PARQUET, 'data.parquet'),
301
+ (FileFormat.TSV, 'data.tsv'),
302
+ (FileFormat.TXT, 'data.txt'),
303
+ (FileFormat.XLS, 'data.xls'),
304
+ (FileFormat.XLSX, 'data.xlsx'),
305
+ (FileFormat.ZIP, 'data.zip'),
306
+ ],
307
+ )
308
+ def test_stub_formats_raise_on_write(
309
+ self,
310
+ tmp_path: Path,
311
+ file_format: FileFormat,
312
+ filename: str,
313
+ ) -> None:
314
+ """Test stub formats raising NotImplementedError on write."""
315
+ path = tmp_path / filename
316
+
317
+ with pytest.raises(NotImplementedError):
318
+ File(path, file_format).write({'stub': True})
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes