{"id":29493432,"url":"https://github.com/vasyl-bodnar/uvlpy","last_synced_at":"2025-07-15T16:14:42.995Z","repository":{"id":304713889,"uuid":"1019699390","full_name":"Vasyl-Bodnar/uvlpy","owner":"Vasyl-Bodnar","description":"Constraint Solving Library using uv's Dependency Resolver","archived":false,"fork":false,"pushed_at":"2025-07-14T19:36:12.000Z","size":8,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-14T23:23:41.688Z","etag":null,"topics":["constraint","python","python3","solver","uv"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Vasyl-Bodnar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-14T18:22:51.000Z","updated_at":"2025-07-14T19:36:15.000Z","dependencies_parsed_at":"2025-07-14T23:25:09.408Z","dependency_job_id":"5e4b0502-c1b4-4a48-a9df-b9f417e0a359","html_url":"https://github.com/Vasyl-Bodnar/uvlpy","commit_stats":null,"previous_names":["vasyl-bodnar/uvlpy"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Vasyl-Bodnar/uvlpy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vasyl-Bodnar%2Fuvlpy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vasyl-Bodnar%2Fuvlpy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vasyl-Bodnar%2Fuvlpy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vasyl-Bodnar%2Fuvlpy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vasyl-Bodnar","download_url":"https://codeload.github.com/Vasyl-Bodnar/uvlpy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vasyl-Bodnar%2Fuvlpy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265445134,"owners_count":23766439,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["constraint","python","python3","solver","uv"],"created_at":"2025-07-15T16:14:42.245Z","updated_at":"2025-07-15T16:14:42.988Z","avatar_url":"https://github.com/Vasyl-Bodnar.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# uvlpy\r\nA light package for constraint solving by levereging uv's dependency resolver\r\n\r\n## Example\r\nExample of some basic code to show the features would be:\r\n```py\r\nfrom uvlpy.uvlpy import System\r\n\r\nsys = System()\r\na, b, c = sys.make_vars([0, 1], [2, 3, 4], list(range(0,9)))\r\na.val_constr(1, b == 2)\r\nc.constr(b \u003e 1)\r\nsys.constr(a \u003e 0, c \u003c 9, b.to_constr())\r\nprint(sys.execute(a, b, c))\r\n```\r\nWhere we:\r\n- Create 3 variables with given possible values\r\n- Constrain `a = 1` to require `b = 2`\r\n- Constrain all values of `c` to require `b \u003e 1`\r\n- Constrain the result to require a positive `a`, `c \u003c 9`, and to include `b`\r\n- After execution the output is e.g. `[1, 2, 8]`, `a` and `b` can only be 1 and 2, but `c` can be any of its possible values (`uv` tends to prefer higher)\r\n\r\nYou can see the `sudoku_example.py` for a sudoku solver, \r\nwhich uses lists directly instead of destructuring them into variables like here.\r\n\r\n## Install\r\nSimply `pip install uvlpy`, or with `uv`, `uv pip install uvlpy`.\r\n\r\nOtherwise, you can build it locally with `uv build` and use the wheel as you see fit.\r\n\r\nNote that `uv` being installed and visible on PATH is required for this library to function.\r\n\r\n## Why\r\nCan be done. \r\n\r\n`uvlpy` uses `uv`'s solver, which should be reliable. The performance is not great, but sufficient.\r\n\r\nHowever, 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.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvasyl-bodnar%2Fuvlpy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvasyl-bodnar%2Fuvlpy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvasyl-bodnar%2Fuvlpy/lists"}