uvlpy
A light package for constraint solving by levereging uv's dependency resolver
Example
Example of some basic code to show the features would be:
from uvlpy.uvlpy import System
sys = System()
a, b, c = sys.make_vars([0, 1], [2, 3, 4], list(range(0,9)))
a.val_constr(1, b == 2)
c.constr(b > 1)
sys.constr(a > 0, c < 9, b.to_constr())
print(sys.execute(a, b, c))
Where we:
- Create 3 variables with given possible values
- Constrain
a = 1to requireb = 2 - Constrain all values of
cto requireb > 1 - Constrain the result to require a positive
a,c < 9, and to includeb - After execution the output is e.g.
[1, 2, 8],aandbcan only be 1 and 2, butccan be any of its possible values (uvtends to prefer higher)
You can see the sudoku_example.py for a sudoku solver,
which uses lists directly instead of destructuring them into variables like here.
Install
Simply pip install uvlpy, or with uv, uv pip install uvlpy.
Otherwise, you can build it locally with uv build and use the wheel as you see fit.
Note that uv being installed and visible on PATH is required for this library to function.
Why
Can be done.
uvlpy uses uv's solver, which should be reliable. The performance is not great, but sufficient.
However, note that the library creates a lot temporary files and packages to utilize uv, and as such, should be used with care and within reason.
Metadata
Release files for uvlpy 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| uvlpy-0.1.2.tar.gz | 4.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| uvlpy-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 9.1 kB
Release files / uvlpy-0.1.2.tar.gz
| Download URL | uvlpy-0.1.2.tar.gz |
|---|---|
| Size | 4.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
83efd8781d0e6e52bb8ed3a69215035365aac443a97e44a15d6d556f0e24ce97
|
|
BLAKE2b-256 checksum How to use checksums |
96cb3325dfacd316e1821745a9ee2d7750bd1878620de468e06ce745c34db5f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.2
|
Release files / uvlpy-0.1.2-py3-none-any.whl
| Download URL | uvlpy-0.1.2-py3-none-any.whl |
|---|---|
| Size | 4.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1fb877e03a34d8539c1832fec7aa13e0265c5eec16f52f028a7e199ddec55c6b
|
|
BLAKE2b-256 checksum How to use checksums |
0e6136d1c379bb9aeb32e05b92ab0eb74fc5126ebbc479472779204f869a2982
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.2
|