etlplus 0.16.4__tar.gz → 0.16.6__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 (234) hide show
  1. {etlplus-0.16.4/etlplus.egg-info → etlplus-0.16.6}/PKG-INFO +1 -1
  2. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/__init__.py +14 -14
  3. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/auth.py +9 -6
  4. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/config.py +6 -6
  5. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/endpoint_client.py +16 -16
  6. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/errors.py +4 -4
  7. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/pagination/__init__.py +6 -6
  8. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/pagination/config.py +11 -9
  9. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/rate_limiting/__init__.py +2 -2
  10. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/rate_limiting/config.py +10 -10
  11. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/rate_limiting/rate_limiter.py +2 -2
  12. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/request_manager.py +4 -4
  13. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/retry_manager.py +6 -6
  14. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/transport.py +10 -10
  15. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/types.py +15 -15
  16. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/utils.py +49 -49
  17. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/cli/handlers.py +4 -4
  18. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/connector/__init__.py +6 -6
  19. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/connector/api.py +7 -7
  20. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/connector/database.py +3 -3
  21. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/connector/file.py +3 -3
  22. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/connector/types.py +2 -2
  23. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/ops/extract.py +2 -2
  24. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/ops/utils.py +5 -5
  25. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/ops/validate.py +13 -13
  26. {etlplus-0.16.4 → etlplus-0.16.6/etlplus.egg-info}/PKG-INFO +1 -1
  27. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus.egg-info/SOURCES.txt +12 -12
  28. {etlplus-0.16.4 → etlplus-0.16.6}/examples/quickstart.py +3 -3
  29. etlplus-0.16.4/tests/unit/api/test_u_auth.py → etlplus-0.16.6/tests/unit/api/test_u_api_auth.py +1 -1
  30. etlplus-0.16.4/tests/unit/api/test_u_endpoint_client.py → etlplus-0.16.6/tests/unit/api/test_u_api_endpoint_client.py +25 -22
  31. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/api/test_u_api_enums.py +1 -1
  32. etlplus-0.16.4/tests/unit/api/test_u_mocks.py → etlplus-0.16.6/tests/unit/api/test_u_api_mocks.py +3 -3
  33. etlplus-0.16.4/tests/unit/api/test_u_pagination_client.py → etlplus-0.16.6/tests/unit/api/test_u_api_pagination_client.py +1 -1
  34. etlplus-0.16.4/tests/unit/api/test_u_pagination_config.py → etlplus-0.16.6/tests/unit/api/test_u_api_pagination_config.py +1 -1
  35. etlplus-0.16.4/tests/unit/api/test_u_paginator.py → etlplus-0.16.6/tests/unit/api/test_u_api_paginator.py +9 -9
  36. etlplus-0.16.4/tests/unit/api/test_u_rate_limit_config.py → etlplus-0.16.6/tests/unit/api/test_u_api_rate_limit_config.py +1 -1
  37. etlplus-0.16.4/tests/unit/api/test_u_rate_limiter.py → etlplus-0.16.6/tests/unit/api/test_u_api_rate_limiter.py +8 -8
  38. etlplus-0.16.4/tests/unit/api/test_u_request_manager.py → etlplus-0.16.6/tests/unit/api/test_u_api_request_manager.py +1 -1
  39. etlplus-0.16.4/tests/unit/api/test_u_retry_manager.py → etlplus-0.16.6/tests/unit/api/test_u_api_retry_manager.py +3 -3
  40. etlplus-0.16.4/tests/unit/api/test_u_transport.py → etlplus-0.16.6/tests/unit/api/test_u_api_transport.py +3 -3
  41. etlplus-0.16.4/tests/unit/api/test_u_types.py → etlplus-0.16.6/tests/unit/api/test_u_api_types.py +1 -1
  42. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/api/test_u_api_utils.py +5 -5
  43. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/cli/test_u_cli_handlers.py +2 -2
  44. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/conftest.py +26 -26
  45. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/ops/test_u_ops_utils.py +13 -13
  46. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/ops/test_u_ops_validate.py +5 -5
  47. {etlplus-0.16.4 → etlplus-0.16.6}/.coveragerc +0 -0
  48. {etlplus-0.16.4 → etlplus-0.16.6}/.editorconfig +0 -0
  49. {etlplus-0.16.4 → etlplus-0.16.6}/.gitattributes +0 -0
  50. {etlplus-0.16.4 → etlplus-0.16.6}/.github/actions/python-bootstrap/action.yml +0 -0
  51. {etlplus-0.16.4 → etlplus-0.16.6}/.github/workflows/ci.yml +0 -0
  52. {etlplus-0.16.4 → etlplus-0.16.6}/.gitignore +0 -0
  53. {etlplus-0.16.4 → etlplus-0.16.6}/.pre-commit-config.yaml +0 -0
  54. {etlplus-0.16.4 → etlplus-0.16.6}/.ruff.toml +0 -0
  55. {etlplus-0.16.4 → etlplus-0.16.6}/CODE_OF_CONDUCT.md +0 -0
  56. {etlplus-0.16.4 → etlplus-0.16.6}/CONTRIBUTING.md +0 -0
  57. {etlplus-0.16.4 → etlplus-0.16.6}/DEMO.md +0 -0
  58. {etlplus-0.16.4 → etlplus-0.16.6}/LICENSE +0 -0
  59. {etlplus-0.16.4 → etlplus-0.16.6}/MANIFEST.in +0 -0
  60. {etlplus-0.16.4 → etlplus-0.16.6}/Makefile +0 -0
  61. {etlplus-0.16.4 → etlplus-0.16.6}/README.md +0 -0
  62. {etlplus-0.16.4 → etlplus-0.16.6}/REFERENCES.md +0 -0
  63. {etlplus-0.16.4 → etlplus-0.16.6}/SECURITY.md +0 -0
  64. {etlplus-0.16.4 → etlplus-0.16.6}/SUPPORT.md +0 -0
  65. {etlplus-0.16.4 → etlplus-0.16.6}/docs/README.md +0 -0
  66. {etlplus-0.16.4 → etlplus-0.16.6}/docs/pipeline-guide.md +0 -0
  67. {etlplus-0.16.4 → etlplus-0.16.6}/docs/snippets/installation_version.md +0 -0
  68. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/README.md +0 -0
  69. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/__init__.py +0 -0
  70. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/__main__.py +0 -0
  71. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/__version__.py +0 -0
  72. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/README.md +0 -0
  73. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/enums.py +0 -0
  74. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/pagination/client.py +0 -0
  75. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/api/pagination/paginator.py +0 -0
  76. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/cli/README.md +0 -0
  77. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/cli/__init__.py +0 -0
  78. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/cli/commands.py +0 -0
  79. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/cli/constants.py +0 -0
  80. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/cli/io.py +0 -0
  81. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/cli/main.py +0 -0
  82. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/cli/options.py +0 -0
  83. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/cli/state.py +0 -0
  84. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/cli/types.py +0 -0
  85. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/config.py +0 -0
  86. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/connector/connector.py +0 -0
  87. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/connector/core.py +0 -0
  88. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/connector/enums.py +0 -0
  89. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/connector/utils.py +0 -0
  90. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/database/README.md +0 -0
  91. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/database/__init__.py +0 -0
  92. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/database/ddl.py +0 -0
  93. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/database/engine.py +0 -0
  94. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/database/orm.py +0 -0
  95. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/database/schema.py +0 -0
  96. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/database/types.py +0 -0
  97. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/enums.py +0 -0
  98. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/README.md +0 -0
  99. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/__init__.py +0 -0
  100. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/_imports.py +0 -0
  101. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/_io.py +0 -0
  102. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/accdb.py +0 -0
  103. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/arrow.py +0 -0
  104. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/avro.py +0 -0
  105. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/bson.py +0 -0
  106. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/cbor.py +0 -0
  107. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/cfg.py +0 -0
  108. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/conf.py +0 -0
  109. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/core.py +0 -0
  110. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/csv.py +0 -0
  111. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/dat.py +0 -0
  112. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/dta.py +0 -0
  113. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/duckdb.py +0 -0
  114. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/enums.py +0 -0
  115. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/feather.py +0 -0
  116. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/fwf.py +0 -0
  117. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/gz.py +0 -0
  118. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/hbs.py +0 -0
  119. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/hdf5.py +0 -0
  120. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/ini.py +0 -0
  121. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/ion.py +0 -0
  122. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/jinja2.py +0 -0
  123. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/json.py +0 -0
  124. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/log.py +0 -0
  125. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/mat.py +0 -0
  126. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/mdb.py +0 -0
  127. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/msgpack.py +0 -0
  128. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/mustache.py +0 -0
  129. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/nc.py +0 -0
  130. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/ndjson.py +0 -0
  131. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/numbers.py +0 -0
  132. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/ods.py +0 -0
  133. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/orc.py +0 -0
  134. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/parquet.py +0 -0
  135. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/pb.py +0 -0
  136. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/pbf.py +0 -0
  137. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/properties.py +0 -0
  138. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/proto.py +0 -0
  139. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/psv.py +0 -0
  140. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/rda.py +0 -0
  141. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/rds.py +0 -0
  142. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/sas7bdat.py +0 -0
  143. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/sav.py +0 -0
  144. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/sqlite.py +0 -0
  145. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/stub.py +0 -0
  146. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/sylk.py +0 -0
  147. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/tab.py +0 -0
  148. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/toml.py +0 -0
  149. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/tsv.py +0 -0
  150. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/txt.py +0 -0
  151. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/vm.py +0 -0
  152. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/wks.py +0 -0
  153. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/xls.py +0 -0
  154. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/xlsm.py +0 -0
  155. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/xlsx.py +0 -0
  156. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/xml.py +0 -0
  157. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/xpt.py +0 -0
  158. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/yaml.py +0 -0
  159. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/zip.py +0 -0
  160. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/file/zsav.py +0 -0
  161. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/mixins.py +0 -0
  162. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/ops/README.md +0 -0
  163. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/ops/__init__.py +0 -0
  164. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/ops/enums.py +0 -0
  165. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/ops/load.py +0 -0
  166. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/ops/run.py +0 -0
  167. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/ops/transform.py +0 -0
  168. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/ops/types.py +0 -0
  169. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/py.typed +0 -0
  170. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/templates/README.md +0 -0
  171. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/templates/__init__.py +0 -0
  172. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/templates/ddl.sql.j2 +0 -0
  173. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/templates/view.sql.j2 +0 -0
  174. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/types.py +0 -0
  175. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/utils.py +0 -0
  176. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/workflow/README.md +0 -0
  177. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/workflow/__init__.py +0 -0
  178. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/workflow/dag.py +0 -0
  179. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/workflow/jobs.py +0 -0
  180. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus/workflow/profile.py +0 -0
  181. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus.egg-info/dependency_links.txt +0 -0
  182. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus.egg-info/entry_points.txt +0 -0
  183. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus.egg-info/requires.txt +0 -0
  184. {etlplus-0.16.4 → etlplus-0.16.6}/etlplus.egg-info/top_level.txt +0 -0
  185. {etlplus-0.16.4 → etlplus-0.16.6}/examples/README.md +0 -0
  186. {etlplus-0.16.4 → etlplus-0.16.6}/examples/configs/ddl_spec.yml +0 -0
  187. {etlplus-0.16.4 → etlplus-0.16.6}/examples/configs/pipeline.yml +0 -0
  188. {etlplus-0.16.4 → etlplus-0.16.6}/examples/data/sample.csv +0 -0
  189. {etlplus-0.16.4 → etlplus-0.16.6}/examples/data/sample.json +0 -0
  190. {etlplus-0.16.4 → etlplus-0.16.6}/examples/data/sample.xml +0 -0
  191. {etlplus-0.16.4 → etlplus-0.16.6}/examples/data/sample.xsd +0 -0
  192. {etlplus-0.16.4 → etlplus-0.16.6}/examples/data/sample.yaml +0 -0
  193. {etlplus-0.16.4 → etlplus-0.16.6}/pyproject.toml +0 -0
  194. {etlplus-0.16.4 → etlplus-0.16.6}/pytest.ini +0 -0
  195. {etlplus-0.16.4 → etlplus-0.16.6}/setup.cfg +0 -0
  196. {etlplus-0.16.4 → etlplus-0.16.6}/setup.py +0 -0
  197. {etlplus-0.16.4 → etlplus-0.16.6}/tests/__init__.py +0 -0
  198. {etlplus-0.16.4 → etlplus-0.16.6}/tests/conftest.py +0 -0
  199. {etlplus-0.16.4 → etlplus-0.16.6}/tests/integration/conftest.py +0 -0
  200. {etlplus-0.16.4 → etlplus-0.16.6}/tests/integration/test_i_cli.py +0 -0
  201. {etlplus-0.16.4 → etlplus-0.16.6}/tests/integration/test_i_config_load.py +0 -0
  202. {etlplus-0.16.4 → etlplus-0.16.6}/tests/integration/test_i_examples_data_parity.py +0 -0
  203. {etlplus-0.16.4 → etlplus-0.16.6}/tests/integration/test_i_pagination_strategy.py +0 -0
  204. {etlplus-0.16.4 → etlplus-0.16.6}/tests/integration/test_i_pipeline_smoke.py +0 -0
  205. {etlplus-0.16.4 → etlplus-0.16.6}/tests/integration/test_i_run.py +0 -0
  206. {etlplus-0.16.4 → etlplus-0.16.6}/tests/integration/test_i_run_profile_pagination_defaults.py +0 -0
  207. {etlplus-0.16.4 → etlplus-0.16.6}/tests/integration/test_i_run_profile_rate_limit_defaults.py +0 -0
  208. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/api/conftest.py +0 -0
  209. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/api/test_u_api_config.py +0 -0
  210. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/cli/conftest.py +0 -0
  211. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/cli/test_u_cli_io.py +0 -0
  212. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/cli/test_u_cli_main.py +0 -0
  213. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/cli/test_u_cli_state.py +0 -0
  214. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/connector/test_u_connector_enums.py +0 -0
  215. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/connector/test_u_connector_utils.py +0 -0
  216. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/database/test_u_database_ddl.py +0 -0
  217. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/database/test_u_database_engine.py +0 -0
  218. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/database/test_u_database_orm.py +0 -0
  219. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/database/test_u_database_schema.py +0 -0
  220. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/file/test_u_file_core.py +0 -0
  221. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/file/test_u_file_enums.py +0 -0
  222. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/file/test_u_file_yaml.py +0 -0
  223. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/ops/test_u_ops_enums.py +0 -0
  224. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/ops/test_u_ops_extract.py +0 -0
  225. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/ops/test_u_ops_load.py +0 -0
  226. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/ops/test_u_ops_run.py +0 -0
  227. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/ops/test_u_ops_transform.py +0 -0
  228. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/test_u_config.py +0 -0
  229. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/test_u_main.py +0 -0
  230. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/test_u_mixins.py +0 -0
  231. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/test_u_utils.py +0 -0
  232. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/test_u_version.py +0 -0
  233. {etlplus-0.16.4 → etlplus-0.16.6}/tests/unit/workflow/test_u_workflow_jobs.py +0 -0
  234. {etlplus-0.16.4 → etlplus-0.16.6}/tools/update_demo_snippets.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: etlplus
3
- Version: 0.16.4
3
+ Version: 0.16.6
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
@@ -79,21 +79,21 @@ from .config import ApiProfileConfig
79
79
  from .config import EndpointConfig
80
80
  from .endpoint_client import EndpointClient
81
81
  from .enums import HttpMethod
82
- from .pagination import CursorPaginationConfigMap
83
- from .pagination import PagePaginationConfigMap
82
+ from .pagination import CursorPaginationConfigDict
83
+ from .pagination import PagePaginationConfigDict
84
84
  from .pagination import PaginationClient
85
85
  from .pagination import PaginationConfig
86
- from .pagination import PaginationConfigMap
86
+ from .pagination import PaginationConfigDict
87
87
  from .pagination import PaginationType
88
88
  from .pagination import Paginator
89
89
  from .rate_limiting import RateLimitConfig
90
- from .rate_limiting import RateLimitConfigMap
90
+ from .rate_limiting import RateLimitConfigDict
91
91
  from .rate_limiting import RateLimiter
92
92
  from .retry_manager import RetryManager
93
- from .retry_manager import RetryPolicy
93
+ from .retry_manager import RetryPolicyDict
94
94
  from .retry_manager import RetryStrategy
95
- from .transport import HTTPAdapterMountConfig
96
- from .transport import HTTPAdapterRetryConfig
95
+ from .transport import HTTPAdapterMountConfigDict
96
+ from .transport import HTTPAdapterRetryConfigDict
97
97
  from .transport import build_http_adapter
98
98
  from .types import Headers
99
99
  from .types import Params
@@ -133,14 +133,14 @@ __all__ = [
133
133
  'paginate_with_client',
134
134
  'resolve_request',
135
135
  # Type Aliases
136
- 'CursorPaginationConfigMap',
136
+ 'CursorPaginationConfigDict',
137
137
  'Headers',
138
- 'HTTPAdapterMountConfig',
139
- 'HTTPAdapterRetryConfig',
140
- 'PagePaginationConfigMap',
141
- 'PaginationConfigMap',
138
+ 'HTTPAdapterMountConfigDict',
139
+ 'HTTPAdapterRetryConfigDict',
140
+ 'PagePaginationConfigDict',
141
+ 'PaginationConfigDict',
142
142
  'Params',
143
- 'RateLimitConfigMap',
144
- 'RetryPolicy',
143
+ 'RateLimitConfigDict',
144
+ 'RetryPolicyDict',
145
145
  'Url',
146
146
  ]
@@ -76,13 +76,16 @@ FORM_HEADERS = MappingProxyType(
76
76
  # SECTION: TYPED DICTS ====================================================== #
77
77
 
78
78
 
79
- class _TokenResponse(TypedDict):
79
+ class _TokenResponseDict(TypedDict):
80
80
  """Minimal shape of an OAuth token response body."""
81
81
 
82
82
  access_token: str
83
83
  expires_in: int | float
84
84
 
85
85
 
86
+ # SECTION: PROTOCOLS ======================================================== #
87
+
88
+
86
89
  class _TokenHttpClient(Protocol):
87
90
  """Protocol for objects that expose a ``post`` helper like ``requests``."""
88
91
 
@@ -284,7 +287,7 @@ class EndpointCredentialsBearer(AuthBase):
284
287
  def _parse_token_response(
285
288
  self,
286
289
  resp: Response,
287
- ) -> _TokenResponse:
290
+ ) -> _TokenResponseDict:
288
291
  """
289
292
  Validate the JSON token response and return a typed mapping.
290
293
 
@@ -295,7 +298,7 @@ class EndpointCredentialsBearer(AuthBase):
295
298
 
296
299
  Returns
297
300
  -------
298
- _TokenResponse
301
+ _TokenResponseDict
299
302
  Parsed token response mapping.
300
303
 
301
304
  Raises
@@ -335,15 +338,15 @@ class EndpointCredentialsBearer(AuthBase):
335
338
  except (TypeError, ValueError):
336
339
  ttl = float(DEFAULT_TOKEN_TTL)
337
340
 
338
- return _TokenResponse(access_token=token, expires_in=ttl)
341
+ return _TokenResponseDict(access_token=token, expires_in=ttl)
339
342
 
340
- def _request_token(self) -> _TokenResponse:
343
+ def _request_token(self) -> _TokenResponseDict:
341
344
  """
342
345
  Execute the OAuth2 token request and parse the response.
343
346
 
344
347
  Returns
345
348
  -------
346
- _TokenResponse
349
+ _TokenResponseDict
347
350
  Parsed token response mapping.
348
351
 
349
352
  Raises
@@ -36,9 +36,9 @@ from .pagination import PaginationConfig
36
36
  from .rate_limiting import RateLimitConfig
37
37
 
38
38
  if TYPE_CHECKING:
39
- from .types import ApiConfigMap
40
- from .types import ApiProfileConfigMap
41
- from .types import EndpointMap
39
+ from .types import ApiConfigDict
40
+ from .types import ApiProfileConfigDict
41
+ from .types import EndpointConfigDict
42
42
 
43
43
 
44
44
  # SECTION: EXPORTS ========================================================== #
@@ -264,7 +264,7 @@ class ApiProfileConfig:
264
264
  @overload
265
265
  def from_obj(
266
266
  cls,
267
- obj: ApiProfileConfigMap,
267
+ obj: ApiProfileConfigDict,
268
268
  ) -> Self: ...
269
269
 
270
270
  @classmethod
@@ -460,7 +460,7 @@ class ApiConfig:
460
460
  @overload
461
461
  def from_obj(
462
462
  cls,
463
- obj: ApiConfigMap,
463
+ obj: ApiConfigDict,
464
464
  ) -> Self: ...
465
465
 
466
466
  @classmethod
@@ -577,7 +577,7 @@ class EndpointConfig:
577
577
  @overload
578
578
  def from_obj(
579
579
  cls,
580
- obj: EndpointMap,
580
+ obj: EndpointConfigDict,
581
581
  ) -> Self: ...
582
582
 
583
583
  @classmethod
@@ -11,8 +11,8 @@ Notes
11
11
  -----
12
12
  - Retry-related types live in :mod:`etlplus.api.retry_manager`.
13
13
  - Pagination requires a ``PaginationConfig``; see
14
- :class:`PagePaginationConfigMap` and :class:`CursorPaginationConfigMap` for
15
- the accepted shapes.
14
+ :class:`PagePaginationConfigDict` and :class:`CursorPaginationConfigDict`
15
+ for the accepted shapes.
16
16
 
17
17
  Examples
18
18
  --------
@@ -65,14 +65,14 @@ from .errors import PaginationError
65
65
  from .pagination import PaginationClient
66
66
  from .pagination import PaginationInput
67
67
  from .pagination import Paginator
68
- from .rate_limiting import RateLimitConfigMap
68
+ from .rate_limiting import RateLimitConfigDict
69
69
  from .rate_limiting import RateLimiter
70
70
  from .rate_limiting import RateLimitOverrides
71
71
  from .request_manager import RequestManager
72
72
  from .retry_manager import RetryManager
73
- from .retry_manager import RetryPolicy
73
+ from .retry_manager import RetryPolicyDict
74
74
  from .retry_manager import RetryStrategy
75
- from .transport import HTTPAdapterMountConfig
75
+ from .transport import HTTPAdapterMountConfigDict
76
76
  from .types import RequestOptions
77
77
  from .types import Url
78
78
 
@@ -101,13 +101,13 @@ class EndpointClient:
101
101
  base_path : str | None, optional
102
102
  Optional base path prefix (``/v2``) prepended to all endpoint
103
103
  paths when building URLs.
104
- retry : RetryPolicy | None, optional
104
+ retry : RetryPolicyDict | None, optional
105
105
  Optional retry policy. When provided, failed requests matching
106
106
  ``retry_on`` statuses are retried with full jitter.
107
107
  retry_network_errors : bool, optional
108
108
  When ``True``, also retry on network errors (timeouts, connection
109
109
  resets). Defaults to ``False``.
110
- rate_limit : RateLimitConfigMap | None, optional
110
+ rate_limit : RateLimitConfigDict | None, optional
111
111
  Optional client-wide rate limit used to derive an inter-request
112
112
  delay when an explicit ``sleep_seconds`` isn't supplied.
113
113
  session : requests.Session | None, optional
@@ -115,7 +115,7 @@ class EndpointClient:
115
115
  session_factory : Callable[[], requests.Session] | None, optional
116
116
  Factory used to lazily create a session. Ignored if ``session`` is
117
117
  provided.
118
- session_adapters : Sequence[HTTPAdapterMountConfig] | None, optional
118
+ session_adapters : Sequence[HTTPAdapterMountConfigDict] | None, optional
119
119
  Adapter mount configuration(s) used to build a session lazily when
120
120
  neither ``session`` nor ``session_factory`` is supplied.
121
121
 
@@ -128,17 +128,17 @@ class EndpointClient:
128
128
  (``MappingProxyType``).
129
129
  base_path : str | None
130
130
  Optional base path prefix appended after ``base_url``.
131
- retry : RetryPolicy | None
131
+ retry : RetryPolicyDict | None
132
132
  Retry policy reference (may be ``None``).
133
133
  retry_network_errors : bool
134
134
  Whether network errors are retried in addition to HTTP statuses.
135
- rate_limit : RateLimitConfigMap | None
135
+ rate_limit : RateLimitConfigDict | None
136
136
  Client-wide rate limit configuration (may be ``None``).
137
137
  session : requests.Session | None
138
138
  Explicit HTTP session used for requests when provided.
139
139
  session_factory : Callable[[], requests.Session] | None
140
140
  Lazily invoked factory producing a session when needed.
141
- session_adapters : Sequence[HTTPAdapterMountConfig] | None
141
+ session_adapters : Sequence[HTTPAdapterMountConfigDict] | None
142
142
  Adapter mount configuration(s) for connection pooling / retries.
143
143
  DEFAULT_PAGE_PARAM : ClassVar[str]
144
144
  Default page parameter name.
@@ -212,10 +212,10 @@ class EndpointClient:
212
212
  base_path: str | None = None
213
213
 
214
214
  # Optional retry configuration (constructor parameter; object is frozen)
215
- retry: RetryPolicy | None = None
215
+ retry: RetryPolicyDict | None = None
216
216
  retry_network_errors: bool = False
217
217
  # Optional client-wide rate limit configuration
218
- rate_limit: RateLimitConfigMap | None = None
218
+ rate_limit: RateLimitConfigDict | None = None
219
219
 
220
220
  # Optional HTTP session or factory
221
221
  session: requests.Session | None = None
@@ -225,7 +225,7 @@ class EndpointClient:
225
225
  # and connection pooling. If provided and neither `session` nor
226
226
  # `session_factory` is supplied, a factory is synthesized to create a
227
227
  # Session and mount the configured adapters lazily.
228
- session_adapters: Sequence[HTTPAdapterMountConfig] | None = None
228
+ session_adapters: Sequence[HTTPAdapterMountConfigDict] | None = None
229
229
 
230
230
  # Internal: context-managed session and ownership flag.
231
231
  _request_manager: RequestManager = field(
@@ -857,7 +857,7 @@ class EndpointClient:
857
857
  @staticmethod
858
858
  def _resolve_sleep_seconds(
859
859
  explicit: float,
860
- rate_limit: RateLimitConfigMap | None,
860
+ rate_limit: RateLimitConfigDict | None,
861
861
  overrides: RateLimitOverrides = None,
862
862
  ) -> float:
863
863
  """
@@ -867,7 +867,7 @@ class EndpointClient:
867
867
  ----------
868
868
  explicit : float
869
869
  Explicit sleep seconds provided by the caller.
870
- rate_limit : RateLimitConfigMap | None
870
+ rate_limit : RateLimitConfigDict | None
871
871
  Client-wide rate limit configuration.
872
872
  overrides : RateLimitOverrides, optional
873
873
  Per-call overrides that take precedence over *rate_limit*.
@@ -30,7 +30,7 @@ from typing import Any
30
30
  import requests # type: ignore[import]
31
31
 
32
32
  if TYPE_CHECKING: # pragma: no cover - typing only
33
- from .retry_manager import RetryPolicy
33
+ from .retry_manager import RetryPolicyDict
34
34
 
35
35
 
36
36
  # SECTION: EXPORTS ========================================================== #
@@ -57,7 +57,7 @@ class ApiRequestError(requests.RequestException):
57
57
  Number of attempts performed (defaults to ``1``).
58
58
  retried : bool, optional
59
59
  Whether any retry attempts were made.
60
- retry_policy : RetryPolicy | None, optional
60
+ retry_policy : RetryPolicyDict | None, optional
61
61
  The retry policy in effect, if any.
62
62
  cause : Exception | None, optional
63
63
  Original underlying exception.
@@ -72,7 +72,7 @@ class ApiRequestError(requests.RequestException):
72
72
  Number of attempts performed.
73
73
  retried : bool
74
74
  Whether any retry attempts were made.
75
- retry_policy : RetryPolicy | None
75
+ retry_policy : RetryPolicyDict | None
76
76
  The retry policy in effect, if any.
77
77
  cause : Exception | None
78
78
  Original underlying exception.
@@ -97,7 +97,7 @@ class ApiRequestError(requests.RequestException):
97
97
  status: int | None = None
98
98
  attempts: int = 1
99
99
  retried: bool = False
100
- retry_policy: RetryPolicy | None = None
100
+ retry_policy: RetryPolicyDict | None = None
101
101
  cause: Exception | None = None
102
102
 
103
103
  # -- Magic Methods (Object Representation) -- #
@@ -20,10 +20,10 @@ Notes
20
20
  from __future__ import annotations
21
21
 
22
22
  from .client import PaginationClient
23
- from .config import CursorPaginationConfigMap
24
- from .config import PagePaginationConfigMap
23
+ from .config import CursorPaginationConfigDict
24
+ from .config import PagePaginationConfigDict
25
25
  from .config import PaginationConfig
26
- from .config import PaginationConfigMap
26
+ from .config import PaginationConfigDict
27
27
  from .config import PaginationInput
28
28
  from .config import PaginationType
29
29
  from .paginator import Paginator
@@ -40,8 +40,8 @@ __all__ = [
40
40
  # Enums
41
41
  'PaginationType',
42
42
  # Type Aliases
43
- 'CursorPaginationConfigMap',
44
- 'PagePaginationConfigMap',
43
+ 'CursorPaginationConfigDict',
44
+ 'PagePaginationConfigDict',
45
45
  'PaginationInput',
46
- 'PaginationConfigMap',
46
+ 'PaginationConfigDict',
47
47
  ]
@@ -8,7 +8,7 @@ by :mod:`etlplus.api.pagination`. It exposes:
8
8
 
9
9
  - :class:`PaginationType` – enumeration of supported pagination modes.
10
10
  - :class:`PaginationConfig` – normalized configuration container.
11
- - ``*PaginationConfigMap`` TypedDicts – loose, user-facing config mappings.
11
+ - ``*PaginationConfigDict`` TypedDicts – loose, user-facing config mappings.
12
12
 
13
13
  Notes
14
14
  -----
@@ -44,11 +44,11 @@ __all__ = [
44
44
  # Enums
45
45
  'PaginationType',
46
46
  # Type Aliases
47
- 'PaginationConfigMap',
47
+ 'PaginationConfigDict',
48
48
  'PaginationInput',
49
49
  # Typed Dicts
50
- 'CursorPaginationConfigMap',
51
- 'PagePaginationConfigMap',
50
+ 'CursorPaginationConfigDict',
51
+ 'PagePaginationConfigDict',
52
52
  ]
53
53
 
54
54
 
@@ -74,7 +74,7 @@ class PaginationType(CoercibleStrEnum):
74
74
  # SECTION: TYPED DICTS ====================================================== #
75
75
 
76
76
 
77
- class CursorPaginationConfigMap(TypedDict, total=False):
77
+ class CursorPaginationConfigDict(TypedDict, total=False):
78
78
  """
79
79
  Configuration mapping for cursor-based REST API response pagination.
80
80
 
@@ -131,7 +131,7 @@ class CursorPaginationConfigMap(TypedDict, total=False):
131
131
  limit_param: str
132
132
 
133
133
 
134
- class PagePaginationConfigMap(TypedDict, total=False):
134
+ class PagePaginationConfigDict(TypedDict, total=False):
135
135
  """
136
136
  Configuration mapping for page-based and offset-based REST API response
137
137
  pagination.
@@ -379,7 +379,7 @@ class PaginationConfig(BoundsWarningsMixin):
379
379
  @overload
380
380
  def from_obj(
381
381
  cls,
382
- obj: PaginationConfigMap,
382
+ obj: PaginationConfigDict,
383
383
  ) -> Self: ...
384
384
 
385
385
  @classmethod
@@ -429,12 +429,14 @@ class PaginationConfig(BoundsWarningsMixin):
429
429
  # SECTION: TYPE ALIASES ===================================================== #
430
430
 
431
431
 
432
- type PaginationConfigMap = PagePaginationConfigMap | CursorPaginationConfigMap
432
+ type PaginationConfigDict = (
433
+ PagePaginationConfigDict | CursorPaginationConfigDict
434
+ )
433
435
 
434
436
  # External callers may pass either a raw mapping-shaped config or an already
435
437
  # constructed PaginationConfig instance, or omit pagination entirely. Accept a
436
438
  # loose mapping here to reflect the runtime behavior while still providing
437
439
  # stronger TypedDict hints for common shapes.
438
440
  type PaginationInput = (
439
- PaginationConfigMap | PaginationConfig | StrAnyMap | None
441
+ PaginationConfigDict | PaginationConfig | StrAnyMap | None
440
442
  )
@@ -19,7 +19,7 @@ Notes
19
19
  from __future__ import annotations
20
20
 
21
21
  from .config import RateLimitConfig
22
- from .config import RateLimitConfigMap
22
+ from .config import RateLimitConfigDict
23
23
  from .config import RateLimitOverrides
24
24
  from .rate_limiter import RateLimiter
25
25
 
@@ -34,5 +34,5 @@ __all__ = [
34
34
  # Type Aliases
35
35
  'RateLimitOverrides',
36
36
  # Type Dicts
37
- 'RateLimitConfigMap',
37
+ 'RateLimitConfigDict',
38
38
  ]
@@ -41,7 +41,7 @@ __all__ = [
41
41
  # Type Aliases
42
42
  'RateLimitOverrides',
43
43
  # Typed Dicts
44
- 'RateLimitConfigMap',
44
+ 'RateLimitConfigDict',
45
45
  ]
46
46
 
47
47
 
@@ -50,9 +50,9 @@ __all__ = [
50
50
 
51
51
  def _coerce_rate_limit_map(
52
52
  rate_limit: StrAnyMap | RateLimitConfig | None,
53
- ) -> RateLimitConfigMap | None:
53
+ ) -> RateLimitConfigDict | None:
54
54
  """
55
- Normalize user inputs into a :class:`RateLimitConfigMap`.
55
+ Normalize user inputs into a :class:`RateLimitConfigDict`.
56
56
 
57
57
  This helper is the single entry point for converting loosely-typed
58
58
  configuration into the canonical mapping consumed by downstream
@@ -65,7 +65,7 @@ def _coerce_rate_limit_map(
65
65
 
66
66
  Returns
67
67
  -------
68
- RateLimitConfigMap | None
68
+ RateLimitConfigDict | None
69
69
  Normalized mapping, or ``None`` if input couldn't be parsed.
70
70
  """
71
71
  if rate_limit is None:
@@ -133,7 +133,7 @@ def _normalized_rate_values(
133
133
  # SECTION: TYPED DICTS ====================================================== #
134
134
 
135
135
 
136
- class RateLimitConfigMap(TypedDict, total=False):
136
+ class RateLimitConfigDict(TypedDict, total=False):
137
137
  """
138
138
  Configuration mapping for HTTP request rate limits.
139
139
 
@@ -149,7 +149,7 @@ class RateLimitConfigMap(TypedDict, total=False):
149
149
 
150
150
  Examples
151
151
  --------
152
- >>> rl: RateLimitConfigMap = {'max_per_sec': 4}
152
+ >>> rl: RateLimitConfigDict = {'max_per_sec': 4}
153
153
  ... # sleep ~= 0.25s between calls
154
154
  """
155
155
 
@@ -197,9 +197,9 @@ class RateLimitConfig(BoundsWarningsMixin):
197
197
 
198
198
  # -- Instance Methods -- #
199
199
 
200
- def as_mapping(self) -> RateLimitConfigMap:
200
+ def as_mapping(self) -> RateLimitConfigDict:
201
201
  """Return a normalized mapping consumable by rate-limit helpers."""
202
- cfg: RateLimitConfigMap = {}
202
+ cfg: RateLimitConfigDict = {}
203
203
  if (sleep := to_float(self.sleep_seconds)) is not None:
204
204
  cfg['sleep_seconds'] = sleep
205
205
  if (rate := to_float(self.max_per_sec)) is not None:
@@ -309,7 +309,7 @@ class RateLimitConfig(BoundsWarningsMixin):
309
309
  @overload
310
310
  def from_obj(
311
311
  cls,
312
- obj: RateLimitConfigMap,
312
+ obj: RateLimitConfigDict,
313
313
  ) -> Self: ...
314
314
 
315
315
  @classmethod
@@ -352,4 +352,4 @@ class RateLimitConfig(BoundsWarningsMixin):
352
352
  type RateLimitInput = StrAnyMap | RateLimitConfig | None
353
353
 
354
354
  # Optional mapping of rate-limit fields to override values.
355
- type RateLimitOverrides = RateLimitConfigMap | None
355
+ type RateLimitOverrides = RateLimitConfigDict | None
@@ -25,7 +25,7 @@ from typing import Self
25
25
  from ...utils import to_float
26
26
  from ...utils import to_positive_float
27
27
  from .config import RateLimitConfig
28
- from .config import RateLimitConfigMap
28
+ from .config import RateLimitConfigDict
29
29
  from .config import RateLimitInput
30
30
  from .config import RateLimitOverrides
31
31
 
@@ -38,7 +38,7 @@ __all__ = [
38
38
  # Data Classes
39
39
  'RateLimitConfig',
40
40
  # Typed Dicts
41
- 'RateLimitConfigMap',
41
+ 'RateLimitConfigDict',
42
42
  ]
43
43
 
44
44
 
@@ -28,7 +28,7 @@ from .errors import ApiAuthError
28
28
  from .errors import ApiRequestError
29
29
  from .retry_manager import RetryInput
30
30
  from .retry_manager import RetryManager
31
- from .transport import HTTPAdapterMountConfig
31
+ from .transport import HTTPAdapterMountConfigDict
32
32
  from .transport import build_session_with_adapters
33
33
 
34
34
  # SECTION: TYPE ALIASES ==================================================== #
@@ -68,7 +68,7 @@ class RequestManager:
68
68
  ``None``.
69
69
  retry_cap : float, optional
70
70
  Maximum backoff cap in seconds. Default is 30.0.
71
- session_adapters : Sequence[HTTPAdapterMountConfig] | None, optional
71
+ session_adapters : Sequence[HTTPAdapterMountConfigDict] | None, optional
72
72
  Adapter mount configurations used when lazily building a session via
73
73
  :func:`etlplus.api.transport.build_session_with_adapters`.
74
74
 
@@ -86,7 +86,7 @@ class RequestManager:
86
86
  Optional factory for creating sessions.
87
87
  retry_cap : float
88
88
  Maximum backoff cap in seconds for :class:`RetryManager` sleeps.
89
- session_adapters : Sequence[HTTPAdapterMountConfig] | None
89
+ session_adapters : Sequence[HTTPAdapterMountConfigDict] | None
90
90
  Adapter mount configurations used when lazily building a session.
91
91
  """
92
92
 
@@ -98,7 +98,7 @@ class RequestManager:
98
98
  session: requests.Session | None = None
99
99
  session_factory: Callable[[], requests.Session] | None = None
100
100
  retry_cap: float = 30.0
101
- session_adapters: Sequence[HTTPAdapterMountConfig] | None = None
101
+ session_adapters: Sequence[HTTPAdapterMountConfigDict] | None = None
102
102
 
103
103
  def __post_init__(self) -> None:
104
104
  if self.session_adapters:
@@ -47,7 +47,7 @@ __all__ = [
47
47
  'RetryStrategy',
48
48
  'RetryManager',
49
49
  # Typed Dicts
50
- 'RetryPolicy',
50
+ 'RetryPolicyDict',
51
51
  # Type Aliases
52
52
  'RetryInput',
53
53
  ]
@@ -69,7 +69,7 @@ DEFAULT_RETRY_STATUS_CODES: Final[frozenset[int]] = frozenset(
69
69
  # SECTION: TYPED DICTS ====================================================== #
70
70
 
71
71
 
72
- class RetryPolicy(TypedDict, total=False):
72
+ class RetryPolicyDict(TypedDict, total=False):
73
73
  """
74
74
  Optional retry policy for HTTP requests.
75
75
 
@@ -100,7 +100,7 @@ class RetryPolicy(TypedDict, total=False):
100
100
  # SECTION: TYPE ALIASES ===================================================== #
101
101
 
102
102
 
103
- type RetryInput = RetryPolicy | None
103
+ type RetryInput = RetryPolicyDict | None
104
104
 
105
105
 
106
106
  # SECTION: DATA CLASSES ===================================================== #
@@ -108,7 +108,7 @@ type RetryInput = RetryPolicy | None
108
108
 
109
109
  @dataclass(frozen=True, slots=True)
110
110
  class RetryStrategy:
111
- """Normalized retry settings derived from a :class:`RetryPolicy`."""
111
+ """Normalized retry settings derived from a :class:`RetryPolicyDict`."""
112
112
 
113
113
  # -- Attributes -- #
114
114
 
@@ -171,7 +171,7 @@ class RetryManager:
171
171
  Default HTTP status codes considered retryable.
172
172
  DEFAULT_CAP : ClassVar[float]
173
173
  Default maximum sleep seconds for jittered backoff.
174
- policy : RetryPolicy
174
+ policy : RetryPolicyDict
175
175
  Retry policy configuration.
176
176
  retry_network_errors : bool
177
177
  Whether to retry on network errors (timeouts, connection errors).
@@ -191,7 +191,7 @@ class RetryManager:
191
191
 
192
192
  # -- Instance Attributes-- #
193
193
 
194
- policy: RetryPolicy
194
+ policy: RetryPolicyDict
195
195
  retry_network_errors: bool = False
196
196
  cap: float = DEFAULT_CAP
197
197
  sleeper: Sleeper = time.sleep
@@ -41,8 +41,8 @@ from ..utils import to_positive_int
41
41
 
42
42
  __all__ = [
43
43
  # Classes
44
- 'HTTPAdapterMountConfig',
45
- 'HTTPAdapterRetryConfig',
44
+ 'HTTPAdapterMountConfigDict',
45
+ 'HTTPAdapterRetryConfigDict',
46
46
  # Functions
47
47
  'build_http_adapter',
48
48
  'build_session_with_adapters',
@@ -52,7 +52,7 @@ __all__ = [
52
52
  # SECTION: TYPED DICTS ====================================================== #
53
53
 
54
54
 
55
- class HTTPAdapterRetryConfig(TypedDict, total=False):
55
+ class HTTPAdapterRetryConfigDict(TypedDict, total=False):
56
56
  """
57
57
  Retry configuration for urllib3 ``Retry``.
58
58
 
@@ -89,7 +89,7 @@ class HTTPAdapterRetryConfig(TypedDict, total=False):
89
89
 
90
90
  Examples
91
91
  --------
92
- >>> retry_cfg: HTTPAdapterRetryConfig = {
92
+ >>> retry_cfg: HTTPAdapterRetryConfigDict = {
93
93
  ... 'total': 5,
94
94
  ... 'backoff_factor': 0.5,
95
95
  ... 'status_forcelist': [429, 503],
@@ -111,7 +111,7 @@ class HTTPAdapterRetryConfig(TypedDict, total=False):
111
111
  respect_retry_after_header: bool
112
112
 
113
113
 
114
- class HTTPAdapterMountConfig(TypedDict, total=False):
114
+ class HTTPAdapterMountConfigDict(TypedDict, total=False):
115
115
  """
116
116
  Configuration mapping for mounting an ``HTTPAdapter`` on a ``Session``.
117
117
 
@@ -132,13 +132,13 @@ class HTTPAdapterMountConfig(TypedDict, total=False):
132
132
  pool_block : bool
133
133
  Whether the pool should block for connections instead of creating new
134
134
  ones.
135
- max_retries : int | HTTPAdapterRetryConfig
135
+ max_retries : int | HTTPAdapterRetryConfigDict
136
136
  Retry configuration passed to ``HTTPAdapter`` (int) or converted to
137
137
  ``Retry``.
138
138
 
139
139
  Examples
140
140
  --------
141
- >>> adapter_cfg: HTTPAdapterMountConfig = {
141
+ >>> adapter_cfg: HTTPAdapterMountConfigDict = {
142
142
  ... 'prefix': 'https://',
143
143
  ... 'pool_connections': 10,
144
144
  ... 'pool_maxsize': 10,
@@ -156,7 +156,7 @@ class HTTPAdapterMountConfig(TypedDict, total=False):
156
156
  pool_connections: int
157
157
  pool_maxsize: int
158
158
  pool_block: bool
159
- max_retries: int | HTTPAdapterRetryConfig
159
+ max_retries: int | HTTPAdapterRetryConfigDict
160
160
 
161
161
 
162
162
  # SECTION: INTERNAL FUNCTIONS ============================================== #
@@ -306,7 +306,7 @@ def build_http_adapter(
306
306
 
307
307
 
308
308
  def build_session_with_adapters(
309
- adapters_cfg: Sequence[HTTPAdapterMountConfig],
309
+ adapters_cfg: Sequence[HTTPAdapterMountConfigDict],
310
310
  ) -> requests.Session:
311
311
  """
312
312
  Mount adapters described by *adapters_cfg* onto a new session.
@@ -316,7 +316,7 @@ def build_session_with_adapters(
316
316
 
317
317
  Parameters
318
318
  ----------
319
- adapters_cfg : Sequence[HTTPAdapterMountConfig]
319
+ adapters_cfg : Sequence[HTTPAdapterMountConfigDict]
320
320
  Configuration mappings describing the adapter prefix, pooling
321
321
  values, and retry policy for each mounted adapter.
322
322