centaur_technical_indicators 1.2.0__tar.gz → 1.2.1__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.
- centaur_technical_indicators-1.2.1/.github/pull_request_template.md +28 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/AGENTS.md +48 -1
- centaur_technical_indicators-1.2.1/AI_FRIENDLY_ROADMAP.md +90 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/CHANGELOG.md +17 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/CONTRIBUTING.md +23 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/Cargo.lock +4 -4
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/Cargo.toml +2 -2
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/PKG-INFO +1 -1
- centaur_technical_indicators-1.2.1/ai-policy.yaml +52 -0
- centaur_technical_indicators-1.2.1/docs/AI_ONBOARDING.md +64 -0
- centaur_technical_indicators-1.2.1/docs/REPO_MAP.md +74 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/trend_indicators.rs +0 -2
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.github/CODEOWNERS +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.github/copilot-instructions.md +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.github/workflows/CI.yml +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.github/workflows/python-package.yml +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.gitignore +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/CODE_OF_CONDUCT.md +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/LICENSE-MIT +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/README.md +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/SECURITY.md +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/assets/pytechnicalindicators_banner.png +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/pyproject.toml +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/requirements.txt +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/candle_indicators.rs +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/chart_trends.rs +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/correlation_indicators.rs +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/lib.rs +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/momentum_indicators.rs +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/moving_average.rs +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/other_indicators.rs +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/strength_indicators.rs +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/volatility_indicators.rs +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/test_requirements.txt +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_candle_indicators.py +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_chart_trends.py +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_correlation_indicators.py +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_momentum_indicators.py +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_moving_average.py +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_other_indicators.py +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_strength_indicators.py +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_trend_indicators.py +0 -0
- {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_volatility_indicators.py +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
- What changed?
|
|
3
|
+
- Why was this change needed?
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
- Files/modules touched:
|
|
7
|
+
- Intentionally not changed:
|
|
8
|
+
|
|
9
|
+
## Compatibility
|
|
10
|
+
- User-facing Python API impact:
|
|
11
|
+
- Migration notes (if any):
|
|
12
|
+
|
|
13
|
+
## Validation
|
|
14
|
+
- [ ] `maturin develop` (bindings compile cleanly)
|
|
15
|
+
- [ ] `python -m pytest` (all tests pass)
|
|
16
|
+
- [ ] `cargo fmt --check` (no formatting diffs)
|
|
17
|
+
|
|
18
|
+
Command output summary:
|
|
19
|
+
|
|
20
|
+
## Changelog
|
|
21
|
+
- [ ] `CHANGELOG.md` updated for user-facing changes
|
|
22
|
+
- Entry summary:
|
|
23
|
+
|
|
24
|
+
## Manual Verification
|
|
25
|
+
- What was manually verified?
|
|
26
|
+
|
|
27
|
+
## AI Assistance Disclosure
|
|
28
|
+
- Was AI used? If yes, summarize what AI changed and what you verified manually.
|
|
@@ -9,6 +9,13 @@ Guidance for coding agents working in this repository.
|
|
|
9
9
|
- `src/` → Rust implementation + Python bindings
|
|
10
10
|
- `tests/` → Python-facing smoke/behavior tests for bindings
|
|
11
11
|
|
|
12
|
+
## Docs to review before coding
|
|
13
|
+
- `docs/AI_ONBOARDING.md`
|
|
14
|
+
- `.github/copilot-instructions.md`
|
|
15
|
+
- `AI_FRIENDLY_ROADMAP.md`
|
|
16
|
+
- `docs/REPO_MAP.md`
|
|
17
|
+
- `CONTRIBUTING.md`
|
|
18
|
+
|
|
12
19
|
## Recommended workflow
|
|
13
20
|
1. **Set up an isolated environment**
|
|
14
21
|
```bash
|
|
@@ -42,6 +49,30 @@ Guidance for coding agents working in this repository.
|
|
|
42
49
|
- Keep naming and argument conventions consistent with neighboring functions.
|
|
43
50
|
- Use clear, user-facing error messages for invalid inputs.
|
|
44
51
|
|
|
52
|
+
## Change scope discipline
|
|
53
|
+
- Keep changes minimal and focused on the requested task.
|
|
54
|
+
- Do not include opportunistic refactors unless explicitly requested.
|
|
55
|
+
- If you identify unrelated issues, note them separately instead of bundling them into the same change.
|
|
56
|
+
- Preserve existing file organization and naming conventions unless the task requires a structural change.
|
|
57
|
+
|
|
58
|
+
## Backward compatibility rules
|
|
59
|
+
When changing public Python APIs, preserve compatibility unless the task explicitly allows a breaking change:
|
|
60
|
+
|
|
61
|
+
1. Do not silently change indicator semantics, output ordering, or warmup behavior.
|
|
62
|
+
2. Do not remove or rename public functions, types, enums, or parameters without explicit approval.
|
|
63
|
+
3. If behavior changes are required, document them in docstrings and `CHANGELOG.md` with clear migration notes.
|
|
64
|
+
|
|
65
|
+
## Pre-PR quality gates (must pass)
|
|
66
|
+
Run these before opening a PR:
|
|
67
|
+
|
|
68
|
+
1. `maturin develop` (bindings compile cleanly)
|
|
69
|
+
2. `python -m pytest` (all tests pass)
|
|
70
|
+
3. `cargo fmt --check` (no formatting diffs)
|
|
71
|
+
|
|
72
|
+
## CI implementation policy
|
|
73
|
+
- Prefer native Python/maturin/cargo commands in workflows.
|
|
74
|
+
- Do not introduce third-party GitHub Actions unless explicitly approved by maintainers.
|
|
75
|
+
|
|
45
76
|
## Validation expectations before finishing
|
|
46
77
|
- Rebuild bindings after Rust changes: `maturin develop`.
|
|
47
78
|
- Run relevant tests (ideally full `python -m pytest`).
|
|
@@ -54,8 +85,23 @@ Guidance for coding agents working in this repository.
|
|
|
54
85
|
- [ ] Documentation/changelog updated when needed.
|
|
55
86
|
- [ ] Commit message clearly describes the change.
|
|
56
87
|
|
|
88
|
+
## PR expectations for agents
|
|
89
|
+
- Keep PRs focused and minimal.
|
|
90
|
+
- Summarize what the agent changed and what was manually verified.
|
|
91
|
+
- Include command output summary for the required quality gates.
|
|
92
|
+
- Explicitly note the `CHANGELOG.md` entry.
|
|
93
|
+
|
|
94
|
+
### Required PR summary format
|
|
95
|
+
Use this structure in PR descriptions/comments:
|
|
96
|
+
|
|
97
|
+
1. `Summary`: what changed and why.
|
|
98
|
+
2. `Scope`: files/modules touched and what was intentionally not changed.
|
|
99
|
+
3. `Compatibility`: any user-facing behavior/API impact.
|
|
100
|
+
4. `Validation`: results summary for `maturin develop`, `pytest`, and `cargo fmt`.
|
|
101
|
+
5. `Changelog`: exact `CHANGELOG.md` entry added/updated.
|
|
102
|
+
|
|
57
103
|
## Repository expectations
|
|
58
|
-
- This is a public Rust library. Prioritize correctness, determinism, and backward compatibility.
|
|
104
|
+
- This is a public Python/Rust library. Prioritize correctness, determinism, and backward compatibility.
|
|
59
105
|
- Prefer minimal, focused diffs over broad refactors.
|
|
60
106
|
- Do not add new dependencies unless explicitly requested.
|
|
61
107
|
- Treat public APIs, documented behavior, and examples as stability-sensitive.
|
|
@@ -69,3 +115,4 @@ Guidance for coding agents working in this repository.
|
|
|
69
115
|
## Change boundaries
|
|
70
116
|
- Do not modify CI, licensing, security, or contributor-governance files unless explicitly requested.
|
|
71
117
|
- Keep unrelated formatting churn to a minimum.
|
|
118
|
+
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# AI-Friendly Roadmap
|
|
2
|
+
|
|
3
|
+
This document is a practical map for contributors and coding agents working in `CentaurTechnicalIndicators-Python`.
|
|
4
|
+
|
|
5
|
+
## How to use this roadmap
|
|
6
|
+
|
|
7
|
+
- `Now`: high-confidence, near-term items that improve contributor and agent reliability.
|
|
8
|
+
- `Next`: medium-term items that build on completed `Now` work.
|
|
9
|
+
- `Later`: directional items that should not block current PRs.
|
|
10
|
+
- Each milestone includes acceptance criteria and non-goals to keep the implementation scope clear.
|
|
11
|
+
|
|
12
|
+
## Current API surface by module
|
|
13
|
+
|
|
14
|
+
This package exposes Python bindings for the following indicator modules from the upstream Rust crate, each with `single` and/or `bulk` submodules where applicable:
|
|
15
|
+
|
|
16
|
+
- `candle_indicators`: candle-derived indicators (bands/channels/envelopes and related tools).
|
|
17
|
+
- `chart_trends`: peak/valley and trend-structure analysis.
|
|
18
|
+
- `correlation_indicators`: pairwise/statistical relationship indicators.
|
|
19
|
+
- `momentum_indicators`: momentum and oscillator families.
|
|
20
|
+
- `moving_average`: core moving-average implementations.
|
|
21
|
+
- `other_indicators`: miscellaneous indicators.
|
|
22
|
+
- `strength_indicators`: strength/volume participation indicators.
|
|
23
|
+
- `trend_indicators`: trend direction/strength systems.
|
|
24
|
+
- `volatility_indicators`: volatility and range-expansion indicators.
|
|
25
|
+
|
|
26
|
+
Shared Python-side support:
|
|
27
|
+
|
|
28
|
+
- `lib.rs`: PyO3 module wiring, shared type enum definitions.
|
|
29
|
+
- `PyConstantModelType`, `DeviationModel`, `MovingAverageType`: shared enums passed as strings from Python.
|
|
30
|
+
|
|
31
|
+
## Binding design conventions
|
|
32
|
+
|
|
33
|
+
1. **Preserve the bulk/single API pattern** — each indicator exposes a `bulk` (returns list) and `single` (returns scalar) variant.
|
|
34
|
+
2. **Accept enum arguments as strings** — all model/type parameters are accepted as Python strings and resolved in Rust with user-friendly error messages on invalid input.
|
|
35
|
+
3. **Use `PyValueError`** for all user-facing error surfaces at the Python boundary.
|
|
36
|
+
4. **Do not silently change indicator semantics** — bindings delegate all calculation logic to the upstream Rust crate.
|
|
37
|
+
|
|
38
|
+
## Testing/validation expectations
|
|
39
|
+
|
|
40
|
+
Before opening a PR, contributors should run and report:
|
|
41
|
+
|
|
42
|
+
1. `maturin develop` (bindings compile cleanly)
|
|
43
|
+
2. `python -m pytest` (all tests pass)
|
|
44
|
+
3. `cargo fmt --check` (no formatting diffs)
|
|
45
|
+
|
|
46
|
+
## Contributor workflow roadmap
|
|
47
|
+
|
|
48
|
+
This section tracks changes that make the repository easier for both human contributors and coding agents to work in safely.
|
|
49
|
+
|
|
50
|
+
### Now
|
|
51
|
+
|
|
52
|
+
1. **PR quality report standardization**
|
|
53
|
+
- Goal: all AI/human PRs present the same validation summary shape.
|
|
54
|
+
- Acceptance criteria:
|
|
55
|
+
- `AGENTS.md` defines a required PR summary format.
|
|
56
|
+
- PR descriptions consistently include `Summary`, `Scope`, `Compatibility`, `Validation`, and `Changelog`.
|
|
57
|
+
- Non-goals:
|
|
58
|
+
- Enforcing via CI in this milestone.
|
|
59
|
+
2. **Repository orientation map**
|
|
60
|
+
- Goal: reduce onboarding/search time for contributors and agents.
|
|
61
|
+
- Acceptance criteria:
|
|
62
|
+
- `docs/REPO_MAP.md` exists with key directories, extension points, and "if changing X, also check Y" guidance.
|
|
63
|
+
- Non-goals:
|
|
64
|
+
- Exhaustive architecture documentation.
|
|
65
|
+
3. **Machine-readable contribution policy**
|
|
66
|
+
- Goal: enable deterministic checks by automation/bots.
|
|
67
|
+
- Acceptance criteria:
|
|
68
|
+
- `ai-policy.yaml` lists required checks and user-facing change obligations.
|
|
69
|
+
- Policy contents match `AGENTS.md`/`CONTRIBUTING.md`.
|
|
70
|
+
- Non-goals:
|
|
71
|
+
- Full custom policy engine implementation.
|
|
72
|
+
|
|
73
|
+
### Next
|
|
74
|
+
|
|
75
|
+
1. **CI guardrails for contribution policy**
|
|
76
|
+
- Goal: make contributor requirements executable rather than advisory.
|
|
77
|
+
- Acceptance criteria:
|
|
78
|
+
- CI checks for required validation commands.
|
|
79
|
+
- CI checks for `CHANGELOG.md` updates on user-facing changes.
|
|
80
|
+
- Non-goals:
|
|
81
|
+
- Blocking on benchmark jobs in the main CI pipeline.
|
|
82
|
+
|
|
83
|
+
### Later
|
|
84
|
+
|
|
85
|
+
1. **Agent bootstrap command**
|
|
86
|
+
- Goal: provide a one-command local setup and verification flow for new contributors/agents.
|
|
87
|
+
- Acceptance criteria:
|
|
88
|
+
- Script or task runner target that documents and runs core checks in order.
|
|
89
|
+
- Non-goals:
|
|
90
|
+
- Replacing existing contributor docs.
|
|
@@ -6,6 +6,23 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## [1.2.1] - 2026-03-01
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
- Updated `centaur_technical_indicators` Rust crate dependency from `1.2.0` to `1.2.1`
|
|
13
|
+
- Removed `#[allow(deprecated)]` from `volume_price_trend` binding functions (`src/trend_indicators.rs`) as the upstream crate removed the deprecation marker in `1.2.1`
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- Added `AI_FRIENDLY_ROADMAP.md` with module API surface, contributor-workflow, and library-feature roadmap adapted for this Python binding repository
|
|
17
|
+
- Added `docs/AI_ONBOARDING.md` as canonical start-here onboarding flow for coding agents
|
|
18
|
+
- Added `docs/REPO_MAP.md` with a quick repository map, extension points, and "if changing X, also check Y" guidance
|
|
19
|
+
- Added machine-readable repository policy file `ai-policy.yaml` for required checks, change obligations, and PR section requirements
|
|
20
|
+
- Added default pull request template at `.github/pull_request_template.md` with required sections (`Summary`, `Scope`, `Compatibility`, `Validation`, `Changelog`)
|
|
21
|
+
- Expanded `AGENTS.md` with change-scope discipline, backward compatibility rules, pre-PR quality gates, CI implementation policy, and required PR summary format
|
|
22
|
+
- Updated `CONTRIBUTING.md` with local quality gates and AI-assisted contribution checklist
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
9
26
|
## [1.2.0] - 2026-02-26
|
|
10
27
|
|
|
11
28
|
### Changed
|
|
@@ -51,5 +51,28 @@ See [open issues](https://github.com/ChironMind/CentaurTechnicalIndicators-Pytho
|
|
|
51
51
|
|
|
52
52
|
---
|
|
53
53
|
|
|
54
|
+
## 🔒 Local quality gates
|
|
55
|
+
|
|
56
|
+
Run these before opening a PR:
|
|
57
|
+
|
|
58
|
+
1. `maturin develop` — bindings compile cleanly
|
|
59
|
+
2. `python -m pytest` — all tests pass
|
|
60
|
+
3. `cargo fmt --check` — no formatting diffs
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 🤖 AI-assisted contribution checklist
|
|
65
|
+
|
|
66
|
+
If you used an AI agent to contribute:
|
|
67
|
+
|
|
68
|
+
- [ ] Reviewed all AI-generated changes for correctness
|
|
69
|
+
- [ ] Confirmed the scope is minimal and matches the task
|
|
70
|
+
- [ ] Verified `maturin develop` builds successfully
|
|
71
|
+
- [ ] Verified `python -m pytest` passes
|
|
72
|
+
- [ ] Updated `CHANGELOG.md` with a user-facing entry
|
|
73
|
+
- [ ] Disclosed AI assistance in the PR description
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
54
77
|
Thanks again for your interest and contributions!
|
|
55
78
|
|
|
@@ -10,17 +10,17 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
|
|
|
10
10
|
|
|
11
11
|
[[package]]
|
|
12
12
|
name = "centaur_technical_indicators"
|
|
13
|
-
version = "1.2.
|
|
13
|
+
version = "1.2.1"
|
|
14
14
|
dependencies = [
|
|
15
|
-
"centaur_technical_indicators 1.2.
|
|
15
|
+
"centaur_technical_indicators 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
16
16
|
"pyo3",
|
|
17
17
|
]
|
|
18
18
|
|
|
19
19
|
[[package]]
|
|
20
20
|
name = "centaur_technical_indicators"
|
|
21
|
-
version = "1.2.
|
|
21
|
+
version = "1.2.1"
|
|
22
22
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
23
|
-
checksum = "
|
|
23
|
+
checksum = "63ef54b5d445d6f4c8b4e6971f57caa886556467112b283ff8ca1af16f6a8c90"
|
|
24
24
|
|
|
25
25
|
[[package]]
|
|
26
26
|
name = "heck"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "centaur_technical_indicators"
|
|
3
|
-
version = "1.2.
|
|
3
|
+
version = "1.2.1"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
|
|
@@ -11,4 +11,4 @@ crate-type = ["cdylib"]
|
|
|
11
11
|
|
|
12
12
|
[dependencies]
|
|
13
13
|
pyo3 = "0.25.0"
|
|
14
|
-
centaur_technical_indicators = "1.2.
|
|
14
|
+
centaur_technical_indicators = "1.2.1"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: centaur_technical_indicators
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.1
|
|
4
4
|
Classifier: Development Status :: 5 - Production/Stable
|
|
5
5
|
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
6
6
|
Classifier: Topic :: Software Development :: Libraries
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
version: 1
|
|
2
|
+
repository: CentaurTechnicalIndicators-Python
|
|
3
|
+
|
|
4
|
+
required_checks:
|
|
5
|
+
local_commands:
|
|
6
|
+
- maturin develop
|
|
7
|
+
- python -m pytest
|
|
8
|
+
- cargo fmt --check
|
|
9
|
+
benchmark:
|
|
10
|
+
required_for_paths:
|
|
11
|
+
- src/candle_indicators.rs
|
|
12
|
+
- src/chart_trends.rs
|
|
13
|
+
- src/correlation_indicators.rs
|
|
14
|
+
- src/momentum_indicators.rs
|
|
15
|
+
- src/moving_average.rs
|
|
16
|
+
- src/other_indicators.rs
|
|
17
|
+
- src/strength_indicators.rs
|
|
18
|
+
- src/trend_indicators.rs
|
|
19
|
+
- src/volatility_indicators.rs
|
|
20
|
+
companion_repo: https://github.com/ChironMind/CentaurTechnicalIndicators-benchmarks
|
|
21
|
+
|
|
22
|
+
change_requirements:
|
|
23
|
+
user_facing_change_requires:
|
|
24
|
+
- CHANGELOG.md
|
|
25
|
+
public_api_change_requires:
|
|
26
|
+
- Rust docstring updates for changed/new public binding functions
|
|
27
|
+
- tests in matching tests/ module
|
|
28
|
+
- PR Compatibility section summarizing API impact
|
|
29
|
+
|
|
30
|
+
coding_rules:
|
|
31
|
+
api_pattern:
|
|
32
|
+
instruction: Preserve the bulk/single function variant pattern for all indicators.
|
|
33
|
+
errors:
|
|
34
|
+
required_error_type: PyValueError
|
|
35
|
+
instruction: Surface all errors to Python as PyValueError with user-meaningful messages.
|
|
36
|
+
compatibility:
|
|
37
|
+
preserve_public_api_unless_explicit_breaking_approval: true
|
|
38
|
+
|
|
39
|
+
pr_report:
|
|
40
|
+
required_sections:
|
|
41
|
+
- Summary
|
|
42
|
+
- Scope
|
|
43
|
+
- Compatibility
|
|
44
|
+
- Validation
|
|
45
|
+
- Changelog
|
|
46
|
+
|
|
47
|
+
notes:
|
|
48
|
+
source_of_truth:
|
|
49
|
+
- AGENTS.md
|
|
50
|
+
- CONTRIBUTING.md
|
|
51
|
+
- AI_FRIENDLY_ROADMAP.md
|
|
52
|
+
purpose: Minimal machine-readable policy for AI agents and automation.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# AI Onboarding
|
|
2
|
+
|
|
3
|
+
Start here when an AI agent begins work in `CentaurTechnicalIndicators-Python`.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Provide one deterministic startup flow so agents can orient quickly, avoid policy misses, and make minimal, safe changes without altering public APIs unintentionally.
|
|
8
|
+
|
|
9
|
+
## Startup Flow (in order)
|
|
10
|
+
|
|
11
|
+
1. Read repository rules:
|
|
12
|
+
- `AGENTS.md`
|
|
13
|
+
- `.github/copilot-instructions.md`
|
|
14
|
+
- `CONTRIBUTING.md`
|
|
15
|
+
2. Read project orientation:
|
|
16
|
+
- `docs/REPO_MAP.md`
|
|
17
|
+
- `AI_FRIENDLY_ROADMAP.md`
|
|
18
|
+
3. Use machine-readable policy source:
|
|
19
|
+
- `ai-policy.yaml` (machine-readable contribution policy)
|
|
20
|
+
4. Confirm affected modules in `src/` and keep scope focused.
|
|
21
|
+
|
|
22
|
+
## Non-Negotiable Rules
|
|
23
|
+
|
|
24
|
+
- Preserve the `bulk`/`single` API pattern for all indicator functions.
|
|
25
|
+
- Keep public API behavior stable unless explicitly asked to introduce a breaking change.
|
|
26
|
+
- Add/adjust tests in `tests/` to match any binding changes in `src/`.
|
|
27
|
+
- Add a `CHANGELOG.md` entry for each user-facing change.
|
|
28
|
+
- Always rebuild bindings after Rust source changes: `maturin develop`.
|
|
29
|
+
|
|
30
|
+
## Agent-Friendly Change Strategy
|
|
31
|
+
|
|
32
|
+
1. Identify the smallest module/file that can satisfy the task.
|
|
33
|
+
2. Prefer additive or internal-only edits over broad refactors.
|
|
34
|
+
3. If changing output semantics, update tests and document compatibility impact.
|
|
35
|
+
4. If touching public function signatures or enum strings, include clear compatibility notes.
|
|
36
|
+
|
|
37
|
+
## Required Local Validation Gates
|
|
38
|
+
|
|
39
|
+
Run from repository root (after activating the virtual environment):
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
pip install -r test_requirements.txt
|
|
43
|
+
maturin develop
|
|
44
|
+
python -m pytest
|
|
45
|
+
cargo fmt --check
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## PR/Report Output Format
|
|
49
|
+
|
|
50
|
+
Use this structure:
|
|
51
|
+
|
|
52
|
+
1. `Summary`
|
|
53
|
+
2. `Scope`
|
|
54
|
+
3. `Compatibility`
|
|
55
|
+
4. `Validation`
|
|
56
|
+
5. `Changelog`
|
|
57
|
+
|
|
58
|
+
## Quick Pointers
|
|
59
|
+
|
|
60
|
+
- Python module wiring and type enums: `src/lib.rs`
|
|
61
|
+
- Indicator binding implementations: `src/<module_name>.rs`
|
|
62
|
+
- Python-facing tests: `tests/test_<module_name>.py`
|
|
63
|
+
- Dependency versions: `Cargo.toml` (Rust), `test_requirements.txt` (Python)
|
|
64
|
+
- Package metadata: `pyproject.toml`
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Repository Map
|
|
2
|
+
|
|
3
|
+
Quick orientation for contributors and coding agents working in `CentaurTechnicalIndicators-Python`.
|
|
4
|
+
|
|
5
|
+
## Top-level layout
|
|
6
|
+
|
|
7
|
+
- `src/`: Rust source files (PyO3 binding implementations for each indicator module).
|
|
8
|
+
- `tests/`: Python test files (smoke tests for each binding module).
|
|
9
|
+
- `assets/`: Supporting artifacts (documentation assets, banner images).
|
|
10
|
+
- `.github/workflows/`: CI workflows (PR validation, release pipeline).
|
|
11
|
+
- `Cargo.toml`: Rust package version and dependency configuration.
|
|
12
|
+
- `pyproject.toml`: Python package metadata and maturin build settings.
|
|
13
|
+
- `CHANGELOG.md`: required entry point for every user-facing change.
|
|
14
|
+
- `AGENTS.md`: agent operating rules and PR/reporting expectations.
|
|
15
|
+
- `docs/AI_ONBOARDING.md`: canonical start-here checklist for coding agents.
|
|
16
|
+
- `AI_FRIENDLY_ROADMAP.md`: contributor-workflow and feature roadmap.
|
|
17
|
+
- `CONTRIBUTING.md`: contributor expectations and required validation gates.
|
|
18
|
+
|
|
19
|
+
## Source module map (`src/`)
|
|
20
|
+
|
|
21
|
+
- `lib.rs`: PyO3 module wiring, shared enum type definitions (`PyConstantModelType`, `DeviationModel`, `MovingAverageType`).
|
|
22
|
+
- `candle_indicators.rs`: candle/band/channel/envelope-style indicator bindings.
|
|
23
|
+
- `chart_trends.rs`: peak/valley and trend-structure analysis bindings.
|
|
24
|
+
- `correlation_indicators.rs`: pairwise/statistical relationship indicator bindings.
|
|
25
|
+
- `momentum_indicators.rs`: momentum/oscillator indicator bindings.
|
|
26
|
+
- `moving_average.rs`: moving average bindings.
|
|
27
|
+
- `other_indicators.rs`: miscellaneous indicator bindings.
|
|
28
|
+
- `strength_indicators.rs`: strength/participation indicator bindings.
|
|
29
|
+
- `trend_indicators.rs`: trend direction/strength indicator bindings.
|
|
30
|
+
- `volatility_indicators.rs`: volatility/range-expansion indicator bindings.
|
|
31
|
+
|
|
32
|
+
## Test module map (`tests/`)
|
|
33
|
+
|
|
34
|
+
- `test_<module_name>.py` mirrors `src/<module_name>.rs` — each test file covers binding smoke tests for the matching source module.
|
|
35
|
+
|
|
36
|
+
## Extension points
|
|
37
|
+
|
|
38
|
+
- New indicator binding: add to the appropriate `src/*_indicators.rs` file and wire through `src/lib.rs`.
|
|
39
|
+
- New shared type/enum: add to `src/lib.rs` following the existing string-dispatch pattern.
|
|
40
|
+
- Python tests: add to the matching `tests/test_<module_name>.py` file.
|
|
41
|
+
- Public exports: wire through `src/lib.rs`.
|
|
42
|
+
|
|
43
|
+
## If changing X, also check Y
|
|
44
|
+
|
|
45
|
+
- If changing an indicator's parameter names or accepted string values:
|
|
46
|
+
- Also update the corresponding docstring in `src/<module_name>.rs`.
|
|
47
|
+
- Also update or add tests in `tests/test_<module_name>.py`.
|
|
48
|
+
- If updating the upstream `centaur_technical_indicators` Rust crate version:
|
|
49
|
+
- Also update the package `version` in `Cargo.toml`.
|
|
50
|
+
- Also check for deprecation changes and adjust `#[allow(deprecated)]` annotations accordingly.
|
|
51
|
+
- Also add a user-facing entry in `CHANGELOG.md`.
|
|
52
|
+
- If adding/changing public Python-facing APIs:
|
|
53
|
+
- Also update docstrings.
|
|
54
|
+
- Also add a user-facing entry in `CHANGELOG.md`.
|
|
55
|
+
- If changing indicator math/outputs:
|
|
56
|
+
- Also update/add tests in the matching test module.
|
|
57
|
+
- If adding new user-visible behavior:
|
|
58
|
+
- Also update `README.md` and/or examples when appropriate.
|
|
59
|
+
- Also update `CHANGELOG.md`.
|
|
60
|
+
|
|
61
|
+
## Required local validation gates
|
|
62
|
+
|
|
63
|
+
Run these before opening a PR:
|
|
64
|
+
|
|
65
|
+
1. `maturin develop` (bindings compile cleanly)
|
|
66
|
+
2. `python -m pytest` (all tests pass)
|
|
67
|
+
3. `cargo fmt --check` (no formatting diffs)
|
|
68
|
+
|
|
69
|
+
## Minimal PR content checklist
|
|
70
|
+
|
|
71
|
+
- What changed and why.
|
|
72
|
+
- Compatibility/user-impact notes.
|
|
73
|
+
- Validation command summary.
|
|
74
|
+
- Explicit `CHANGELOG.md` entry note.
|
{centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/trend_indicators.rs
RENAMED
|
@@ -335,7 +335,6 @@ fn bulk_directional_movement_system(
|
|
|
335
335
|
///
|
|
336
336
|
/// Returns:
|
|
337
337
|
/// VPT value
|
|
338
|
-
#[allow(deprecated)]
|
|
339
338
|
#[pyfunction(name = "volume_price_trend")]
|
|
340
339
|
fn single_volume_price_trend(
|
|
341
340
|
current_price: f64,
|
|
@@ -360,7 +359,6 @@ fn single_volume_price_trend(
|
|
|
360
359
|
///
|
|
361
360
|
/// Returns:
|
|
362
361
|
/// List of VPT values
|
|
363
|
-
#[allow(deprecated)]
|
|
364
362
|
#[pyfunction(name = "volume_price_trend")]
|
|
365
363
|
fn bulk_volume_price_trend(
|
|
366
364
|
prices: Vec<f64>,
|
{centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.github/CODEOWNERS
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.github/workflows/CI.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/CODE_OF_CONDUCT.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/candle_indicators.rs
RENAMED
|
File without changes
|
{centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/chart_trends.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/momentum_indicators.rs
RENAMED
|
File without changes
|
{centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/moving_average.rs
RENAMED
|
File without changes
|
{centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/other_indicators.rs
RENAMED
|
File without changes
|
{centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/strength_indicators.rs
RENAMED
|
File without changes
|
|
File without changes
|
{centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/test_requirements.txt
RENAMED
|
File without changes
|
|
File without changes
|
{centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_chart_trends.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
|