Skip to content

Commit 4498643

Browse files
committed
docs: use absolute URLs for PyPI README links and add Documentation project URL
PyPI renders the README (long_description) at the project root, so repo-relative Markdown links like docs/plot_parity_policy.md resolve to https://pypi.org/project/ovvo-nns/docs/plot_parity_policy.md and 404. - Point all doc links at the live GitHub Pages site (https://ovvo-financial.github.io/NNS-python/<page>/), using the file-path-derived URLs that MkDocs actually emits. - Point example/source and LICENSE links at the GitHub repo on main. - Add a Documentation entry to [project.urls] so PyPI's sidebar links to the docs site, and drop the redundant Project URL. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JsqhFvg51XkvW4pCJquw42
1 parent 4135c18 commit 4498643

2 files changed

Lines changed: 23 additions & 23 deletions

File tree

README.md

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
[![PyPI package](https://img.shields.io/badge/package-ovvo--nns-blue)](https://pypi.org/project/ovvo-nns/)
66
[![Python](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org/)
77
[![Docs](https://img.shields.io/badge/docs-ovvo--financial.github.io-blue)](https://ovvo-financial.github.io/NNS-python/)
8-
[![License](https://img.shields.io/badge/license-GPL--3.0--only-blue)](LICENSE)
8+
[![License](https://img.shields.io/badge/license-GPL--3.0--only-blue)](https://github.com/OVVO-Financial/NNS-python/blob/main/LICENSE)
99

1010
`ovvo-nns` brings Nonlinear Nonparametric Statistics to Python as the `nns` import package. It is a parity-focused port of the R `NNS` 13.0+ package, designed for real-world data that violate symmetry, linearity, or distributional assumptions.
1111

@@ -41,7 +41,7 @@ pip install ovvo-nns
4141

4242
This includes the matplotlib plotting API (`nns.plotting`); matplotlib is a
4343
regular dependency and is imported lazily, so `import nns` stays light. See
44-
[`docs/plot_parity_policy.md`](docs/plot_parity_policy.md).
44+
the [plot parity policy](https://ovvo-financial.github.io/NNS-python/plot_parity_policy/).
4545

4646
Use the package as `nns`:
4747

@@ -129,7 +129,7 @@ print("forecast:", forecast)
129129
| Differentiation | `nns_diff`, `dy_dx`, `dy_d` |
130130
| Categorical helpers | `encode_factor_codes`, `factor_2_dummy`, `factor_2_dummy_fr`, `prepare_factor_predictors` |
131131

132-
See [API status](docs/api_status.md) for implemented, partial, guarded, and known-gap paths.
132+
See [API status](https://ovvo-financial.github.io/NNS-python/api_status/) for implemented, partial, guarded, and known-gap paths.
133133

134134
## Design boundaries
135135

@@ -143,27 +143,27 @@ Important boundaries:
143143
- Direct raw-factor `nns_m_reg(..., factor_2_dummy=True)` is intentionally guarded. Use `prepare_factor_predictors(...)` before `nns_m_reg(...)`.
144144
- Compute functions still return values, not figures; passing `plot=True` (where R has it) additionally renders a Matplotlib figure as a side effect via the `nns.plotting` layer, which is color/element-faithful to R but not pixel-diffed. The plot functions can also be called directly on a computed result.
145145

146-
See [behavior conventions](docs/conventions.md) for detailed compatibility notes.
146+
See [behavior conventions](https://ovvo-financial.github.io/NNS-python/conventions/) for detailed compatibility notes.
147147

148148
## Examples
149149

150150
Runnable, self-checking example scripts live in
151-
[`examples/vignettes`](examples/vignettes), mirroring the R NNS vignettes. They
151+
[`examples/vignettes`](https://github.com/OVVO-Financial/NNS-python/tree/main/examples/vignettes), mirroring the R NNS vignettes. They
152152
are exercised in CI by `tests/docs/test_vignette_examples.py`, so they stay in
153153
sync with the package.
154154

155155
| Topic | Script |
156156
|---|---|
157-
| Overview | [`overview.py`](examples/vignettes/overview.py) |
158-
| Partial moments | [`partial_moments.py`](examples/vignettes/partial_moments.py) |
159-
| Descriptive and distributional tools | [`descriptive_distributional_tools.py`](examples/vignettes/descriptive_distributional_tools.py) |
160-
| Dependence and nonlinear association | [`dependence_nonlinear_association.py`](examples/vignettes/dependence_nonlinear_association.py) |
161-
| Normalization and rescaling | [`normalization_rescaling.py`](examples/vignettes/normalization_rescaling.py) |
162-
| Hypothesis, ANOVA and stochastic superiority | [`hypothesis_anova_stochastic_superiority.py`](examples/vignettes/hypothesis_anova_stochastic_superiority.py) |
163-
| Regression, boosting, stacking and causality | [`regression_boosting_stacking_causality.py`](examples/vignettes/regression_boosting_stacking_causality.py) |
164-
| Time series forecasting | [`time_series_forecasting.py`](examples/vignettes/time_series_forecasting.py) |
165-
| Simulation, bootstrap and risk-neutral | [`simulation_bootstrap_riskneutral.py`](examples/vignettes/simulation_bootstrap_riskneutral.py) |
166-
| Portfolio and stochastic dominance | [`portfolio_stochastic_dominance.py`](examples/vignettes/portfolio_stochastic_dominance.py) |
157+
| Overview | [`overview.py`](https://github.com/OVVO-Financial/NNS-python/blob/main/examples/vignettes/overview.py) |
158+
| Partial moments | [`partial_moments.py`](https://github.com/OVVO-Financial/NNS-python/blob/main/examples/vignettes/partial_moments.py) |
159+
| Descriptive and distributional tools | [`descriptive_distributional_tools.py`](https://github.com/OVVO-Financial/NNS-python/blob/main/examples/vignettes/descriptive_distributional_tools.py) |
160+
| Dependence and nonlinear association | [`dependence_nonlinear_association.py`](https://github.com/OVVO-Financial/NNS-python/blob/main/examples/vignettes/dependence_nonlinear_association.py) |
161+
| Normalization and rescaling | [`normalization_rescaling.py`](https://github.com/OVVO-Financial/NNS-python/blob/main/examples/vignettes/normalization_rescaling.py) |
162+
| Hypothesis, ANOVA and stochastic superiority | [`hypothesis_anova_stochastic_superiority.py`](https://github.com/OVVO-Financial/NNS-python/blob/main/examples/vignettes/hypothesis_anova_stochastic_superiority.py) |
163+
| Regression, boosting, stacking and causality | [`regression_boosting_stacking_causality.py`](https://github.com/OVVO-Financial/NNS-python/blob/main/examples/vignettes/regression_boosting_stacking_causality.py) |
164+
| Time series forecasting | [`time_series_forecasting.py`](https://github.com/OVVO-Financial/NNS-python/blob/main/examples/vignettes/time_series_forecasting.py) |
165+
| Simulation, bootstrap and risk-neutral | [`simulation_bootstrap_riskneutral.py`](https://github.com/OVVO-Financial/NNS-python/blob/main/examples/vignettes/simulation_bootstrap_riskneutral.py) |
166+
| Portfolio and stochastic dominance | [`portfolio_stochastic_dominance.py`](https://github.com/OVVO-Financial/NNS-python/blob/main/examples/vignettes/portfolio_stochastic_dominance.py) |
167167

168168
Run one example:
169169

@@ -182,12 +182,12 @@ uv run python examples/run_all_vignettes.py
182182
The full documentation site is hosted at
183183
**<https://ovvo-financial.github.io/NNS-python/>**.
184184

185-
- [API reference manual](docs/api_reference.md)
186-
- [API status and known gaps](docs/api_status.md)
187-
- [Behavior conventions and intentional divergences](docs/conventions.md)
188-
- [Parity target, cache regeneration, and automation](docs/parity.md)
189-
- [Benchmarks](docs/benchmarks.md)
190-
- [Examples](examples/vignettes)
185+
- [API reference manual](https://ovvo-financial.github.io/NNS-python/api_reference/)
186+
- [API status and known gaps](https://ovvo-financial.github.io/NNS-python/api_status/)
187+
- [Behavior conventions and intentional divergences](https://ovvo-financial.github.io/NNS-python/conventions/)
188+
- [Parity target, cache regeneration, and automation](https://ovvo-financial.github.io/NNS-python/parity/)
189+
- [Benchmarks](https://ovvo-financial.github.io/NNS-python/benchmarks/)
190+
- [Examples](https://github.com/OVVO-Financial/NNS-python/tree/main/examples/vignettes)
191191

192192
## Development
193193

@@ -208,7 +208,7 @@ The default parity suite is cache-backed and does not require `Rscript`. `Rscrip
208208

209209
## Benchmarks
210210

211-
Benchmarks compare selected Python paths with installed R NNS 13.0+ baselines. Many core operations are faster in Python, while some large stochastic-dominance workloads remain faster in R because the R package uses compiled kernels for those paths. See [benchmarks](docs/benchmarks.md) for current measurements and commands.
211+
Benchmarks compare selected Python paths with installed R NNS 13.0+ baselines. Many core operations are faster in Python, while some large stochastic-dominance workloads remain faster in R because the R package uses compiled kernels for those paths. See [benchmarks](https://ovvo-financial.github.io/NNS-python/benchmarks/) for current measurements and commands.
212212

213213
## Authors and contributors
214214

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ keywords = [
3131
"forecasting",
3232
"nns",
3333
]
34-
urls = { "Homepage" = "https://github.com/OVVO-Financial/NNS-python", "Repository" = "https://github.com/OVVO-Financial/NNS-python", "Issues" = "https://github.com/OVVO-Financial/NNS-python/issues", "Source" = "https://github.com/OVVO-Financial/NNS-python", "Project" = "https://github.com/OVVO-Financial/NNS-python" }
34+
urls = { "Homepage" = "https://github.com/OVVO-Financial/NNS-python", "Repository" = "https://github.com/OVVO-Financial/NNS-python", "Source" = "https://github.com/OVVO-Financial/NNS-python", "Issues" = "https://github.com/OVVO-Financial/NNS-python/issues", "Documentation" = "https://ovvo-financial.github.io/NNS-python/" }
3535
dependencies = [
3636
"matplotlib>=3.7",
3737
"numpy",

0 commit comments

Comments
 (0)