gapless-crypto-data 4.0.0__tar.gz → 4.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. gapless_crypto_data-4.0.2/.github/workflows/publish.yml +83 -0
  2. gapless_crypto_data-4.0.2/.github/workflows/release.yml +130 -0
  3. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/.gitignore +14 -3
  4. gapless_crypto_data-4.0.2/.releaserc.json +73 -0
  5. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/CHANGELOG.md +17 -50
  6. gapless_crypto_data-4.0.2/CLAUDE.md +70 -0
  7. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/DOCUMENTATION.md +10 -109
  8. gapless_crypto_data-4.0.2/Earthfile +130 -0
  9. gapless_crypto_data-4.0.2/PKG-INFO +217 -0
  10. gapless_crypto_data-4.0.2/README.md +180 -0
  11. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/cliff-release-notes.toml +1 -1
  12. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/cliff.toml +1 -1
  13. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/CURRENT_ARCHITECTURE_STATUS.yaml +55 -132
  14. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/README.md +0 -10
  15. gapless_crypto_data-4.0.0/docs/sdk-quality-standards.yaml → gapless_crypto_data-4.0.2/docs/SDK_QUALITY_STANDARDS.yaml +8 -6
  16. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/SSOT_DOCUMENTATION_ARCHITECTURE.yaml +2 -2
  17. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/architecture/DATA_FORMAT.md +5 -5
  18. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/architecture/OVERVIEW.md +11 -11
  19. gapless_crypto_data-4.0.2/docs/architecture/decisions/0001-repository-split-clickhouse.md +102 -0
  20. gapless_crypto_data-4.0.2/docs/architecture/decisions/0002-lychee-link-validation.md +200 -0
  21. gapless_crypto_data-4.0.2/docs/architecture/decisions/0003-repository-housekeeping.md +117 -0
  22. gapless_crypto_data-4.0.2/docs/architecture/decisions/0004-yaml-audit-redundancy-removal.md +114 -0
  23. gapless_crypto_data-4.0.2/docs/architecture/decisions/0005-earthly-release-pipeline.md +101 -0
  24. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/development/CLI_MIGRATION_GUIDE.md +7 -7
  25. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/development/COMMANDS.md +3 -3
  26. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/development/SETUP.md +4 -4
  27. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/guides/DATA_COLLECTION.md +5 -5
  28. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/guides/python-api.md +6 -6
  29. gapless_crypto_data-4.0.2/docs/plan/0001-v4.0.1-release/plan.md +199 -0
  30. gapless_crypto_data-4.0.2/docs/plan/0002-lychee-link-validation/plan.md +427 -0
  31. gapless_crypto_data-4.0.2/docs/plan/0003-repository-housekeeping/plan.md +384 -0
  32. gapless_crypto_data-4.0.2/docs/plan/0004-yaml-audit-redundancy-removal/plan.md +277 -0
  33. gapless_crypto_data-4.0.2/docs/plan/0005-earthly-release-pipeline/plan.md +269 -0
  34. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/validation/OVERVIEW.md +6 -6
  35. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/validation/QUERY_PATTERNS.md +2 -2
  36. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/validation/STORAGE.md +2 -2
  37. gapless_crypto_data-4.0.2/lychee.toml +17 -0
  38. gapless_crypto_data-4.0.2/package.json +27 -0
  39. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/pyproject.toml +17 -16
  40. gapless_crypto_data-4.0.2/scripts/publish-to-pypi.sh +152 -0
  41. gapless_crypto_data-4.0.2/scripts/test-pushover.sh +59 -0
  42. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/__init__.py +8 -7
  43. gapless_crypto_data-4.0.2/src/gapless_crypto_data/cli.py +625 -0
  44. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20240101-20240102_v2.10.0.csv +1 -1
  45. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20240101-20240102_v2.10.0.metadata.json +3 -3
  46. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240102_v2.10.0.csv +1 -1
  47. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240102_v2.10.0.metadata.json +3 -3
  48. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-5m_20230323-20230325_v2.10.0.csv +1 -1
  49. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-5m_20230323-20230325_v2.10.0.metadata.json +3 -3
  50. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20240101-20240101_v2.10.0.csv +1 -1
  51. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20240101-20240101_v2.10.0.metadata.json +3 -3
  52. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/validation/storage.py +3 -3
  53. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_api_edge_cases.py +1 -1
  54. gapless_crypto_data-4.0.2/tests/test_cli.py +409 -0
  55. gapless_crypto_data-4.0.2/tests/test_cli_integration.py +446 -0
  56. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_package.py +23 -0
  57. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/uv.lock +504 -81
  58. gapless_crypto_data-4.0.0/.cz.toml +0 -11
  59. gapless_crypto_data-4.0.0/.env +0 -7
  60. gapless_crypto_data-4.0.0/.github/workflows/ci.yml +0 -51
  61. gapless_crypto_data-4.0.0/.github/workflows/publish.yml +0 -104
  62. gapless_crypto_data-4.0.0/.github/workflows/release.yml +0 -56
  63. gapless_crypto_data-4.0.0/.lychee-results-verify.txt +0 -56
  64. gapless_crypto_data-4.0.0/.releaserc.json +0 -117
  65. gapless_crypto_data-4.0.0/AGENTS.md +0 -43
  66. gapless_crypto_data-4.0.0/CLAUDE.md +0 -81
  67. gapless_crypto_data-4.0.0/CONFORMITY_AUDIT_REPORT.md +0 -223
  68. gapless_crypto_data-4.0.0/PKG-INFO +0 -1221
  69. gapless_crypto_data-4.0.0/README.md +0 -1185
  70. gapless_crypto_data-4.0.0/RELEASE_NOTES.md +0 -13
  71. gapless_crypto_data-4.0.0/RELEASE_NOTES_SHORT.md +0 -17
  72. gapless_crypto_data-4.0.0/UV_BUILD_SUCCESS.md +0 -105
  73. gapless_crypto_data-4.0.0/dead_code_audit_plan.md +0 -120
  74. gapless_crypto_data-4.0.0/deployment/systemd/gapless-crypto-collector.service +0 -111
  75. gapless_crypto_data-4.0.0/docker-compose.yml +0 -82
  76. gapless_crypto_data-4.0.0/docs/CLICKHOUSE_MIGRATION.md +0 -414
  77. gapless_crypto_data-4.0.0/docs/DOCUMENTATION_INVENTORY.yaml +0 -508
  78. gapless_crypto_data-4.0.0/docs/MIGRATION_v3_to_v4.md +0 -551
  79. gapless_crypto_data-4.0.0/docs/api/mempool-pressure-probe.yaml +0 -338
  80. gapless_crypto_data-4.0.0/docs/api/v3.0.0-stabilization-plan.yaml +0 -425
  81. gapless_crypto_data-4.0.0/docs/api/v3.1.0-test-quality-plan.yaml +0 -201
  82. gapless_crypto_data-4.0.0/docs/architecture/SAMPLE_DATA_POLICY.md +0 -117
  83. gapless_crypto_data-4.0.0/docs/architecture/cross-package-feature-integration.yaml +0 -781
  84. gapless_crypto_data-4.0.0/docs/audit/mempool-probe-adversarial-audit.yaml +0 -721
  85. gapless_crypto_data-4.0.0/docs/decisions/0001-questdb-single-source-truth.md +0 -226
  86. gapless_crypto_data-4.0.0/docs/decisions/0002-e2e-validation-approach.md +0 -263
  87. gapless_crypto_data-4.0.0/docs/decisions/0003-questdb-schema-robustness-validation.md +0 -792
  88. gapless_crypto_data-4.0.0/docs/decisions/0004-futures-support-implementation.md +0 -268
  89. gapless_crypto_data-4.0.0/docs/decisions/0005-clickhouse-migration.md +0 -330
  90. gapless_crypto_data-4.0.0/docs/decisions/0006-v4-audit-remediation.md +0 -308
  91. gapless_crypto_data-4.0.0/docs/decisions/0007-release-validation-remediation.md +0 -317
  92. gapless_crypto_data-4.0.0/docs/decisions/0008-clickhouse-local-visualization-toolchain.md +0 -408
  93. gapless_crypto_data-4.0.0/docs/decisions/0009-port-reconfiguration-ch-ui-enablement.md +0 -291
  94. gapless_crypto_data-4.0.0/docs/decisions/0010-optional-development-tooling-chdig.md +0 -211
  95. gapless_crypto_data-4.0.0/docs/decisions/0011-pypi-package-fork-clickhouse.md +0 -278
  96. gapless_crypto_data-4.0.0/docs/decisions/0012-v4-documentation-alignment.md +0 -102
  97. gapless_crypto_data-4.0.0/docs/deployment/linux-docker-setup.md +0 -611
  98. gapless_crypto_data-4.0.0/docs/deployment/linux-native-setup.md +0 -587
  99. gapless_crypto_data-4.0.0/docs/deployment/macos-colima-setup.md +0 -432
  100. gapless_crypto_data-4.0.0/docs/deployment/python-uv-setup.md +0 -636
  101. gapless_crypto_data-4.0.0/docs/development/CHDIG_GUIDE.md +0 -451
  102. gapless_crypto_data-4.0.0/docs/development/CLICKHOUSE_CLIENT_GUIDE.md +0 -485
  103. gapless_crypto_data-4.0.0/docs/development/CLICKHOUSE_LOCAL_GUIDE.md +0 -433
  104. gapless_crypto_data-4.0.0/docs/development/CLICKHOUSE_PLAY_GUIDE.md +0 -225
  105. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.0.0.yaml +0 -141
  106. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.0.1.yaml +0 -160
  107. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.0.2.yaml +0 -178
  108. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.0.3.yaml +0 -208
  109. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.0.4.yaml +0 -262
  110. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.0.5.yaml +0 -302
  111. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.1.0.yaml +0 -385
  112. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.1.1.yaml +0 -296
  113. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.10.0.yaml +0 -254
  114. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.11.0.yaml +0 -278
  115. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.12.0.yaml +0 -325
  116. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.14.0.yaml +0 -381
  117. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.15.0.yaml +0 -507
  118. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.15.1.yaml +0 -142
  119. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.2.0.yaml +0 -75
  120. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.3.0.yaml +0 -139
  121. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.4.0.yaml +0 -142
  122. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.5.0.yaml +0 -228
  123. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.6.0.yaml +0 -164
  124. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.6.1.yaml +0 -284
  125. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.7.0.yaml +0 -157
  126. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.8.0.yaml +0 -405
  127. gapless_crypto_data-4.0.0/docs/milestones/MILESTONE_v2.9.0.yaml +0 -396
  128. gapless_crypto_data-4.0.0/docs/plan/0001-questdb-refactor/plan.yaml +0 -446
  129. gapless_crypto_data-4.0.0/docs/plan/0002-e2e-validation/plan.yaml +0 -418
  130. gapless_crypto_data-4.0.0/docs/plan/0003-questdb-schema-robustness/plan.yaml +0 -505
  131. gapless_crypto_data-4.0.0/docs/plan/0004-futures-support/plan.yaml +0 -409
  132. gapless_crypto_data-4.0.0/docs/plan/0005-clickhouse-migration/plan.yaml +0 -402
  133. gapless_crypto_data-4.0.0/docs/plan/0006-v4-audit-remediation/plan.yaml +0 -275
  134. gapless_crypto_data-4.0.0/docs/plan/0007-release-validation-remediation/plan.yaml +0 -243
  135. gapless_crypto_data-4.0.0/docs/plan/0008-clickhouse-local-visualization-toolchain/VALIDATION_REPORT.md +0 -470
  136. gapless_crypto_data-4.0.0/docs/plan/0008-clickhouse-local-visualization-toolchain/plan.yaml +0 -372
  137. gapless_crypto_data-4.0.0/docs/plan/0009-port-reconfiguration-ch-ui-enablement/plan.yaml +0 -248
  138. gapless_crypto_data-4.0.0/docs/plan/0010-optional-development-tooling-chdig/plan.yaml +0 -210
  139. gapless_crypto_data-4.0.0/docs/plan/0011-pypi-package-fork-clickhouse/plan.md +0 -661
  140. gapless_crypto_data-4.0.0/docs/plan/0012-v4-documentation-alignment/plan.md +0 -222
  141. gapless_crypto_data-4.0.0/docs/research/questdb-docker-image-analysis.md +0 -560
  142. gapless_crypto_data-4.0.0/scratch/vision-futures-explorer/EXPLORATION_REPORT.md +0 -352
  143. gapless_crypto_data-4.0.0/scratch/vision-futures-explorer/README.md +0 -142
  144. gapless_crypto_data-4.0.0/scratch/vision-futures-explorer/discovered_futures_symbols.json +0 -6045
  145. gapless_crypto_data-4.0.0/scratch/vision-futures-explorer/futures_discovery.py +0 -249
  146. gapless_crypto_data-4.0.0/scratch/vision-futures-explorer/historical_probe.py +0 -293
  147. gapless_crypto_data-4.0.0/scratch/vision-futures-explorer/output/binance_futures_um_BTCUSDT-1m_2024-01-15.csv +0 -1441
  148. gapless_crypto_data-4.0.0/scratch/vision-futures-explorer/output/binance_futures_um_BTCUSDT-1m_2024-01-15.csv.metadata.json +0 -13
  149. gapless_crypto_data-4.0.0/scratch/vision-futures-explorer/output/binance_futures_um_ETHUSDT-1m_2024-01-15.csv +0 -1441
  150. gapless_crypto_data-4.0.0/scratch/vision-futures-explorer/output/binance_futures_um_ETHUSDT-1m_2024-01-15.csv.metadata.json +0 -13
  151. gapless_crypto_data-4.0.0/scratch/vision-futures-explorer/output/integration_analysis.json +0 -32
  152. gapless_crypto_data-4.0.0/scratch/vision-futures-explorer/vision_futures_collector.py +0 -304
  153. gapless_crypto_data-4.0.0/scripts/publish-to-pypi.sh +0 -167
  154. gapless_crypto_data-4.0.0/scripts/validate-clickhouse-tools.sh +0 -161
  155. gapless_crypto_data-4.0.0/src/gapless_crypto_data/clickhouse/__init__.py +0 -17
  156. gapless_crypto_data-4.0.0/src/gapless_crypto_data/clickhouse/config.py +0 -115
  157. gapless_crypto_data-4.0.0/src/gapless_crypto_data/clickhouse/connection.py +0 -239
  158. gapless_crypto_data-4.0.0/src/gapless_crypto_data/clickhouse/schema.sql +0 -89
  159. gapless_crypto_data-4.0.0/src/gapless_crypto_data/clickhouse_query.py +0 -643
  160. gapless_crypto_data-4.0.0/src/gapless_crypto_data/collectors/clickhouse_bulk_loader.py +0 -440
  161. gapless_crypto_data-4.0.0/src/gapless_crypto_data/collectors/csv_format_detector.py +0 -123
  162. gapless_crypto_data-4.0.0/tmp/adr-plan-code-sync-verification.md +0 -402
  163. gapless_crypto_data-4.0.0/tmp/clickhouse-local-viz-research/ide-integrations/IDE_INTEGRATIONS_REPORT.md +0 -1149
  164. gapless_crypto_data-4.0.0/tmp/clickhouse_futures_validation.py +0 -176
  165. gapless_crypto_data-4.0.0/tmp/clickhouse_futures_validation_results.txt +0 -136
  166. gapless_crypto_data-4.0.0/tmp/clickhouse_quick_validation.py +0 -112
  167. gapless_crypto_data-4.0.0/tmp/clickhouse_validation.py +0 -199
  168. gapless_crypto_data-4.0.0/tmp/clickhouse_validation_results.txt +0 -146
  169. gapless_crypto_data-4.0.0/tmp/comprehensive_validation.py +0 -444
  170. gapless_crypto_data-4.0.0/tmp/comprehensive_validation_report.txt +0 -123
  171. gapless_crypto_data-4.0.0/tmp/full-validation/build-distribution/METADATA.txt +0 -1175
  172. gapless_crypto_data-4.0.0/tmp/full-validation/build-distribution/SUMMARY.txt +0 -73
  173. gapless_crypto_data-4.0.0/tmp/full-validation/build-distribution/VALIDATION_REPORT.md +0 -343
  174. gapless_crypto_data-4.0.0/tmp/full-validation/build-distribution/dependencies-check.txt +0 -1
  175. gapless_crypto_data-4.0.0/tmp/full-validation/build-distribution/test_import.py +0 -61
  176. gapless_crypto_data-4.0.0/tmp/full-validation/build-distribution/wheel-contents.txt +0 -101
  177. gapless_crypto_data-4.0.0/tmp/full-validation/code-quality/REPORT.md +0 -220
  178. gapless_crypto_data-4.0.0/tmp/full-validation/code-quality/mypy-analysis.md +0 -176
  179. gapless_crypto_data-4.0.0/tmp/full-validation/code-quality/mypy-check.txt +0 -141
  180. gapless_crypto_data-4.0.0/tmp/full-validation/code-quality/pre-commit.txt +0 -97
  181. gapless_crypto_data-4.0.0/tmp/full-validation/code-quality/ruff-check.txt +0 -84
  182. gapless_crypto_data-4.0.0/tmp/full-validation/code-quality/ruff-format.txt +0 -84
  183. gapless_crypto_data-4.0.0/tmp/full-validation/documentation/validation-report.md +0 -345
  184. gapless_crypto_data-4.0.0/tmp/full-validation/git-history/GIT_HISTORY_VALIDATION_REPORT.md +0 -443
  185. gapless_crypto_data-4.0.0/tmp/full-validation/git-history/adr-plan-sync-analysis.txt +0 -109
  186. gapless_crypto_data-4.0.0/tmp/full-validation/git-history/commit-details.txt +0 -316
  187. gapless_crypto_data-4.0.0/tmp/full-validation/git-history/commit-subjects.txt +0 -15
  188. gapless_crypto_data-4.0.0/tmp/full-validation/git-history/conventional-commits-analysis.txt +0 -161
  189. gapless_crypto_data-4.0.0/tmp/full-validation/git-history/semantic-release-analysis.txt +0 -158
  190. gapless_crypto_data-4.0.0/tmp/full-validation/test-coverage/SUMMARY.txt +0 -50
  191. gapless_crypto_data-4.0.0/tmp/full-validation/test-coverage/VALIDATION_REPORT.md +0 -264
  192. gapless_crypto_data-4.0.0/tmp/full-validation/test-coverage/failure-analysis.txt +0 -80
  193. gapless_crypto_data-4.0.0/tmp/full-validation/test-coverage/pytest-output.txt +0 -791
  194. gapless_crypto_data-4.0.0/tmp/full-validation/test-coverage/test-inventory.txt +0 -127
  195. gapless_crypto_data-4.0.0/tmp/pypi-package-split/agent1-publishing/INVESTIGATION_REPORT.md +0 -416
  196. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/.claude/settings.local.json +0 -0
  197. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/.gitattributes +0 -0
  198. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/.pre-commit-config.yaml +0 -0
  199. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/.python-version +0 -0
  200. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/.sessions/.gitignore +0 -0
  201. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/AUTHORS.md +0 -0
  202. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/CONTRIBUTING.md +0 -0
  203. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/LICENSE +0 -0
  204. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/MANIFEST.in +0 -0
  205. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/PROBE_USAGE_EXAMPLE.md +0 -0
  206. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/PYPI_PUBLISHING_CONFIGURATION.yaml +0 -0
  207. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/SSOT_PLANNING_SUMMARY.md +0 -0
  208. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/api/dual-parameter-enhancement.yaml +0 -0
  209. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/api/gapless-dataframe-enhancement.yaml +0 -0
  210. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/api/pruning-parquet-implementation.yaml +0 -0
  211. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/api/quick-start.md +0 -0
  212. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/audit/comprehensive-audit-findings.yaml +0 -0
  213. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/audit/comprehensive-audit-plan.yaml +0 -0
  214. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/development/PUBLISHING.md +0 -0
  215. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/diagrams/01-collection-pipeline.mmd +0 -0
  216. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/diagrams/02-gap-filling.mmd +0 -0
  217. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/diagrams/03-multi-symbol-collection.mmd +0 -0
  218. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/diagrams/04-download-caching.mmd +0 -0
  219. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/diagrams/05-validation-flow.mmd +0 -0
  220. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/diagrams/README.md +0 -0
  221. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/guides/pypi-documentation.md +0 -0
  222. {gapless_crypto_data-4.0.0/docs → gapless_crypto_data-4.0.2/docs/milestones/archive}/MILESTONE_v3.0.0.yaml +0 -0
  223. {gapless_crypto_data-4.0.0/docs → gapless_crypto_data-4.0.2/docs/milestones/archive}/MILESTONE_v3.1.0.yaml +0 -0
  224. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/docs/release-notes.md +0 -0
  225. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/examples/README.md +0 -0
  226. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/examples/advanced_api_examples.py +0 -0
  227. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/examples/basic_data_collection.py +0 -0
  228. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/examples/cli_usage_examples.sh +0 -0
  229. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/examples/complete_workflow.py +0 -0
  230. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/examples/gap_filling_example.py +0 -0
  231. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/examples/safe_data_collection.py +0 -0
  232. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/examples/simple_api_examples.py +0 -0
  233. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/llms.txt +0 -0
  234. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/__probe__.py +0 -0
  235. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/api.py +0 -0
  236. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/collectors/__init__.py +0 -0
  237. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/collectors/binance_public_data_collector.py +0 -0
  238. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/collectors/concurrent_collection_orchestrator.py +0 -0
  239. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/collectors/httpx_downloader.py +0 -0
  240. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/collectors/hybrid_url_generator.py +0 -0
  241. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/exceptions.py +0 -0
  242. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/gap_filling/__init__.py +0 -0
  243. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/gap_filling/safe_file_operations.py +0 -0
  244. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/gap_filling/universal_gap_filler.py +0 -0
  245. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/py.typed +0 -0
  246. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/resume/__init__.py +0 -0
  247. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/resume/intelligent_checkpointing.py +0 -0
  248. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20240101-20240102_v2.5.0.csv +0 -0
  249. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20240101-20240102_v2.5.0.metadata.json +0 -0
  250. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20250819-20250831_v2.5.0.csv +0 -0
  251. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20250819-20250831_v2.5.0.metadata.json +0 -0
  252. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20250921-20250921_v2.10.0.csv +0 -0
  253. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20250921-20250921_v2.10.0.metadata.json +0 -0
  254. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251002-20251002_v2.10.0.csv +0 -0
  255. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251002-20251002_v2.10.0.metadata.json +0 -0
  256. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251015-20251016_v2.10.0.csv +0 -0
  257. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251015-20251016_v2.10.0.metadata.json +0 -0
  258. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251016-20251016_v2.10.0.csv +0 -0
  259. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251016-20251016_v2.10.0.metadata.json +0 -0
  260. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251016-20251017_v2.10.0.csv +0 -0
  261. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251016-20251017_v2.10.0.metadata.json +0 -0
  262. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251017-20251017_v2.10.0.csv +0 -0
  263. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251017-20251017_v2.10.0.metadata.json +0 -0
  264. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251116-20251117_v2.10.0.csv +0 -0
  265. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251116-20251117_v2.10.0.metadata.json +0 -0
  266. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251117-20251117_v2.10.0.csv +0 -0
  267. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251117-20251117_v2.10.0.metadata.json +0 -0
  268. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240101_v2.5.0.csv +0 -0
  269. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240101_v2.5.0.metadata.json +0 -0
  270. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240102_v2.5.0.csv +0 -0
  271. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240102_v2.5.0.metadata.json +0 -0
  272. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20250918-20250921_v2.10.0.csv +0 -0
  273. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20250918-20250921_v2.10.0.metadata.json +0 -0
  274. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20251016-20251016_v2.10.0.csv +0 -0
  275. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20251016-20251016_v2.10.0.metadata.json +0 -0
  276. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20251017-20251017_v2.10.0.csv +0 -0
  277. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20251017-20251017_v2.10.0.metadata.json +0 -0
  278. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20251117-20251117_v2.10.0.csv +0 -0
  279. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20251117-20251117_v2.10.0.metadata.json +0 -0
  280. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-4h_20240101-20240101_v2.5.0.csv +0 -0
  281. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-4h_20240101-20240101_v2.5.0.metadata.json +0 -0
  282. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-5m_20230320-20230328_v2.10.0.csv +0 -0
  283. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-5m_20230320-20230328_v2.10.0.metadata.json +0 -0
  284. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1d_20250819-20250831_v2.5.0.csv +0 -0
  285. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1d_20250819-20250831_v2.5.0.metadata.json +0 -0
  286. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20240101-20240101_v2.5.0.csv +0 -0
  287. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20240101-20240101_v2.5.0.metadata.json +0 -0
  288. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251001-20251002_v2.10.0.csv +0 -0
  289. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251001-20251002_v2.10.0.metadata.json +0 -0
  290. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251014-20251016_v2.10.0.csv +0 -0
  291. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251014-20251016_v2.10.0.metadata.json +0 -0
  292. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251015-20251016_v2.10.0.csv +0 -0
  293. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251015-20251016_v2.10.0.metadata.json +0 -0
  294. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251015-20251017_v2.10.0.csv +0 -0
  295. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251015-20251017_v2.10.0.metadata.json +0 -0
  296. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251016-20251017_v2.10.0.csv +0 -0
  297. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251016-20251017_v2.10.0.metadata.json +0 -0
  298. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251115-20251117_v2.10.0.csv +0 -0
  299. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251115-20251117_v2.10.0.metadata.json +0 -0
  300. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251116-20251117_v2.10.0.csv +0 -0
  301. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251116-20251117_v2.10.0.metadata.json +0 -0
  302. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-4h_20240101-20240201_v2.5.0.csv +0 -0
  303. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-4h_20240101-20240201_v2.5.0.metadata.json +0 -0
  304. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-5m_20230320-20230328_v2.10.0.csv +0 -0
  305. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-5m_20230320-20230328_v2.10.0.metadata.json +0 -0
  306. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_SOLUSDT-1d_20250819-20250831_v2.5.0.csv +0 -0
  307. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_SOLUSDT-1d_20250819-20250831_v2.5.0.metadata.json +0 -0
  308. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_SOLUSDT-1h_20240101-20240101_v2.5.0.csv +0 -0
  309. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/sample_data/binance_spot_SOLUSDT-1h_20240101-20240101_v2.5.0.metadata.json +0 -0
  310. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/utils/__init__.py +0 -0
  311. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/utils/error_handling.py +0 -0
  312. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/utils/etag_cache.py +0 -0
  313. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/utils/timeframe_constants.py +0 -0
  314. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/utils/timestamp_format_analyzer.py +0 -0
  315. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/validation/__init__.py +0 -0
  316. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/validation/csv_validator.py +0 -0
  317. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/src/gapless_crypto_data/validation/models.py +0 -0
  318. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/__init__.py +0 -0
  319. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/conftest.py +0 -0
  320. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/fixtures/test_data/binance_spot_BTCUSDT-1h_20240101-20240101_v2.10.0.csv +0 -0
  321. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/fixtures/test_data/binance_spot_BTCUSDT-1h_20240101-20240101_v2.10.0.metadata.json +0 -0
  322. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/fixtures/test_data_large/binance_spot_BTCUSDT-1h_20140101-20240101_v2.10.0.csv +0 -0
  323. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/fixtures/test_data_large/binance_spot_BTCUSDT-1h_20140101-20240101_v2.10.0.metadata.json +0 -0
  324. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/fixtures/test_data_large/binance_spot_BTCUSDT-1h_20140101-20240101_v2.10.0_gapped.csv.bak +0 -0
  325. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_1s_1d_gap_filling.py +0 -0
  326. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_atomic_operations.py +0 -0
  327. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_binance_collector.py +0 -0
  328. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_binance_collector_advanced.py +0 -0
  329. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_concurrent_download.py +0 -0
  330. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_error_handling.py +0 -0
  331. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_etag_cache.py +0 -0
  332. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_gap_filler.py +0 -0
  333. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_gapless_validation_1d_2018_present.py +0 -0
  334. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_integration.py +0 -0
  335. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_monthly_to_daily_fallback.py +0 -0
  336. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_output_dir_dataframe_fix.py +0 -0
  337. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_probe_module.py +0 -0
  338. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_simple_api.py +0 -0
  339. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_timeframe_constants.py +0 -0
  340. {gapless_crypto_data-4.0.0 → gapless_crypto_data-4.0.2}/tests/test_validation_storage.py +0 -0
@@ -0,0 +1,83 @@
1
+ # Publish to PyPI on GitHub Release
2
+ # ADR-0005: No tests/linting - run locally before release
3
+ #
4
+ # Triggered by: GitHub Release publish event
5
+ # Purpose: Build and publish Python package to PyPI with Sigstore signing
6
+
7
+ name: Publish to PyPI
8
+
9
+ on:
10
+ release:
11
+ types: [published]
12
+
13
+ env:
14
+ UV_SYSTEM_PYTHON: 1
15
+
16
+ jobs:
17
+ build:
18
+ name: Build distribution packages
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - uses: actions/checkout@v4
22
+
23
+ - name: Set up Python
24
+ uses: actions/setup-python@v5
25
+ with:
26
+ python-version: '3.12'
27
+
28
+ - name: Install UV
29
+ run: curl -LsSf https://astral.sh/uv/install.sh | sh
30
+
31
+ - name: Add UV to PATH
32
+ run: echo "$HOME/.local/bin" >> $GITHUB_PATH
33
+
34
+ - name: Build package
35
+ run: |
36
+ uv venv
37
+ source .venv/bin/activate
38
+ uv build
39
+
40
+ - name: Store distribution packages
41
+ uses: actions/upload-artifact@v4
42
+ with:
43
+ name: python-package-distributions
44
+ path: dist/
45
+
46
+ publish-to-pypi:
47
+ name: Publish to PyPI
48
+ needs: [build]
49
+ runs-on: ubuntu-latest
50
+ environment: pypi
51
+ permissions:
52
+ id-token: write
53
+ contents: read
54
+ steps:
55
+ - name: Download distributions
56
+ uses: actions/download-artifact@v4
57
+ with:
58
+ name: python-package-distributions
59
+ path: dist/
60
+
61
+ - name: Publish to PyPI
62
+ uses: pypa/gh-action-pypi-publish@release/v1
63
+ with:
64
+ verbose: true
65
+
66
+ sign-artifacts:
67
+ name: Sign with Sigstore
68
+ needs: [publish-to-pypi]
69
+ runs-on: ubuntu-latest
70
+ permissions:
71
+ id-token: write
72
+ contents: write
73
+ steps:
74
+ - name: Download distributions
75
+ uses: actions/download-artifact@v4
76
+ with:
77
+ name: python-package-distributions
78
+ path: dist/
79
+
80
+ - name: Sign with Sigstore
81
+ uses: sigstore/gh-action-sigstore-python@v3.0.1
82
+ with:
83
+ inputs: ./dist/*.tar.gz ./dist/*.whl
@@ -0,0 +1,130 @@
1
+ # Create GitHub Release on Tag Push
2
+ # ADR-0005: Earthly-based release validation with Pushover alerts
3
+ #
4
+ # Triggered by: Tag push (v*.*.*)
5
+ # Purpose: Create GitHub Release, run Earthly validation, send Pushover notification
6
+ #
7
+ # NOTE: This is a BACKUP workflow. Primary release method is local:
8
+ # npm run release # Uses semantic-release locally (faster, instant feedback)
9
+
10
+ name: Create Release
11
+
12
+ on:
13
+ push:
14
+ tags:
15
+ - 'v*.*.*'
16
+
17
+ permissions:
18
+ contents: write
19
+
20
+ jobs:
21
+ release:
22
+ name: Create GitHub Release
23
+ runs-on: ubuntu-latest
24
+ outputs:
25
+ release_url: ${{ steps.create_release.outputs.url }}
26
+ version: ${{ steps.get_version.outputs.version }}
27
+ steps:
28
+ - name: Checkout code
29
+ uses: actions/checkout@v4
30
+ with:
31
+ fetch-depth: 0
32
+
33
+ - name: Extract version from tag
34
+ id: get_version
35
+ run: |
36
+ VERSION=${GITHUB_REF#refs/tags/}
37
+ echo "version=$VERSION" >> $GITHUB_OUTPUT
38
+
39
+ - name: Generate changelog
40
+ id: changelog
41
+ run: |
42
+ PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
43
+ if [ -n "$PREV_TAG" ]; then
44
+ CHANGES=$(git log --pretty=format:"- %s (%h)" $PREV_TAG..HEAD)
45
+ else
46
+ CHANGES="- Initial release"
47
+ fi
48
+ echo "changes<<EOF" >> $GITHUB_OUTPUT
49
+ echo "$CHANGES" >> $GITHUB_OUTPUT
50
+ echo "EOF" >> $GITHUB_OUTPUT
51
+
52
+ - name: Create GitHub Release
53
+ id: create_release
54
+ uses: softprops/action-gh-release@v2
55
+ with:
56
+ tag_name: ${{ steps.get_version.outputs.version }}
57
+ name: Release ${{ steps.get_version.outputs.version }}
58
+ body: |
59
+ # Release ${{ steps.get_version.outputs.version }}
60
+
61
+ ## Installation
62
+ ```bash
63
+ pip install gapless-crypto-data==${{ steps.get_version.outputs.version }}
64
+ # or
65
+ uv add gapless-crypto-data==${{ steps.get_version.outputs.version }}
66
+ ```
67
+
68
+ ## Changes
69
+ ${{ steps.changelog.outputs.changes }}
70
+
71
+ ## Links
72
+ - [PyPI Package](https://pypi.org/project/gapless-crypto-data/${{ steps.get_version.outputs.version }}/)
73
+ - [Documentation](https://github.com/terrylica/gapless-crypto-data#readme)
74
+ draft: false
75
+ prerelease: false
76
+ generate_release_notes: true
77
+
78
+ earthly-validate:
79
+ name: Earthly Release Validation
80
+ needs: [release]
81
+ runs-on: ubuntu-latest
82
+ steps:
83
+ - name: Checkout code
84
+ uses: actions/checkout@v4
85
+
86
+ - name: Setup Earthly
87
+ uses: earthly/actions-setup@v1
88
+ with:
89
+ version: v0.8.15
90
+
91
+ - name: Run Earthly build
92
+ run: earthly +build
93
+
94
+ - name: Generate release stats
95
+ run: |
96
+ earthly +release-stats \
97
+ --VERSION=${{ needs.release.outputs.version }} \
98
+ --RELEASE_URL=${{ needs.release.outputs.release_url }}
99
+
100
+ - name: Upload release stats
101
+ uses: actions/upload-artifact@v4
102
+ with:
103
+ name: release-stats
104
+ path: logs/release-stats.json
105
+
106
+ pushover-notify:
107
+ name: Send Pushover Notification
108
+ needs: [release, earthly-validate]
109
+ runs-on: ubuntu-latest
110
+ if: success()
111
+ steps:
112
+ - name: Send Pushover notification
113
+ env:
114
+ PUSHOVER_USER_KEY: ${{ secrets.PUSHOVER_USER_KEY }}
115
+ PUSHOVER_APP_TOKEN: ${{ secrets.PUSHOVER_APP_TOKEN }}
116
+ run: |
117
+ if [ -n "$PUSHOVER_USER_KEY" ] && [ -n "$PUSHOVER_APP_TOKEN" ]; then
118
+ curl -s \
119
+ --form-string "token=$PUSHOVER_APP_TOKEN" \
120
+ --form-string "user=$PUSHOVER_USER_KEY" \
121
+ --form-string "title=gapless-crypto-data Release" \
122
+ --form-string "message=Version ${{ needs.release.outputs.version }} released successfully" \
123
+ --form-string "url=${{ needs.release.outputs.release_url }}" \
124
+ --form-string "url_title=View Release" \
125
+ --form-string "priority=0" \
126
+ https://api.pushover.net/1/messages.json
127
+ echo "Pushover notification sent"
128
+ else
129
+ echo "Pushover credentials not configured, skipping notification"
130
+ fi
@@ -24,12 +24,23 @@ test-env/
24
24
  coverage.json
25
25
  htmlcov/
26
26
 
27
+ # Type checking and testing caches
28
+ .mypy_cache/
29
+ .pytest_cache/
30
+
27
31
  # .Sessions folder - never delete
28
32
  .sessions/
29
33
  !.sessions/.gitignore
30
34
 
31
- # Lychee link checker cache and results
35
+ # Lychee link checker output
32
36
  .lycheecache
33
- .lycheecache/
34
- .lychee-results.json
35
37
  .lychee-results.txt
38
+ .lychee-results.json
39
+ .lychee-results.md
40
+
41
+ # Node.js (semantic-release)
42
+ node_modules/
43
+ package-lock.json
44
+
45
+ # Earthly logs and artifacts
46
+ logs/
@@ -0,0 +1,73 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/semantic-release.json",
3
+ "branches": ["main"],
4
+ "tagFormat": "v${version}",
5
+ "plugins": [
6
+ [
7
+ "@semantic-release/commit-analyzer",
8
+ {
9
+ "preset": "conventionalcommits",
10
+ "releaseRules": [
11
+ { "type": "feat", "release": "minor" },
12
+ { "type": "fix", "release": "patch" },
13
+ { "type": "perf", "release": "patch" },
14
+ { "type": "refactor", "release": "patch" },
15
+ { "type": "docs", "release": false },
16
+ { "type": "style", "release": false },
17
+ { "type": "chore", "release": false },
18
+ { "type": "test", "release": false },
19
+ { "type": "ci", "release": false },
20
+ { "breaking": true, "release": "major" }
21
+ ]
22
+ }
23
+ ],
24
+ [
25
+ "@semantic-release/release-notes-generator",
26
+ {
27
+ "preset": "conventionalcommits",
28
+ "presetConfig": {
29
+ "types": [
30
+ { "type": "feat", "section": "Features" },
31
+ { "type": "fix", "section": "Bug Fixes" },
32
+ { "type": "perf", "section": "Performance" },
33
+ { "type": "refactor", "section": "Refactoring" },
34
+ { "type": "docs", "section": "Documentation", "hidden": true },
35
+ { "type": "chore", "section": "Maintenance", "hidden": true }
36
+ ]
37
+ }
38
+ }
39
+ ],
40
+ [
41
+ "@semantic-release/changelog",
42
+ {
43
+ "changelogFile": "CHANGELOG.md",
44
+ "changelogTitle": "# Changelog\n\nAll notable changes to gapless-crypto-data will be documented in this file."
45
+ }
46
+ ],
47
+ [
48
+ "@semantic-release/exec",
49
+ {
50
+ "prepareCmd": "sed -i.bak 's/^version = \".*\"/version = \"${nextRelease.version}\"/' pyproject.toml && rm -f pyproject.toml.bak",
51
+ "publishCmd": "echo 'Version ${nextRelease.version} prepared for release'"
52
+ }
53
+ ],
54
+ [
55
+ "@semantic-release/git",
56
+ {
57
+ "assets": ["CHANGELOG.md", "pyproject.toml"],
58
+ "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
59
+ }
60
+ ],
61
+ [
62
+ "@semantic-release/github",
63
+ {
64
+ "assets": [
65
+ { "path": "dist/*.whl", "label": "Python Wheel" },
66
+ { "path": "dist/*.tar.gz", "label": "Source Distribution" }
67
+ ],
68
+ "successComment": false,
69
+ "failComment": false
70
+ }
71
+ ]
72
+ ]
73
+ }
@@ -5,63 +5,30 @@ All notable changes to gapless-crypto-data will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [4.0.0] - 2025-11-17
8
+ ## [4.0.1] - 2025-01-22
9
9
 
10
10
  ### ⚠️ BREAKING CHANGES
11
11
 
12
- #### CLI Removed
12
+ - **cli**: CLI interface removed completely
13
+ - CLI entry point removed from package (no longer accessible via `gapless-crypto-data` command)
14
+ - All CLI functionality available through Python API
15
+ - See docs/development/CLI_MIGRATION_GUIDE.md for migration examples
16
+ - Python API remains unchanged and fully backward compatible
13
17
 
14
- The command-line interface has been completely removed in v4.0.0. All functionality is now available exclusively through the Python API.
15
-
16
- #### Upgrading from v3.x
17
-
18
- **IMPORTANT**: Clean uninstall required to avoid import errors.
19
-
20
- ```bash
21
- # Remove v3.x completely
22
- pip uninstall gapless-crypto-data
23
- rm -f ~/.local/bin/gapless-crypto-data # Remove old CLI entry point
24
-
25
- # Install v4.0.0
26
- pip install gapless-crypto-data==4.0.0
27
- ```
28
-
29
- **Migration**: See `docs/development/CLI_MIGRATION_GUIDE.md` for Python API equivalents.
30
-
31
- **Why the breaking change?**
32
-
33
- - CLI represented <5% of usage based on download statistics
34
- - Python API provides superior programmatic control and composability
35
- - Maintenance burden of dual interfaces slowed feature development
36
- - Industry trend: pandas, scikit-learn, requests all dropped CLIs for cleaner APIs
37
-
38
- ### Added
39
-
40
- - **ClickHouse database support**: Primary storage backend with 10x performance vs file-based workflows
41
- - **Enhanced Python API**: Comprehensive examples and simplified function signatures
42
- - **11-column microstructure format**: Order flow and liquidity metrics (trade_count, taker_buy_base_volume, etc.)
43
- - **Multi-agent validation workflows**: Parallel E2E validation and performance profiling methodologies
44
- - **Semantic versioning automation**: Conventional commits → automated changelog → GitHub releases
45
-
46
- ### Removed
47
-
48
- - **CLI interface**: Completely removed (see breaking changes above)
49
- - **QuestDB database support**: ClickHouse is now the sole database backend
50
- - **Legacy interval parameter**: Use `timeframe` parameter instead (5-year deprecation period ended)
51
-
52
- ### Fixed
18
+ ### 📚 Documentation
53
19
 
54
- - **Version consistency**: `__version__` attribute now correctly reflects 4.0.0 (ADR-0006)
55
- - **Documentation accuracy**: All version references updated to v4.0.0 across README, CLAUDE.md, docstrings
56
- - **Database references**: Corrected all references from QuestDB to ClickHouse
57
- - **Module docstring**: Package help text now shows v4.0.0 (ADR-0007)
58
- - **Test assertions**: Version checks updated to expect 4.0.0
20
+ - **cli**: Update all CLI references to reflect v4.0.0 removal
21
+ - Updated README.md with removal notice and migration guidance
22
+ - Updated CLI_MIGRATION_GUIDE.md to past tense
23
+ - Added clear pointer to Python API examples
59
24
 
60
- ### Changed
25
+ ### 📝 Notes
61
26
 
62
- - **Database architecture**: ClickHouse replaces QuestDB as primary storage (ADR-0005)
63
- - **Default behavior**: File-based workflows now optional, database-first recommended
64
- - **Migration guide**: Enhanced with expected test failures documentation
27
+ - **Version History**: v4.0.0 was published in error with ClickHouse references and has been yanked from PyPI
28
+ - v4.0.0 contained database-first implementation not appropriate for this repository
29
+ - ClickHouse implementation moved to separate repository (gapless-crypto-clickhouse)
30
+ - v4.0.1 is the correct file-based v4.x release
31
+ - See docs/architecture/decisions/0001-repository-split-clickhouse.md for details
65
32
 
66
33
  ## [3.3.0] - 2025-10-18
67
34
 
@@ -0,0 +1,70 @@
1
+ # CLAUDE.md
2
+
3
+ This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
+
5
+ ## Project Overview
6
+
7
+ Gapless Crypto Data is a high-performance cryptocurrency data collection tool providing authentic Binance data with zero-gap guarantee. 22x faster than API-only approaches via Binance Public Data Repository (CloudFront CDN).
8
+
9
+ **Core Capability**: Collect complete historical OHLCV data with microstructure metrics (11-column format) for 13 timeframes (1s to 1d) across 400+ trading pairs.
10
+
11
+ ## Quick Navigation
12
+
13
+ ### Architecture
14
+
15
+ - [Architecture Overview](./docs/architecture/OVERVIEW.md) - Core components, data flow, SLOs
16
+ - [Data Format Specification](./docs/architecture/DATA_FORMAT.md) - 11-column microstructure format
17
+
18
+ ### Usage Guides
19
+
20
+ - [Data Collection Guide](./docs/guides/DATA_COLLECTION.md) - CLI usage, dual data source strategy, troubleshooting
21
+ - [Python API Reference](./docs/guides/python-api.md) - Function-based and class-based APIs, complete examples
22
+
23
+ ### Validation System
24
+
25
+ - [Validation Overview](./docs/validation/OVERVIEW.md) - 5-layer validation pipeline, DuckDB persistence
26
+ - [ValidationStorage Specification](./docs/validation/STORAGE.md) - Database schema, API methods
27
+ - [AI Agent Query Patterns](./docs/validation/QUERY_PATTERNS.md) - Common patterns for validation analysis
28
+
29
+ ### Development
30
+
31
+ - [Development Setup](./docs/development/SETUP.md) - Environment setup, IDE configuration, troubleshooting
32
+ - [Development Commands](./docs/development/COMMANDS.md) - Testing, code quality, build, CI/CD
33
+ - [CLI Migration Guide](./docs/development/CLI_MIGRATION_GUIDE.md) - v2.x to v3.x migration
34
+ - [Publishing Guide](./docs/development/PUBLISHING.md) - PyPI publishing workflow
35
+
36
+ ## SDK Quality Standards
37
+
38
+ **Primary Use Case**: Programmatic API consumption (`import gapless_crypto_data`) by downstream packages and AI coding agents
39
+
40
+ **Specification**: [`docs/SDK_QUALITY_STANDARDS.yaml`](./docs/SDK_QUALITY_STANDARDS.yaml) - Machine-readable standards
41
+
42
+ **Key Abstractions**:
43
+
44
+ - **Type Safety**: PEP 561 compliance via py.typed marker
45
+ - **AI Discoverability**: **probe** module, llms.txt
46
+ - **Structured Exceptions**: Machine-parseable error context
47
+ - **Coverage Strategy**: SDK entry points (85%+) > Core engines (70%+)
48
+
49
+ ## Network Architecture
50
+
51
+ **CRITICAL - Empirically Validated (2025-01-19)**: DO NOT modify network implementation
52
+
53
+ - **Data Source**: AWS S3 + CloudFront CDN (400+ edge locations, 99.99% SLA)
54
+ - **Performance**: urllib is 2x faster than httpx for CDN downloads
55
+ - **NO connection pooling** (CloudFront uses different edge servers per request)
56
+ - **NO retry logic** (CloudFront handles failover, 0% failure rate in production)
57
+
58
+ **Single improvement worth making**: ETag-based caching for bandwidth optimization
59
+
60
+ ## Authentication
61
+
62
+ **No authentication required** for primary data collection (public Binance data repository). Gap filling uses public Binance API endpoints (rate-limited but no auth required).
63
+
64
+ ## Current Architecture
65
+
66
+ **Version**: v4.0.1 (validation v3.3.0+ with DuckDB persistence)
67
+
68
+ **Canonical Reference**: `docs/CURRENT_ARCHITECTURE_STATUS.yaml`
69
+
70
+ **Production-Ready**: Core collection, intelligent resume (JSON checkpointing), CSV and Parquet output formats, zero-gap guarantee via dual-source validation
@@ -2,7 +2,7 @@
2
2
 
3
3
  Complete documentation for gapless-crypto-data - ultra-fast cryptocurrency data collection from Binance's public repository with zero-gap guarantee.
4
4
 
5
- **Version**: 4.0.0 | **Type**: Cryptocurrency Data Collection | **Compatibility**: UV-native Python SDK
5
+ **Version**: 4.0.1 | **Type**: Cryptocurrency Data Collection | **Compatibility**: UV-native Python SDK
6
6
 
7
7
  ---
8
8
 
@@ -143,7 +143,7 @@ Complete documentation for gapless-crypto-data - ultra-fast cryptocurrency data
143
143
 
144
144
  ### SDK Quality Standards
145
145
 
146
- - [docs/sdk-quality-standards.yaml](docs/sdk-quality-standards.yaml) - SDK quality specification
146
+ - [docs/SDK_QUALITY_STANDARDS.yaml](docs/SDK_QUALITY_STANDARDS.yaml) - SDK quality specification
147
147
  - Type safety standards (PEP 561)
148
148
  - Exception hierarchy
149
149
  - AI discoverability
@@ -164,16 +164,6 @@ Complete documentation for gapless-crypto-data - ultra-fast cryptocurrency data
164
164
  - Parquet format implementation
165
165
  - Dependency pruning strategy
166
166
 
167
- ### Stabilization Plans
168
-
169
- - [docs/api/v3.0.0-stabilization-plan.yaml](docs/api/v3.0.0-stabilization-plan.yaml) - v3.0.0 stabilization
170
- - Production readiness roadmap
171
- - API stability guarantees
172
-
173
- - [docs/api/v3.1.0-test-quality-plan.yaml](docs/api/v3.1.0-test-quality-plan.yaml) - Test quality plan
174
- - Test coverage strategy
175
- - Quality metrics targets
176
-
177
167
  ---
178
168
 
179
169
  ## Development
@@ -206,32 +196,16 @@ Complete documentation for gapless-crypto-data - ultra-fast cryptocurrency data
206
196
  - Environment variables
207
197
  - Security configuration
208
198
 
209
- ### Build Documentation
210
-
211
- - [UV_BUILD_SUCCESS.md](UV_BUILD_SUCCESS.md) - UV build success
212
- - UV build system validation
213
- - Build configuration
214
-
215
- ### Milestone Planning
199
+ ### Archived Milestones
216
200
 
217
- - [docs/MILESTONE_v3.0.0.yaml](docs/MILESTONE_v3.0.0.yaml) - v3.0.0 milestone
218
- - Production stabilization goals
219
- - Implementation timeline
201
+ Historical milestone documentation archived for reference:
220
202
 
221
- - [docs/MILESTONE_v3.1.0.yaml](docs/MILESTONE_v3.1.0.yaml) - v3.1.0 milestone
222
- - Feature roadmap
223
- - Quality targets
203
+ - [docs/milestones/archive/](docs/milestones/archive/) - Archived v3.x milestones
204
+ - v3.0.0, v3.1.0 milestone specifications
205
+ - v2.x milestones removed (history preserved in git)
224
206
 
225
207
  ### Audit Documentation
226
208
 
227
- - [CONFORMITY_AUDIT_REPORT.md](CONFORMITY_AUDIT_REPORT.md) - Conformity audit
228
- - Code quality assessment
229
- - Standards compliance
230
-
231
- - [dead_code_audit_plan.md](dead_code_audit_plan.md) - Dead code audit
232
- - Dead code detection strategy
233
- - Cleanup plan
234
-
235
209
  - [docs/audit/comprehensive-audit-plan.yaml](docs/audit/comprehensive-audit-plan.yaml) - Audit plan
236
210
  - Comprehensive audit strategy
237
211
  - Quality metrics
@@ -246,72 +220,9 @@ Complete documentation for gapless-crypto-data - ultra-fast cryptocurrency data
246
220
 
247
221
  **Deep technical documentation and machine-readable specifications.**
248
222
 
249
- ### Historical Milestones (OpenAPI 3.1.1 Format)
250
-
251
- Complete version history with technical details, hard-learned lessons, and implementation rationale.
252
-
253
- **v2.15.x Series** (Latest v2 Branch)
254
-
255
- - [docs/milestones/MILESTONE_v2.15.1.yaml](docs/milestones/MILESTONE_v2.15.1.yaml) - Latest v2 series
256
- - [docs/milestones/MILESTONE_v2.15.0.yaml](docs/milestones/MILESTONE_v2.15.0.yaml) - AI agent integration
257
-
258
- **v2.14.x Series** (DataFrame Simplification)
259
-
260
- - [docs/milestones/MILESTONE_v2.14.0.yaml](docs/milestones/MILESTONE_v2.14.0.yaml) - DataFrame simplification
261
-
262
- **v2.12.x Series** (GaplessDataFrame)
263
-
264
- - [docs/milestones/MILESTONE_v2.12.0.yaml](docs/milestones/MILESTONE_v2.12.0.yaml) - GaplessDataFrame implementation
265
-
266
- **v2.11.x Series** (Datetime Enhancement)
267
-
268
- - [docs/milestones/MILESTONE_v2.11.0.yaml](docs/milestones/MILESTONE_v2.11.0.yaml) - Datetime index enhancement
269
-
270
- **v2.10.x Series** (Dependency Pruning)
271
-
272
- - [docs/milestones/MILESTONE_v2.10.0.yaml](docs/milestones/MILESTONE_v2.10.0.yaml) - Dependency pruning & Parquet
273
-
274
- **v2.9.x Series** (Performance Optimization)
275
-
276
- - [docs/milestones/MILESTONE_v2.9.0.yaml](docs/milestones/MILESTONE_v2.9.0.yaml) - Performance optimization
223
+ ### Historical Milestones
277
224
 
278
- **v2.8.x Series** (Gap Filling Enhancement)
279
-
280
- - [docs/milestones/MILESTONE_v2.8.0.yaml](docs/milestones/MILESTONE_v2.8.0.yaml) - Gap filling enhancement
281
-
282
- **v2.7.x Series** (Quality Improvements)
283
-
284
- - [docs/milestones/MILESTONE_v2.7.0.yaml](docs/milestones/MILESTONE_v2.7.0.yaml) - Quality improvements
285
-
286
- **v2.6.x Series** (CLI Enhancement)
287
-
288
- - [docs/milestones/MILESTONE_v2.6.1.yaml](docs/milestones/MILESTONE_v2.6.1.yaml) - Patch release
289
- - [docs/milestones/MILESTONE_v2.6.0.yaml](docs/milestones/MILESTONE_v2.6.0.yaml) - CLI enhancement
290
-
291
- **v2.5.x Series** (Validation & Checkpointing)
292
-
293
- - [docs/milestones/MILESTONE_v2.5.0.yaml](docs/milestones/MILESTONE_v2.5.0.yaml) - Validation & checkpointing
294
-
295
- **v2.4.x Series** (Gap Filling Integration)
296
-
297
- - [docs/milestones/MILESTONE_v2.4.0.yaml](docs/milestones/MILESTONE_v2.4.0.yaml) - Gap filling integration
298
-
299
- **v2.3.x Series** (Metadata Enhancement)
300
-
301
- - [docs/milestones/MILESTONE_v2.3.0.yaml](docs/milestones/MILESTONE_v2.3.0.yaml) - Metadata enhancement
302
-
303
- **v2.2.x Series** (Timestamp Format Support)
304
-
305
- - [docs/milestones/MILESTONE_v2.2.0.yaml](docs/milestones/MILESTONE_v2.2.0.yaml) - Timestamp format support
306
-
307
- **v2.1.x Series** (UTC Timezone Fix)
308
-
309
- - [docs/milestones/MILESTONE_v2.1.0.yaml](docs/milestones/MILESTONE_v2.1.0.yaml) - UTC timezone fix
310
-
311
- **v2.0.x Series** (Multi-Symbol Support)
312
-
313
- - [docs/milestones/MILESTONE_v2.0.1.yaml](docs/milestones/MILESTONE_v2.0.1.yaml) - Patch release
314
- - [docs/milestones/MILESTONE_v2.0.0.yaml](docs/milestones/MILESTONE_v2.0.0.yaml) - Multi-symbol support
225
+ v2.x milestone files have been removed (history preserved in git). See [CHANGELOG.md](CHANGELOG.md) for complete version history.
315
226
 
316
227
  ---
317
228
 
@@ -330,16 +241,6 @@ Complete version history with technical details, hard-learned lessons, and imple
330
241
  - Documentation-specific changes
331
242
  - Structural improvements
332
243
 
333
- ### Release Notes
334
-
335
- - [RELEASE_NOTES.md](RELEASE_NOTES.md) - Detailed release notes
336
- - Version-specific features
337
- - Migration guides
338
-
339
- - [RELEASE_NOTES_SHORT.md](RELEASE_NOTES_SHORT.md) - Short release notes
340
- - Quick version summaries
341
- - Key highlights only
342
-
343
244
  ---
344
245
 
345
246
  ## Documentation Statistics
@@ -387,4 +288,4 @@ Complete version history with technical details, hard-learned lessons, and imple
387
288
 
388
289
  ---
389
290
 
390
- **Last Updated**: 2025-10-18 (v3.2.0)
291
+ **Last Updated**: 2025-11-24 (v4.0.1)