gapless-crypto-data 4.0.2__tar.gz → 4.0.3__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.
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/PKG-INFO +7 -2
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/README.md +6 -1
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/pyproject.toml +1 -1
- gapless_crypto_data-4.0.3/src/gapless_crypto_data/__init__.py +92 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/uv.lock +1 -1
- gapless_crypto_data-4.0.2/src/gapless_crypto_data/__init__.py +0 -134
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/.claude/settings.local.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/.gitattributes +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/.github/workflows/publish.yml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/.github/workflows/release.yml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/.gitignore +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/.pre-commit-config.yaml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/.python-version +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/.releaserc.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/.sessions/.gitignore +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/AUTHORS.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/CHANGELOG.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/CLAUDE.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/CONTRIBUTING.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/DOCUMENTATION.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/Earthfile +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/LICENSE +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/MANIFEST.in +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/PROBE_USAGE_EXAMPLE.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/cliff-release-notes.toml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/cliff.toml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/CURRENT_ARCHITECTURE_STATUS.yaml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/PYPI_PUBLISHING_CONFIGURATION.yaml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/README.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/SDK_QUALITY_STANDARDS.yaml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/SSOT_DOCUMENTATION_ARCHITECTURE.yaml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/SSOT_PLANNING_SUMMARY.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/api/dual-parameter-enhancement.yaml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/api/gapless-dataframe-enhancement.yaml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/api/pruning-parquet-implementation.yaml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/api/quick-start.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/architecture/DATA_FORMAT.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/architecture/OVERVIEW.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/architecture/decisions/0001-repository-split-clickhouse.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/architecture/decisions/0002-lychee-link-validation.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/architecture/decisions/0003-repository-housekeeping.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/architecture/decisions/0004-yaml-audit-redundancy-removal.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/architecture/decisions/0005-earthly-release-pipeline.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/audit/comprehensive-audit-findings.yaml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/audit/comprehensive-audit-plan.yaml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/development/CLI_MIGRATION_GUIDE.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/development/COMMANDS.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/development/PUBLISHING.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/development/SETUP.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/diagrams/01-collection-pipeline.mmd +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/diagrams/02-gap-filling.mmd +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/diagrams/03-multi-symbol-collection.mmd +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/diagrams/04-download-caching.mmd +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/diagrams/05-validation-flow.mmd +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/diagrams/README.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/guides/DATA_COLLECTION.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/guides/pypi-documentation.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/guides/python-api.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/milestones/archive/MILESTONE_v3.0.0.yaml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/milestones/archive/MILESTONE_v3.1.0.yaml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/plan/0001-v4.0.1-release/plan.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/plan/0002-lychee-link-validation/plan.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/plan/0003-repository-housekeeping/plan.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/plan/0004-yaml-audit-redundancy-removal/plan.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/plan/0005-earthly-release-pipeline/plan.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/release-notes.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/validation/OVERVIEW.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/validation/QUERY_PATTERNS.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/validation/STORAGE.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/examples/README.md +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/examples/advanced_api_examples.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/examples/basic_data_collection.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/examples/cli_usage_examples.sh +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/examples/complete_workflow.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/examples/gap_filling_example.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/examples/safe_data_collection.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/examples/simple_api_examples.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/llms.txt +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/lychee.toml +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/package.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/scripts/publish-to-pypi.sh +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/scripts/test-pushover.sh +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/__probe__.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/api.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/cli.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/collectors/__init__.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/collectors/binance_public_data_collector.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/collectors/concurrent_collection_orchestrator.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/collectors/httpx_downloader.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/collectors/hybrid_url_generator.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/exceptions.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/gap_filling/__init__.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/gap_filling/safe_file_operations.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/gap_filling/universal_gap_filler.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/py.typed +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/resume/__init__.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/resume/intelligent_checkpointing.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20240101-20240102_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20240101-20240102_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20240101-20240102_v2.5.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20240101-20240102_v2.5.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20250819-20250831_v2.5.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20250819-20250831_v2.5.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20250921-20250921_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20250921-20250921_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251002-20251002_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251002-20251002_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251015-20251016_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251015-20251016_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251016-20251016_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251016-20251016_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251016-20251017_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251016-20251017_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251017-20251017_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251017-20251017_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251116-20251117_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251116-20251117_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251117-20251117_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1d_20251117-20251117_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240101_v2.5.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240101_v2.5.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240102_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240102_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240102_v2.5.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20240101-20240102_v2.5.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20250918-20250921_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20250918-20250921_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20251016-20251016_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20251016-20251016_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20251017-20251017_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20251017-20251017_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20251117-20251117_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-1h_20251117-20251117_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-4h_20240101-20240101_v2.5.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-4h_20240101-20240101_v2.5.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-5m_20230320-20230328_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-5m_20230320-20230328_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-5m_20230323-20230325_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_BTCUSDT-5m_20230323-20230325_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1d_20250819-20250831_v2.5.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1d_20250819-20250831_v2.5.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20240101-20240101_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20240101-20240101_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20240101-20240101_v2.5.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20240101-20240101_v2.5.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251001-20251002_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251001-20251002_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251014-20251016_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251014-20251016_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251015-20251016_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251015-20251016_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251015-20251017_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251015-20251017_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251016-20251017_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251016-20251017_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251115-20251117_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251115-20251117_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251116-20251117_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-1h_20251116-20251117_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-4h_20240101-20240201_v2.5.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-4h_20240101-20240201_v2.5.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-5m_20230320-20230328_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_ETHUSDT-5m_20230320-20230328_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_SOLUSDT-1d_20250819-20250831_v2.5.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_SOLUSDT-1d_20250819-20250831_v2.5.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_SOLUSDT-1h_20240101-20240101_v2.5.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/sample_data/binance_spot_SOLUSDT-1h_20240101-20240101_v2.5.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/utils/__init__.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/utils/error_handling.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/utils/etag_cache.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/utils/timeframe_constants.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/utils/timestamp_format_analyzer.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/validation/__init__.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/validation/csv_validator.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/validation/models.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/validation/storage.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/__init__.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/conftest.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/fixtures/test_data/binance_spot_BTCUSDT-1h_20240101-20240101_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/fixtures/test_data/binance_spot_BTCUSDT-1h_20240101-20240101_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/fixtures/test_data_large/binance_spot_BTCUSDT-1h_20140101-20240101_v2.10.0.csv +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/fixtures/test_data_large/binance_spot_BTCUSDT-1h_20140101-20240101_v2.10.0.metadata.json +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/fixtures/test_data_large/binance_spot_BTCUSDT-1h_20140101-20240101_v2.10.0_gapped.csv.bak +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_1s_1d_gap_filling.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_api_edge_cases.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_atomic_operations.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_binance_collector.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_binance_collector_advanced.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_cli.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_cli_integration.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_concurrent_download.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_error_handling.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_etag_cache.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_gap_filler.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_gapless_validation_1d_2018_present.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_integration.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_monthly_to_daily_fallback.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_output_dir_dataframe_fix.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_package.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_probe_module.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_simple_api.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_timeframe_constants.py +0 -0
- {gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_validation_storage.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gapless-crypto-data
|
|
3
|
-
Version: 4.0.
|
|
3
|
+
Version: 4.0.3
|
|
4
4
|
Summary: Cryptocurrency OHLCV data collection with gap-free guarantee. Retrieves microstructure-enriched kline data from Binance Public Data Repository with automatic gap detection and filling.
|
|
5
5
|
Project-URL: Homepage, https://github.com/terrylica/gapless-crypto-data
|
|
6
6
|
Project-URL: Documentation, https://github.com/terrylica/gapless-crypto-data#readme
|
|
@@ -92,7 +92,12 @@ See [Data Format Specification](https://github.com/terrylica/gapless-crypto-data
|
|
|
92
92
|
|
|
93
93
|
## Supported Timeframes
|
|
94
94
|
|
|
95
|
-
All Binance spot kline intervals
|
|
95
|
+
All Binance spot kline intervals. Query dynamically:
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
import gapless_crypto_data as gcd
|
|
99
|
+
print(gcd.get_supported_timeframes())
|
|
100
|
+
```
|
|
96
101
|
|
|
97
102
|
## API Reference
|
|
98
103
|
|
|
@@ -55,7 +55,12 @@ See [Data Format Specification](https://github.com/terrylica/gapless-crypto-data
|
|
|
55
55
|
|
|
56
56
|
## Supported Timeframes
|
|
57
57
|
|
|
58
|
-
All Binance spot kline intervals
|
|
58
|
+
All Binance spot kline intervals. Query dynamically:
|
|
59
|
+
|
|
60
|
+
```python
|
|
61
|
+
import gapless_crypto_data as gcd
|
|
62
|
+
print(gcd.get_supported_timeframes())
|
|
63
|
+
```
|
|
59
64
|
|
|
60
65
|
## API Reference
|
|
61
66
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "gapless-crypto-data"
|
|
3
|
-
version = "4.0.
|
|
3
|
+
version = "4.0.3"
|
|
4
4
|
description = "Cryptocurrency OHLCV data collection with gap-free guarantee. Retrieves microstructure-enriched kline data from Binance Public Data Repository with automatic gap detection and filling."
|
|
5
5
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
6
6
|
authors = [
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Gapless Crypto Data - Binance USDT spot market OHLCV collection with gap-free guarantee.
|
|
3
|
+
|
|
4
|
+
Scope:
|
|
5
|
+
- USDT spot pairs only (BTCUSDT, ETHUSDT, SOLUSDT, etc.)
|
|
6
|
+
- No futures, perpetuals, derivatives, or margin data
|
|
7
|
+
|
|
8
|
+
Capabilities:
|
|
9
|
+
- Bulk historical data via Binance Public Data Repository
|
|
10
|
+
- Microstructure-enriched kline format (OHLCV + order flow metrics)
|
|
11
|
+
- Gap detection and API-based filling
|
|
12
|
+
- All Binance spot kline intervals supported
|
|
13
|
+
|
|
14
|
+
Data Source:
|
|
15
|
+
https://data.binance.vision/data/spot/monthly/klines/
|
|
16
|
+
|
|
17
|
+
Usage:
|
|
18
|
+
import gapless_crypto_data as gcd
|
|
19
|
+
|
|
20
|
+
# Fetch data
|
|
21
|
+
df = gcd.fetch_data("BTCUSDT", timeframe="1h", limit=1000)
|
|
22
|
+
df = gcd.download("ETHUSDT", timeframe="4h", start="2024-01-01", end="2024-06-30")
|
|
23
|
+
|
|
24
|
+
# Discovery
|
|
25
|
+
symbols = gcd.get_supported_symbols()
|
|
26
|
+
timeframes = gcd.get_supported_timeframes()
|
|
27
|
+
|
|
28
|
+
# Gap filling
|
|
29
|
+
results = gcd.fill_gaps("./data")
|
|
30
|
+
|
|
31
|
+
# Class-based API
|
|
32
|
+
from gapless_crypto_data import BinancePublicDataCollector, UniversalGapFiller
|
|
33
|
+
collector = BinancePublicDataCollector()
|
|
34
|
+
result = collector.collect_timeframe_data("1h")
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
__version__ = "4.0.3"
|
|
38
|
+
__author__ = "Eon Labs"
|
|
39
|
+
__email__ = "terry@eonlabs.com"
|
|
40
|
+
|
|
41
|
+
# Core classes (advanced/power-user API)
|
|
42
|
+
# Enhanced DataFrame for domain-specific operations
|
|
43
|
+
# Convenience functions (simple/intuitive API)
|
|
44
|
+
# API-only probe hooks for AI coding agents
|
|
45
|
+
from . import __probe__
|
|
46
|
+
from .api import (
|
|
47
|
+
download,
|
|
48
|
+
fetch_data,
|
|
49
|
+
fill_gaps,
|
|
50
|
+
get_info,
|
|
51
|
+
get_supported_intervals,
|
|
52
|
+
get_supported_symbols,
|
|
53
|
+
get_supported_timeframes,
|
|
54
|
+
load_parquet,
|
|
55
|
+
save_parquet,
|
|
56
|
+
)
|
|
57
|
+
from .collectors.binance_public_data_collector import BinancePublicDataCollector
|
|
58
|
+
from .exceptions import (
|
|
59
|
+
DataCollectionError,
|
|
60
|
+
GapFillingError,
|
|
61
|
+
GaplessCryptoDataError,
|
|
62
|
+
NetworkError,
|
|
63
|
+
ValidationError,
|
|
64
|
+
)
|
|
65
|
+
from .gap_filling.safe_file_operations import AtomicCSVOperations, SafeCSVMerger
|
|
66
|
+
from .gap_filling.universal_gap_filler import UniversalGapFiller
|
|
67
|
+
|
|
68
|
+
__all__ = [
|
|
69
|
+
# Simple function-based API (recommended for most users)
|
|
70
|
+
"fetch_data",
|
|
71
|
+
"download",
|
|
72
|
+
"get_supported_symbols",
|
|
73
|
+
"get_supported_timeframes",
|
|
74
|
+
"get_supported_intervals", # Legacy compatibility
|
|
75
|
+
"fill_gaps",
|
|
76
|
+
"get_info",
|
|
77
|
+
"save_parquet",
|
|
78
|
+
"load_parquet",
|
|
79
|
+
# Advanced class-based API (for complex workflows)
|
|
80
|
+
"BinancePublicDataCollector",
|
|
81
|
+
"UniversalGapFiller",
|
|
82
|
+
"AtomicCSVOperations",
|
|
83
|
+
"SafeCSVMerger",
|
|
84
|
+
# Structured exception hierarchy (v3.2.0)
|
|
85
|
+
"GaplessCryptoDataError",
|
|
86
|
+
"DataCollectionError",
|
|
87
|
+
"ValidationError",
|
|
88
|
+
"NetworkError",
|
|
89
|
+
"GapFillingError",
|
|
90
|
+
# AI agent probe hooks
|
|
91
|
+
"__probe__",
|
|
92
|
+
]
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Gapless Crypto Data v4.0.1 - USDT spot market data collection with zero gaps guarantee
|
|
3
|
-
|
|
4
|
-
Market Compatibility:
|
|
5
|
-
- USDT SPOT PAIRS ONLY (BTCUSDT, ETHUSDT, SOLUSDT, etc.)
|
|
6
|
-
- NO futures, perpetuals, or derivatives support
|
|
7
|
-
- NO non-USDT pairs (BTC/ETH, etc.)
|
|
8
|
-
- NO margin trading data
|
|
9
|
-
|
|
10
|
-
Core Features:
|
|
11
|
-
- Data collection via Binance public data repository (22x performance vs API calls)
|
|
12
|
-
- Full 11-column microstructure format with order flow and liquidity metrics
|
|
13
|
-
- Zero gaps guarantee through authentic API-first validation
|
|
14
|
-
- UV-based Python tooling
|
|
15
|
-
- Atomic file operations
|
|
16
|
-
- Complete 13-timeframe support (1s, 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d)
|
|
17
|
-
- Ultra-high frequency (1s) to daily (1d) data collection
|
|
18
|
-
- Intelligent monthly-to-daily fallback for seamless recent data access
|
|
19
|
-
- Gap detection and filling with authentic data only
|
|
20
|
-
- CCXT-compatible dual parameter support (timeframe/interval)
|
|
21
|
-
- Backward compatibility with 5-year deprecation period
|
|
22
|
-
|
|
23
|
-
Data Source:
|
|
24
|
-
Binance Spot Market: https://data.binance.vision/data/spot/monthly/klines/
|
|
25
|
-
Market Type: SPOT only (no futures/derivatives)
|
|
26
|
-
Supported Pairs: USDT-quoted spot pairs exclusively
|
|
27
|
-
|
|
28
|
-
Usage:
|
|
29
|
-
# Function-based API
|
|
30
|
-
import gapless_crypto_data as gcd
|
|
31
|
-
|
|
32
|
-
# Fetch recent data as standard pandas DataFrame
|
|
33
|
-
df = gcd.fetch_data("BTCUSDT", timeframe="1h", limit=1000)
|
|
34
|
-
|
|
35
|
-
# Standard pandas operations for analysis
|
|
36
|
-
returns = df['close'].pct_change() # Returns calculation
|
|
37
|
-
rolling_vol = df['close'].rolling(20).std() # Rolling volatility
|
|
38
|
-
max_drawdown = (df['close'] / df['close'].cummax() - 1).min() # Drawdown
|
|
39
|
-
|
|
40
|
-
# Resampling with pandas
|
|
41
|
-
df_resampled = df.set_index('date').resample('4H').agg({
|
|
42
|
-
'open': 'first', 'high': 'max', 'low': 'min',
|
|
43
|
-
'close': 'last', 'volume': 'sum'
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
# Backward compatibility (legacy interval parameter)
|
|
47
|
-
df = gcd.fetch_data("BTCUSDT", interval="1h", limit=1000) # DeprecationWarning
|
|
48
|
-
|
|
49
|
-
# Download with date range
|
|
50
|
-
df = gcd.download("ETHUSDT", timeframe="4h", start="2024-01-01", end="2024-06-30")
|
|
51
|
-
|
|
52
|
-
# Get available symbols and timeframes
|
|
53
|
-
symbols = gcd.get_supported_symbols()
|
|
54
|
-
timeframes = gcd.get_supported_timeframes()
|
|
55
|
-
|
|
56
|
-
# Fill gaps in existing data
|
|
57
|
-
results = gcd.fill_gaps("./data")
|
|
58
|
-
|
|
59
|
-
# Class-based API (for complex workflows)
|
|
60
|
-
from gapless_crypto_data import BinancePublicDataCollector, UniversalGapFiller
|
|
61
|
-
|
|
62
|
-
collector = BinancePublicDataCollector()
|
|
63
|
-
result = collector.collect_timeframe_data("1h")
|
|
64
|
-
df = result["dataframe"]
|
|
65
|
-
|
|
66
|
-
CLI Usage (DEPRECATED - Will be removed in v4.0.0):
|
|
67
|
-
⚠️ The CLI is deprecated. Please use the Python API instead (see above).
|
|
68
|
-
|
|
69
|
-
Legacy CLI (deprecated):
|
|
70
|
-
uv run gapless-crypto-data --symbol SOLUSDT --timeframes 1s,1m,5m,1h,4h,1d
|
|
71
|
-
uv run gapless-crypto-data --symbol BTCUSDT --timeframes 1s,6h,8h,12h,1d
|
|
72
|
-
uv run gapless-crypto-data --fill-gaps --directory ./data
|
|
73
|
-
|
|
74
|
-
Supported Symbols (USDT Spot Only):
|
|
75
|
-
BTCUSDT, ETHUSDT, SOLUSDT, ADAUSDT, DOTUSDT, LINKUSDT, MATICUSDT,
|
|
76
|
-
AVAXUSDT, ATOMUSDT, NEARUSDT, FTMUSDT, SANDUSDT, MANAUSDT, etc.
|
|
77
|
-
"""
|
|
78
|
-
|
|
79
|
-
__version__ = "4.0.1"
|
|
80
|
-
__author__ = "Eon Labs"
|
|
81
|
-
__email__ = "terry@eonlabs.com"
|
|
82
|
-
|
|
83
|
-
# Core classes (advanced/power-user API)
|
|
84
|
-
# Enhanced DataFrame for domain-specific operations
|
|
85
|
-
# Convenience functions (simple/intuitive API)
|
|
86
|
-
# API-only probe hooks for AI coding agents
|
|
87
|
-
from . import __probe__
|
|
88
|
-
from .api import (
|
|
89
|
-
download,
|
|
90
|
-
fetch_data,
|
|
91
|
-
fill_gaps,
|
|
92
|
-
get_info,
|
|
93
|
-
get_supported_intervals,
|
|
94
|
-
get_supported_symbols,
|
|
95
|
-
get_supported_timeframes,
|
|
96
|
-
load_parquet,
|
|
97
|
-
save_parquet,
|
|
98
|
-
)
|
|
99
|
-
from .collectors.binance_public_data_collector import BinancePublicDataCollector
|
|
100
|
-
from .exceptions import (
|
|
101
|
-
DataCollectionError,
|
|
102
|
-
GapFillingError,
|
|
103
|
-
GaplessCryptoDataError,
|
|
104
|
-
NetworkError,
|
|
105
|
-
ValidationError,
|
|
106
|
-
)
|
|
107
|
-
from .gap_filling.safe_file_operations import AtomicCSVOperations, SafeCSVMerger
|
|
108
|
-
from .gap_filling.universal_gap_filler import UniversalGapFiller
|
|
109
|
-
|
|
110
|
-
__all__ = [
|
|
111
|
-
# Simple function-based API (recommended for most users)
|
|
112
|
-
"fetch_data",
|
|
113
|
-
"download",
|
|
114
|
-
"get_supported_symbols",
|
|
115
|
-
"get_supported_timeframes",
|
|
116
|
-
"get_supported_intervals", # Legacy compatibility
|
|
117
|
-
"fill_gaps",
|
|
118
|
-
"get_info",
|
|
119
|
-
"save_parquet",
|
|
120
|
-
"load_parquet",
|
|
121
|
-
# Advanced class-based API (for complex workflows)
|
|
122
|
-
"BinancePublicDataCollector",
|
|
123
|
-
"UniversalGapFiller",
|
|
124
|
-
"AtomicCSVOperations",
|
|
125
|
-
"SafeCSVMerger",
|
|
126
|
-
# Structured exception hierarchy (v3.2.0)
|
|
127
|
-
"GaplessCryptoDataError",
|
|
128
|
-
"DataCollectionError",
|
|
129
|
-
"ValidationError",
|
|
130
|
-
"NetworkError",
|
|
131
|
-
"GapFillingError",
|
|
132
|
-
# AI agent probe hooks
|
|
133
|
-
"__probe__",
|
|
134
|
-
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/CURRENT_ARCHITECTURE_STATUS.yaml
RENAMED
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/PYPI_PUBLISHING_CONFIGURATION.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/SSOT_DOCUMENTATION_ARCHITECTURE.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/api/dual-parameter-enhancement.yaml
RENAMED
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/api/gapless-dataframe-enhancement.yaml
RENAMED
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/api/pruning-parquet-implementation.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/audit/comprehensive-audit-findings.yaml
RENAMED
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/audit/comprehensive-audit-plan.yaml
RENAMED
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/development/CLI_MIGRATION_GUIDE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/diagrams/01-collection-pipeline.mmd
RENAMED
|
File without changes
|
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/diagrams/03-multi-symbol-collection.mmd
RENAMED
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/diagrams/04-download-caching.mmd
RENAMED
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/diagrams/05-validation-flow.mmd
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/docs/plan/0001-v4.0.1-release/plan.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/__probe__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/resume/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/utils/etag_cache.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/src/gapless_crypto_data/validation/models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_binance_collector_advanced.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_monthly_to_daily_fallback.py
RENAMED
|
File without changes
|
{gapless_crypto_data-4.0.2 → gapless_crypto_data-4.0.3}/tests/test_output_dir_dataframe_fix.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|