analytics-toolkit 1.3.7.3__tar.gz → 1.3.7.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 (149) hide show
  1. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/PKG-INFO +92 -8
  2. analytics_toolkit-1.3.7.6/README.md +139 -0
  3. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit.egg-info/PKG-INFO +92 -8
  4. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/pyproject.toml +1 -1
  5. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_architecture.py +7 -3
  6. analytics_toolkit-1.3.7.3/README.md +0 -55
  7. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/LICENSE +0 -0
  8. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/__init__.py +0 -0
  9. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/ab_utils/__init__.py +0 -0
  10. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/ab_utils/api.py +0 -0
  11. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/ab_utils/bootstrap.py +0 -0
  12. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/ab_utils/constants.py +0 -0
  13. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/ab_utils/cuped.py +0 -0
  14. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/ab_utils/formatter.py +0 -0
  15. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/ab_utils/metrics.py +0 -0
  16. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/ab_utils/outliers.py +0 -0
  17. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/ab_utils/parallel.py +0 -0
  18. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/ab_utils/planning.py +0 -0
  19. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/ab_utils/ratio.py +0 -0
  20. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/ab_utils/rows.py +0 -0
  21. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/ab_utils/split.py +0 -0
  22. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/ab_utils/stats.py +0 -0
  23. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/ab_utils/validation.py +0 -0
  24. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/cli.py +0 -0
  25. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/dates/__init__.py +0 -0
  26. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/dates/dates.py +0 -0
  27. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/dates/functions.py +0 -0
  28. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/excel/__init__.py +0 -0
  29. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/excel/long_format.py +0 -0
  30. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/general/__init__.py +0 -0
  31. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/general/logging.py +0 -0
  32. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/general/read_file.py +0 -0
  33. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/__init__.py +0 -0
  34. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/_backend_adapters/__init__.py +0 -0
  35. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/_backend_adapters/base.py +0 -0
  36. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/_backend_adapters/clickhouse.py +0 -0
  37. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/_backend_adapters/dbapi.py +0 -0
  38. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/_backend_adapters/gp.py +0 -0
  39. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/_backend_adapters/registry.py +0 -0
  40. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/_backend_adapters/trino.py +0 -0
  41. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/_backend_adapters/utils.py +0 -0
  42. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/backend_adapters.py +0 -0
  43. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/clickhouse/__init__.py +0 -0
  44. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/clickhouse/lifecycle.py +0 -0
  45. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/clickhouse/options.py +0 -0
  46. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/clickhouse/wait.py +0 -0
  47. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/connection/__init__.py +0 -0
  48. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/connection/config.py +0 -0
  49. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/connection/errors.py +0 -0
  50. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/connection/get_sql_connection.py +0 -0
  51. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/connection/protocols.py +0 -0
  52. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/core/__init__.py +0 -0
  53. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/core/capabilities.py +0 -0
  54. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/core/identifiers.py +0 -0
  55. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/core/types.py +0 -0
  56. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/ddl/__init__.py +0 -0
  57. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/ddl/api.py +0 -0
  58. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/ddl/builders.py +0 -0
  59. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/ddl/clickhouse.py +0 -0
  60. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/ddl/extract_ddl.py +0 -0
  61. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/ddl/identifiers.py +0 -0
  62. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/ddl/models.py +0 -0
  63. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/ddl/schema.py +0 -0
  64. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/__init__.py +0 -0
  65. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/io/__init__.py +0 -0
  66. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/io/execute_read.py +0 -0
  67. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/io/execute_sql.py +0 -0
  68. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/io/gp_cancel.py +0 -0
  69. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/io/models.py +0 -0
  70. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/io/read_sql.py +0 -0
  71. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/load/__init__.py +0 -0
  72. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/load/load_df.py +0 -0
  73. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/load/load_sql_table.py +0 -0
  74. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/load/models.py +0 -0
  75. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/load/stage.py +0 -0
  76. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/table/__init__.py +0 -0
  77. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/table/_basic_ops.py +0 -0
  78. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/table/api.py +0 -0
  79. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/table/ch_create_table_as.py +0 -0
  80. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/table/ch_drop_table.py +0 -0
  81. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/table/ch_full_table_move.py +0 -0
  82. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/table/create_table_from_sql.py +0 -0
  83. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/table/maintenance.py +0 -0
  84. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/table/models.py +0 -0
  85. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/table/partitions.py +0 -0
  86. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/table/table_validation.py +0 -0
  87. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/table/write_modes.py +0 -0
  88. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/transfer/__init__.py +0 -0
  89. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/transfer/flow/__init__.py +0 -0
  90. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/transfer/flow/api.py +0 -0
  91. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/transfer/flow/attempt.py +0 -0
  92. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/transfer/flow/estimate.py +0 -0
  93. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/transfer/flow/finalize.py +0 -0
  94. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/transfer/flow/stage.py +0 -0
  95. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/transfer/io/__init__.py +0 -0
  96. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/transfer/io/source.py +0 -0
  97. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/transfer/runtime/__init__.py +0 -0
  98. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/transfer/runtime/models.py +0 -0
  99. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/transfer/runtime/retry.py +0 -0
  100. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/dml/transfer/schema.py +0 -0
  101. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/execution/__init__.py +0 -0
  102. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/execution/labels.py +0 -0
  103. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/execution/operation_runner.py +0 -0
  104. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/execution/plan_steps.py +0 -0
  105. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/execution/plans.py +0 -0
  106. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/execution/query_timing.py +0 -0
  107. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/metadata/__init__.py +0 -0
  108. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/metadata/show_tables.py +0 -0
  109. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/metadata/table_info.py +0 -0
  110. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/orchestration/__init__.py +0 -0
  111. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/orchestration/async_sql.py +0 -0
  112. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/orchestration/parallel_sql.py +0 -0
  113. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/orchestration/pipeline.py +0 -0
  114. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit/sql/orchestration/tasks.py +0 -0
  115. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit.egg-info/SOURCES.txt +0 -0
  116. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit.egg-info/dependency_links.txt +0 -0
  117. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit.egg-info/entry_points.txt +0 -0
  118. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit.egg-info/requires.txt +0 -0
  119. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/analytics_toolkit.egg-info/top_level.txt +0 -0
  120. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/setup.cfg +0 -0
  121. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_ab_utils_format.py +0 -0
  122. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_ab_utils_metrics.py +0 -0
  123. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_ab_utils_parallel.py +0 -0
  124. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_ab_utils_split.py +0 -0
  125. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_dates.py +0 -0
  126. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_excel_long_format.py +0 -0
  127. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_general_logging.py +0 -0
  128. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_general_read_file.py +0 -0
  129. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_async.py +0 -0
  130. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_backend_adapters.py +0 -0
  131. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_ch_create_table_as.py +0 -0
  132. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_ch_drop_table.py +0 -0
  133. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_ch_full_table_move.py +0 -0
  134. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_connection_config.py +0 -0
  135. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_create_table_from_sql.py +0 -0
  136. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_drop_many_partitions.py +0 -0
  137. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_execute_read.py +0 -0
  138. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_extract_ddl.py +0 -0
  139. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_gp_cancel.py +0 -0
  140. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_gp_create_partitions.py +0 -0
  141. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_improvements.py +0 -0
  142. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_load_table.py +0 -0
  143. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_parallel.py +0 -0
  144. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_retries.py +0 -0
  145. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_show_tables.py +0 -0
  146. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_transfer_clickhouse.py +0 -0
  147. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_transfer_row_batches.py +0 -0
  148. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_transfer_schema.py +0 -0
  149. {analytics_toolkit-1.3.7.3 → analytics_toolkit-1.3.7.6}/tests/test_sql_transfer_source_batches.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: analytics-toolkit
3
- Version: 1.3.7.3
3
+ Version: 1.3.7.6
4
4
  Summary: Shared Python utilities for SQL, Excel, and date helpers.
5
5
  Author: analytics_toolkit contributors
6
6
  License: MIT License
@@ -75,7 +75,7 @@ Python toolkit for AB-test analysis, SQL workflows, Excel reports, and date help
75
75
 
76
76
  [Documentation Overview](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/README.md)
77
77
 
78
- **Version:** `1.3.7.3`<br>
78
+ **Version:** `1.3.7.6`<br>
79
79
  **Depends:** Python (`>=3.8,<3.15`)<br>
80
80
  **Imports:** [clickhouse-connect](https://pypi.org/project/clickhouse-connect/) (`>=0.5.14,<1`), [lz4](https://pypi.org/project/lz4/) (`>=4.3.2,<5`), [numpy](https://pypi.org/project/numpy/) (`>=1.24.2,<2`), [openpyxl](https://pypi.org/project/openpyxl/) (`>=3.1.1,<4`), [orjson](https://pypi.org/project/orjson/) (`>=3.8.7,<4`), [pandas](https://pypi.org/project/pandas/) (`>=1.4.4,<3`), [psycopg2-binary](https://pypi.org/project/psycopg2-binary/) (`>=2.9.5,<3`), [python-dateutil](https://pypi.org/project/python-dateutil/) (`>=2.8.2,<3`), [pytz](https://pypi.org/project/pytz/) (`>=2022.7`), [requests](https://pypi.org/project/requests/) (`>=2.28.2,<3`), [scipy](https://pypi.org/project/scipy/) (`>=1.10.1,<2`), [sqlglot](https://pypi.org/project/sqlglot/) (`>=20,<31`), [sqlparse](https://pypi.org/project/sqlparse/) (`>=0.4.3,<1`), [tqdm](https://pypi.org/project/tqdm/) (`>=4.65.0,<5`), [trino](https://pypi.org/project/trino/) (`>=0.320,<1`), [zstandard](https://pypi.org/project/zstandard/) (`>=0.20.0,<1`)<br>
81
81
  **Suggests:** [apache-airflow](https://pypi.org/project/apache-airflow/) (`>=2.4,<3`; optional extra `airflow`)<br>
@@ -107,13 +107,97 @@ pip install git+https://github.com/Karapsin/analytics_toolkit.git
107
107
  - `analytics_toolkit.dates`: date and period helpers.
108
108
  - `analytics_toolkit.general`: shared logging and file path helpers.
109
109
 
110
- ## SQL Import Policy
110
+ ## SQL Workflows
111
111
 
112
- Supported SQL imports are `from analytics_toolkit import sql` or
113
- `import analytics_toolkit.sql as sql`. Deep imports under
114
- `analytics_toolkit.sql.*` are internal implementation details and may change;
115
- call SQL helpers through the `sql` facade, for example `sql.create_sql_table(...)`
116
- or `sql.transfer(...)`.
112
+ [All SQL functions](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/sql/functions/index.md)
113
+
114
+ [SQL module guide](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/sql/index.md)
115
+
116
+ `sql.transfer` streams query results between configured SQL backends, with
117
+ batching, retries, and table creation or replacement handled by one call.
118
+
119
+ ```python
120
+ from analytics_toolkit import sql
121
+
122
+ rows = sql.transfer(
123
+ from_db="trino",
124
+ to_db="gp",
125
+ from_sql="select user_id, order_id, amount from iceberg.analytics.orders",
126
+ to_table="sandbox.orders_copy",
127
+ write_mode="replace",
128
+ batch_size=50_000,
129
+ progress=True,
130
+ )
131
+ ```
132
+
133
+ - `sql.read` / `sql.read_sql`: run a query and return a dataframe.
134
+ - `sql.execute` / `sql.execute_sql`: run DDL or DML without returning a dataframe.
135
+ - `sql.execute_read`: run setup SQL and return the final result as a dataframe.
136
+ - `sql.load_df`: load a pandas dataframe into a configured backend table.
137
+ - `sql.transfer`: move rows from a source query to a target table across backends.
138
+
139
+ ## AB Metrics
140
+
141
+ [All AB functions](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/ab_utils/functions/index.md)
142
+
143
+ [AB utilities guide](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/ab_utils/index.md)
144
+
145
+ `compute_test_metrics` compares experiment groups across mean and ratio metrics,
146
+ with optional CUPED statistics and bootstrap multiple-comparison adjustment.
147
+
148
+ ```python
149
+ from analytics_toolkit.ab_utils import compute_test_metrics
150
+
151
+ result = compute_test_metrics(
152
+ experiment_df,
153
+ group="group_name",
154
+ control="control",
155
+ user_id="user_id",
156
+ ratio_metrics=[
157
+ {"name": "ctr", "numerator": "clicks", "denominator": "views"},
158
+ ],
159
+ pre_exp_metrics_df=pre_experiment_df,
160
+ multiple_comparisons_adjustment=True,
161
+ multiple_comparisons_adjustment_resamples=1000,
162
+ )
163
+ ```
164
+
165
+ Example output with CUPED and bootstrap columns enabled:
166
+
167
+ | metric_type | group_1 | group_2 | metric_name | n0 | n1 | outliers_cutoff | outliers_n_control | outliers_n_test | metric_control | metric_test | variance_control | variance_test | delta_abs | delta_relative | mde_abs | mde_relative | s.e. | p-value | s.e. CUPED | p-value CUPED | mde_abs CUPED | mde_relative CUPED | s.e. bootstrap | bootstrap_adj_p |
168
+ | --- | --- | --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
169
+ | mean | test | control | revenue | 10000 | 10050 | 250.0 | 3 | 4 | 12.40 | 13.10 | 45.20 | 47.80 | 0.70 | 0.056 | 0.42 | 0.034 | 0.15 | 0.003 | 0.11 | 0.001 | 0.31 | 0.025 | 0.14 | 0.012 |
170
+ | ratio | test | control | ctr | 10000 | 10050 | 1.0 | 0 | 0 | 0.082 | 0.087 | 0.0009 | 0.0010 | 0.005 | 0.061 | 0.003 | 0.037 | 0.001 | 0.008 | 0.001 | 0.006 | 0.002 | 0.024 | 0.001 | 0.019 |
171
+
172
+ ## Date Helpers
173
+
174
+ [All date functions](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/dates/functions/index.md)
175
+
176
+ [Date helpers guide](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/dates/index.md)
177
+
178
+ Date helpers cover reporting ranges, period boundaries, offsets, and stable
179
+ string formatting for SQL and filenames.
180
+
181
+ ```python
182
+ from analytics_toolkit.dates import add_days, first_day, gen_dates_list, last_day
183
+
184
+ report_days = gen_dates_list("2026-06-01", "2026-06-07")
185
+ # ["2026-06-01", "2026-06-02", "2026-06-03", "2026-06-04", "2026-06-05", "2026-06-06", "2026-06-07"]
186
+
187
+ month_start = first_day("2026-06-08", "month")
188
+ # "2026-06-01"
189
+
190
+ month_end = last_day("2026-06-08", "month")
191
+ # "2026-06-30"
192
+
193
+ next_run = add_days("2026-06-08", 1)
194
+ # "2026-06-09"
195
+ ```
196
+
197
+ - `gen_dates_list`: build daily, weekly, monthly, or quarterly sequences.
198
+ - `first_day` / `last_day`: get week, month, or quarter boundaries.
199
+ - `add_days`, `add_weeks`, `add_months`, `add_quarters`: shift dates.
200
+ - `sanitize_date`: convert a date to compact `YYYYMMDD` text.
117
201
 
118
202
  ## Documentation
119
203
 
@@ -0,0 +1,139 @@
1
+ # analytics_toolkit
2
+
3
+ Python toolkit for AB-test analysis, SQL workflows, Excel reports, and date helpers.
4
+
5
+ [Quick Start Guide](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/QUICK_START.md)
6
+
7
+ [Documentation Overview](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/README.md)
8
+
9
+ **Version:** `1.3.7.6`<br>
10
+ **Depends:** Python (`>=3.8,<3.15`)<br>
11
+ **Imports:** [clickhouse-connect](https://pypi.org/project/clickhouse-connect/) (`>=0.5.14,<1`), [lz4](https://pypi.org/project/lz4/) (`>=4.3.2,<5`), [numpy](https://pypi.org/project/numpy/) (`>=1.24.2,<2`), [openpyxl](https://pypi.org/project/openpyxl/) (`>=3.1.1,<4`), [orjson](https://pypi.org/project/orjson/) (`>=3.8.7,<4`), [pandas](https://pypi.org/project/pandas/) (`>=1.4.4,<3`), [psycopg2-binary](https://pypi.org/project/psycopg2-binary/) (`>=2.9.5,<3`), [python-dateutil](https://pypi.org/project/python-dateutil/) (`>=2.8.2,<3`), [pytz](https://pypi.org/project/pytz/) (`>=2022.7`), [requests](https://pypi.org/project/requests/) (`>=2.28.2,<3`), [scipy](https://pypi.org/project/scipy/) (`>=1.10.1,<2`), [sqlglot](https://pypi.org/project/sqlglot/) (`>=20,<31`), [sqlparse](https://pypi.org/project/sqlparse/) (`>=0.4.3,<1`), [tqdm](https://pypi.org/project/tqdm/) (`>=4.65.0,<5`), [trino](https://pypi.org/project/trino/) (`>=0.320,<1`), [zstandard](https://pypi.org/project/zstandard/) (`>=0.20.0,<1`)<br>
12
+ **Suggests:** [apache-airflow](https://pypi.org/project/apache-airflow/) (`>=2.4,<3`; optional extra `airflow`)<br>
13
+ **Install:** `pip install analytics-toolkit`<br>
14
+ **PyPI:** [pypi.org/project/analytics-toolkit](https://pypi.org/project/analytics-toolkit/)<br>
15
+ **License:** MIT<br>
16
+ **Source:** [github.com/Karapsin/analytics_toolkit](https://github.com/Karapsin/analytics_toolkit)<br>
17
+ **Issues:** [GitHub Issues](https://github.com/Karapsin/analytics_toolkit/issues)
18
+
19
+ ## Installation
20
+
21
+ From PyPI:
22
+
23
+ ```bash
24
+ pip install analytics-toolkit
25
+ ```
26
+
27
+ From GitHub:
28
+
29
+ ```bash
30
+ pip install git+https://github.com/Karapsin/analytics_toolkit.git
31
+ ```
32
+
33
+ ## Areas
34
+
35
+ - `analytics_toolkit.ab_utils`: AB-test metric comparison helpers.
36
+ - `analytics_toolkit.sql`: SQL read, execute, load, and transfer helpers.
37
+ - `analytics_toolkit.excel`: Excel report helpers for long-format dataframes.
38
+ - `analytics_toolkit.dates`: date and period helpers.
39
+ - `analytics_toolkit.general`: shared logging and file path helpers.
40
+
41
+ ## SQL Workflows
42
+
43
+ [All SQL functions](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/sql/functions/index.md)
44
+
45
+ [SQL module guide](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/sql/index.md)
46
+
47
+ `sql.transfer` streams query results between configured SQL backends, with
48
+ batching, retries, and table creation or replacement handled by one call.
49
+
50
+ ```python
51
+ from analytics_toolkit import sql
52
+
53
+ rows = sql.transfer(
54
+ from_db="trino",
55
+ to_db="gp",
56
+ from_sql="select user_id, order_id, amount from iceberg.analytics.orders",
57
+ to_table="sandbox.orders_copy",
58
+ write_mode="replace",
59
+ batch_size=50_000,
60
+ progress=True,
61
+ )
62
+ ```
63
+
64
+ - `sql.read` / `sql.read_sql`: run a query and return a dataframe.
65
+ - `sql.execute` / `sql.execute_sql`: run DDL or DML without returning a dataframe.
66
+ - `sql.execute_read`: run setup SQL and return the final result as a dataframe.
67
+ - `sql.load_df`: load a pandas dataframe into a configured backend table.
68
+ - `sql.transfer`: move rows from a source query to a target table across backends.
69
+
70
+ ## AB Metrics
71
+
72
+ [All AB functions](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/ab_utils/functions/index.md)
73
+
74
+ [AB utilities guide](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/ab_utils/index.md)
75
+
76
+ `compute_test_metrics` compares experiment groups across mean and ratio metrics,
77
+ with optional CUPED statistics and bootstrap multiple-comparison adjustment.
78
+
79
+ ```python
80
+ from analytics_toolkit.ab_utils import compute_test_metrics
81
+
82
+ result = compute_test_metrics(
83
+ experiment_df,
84
+ group="group_name",
85
+ control="control",
86
+ user_id="user_id",
87
+ ratio_metrics=[
88
+ {"name": "ctr", "numerator": "clicks", "denominator": "views"},
89
+ ],
90
+ pre_exp_metrics_df=pre_experiment_df,
91
+ multiple_comparisons_adjustment=True,
92
+ multiple_comparisons_adjustment_resamples=1000,
93
+ )
94
+ ```
95
+
96
+ Example output with CUPED and bootstrap columns enabled:
97
+
98
+ | metric_type | group_1 | group_2 | metric_name | n0 | n1 | outliers_cutoff | outliers_n_control | outliers_n_test | metric_control | metric_test | variance_control | variance_test | delta_abs | delta_relative | mde_abs | mde_relative | s.e. | p-value | s.e. CUPED | p-value CUPED | mde_abs CUPED | mde_relative CUPED | s.e. bootstrap | bootstrap_adj_p |
99
+ | --- | --- | --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
100
+ | mean | test | control | revenue | 10000 | 10050 | 250.0 | 3 | 4 | 12.40 | 13.10 | 45.20 | 47.80 | 0.70 | 0.056 | 0.42 | 0.034 | 0.15 | 0.003 | 0.11 | 0.001 | 0.31 | 0.025 | 0.14 | 0.012 |
101
+ | ratio | test | control | ctr | 10000 | 10050 | 1.0 | 0 | 0 | 0.082 | 0.087 | 0.0009 | 0.0010 | 0.005 | 0.061 | 0.003 | 0.037 | 0.001 | 0.008 | 0.001 | 0.006 | 0.002 | 0.024 | 0.001 | 0.019 |
102
+
103
+ ## Date Helpers
104
+
105
+ [All date functions](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/dates/functions/index.md)
106
+
107
+ [Date helpers guide](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/dates/index.md)
108
+
109
+ Date helpers cover reporting ranges, period boundaries, offsets, and stable
110
+ string formatting for SQL and filenames.
111
+
112
+ ```python
113
+ from analytics_toolkit.dates import add_days, first_day, gen_dates_list, last_day
114
+
115
+ report_days = gen_dates_list("2026-06-01", "2026-06-07")
116
+ # ["2026-06-01", "2026-06-02", "2026-06-03", "2026-06-04", "2026-06-05", "2026-06-06", "2026-06-07"]
117
+
118
+ month_start = first_day("2026-06-08", "month")
119
+ # "2026-06-01"
120
+
121
+ month_end = last_day("2026-06-08", "month")
122
+ # "2026-06-30"
123
+
124
+ next_run = add_days("2026-06-08", 1)
125
+ # "2026-06-09"
126
+ ```
127
+
128
+ - `gen_dates_list`: build daily, weekly, monthly, or quarterly sequences.
129
+ - `first_day` / `last_day`: get week, month, or quarter boundaries.
130
+ - `add_days`, `add_weeks`, `add_months`, `add_quarters`: shift dates.
131
+ - `sanitize_date`: convert a date to compact `YYYYMMDD` text.
132
+
133
+ ## Documentation
134
+
135
+ - [Documentation Overview](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/README.md)
136
+ - [Quick Start](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/QUICK_START.md)
137
+ - [Airflow SQL Manual](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/AIRFLOW_SQL_MANUAL.md)
138
+ - [Module documentation](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/README.md)
139
+ - [Changelog](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/CHANGELOG.md)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: analytics-toolkit
3
- Version: 1.3.7.3
3
+ Version: 1.3.7.6
4
4
  Summary: Shared Python utilities for SQL, Excel, and date helpers.
5
5
  Author: analytics_toolkit contributors
6
6
  License: MIT License
@@ -75,7 +75,7 @@ Python toolkit for AB-test analysis, SQL workflows, Excel reports, and date help
75
75
 
76
76
  [Documentation Overview](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/README.md)
77
77
 
78
- **Version:** `1.3.7.3`<br>
78
+ **Version:** `1.3.7.6`<br>
79
79
  **Depends:** Python (`>=3.8,<3.15`)<br>
80
80
  **Imports:** [clickhouse-connect](https://pypi.org/project/clickhouse-connect/) (`>=0.5.14,<1`), [lz4](https://pypi.org/project/lz4/) (`>=4.3.2,<5`), [numpy](https://pypi.org/project/numpy/) (`>=1.24.2,<2`), [openpyxl](https://pypi.org/project/openpyxl/) (`>=3.1.1,<4`), [orjson](https://pypi.org/project/orjson/) (`>=3.8.7,<4`), [pandas](https://pypi.org/project/pandas/) (`>=1.4.4,<3`), [psycopg2-binary](https://pypi.org/project/psycopg2-binary/) (`>=2.9.5,<3`), [python-dateutil](https://pypi.org/project/python-dateutil/) (`>=2.8.2,<3`), [pytz](https://pypi.org/project/pytz/) (`>=2022.7`), [requests](https://pypi.org/project/requests/) (`>=2.28.2,<3`), [scipy](https://pypi.org/project/scipy/) (`>=1.10.1,<2`), [sqlglot](https://pypi.org/project/sqlglot/) (`>=20,<31`), [sqlparse](https://pypi.org/project/sqlparse/) (`>=0.4.3,<1`), [tqdm](https://pypi.org/project/tqdm/) (`>=4.65.0,<5`), [trino](https://pypi.org/project/trino/) (`>=0.320,<1`), [zstandard](https://pypi.org/project/zstandard/) (`>=0.20.0,<1`)<br>
81
81
  **Suggests:** [apache-airflow](https://pypi.org/project/apache-airflow/) (`>=2.4,<3`; optional extra `airflow`)<br>
@@ -107,13 +107,97 @@ pip install git+https://github.com/Karapsin/analytics_toolkit.git
107
107
  - `analytics_toolkit.dates`: date and period helpers.
108
108
  - `analytics_toolkit.general`: shared logging and file path helpers.
109
109
 
110
- ## SQL Import Policy
110
+ ## SQL Workflows
111
111
 
112
- Supported SQL imports are `from analytics_toolkit import sql` or
113
- `import analytics_toolkit.sql as sql`. Deep imports under
114
- `analytics_toolkit.sql.*` are internal implementation details and may change;
115
- call SQL helpers through the `sql` facade, for example `sql.create_sql_table(...)`
116
- or `sql.transfer(...)`.
112
+ [All SQL functions](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/sql/functions/index.md)
113
+
114
+ [SQL module guide](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/sql/index.md)
115
+
116
+ `sql.transfer` streams query results between configured SQL backends, with
117
+ batching, retries, and table creation or replacement handled by one call.
118
+
119
+ ```python
120
+ from analytics_toolkit import sql
121
+
122
+ rows = sql.transfer(
123
+ from_db="trino",
124
+ to_db="gp",
125
+ from_sql="select user_id, order_id, amount from iceberg.analytics.orders",
126
+ to_table="sandbox.orders_copy",
127
+ write_mode="replace",
128
+ batch_size=50_000,
129
+ progress=True,
130
+ )
131
+ ```
132
+
133
+ - `sql.read` / `sql.read_sql`: run a query and return a dataframe.
134
+ - `sql.execute` / `sql.execute_sql`: run DDL or DML without returning a dataframe.
135
+ - `sql.execute_read`: run setup SQL and return the final result as a dataframe.
136
+ - `sql.load_df`: load a pandas dataframe into a configured backend table.
137
+ - `sql.transfer`: move rows from a source query to a target table across backends.
138
+
139
+ ## AB Metrics
140
+
141
+ [All AB functions](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/ab_utils/functions/index.md)
142
+
143
+ [AB utilities guide](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/ab_utils/index.md)
144
+
145
+ `compute_test_metrics` compares experiment groups across mean and ratio metrics,
146
+ with optional CUPED statistics and bootstrap multiple-comparison adjustment.
147
+
148
+ ```python
149
+ from analytics_toolkit.ab_utils import compute_test_metrics
150
+
151
+ result = compute_test_metrics(
152
+ experiment_df,
153
+ group="group_name",
154
+ control="control",
155
+ user_id="user_id",
156
+ ratio_metrics=[
157
+ {"name": "ctr", "numerator": "clicks", "denominator": "views"},
158
+ ],
159
+ pre_exp_metrics_df=pre_experiment_df,
160
+ multiple_comparisons_adjustment=True,
161
+ multiple_comparisons_adjustment_resamples=1000,
162
+ )
163
+ ```
164
+
165
+ Example output with CUPED and bootstrap columns enabled:
166
+
167
+ | metric_type | group_1 | group_2 | metric_name | n0 | n1 | outliers_cutoff | outliers_n_control | outliers_n_test | metric_control | metric_test | variance_control | variance_test | delta_abs | delta_relative | mde_abs | mde_relative | s.e. | p-value | s.e. CUPED | p-value CUPED | mde_abs CUPED | mde_relative CUPED | s.e. bootstrap | bootstrap_adj_p |
168
+ | --- | --- | --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
169
+ | mean | test | control | revenue | 10000 | 10050 | 250.0 | 3 | 4 | 12.40 | 13.10 | 45.20 | 47.80 | 0.70 | 0.056 | 0.42 | 0.034 | 0.15 | 0.003 | 0.11 | 0.001 | 0.31 | 0.025 | 0.14 | 0.012 |
170
+ | ratio | test | control | ctr | 10000 | 10050 | 1.0 | 0 | 0 | 0.082 | 0.087 | 0.0009 | 0.0010 | 0.005 | 0.061 | 0.003 | 0.037 | 0.001 | 0.008 | 0.001 | 0.006 | 0.002 | 0.024 | 0.001 | 0.019 |
171
+
172
+ ## Date Helpers
173
+
174
+ [All date functions](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/dates/functions/index.md)
175
+
176
+ [Date helpers guide](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/dates/index.md)
177
+
178
+ Date helpers cover reporting ranges, period boundaries, offsets, and stable
179
+ string formatting for SQL and filenames.
180
+
181
+ ```python
182
+ from analytics_toolkit.dates import add_days, first_day, gen_dates_list, last_day
183
+
184
+ report_days = gen_dates_list("2026-06-01", "2026-06-07")
185
+ # ["2026-06-01", "2026-06-02", "2026-06-03", "2026-06-04", "2026-06-05", "2026-06-06", "2026-06-07"]
186
+
187
+ month_start = first_day("2026-06-08", "month")
188
+ # "2026-06-01"
189
+
190
+ month_end = last_day("2026-06-08", "month")
191
+ # "2026-06-30"
192
+
193
+ next_run = add_days("2026-06-08", 1)
194
+ # "2026-06-09"
195
+ ```
196
+
197
+ - `gen_dates_list`: build daily, weekly, monthly, or quarterly sequences.
198
+ - `first_day` / `last_day`: get week, month, or quarter boundaries.
199
+ - `add_days`, `add_weeks`, `add_months`, `add_quarters`: shift dates.
200
+ - `sanitize_date`: convert a date to compact `YYYYMMDD` text.
117
201
 
118
202
  ## Documentation
119
203
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "analytics-toolkit"
7
- version = "1.3.7.3"
7
+ version = "1.3.7.6"
8
8
  description = "Shared Python utilities for SQL, Excel, and date helpers."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8,<3.15"
@@ -58,20 +58,24 @@ def test_removed_sql_deep_module_files_stay_removed() -> None:
58
58
 
59
59
 
60
60
  def test_sql_docs_state_facade_import_policy() -> None:
61
- docs = [
61
+ facade_import_docs = [
62
62
  PROJECT_ROOT / "README.md",
63
63
  PROJECT_ROOT / "docs" / "modules" / "sql" / "functions" / "index.md",
64
64
  PROJECT_ROOT / "docs" / "AIRFLOW_SQL_MANUAL.md",
65
65
  PROJECT_ROOT / "docs" / "modules" / "ab_utils" / "index.md",
66
66
  ]
67
+ deep_import_policy_docs = [
68
+ PROJECT_ROOT / "docs" / "modules" / "sql" / "functions" / "index.md",
69
+ PROJECT_ROOT / "docs" / "AIRFLOW_SQL_MANUAL.md",
70
+ ]
67
71
 
68
72
  assert not (PROJECT_ROOT / "docs" / "ANALYTICS_TOOLKIT_MANUAL.md").exists()
69
73
 
70
- for path in docs:
74
+ for path in facade_import_docs:
71
75
  text = path.read_text()
72
76
  assert "from analytics_toolkit import sql" in text
73
77
 
74
- for path in docs[:3]:
78
+ for path in deep_import_policy_docs:
75
79
  text = path.read_text()
76
80
  assert "Deep imports under" in text
77
81
 
@@ -1,55 +0,0 @@
1
- # analytics_toolkit
2
-
3
- Python toolkit for AB-test analysis, SQL workflows, Excel reports, and date helpers.
4
-
5
- [Quick Start Guide](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/QUICK_START.md)
6
-
7
- [Documentation Overview](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/README.md)
8
-
9
- **Version:** `1.3.7.3`<br>
10
- **Depends:** Python (`>=3.8,<3.15`)<br>
11
- **Imports:** [clickhouse-connect](https://pypi.org/project/clickhouse-connect/) (`>=0.5.14,<1`), [lz4](https://pypi.org/project/lz4/) (`>=4.3.2,<5`), [numpy](https://pypi.org/project/numpy/) (`>=1.24.2,<2`), [openpyxl](https://pypi.org/project/openpyxl/) (`>=3.1.1,<4`), [orjson](https://pypi.org/project/orjson/) (`>=3.8.7,<4`), [pandas](https://pypi.org/project/pandas/) (`>=1.4.4,<3`), [psycopg2-binary](https://pypi.org/project/psycopg2-binary/) (`>=2.9.5,<3`), [python-dateutil](https://pypi.org/project/python-dateutil/) (`>=2.8.2,<3`), [pytz](https://pypi.org/project/pytz/) (`>=2022.7`), [requests](https://pypi.org/project/requests/) (`>=2.28.2,<3`), [scipy](https://pypi.org/project/scipy/) (`>=1.10.1,<2`), [sqlglot](https://pypi.org/project/sqlglot/) (`>=20,<31`), [sqlparse](https://pypi.org/project/sqlparse/) (`>=0.4.3,<1`), [tqdm](https://pypi.org/project/tqdm/) (`>=4.65.0,<5`), [trino](https://pypi.org/project/trino/) (`>=0.320,<1`), [zstandard](https://pypi.org/project/zstandard/) (`>=0.20.0,<1`)<br>
12
- **Suggests:** [apache-airflow](https://pypi.org/project/apache-airflow/) (`>=2.4,<3`; optional extra `airflow`)<br>
13
- **Install:** `pip install analytics-toolkit`<br>
14
- **PyPI:** [pypi.org/project/analytics-toolkit](https://pypi.org/project/analytics-toolkit/)<br>
15
- **License:** MIT<br>
16
- **Source:** [github.com/Karapsin/analytics_toolkit](https://github.com/Karapsin/analytics_toolkit)<br>
17
- **Issues:** [GitHub Issues](https://github.com/Karapsin/analytics_toolkit/issues)
18
-
19
- ## Installation
20
-
21
- From PyPI:
22
-
23
- ```bash
24
- pip install analytics-toolkit
25
- ```
26
-
27
- From GitHub:
28
-
29
- ```bash
30
- pip install git+https://github.com/Karapsin/analytics_toolkit.git
31
- ```
32
-
33
- ## Areas
34
-
35
- - `analytics_toolkit.ab_utils`: AB-test metric comparison helpers.
36
- - `analytics_toolkit.sql`: SQL read, execute, load, and transfer helpers.
37
- - `analytics_toolkit.excel`: Excel report helpers for long-format dataframes.
38
- - `analytics_toolkit.dates`: date and period helpers.
39
- - `analytics_toolkit.general`: shared logging and file path helpers.
40
-
41
- ## SQL Import Policy
42
-
43
- Supported SQL imports are `from analytics_toolkit import sql` or
44
- `import analytics_toolkit.sql as sql`. Deep imports under
45
- `analytics_toolkit.sql.*` are internal implementation details and may change;
46
- call SQL helpers through the `sql` facade, for example `sql.create_sql_table(...)`
47
- or `sql.transfer(...)`.
48
-
49
- ## Documentation
50
-
51
- - [Documentation Overview](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/README.md)
52
- - [Quick Start](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/QUICK_START.md)
53
- - [Airflow SQL Manual](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/AIRFLOW_SQL_MANUAL.md)
54
- - [Module documentation](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/modules/README.md)
55
- - [Changelog](https://github.com/Karapsin/analytics_toolkit/blob/main/docs/CHANGELOG.md)