Closes the package-page discoverability gaps found while auditing the public registry listings. No code or version change — metadata only; takes effect on the next registry build/publish. ## R — R-universe (`bindings/r`) - `DESCRIPTION`: add the R-universe URL to `URL:` and a CRAN-permitted `X-schema.org-keywords` field (feeds R-universe's search/ranking). - Add a package logo at `man/figures/logo.png` (pkgdown convention → shown in the R-universe packages tab) and reference it in the R `README.md`. - Maintainer email is **unchanged** (`support@wickra.org`). ## Python — PyPI (`bindings/python`) - `pyproject.toml`: add a `Documentation` project URL (`https://docs.wickra.org`) so it appears in the PyPI sidebar. ## C# — NuGet (`bindings/csharp`) - Add `icon.png` (brand mark) and `<PackageIcon>` so nuget.org shows the logo instead of the default placeholder. ## Notes - Rust/crates.io, Node/npm, Go/pkg.go.dev and Java/Maven Central were audited and are already complete for their respective metadata models (no icon/keyword concept on some). - The repository topic `rstats` was added (replacing the redundant `webassembly`, since `wasm` already covers it) so R is represented alongside the other language tags.
Wickra — Python
Streaming-first technical indicators for Python. pip install wickra — no
system dependencies, no C build tooling.
Wickra is a multi-language technical-analysis library with a Rust core and bindings for Python, Node.js and WebAssembly, plus a C ABI for C/C++, C#, Go, Java, R and any other C-capable language. Every indicator is an O(1) streaming state machine, so live trading bots and historical backtests share the exact same implementation. This package is the Python binding (PyO3); it exposes 200+ streaming-first indicators across sixteen families.
Install
pip install wickra
Pre-built wheels ship for Linux, macOS, and Windows — there is nothing to compile and no C library to track down.
Quick start
import numpy as np
import wickra as ta
# Batch: classic TA-Lib-style usage over a whole array.
prices = np.linspace(100, 200, 1000)
rsi = ta.RSI(14)
values = rsi.batch(prices) # numpy array, NaN during warmup
# Streaming: the same indicator, fed tick by tick in O(1).
rsi = ta.RSI(14)
for price in live_feed:
value = rsi.update(price) # no recomputation over history
if value is not None and value > 70:
print("overbought")
batch(prices) and feeding the same prices through update() produce
identical values — the equivalence is enforced by the test suite.
Benchmark
Two benchmarks ship with the binding:
benchmarks/throughput.py— streaming and batch updates-per-second forSMA,ATRandMACD. This is per-binding FFI overhead (the same Rust core runs under every binding), not a cross-library ratio.benchmarks/compare_libraries.py— the cross-library comparison against TA-Lib, pandas-ta, tulipy and finta that backs the headline speedups.
maturin develop --release
python -m benchmarks.throughput
python -m benchmarks.compare_libraries # cross-library; auto-detects installed peers
See the repository BENCHMARKS.md.
Documentation
The full indicator catalogue, guides, quickstarts, and API reference live in the main repository and documentation site:
- Repository & full indicator list: https://github.com/wickra-lib/wickra
- Docs (quickstarts, cookbook, TA-Lib migration): https://docs.wickra.org
- Runnable examples:
examples/python/
Wickra ships native bindings for Python, Node.js, WebAssembly and Rust, plus a
C ABI hub that any C-capable language (C, C++, Go, C#, Java, R) links against —
all exposing the same indicators from the shared, unsafe-forbidden Rust core.
Disclaimer
Wickra is an indicator toolkit, not a trading system. The values it computes are deterministic transforms of the input data — they are not financial advice and do not predict the market. Any use in a live trading context is at your own risk. The library is provided as is, without warranty of any kind.
License
Licensed under either of Apache-2.0 or MIT at your option.