exness-data-preprocess 0.8.0__tar.gz → 1.0.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 (150) hide show
  1. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/.gitignore +7 -0
  2. exness_data_preprocess-1.0.0/.releaserc.yml +22 -0
  3. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/CHANGELOG.md +26 -2
  4. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/PKG-INFO +4 -14
  5. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/README.md +7 -6
  6. exness_data_preprocess-1.0.0/docs/adr/2025-12-09-codebase-pruning.md +150 -0
  7. exness_data_preprocess-1.0.0/docs/design/2025-12-09-codebase-pruning/spec.md +93 -0
  8. exness_data_preprocess-1.0.0/package-lock.json +6272 -0
  9. exness_data_preprocess-1.0.0/package.json +9 -0
  10. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/pyproject.toml +4 -19
  11. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/__init__.py +1 -1
  12. exness_data_preprocess-1.0.0/src/exness_data_preprocess/clickhouse_base.py +71 -0
  13. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/clickhouse_gap_detector.py +3 -17
  14. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/clickhouse_manager.py +3 -17
  15. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/clickhouse_ohlc_generator.py +3 -17
  16. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/clickhouse_query_engine.py +3 -17
  17. exness_data_preprocess-0.8.0/.lycheecache +0 -0
  18. exness_data_preprocess-0.8.0/src/exness_data_preprocess/api.py +0 -303
  19. exness_data_preprocess-0.8.0/src/exness_data_preprocess/cli.py +0 -251
  20. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/.cz.toml +0 -0
  21. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/.github/workflows/ci.yml +0 -0
  22. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/.github/workflows/pre-commit-autoupdate.yml +0 -0
  23. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/.github/workflows/publish.yml +0 -0
  24. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/.lint-relative-paths-results.txt +0 -0
  25. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/.pre-commit-config.yaml +0 -0
  26. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/CLAUDE.md +0 -0
  27. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/CONTRIBUTING.md +0 -0
  28. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/LICENSE +0 -0
  29. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/Makefile +0 -0
  30. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/README.md +0 -0
  31. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/cliff-release-notes.toml +0 -0
  32. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/cliff.toml +0 -0
  33. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/DATABASE_SCHEMA.md +0 -0
  34. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/EXNESS_DATA_SOURCES.md +0 -0
  35. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/MODULE_ARCHITECTURE.md +0 -0
  36. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/PRIORITY3_CLEANUP_PLAN.yaml +0 -0
  37. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/REPOSITORY_REFACTORING_PLAN.yaml +0 -0
  38. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/RESEARCH_PATTERNS.md +0 -0
  39. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/TRADING_HOURS_RESEARCH.md +0 -0
  40. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/UNIFIED_DUCKDB_PLAN_v2.md +0 -0
  41. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/adr/2025-12-09-exness-clickhouse-migration.md +0 -0
  42. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/CLAUDE_MD_AUDIT_2025-10-16_PASS2.md +0 -0
  43. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/CLAUDE_MD_VERIFICATION_CHECKLIST_2025-10-16.md +0 -0
  44. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/CLAUDE_MD_VERIFICATION_FINDINGS_2025-10-16.md +0 -0
  45. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/DOCUMENTATION_AUDIT_2025-10-15.md +0 -0
  46. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/DOCUMENTATION_AUDIT_PASS2_2025-10-15.md +0 -0
  47. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/DOCUMENTATION_BEST_PRACTICES_LINE_COUNTS.md +0 -0
  48. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/E2E_TESTING_PLAN_v1.0.0.md +0 -0
  49. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/EXCHANGE_SESSION_AUDIT_2025-10-17.md +0 -0
  50. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/FUNCTIONALITY_VALIDATION_REPORT_2025-10-15.md +0 -0
  51. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/FUNCTIONALITY_VALIDATION_REPORT_2025-10-16.md +0 -0
  52. {exness_data_preprocess-0.8.0/docs/research → exness_data_preprocess-1.0.0/docs/archive}/GAP_DETECTION_COMPARISON.md +0 -0
  53. {exness_data_preprocess-0.8.0/docs/research → exness_data_preprocess-1.0.0/docs/archive}/GAP_DETECTION_SQL_APPROACH.md +0 -0
  54. {exness_data_preprocess-0.8.0/docs/phases → exness_data_preprocess-1.0.0/docs/archive}/PHASE4_DRY_RUN_CONFIG_PLAN.yaml +0 -0
  55. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/PHASE7_v1.5.0_REFACTORING_PLAN.md +0 -0
  56. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/PHASE7_v1.6.0_REFACTORING_PROGRESS.md +0 -0
  57. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/archive/PYDANTIC_REFACTORING_PLAN_v0.2.0_COMPLETE.md +0 -0
  58. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/archive/PYDANTIC_REFACTORING_STATUS_v0.2.0_COMPLETE.md +0 -0
  59. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/REFACTORING_CHECKLIST.md +0 -0
  60. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/RESEARCH_PATTERNS_CANONICALIZATION_2025-10-17.md +0 -0
  61. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/SCHEMA_v1.6.0_AUDIT_FINDINGS.md +0 -0
  62. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/SCHEMA_v1.6.0_MIGRATION_GUIDE.md +0 -0
  63. {exness_data_preprocess-0.8.0/docs/plans → exness_data_preprocess-1.0.0/docs/archive}/SESSION_2025-10-15_SUMMARY.md +0 -0
  64. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/archive/UNIFIED_DUCKDB_PLAN_v1.0.0_LEGACY.md +0 -0
  65. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/archive/implementation-plan-2024-11-24.yaml +0 -0
  66. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/design/2025-12-09-exness-clickhouse-migration/spec.md +0 -0
  67. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/optimization/OPTIMIZATION_OPPORTUNITIES_2025-10-18.md +0 -0
  68. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/phases/PHASE2_SESSION_VECTORIZATION_PLAN.yaml +0 -0
  69. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/phases/PHASE3_SQL_GAP_DETECTION_PLAN.yaml +0 -0
  70. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/releases/RELEASE_NOTES.md +0 -0
  71. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/releases/RELEASE_NOTES_SHORT.md +0 -0
  72. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/HYBRID_SESSION_DETECTION_ANALYSIS.md +0 -0
  73. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/compression-benchmarks/README.md +0 -0
  74. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/compression-benchmarks/test_all_compression_methods.py +0 -0
  75. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/compression-benchmarks/test_delta_encoding_properly.py +0 -0
  76. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/compression-benchmarks/test_parquet_compression_methods.py +0 -0
  77. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-spread-analysis/01-methodology.md +0 -0
  78. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-spread-analysis/02-mode-truncated-analysis.md +0 -0
  79. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-spread-analysis/03-hurdle-model-analysis.md +0 -0
  80. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-spread-analysis/04-temporal-patterns.md +0 -0
  81. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-spread-analysis/05-final-recommendations.md +0 -0
  82. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-spread-analysis/README.md +0 -0
  83. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-spread-analysis/scripts/reproduction_guide.md +0 -0
  84. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-spread-analysis/visualizations/hurdle-model/hurdle_decomposition.png +0 -0
  85. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-spread-analysis/visualizations/mode-truncated/cv_mode_comparison.png +0 -0
  86. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-spread-analysis/visualizations/mode-truncated/distribution_overlay.png +0 -0
  87. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-spread-analysis/visualizations/mode-truncated/signal_quality_comparison.png +0 -0
  88. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-spread-analysis/visualizations/mode-truncated/variance_decomposition.png +0 -0
  89. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-spread-analysis/visualizations/temporal/concentration_curve.png +0 -0
  90. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-spread-analysis/visualizations/temporal/percentile_analysis.png +0 -0
  91. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/01-methodology.md +0 -0
  92. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/02-baseline-sep2024.md +0 -0
  93. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/03-multiperiod-validation.md +0 -0
  94. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/04-discoveries-and-plan-evolution.md +0 -0
  95. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/README.md +0 -0
  96. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/findings/baseline-sep2024-comprehensive-summary.md +0 -0
  97. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/findings/phase2-mean-reversion-report.md +0 -0
  98. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/findings/phase3-volatility-model-report.md +0 -0
  99. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/findings/phase4-5-statistical-tests-survivorship-report.md +0 -0
  100. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/baseline-sep2024/01_mean_reversion_analysis.py +0 -0
  101. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/baseline-sep2024/02_volatility_model_simple.py +0 -0
  102. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/baseline-sep2024/03_liquidity_crisis_detection.py +0 -0
  103. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/baseline-sep2024/04_regime_detection_analysis.py +0 -0
  104. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/multiperiod-validation/phase1_data_validation.py +0 -0
  105. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/multiperiod-validation/phase2_mean_reversion.py +0 -0
  106. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/multiperiod-validation/phase3_volatility_model.py +0 -0
  107. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/multiperiod-validation/phase4_statistical_tests.py +0 -0
  108. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/multiperiod-validation/phase5_survivorship_bias.py +0 -0
  109. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/multiperiod-validation/phase5_survivorship_bias_v1.0.1.py +0 -0
  110. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/multiperiod-validation/phase6a_interval_analysis.py +0 -0
  111. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/multiperiod-validation/phase6b_price_clustering.py +0 -0
  112. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/multiperiod-validation/phase6c_combined_pattern.py +0 -0
  113. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/reproduction_guide.md +0 -0
  114. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/visualization/diagnostic_burst_decay.py +0 -0
  115. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/visualization/generate_interactive_dashboard.py +0 -0
  116. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/visualization/generate_lightweight_dashboard.py +0 -0
  117. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/eurusd-zero-spread-deviations/scripts/visualization/prepare_visualization_data.py +0 -0
  118. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/research/gap_detection_implementation_example.py +0 -0
  119. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/setup/GITHUB_PYPI_SETUP.md +0 -0
  120. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/validation/ARCHITECTURE_AUDIT_2025-10-17.md +0 -0
  121. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/validation/ARCHITECTURE_EFFICIENCY_AUDIT_2025-10-18.md +0 -0
  122. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/validation/DOCUMENTATION_SURVEY_v1.7.0.md +0 -0
  123. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/validation/E2E_VALIDATION_RESULTS_v1.6.0.md +0 -0
  124. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/validation/SPIKE_TEST_RESULTS_PHASE1_2025-10-18.md +0 -0
  125. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/validation/SPIKE_TEST_RESULTS_PHASE2_2025-10-18.md +0 -0
  126. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/validation/WEEKEND_GAP_VALIDATION_SUMMARY.md +0 -0
  127. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/docs/validation/WORKSPACE_SURVEY_2025-10-17.md +0 -0
  128. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/examples/basic_usage.py +0 -0
  129. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/examples/batch_processing.py +0 -0
  130. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/clickhouse_client.py +0 -0
  131. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/config.py +0 -0
  132. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/database_manager.py +0 -0
  133. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/downloader.py +0 -0
  134. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/exchanges.py +0 -0
  135. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/gap_detector.py +0 -0
  136. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/models.py +0 -0
  137. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/ohlc_generator.py +0 -0
  138. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/processor.py +0 -0
  139. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/query_engine.py +0 -0
  140. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/schema.py +0 -0
  141. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/session_detector.py +0 -0
  142. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/src/exness_data_preprocess/tick_loader.py +0 -0
  143. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/tests/README.md +0 -0
  144. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/tests/__init__.py +0 -0
  145. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/tests/conftest.py +0 -0
  146. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/tests/test_basic.py +0 -0
  147. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/tests/test_functional_regression.py +0 -0
  148. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/tests/test_models.py +0 -0
  149. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/tests/test_processor_pydantic.py +0 -0
  150. {exness_data_preprocess-0.8.0 → exness_data_preprocess-1.0.0}/tests/test_types.py +0 -0
@@ -100,3 +100,10 @@ uv.lock
100
100
  # Pre-commit
101
101
  # .pre-commit-config.yaml should be tracked, not ignored
102
102
  .token-info.md
103
+
104
+ # Node.js (semantic-release)
105
+ node_modules/
106
+
107
+ # Link checking (lychee)
108
+ .lychee*
109
+ .lycheecache
@@ -0,0 +1,22 @@
1
+ # semantic-release configuration for Python project
2
+ # Uses @semantic-release/exec instead of @semantic-release/npm
3
+ branches:
4
+ - main
5
+
6
+ plugins:
7
+ - "@semantic-release/commit-analyzer"
8
+ - "@semantic-release/release-notes-generator"
9
+ - "@semantic-release/changelog"
10
+ - - "@semantic-release/exec"
11
+ - prepareCmd: |
12
+ # Update version in pyproject.toml
13
+ sed -i '' 's/^version = ".*"/version = "${nextRelease.version}"/' pyproject.toml
14
+ # Update version in __init__.py
15
+ sed -i '' 's/^__version__ = ".*"/__version__ = "${nextRelease.version}"/' src/exness_data_preprocess/__init__.py
16
+ - - "@semantic-release/git"
17
+ - assets:
18
+ - pyproject.toml
19
+ - src/exness_data_preprocess/__init__.py
20
+ - CHANGELOG.md
21
+ message: "chore(release): bump version ${lastRelease.version} → ${nextRelease.version} [skip ci]"
22
+ - "@semantic-release/github"
@@ -1,9 +1,33 @@
1
- # [0.8.0](https://github.com/terrylica/exness-data-preprocess/compare/v0.7.2...v0.8.0) (2025-12-10)
1
+ # [1.0.0](https://github.com/terrylica/exness-data-preprocess/compare/v0.8.0...v1.0.0) (2025-12-10)
2
+
3
+
4
+ * feat!: prune codebase - remove unused deps, archive docs, extract mixin ([e0d48b8](https://github.com/terrylica/exness-data-preprocess/commit/e0d48b8fe7ba44d2c3bc326661102a0b3d3b33b7))
5
+
6
+
7
+ ### BREAKING CHANGES
8
+
9
+ * Remove deprecated api.py and cli.py modules
2
10
 
11
+ Dependency cleanup:
12
+ - Remove httpx, pyarrow, polars (unused)
13
+ - Move tqdm to optional [examples] extra
14
+ - Consolidate dev dependencies to [dependency-groups]
15
+
16
+ Documentation archival:
17
+ - Archive 20 planning/research docs to docs/archive/
18
+ - Update .gitignore for node_modules, lychee patterns
19
+
20
+ Code refactoring:
21
+ - Extract ClickHouseClientMixin from 4 modules (~45 lines saved)
22
+ - Delete api.py (304 lines) and cli.py (252 lines)
23
+
24
+ ADR: docs/adr/2025-12-09-codebase-pruning.md
25
+
26
+ # [0.8.0](https://github.com/terrylica/exness-data-preprocess/compare/v0.7.2...v0.8.0) (2025-12-10)
3
27
 
4
28
  ### Features
5
29
 
6
- * add ClickHouse backend for cloud deployment ([c9b51a3](https://github.com/terrylica/exness-data-preprocess/commit/c9b51a3b374eea74375cc86afdd8cb9391fe73e8))
30
+ - add ClickHouse backend for cloud deployment ([c9b51a3](https://github.com/terrylica/exness-data-preprocess/commit/c9b51a3b374eea74375cc86afdd8cb9391fe73e8))
7
31
 
8
32
  # Changelog
9
33
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: exness-data-preprocess
3
- Version: 0.8.0
3
+ Version: 1.0.0
4
4
  Summary: Professional Exness forex tick data preprocessing with optimal compression (Parquet Zstd-22) and DuckDB OHLC generation. Provides efficient storage (9% smaller than ZIP) with lossless precision and direct queryability.
5
5
  Project-URL: Homepage, https://github.com/terrylica/exness-data-preprocess
6
6
  Project-URL: Documentation, https://github.com/terrylica/exness-data-preprocess#readme
@@ -12,7 +12,7 @@ Author-email: Eon Labs <terry@eonlabs.com>
12
12
  Maintainer-email: Terry Li <terry@eonlabs.com>
13
13
  License: MIT
14
14
  License-File: LICENSE
15
- Keywords: backtesting,compression,data-engineering,duckdb,efficient-storage,eurusd,exness,financial-data,forex,forex-data,lossless,microstructure,ohlc,pandas,parquet,preprocessing,pyarrow,quantitative-finance,queryable,tick-data,time-series,zstd
15
+ Keywords: backtesting,compression,data-engineering,duckdb,efficient-storage,eurusd,exness,financial-data,forex,forex-data,lossless,microstructure,ohlc,pandas,parquet,preprocessing,quantitative-finance,queryable,tick-data,time-series,zstd
16
16
  Classifier: Development Status :: 3 - Alpha
17
17
  Classifier: Intended Audience :: Developers
18
18
  Classifier: Intended Audience :: Financial and Insurance Industry
@@ -29,21 +29,11 @@ Requires-Python: >=3.11
29
29
  Requires-Dist: clickhouse-connect>=0.7.0
30
30
  Requires-Dist: duckdb>=0.9.0
31
31
  Requires-Dist: exchange-calendars>=4.5.6
32
- Requires-Dist: httpx>=0.25.0
33
32
  Requires-Dist: pandas>=2.0.0
34
- Requires-Dist: pyarrow>=16.0.0
35
33
  Requires-Dist: pydantic>=2.0.0
36
34
  Requires-Dist: pyyaml>=6.0.0
37
- Requires-Dist: tqdm>=4.65.0
38
- Provides-Extra: dev
39
- Requires-Dist: black>=23.0.0; extra == 'dev'
40
- Requires-Dist: mypy>=1.5.0; extra == 'dev'
41
- Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
42
- Requires-Dist: pytest>=7.0.0; extra == 'dev'
43
- Requires-Dist: ruff>=0.1.0; extra == 'dev'
44
- Provides-Extra: test
45
- Requires-Dist: pytest-cov>=4.0.0; extra == 'test'
46
- Requires-Dist: pytest>=7.0.0; extra == 'test'
35
+ Provides-Extra: examples
36
+ Requires-Dist: tqdm>=4.65.0; extra == 'examples'
47
37
  Description-Content-Type: text/markdown
48
38
 
49
39
  # Exness Data Preprocess v2.0.0
@@ -55,11 +55,6 @@
55
55
 
56
56
  ### Implementation Architecture v1.7.0
57
57
 
58
- **Refactoring Plans**:
59
-
60
- - [`plans/PHASE7_v1.6.0_REFACTORING_PROGRESS.md`](plans/PHASE7_v1.6.0_REFACTORING_PROGRESS.md) - Complete refactoring progress
61
- - [`plans/REFACTORING_CHECKLIST.md`](plans/REFACTORING_CHECKLIST.md) - Quick reference checklist
62
-
63
58
  **Pattern**: Facade with 7 specialized modules
64
59
 
65
60
  **Key Modules**:
@@ -261,5 +256,11 @@ curl -s "https://ticks.ex2archive.com/ticks/" | jq -r '.[] | .name' | grep -i "E
261
256
 
262
257
  ---
263
258
 
264
- **Last Updated**: 2025-10-18
259
+ ## Archived Documentation
260
+
261
+ Historical planning, research, and completed phase documents are archived in [`archive/`](archive/).
262
+
263
+ ---
264
+
265
+ **Last Updated**: 2025-12-09
265
266
  **Maintainer**: Terry Li <terry@eonlabs.com>
@@ -0,0 +1,150 @@
1
+ ---
2
+ status: accepted
3
+ date: 2025-12-09
4
+ decision-maker: Terry Li
5
+ consulted:
6
+ [Code-Pruning-Agent, Dependency-Pruning-Agent, Documentation-Pruning-Agent]
7
+ research-method: multi-agent
8
+ clarification-iterations: 1
9
+ perspectives: [Maintainability, Technical-Debt, Developer-Experience]
10
+ ---
11
+
12
+ # Codebase Pruning: Dependencies, Documentation, and Code Cleanup
13
+
14
+ **Design Spec**: [Implementation Spec](/docs/design/2025-12-09-codebase-pruning/spec.md)
15
+
16
+ ## Context and Problem Statement
17
+
18
+ After the ClickHouse migration (v0.8.0), the codebase has accumulated:
19
+
20
+ 1. **Unused dependencies**: httpx (never imported), polars (abandoned experiment), pyarrow (research-only)
21
+ 2. **Orphaned documentation**: 18 planning documents from completed Oct 2025 phases
22
+ 3. **Code duplication**: 60+ lines of repeated client lifecycle code across ClickHouse modules
23
+ 4. **Deprecated API layer**: 304-line api.py marked for removal
24
+
25
+ This technical debt increases install size by 80+ MB, confuses navigation, and violates DRY principles.
26
+
27
+ ## Decision Drivers
28
+
29
+ - **Install size**: 200 MB → 120 MB (40% reduction)
30
+ - **Codebase clarity**: Remove orphaned files that confuse AI assistants
31
+ - **DRY compliance**: Eliminate duplicate ClickHouse client lifecycle code
32
+ - **Breaking change acceptance**: User approved api.py removal
33
+
34
+ ## Considered Options
35
+
36
+ 1. **Quick wins only**: Dependencies + documentation archival
37
+ 2. **Quick wins + code refactoring**: Above + ClickHouseClientMixin
38
+ 3. **Full pruning** (SELECTED): All above + remove deprecated api.py
39
+
40
+ ## Decision Outcome
41
+
42
+ **Chosen option**: Full pruning including api.py removal
43
+
44
+ ### Consequences
45
+
46
+ **Good**:
47
+
48
+ - 80+ MB smaller install size
49
+ - 400+ lines of code removed
50
+ - Cleaner documentation structure
51
+ - DRY-compliant ClickHouse modules
52
+
53
+ **Bad**:
54
+
55
+ - api.py removal is breaking change for any external consumers
56
+ - Research scripts in docs/research/ will need manual pyarrow install
57
+
58
+ ## Architecture
59
+
60
+ ### Before/After Diagram
61
+
62
+ <!-- graph-easy source:
63
+ [ pyproject.toml ] -- httpx (unused) --> [ 1 MB waste ]
64
+
65
+ [ pyproject.toml ] -- polars (unused) --> [ 50 MB waste ]
66
+ [ pyproject.toml ] -- pyarrow (research) --> [ 30 MB waste ]
67
+ [ docs/plans/ ] -- 15 orphaned files --> [ 7,405 lines ]
68
+ [ clickhouse_*.py (4) ] -- duplicate lifecycle --> [ 60 lines ]
69
+ [ api.py ] -- deprecated --> [ 304 lines ]
70
+ -->
71
+
72
+ ```
73
+ +------------------+ httpx (unused) +-------------+
74
+ | pyproject.toml | ----------------------> | 1 MB waste |
75
+ +------------------+ +-------------+
76
+ |
77
+ | polars (unused) +-------------+
78
+ +-------------------------------> | 50 MB waste |
79
+ | +-------------+
80
+ |
81
+ | pyarrow (research) +-------------+
82
+ +-------------------------------> | 30 MB waste |
83
+ +-------------+
84
+
85
+ +------------------+ 15 orphaned files +-------------+
86
+ | docs/plans/ | ----------------------> | 7,405 lines |
87
+ +------------------+ +-------------+
88
+
89
+ +------------------+ duplicate lifecycle +-------------+
90
+ |clickhouse_*.py(4)| ----------------------> | 60 lines |
91
+ +------------------+ +-------------+
92
+
93
+ +------------------+ deprecated +-------------+
94
+ | api.py | ----------------------> | 304 lines |
95
+ +------------------+ +-------------+
96
+ ```
97
+
98
+ ### After Pruning
99
+
100
+ <!-- graph-easy source:
101
+ [ pyproject.toml ] -- clean deps --> [ 120 MB install ]
102
+
103
+ [ docs/archive/ ] -- preserved --> [ Historical context ]
104
+ [ clickhouse_base.py ] -- mixin --> [ DRY code ]
105
+ [ api.py ] -- removed --> [ Breaking change logged ]
106
+ -->
107
+
108
+ ```
109
+ +------------------+ clean deps +----------------+
110
+ | pyproject.toml | ----------------------> | 120 MB install |
111
+ +------------------+ +----------------+
112
+
113
+ +------------------+ preserved +------------------+
114
+ | docs/archive/ | ----------------------> | Historical ctxt |
115
+ +------------------+ +------------------+
116
+
117
+ +--------------------+ mixin +----------+
118
+ | clickhouse_base.py | --------------------> | DRY code |
119
+ +--------------------+ +----------+
120
+
121
+ +------------------+ removed +-------------------+
122
+ | api.py | ----------------------> | Breaking chg log |
123
+ +------------------+ +-------------------+
124
+ ```
125
+
126
+ ## Implementation Details
127
+
128
+ ### Phase A: Dependency Cleanup
129
+
130
+ - Remove: httpx, pyarrow, polars
131
+ - Move: tqdm to `[project.optional-dependencies] examples`
132
+ - Consolidate: dev dependencies to `[dependency-groups]`
133
+
134
+ ### Phase B: Documentation Cleanup
135
+
136
+ - Update .gitignore: node_modules/, .lychee\*, .token-info.md
137
+ - Archive: 18 planning documents to docs/archive/
138
+ - Update: docs/README.md
139
+
140
+ ### Phase C: Code Cleanup
141
+
142
+ - Create: `clickhouse_base.py` with `ClickHouseClientMixin`
143
+ - Refactor: 4 ClickHouse modules to use mixin
144
+ - Delete: `api.py` (304 lines)
145
+ - Update: `__init__.py` exports
146
+
147
+ ## More Information
148
+
149
+ - Related: [ClickHouse Migration ADR](/docs/adr/2025-12-09-exness-clickhouse-migration.md)
150
+ - Source Plan: `~/.claude/plans/lively-splashing-steele.md`
@@ -0,0 +1,93 @@
1
+ ---
2
+ adr: 2025-12-09-codebase-pruning
3
+ source: ~/.claude/plans/lively-splashing-steele.md
4
+ implementation-status: in_progress
5
+ phase: phase-1
6
+ last-updated: 2025-12-09
7
+ ---
8
+
9
+ # Codebase Pruning Implementation Spec
10
+
11
+ **ADR**: [Codebase Pruning ADR](/docs/adr/2025-12-09-codebase-pruning.md)
12
+
13
+ ## Overview
14
+
15
+ Full pruning of exness-data-preprocess codebase:
16
+
17
+ - 80+ MB dependency reduction
18
+ - 18 files archived
19
+ - 400+ lines of code removed
20
+
21
+ ## Implementation Tasks
22
+
23
+ ### Phase A: Dependency Cleanup ✅
24
+
25
+ **File**: `pyproject.toml`
26
+
27
+ - [x] Remove `httpx>=0.25.0` from dependencies
28
+ - [x] Remove `pyarrow>=16.0.0` from dependencies
29
+ - [x] Remove `polars>=1.34.0` from dependency-groups
30
+ - [x] Move `tqdm>=4.65.0` to `[project.optional-dependencies] examples`
31
+ - [x] Consolidate dev dependencies (remove conflicting `[project.optional-dependencies] dev`)
32
+ - [x] Verify: `uv sync` succeeds
33
+ - [x] Verify: `pytest tests/` passes (48/48)
34
+
35
+ ### Phase B: Documentation Cleanup ✅
36
+
37
+ **Files**: `.gitignore`, `docs/archive/`, `docs/README.md`
38
+
39
+ - [x] Add to `.gitignore`: `node_modules/`, `.lychee*`, `.lycheecache`, `.token-info.md`
40
+ - [x] Create `docs/archive/` directory if not exists
41
+ - [x] Move 17 planning docs from `docs/plans/` to `docs/archive/`
42
+ - [x] Move 2 research docs from `docs/research/` to `docs/archive/`
43
+ - [x] Move `docs/phases/PHASE4_DRY_RUN_CONFIG_PLAN.yaml` to `docs/archive/`
44
+ - [x] Update `docs/README.md` to reflect archival
45
+
46
+ ### Phase C: Code Cleanup ✅
47
+
48
+ **Files**: `clickhouse_base.py` (NEW), `clickhouse_*.py` (4), `api.py` (DELETE), `cli.py` (DELETE)
49
+
50
+ - [x] Create `src/exness_data_preprocess/clickhouse_base.py` with `ClickHouseClientMixin`
51
+ - [x] Refactor `clickhouse_manager.py` to use mixin
52
+ - [x] Refactor `clickhouse_gap_detector.py` to use mixin
53
+ - [x] Refactor `clickhouse_query_engine.py` to use mixin
54
+ - [x] Refactor `clickhouse_ohlc_generator.py` to use mixin
55
+ - [x] Delete `src/exness_data_preprocess/api.py` (304 lines)
56
+ - [x] Delete `src/exness_data_preprocess/cli.py` (252 lines, dependent on api.py)
57
+ - [x] Remove CLI entry point from `pyproject.toml`
58
+ - [x] Verify: `pytest tests/` passes (48/48)
59
+
60
+ ## Success Criteria
61
+
62
+ | Metric | Before | After | Target |
63
+ | ------------------------ | ------- | ------- | --------------- |
64
+ | Dependencies (install) | ~200 MB | ~120 MB | 40% reduction |
65
+ | docs/plans/ files | 17 | 2 | 15 archived |
66
+ | api.py lines | 304 | 0 | Deleted |
67
+ | Duplicate lifecycle code | 60 | 15 | ~45 lines saved |
68
+ | Test count | 48 | 48 | No regression |
69
+
70
+ ## Files to Modify
71
+
72
+ | File | Action |
73
+ | ----------------------------------------------- | ----------------------------------------- |
74
+ | `pyproject.toml` | Remove 3 deps, move tqdm, consolidate dev |
75
+ | `.gitignore` | Add node_modules, lychee patterns |
76
+ | `src/exness_data_preprocess/api.py` | **DELETE** |
77
+ | `src/exness_data_preprocess/__init__.py` | Remove api.py exports |
78
+ | `src/exness_data_preprocess/clickhouse_base.py` | **CREATE** mixin |
79
+ | `src/exness_data_preprocess/clickhouse_*.py` | Refactor to use mixin |
80
+ | `docs/plans/*.md` (15 files) | Move to archive |
81
+ | `docs/research/GAP_*.md` (2 files) | Move to archive |
82
+ | `docs/README.md` | Update after archival |
83
+
84
+ ## Risk Assessment
85
+
86
+ | Item | Risk | Mitigation |
87
+ | -------------- | ------ | --------------------------------------- |
88
+ | Remove httpx | None | Zero imports confirmed |
89
+ | Remove pyarrow | Low | Research scripts need manual install |
90
+ | Remove polars | None | Zero imports confirmed |
91
+ | Archive docs | Low | git mv preserves history |
92
+ | Remove api.py | Medium | User approved; document breaking change |
93
+ | Mixin refactor | Low | Tests verify no regression |