| 9535 |
Hello Python 3.15, goodbye 3.10, and now I can use 3.11 |
uv run python --version |
https://simonwillison.net/e/9535 |
| 9535 |
Hello Python 3.15, goodbye 3.10, and now I can use 3.11 |
datasette --get /-/versions.json | jq |
https://simonwillison.net/e/9535 |
| 9535 |
Hello Python 3.15, goodbye 3.10, and now I can use 3.11 |
uv python install 3.15 |
https://simonwillison.net/e/9535 |
| 9535 |
Hello Python 3.15, goodbye 3.10, and now I can use 3.11 |
uv python pin --global 3.15 |
https://simonwillison.net/e/9535 |
| 9535 |
Hello Python 3.15, goodbye 3.10, and now I can use 3.11 |
sudo uv run --python 3.15 python -m profiling.sampling attach 1234 |
https://simonwillison.net/e/9535 |
| 9535 |
Hello Python 3.15, goodbye 3.10, and now I can use 3.11 |
uv tool upgrade datasette --python 3.15 |
https://simonwillison.net/e/9535 |
| 9535 |
Hello Python 3.15, goodbye 3.10, and now I can use 3.11 |
lists = [[1, 2], [3, 4], [5]]
[*L for L in lists]
# [1, 2, 3, 4, 5]
# equivalent to [x for L in lists for x in L]
sets = [{1, 2}, {2, 3}, {3, 4}]
{*s for s in sets}
# {1, 2, 3, 4}
# equivalent to {x for s in sets for x in s}
dicts = [{'a': 1}, {'b': 2}, {'a': 3}]
{**d for d in dicts}
# {'a': 3, 'b': 2}
# equivalent to {k: v for d in dicts for k,v in d.items()} |
https://simonwillison.net/e/9535 |
| 9535 |
Hello Python 3.15, goodbye 3.10, and now I can use 3.11 |
uv self update |
https://simonwillison.net/e/9535 |
| 9535 |
Hello Python 3.15, goodbye 3.10, and now I can use 3.11 |
lazy import json
lazy from pathlib import Path |
https://simonwillison.net/e/9535 |
| 9436 |
Qwen 3.8 27B is excellent, but it defaults to wildly overthinking things |
llm -a https://static.inaturalist.org/photos/714731804/large.jpg \
-m lmstudio/qwen/qwen3.8-27b \
'Return JSON bounding boxes for the pelicans in this photo, 0-1000 scale for each dimension' |
https://simonwillison.net/e/9436 |