Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[build-system]
requires = ["setuptools>=69", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "crypto-live-pool-pipelines"
version = "0.1.0"
description = "Live-pool rotation pipelines for crypto strategy runtime compatibility."
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"quant-platform-kit @ git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@0063af3b4a974650ea58a7d3f26dd1b94f65d3e8",
"pandas==3.0.3",
"numpy==2.4.6",
"requests==2.34.2",
"matplotlib==3.11.0",
"PyYAML==6.0.3",
"lightgbm==4.6.0",
"scikit-learn==1.9.0",
"scipy==1.17.1",
"joblib==1.5.3",
"google-cloud-storage==3.12.0",
"google-cloud-firestore==2.28.0",
]

[project.optional-dependencies]
test = ["pytest>=8"]

[tool.setuptools]
package-dir = {"" = "src"}

[tool.setuptools.packages.find]
where = ["src"]
Comment on lines +30 to +33

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Package the existing src namespace

With package-dir = {"" = "src"} plus package discovery under src, setuptools treats the src/ directory as the package root instead of packaging the existing src package itself. This repo's scripts and tests import modules as src.* (for example from src.config import load_config), so wheel/non-checkout installs created from this new pyproject.toml will omit src/config.py and the other src.* modules; either discover packages from the repo root or move the code under a package below src.

Useful? React with 👍 / 👎.


12 changes: 12 additions & 0 deletions qsl.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[qsl]
repo = "CryptoLivePoolPipelines"
tier = "pipeline"
ring = 2
allow_legacy = true
enforce_bundle = false
artifact_contract = "docs/integration_contract.md"
snapshot_contract = "docs/integration_contract.md"


[qsl.compat]
bundle = "2026.07.0"
2 changes: 1 addition & 1 deletion requirements-lock.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
quant-platform-kit @ git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@d786c1140967f0e96e35599d057f0655e5a9ba25
quant-platform-kit @ git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@0063af3b4a974650ea58a7d3f26dd1b94f65d3e8
pandas==3.0.3
numpy==2.4.6
requests==2.34.2
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
quant-platform-kit @ git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@d786c1140967f0e96e35599d057f0655e5a9ba25
quant-platform-kit @ git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@0063af3b4a974650ea58a7d3f26dd1b94f65d3e8
pandas>=3.0.3
numpy>=2.4.6,<2.5
requests>=2.34.2
Expand Down
2 changes: 1 addition & 1 deletion tests/test_monthly_publish_workflow_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
README_ZH_PATH = PROJECT_ROOT / "README.zh-CN.md"
QPK_DEPENDENCY = (
"quant-platform-kit @ "
"git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@d786c1140967f0e96e35599d057f0655e5a9ba25"
"git+https://github.com/QuantStrategyLab/QuantPlatformKit.git@0063af3b4a974650ea58a7d3f26dd1b94f65d3e8"
)


Expand Down
22 changes: 22 additions & 0 deletions tests/test_qsl_metadata.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
"""Minimal QSL compat metadata smoke tests."""

from __future__ import annotations

from pathlib import Path
import tomllib


def test_qsl_metadata_has_compat_bundle() -> None:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Make the QSL smoke test discoverable by CI

In the checked CI workflow (.github/workflows/ci.yml), the test step runs python -m unittest discover -s tests -v, but this new pytest-style module-level function is not collected by unittest (running python -m unittest tests.test_qsl_metadata -v reports 0 tests). As a result, the only smoke test for the new qsl.toml metadata never runs in the existing CI path; convert it to a unittest.TestCase method or update CI to invoke pytest.

Useful? React with 👍 / 👎.

path = Path(__file__).resolve().parents[1] / "qsl.toml"
with path.open("rb") as f:
data = tomllib.load(f)

qsl = data["qsl"]
assert qsl["tier"] == "pipeline"
assert qsl["ring"] == 2
assert qsl.get("repo") == "CryptoLivePoolPipelines"
compat = qsl["compat"]
assert compat["bundle"] == "2026.07.0"

assert qsl.get("artifact_contract") == "docs/integration_contract.md"
assert qsl.get("snapshot_contract") == "docs/integration_contract.md"
1,434 changes: 1,434 additions & 0 deletions uv.lock

Large diffs are not rendered by default.

Loading