Solving Sudoku in Python Packaging
github.com
Solving Sudoku in Python Packaging
1–10 of 56 posts
Re: Solving Sudoku in Python Packaging
#2How did you even think of that? Nice!
Re: Solving Sudoku in Python Packaging
#3No way pip actually is a really inefficient SAT solver!
Re: Solving Sudoku in Python Packaging
#4but how does it know the constraints?
Re: Solving Sudoku in Python Packaging
#5but how does it know the constraints?
The constraints are going to be static and independent of the puzzle. So I expect they're encoded in the package dependencies. So for example version 1 of the package sudoku_0_0 will conflict with all of: version 1 of sudoku_[0-8]_0; version 1 of sudoku_0_[0-8]; version 1 of [012]_ [012].
Re: Solving Sudoku in Python Packaging
#6but how does it know the constraints?
This is the content of sudoku_0_0-1-py3-none-any.whl.
So when the (0,0) cell is 1, none of the cells in the same row, column and subgrid should be 1.
Requires-Dist: sudoku_0_1 != 1
Requires-Dist: sudoku_0_2 != 1
Requires-Dist: sudoku_0_3 != 1
Requires-Dist: sudoku_0_4 != 1
Requires-Dist: sudoku_0_5 != 1
Requires-Dist: sudoku_0_6 != 1
Requires-Dist: sudoku_0_7 != 1
Requires-Dist: sudoku_0_8 != 1
Requires-Dist: sudoku_1_0 != 1
Requires-Dist: sudoku_2_0 != 1
Requires-Dist: sudoku_3_0 != 1
Requires-Dist: sudoku_4_0 != 1
Requires-Dist: sudoku_5_0 != 1
Requires-Dist: sudoku_6_0 != 1
Requires-Dist: sudoku_7_0 != 1
Requires-Dist: sudoku_8_0 != 1
Requires-Dist: sudoku_0_1 != 1
Requires-Dist: sudoku_0_2 != 1
Requires-Dist: sudoku_1_0 != 1
Requires-Dist: sudoku_1_1 != 1
Requires-Dist: sudoku_1_2 != 1
Requires-Dist: sudoku_2_0 != 1
Requires-Dist: sudoku_2_1 != 1
Requires-Dist: sudoku_2_2 != 1Re: Solving Sudoku in Python Packaging
#7I love this so much. I dug around a bit and figured out how it works - I have an explanation (with an illustrative diagram) here: https://simonwillison.net/2024/Oct/21/sudoku-in-python-packa...
Figuring out how it works is a great way to learn a bit more about how Python packaging works under the hood. I learned that .whl files contain a METADATA file listing dependency constraints as "Requires-Dist" rules.
I ran a speed comparison too. Using the uv pip resolver it took 0.24s - with the older pip-compile tool it took 17s.
Re: Solving Sudoku in Python Packaging
#8but how does it know the constraints?
Yeah they missed out the actual interesting bit from the readme...
Re: Solving Sudoku in Python Packaging
#9That's why it feels like installing a ML repo is like sudoku. You install everything and at the last step you realize your neural net uses FlashAttention2 which only works on NVIDIA compute version that is not deployed in your cloud VM and you need to start over from scratch.
Re: Solving Sudoku in Python Packaging
#10Here’s the same thing in Poetry (2022): https://www.splitgraph.com/blog/poetry-dependency-resolver-s...