update python notes with recent projects and uv workspaces

- reference plyr-python-client, pmgfal, prefect-mcp-server-demo, typsht
- add uv workspaces section
- add uv_build as simpler backend option
- mention typsht and prek as alternatives

๐Ÿค– Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Changed files
+52 -5
languages
+4 -3
languages/python/README.md
··· 17 17 | project | what it is | 18 18 |---------|------------| 19 19 | [pdsx](https://github.com/zzstoatzz/pdsx) | ATProto MCP server and CLI | 20 - | [raggy](https://github.com/zzstoatzz/raggy) | document loaders for LLMs | 21 - | [prefect-pack](https://github.com/zzstoatzz/prefect-pack) | prefect utilities | 22 - | [plyr.fm](https://github.com/zzstoatzz/plyr.fm) | music on atproto | 20 + | [plyr-python-client](https://github.com/zzstoatzz/plyr-python-client) | uv workspace, multi-package repo | 21 + | [pmgfal](https://github.com/zzstoatzz/pmgfal) | Rust+Python with maturin | 22 + | [prefect-mcp-server-demo](https://github.com/zzstoatzz/prefect-mcp-server-demo) | MCP server patterns | 23 + | [typsht](https://github.com/zzstoatzz/typsht) | parallel type checking tool | 23 24 24 25 and studying: 25 26
+1
languages/python/mcp.md
··· 185 185 sources: 186 186 - [fastmcp](https://github.com/jlowin/fastmcp) 187 187 - [pdsx](https://github.com/zzstoatzz/pdsx) 188 + - [prefect-mcp-server-demo](https://github.com/zzstoatzz/prefect-mcp-server-demo) 188 189 - [gofastmcp.com](https://gofastmcp.com)
+41 -1
languages/python/project-setup.md
··· 120 120 121 121 install with `uv sync --extra mcp` or `uv add 'myproject[mcp]'`. 122 122 123 + ## uv workspaces 124 + 125 + for multi-package repos (like plyr-python-client): 126 + 127 + ``` 128 + myproject/ 129 + โ”œโ”€โ”€ packages/ 130 + โ”‚ โ”œโ”€โ”€ core/ 131 + โ”‚ โ”‚ โ”œโ”€โ”€ src/core/ 132 + โ”‚ โ”‚ โ””โ”€โ”€ pyproject.toml 133 + โ”‚ โ””โ”€โ”€ mcp/ 134 + โ”‚ โ”œโ”€โ”€ src/mcp/ 135 + โ”‚ โ””โ”€โ”€ pyproject.toml 136 + โ”œโ”€โ”€ pyproject.toml # root workspace config 137 + โ””โ”€โ”€ uv.lock 138 + ``` 139 + 140 + root pyproject.toml: 141 + 142 + ```toml 143 + [tool.uv.workspace] 144 + members = ["packages/*"] 145 + 146 + [tool.uv.sources] 147 + core = { workspace = true } 148 + mcp = { workspace = true } 149 + ``` 150 + 151 + packages can depend on each other. one lockfile for the whole workspace. 152 + 153 + ## simpler build backend 154 + 155 + for projects that don't need dynamic versioning, `uv_build` is lighter: 156 + 157 + ```toml 158 + [build-system] 159 + requires = ["uv_build>=0.9.2,<0.10.0"] 160 + build-backend = "uv_build" 161 + ``` 162 + 123 163 sources: 124 164 - [pdsx/pyproject.toml](https://github.com/zzstoatzz/pdsx/blob/main/pyproject.toml) 125 - - [raggy/pyproject.toml](https://github.com/zzstoatzz/raggy/blob/main/pyproject.toml) 165 + - [plyr-python-client](https://github.com/zzstoatzz/plyr-python-client)
+6 -1
languages/python/tooling.md
··· 116 116 117 117 `asyncio_mode = "auto"` means async tests just work - no `@pytest.mark.asyncio` needed. 118 118 119 + ## alternatives 120 + 121 + - [typsht](https://github.com/zzstoatzz/typsht) - parallel type checking across multiple checkers 122 + - [prek](https://github.com/zzstoatzz/prek) - pre-commit reimplemented in rust 123 + 119 124 sources: 120 125 - [pdsx/.pre-commit-config.yaml](https://github.com/zzstoatzz/pdsx/blob/main/.pre-commit-config.yaml) 121 - - [raggy/pyproject.toml](https://github.com/zzstoatzz/raggy/blob/main/pyproject.toml) 126 + - [pdsx/pyproject.toml](https://github.com/zzstoatzz/pdsx/blob/main/pyproject.toml)