gapless-crypto-data 2.5.0__tar.gz → 2.6.0__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 (144) hide show
  1. gapless_crypto_data-2.6.0/.gapless_checkpoints/progress_report_20250918_024058_d544b2de.json +36 -0
  2. gapless_crypto_data-2.6.0/.gapless_checkpoints/progress_report_20250918_024100_6302c48d.json +37 -0
  3. gapless_crypto_data-2.6.0/.gapless_checkpoints/progress_report_20250918_024101_b880e45d.json +43 -0
  4. gapless_crypto_data-2.6.0/.gapless_checkpoints/progress_report_20250918_024104_8950cece.json +36 -0
  5. gapless_crypto_data-2.6.0/.gapless_checkpoints/progress_report_20250918_024110_7356f614.json +36 -0
  6. gapless_crypto_data-2.6.0/.gapless_checkpoints/session_20250918_024058_d544b2de.json +22 -0
  7. gapless_crypto_data-2.6.0/.gapless_checkpoints/session_20250918_024100_6302c48d.json +23 -0
  8. gapless_crypto_data-2.6.0/.gapless_checkpoints/session_20250918_024101_b880e45d.json +29 -0
  9. gapless_crypto_data-2.6.0/.gapless_checkpoints/session_20250918_024104_8950cece.json +22 -0
  10. gapless_crypto_data-2.6.0/.gapless_checkpoints/session_20250918_024110_7356f614.json +22 -0
  11. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.github/workflows/publish.yml +3 -6
  12. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/PKG-INFO +1 -1
  13. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/docs/CURRENT_ARCHITECTURE_STATUS.yaml +14 -6
  14. gapless_crypto_data-2.6.0/docs/MILESTONE_v2.6.0.yaml +164 -0
  15. gapless_crypto_data-2.6.0/docs/PYPI_PUBLISHING_CONFIGURATION.yaml +95 -0
  16. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/pyproject.toml +1 -1
  17. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/__init__.py +1 -1
  18. gapless_crypto_data-2.6.0/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240101_v2.5.0.csv +3 -0
  19. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240102_v2.5.0.csv +1 -1
  20. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240102_v2.5.0.metadata.json +2 -2
  21. gapless_crypto_data-2.6.0/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-4h_20240101-20240101_v2.5.0.csv +3 -0
  22. gapless_crypto_data-2.6.0/src/gapless_crypto_data/sample_data/binance_spot_SOLUSDT-1h_20240101-20240101_v2.5.0.csv +3 -0
  23. gapless_crypto_data-2.6.0/test_data/binance_spot_BTCUSDT-1h_20240101-20240101_v2.5.0.csv +3 -0
  24. gapless_crypto_data-2.6.0/test_data_large/binance_spot_BTCUSDT-1h_20140101-20240101_v2.5.0.csv +3 -0
  25. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/uv.lock +1 -1
  26. gapless_crypto_data-2.5.0/.claude/settings.local.json +0 -19
  27. gapless_crypto_data-2.5.0/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240101_v2.5.0.csv +0 -35
  28. gapless_crypto_data-2.5.0/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-4h_20240101-20240101_v2.5.0.csv +0 -17
  29. gapless_crypto_data-2.5.0/src/gapless_crypto_data/sample_data/binance_spot_SOLUSDT-1h_20240101-20240101_v2.5.0.csv +0 -35
  30. gapless_crypto_data-2.5.0/test_data/binance_spot_BTCUSDT-1h_20240101-20240101_v2.5.0.csv +0 -35
  31. gapless_crypto_data-2.5.0/test_data_large/binance_spot_BTCUSDT-1h_20140101-20240101_v2.5.0.csv +0 -55872
  32. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/joblib_cache/.gitignore +0 -0
  33. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_183058_36e7d2ec.json +0 -0
  34. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_183100_7e130f98.json +0 -0
  35. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_183101_515b4690.json +0 -0
  36. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_183103_828c36f1.json +0 -0
  37. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_183117_9d842ca2.json +0 -0
  38. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_183118_35b71e32.json +0 -0
  39. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_183120_e201f120.json +0 -0
  40. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_183121_7aa0a4fd.json +0 -0
  41. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_183841_63564a52.json +0 -0
  42. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_183843_01458e87.json +0 -0
  43. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_183844_30f0e3c0.json +0 -0
  44. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_183846_8c1e44b4.json +0 -0
  45. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_184500_9b6f812c.json +0 -0
  46. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_184502_ae48d84a.json +0 -0
  47. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_184503_b094245f.json +0 -0
  48. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_184505_665fb523.json +0 -0
  49. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_184510_fe5d92fa.json +0 -0
  50. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_185913_7e391e5f.json +0 -0
  51. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_185915_9eeeaea3.json +0 -0
  52. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_185917_315392bf.json +0 -0
  53. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_185918_82d9bb0d.json +0 -0
  54. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_190357_002f8cec.json +0 -0
  55. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_190358_be23058d.json +0 -0
  56. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_190359_c676ca87.json +0 -0
  57. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_190401_ccacb147.json +0 -0
  58. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/progress_report_20250917_190406_d23113c8.json +0 -0
  59. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_183058_36e7d2ec.json +0 -0
  60. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_183100_7e130f98.json +0 -0
  61. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_183101_515b4690.json +0 -0
  62. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_183103_828c36f1.json +0 -0
  63. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_183117_9d842ca2.json +0 -0
  64. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_183118_35b71e32.json +0 -0
  65. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_183120_e201f120.json +0 -0
  66. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_183121_7aa0a4fd.json +0 -0
  67. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_183841_63564a52.json +0 -0
  68. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_183843_01458e87.json +0 -0
  69. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_183844_30f0e3c0.json +0 -0
  70. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_183846_8c1e44b4.json +0 -0
  71. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_184500_9b6f812c.json +0 -0
  72. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_184502_ae48d84a.json +0 -0
  73. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_184503_b094245f.json +0 -0
  74. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_184505_665fb523.json +0 -0
  75. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_184510_fe5d92fa.json +0 -0
  76. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_185913_7e391e5f.json +0 -0
  77. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_185915_9eeeaea3.json +0 -0
  78. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_185917_315392bf.json +0 -0
  79. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_185918_82d9bb0d.json +0 -0
  80. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_190357_002f8cec.json +0 -0
  81. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_190358_be23058d.json +0 -0
  82. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_190359_c676ca87.json +0 -0
  83. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_190401_ccacb147.json +0 -0
  84. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gapless_checkpoints/session_20250917_190406_d23113c8.json +0 -0
  85. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gitattributes +0 -0
  86. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.github/workflows/ci-cd.yml +0 -0
  87. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.gitignore +0 -0
  88. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.pre-commit-config.yaml +0 -0
  89. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/.python-version +0 -0
  90. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/CHANGELOG.md +0 -0
  91. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/CLAUDE.md +0 -0
  92. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/LICENSE +0 -0
  93. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/README.md +0 -0
  94. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/RELEASE_NOTES.md +0 -0
  95. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/docs/MILESTONE_v2.5.0.yaml +0 -0
  96. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/docs/PUBLISHING.md +0 -0
  97. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/docs/archive/MILESTONE_v2.0.0.yaml +0 -0
  98. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/docs/archive/MILESTONE_v2.0.1.yaml +0 -0
  99. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/docs/archive/MILESTONE_v2.0.2.yaml +0 -0
  100. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/docs/archive/MILESTONE_v2.0.3.yaml +0 -0
  101. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/docs/archive/MILESTONE_v2.0.4.yaml +0 -0
  102. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/docs/archive/MILESTONE_v2.0.5.yaml +0 -0
  103. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/docs/archive/MILESTONE_v2.1.0.yaml +0 -0
  104. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/docs/archive/MILESTONE_v2.1.1.yaml +0 -0
  105. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/docs/archive/MILESTONE_v2.2.0.yaml +0 -0
  106. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/docs/archive/MILESTONE_v2.3.0.yaml +0 -0
  107. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/docs/archive/MILESTONE_v2.4.0.yaml +0 -0
  108. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/examples/README.md +0 -0
  109. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/examples/basic_data_collection.py +0 -0
  110. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/examples/cli_usage_examples.sh +0 -0
  111. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/examples/complete_workflow.py +0 -0
  112. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/examples/gap_filling_example.py +0 -0
  113. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/examples/safe_data_collection.py +0 -0
  114. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/cli.py +0 -0
  115. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/collectors/__init__.py +0 -0
  116. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/collectors/binance_public_data_collector.py +0 -0
  117. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/gap_filling/__init__.py +0 -0
  118. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/gap_filling/safe_file_operations.py +0 -0
  119. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/gap_filling/universal_gap_filler.py +0 -0
  120. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/regression/__init__.py +0 -0
  121. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/regression/regression_detector.py +0 -0
  122. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/resume/__init__.py +0 -0
  123. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/resume/intelligent_checkpointing.py +0 -0
  124. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240101_v2.5.0.metadata.json +0 -0
  125. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-4h_20240101-20240101_v2.5.0.metadata.json +0 -0
  126. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/sample_data/binance_spot_SOLUSDT-1h_20240101-20240101_v2.5.0.metadata.json +0 -0
  127. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/streaming/__init__.py +0 -0
  128. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/streaming/memory_streaming.py +0 -0
  129. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/utils/__init__.py +0 -0
  130. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/src/gapless_crypto_data/utils/error_handling.py +0 -0
  131. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/test_data/binance_spot_BTCUSDT-1h_20240101-20240101_v2.5.0.metadata.json +0 -0
  132. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/test_data_large/binance_spot_BTCUSDT-1h_20140101-20240101_v2.5.0.metadata.json +0 -0
  133. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/test_data_large/binance_spot_BTCUSDT-1h_20140101-20240101_v2.5.0_gapped.csv.bak +0 -0
  134. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/tests/__init__.py +0 -0
  135. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/tests/test_atomic_operations.py +0 -0
  136. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/tests/test_binance_collector.py +0 -0
  137. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/tests/test_cli.py +0 -0
  138. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/tests/test_cli_integration.py +0 -0
  139. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/tests/test_gap_filler.py +0 -0
  140. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/tests/test_integration.py +0 -0
  141. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/tests/test_output_dir_dataframe_fix.py +0 -0
  142. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/tests/test_package.py +0 -0
  143. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/tests/test_regression.py +0 -0
  144. {gapless_crypto_data-2.5.0 → gapless_crypto_data-2.6.0}/tests/test_streaming.py +0 -0
@@ -0,0 +1,36 @@
1
+ {
2
+ "progress_summary": {
3
+ "session_id": "20250918_024058_d544b2de",
4
+ "completed_symbols": 2,
5
+ "symbols_in_progress": 0,
6
+ "total_datasets": 2,
7
+ "last_updated": "2025-09-18T02:40:59.566663",
8
+ "errors": 0
9
+ },
10
+ "detailed_progress": {
11
+ "session_id": "20250918_024058_d544b2de",
12
+ "created_at": "2025-09-18T02:40:58.193211",
13
+ "last_updated": "2025-09-18T02:40:59.566663",
14
+ "symbols_completed": [
15
+ "BTCUSDT",
16
+ "ETHUSDT"
17
+ ],
18
+ "symbols_in_progress": {},
19
+ "total_datasets_collected": 2,
20
+ "collection_parameters": {
21
+ "start_date": "2024-01-01",
22
+ "end_date": "2024-01-01",
23
+ "output_dir": "/tmp/tmp9usf4gmq",
24
+ "timeframes": [
25
+ "1h"
26
+ ]
27
+ },
28
+ "errors": [],
29
+ "current_symbol": "ETHUSDT",
30
+ "completed_symbol": "ETHUSDT"
31
+ },
32
+ "cache_info": {
33
+ "cache_dir": "/home/runner/work/gapless-crypto-data/gapless-crypto-data/.gapless_checkpoints",
34
+ "cache_size_mb": 0.04127788543701172
35
+ }
36
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "progress_summary": {
3
+ "session_id": "20250918_024100_6302c48d",
4
+ "completed_symbols": 3,
5
+ "symbols_in_progress": 0,
6
+ "total_datasets": 3,
7
+ "last_updated": "2025-09-18T02:41:01.478270",
8
+ "errors": 0
9
+ },
10
+ "detailed_progress": {
11
+ "session_id": "20250918_024100_6302c48d",
12
+ "created_at": "2025-09-18T02:41:00.044526",
13
+ "last_updated": "2025-09-18T02:41:01.478270",
14
+ "symbols_completed": [
15
+ "BTCUSDT",
16
+ "ETHUSDT",
17
+ "SOLUSDT"
18
+ ],
19
+ "symbols_in_progress": {},
20
+ "total_datasets_collected": 3,
21
+ "collection_parameters": {
22
+ "start_date": "2024-01-01",
23
+ "end_date": "2024-01-01",
24
+ "output_dir": "/tmp/tmpsqk4fxvn",
25
+ "timeframes": [
26
+ "1h"
27
+ ]
28
+ },
29
+ "errors": [],
30
+ "current_symbol": "SOLUSDT",
31
+ "completed_symbol": "SOLUSDT"
32
+ },
33
+ "cache_info": {
34
+ "cache_dir": "/home/runner/work/gapless-crypto-data/gapless-crypto-data/.gapless_checkpoints",
35
+ "cache_size_mb": 0.04270362854003906
36
+ }
37
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "progress_summary": {
3
+ "session_id": "20250918_024101_b880e45d",
4
+ "completed_symbols": 2,
5
+ "symbols_in_progress": 0,
6
+ "total_datasets": 2,
7
+ "last_updated": "2025-09-18T02:41:03.744405",
8
+ "errors": 1
9
+ },
10
+ "detailed_progress": {
11
+ "session_id": "20250918_024101_b880e45d",
12
+ "created_at": "2025-09-18T02:41:01.976849",
13
+ "last_updated": "2025-09-18T02:41:03.744405",
14
+ "symbols_completed": [
15
+ "BTCUSDT",
16
+ "ETHUSDT"
17
+ ],
18
+ "symbols_in_progress": {},
19
+ "total_datasets_collected": 2,
20
+ "collection_parameters": {
21
+ "start_date": "2024-01-01",
22
+ "end_date": "2024-01-01",
23
+ "output_dir": "/tmp/tmphxjbqx85",
24
+ "timeframes": [
25
+ "1h"
26
+ ]
27
+ },
28
+ "errors": [
29
+ {
30
+ "symbol": "INVALIDSYMBOL",
31
+ "error": "Collection returned no results",
32
+ "timestamp": "2025-09-18T02:41:03.264368"
33
+ }
34
+ ],
35
+ "current_symbol": "ETHUSDT",
36
+ "completed_symbol": "ETHUSDT",
37
+ "failed_symbol": "INVALIDSYMBOL"
38
+ },
39
+ "cache_info": {
40
+ "cache_dir": "/home/runner/work/gapless-crypto-data/gapless-crypto-data/.gapless_checkpoints",
41
+ "cache_size_mb": 0.04430389404296875
42
+ }
43
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "progress_summary": {
3
+ "session_id": "20250918_024104_8950cece",
4
+ "completed_symbols": 2,
5
+ "symbols_in_progress": 0,
6
+ "total_datasets": 2,
7
+ "last_updated": "2025-09-18T02:41:05.200815",
8
+ "errors": 0
9
+ },
10
+ "detailed_progress": {
11
+ "session_id": "20250918_024104_8950cece",
12
+ "created_at": "2025-09-18T02:41:04.219378",
13
+ "last_updated": "2025-09-18T02:41:05.200815",
14
+ "symbols_completed": [
15
+ "BTCUSDT",
16
+ "ETHUSDT"
17
+ ],
18
+ "symbols_in_progress": {},
19
+ "total_datasets_collected": 2,
20
+ "collection_parameters": {
21
+ "start_date": "2024-01-01",
22
+ "end_date": "2024-01-01",
23
+ "output_dir": "/tmp/tmp5s7nnfcm",
24
+ "timeframes": [
25
+ "1h"
26
+ ]
27
+ },
28
+ "errors": [],
29
+ "current_symbol": "ETHUSDT",
30
+ "completed_symbol": "ETHUSDT"
31
+ },
32
+ "cache_info": {
33
+ "cache_dir": "/home/runner/work/gapless-crypto-data/gapless-crypto-data/.gapless_checkpoints",
34
+ "cache_size_mb": 0.04590129852294922
35
+ }
36
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "progress_summary": {
3
+ "session_id": "20250918_024110_7356f614",
4
+ "completed_symbols": 2,
5
+ "symbols_in_progress": 0,
6
+ "total_datasets": 2,
7
+ "last_updated": "2025-09-18T02:41:11.600558",
8
+ "errors": 0
9
+ },
10
+ "detailed_progress": {
11
+ "session_id": "20250918_024110_7356f614",
12
+ "created_at": "2025-09-18T02:41:10.532089",
13
+ "last_updated": "2025-09-18T02:41:11.600558",
14
+ "symbols_completed": [
15
+ "BTCUSDT",
16
+ "ETHUSDT"
17
+ ],
18
+ "symbols_in_progress": {},
19
+ "total_datasets_collected": 2,
20
+ "collection_parameters": {
21
+ "start_date": "2024-01-01",
22
+ "end_date": "2024-01-01",
23
+ "output_dir": "/tmp/tmp82yh6ce7",
24
+ "timeframes": [
25
+ "1h"
26
+ ]
27
+ },
28
+ "errors": [],
29
+ "current_symbol": "ETHUSDT",
30
+ "completed_symbol": "ETHUSDT"
31
+ },
32
+ "cache_info": {
33
+ "cache_dir": "/home/runner/work/gapless-crypto-data/gapless-crypto-data/.gapless_checkpoints",
34
+ "cache_size_mb": 0.04731273651123047
35
+ }
36
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "session_id": "20250918_024058_d544b2de",
3
+ "created_at": "2025-09-18T02:40:58.193211",
4
+ "last_updated": "2025-09-18T02:40:59.566663",
5
+ "symbols_completed": [
6
+ "BTCUSDT",
7
+ "ETHUSDT"
8
+ ],
9
+ "symbols_in_progress": {},
10
+ "total_datasets_collected": 2,
11
+ "collection_parameters": {
12
+ "start_date": "2024-01-01",
13
+ "end_date": "2024-01-01",
14
+ "output_dir": "/tmp/tmp9usf4gmq",
15
+ "timeframes": [
16
+ "1h"
17
+ ]
18
+ },
19
+ "errors": [],
20
+ "current_symbol": "ETHUSDT",
21
+ "completed_symbol": "ETHUSDT"
22
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "session_id": "20250918_024100_6302c48d",
3
+ "created_at": "2025-09-18T02:41:00.044526",
4
+ "last_updated": "2025-09-18T02:41:01.478270",
5
+ "symbols_completed": [
6
+ "BTCUSDT",
7
+ "ETHUSDT",
8
+ "SOLUSDT"
9
+ ],
10
+ "symbols_in_progress": {},
11
+ "total_datasets_collected": 3,
12
+ "collection_parameters": {
13
+ "start_date": "2024-01-01",
14
+ "end_date": "2024-01-01",
15
+ "output_dir": "/tmp/tmpsqk4fxvn",
16
+ "timeframes": [
17
+ "1h"
18
+ ]
19
+ },
20
+ "errors": [],
21
+ "current_symbol": "SOLUSDT",
22
+ "completed_symbol": "SOLUSDT"
23
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "session_id": "20250918_024101_b880e45d",
3
+ "created_at": "2025-09-18T02:41:01.976849",
4
+ "last_updated": "2025-09-18T02:41:03.744405",
5
+ "symbols_completed": [
6
+ "BTCUSDT",
7
+ "ETHUSDT"
8
+ ],
9
+ "symbols_in_progress": {},
10
+ "total_datasets_collected": 2,
11
+ "collection_parameters": {
12
+ "start_date": "2024-01-01",
13
+ "end_date": "2024-01-01",
14
+ "output_dir": "/tmp/tmphxjbqx85",
15
+ "timeframes": [
16
+ "1h"
17
+ ]
18
+ },
19
+ "errors": [
20
+ {
21
+ "symbol": "INVALIDSYMBOL",
22
+ "error": "Collection returned no results",
23
+ "timestamp": "2025-09-18T02:41:03.264368"
24
+ }
25
+ ],
26
+ "current_symbol": "ETHUSDT",
27
+ "completed_symbol": "ETHUSDT",
28
+ "failed_symbol": "INVALIDSYMBOL"
29
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "session_id": "20250918_024104_8950cece",
3
+ "created_at": "2025-09-18T02:41:04.219378",
4
+ "last_updated": "2025-09-18T02:41:05.200815",
5
+ "symbols_completed": [
6
+ "BTCUSDT",
7
+ "ETHUSDT"
8
+ ],
9
+ "symbols_in_progress": {},
10
+ "total_datasets_collected": 2,
11
+ "collection_parameters": {
12
+ "start_date": "2024-01-01",
13
+ "end_date": "2024-01-01",
14
+ "output_dir": "/tmp/tmp5s7nnfcm",
15
+ "timeframes": [
16
+ "1h"
17
+ ]
18
+ },
19
+ "errors": [],
20
+ "current_symbol": "ETHUSDT",
21
+ "completed_symbol": "ETHUSDT"
22
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "session_id": "20250918_024110_7356f614",
3
+ "created_at": "2025-09-18T02:41:10.532089",
4
+ "last_updated": "2025-09-18T02:41:11.600558",
5
+ "symbols_completed": [
6
+ "BTCUSDT",
7
+ "ETHUSDT"
8
+ ],
9
+ "symbols_in_progress": {},
10
+ "total_datasets_collected": 2,
11
+ "collection_parameters": {
12
+ "start_date": "2024-01-01",
13
+ "end_date": "2024-01-01",
14
+ "output_dir": "/tmp/tmp82yh6ce7",
15
+ "timeframes": [
16
+ "1h"
17
+ ]
18
+ },
19
+ "errors": [],
20
+ "current_symbol": "ETHUSDT",
21
+ "completed_symbol": "ETHUSDT"
22
+ }
@@ -73,6 +73,9 @@ jobs:
73
73
  needs:
74
74
  - build
75
75
  runs-on: ubuntu-latest
76
+ environment: pypi
77
+ permissions:
78
+ id-token: write
76
79
  steps:
77
80
  - name: Download all the dists
78
81
  uses: actions/download-artifact@v4
@@ -82,13 +85,7 @@ jobs:
82
85
  - name: Publish distribution packages to PyPI
83
86
  uses: pypa/gh-action-pypi-publish@release/v1
84
87
  with:
85
- user: __token__
86
- password: ${{ secrets.PYPI_API_TOKEN }}
87
- repository-url: https://upload.pypi.org/legacy/
88
88
  verbose: true
89
- attestations: false
90
- env:
91
- TWINE_NON_INTERACTIVE: 1
92
89
  sign-artifacts:
93
90
  name: Sign artifacts with Sigstore
94
91
  needs:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gapless-crypto-data
3
- Version: 2.5.0
3
+ Version: 2.6.0
4
4
  Summary: Ultra-fast cryptocurrency data collection with zero gaps guarantee and full 11-column microstructure format
5
5
  Project-URL: Homepage, https://github.com/Eon-Labs/gapless-crypto-data
6
6
  Project-URL: Documentation, https://github.com/Eon-Labs/gapless-crypto-data#readme
@@ -4,7 +4,7 @@ info:
4
4
  description: |
5
5
  Consolidated status of current system architecture, replacing outdated planning documents.
6
6
  All references should point to this canonical source for current capabilities.
7
- version: "2.5.0"
7
+ version: "2.6.0"
8
8
 
9
9
  paths: {}
10
10
 
@@ -23,7 +23,7 @@ components:
23
23
 
24
24
  # CURRENT ARCHITECTURE STATUS (2025-09-17)
25
25
  x-current-status:
26
- canonical_version: "v2.5.0"
26
+ canonical_version: "v2.6.0"
27
27
  architecture_phase: "COMPLETE"
28
28
 
29
29
  implemented_capabilities:
@@ -65,14 +65,22 @@ x-current-status:
65
65
 
66
66
  cli_interface:
67
67
  status: "PRODUCTION_READY"
68
- description: "Modern Typer-based CLI with Rich formatting and backward compatibility"
68
+ description: "Traditional argparse CLI with multi-symbol support"
69
69
  technical_specs:
70
- - "Modern Typer interface with Rich progress indicators"
71
- - "Backward compatibility with legacy argparse interface"
70
+ - "Traditional argparse interface with standard Python patterns"
72
71
  - "Comma-separated multi-symbol support"
73
72
  - "16 timeframe options with validation"
74
73
  - "Custom date ranges and output directories"
75
- - "Sequential processing with enhanced progress reporting"
74
+ - "Sequential processing with progress reporting"
75
+
76
+ pypi_publishing:
77
+ status: "PRODUCTION_READY"
78
+ description: "Native GitHub Actions trusted publishing with OIDC authentication"
79
+ technical_specs:
80
+ - "OIDC-based authentication eliminating API token dependencies"
81
+ - "PyPI trusted publisher configuration for Eon-Labs/gapless-crypto-data"
82
+ - "Environment-scoped publishing with pypi environment requirement"
83
+ - "Automatic digital attestations and Sigstore artifact signing"
76
84
 
77
85
  removed_concepts:
78
86
  parallel_processing:
@@ -0,0 +1,164 @@
1
+ openapi: 3.1.1
2
+ info:
3
+ title: "Milestone v2.6.0 - Native GitHub Actions Trusted Publishing"
4
+ description: |
5
+ Implementation of OIDC-based PyPI publishing pipeline eliminating API token dependencies.
6
+ Migration from token-based authentication to GitHub-native trusted publishing approach.
7
+ version: "2.6.0"
8
+
9
+ components:
10
+ schemas:
11
+ TrustedPublishingMigration:
12
+ type: object
13
+ properties:
14
+ authentication_method:
15
+ type: string
16
+ enum: [oidc_trusted_publishing]
17
+ api_tokens_eliminated:
18
+ type: boolean
19
+ workflow_configuration:
20
+ type: object
21
+ properties:
22
+ environment_requirement:
23
+ type: string
24
+ enum: [pypi]
25
+ permissions:
26
+ type: object
27
+ properties:
28
+ id-token:
29
+ type: string
30
+ enum: [write]
31
+ platform_limitations_documented:
32
+ type: boolean
33
+
34
+ x-milestone-implementation:
35
+ version: "v2.6.0"
36
+ implementation_date: "2025-09-18"
37
+ scope: "PyPI publishing pipeline modernization"
38
+
39
+ technical_achievements:
40
+ trusted_publishing_configuration:
41
+ status: "IMPLEMENTED"
42
+ pypi_publisher_config:
43
+ provider: "GitHub"
44
+ repository: "Eon-Labs/gapless-crypto-data"
45
+ workflow: "publish.yml"
46
+ environment: "pypi"
47
+
48
+ workflow_modifications:
49
+ file: ".github/workflows/publish.yml"
50
+ authentication_method: "oidc"
51
+ permissions_added: ["id-token: write"]
52
+ environment_requirement: "pypi"
53
+ api_token_dependencies_removed: true
54
+
55
+ github_packages_limitation_analysis:
56
+ status: "DOCUMENTED"
57
+ python_support: false
58
+ supported_package_types: [npm, docker, rubygems, maven, gradle, nuget]
59
+ canonical_distribution_channel: "PyPI"
60
+ documentation_location: "docs/PYPI_PUBLISHING_CONFIGURATION.yaml"
61
+
62
+ root_cause_resolution:
63
+ status: "COMPLETED"
64
+ original_issue: "PyPI publishing gap from v2.2.0 to v2.5.0"
65
+ cascading_issues_resolved:
66
+ - yaml_syntax_errors
67
+ - linting_failures
68
+ - dependency_inconsistencies
69
+ - test_mock_incompatibilities
70
+ - invalid_documentation_validation
71
+ - authentication_method_conflicts
72
+
73
+ final_resolution_method: "local_token_validation_and_trusted_publishing_migration"
74
+
75
+ validation_evidence:
76
+ authentication_test:
77
+ method: "OIDC token generation and PyPI upload attempt"
78
+ result: "PASSED"
79
+ error_condition: "file_already_exists"
80
+ confirms: "authentication mechanism operational"
81
+
82
+ workflow_execution:
83
+ build_step: "PASSED"
84
+ test_step: "PASSED"
85
+ publish_step: "AUTHENTICATED"
86
+ sigstore_signing: "CONFIGURED"
87
+
88
+ documentation_updates:
89
+ files_modified:
90
+ - "docs/PYPI_PUBLISHING_CONFIGURATION.yaml"
91
+ - "docs/CURRENT_ARCHITECTURE_STATUS.yaml"
92
+ - ".github/workflows/publish.yml"
93
+
94
+ specifications_format: "OpenAPI 3.1.1"
95
+ documentation_approach: "machine_readable_technical_specifications"
96
+
97
+ canonical_references_established:
98
+ publishing_configuration: "docs/PYPI_PUBLISHING_CONFIGURATION.yaml"
99
+ architecture_status: "docs/CURRENT_ARCHITECTURE_STATUS.yaml"
100
+ project_guidance: "CLAUDE.md"
101
+
102
+ dependency_evolution:
103
+ additions:
104
+ httpx: "0.25.0+"
105
+ reason: "performance_improvement_over_requests"
106
+
107
+ removals:
108
+ requests: "eliminated"
109
+ typer: "eliminated"
110
+ rich: "eliminated"
111
+ reason: "maintain_traditional_argparse_interface"
112
+
113
+ testing_validation:
114
+ total_tests: "124 passed, 1 skipped"
115
+ integration_tests: "PASSED"
116
+ cli_functionality: "VALIDATED"
117
+ build_process: "VERIFIED"
118
+
119
+ x-evolution-tracking:
120
+ migration_pattern: "api_token_to_oidc_trusted_publishing"
121
+ architectural_improvement: "zero_credential_workflow"
122
+ security_advancement: "eliminate_stored_secrets"
123
+
124
+ backward_compatibility:
125
+ pypi_distribution: "maintained"
126
+ cli_interface: "preserved"
127
+ api_surface: "unchanged"
128
+
129
+ forward_compatibility:
130
+ automatic_attestations: "enabled"
131
+ sigstore_signing: "configured"
132
+ environment_scoped_publishing: "implemented"
133
+
134
+ x-technical-debt-resolution:
135
+ api_token_secret_management: "eliminated"
136
+ workflow_authentication_complexity: "simplified"
137
+ publishing_failure_points: "reduced"
138
+
139
+ maintenance_burden_reduction:
140
+ token_rotation: "not_required"
141
+ credential_updates: "not_required"
142
+ authentication_troubleshooting: "minimized"
143
+
144
+ x-compliance-validation:
145
+ openapi_conformity: "3.1.1"
146
+ documentation_style: "evolutionary_machine_readable"
147
+ version_tracking: "technical_descriptive"
148
+ promotional_language: "eliminated"
149
+
150
+ pattern_adherence:
151
+ user_global_patterns: "unix_conventions_sota_tools"
152
+ project_patterns: "exception_only_failures_atomic_operations"
153
+ cross_pattern_harmony: "validated"
154
+
155
+ x-milestone-closure:
156
+ implementation_complete: true
157
+ validation_passed: true
158
+ documentation_updated: true
159
+ version_incremented: true
160
+
161
+ next_evolution_readiness:
162
+ trusted_publishing: "operational"
163
+ pypi_distribution: "automated"
164
+ github_actions_integration: "native"
@@ -0,0 +1,95 @@
1
+ openapi: 3.1.1
2
+ info:
3
+ title: PyPI Publishing Configuration
4
+ version: 2.6.0
5
+ description: |
6
+ Native GitHub Actions trusted publishing configuration for gapless-crypto-data.
7
+ Implements OIDC-based authentication without API token dependencies.
8
+
9
+ components:
10
+ schemas:
11
+ TrustedPublisher:
12
+ type: object
13
+ properties:
14
+ provider:
15
+ type: string
16
+ enum: [GitHub]
17
+ repository:
18
+ type: string
19
+ example: "Eon-Labs/gapless-crypto-data"
20
+ workflow:
21
+ type: string
22
+ example: "publish.yml"
23
+ environment:
24
+ type: string
25
+ example: "pypi"
26
+ required: [provider, repository, workflow, environment]
27
+
28
+ WorkflowConfiguration:
29
+ type: object
30
+ properties:
31
+ permissions:
32
+ type: object
33
+ properties:
34
+ id-token:
35
+ type: string
36
+ enum: [write]
37
+ required: [id-token]
38
+ environment:
39
+ type: string
40
+ enum: [pypi]
41
+ authentication_method:
42
+ type: string
43
+ enum: [oidc]
44
+ required: [permissions, environment, authentication_method]
45
+
46
+ paths:
47
+ /pypi-publishing:
48
+ post:
49
+ summary: Publish package to PyPI via trusted publishing
50
+ requestBody:
51
+ required: true
52
+ content:
53
+ application/json:
54
+ schema:
55
+ $ref: '#/components/schemas/WorkflowConfiguration'
56
+ responses:
57
+ '200':
58
+ description: Package published successfully
59
+ '400':
60
+ description: File already exists or validation failed
61
+
62
+ current_configuration:
63
+ pypi_trusted_publisher:
64
+ provider: GitHub
65
+ repository: Eon-Labs/gapless-crypto-data
66
+ workflow: publish.yml
67
+ environment: pypi
68
+ configured_date: "2025-09-18"
69
+
70
+ github_workflow:
71
+ file: .github/workflows/publish.yml
72
+ permissions:
73
+ id-token: write
74
+ environment: pypi
75
+ authentication_method: oidc
76
+ api_token_removed: true
77
+
78
+ validation_status:
79
+ authentication_test: passed
80
+ file_upload_attempt: passed
81
+ error_reason: "file_already_exists"
82
+ confirms_working: true
83
+
84
+ github_packages_limitation:
85
+ python_support: false
86
+ supported_types: [npm, docker, rubygems, maven, gradle, nuget]
87
+ reason: "GitHub Packages does not support Python/PyPI packages as of 2025-09-18"
88
+ workaround: "PyPI remains canonical distribution channel for Python packages"
89
+
90
+ migration_completed:
91
+ from: api_token_authentication
92
+ to: oidc_trusted_publishing
93
+ date: "2025-09-18"
94
+ version: v2.5.0
95
+ root_cause_resolution: completed
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "gapless-crypto-data"
3
- version = "2.5.0"
3
+ version = "2.6.0"
4
4
  description = "Ultra-fast cryptocurrency data collection with zero gaps guarantee and full 11-column microstructure format"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -47,7 +47,7 @@ Supported Symbols (USDT Spot Only):
47
47
  AVAXUSDT, ATOMUSDT, NEARUSDT, FTMUSDT, SANDUSDT, MANAUSDT, etc.
48
48
  """
49
49
 
50
- __version__ = "2.5.0"
50
+ __version__ = "2.6.0"
51
51
  __author__ = "Eon Labs"
52
52
  __email__ = "terry@eonlabs.ai"
53
53
 
@@ -0,0 +1,3 @@
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b6ef20edd181404d7c04cefe93f3bf89c387eb17bc9a2c632f551b2b0a1dd40d
3
+ size 3786