nlalpha-backtest 0.8.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 (53) hide show
  1. nlalpha_backtest-0.8.0/.dockerignore +9 -0
  2. nlalpha_backtest-0.8.0/.gitignore +32 -0
  3. nlalpha_backtest-0.8.0/Dockerfile +45 -0
  4. nlalpha_backtest-0.8.0/LICENSE +661 -0
  5. nlalpha_backtest-0.8.0/PKG-INFO +272 -0
  6. nlalpha_backtest-0.8.0/README.md +248 -0
  7. nlalpha_backtest-0.8.0/README.zh.md +249 -0
  8. nlalpha_backtest-0.8.0/pyproject.toml +38 -0
  9. nlalpha_backtest-0.8.0/src/nlalpha_backtest/__init__.py +66 -0
  10. nlalpha_backtest-0.8.0/src/nlalpha_backtest/context.py +5 -0
  11. nlalpha_backtest-0.8.0/src/nlalpha_backtest/data.py +33 -0
  12. nlalpha_backtest-0.8.0/src/nlalpha_backtest/engine.py +254 -0
  13. nlalpha_backtest-0.8.0/src/nlalpha_backtest/execution/__init__.py +50 -0
  14. nlalpha_backtest-0.8.0/src/nlalpha_backtest/execution/backend.py +300 -0
  15. nlalpha_backtest-0.8.0/src/nlalpha_backtest/execution/backtest_executor.py +117 -0
  16. nlalpha_backtest-0.8.0/src/nlalpha_backtest/execution/batch_runtime.py +435 -0
  17. nlalpha_backtest-0.8.0/src/nlalpha_backtest/execution/event_data.py +173 -0
  18. nlalpha_backtest-0.8.0/src/nlalpha_backtest/execution/local_executor.py +471 -0
  19. nlalpha_backtest-0.8.0/src/nlalpha_backtest/execution/market_time.py +441 -0
  20. nlalpha_backtest-0.8.0/src/nlalpha_backtest/execution/result_integrity.py +41 -0
  21. nlalpha_backtest-0.8.0/src/nlalpha_backtest/execution/runner.py +365 -0
  22. nlalpha_backtest-0.8.0/src/nlalpha_backtest/execution/runtime.py +225 -0
  23. nlalpha_backtest-0.8.0/src/nlalpha_backtest/execution/validation.py +23 -0
  24. nlalpha_backtest-0.8.0/src/nlalpha_backtest/jobs/__init__.py +13 -0
  25. nlalpha_backtest-0.8.0/src/nlalpha_backtest/jobs/job_service.py +586 -0
  26. nlalpha_backtest-0.8.0/src/nlalpha_backtest/jobs/job_store.py +326 -0
  27. nlalpha_backtest-0.8.0/src/nlalpha_backtest/jobs/job_store_redis.py +255 -0
  28. nlalpha_backtest-0.8.0/src/nlalpha_backtest/knowledge/execution.md +33 -0
  29. nlalpha_backtest-0.8.0/src/nlalpha_backtest/reports.py +170 -0
  30. nlalpha_backtest-0.8.0/src/nlalpha_backtest/server.py +1669 -0
  31. nlalpha_backtest-0.8.0/tests/nlalpha_backtest_app_fixtures.py +250 -0
  32. nlalpha_backtest-0.8.0/tests/nlalpha_backtest_worker_fixtures.py +39 -0
  33. nlalpha_backtest-0.8.0/tests/test_application.py +207 -0
  34. nlalpha_backtest-0.8.0/tests/test_application_integration.py +132 -0
  35. nlalpha_backtest-0.8.0/tests/test_batch_execution.py +306 -0
  36. nlalpha_backtest-0.8.0/tests/test_confess_contract.py +121 -0
  37. nlalpha_backtest-0.8.0/tests/test_contract_compatibility.py +80 -0
  38. nlalpha_backtest-0.8.0/tests/test_engine_compatibility.py +227 -0
  39. nlalpha_backtest-0.8.0/tests/test_event_data.py +129 -0
  40. nlalpha_backtest-0.8.0/tests/test_event_mcp.py +119 -0
  41. nlalpha_backtest-0.8.0/tests/test_execution_capabilities.py +173 -0
  42. nlalpha_backtest-0.8.0/tests/test_job_service.py +555 -0
  43. nlalpha_backtest-0.8.0/tests/test_job_store.py +178 -0
  44. nlalpha_backtest-0.8.0/tests/test_job_store_redis.py +96 -0
  45. nlalpha_backtest-0.8.0/tests/test_local_executor.py +615 -0
  46. nlalpha_backtest-0.8.0/tests/test_nautilus_fee_config.py +139 -0
  47. nlalpha_backtest-0.8.0/tests/test_process_telemetry.py +182 -0
  48. nlalpha_backtest-0.8.0/tests/test_response_budget_projection.py +130 -0
  49. nlalpha_backtest-0.8.0/tests/test_result_integrity.py +324 -0
  50. nlalpha_backtest-0.8.0/tests/test_result_integrity_contract.py +121 -0
  51. nlalpha_backtest-0.8.0/tests/test_service_contracts.py +100 -0
  52. nlalpha_backtest-0.8.0/tests/test_shutdown_callback.py +65 -0
  53. nlalpha_backtest-0.8.0/tests/test_validation_error_details.py +222 -0
@@ -0,0 +1,9 @@
1
+ .git/
2
+ .venv/
3
+ __pycache__/
4
+ *.pyc
5
+ dist/
6
+ .pytest_cache/
7
+ .env
8
+ .docs/
9
+ workspace/
@@ -0,0 +1,32 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .venv/
7
+ venv/
8
+
9
+ # Build / Distribution
10
+ dist/
11
+ build/
12
+ *.egg-info/
13
+ .eggs/
14
+ wheels/
15
+
16
+ # Test / Coverage
17
+ .pytest_cache/
18
+ .coverage
19
+ .tox/
20
+ .mypy_cache/
21
+ htmlcov/
22
+
23
+ # IDE
24
+ .idea/
25
+ .vscode/
26
+ *.swp
27
+ *.swo
28
+ *~
29
+
30
+ # OS
31
+ .DS_Store
32
+ Thumbs.db
@@ -0,0 +1,45 @@
1
+ ARG PYTHON_BASE_IMAGE=python:3.12-slim
2
+
3
+ FROM ghcr.io/astral-sh/uv:0.11.2 AS uv-tool
4
+ FROM ${PYTHON_BASE_IMAGE} AS builder
5
+ COPY --from=uv-tool /uv /usr/local/bin/uv
6
+ ENV UV_PROJECT_ENVIRONMENT=/opt/venv \
7
+ UV_PYTHON_DOWNLOADS=never \
8
+ UV_LINK_MODE=copy
9
+ WORKDIR /workspace
10
+ COPY . /workspace/
11
+ ARG ARTIFACT_BACKEND=redis
12
+ RUN case "$ARTIFACT_BACKEND" in \
13
+ redis) set -- ;; \
14
+ s3) set -- --extra s3 ;; \
15
+ *) echo "Unsupported ARTIFACT_BACKEND: $ARTIFACT_BACKEND" >&2; exit 1 ;; \
16
+ esac && \
17
+ uv sync --locked --no-default-groups --no-editable \
18
+ --python /usr/local/bin/python "$@" \
19
+ --package nlalpha-backtest \
20
+ --package nlalpha-data \
21
+ --package nlalpha-family-cta \
22
+ --package nlalpha-talib \
23
+ --package nlalpha-performance \
24
+ --package nlalpha-nautilus \
25
+ && uv pip check --python /opt/venv/bin/python
26
+
27
+ FROM ${PYTHON_BASE_IMAGE} AS runtime
28
+ RUN apt-get update && apt-get install -y --no-install-recommends libstdc++6 libgomp1 && \
29
+ rm -rf /var/lib/apt/lists/* && \
30
+ groupadd -r appuser && useradd -r -g appuser appuser
31
+ WORKDIR /app
32
+ COPY --from=builder /opt/venv /opt/venv
33
+ RUN mkdir -p /data && chown appuser:appuser /data
34
+ ENV JOB_STORE_DSN=sqlite:////data/nlalpha-backtest-jobs.db
35
+ VOLUME ["/data"]
36
+ ENV PATH="/opt/venv/bin:${PATH}" \
37
+ NLALPHA_HOST=0.0.0.0 \
38
+ NLALPHA_PORT=8000 \
39
+ PYTHONUNBUFFERED=1 \
40
+ PYTHONDONTWRITEBYTECODE=1
41
+ USER appuser
42
+ EXPOSE 8000
43
+ HEALTHCHECK --interval=10s --timeout=5s --start-period=10s --retries=3 \
44
+ CMD python -c "import os, urllib.request; urllib.request.urlopen('http://127.0.0.1:' + os.environ['NLALPHA_PORT'] + '/ready', timeout=4)"
45
+ CMD ["python", "-m", "nlalpha_backtest.server"]