chore(migration): switch org to wickra-lib and maintainer email to wickra.lib@gmail.com (#59)
Introduce repo-metadata.toml as single source of truth for repo identity (org slug, maintainer email, canonical URLs) and add sync-metadata.yml workflow with a Python audit script that fails CI if any tracked file drifts back to pre-migration values. Bulk-replace across 24 tracked files: - kingchenc/wickra -> wickra-lib/wickra (URL segment) - kingchencp@gmail.com -> wickra.lib@gmail.com (maintainer email) - @kingchenc -> @wickra-lib (CODEOWNERS mention only) Person-name credits are preserved: LICENSE copyright holder, Cargo.toml authors handle, and CHANGELOG historical @kingchenc reference all remain unchanged. Crate / PyPI / npm package names also untouched. Merge this PR only after the kingchenc/wickra -> wickra-lib/wickra org transfer has happened on the GitHub side, otherwise all badges and repository links 404 until the transfer is performed.
This commit is contained in:
+1
-1
@@ -3,4 +3,4 @@
|
|||||||
# The owner listed here is requested for review automatically on every pull
|
# The owner listed here is requested for review automatically on every pull
|
||||||
# request. See https://docs.github.com/articles/about-code-owners.
|
# request. See https://docs.github.com/articles/about-code-owners.
|
||||||
|
|
||||||
* @kingchenc
|
* @wickra-lib
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
blank_issues_enabled: false
|
blank_issues_enabled: false
|
||||||
contact_links:
|
contact_links:
|
||||||
- name: Security vulnerability
|
- name: Security vulnerability
|
||||||
url: https://github.com/kingchenc/wickra/security/advisories/new
|
url: https://github.com/wickra-lib/wickra/security/advisories/new
|
||||||
about: Report security issues privately — do not open a public issue.
|
about: Report security issues privately — do not open a public issue.
|
||||||
- name: Question or discussion
|
- name: Question or discussion
|
||||||
url: https://github.com/kingchenc/wickra/discussions
|
url: https://github.com/wickra-lib/wickra/discussions
|
||||||
about: Ask usage questions and discuss ideas here.
|
about: Ask usage questions and discuss ideas here.
|
||||||
|
|||||||
@@ -24,9 +24,9 @@
|
|||||||
- [ ] New behaviour has tests; bug fixes have a regression test.
|
- [ ] New behaviour has tests; bug fixes have a regression test.
|
||||||
- [ ] Public API changes are mirrored in the Python / Node / WASM bindings
|
- [ ] Public API changes are mirrored in the Python / Node / WASM bindings
|
||||||
and their type stubs (If applicable).
|
and their type stubs (If applicable).
|
||||||
- [ ] The relevant page on the [project Wiki](https://github.com/kingchenc/wickra/wiki)
|
- [ ] The relevant page on the [project Wiki](https://github.com/wickra-lib/wickra/wiki)
|
||||||
and the `README.md` are updated (If applicable). Wiki edits go to a
|
and the `README.md` are updated (If applicable). Wiki edits go to a
|
||||||
separate repository: `https://github.com/kingchenc/wickra.wiki.git`.
|
separate repository: `https://github.com/wickra-lib/wickra.wiki.git`.
|
||||||
- [ ] An entry was added under `## [Unreleased]` in `CHANGELOG.md`.
|
- [ ] An entry was added under `## [Unreleased]` in `CHANGELOG.md`.
|
||||||
|
|
||||||
## Notes for reviewers
|
## Notes for reviewers
|
||||||
|
|||||||
@@ -0,0 +1,113 @@
|
|||||||
|
"""Audit that no file in the repo contains the pre-migration org slug or
|
||||||
|
maintainer email. Driven by `repo-metadata.toml` at the repo root.
|
||||||
|
|
||||||
|
This is the read-only side of the metadata pipeline. It does not patch any
|
||||||
|
files — it just fails CI when drift sneaks in. Pair with a future
|
||||||
|
`--write` mode (auto-fix + signed commit on main) once the migration has
|
||||||
|
settled.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import tomllib
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
REPO_ROOT = Path(__file__).resolve().parents[2]
|
||||||
|
METADATA_PATH = REPO_ROOT / "repo-metadata.toml"
|
||||||
|
|
||||||
|
|
||||||
|
def load_metadata() -> dict:
|
||||||
|
with METADATA_PATH.open("rb") as f:
|
||||||
|
return tomllib.load(f)
|
||||||
|
|
||||||
|
|
||||||
|
def is_allowlisted(rel_path: str, allowlist: list[str]) -> bool:
|
||||||
|
norm = rel_path.replace(os.sep, "/")
|
||||||
|
for entry in allowlist:
|
||||||
|
entry_norm = entry.replace(os.sep, "/")
|
||||||
|
if entry_norm.endswith("/"):
|
||||||
|
if norm.startswith(entry_norm):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
if norm == entry_norm:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def tracked_files() -> list[str]:
|
||||||
|
"""List git-tracked files relative to the repo root."""
|
||||||
|
out = subprocess.run(
|
||||||
|
["git", "ls-files"],
|
||||||
|
cwd=REPO_ROOT,
|
||||||
|
check=True,
|
||||||
|
capture_output=True,
|
||||||
|
text=True,
|
||||||
|
)
|
||||||
|
return [line for line in out.stdout.splitlines() if line]
|
||||||
|
|
||||||
|
|
||||||
|
def scan(forbidden: list[str], allowlist: list[str]) -> list[tuple[str, int, str, str]]:
|
||||||
|
"""Return a list of (rel_path, line_no, needle, line_text) findings.
|
||||||
|
|
||||||
|
Only git-tracked files are scanned, so local-only ghost-ignored files
|
||||||
|
(`.claude/`, drafts) never trigger false positives.
|
||||||
|
"""
|
||||||
|
findings: list[tuple[str, int, str, str]] = []
|
||||||
|
for rel_path in tracked_files():
|
||||||
|
if is_allowlisted(rel_path, allowlist):
|
||||||
|
continue
|
||||||
|
abs_path = REPO_ROOT / rel_path
|
||||||
|
if not abs_path.is_file():
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
lines = abs_path.read_text(encoding="utf-8", errors="replace").splitlines()
|
||||||
|
except (OSError, UnicodeDecodeError):
|
||||||
|
continue
|
||||||
|
for lineno, line in enumerate(lines, start=1):
|
||||||
|
for needle in forbidden:
|
||||||
|
if needle in line:
|
||||||
|
findings.append((rel_path, lineno, needle, line.strip()))
|
||||||
|
return findings
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> int:
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument("--check", action="store_true", help="audit-only (default)")
|
||||||
|
args = parser.parse_args()
|
||||||
|
_ = args # currently only --check is supported
|
||||||
|
|
||||||
|
meta = load_metadata()
|
||||||
|
audit = meta.get("audit", {})
|
||||||
|
forbidden: list[str] = list(audit.get("forbidden", []))
|
||||||
|
allowlist: list[str] = list(audit.get("allowlist", []))
|
||||||
|
|
||||||
|
if not forbidden:
|
||||||
|
print("repo-metadata.toml [audit].forbidden is empty — nothing to scan.")
|
||||||
|
return 0
|
||||||
|
|
||||||
|
findings = scan(forbidden, allowlist)
|
||||||
|
if findings:
|
||||||
|
print(f"sync-metadata: {len(findings)} forbidden-substring hits:", file=sys.stderr)
|
||||||
|
for rel_path, lineno, needle, text in findings:
|
||||||
|
print(f" {rel_path}:{lineno}: matched {needle!r}", file=sys.stderr)
|
||||||
|
print(f" {text}", file=sys.stderr)
|
||||||
|
print(
|
||||||
|
"\nUpdate the offending lines to use the values from repo-metadata.toml,",
|
||||||
|
"or add the path to [audit].allowlist if the reference is intentional",
|
||||||
|
"(e.g. historical CHANGELOG entries).",
|
||||||
|
file=sys.stderr,
|
||||||
|
)
|
||||||
|
return 1
|
||||||
|
|
||||||
|
org = meta["repo"]["org"]
|
||||||
|
email = meta["maintainer"]["email"]
|
||||||
|
print(f"sync-metadata: clean. org={org!r} email={email!r}")
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
sys.exit(main())
|
||||||
@@ -384,10 +384,10 @@ jobs:
|
|||||||
node -e "
|
node -e "
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const pkg = JSON.parse(fs.readFileSync('package.json'));
|
const pkg = JSON.parse(fs.readFileSync('package.json'));
|
||||||
pkg.author = 'kingchenc <kingchencp@gmail.com>';
|
pkg.author = 'kingchenc <wickra.lib@gmail.com>';
|
||||||
pkg.repository = { type: 'git', url: 'https://github.com/kingchenc/wickra' };
|
pkg.repository = { type: 'git', url: 'https://github.com/wickra-lib/wickra' };
|
||||||
pkg.homepage = 'https://github.com/kingchenc/wickra';
|
pkg.homepage = 'https://github.com/wickra-lib/wickra';
|
||||||
pkg.bugs = { url: 'https://github.com/kingchenc/wickra/issues' };
|
pkg.bugs = { url: 'https://github.com/wickra-lib/wickra/issues' };
|
||||||
pkg.license = 'PolyForm-Noncommercial-1.0.0';
|
pkg.license = 'PolyForm-Noncommercial-1.0.0';
|
||||||
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2));
|
fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2));
|
||||||
"
|
"
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
name: sync-metadata
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
audit:
|
||||||
|
name: metadata audit
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-python@v5
|
||||||
|
with:
|
||||||
|
python-version: "3.12"
|
||||||
|
- name: Audit repo-metadata.toml drift
|
||||||
|
run: python .github/scripts/sync-metadata.py --check
|
||||||
+11
-11
@@ -817,14 +817,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
optional Binance live feed.
|
optional Binance live feed.
|
||||||
- Bindings for Python, Node.js, and WebAssembly.
|
- Bindings for Python, Node.js, and WebAssembly.
|
||||||
|
|
||||||
[Unreleased]: https://github.com/kingchenc/wickra/compare/v0.2.7...HEAD
|
[Unreleased]: https://github.com/wickra-lib/wickra/compare/v0.2.7...HEAD
|
||||||
[0.2.7]: https://github.com/kingchenc/wickra/compare/v0.2.6...v0.2.7
|
[0.2.7]: https://github.com/wickra-lib/wickra/compare/v0.2.6...v0.2.7
|
||||||
[0.2.6]: https://github.com/kingchenc/wickra/compare/v0.2.5...v0.2.6
|
[0.2.6]: https://github.com/wickra-lib/wickra/compare/v0.2.5...v0.2.6
|
||||||
[0.2.5]: https://github.com/kingchenc/wickra/compare/v0.2.1...v0.2.5
|
[0.2.5]: https://github.com/wickra-lib/wickra/compare/v0.2.1...v0.2.5
|
||||||
[0.2.1]: https://github.com/kingchenc/wickra/compare/v0.2.0...v0.2.1
|
[0.2.1]: https://github.com/wickra-lib/wickra/compare/v0.2.0...v0.2.1
|
||||||
[0.2.0]: https://github.com/kingchenc/wickra/compare/v0.1.4...v0.2.0
|
[0.2.0]: https://github.com/wickra-lib/wickra/compare/v0.1.4...v0.2.0
|
||||||
[0.1.4]: https://github.com/kingchenc/wickra/compare/v0.1.3...v0.1.4
|
[0.1.4]: https://github.com/wickra-lib/wickra/compare/v0.1.3...v0.1.4
|
||||||
[0.1.3]: https://github.com/kingchenc/wickra/compare/v0.1.2...v0.1.3
|
[0.1.3]: https://github.com/wickra-lib/wickra/compare/v0.1.2...v0.1.3
|
||||||
[0.1.2]: https://github.com/kingchenc/wickra/compare/v0.1.1...v0.1.2
|
[0.1.2]: https://github.com/wickra-lib/wickra/compare/v0.1.1...v0.1.2
|
||||||
[0.1.1]: https://github.com/kingchenc/wickra/compare/v0.1.0...v0.1.1
|
[0.1.1]: https://github.com/wickra-lib/wickra/compare/v0.1.0...v0.1.1
|
||||||
[0.1.0]: https://github.com/kingchenc/wickra/releases/tag/v0.1.0
|
[0.1.0]: https://github.com/wickra-lib/wickra/releases/tag/v0.1.0
|
||||||
|
|||||||
+1
-1
@@ -33,7 +33,7 @@ project in public spaces.
|
|||||||
## Enforcement
|
## Enforcement
|
||||||
|
|
||||||
Instances of unacceptable behaviour may be reported to the project maintainer
|
Instances of unacceptable behaviour may be reported to the project maintainer
|
||||||
at **kingchencp@gmail.com**. All reports will be reviewed and investigated
|
at **wickra.lib@gmail.com**. All reports will be reviewed and investigated
|
||||||
promptly and fairly, and the maintainer will respect the privacy and security
|
promptly and fairly, and the maintainer will respect the privacy and security
|
||||||
of the reporter.
|
of the reporter.
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -76,9 +76,9 @@ wasm-pack test --node bindings/wasm
|
|||||||
- **Bindings.** A change to a public indicator API must be mirrored across the
|
- **Bindings.** A change to a public indicator API must be mirrored across the
|
||||||
Python, Node, and WASM bindings, including their type stubs / `.d.ts`.
|
Python, Node, and WASM bindings, including their type stubs / `.d.ts`.
|
||||||
- **Docs.** Update the relevant page on the
|
- **Docs.** Update the relevant page on the
|
||||||
[project Wiki](https://github.com/kingchenc/wickra/wiki) and the
|
[project Wiki](https://github.com/wickra-lib/wickra/wiki) and the
|
||||||
`README.md` when behaviour or the public API changes. The Wiki lives in
|
`README.md` when behaviour or the public API changes. The Wiki lives in
|
||||||
a separate git repository: `https://github.com/kingchenc/wickra.wiki.git`.
|
a separate git repository: `https://github.com/wickra-lib/wickra.wiki.git`.
|
||||||
- **Changelog.** Add an entry under `## [Unreleased]` in `CHANGELOG.md`.
|
- **Changelog.** Add an entry under `## [Unreleased]` in `CHANGELOG.md`.
|
||||||
|
|
||||||
## Commit and pull-request workflow
|
## Commit and pull-request workflow
|
||||||
|
|||||||
+3
-3
@@ -13,12 +13,12 @@ exclude = ["fuzz"]
|
|||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.2.7"
|
version = "0.2.7"
|
||||||
authors = ["kingchenc <kingchencp@gmail.com>"]
|
authors = ["kingchenc <wickra.lib@gmail.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.86"
|
rust-version = "1.86"
|
||||||
license = "PolyForm-Noncommercial-1.0.0"
|
license = "PolyForm-Noncommercial-1.0.0"
|
||||||
repository = "https://github.com/kingchenc/wickra"
|
repository = "https://github.com/wickra-lib/wickra"
|
||||||
homepage = "https://github.com/kingchenc/wickra"
|
homepage = "https://github.com/wickra-lib/wickra"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
keywords = ["finance", "trading", "indicators", "technical-analysis", "ta"]
|
keywords = ["finance", "trading", "indicators", "technical-analysis", "ta"]
|
||||||
categories = ["finance", "mathematics", "science"]
|
categories = ["finance", "mathematics", "science"]
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ URL for them above, as well as copies of any plain-text lines
|
|||||||
beginning with `Required Notice:` that the licensor provided
|
beginning with `Required Notice:` that the licensor provided
|
||||||
with the software. For example:
|
with the software. For example:
|
||||||
|
|
||||||
> Required Notice: Copyright 2026 kingchenc (https://github.com/kingchenc/wickra)
|
> Required Notice: Copyright 2026 kingchenc (https://github.com/wickra-lib/wickra)
|
||||||
|
|
||||||
## Changes and New Works License
|
## Changes and New Works License
|
||||||
|
|
||||||
@@ -133,4 +133,4 @@ of your licenses.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
Required Notice: Copyright 2026 kingchenc (https://github.com/kingchenc/wickra)
|
Required Notice: Copyright 2026 kingchenc (https://github.com/wickra-lib/wickra)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Wickra
|
# Wickra
|
||||||
|
|
||||||
[](https://github.com/kingchenc/wickra/actions/workflows/ci.yml)
|
[](https://github.com/wickra-lib/wickra/actions/workflows/ci.yml)
|
||||||
[](https://codecov.io/gh/kingchenc/wickra)
|
[](https://codecov.io/gh/wickra-lib/wickra)
|
||||||
[](https://crates.io/crates/wickra)
|
[](https://crates.io/crates/wickra)
|
||||||
[](https://pypi.org/project/wickra/)
|
[](https://pypi.org/project/wickra/)
|
||||||
[](https://www.npmjs.com/package/wickra)
|
[](https://www.npmjs.com/package/wickra)
|
||||||
@@ -264,7 +264,7 @@ Every layer is covered; run the suites with the commands in
|
|||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Contributions are very welcome — issues, bug reports, ideas, and pull requests
|
Contributions are very welcome — issues, bug reports, ideas, and pull requests
|
||||||
all land in the same place: <https://github.com/kingchenc/wickra>.
|
all land in the same place: <https://github.com/wickra-lib/wickra>.
|
||||||
|
|
||||||
A short orientation for first-time contributors:
|
A short orientation for first-time contributors:
|
||||||
|
|
||||||
@@ -308,14 +308,14 @@ The library is provided **as is**, without warranty of any kind; see
|
|||||||
---
|
---
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/kingchenc/wickra/stargazers">
|
<a href="https://github.com/wickra-lib/wickra/stargazers">
|
||||||
<img alt="GitHub stars" src="https://img.shields.io/github/stars/kingchenc/wickra?style=for-the-badge&logo=github&logoColor=white&color=ffd866">
|
<img alt="GitHub stars" src="https://img.shields.io/github/stars/wickra-lib/wickra?style=for-the-badge&logo=github&logoColor=white&color=ffd866">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/kingchenc/wickra/network/members">
|
<a href="https://github.com/wickra-lib/wickra/network/members">
|
||||||
<img alt="GitHub forks" src="https://img.shields.io/github/forks/kingchenc/wickra?style=for-the-badge&logo=github&logoColor=white&color=78dce8">
|
<img alt="GitHub forks" src="https://img.shields.io/github/forks/wickra-lib/wickra?style=for-the-badge&logo=github&logoColor=white&color=78dce8">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/kingchenc/wickra/issues">
|
<a href="https://github.com/wickra-lib/wickra/issues">
|
||||||
<img alt="GitHub issues" src="https://img.shields.io/github/issues/kingchenc/wickra?style=for-the-badge&logo=github&logoColor=white&color=ff6188">
|
<img alt="GitHub issues" src="https://img.shields.io/github/issues/wickra-lib/wickra?style=for-the-badge&logo=github&logoColor=white&color=ff6188">
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -16,9 +16,9 @@ version only; please upgrade to the newest release before reporting an issue.
|
|||||||
|
|
||||||
Report it privately through one of:
|
Report it privately through one of:
|
||||||
|
|
||||||
- GitHub's [private vulnerability reporting](https://github.com/kingchenc/wickra/security/advisories/new)
|
- GitHub's [private vulnerability reporting](https://github.com/wickra-lib/wickra/security/advisories/new)
|
||||||
("Report a vulnerability" under the repository's *Security* tab), or
|
("Report a vulnerability" under the repository's *Security* tab), or
|
||||||
- email to **kingchencp@gmail.com** with a subject line starting with
|
- email to **wickra.lib@gmail.com** with a subject line starting with
|
||||||
`[wickra security]`.
|
`[wickra security]`.
|
||||||
|
|
||||||
Please include:
|
Please include:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Wickra
|
# Wickra
|
||||||
|
|
||||||
[](https://github.com/kingchenc/wickra/actions/workflows/ci.yml)
|
[](https://github.com/wickra-lib/wickra/actions/workflows/ci.yml)
|
||||||
[](https://codecov.io/gh/kingchenc/wickra)
|
[](https://codecov.io/gh/wickra-lib/wickra)
|
||||||
[](https://crates.io/crates/wickra)
|
[](https://crates.io/crates/wickra)
|
||||||
[](https://pypi.org/project/wickra/)
|
[](https://pypi.org/project/wickra/)
|
||||||
[](https://www.npmjs.com/package/wickra)
|
[](https://www.npmjs.com/package/wickra)
|
||||||
@@ -264,7 +264,7 @@ Every layer is covered; run the suites with the commands in
|
|||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Contributions are very welcome — issues, bug reports, ideas, and pull requests
|
Contributions are very welcome — issues, bug reports, ideas, and pull requests
|
||||||
all land in the same place: <https://github.com/kingchenc/wickra>.
|
all land in the same place: <https://github.com/wickra-lib/wickra>.
|
||||||
|
|
||||||
A short orientation for first-time contributors:
|
A short orientation for first-time contributors:
|
||||||
|
|
||||||
@@ -298,14 +298,14 @@ use Wickra commercially, get in touch about a license.
|
|||||||
---
|
---
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/kingchenc/wickra/stargazers">
|
<a href="https://github.com/wickra-lib/wickra/stargazers">
|
||||||
<img alt="GitHub stars" src="https://img.shields.io/github/stars/kingchenc/wickra?style=for-the-badge&logo=github&logoColor=white&color=ffd866">
|
<img alt="GitHub stars" src="https://img.shields.io/github/stars/wickra-lib/wickra?style=for-the-badge&logo=github&logoColor=white&color=ffd866">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/kingchenc/wickra/network/members">
|
<a href="https://github.com/wickra-lib/wickra/network/members">
|
||||||
<img alt="GitHub forks" src="https://img.shields.io/github/forks/kingchenc/wickra?style=for-the-badge&logo=github&logoColor=white&color=78dce8">
|
<img alt="GitHub forks" src="https://img.shields.io/github/forks/wickra-lib/wickra?style=for-the-badge&logo=github&logoColor=white&color=78dce8">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/kingchenc/wickra/issues">
|
<a href="https://github.com/wickra-lib/wickra/issues">
|
||||||
<img alt="GitHub issues" src="https://img.shields.io/github/issues/kingchenc/wickra?style=for-the-badge&logo=github&logoColor=white&color=ff6188">
|
<img alt="GitHub issues" src="https://img.shields.io/github/issues/wickra-lib/wickra?style=for-the-badge&logo=github&logoColor=white&color=ff6188">
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
],
|
],
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/kingchenc/wickra"
|
"url": "https://github.com/wickra-lib/wickra"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/kingchenc/wickra"
|
"homepage": "https://github.com/wickra-lib/wickra"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
],
|
],
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/kingchenc/wickra"
|
"url": "https://github.com/wickra-lib/wickra"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/kingchenc/wickra"
|
"homepage": "https://github.com/wickra-lib/wickra"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
],
|
],
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/kingchenc/wickra"
|
"url": "https://github.com/wickra-lib/wickra"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/kingchenc/wickra"
|
"homepage": "https://github.com/wickra-lib/wickra"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
],
|
],
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/kingchenc/wickra"
|
"url": "https://github.com/wickra-lib/wickra"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/kingchenc/wickra"
|
"homepage": "https://github.com/wickra-lib/wickra"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
],
|
],
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/kingchenc/wickra"
|
"url": "https://github.com/wickra-lib/wickra"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/kingchenc/wickra"
|
"homepage": "https://github.com/wickra-lib/wickra"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
],
|
],
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/kingchenc/wickra"
|
"url": "https://github.com/wickra-lib/wickra"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/kingchenc/wickra"
|
"homepage": "https://github.com/wickra-lib/wickra"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "wickra",
|
"name": "wickra",
|
||||||
"version": "0.2.7",
|
"version": "0.2.7",
|
||||||
"description": "Streaming-first technical indicators: incremental, fast, install-free. Node bindings powered by Rust.",
|
"description": "Streaming-first technical indicators: incremental, fast, install-free. Node bindings powered by Rust.",
|
||||||
"author": "kingchenc <kingchencp@gmail.com>",
|
"author": "kingchenc <wickra.lib@gmail.com>",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"types": "index.d.ts",
|
"types": "index.d.ts",
|
||||||
"license": "PolyForm-Noncommercial-1.0.0",
|
"license": "PolyForm-Noncommercial-1.0.0",
|
||||||
@@ -17,12 +17,12 @@
|
|||||||
],
|
],
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/kingchenc/wickra"
|
"url": "https://github.com/wickra-lib/wickra"
|
||||||
},
|
},
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/kingchenc/wickra/issues"
|
"url": "https://github.com/wickra-lib/wickra/issues"
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/kingchenc/wickra",
|
"homepage": "https://github.com/wickra-lib/wickra",
|
||||||
"files": [
|
"files": [
|
||||||
"index.js",
|
"index.js",
|
||||||
"index.d.ts",
|
"index.d.ts",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Wickra
|
# Wickra
|
||||||
|
|
||||||
[](https://github.com/kingchenc/wickra/actions/workflows/ci.yml)
|
[](https://github.com/wickra-lib/wickra/actions/workflows/ci.yml)
|
||||||
[](https://codecov.io/gh/kingchenc/wickra)
|
[](https://codecov.io/gh/wickra-lib/wickra)
|
||||||
[](https://crates.io/crates/wickra)
|
[](https://crates.io/crates/wickra)
|
||||||
[](https://pypi.org/project/wickra/)
|
[](https://pypi.org/project/wickra/)
|
||||||
[](https://www.npmjs.com/package/wickra)
|
[](https://www.npmjs.com/package/wickra)
|
||||||
@@ -264,7 +264,7 @@ Every layer is covered; run the suites with the commands in
|
|||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Contributions are very welcome — issues, bug reports, ideas, and pull requests
|
Contributions are very welcome — issues, bug reports, ideas, and pull requests
|
||||||
all land in the same place: <https://github.com/kingchenc/wickra>.
|
all land in the same place: <https://github.com/wickra-lib/wickra>.
|
||||||
|
|
||||||
A short orientation for first-time contributors:
|
A short orientation for first-time contributors:
|
||||||
|
|
||||||
@@ -298,14 +298,14 @@ use Wickra commercially, get in touch about a license.
|
|||||||
---
|
---
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/kingchenc/wickra/stargazers">
|
<a href="https://github.com/wickra-lib/wickra/stargazers">
|
||||||
<img alt="GitHub stars" src="https://img.shields.io/github/stars/kingchenc/wickra?style=for-the-badge&logo=github&logoColor=white&color=ffd866">
|
<img alt="GitHub stars" src="https://img.shields.io/github/stars/wickra-lib/wickra?style=for-the-badge&logo=github&logoColor=white&color=ffd866">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/kingchenc/wickra/network/members">
|
<a href="https://github.com/wickra-lib/wickra/network/members">
|
||||||
<img alt="GitHub forks" src="https://img.shields.io/github/forks/kingchenc/wickra?style=for-the-badge&logo=github&logoColor=white&color=78dce8">
|
<img alt="GitHub forks" src="https://img.shields.io/github/forks/wickra-lib/wickra?style=for-the-badge&logo=github&logoColor=white&color=78dce8">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/kingchenc/wickra/issues">
|
<a href="https://github.com/wickra-lib/wickra/issues">
|
||||||
<img alt="GitHub issues" src="https://img.shields.io/github/issues/kingchenc/wickra?style=for-the-badge&logo=github&logoColor=white&color=ff6188">
|
<img alt="GitHub issues" src="https://img.shields.io/github/issues/wickra-lib/wickra?style=for-the-badge&logo=github&logoColor=white&color=ff6188">
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ version = "0.2.7"
|
|||||||
description = "Streaming-first technical indicators: incremental, fast, install-free."
|
description = "Streaming-first technical indicators: incremental, fast, install-free."
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
license = { text = "PolyForm-Noncommercial-1.0.0" }
|
license = { text = "PolyForm-Noncommercial-1.0.0" }
|
||||||
authors = [{ name = "kingchenc", email = "kingchencp@gmail.com" }]
|
authors = [{ name = "kingchenc", email = "wickra.lib@gmail.com" }]
|
||||||
requires-python = ">=3.9"
|
requires-python = ">=3.9"
|
||||||
keywords = ["finance", "trading", "indicators", "technical-analysis", "ta-lib"]
|
keywords = ["finance", "trading", "indicators", "technical-analysis", "ta-lib"]
|
||||||
classifiers = [
|
classifiers = [
|
||||||
@@ -47,9 +47,9 @@ bench = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[project.urls]
|
[project.urls]
|
||||||
Homepage = "https://github.com/kingchenc/wickra"
|
Homepage = "https://github.com/wickra-lib/wickra"
|
||||||
Repository = "https://github.com/kingchenc/wickra"
|
Repository = "https://github.com/wickra-lib/wickra"
|
||||||
Issues = "https://github.com/kingchenc/wickra/issues"
|
Issues = "https://github.com/wickra-lib/wickra/issues"
|
||||||
|
|
||||||
[tool.maturin]
|
[tool.maturin]
|
||||||
manifest-path = "Cargo.toml"
|
manifest-path = "Cargo.toml"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Wickra
|
# Wickra
|
||||||
|
|
||||||
[](https://github.com/kingchenc/wickra/actions/workflows/ci.yml)
|
[](https://github.com/wickra-lib/wickra/actions/workflows/ci.yml)
|
||||||
[](https://codecov.io/gh/kingchenc/wickra)
|
[](https://codecov.io/gh/wickra-lib/wickra)
|
||||||
[](https://crates.io/crates/wickra)
|
[](https://crates.io/crates/wickra)
|
||||||
[](https://pypi.org/project/wickra/)
|
[](https://pypi.org/project/wickra/)
|
||||||
[](https://www.npmjs.com/package/wickra)
|
[](https://www.npmjs.com/package/wickra)
|
||||||
@@ -264,7 +264,7 @@ Every layer is covered; run the suites with the commands in
|
|||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
Contributions are very welcome — issues, bug reports, ideas, and pull requests
|
Contributions are very welcome — issues, bug reports, ideas, and pull requests
|
||||||
all land in the same place: <https://github.com/kingchenc/wickra>.
|
all land in the same place: <https://github.com/wickra-lib/wickra>.
|
||||||
|
|
||||||
A short orientation for first-time contributors:
|
A short orientation for first-time contributors:
|
||||||
|
|
||||||
@@ -298,14 +298,14 @@ use Wickra commercially, get in touch about a license.
|
|||||||
---
|
---
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/kingchenc/wickra/stargazers">
|
<a href="https://github.com/wickra-lib/wickra/stargazers">
|
||||||
<img alt="GitHub stars" src="https://img.shields.io/github/stars/kingchenc/wickra?style=for-the-badge&logo=github&logoColor=white&color=ffd866">
|
<img alt="GitHub stars" src="https://img.shields.io/github/stars/wickra-lib/wickra?style=for-the-badge&logo=github&logoColor=white&color=ffd866">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/kingchenc/wickra/network/members">
|
<a href="https://github.com/wickra-lib/wickra/network/members">
|
||||||
<img alt="GitHub forks" src="https://img.shields.io/github/forks/kingchenc/wickra?style=for-the-badge&logo=github&logoColor=white&color=78dce8">
|
<img alt="GitHub forks" src="https://img.shields.io/github/forks/wickra-lib/wickra?style=for-the-badge&logo=github&logoColor=white&color=78dce8">
|
||||||
</a>
|
</a>
|
||||||
<a href="https://github.com/kingchenc/wickra/issues">
|
<a href="https://github.com/wickra-lib/wickra/issues">
|
||||||
<img alt="GitHub issues" src="https://img.shields.io/github/issues/kingchenc/wickra?style=for-the-badge&logo=github&logoColor=white&color=ff6188">
|
<img alt="GitHub issues" src="https://img.shields.io/github/issues/wickra-lib/wickra?style=for-the-badge&logo=github&logoColor=white&color=ff6188">
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|||||||
+14
-14
@@ -1,30 +1,30 @@
|
|||||||
# Documentation
|
# Documentation
|
||||||
|
|
||||||
Wickra's full documentation lives in the **[GitHub Wiki](https://github.com/kingchenc/wickra/wiki)**.
|
Wickra's full documentation lives in the **[GitHub Wiki](https://github.com/wickra-lib/wickra/wiki)**.
|
||||||
|
|
||||||
That includes:
|
That includes:
|
||||||
|
|
||||||
- **Quickstarts** for [Rust](https://github.com/kingchenc/wickra/wiki/Quickstart-Rust.md),
|
- **Quickstarts** for [Rust](https://github.com/wickra-lib/wickra/wiki/Quickstart-Rust.md),
|
||||||
[Python](https://github.com/kingchenc/wickra/wiki/Quickstart-Python.md),
|
[Python](https://github.com/wickra-lib/wickra/wiki/Quickstart-Python.md),
|
||||||
[Node](https://github.com/kingchenc/wickra/wiki/Quickstart-Node.md), and
|
[Node](https://github.com/wickra-lib/wickra/wiki/Quickstart-Node.md), and
|
||||||
[WASM](https://github.com/kingchenc/wickra/wiki/Quickstart-WASM.md).
|
[WASM](https://github.com/wickra-lib/wickra/wiki/Quickstart-WASM.md).
|
||||||
- A per-indicator deep dive for every one of the **214 indicators** across
|
- A per-indicator deep dive for every one of the **214 indicators** across
|
||||||
the sixteen families (Moving Averages, Momentum Oscillators, Trend &
|
the sixteen families (Moving Averages, Momentum Oscillators, Trend &
|
||||||
Directional, Price Oscillators, Volatility & Bands, Bands & Channels,
|
Directional, Price Oscillators, Volatility & Bands, Bands & Channels,
|
||||||
Trailing Stops, Volume, Price Statistics, Ehlers / Cycle DSP, Pivots &
|
Trailing Stops, Volume, Price Statistics, Ehlers / Cycle DSP, Pivots &
|
||||||
S/R, DeMark, Ichimoku & Charts, Candlestick Patterns, Market Profile,
|
S/R, DeMark, Ichimoku & Charts, Candlestick Patterns, Market Profile,
|
||||||
Risk / Performance) — see the
|
Risk / Performance) — see the
|
||||||
[indicators overview](https://github.com/kingchenc/wickra/wiki/Indicators-Overview.md).
|
[indicators overview](https://github.com/wickra-lib/wickra/wiki/Indicators-Overview.md).
|
||||||
- **Reference pages**: [warmup periods](https://github.com/kingchenc/wickra/wiki/Warmup-Periods.md),
|
- **Reference pages**: [warmup periods](https://github.com/wickra-lib/wickra/wiki/Warmup-Periods.md),
|
||||||
[streaming vs batch](https://github.com/kingchenc/wickra/wiki/Streaming-vs-Batch.md),
|
[streaming vs batch](https://github.com/wickra-lib/wickra/wiki/Streaming-vs-Batch.md),
|
||||||
[indicator chaining](https://github.com/kingchenc/wickra/wiki/Indicator-Chaining.md), and the
|
[indicator chaining](https://github.com/wickra-lib/wickra/wiki/Indicator-Chaining.md), and the
|
||||||
[data layer](https://github.com/kingchenc/wickra/wiki/Data-Layer.md).
|
[data layer](https://github.com/wickra-lib/wickra/wiki/Data-Layer.md).
|
||||||
- **Guides**: [Cookbook](https://github.com/kingchenc/wickra/wiki/Cookbook.md),
|
- **Guides**: [Cookbook](https://github.com/wickra-lib/wickra/wiki/Cookbook.md),
|
||||||
[TA-Lib migration](https://github.com/kingchenc/wickra/wiki/TA-Lib-Migration.md),
|
[TA-Lib migration](https://github.com/wickra-lib/wickra/wiki/TA-Lib-Migration.md),
|
||||||
[FAQ](https://github.com/kingchenc/wickra/wiki/FAQ.md).
|
[FAQ](https://github.com/wickra-lib/wickra/wiki/FAQ.md).
|
||||||
|
|
||||||
## Editing the wiki
|
## Editing the wiki
|
||||||
|
|
||||||
The wiki is a separate git repository at `https://github.com/kingchenc/wickra.wiki.git`.
|
The wiki is a separate git repository at `https://github.com/wickra-lib/wickra.wiki.git`.
|
||||||
Clone it locally if you want to bulk-edit; otherwise the GitHub web UI's "Edit" button on any
|
Clone it locally if you want to bulk-edit; otherwise the GitHub web UI's "Edit" button on any
|
||||||
wiki page is fine for one-off changes.
|
wiki page is fine for one-off changes.
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ Then open the demo you want at `http://localhost:8000/examples/wasm/<file>`.
|
|||||||
|
|
||||||
## See also
|
## See also
|
||||||
|
|
||||||
- [Quickstart: WASM](https://github.com/kingchenc/wickra/wiki/Quickstart-WASM.md) — module-load
|
- [Quickstart: WASM](https://github.com/wickra-lib/wickra/wiki/Quickstart-WASM.md) — module-load
|
||||||
flow, `wasm-pack` targets, and the streaming API.
|
flow, `wasm-pack` targets, and the streaming API.
|
||||||
- [examples/README.md](../README.md) — cross-language index, including
|
- [examples/README.md](../README.md) — cross-language index, including
|
||||||
the Rust, Python and Node siblings of every demo above.
|
the Rust, Python and Node siblings of every demo above.
|
||||||
|
|||||||
@@ -0,0 +1,54 @@
|
|||||||
|
# Single source of truth for repo-level identity (org slug, maintainer email,
|
||||||
|
# canonical URLs). The audit workflow `.github/workflows/sync-metadata.yml`
|
||||||
|
# parses this file and fails CI if any tracked file disagrees.
|
||||||
|
#
|
||||||
|
# Do NOT edit downstream files by hand for these fields. Edit here, then run
|
||||||
|
# the workflow locally to spot drift, fix the downstream files until the
|
||||||
|
# audit is green.
|
||||||
|
|
||||||
|
[repo]
|
||||||
|
org = "wickra-lib"
|
||||||
|
name = "wickra"
|
||||||
|
url = "https://github.com/wickra-lib/wickra"
|
||||||
|
wiki_url = "https://github.com/wickra-lib/wickra/wiki"
|
||||||
|
wiki_git = "https://github.com/wickra-lib/wickra.wiki.git"
|
||||||
|
issues_url = "https://github.com/wickra-lib/wickra/issues"
|
||||||
|
discussions = "https://github.com/wickra-lib/wickra/discussions"
|
||||||
|
security_url = "https://github.com/wickra-lib/wickra/security/advisories/new"
|
||||||
|
|
||||||
|
[maintainer]
|
||||||
|
# `handle` is the natural-person credit shown in package manifests; it does
|
||||||
|
# not move with the GitHub org transfer. `github` is the org @-mention slug
|
||||||
|
# used in CODEOWNERS and prose.
|
||||||
|
handle = "kingchenc"
|
||||||
|
email = "wickra.lib@gmail.com"
|
||||||
|
github = "wickra-lib"
|
||||||
|
|
||||||
|
[badges]
|
||||||
|
codecov_repo = "wickra-lib/wickra"
|
||||||
|
ci_workflow = "ci.yml"
|
||||||
|
|
||||||
|
[audit]
|
||||||
|
# Forbidden substrings that must not appear anywhere in the repo outside the
|
||||||
|
# allowlist below. These are the pre-migration values; if any one of them
|
||||||
|
# resurfaces in source, the audit workflow fails.
|
||||||
|
forbidden = [
|
||||||
|
"kingchenc/wickra",
|
||||||
|
"kingchencp@gmail.com",
|
||||||
|
]
|
||||||
|
|
||||||
|
# Paths that are exempt from the forbidden-substring scan. Historical
|
||||||
|
# CHANGELOG sections keep their prose unchanged; auto-generated and ignored
|
||||||
|
# folders never reach the repo but are listed for parity with `.git/info/exclude`.
|
||||||
|
allowlist = [
|
||||||
|
"target/",
|
||||||
|
"node_modules/",
|
||||||
|
"fuzz/target/",
|
||||||
|
".venv/",
|
||||||
|
"Cargo.lock",
|
||||||
|
"package-lock.json",
|
||||||
|
"bindings/node/index.js",
|
||||||
|
"bindings/node/index.d.ts",
|
||||||
|
"repo-metadata.toml",
|
||||||
|
".github/scripts/sync-metadata.py",
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user