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.
Files changed (57) hide show
  1. uvid-0.5.4/.github/workflows/cd.yml +44 -0
  2. uvid-0.5.4/.github/workflows/ci.yml +83 -0
  3. uvid-0.5.4/.github/workflows/docs.yml +46 -0
  4. uvid-0.5.4/.github/workflows/release.yml +82 -0
  5. uvid-0.5.4/.gitignore +19 -0
  6. uvid-0.5.4/CHANGELOG.md +6 -0
  7. uvid-0.5.4/Cargo.lock +2943 -0
  8. uvid-0.5.4/Cargo.toml +29 -0
  9. uvid-0.5.4/LICENSE +190 -0
  10. uvid-0.5.4/Makefile +61 -0
  11. uvid-0.5.4/PKG-INFO +218 -0
  12. uvid-0.5.4/README.md +181 -0
  13. uvid-0.5.4/build.rs +11 -0
  14. uvid-0.5.4/docs/cli.md +323 -0
  15. uvid-0.5.4/docs/getting-started/index.md +6 -0
  16. uvid-0.5.4/docs/getting-started/installation.md +60 -0
  17. uvid-0.5.4/docs/getting-started/quickstart.md +167 -0
  18. uvid-0.5.4/docs/guide/bit-layout.md +119 -0
  19. uvid-0.5.4/docs/guide/concepts.md +120 -0
  20. uvid-0.5.4/docs/guide/hgvs.md +125 -0
  21. uvid-0.5.4/docs/guide/index.md +9 -0
  22. uvid-0.5.4/docs/guide/normalization.md +198 -0
  23. uvid-0.5.4/docs/guide/vcf-passthrough.md +95 -0
  24. uvid-0.5.4/docs/index.md +56 -0
  25. uvid-0.5.4/docs/reference/index.md +4 -0
  26. uvid-0.5.4/docs/reference/python-api.md +8 -0
  27. uvid-0.5.4/docs/reference/rust-api.md +15 -0
  28. uvid-0.5.4/docs/stylesheets/extra.css +23 -0
  29. uvid-0.5.4/mkdocs.yml +94 -0
  30. uvid-0.5.4/pyproject.toml +141 -0
  31. uvid-0.5.4/python/uvid/__init__.py +30 -0
  32. uvid-0.5.4/python/uvid/__main__.py +5 -0
  33. uvid-0.5.4/python/uvid/_core.pyi +340 -0
  34. uvid-0.5.4/python/uvid/cli.py +436 -0
  35. uvid-0.5.4/python/uvid/download.py +83 -0
  36. uvid-0.5.4/python/uvid/py.typed +0 -0
  37. uvid-0.5.4/src/allele_pack.rs +738 -0
  38. uvid-0.5.4/src/assembly.rs +1388 -0
  39. uvid-0.5.4/src/hgvs.rs +1474 -0
  40. uvid-0.5.4/src/lib.rs +484 -0
  41. uvid-0.5.4/src/normalize/algorithm.rs +929 -0
  42. uvid-0.5.4/src/normalize/data.rs +114 -0
  43. uvid-0.5.4/src/normalize/error.rs +135 -0
  44. uvid-0.5.4/src/normalize/mod.rs +44 -0
  45. uvid-0.5.4/src/normalize/reference.rs +283 -0
  46. uvid-0.5.4/src/normalize/tests_gatk.rs +362 -0
  47. uvid-0.5.4/src/normalize/tests_vt.rs +426 -0
  48. uvid-0.5.4/src/normalize/types.rs +48 -0
  49. uvid-0.5.4/src/store.rs +444 -0
  50. uvid-0.5.4/src/uvid128.rs +613 -0
  51. uvid-0.5.4/src/vcf.rs +551 -0
  52. uvid-0.5.4/src/vcf_passthrough.rs +1032 -0
  53. uvid-0.5.4/test_data/sample.vcf +14 -0
  54. uvid-0.5.4/tests/__init__.py +0 -0
  55. uvid-0.5.4/tests/python/__init__.py +0 -0
  56. uvid-0.5.4/tests/python/test_uvid.py +1229 -0
  57. 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
@@ -0,0 +1,19 @@
1
+ /target
2
+ __pycache__
3
+ *.pyc
4
+ *.pyo
5
+ *.egg-info
6
+ .eggs
7
+ dist
8
+ *.so
9
+ *.dylib
10
+ *.dll
11
+ *.dSYM/
12
+ .venv
13
+ venv
14
+ .idea
15
+ .DS_Store
16
+ *.uvid
17
+ *.uvid.gz
18
+ site/
19
+ docs/_rust_api/
@@ -0,0 +1,6 @@
1
+ # CHANGELOG
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ This changelog is automatically generated by
6
+ [python-semantic-release](https://python-semantic-release.readthedocs.io/).