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.
Files changed (45) hide show
  1. centaur_technical_indicators-1.2.1/.github/pull_request_template.md +28 -0
  2. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/AGENTS.md +48 -1
  3. centaur_technical_indicators-1.2.1/AI_FRIENDLY_ROADMAP.md +90 -0
  4. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/CHANGELOG.md +17 -0
  5. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/CONTRIBUTING.md +23 -0
  6. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/Cargo.lock +4 -4
  7. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/Cargo.toml +2 -2
  8. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/PKG-INFO +1 -1
  9. centaur_technical_indicators-1.2.1/ai-policy.yaml +52 -0
  10. centaur_technical_indicators-1.2.1/docs/AI_ONBOARDING.md +64 -0
  11. centaur_technical_indicators-1.2.1/docs/REPO_MAP.md +74 -0
  12. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/trend_indicators.rs +0 -2
  13. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.github/CODEOWNERS +0 -0
  14. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  15. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  16. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.github/copilot-instructions.md +0 -0
  17. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.github/workflows/CI.yml +0 -0
  18. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.github/workflows/python-package.yml +0 -0
  19. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/.gitignore +0 -0
  20. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/CODE_OF_CONDUCT.md +0 -0
  21. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/LICENSE-MIT +0 -0
  22. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/README.md +0 -0
  23. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/SECURITY.md +0 -0
  24. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/assets/pytechnicalindicators_banner.png +0 -0
  25. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/pyproject.toml +0 -0
  26. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/requirements.txt +0 -0
  27. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/candle_indicators.rs +0 -0
  28. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/chart_trends.rs +0 -0
  29. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/correlation_indicators.rs +0 -0
  30. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/lib.rs +0 -0
  31. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/momentum_indicators.rs +0 -0
  32. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/moving_average.rs +0 -0
  33. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/other_indicators.rs +0 -0
  34. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/strength_indicators.rs +0 -0
  35. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/src/volatility_indicators.rs +0 -0
  36. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/test_requirements.txt +0 -0
  37. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_candle_indicators.py +0 -0
  38. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_chart_trends.py +0 -0
  39. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_correlation_indicators.py +0 -0
  40. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_momentum_indicators.py +0 -0
  41. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_moving_average.py +0 -0
  42. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_other_indicators.py +0 -0
  43. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_strength_indicators.py +0 -0
  44. {centaur_technical_indicators-1.2.0 → centaur_technical_indicators-1.2.1}/tests/test_trend_indicators.py +0 -0
  45. {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.0"
13
+ version = "1.2.1"
14
14
  dependencies = [
15
- "centaur_technical_indicators 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
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.0"
21
+ version = "1.2.1"
22
22
  source = "registry+https://github.com/rust-lang/crates.io-index"
23
- checksum = "e1a34ab4d40a88bc6253ca7096ef88556ff5b128747ef47ee914b576e7270035"
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.0"
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.0"
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.0
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.
@@ -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>,