batch-lp 1.0.0__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.
@@ -0,0 +1,79 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ jobs:
10
+ lint:
11
+ name: Lint
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v4
15
+
16
+ - name: Set up Rust
17
+ uses: dtolnay/rust-toolchain@stable
18
+ with:
19
+ components: rustfmt, clippy
20
+
21
+ - name: Check formatting
22
+ run: cargo fmt --all -- --check
23
+
24
+ - name: Run clippy
25
+ run: cargo clippy --all-targets --all-features -- -D warnings
26
+
27
+ test:
28
+ name: Test on ${{ matrix.os }} - Python ${{ matrix.python-version }}
29
+ runs-on: ${{ matrix.os }}
30
+ strategy:
31
+ fail-fast: false
32
+ matrix:
33
+ os: [ubuntu-latest, macos-latest, windows-latest]
34
+ python-version: ['3.8', '3.12'] # Test oldest and newest
35
+
36
+ steps:
37
+ - uses: actions/checkout@v4
38
+
39
+ - name: Set up Python
40
+ uses: actions/setup-python@v5
41
+ with:
42
+ python-version: ${{ matrix.python-version }}
43
+
44
+ - name: Set up Rust
45
+ uses: dtolnay/rust-toolchain@stable
46
+
47
+ - name: Install dependencies
48
+ run: pip install maturin numpy
49
+
50
+ - name: Build
51
+ run: maturin develop --release
52
+
53
+ - name: Run Rust tests
54
+ run: cargo test --all-features
55
+
56
+ - name: Run example
57
+ run: python example.py
58
+
59
+ build-wheels:
60
+ name: Build wheels on ${{ matrix.os }}
61
+ runs-on: ${{ matrix.os }}
62
+ strategy:
63
+ matrix:
64
+ os: [ubuntu-latest, macos-latest, windows-latest]
65
+
66
+ steps:
67
+ - uses: actions/checkout@v4
68
+
69
+ - name: Build wheels
70
+ uses: PyO3/maturin-action@v1
71
+ with:
72
+ command: build
73
+ args: --release --out dist --find-interpreter
74
+
75
+ - name: Upload wheels
76
+ uses: actions/upload-artifact@v4
77
+ with:
78
+ name: wheels-${{ matrix.os }}
79
+ path: dist
@@ -0,0 +1,65 @@
1
+ name: Release to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ build-wheels:
9
+ name: Build wheels on ${{ matrix.os }}
10
+ runs-on: ${{ matrix.os }}
11
+ strategy:
12
+ matrix:
13
+ os: [ubuntu-latest, macos-latest, windows-latest]
14
+
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Build wheels
19
+ uses: PyO3/maturin-action@v1
20
+ with:
21
+ command: build
22
+ args: --release --out dist --find-interpreter
23
+
24
+ - name: Upload wheels
25
+ uses: actions/upload-artifact@v4
26
+ with:
27
+ name: wheels-${{ matrix.os }}
28
+ path: dist
29
+
30
+ build-sdist:
31
+ name: Build source distribution
32
+ runs-on: ubuntu-latest
33
+ steps:
34
+ - uses: actions/checkout@v4
35
+
36
+ - name: Build sdist
37
+ uses: PyO3/maturin-action@v1
38
+ with:
39
+ command: sdist
40
+ args: --out dist
41
+
42
+ - name: Upload sdist
43
+ uses: actions/upload-artifact@v4
44
+ with:
45
+ name: sdist
46
+ path: dist
47
+
48
+ publish:
49
+ name: Publish to PyPI
50
+ needs: [build-wheels, build-sdist]
51
+ runs-on: ubuntu-latest
52
+ permissions:
53
+ id-token: write # Required for trusted publishing
54
+
55
+ steps:
56
+ - name: Download all artifacts
57
+ uses: actions/download-artifact@v4
58
+ with:
59
+ path: dist
60
+ merge-multiple: true
61
+
62
+ - name: Publish to PyPI
63
+ uses: pypa/gh-action-pypi-publish@release/v1
64
+ with:
65
+ skip-existing: true
@@ -0,0 +1,51 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ pip-wheel-metadata/
20
+ share/python-wheels/
21
+ *.egg-info/
22
+ .installed.cfg
23
+ *.egg
24
+ MANIFEST
25
+
26
+ # Virtual environments
27
+ venv/
28
+ env/
29
+ ENV/
30
+ .venv
31
+
32
+ # Rust
33
+ /target/
34
+ **/*.rs.bk
35
+ Cargo.lock
36
+
37
+ # IDE
38
+ .vscode/
39
+ .idea/
40
+ *.swp
41
+ *.swo
42
+ *~
43
+ .DS_Store
44
+
45
+ # Testing
46
+ .pytest_cache/
47
+ .coverage
48
+ htmlcov/
49
+
50
+ # Maturin
51
+ *.whl
@@ -0,0 +1,32 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [1.0.0] - 2026-02-11
9
+
10
+ ### Added
11
+ - Initial release
12
+ - Single LP solving with `solve_lp()`
13
+ - Batch parallel LP solving with `solve_batch_lp()`
14
+ - `Problem` dataclass for defining LP problems (cleaner API than dictionaries)
15
+ - Support for inequality constraints (A x <= b)
16
+ - Support for equality constraints (A_eq x == b_eq)
17
+ - Support for variable bounds (lb <= x <= ub)
18
+ - Thread control via `num_threads` parameter
19
+ - Python bindings via PyO3
20
+ - Rayon-based work-stealing parallelism
21
+ - Comprehensive examples in `example.py`
22
+ - Performance benchmarks showing 10-15x speedup over scipy
23
+ - Automated CI/CD with GitHub Actions
24
+ - Automated PyPI publishing on release
25
+
26
+ ### Technical Details
27
+ - NumPy >= 2.0 requirement
28
+ - Multi-platform support (Linux, macOS, Windows)
29
+ - Python 3.8+ support
30
+ - Zero GIL overhead for true parallelism
31
+
32
+ [1.0.0]: https://github.com/landonclark97/batch-lp/releases/tag/v1.0.0