Skip to content

Commit 436ac6c

Browse files
author
Lilavati CI
committed
Sync OSS (manual)
0 parents  commit 436ac6c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+58305
-0
lines changed

.github/workflows/ci.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: CI
2+
on:
3+
push:
4+
branches: [main]
5+
pull_request:
6+
branches: [main]
7+
env:
8+
CARGO_TERM_COLOR: always
9+
jobs:
10+
test:
11+
name: Test (Python )
12+
runs-on: ubuntu-latest
13+
strategy:
14+
matrix:
15+
python-version: ["3.11", "3.12", "3.13"]
16+
steps:
17+
- uses: actions/checkout@v4
18+
- uses: dtolnay/rust-toolchain@stable
19+
- uses: actions/setup-python@v5
20+
with:
21+
python-version:
22+
- uses: astral-sh/setup-uv@v5
23+
- name: Create venv and install
24+
run: |
25+
uv venv
26+
uv pip install -e ".[dev]"
27+
- name: Run Python tests
28+
run: uv run pytest tests/ -v
29+
- name: Run Rust unit tests
30+
run: cargo test --manifest-path crates/lilavati-core/Cargo.toml -- --test-threads=1
31+
lint:
32+
name: Lint
33+
runs-on: ubuntu-latest
34+
steps:
35+
- uses: actions/checkout@v4
36+
- uses: dtolnay/rust-toolchain@stable
37+
with:
38+
components: clippy, rustfmt
39+
- uses: actions/setup-python@v5
40+
with:
41+
python-version: "3.13"
42+
- uses: astral-sh/setup-uv@v5
43+
- name: Cargo clippy
44+
run: cargo clippy --manifest-path crates/lilavati-core/Cargo.toml -- -D warnings
45+
- name: Cargo fmt check
46+
run: cargo fmt --manifest-path crates/lilavati-core/Cargo.toml -- --check
47+
- name: Ruff
48+
run: |
49+
uv venv
50+
uv pip install ruff
51+
uv run ruff check python/ tests/
52+
uv run ruff format --check python/ tests/

.github/workflows/release.yml

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags: ["v*"]
6+
workflow_dispatch:
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+
matrix:
17+
os: [ubuntu-latest, macos-13, macos-14, windows-latest]
18+
steps:
19+
- uses: actions/checkout@v4
20+
21+
- uses: actions/setup-python@v5
22+
with:
23+
python-version: "3.13"
24+
25+
- name: Build wheels
26+
uses: PyO3/maturin-action@v1
27+
with:
28+
command: build
29+
args: --release --out dist
30+
manylinux: auto
31+
32+
- uses: actions/upload-artifact@v4
33+
with:
34+
name: wheels-${{ matrix.os }}
35+
path: dist/
36+
37+
build-sdist:
38+
name: Build source distribution
39+
runs-on: ubuntu-latest
40+
steps:
41+
- uses: actions/checkout@v4
42+
43+
- name: Build sdist
44+
uses: PyO3/maturin-action@v1
45+
with:
46+
command: sdist
47+
args: --out dist
48+
49+
- uses: actions/upload-artifact@v4
50+
with:
51+
name: sdist
52+
path: dist/
53+
54+
publish:
55+
name: Publish to PyPI
56+
needs: [build-wheels, build-sdist]
57+
runs-on: ubuntu-latest
58+
if: startsWith(github.ref, 'refs/tags/v')
59+
permissions:
60+
id-token: write
61+
environment:
62+
name: pypi
63+
url: https://pypi.org/p/lilavati
64+
steps:
65+
- uses: actions/download-artifact@v4
66+
with:
67+
path: dist
68+
merge-multiple: true
69+
70+
- name: Publish to PyPI
71+
uses: pypa/gh-action-pypi-publish@release/v1

.gitignore

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Python
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
*.so
6+
*.pyd
7+
*.egg-info/
8+
*.egg
9+
dist/
10+
build/
11+
wheels/
12+
*.whl
13+
.eggs/
14+
15+
# Virtual environments
16+
.venv/
17+
venv/
18+
env/
19+
20+
# Rust
21+
target/
22+
Cargo.lock
23+
24+
# Maturin
25+
*.d
26+
27+
# Swiss Ephemeris data files (large, downloaded at runtime)
28+
*.se1
29+
30+
# Testing
31+
.pytest_cache/
32+
.coverage
33+
htmlcov/
34+
.tox/
35+
.nox/
36+
*.proptest-regressions
37+
38+
# Benchmarks
39+
criterion/
40+
41+
# IDE
42+
.vscode/
43+
.idea/
44+
*.swp
45+
*.swo
46+
*~
47+
.DS_Store
48+
49+
# Environment / secrets
50+
.env
51+
.env.*
52+
53+
# Database (API)
54+
*.sqlite
55+
*.db
56+
57+
# Jupyter
58+
.ipynb_checkpoints/
59+
60+
# mypy / pyright
61+
.mypy_cache/
62+
.pyright/
63+
pyrightconfig.json

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[workspace]
2+
members = ["crates/lilavati-core"]
3+
resolver = "2"

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Lilavati Contributors
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

0 commit comments

Comments
 (0)