uvid 0.5.4__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.
- uvid-0.5.4/.github/workflows/cd.yml +44 -0
- uvid-0.5.4/.github/workflows/ci.yml +83 -0
- uvid-0.5.4/.github/workflows/docs.yml +46 -0
- uvid-0.5.4/.github/workflows/release.yml +82 -0
- uvid-0.5.4/.gitignore +19 -0
- uvid-0.5.4/CHANGELOG.md +6 -0
- uvid-0.5.4/Cargo.lock +2943 -0
- uvid-0.5.4/Cargo.toml +29 -0
- uvid-0.5.4/LICENSE +190 -0
- uvid-0.5.4/Makefile +61 -0
- uvid-0.5.4/PKG-INFO +218 -0
- uvid-0.5.4/README.md +181 -0
- uvid-0.5.4/build.rs +11 -0
- uvid-0.5.4/docs/cli.md +323 -0
- uvid-0.5.4/docs/getting-started/index.md +6 -0
- uvid-0.5.4/docs/getting-started/installation.md +60 -0
- uvid-0.5.4/docs/getting-started/quickstart.md +167 -0
- uvid-0.5.4/docs/guide/bit-layout.md +119 -0
- uvid-0.5.4/docs/guide/concepts.md +120 -0
- uvid-0.5.4/docs/guide/hgvs.md +125 -0
- uvid-0.5.4/docs/guide/index.md +9 -0
- uvid-0.5.4/docs/guide/normalization.md +198 -0
- uvid-0.5.4/docs/guide/vcf-passthrough.md +95 -0
- uvid-0.5.4/docs/index.md +56 -0
- uvid-0.5.4/docs/reference/index.md +4 -0
- uvid-0.5.4/docs/reference/python-api.md +8 -0
- uvid-0.5.4/docs/reference/rust-api.md +15 -0
- uvid-0.5.4/docs/stylesheets/extra.css +23 -0
- uvid-0.5.4/mkdocs.yml +94 -0
- uvid-0.5.4/pyproject.toml +141 -0
- uvid-0.5.4/python/uvid/__init__.py +30 -0
- uvid-0.5.4/python/uvid/__main__.py +5 -0
- uvid-0.5.4/python/uvid/_core.pyi +340 -0
- uvid-0.5.4/python/uvid/cli.py +436 -0
- uvid-0.5.4/python/uvid/download.py +83 -0
- uvid-0.5.4/python/uvid/py.typed +0 -0
- uvid-0.5.4/src/allele_pack.rs +738 -0
- uvid-0.5.4/src/assembly.rs +1388 -0
- uvid-0.5.4/src/hgvs.rs +1474 -0
- uvid-0.5.4/src/lib.rs +484 -0
- uvid-0.5.4/src/normalize/algorithm.rs +929 -0
- uvid-0.5.4/src/normalize/data.rs +114 -0
- uvid-0.5.4/src/normalize/error.rs +135 -0
- uvid-0.5.4/src/normalize/mod.rs +44 -0
- uvid-0.5.4/src/normalize/reference.rs +283 -0
- uvid-0.5.4/src/normalize/tests_gatk.rs +362 -0
- uvid-0.5.4/src/normalize/tests_vt.rs +426 -0
- uvid-0.5.4/src/normalize/types.rs +48 -0
- uvid-0.5.4/src/store.rs +444 -0
- uvid-0.5.4/src/uvid128.rs +613 -0
- uvid-0.5.4/src/vcf.rs +551 -0
- uvid-0.5.4/src/vcf_passthrough.rs +1032 -0
- uvid-0.5.4/test_data/sample.vcf +14 -0
- uvid-0.5.4/tests/__init__.py +0 -0
- uvid-0.5.4/tests/python/__init__.py +0 -0
- uvid-0.5.4/tests/python/test_uvid.py +1229 -0
- uvid-0.5.4/uv.lock +1410 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: Continuous Delivery
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
release:
|
|
12
|
+
name: Semantic Release
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
concurrency:
|
|
15
|
+
group: release
|
|
16
|
+
cancel-in-progress: false
|
|
17
|
+
|
|
18
|
+
permissions:
|
|
19
|
+
contents: write
|
|
20
|
+
id-token: write
|
|
21
|
+
|
|
22
|
+
steps:
|
|
23
|
+
- name: Checkout repository
|
|
24
|
+
uses: actions/checkout@v6
|
|
25
|
+
with:
|
|
26
|
+
fetch-depth: 0
|
|
27
|
+
ref: ${{ github.ref_name }}
|
|
28
|
+
token: ${{ secrets.RELEASE_TOKEN }}
|
|
29
|
+
|
|
30
|
+
- name: Force branch to workflow commit SHA
|
|
31
|
+
run: git reset --hard ${{ github.sha }}
|
|
32
|
+
|
|
33
|
+
- name: Python Semantic Release
|
|
34
|
+
id: release
|
|
35
|
+
uses: python-semantic-release/python-semantic-release@v10
|
|
36
|
+
with:
|
|
37
|
+
github_token: ${{ secrets.RELEASE_TOKEN }}
|
|
38
|
+
git_committer_name: "github-actions"
|
|
39
|
+
git_committer_email: "actions@users.noreply.github.com"
|
|
40
|
+
|
|
41
|
+
outputs:
|
|
42
|
+
released: ${{ steps.release.outputs.released }}
|
|
43
|
+
version: ${{ steps.release.outputs.version }}
|
|
44
|
+
tag: ${{ steps.release.outputs.tag }}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
# ── Fast checks (~2 min) ───────────────────────────────────────────
|
|
11
|
+
# Lint and test the core crate WITHOUT the "store" feature, which
|
|
12
|
+
# avoids compiling DuckDB from source (~10 min). This covers 167
|
|
13
|
+
# of 170 Rust tests.
|
|
14
|
+
fast-checks:
|
|
15
|
+
name: Fast checks
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
20
|
+
with:
|
|
21
|
+
components: clippy, rustfmt
|
|
22
|
+
- uses: Swatinem/rust-cache@v2
|
|
23
|
+
- name: Rustfmt
|
|
24
|
+
run: cargo fmt --check
|
|
25
|
+
- name: Clippy (core, no DuckDB)
|
|
26
|
+
run: cargo clippy --no-default-features -- -D warnings
|
|
27
|
+
- name: Rust tests (core, no DuckDB)
|
|
28
|
+
run: cargo test --lib --no-default-features
|
|
29
|
+
|
|
30
|
+
# ── Store tests (~10 min) ──────────────────────────────────────────
|
|
31
|
+
# Full build including DuckDB. Only runs when store-related files
|
|
32
|
+
# change (on PRs) or always on pushes to main.
|
|
33
|
+
store-tests:
|
|
34
|
+
name: Store tests
|
|
35
|
+
runs-on: ubuntu-latest
|
|
36
|
+
steps:
|
|
37
|
+
- uses: actions/checkout@v6
|
|
38
|
+
|
|
39
|
+
- uses: dorny/paths-filter@v3
|
|
40
|
+
id: changes
|
|
41
|
+
with:
|
|
42
|
+
filters: |
|
|
43
|
+
store:
|
|
44
|
+
- 'src/store.rs'
|
|
45
|
+
- 'Cargo.toml'
|
|
46
|
+
- 'Cargo.lock'
|
|
47
|
+
|
|
48
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
49
|
+
if: steps.changes.outputs.store == 'true' || github.event_name == 'push'
|
|
50
|
+
with:
|
|
51
|
+
components: clippy
|
|
52
|
+
- uses: Swatinem/rust-cache@v2
|
|
53
|
+
if: steps.changes.outputs.store == 'true' || github.event_name == 'push'
|
|
54
|
+
|
|
55
|
+
- name: Clippy (all features incl. DuckDB)
|
|
56
|
+
if: steps.changes.outputs.store == 'true' || github.event_name == 'push'
|
|
57
|
+
run: cargo clippy --all-features -- -D warnings
|
|
58
|
+
|
|
59
|
+
- name: Rust tests (all features incl. DuckDB)
|
|
60
|
+
if: steps.changes.outputs.store == 'true' || github.event_name == 'push'
|
|
61
|
+
run: cargo test --lib
|
|
62
|
+
|
|
63
|
+
# ── Python tests (~14 min) ─────────────────────────────────────────
|
|
64
|
+
# Build the native extension (with DuckDB) and run pytest.
|
|
65
|
+
# Ubuntu only — the Python wrapper is platform-independent, and
|
|
66
|
+
# native correctness is covered by the Rust test suites above.
|
|
67
|
+
python-tests:
|
|
68
|
+
name: Python tests
|
|
69
|
+
runs-on: ubuntu-latest
|
|
70
|
+
steps:
|
|
71
|
+
- uses: actions/checkout@v6
|
|
72
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
73
|
+
- uses: Swatinem/rust-cache@v2
|
|
74
|
+
- uses: astral-sh/setup-uv@v6
|
|
75
|
+
- uses: actions/setup-python@v6
|
|
76
|
+
with:
|
|
77
|
+
python-version: "3.11"
|
|
78
|
+
- name: Install dependencies
|
|
79
|
+
run: uv sync --frozen --extra dev
|
|
80
|
+
- name: Build and install
|
|
81
|
+
run: uv run maturin develop --release
|
|
82
|
+
- name: Run Python tests
|
|
83
|
+
run: uv run python -m pytest tests/python -v
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
docs:
|
|
14
|
+
name: Build docs
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v6
|
|
18
|
+
|
|
19
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
20
|
+
|
|
21
|
+
- uses: Swatinem/rust-cache@v2
|
|
22
|
+
|
|
23
|
+
- uses: astral-sh/setup-uv@v6
|
|
24
|
+
|
|
25
|
+
- uses: actions/setup-python@v6
|
|
26
|
+
with:
|
|
27
|
+
python-version: "3.12"
|
|
28
|
+
|
|
29
|
+
- name: Install dependencies
|
|
30
|
+
run: uv sync --frozen --all-extras
|
|
31
|
+
|
|
32
|
+
- name: Build extension (for stub resolution)
|
|
33
|
+
run: uv run maturin develop --release
|
|
34
|
+
|
|
35
|
+
- name: Generate Rust API docs
|
|
36
|
+
run: |
|
|
37
|
+
cargo doc --no-deps
|
|
38
|
+
mkdir -p docs/_rust_api
|
|
39
|
+
cp -r target/doc/* docs/_rust_api/
|
|
40
|
+
|
|
41
|
+
- name: Build MkDocs (strict)
|
|
42
|
+
run: uv run mkdocs build --strict
|
|
43
|
+
|
|
44
|
+
- name: Deploy to GitHub Pages
|
|
45
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
46
|
+
run: uv run mkdocs gh-deploy --force
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
build-wheels:
|
|
13
|
+
name: Build wheels (${{ matrix.os }})
|
|
14
|
+
runs-on: ${{ matrix.os }}
|
|
15
|
+
strategy:
|
|
16
|
+
fail-fast: false
|
|
17
|
+
matrix:
|
|
18
|
+
include:
|
|
19
|
+
- os: ubuntu-latest
|
|
20
|
+
target: x86_64-unknown-linux-gnu
|
|
21
|
+
- os: ubuntu-24.04-arm
|
|
22
|
+
target: aarch64-unknown-linux-gnu
|
|
23
|
+
- os: macos-latest
|
|
24
|
+
target: x86_64-apple-darwin
|
|
25
|
+
- os: macos-latest
|
|
26
|
+
target: aarch64-apple-darwin
|
|
27
|
+
- os: windows-latest
|
|
28
|
+
target: x86_64-pc-windows-msvc
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@v6
|
|
31
|
+
- uses: actions/setup-python@v6
|
|
32
|
+
with:
|
|
33
|
+
python-version: "3.11"
|
|
34
|
+
- name: Build wheels
|
|
35
|
+
uses: PyO3/maturin-action@v1
|
|
36
|
+
with:
|
|
37
|
+
target: ${{ matrix.target }}
|
|
38
|
+
args: --release --out dist
|
|
39
|
+
manylinux: "2_28"
|
|
40
|
+
before-script-linux: "export PATH=/opt/python/cp311-cp311/bin:$PATH"
|
|
41
|
+
- name: Upload wheels
|
|
42
|
+
uses: actions/upload-artifact@v7
|
|
43
|
+
with:
|
|
44
|
+
name: wheels-${{ matrix.target }}
|
|
45
|
+
path: dist
|
|
46
|
+
|
|
47
|
+
build-sdist:
|
|
48
|
+
name: Build source distribution
|
|
49
|
+
runs-on: ubuntu-latest
|
|
50
|
+
steps:
|
|
51
|
+
- uses: actions/checkout@v6
|
|
52
|
+
- name: Build sdist
|
|
53
|
+
uses: PyO3/maturin-action@v1
|
|
54
|
+
with:
|
|
55
|
+
command: sdist
|
|
56
|
+
args: --out dist
|
|
57
|
+
- name: Upload sdist
|
|
58
|
+
uses: actions/upload-artifact@v7
|
|
59
|
+
with:
|
|
60
|
+
name: sdist
|
|
61
|
+
path: dist
|
|
62
|
+
|
|
63
|
+
publish:
|
|
64
|
+
name: Publish to PyPI
|
|
65
|
+
needs: [build-wheels, build-sdist]
|
|
66
|
+
runs-on: ubuntu-latest
|
|
67
|
+
environment:
|
|
68
|
+
name: pypi
|
|
69
|
+
url: https://pypi.org/p/uvid
|
|
70
|
+
permissions:
|
|
71
|
+
id-token: write
|
|
72
|
+
steps:
|
|
73
|
+
- name: Download artifacts
|
|
74
|
+
uses: actions/download-artifact@v8
|
|
75
|
+
with:
|
|
76
|
+
path: dist
|
|
77
|
+
merge-multiple: true
|
|
78
|
+
- name: Publish to PyPI
|
|
79
|
+
uses: PyO3/maturin-action@v1
|
|
80
|
+
with:
|
|
81
|
+
command: upload
|
|
82
|
+
args: --non-interactive dist/*
|
uvid-0.5.4/.gitignore
ADDED