[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-astral-uv":3,"mdc-6jje87-key":33,"related-org-astral-uv":1871,"related-repo-astral-uv":1895},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":31,"mdContent":32},"uv","manage Python projects with uv","Guide for using uv, the Python package and project manager. Use this when working with Python projects, scripts, packages, or tools.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"astral","Astral (uv, Ruff)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fastral.png","astral-sh",[13,17,20],{"name":14,"slug":15,"type":16},"Packaging","packaging","tag",{"name":18,"slug":19,"type":16},"Python","python",{"name":21,"slug":22,"type":16},"Engineering","engineering",286,"https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fclaude-code-plugins","2026-07-12T08:08:43.925659",null,12,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":26},[],"https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fclaude-code-plugins\u002Ftree\u002FHEAD\u002Fplugins\u002Fastral\u002Fskills\u002Fuv","---\nname: uv\ndescription:\n  Guide for using uv, the Python package and project manager. Use this when\n  working with Python projects, scripts, packages, or tools.\n---\n\n# uv\n\nuv is an extremely fast Python package and project manager. It replaces pip,\npip-tools, pipx, pyenv, virtualenv, poetry, etc.\n\n## When to use uv\n\n**Always use uv for Python work**, especially if you see:\n\n- The `uv.lock` file\n- uv headers in `requirements*` files, e.g., \"This file was autogenerated by uv\"\n\nDon't use uv in projects managed by other tools:\n\n- Poetry projects (identifiable by `poetry.lock` file)\n- PDM projects (identifiable by `pdm.lock` file)\n\n## Choosing the right workflow\n\n### Scripts\n\n**Use when:** Running single Python files and standalone scripts.\n\n**Key commands:**\n\n```bash\nuv run script.py                      # Run a script\nuv run --with requests script.py      # Run with additional packages\nuv add --script script.py requests    # Add dependencies inline to the script\n```\n\n### Projects\n\n**Use when:** There is a `pyproject.toml` or `uv.lock`\n\n**Key commands:**\n\n```bash\nuv init                   # Create new project\nuv add requests           # Add dependency\nuv remove requests        # Remove dependency\nuv sync                   # Install from lockfile\nuv run \u003Ccommand>          # Run commands in environment\nuv run python -c \"\"       # Run Python in project environment\nuv run -p 3.12 \u003Ccommand>  # Run with specific Python version\n```\n\n### Tools\n\n**Use when:** Running command-line tools (e.g., ruff, ty, pytest) without\ninstallation.\n\n**Key commands:**\n\n```bash\nuvx \u003Ctool> \u003Cargs>            # Run a tool without installation\nuvx \u003Ctool>@\u003Cversion> \u003Cargs>  # Run a specific version of a tool\n```\n\n**Important:**\n\n- `uvx` runs tools from PyPI by package name. This can be unsafe - only run\n  well-known tools.\n- Only use `uv tool install` only when specifically requested by the user.\n\n### Pip interface\n\n**Use when:** Legacy workflows with `requirements.txt` or manual environment\nmanagement, no `uv.lock` present.\n\n**Key commands:**\n\n```bash\nuv venv\nuv pip install -r requirements.txt\nuv pip compile requirements.in -o requirements.txt\nuv pip sync requirements.txt\n\n# Platform independent resolution\nuv pip compile --universal requirements.in -o requirements.txt\n```\n\n**Important:**\n\n- Don't use the pip interface unless clearly needed.\n- Don't introduce new `requirements.txt` files.\n- Prefer `uv init` for new projects.\n\n## Migrating from other tools\n\n### pyenv → uv python\n\n```bash\npyenv install 3.12       → uv python install 3.12\npyenv versions           → uv python list --only-installed\npyenv local 3.12         → uv python pin 3.12\npyenv global 3.12        → uv python install 3.12 --default\n```\n\n### pipx → uvx\n\n```bash\npipx run ruff            → uvx ruff\npipx install ruff        → uv tool install ruff\npipx upgrade ruff        → uv tool upgrade ruff\npipx list                → uv tool list\n```\n\n### pip and pip-tools → uv pip\n\n```bash\npip install package      → uv pip install package\npip install -r req.txt   → uv pip install -r req.txt\npip freeze               → uv pip freeze\npip-compile req.in       → uv pip compile req.in\npip-sync req.txt         → uv pip sync req.txt\nvirtualenv .venv         → uv venv\n```\n\n## Common patterns\n\n### Don't use pip in uv projects\n\n```bash\n# Bad\npip install requests\n\n# Good\nuv add requests\n```\n\n### Don't run python directly\n\n```bash\n# Bad\npython script.py\n\n# Good\nuv run script.py\n```\n\n```bash\n# Bad\npython -c \"...\"\n\n# Good\nuv run python -c \"...\"\n```\n\n```bash\n# Bad\npython3.12 -c \"...\"\n\n# Good\nuvx python@3.12 -c \"...\"\n```\n\n### Don't manually manage environments in uv projects\n\n```bash\n# Bad\npython -m venv .venv\nsource .venv\u002Fbin\u002Factivate\n\n# Good\nuv run \u003Ccommand>\n```\n\n## Documentation\n\nFor detailed information, read the official documentation:\n\n- https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002Fllms.txt\n\nThe documentation links to specific pages for each of these workflows.\n",{"data":34,"body":35},{"name":4,"description":6},{"type":36,"children":37},"root",[38,45,51,58,69,101,106,134,140,147,157,165,266,272,294,301,499,505,514,521,645,653,679,685,709,716,860,867,900,906,912,1073,1079,1219,1225,1438,1444,1450,1511,1517,1572,1657,1737,1743,1835,1841,1846,1860,1865],{"type":39,"tag":40,"props":41,"children":42},"element","h1",{"id":4},[43],{"type":44,"value":4},"text",{"type":39,"tag":46,"props":47,"children":48},"p",{},[49],{"type":44,"value":50},"uv is an extremely fast Python package and project manager. It replaces pip,\npip-tools, pipx, pyenv, virtualenv, poetry, etc.",{"type":39,"tag":52,"props":53,"children":55},"h2",{"id":54},"when-to-use-uv",[56],{"type":44,"value":57},"When to use uv",{"type":39,"tag":46,"props":59,"children":60},{},[61,67],{"type":39,"tag":62,"props":63,"children":64},"strong",{},[65],{"type":44,"value":66},"Always use uv for Python work",{"type":44,"value":68},", especially if you see:",{"type":39,"tag":70,"props":71,"children":72},"ul",{},[73,88],{"type":39,"tag":74,"props":75,"children":76},"li",{},[77,79,86],{"type":44,"value":78},"The ",{"type":39,"tag":80,"props":81,"children":83},"code",{"className":82},[],[84],{"type":44,"value":85},"uv.lock",{"type":44,"value":87}," file",{"type":39,"tag":74,"props":89,"children":90},{},[91,93,99],{"type":44,"value":92},"uv headers in ",{"type":39,"tag":80,"props":94,"children":96},{"className":95},[],[97],{"type":44,"value":98},"requirements*",{"type":44,"value":100}," files, e.g., \"This file was autogenerated by uv\"",{"type":39,"tag":46,"props":102,"children":103},{},[104],{"type":44,"value":105},"Don't use uv in projects managed by other tools:",{"type":39,"tag":70,"props":107,"children":108},{},[109,122],{"type":39,"tag":74,"props":110,"children":111},{},[112,114,120],{"type":44,"value":113},"Poetry projects (identifiable by ",{"type":39,"tag":80,"props":115,"children":117},{"className":116},[],[118],{"type":44,"value":119},"poetry.lock",{"type":44,"value":121}," file)",{"type":39,"tag":74,"props":123,"children":124},{},[125,127,133],{"type":44,"value":126},"PDM projects (identifiable by ",{"type":39,"tag":80,"props":128,"children":130},{"className":129},[],[131],{"type":44,"value":132},"pdm.lock",{"type":44,"value":121},{"type":39,"tag":52,"props":135,"children":137},{"id":136},"choosing-the-right-workflow",[138],{"type":44,"value":139},"Choosing the right workflow",{"type":39,"tag":141,"props":142,"children":144},"h3",{"id":143},"scripts",[145],{"type":44,"value":146},"Scripts",{"type":39,"tag":46,"props":148,"children":149},{},[150,155],{"type":39,"tag":62,"props":151,"children":152},{},[153],{"type":44,"value":154},"Use when:",{"type":44,"value":156}," Running single Python files and standalone scripts.",{"type":39,"tag":46,"props":158,"children":159},{},[160],{"type":39,"tag":62,"props":161,"children":162},{},[163],{"type":44,"value":164},"Key commands:",{"type":39,"tag":166,"props":167,"children":172},"pre",{"className":168,"code":169,"language":170,"meta":171,"style":171},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","uv run script.py                      # Run a script\nuv run --with requests script.py      # Run with additional packages\nuv add --script script.py requests    # Add dependencies inline to the script\n","bash","",[173],{"type":39,"tag":80,"props":174,"children":175},{"__ignoreMap":171},[176,204,235],{"type":39,"tag":177,"props":178,"children":181},"span",{"class":179,"line":180},"line",1,[182,187,193,198],{"type":39,"tag":177,"props":183,"children":185},{"style":184},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[186],{"type":44,"value":4},{"type":39,"tag":177,"props":188,"children":190},{"style":189},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[191],{"type":44,"value":192}," run",{"type":39,"tag":177,"props":194,"children":195},{"style":189},[196],{"type":44,"value":197}," script.py",{"type":39,"tag":177,"props":199,"children":201},{"style":200},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[202],{"type":44,"value":203},"                      # Run a script\n",{"type":39,"tag":177,"props":205,"children":207},{"class":179,"line":206},2,[208,212,216,221,226,230],{"type":39,"tag":177,"props":209,"children":210},{"style":184},[211],{"type":44,"value":4},{"type":39,"tag":177,"props":213,"children":214},{"style":189},[215],{"type":44,"value":192},{"type":39,"tag":177,"props":217,"children":218},{"style":189},[219],{"type":44,"value":220}," --with",{"type":39,"tag":177,"props":222,"children":223},{"style":189},[224],{"type":44,"value":225}," requests",{"type":39,"tag":177,"props":227,"children":228},{"style":189},[229],{"type":44,"value":197},{"type":39,"tag":177,"props":231,"children":232},{"style":200},[233],{"type":44,"value":234},"      # Run with additional packages\n",{"type":39,"tag":177,"props":236,"children":238},{"class":179,"line":237},3,[239,243,248,253,257,261],{"type":39,"tag":177,"props":240,"children":241},{"style":184},[242],{"type":44,"value":4},{"type":39,"tag":177,"props":244,"children":245},{"style":189},[246],{"type":44,"value":247}," add",{"type":39,"tag":177,"props":249,"children":250},{"style":189},[251],{"type":44,"value":252}," --script",{"type":39,"tag":177,"props":254,"children":255},{"style":189},[256],{"type":44,"value":197},{"type":39,"tag":177,"props":258,"children":259},{"style":189},[260],{"type":44,"value":225},{"type":39,"tag":177,"props":262,"children":263},{"style":200},[264],{"type":44,"value":265},"    # Add dependencies inline to the script\n",{"type":39,"tag":141,"props":267,"children":269},{"id":268},"projects",[270],{"type":44,"value":271},"Projects",{"type":39,"tag":46,"props":273,"children":274},{},[275,279,281,287,289],{"type":39,"tag":62,"props":276,"children":277},{},[278],{"type":44,"value":154},{"type":44,"value":280}," There is a ",{"type":39,"tag":80,"props":282,"children":284},{"className":283},[],[285],{"type":44,"value":286},"pyproject.toml",{"type":44,"value":288}," or ",{"type":39,"tag":80,"props":290,"children":292},{"className":291},[],[293],{"type":44,"value":85},{"type":39,"tag":46,"props":295,"children":296},{},[297],{"type":39,"tag":62,"props":298,"children":299},{},[300],{"type":44,"value":164},{"type":39,"tag":166,"props":302,"children":304},{"className":168,"code":303,"language":170,"meta":171,"style":171},"uv init                   # Create new project\nuv add requests           # Add dependency\nuv remove requests        # Remove dependency\nuv sync                   # Install from lockfile\nuv run \u003Ccommand>          # Run commands in environment\nuv run python -c \"\"       # Run Python in project environment\nuv run -p 3.12 \u003Ccommand>  # Run with specific Python version\n",[305],{"type":39,"tag":80,"props":306,"children":307},{"__ignoreMap":171},[308,325,345,366,384,423,455],{"type":39,"tag":177,"props":309,"children":310},{"class":179,"line":180},[311,315,320],{"type":39,"tag":177,"props":312,"children":313},{"style":184},[314],{"type":44,"value":4},{"type":39,"tag":177,"props":316,"children":317},{"style":189},[318],{"type":44,"value":319}," init",{"type":39,"tag":177,"props":321,"children":322},{"style":200},[323],{"type":44,"value":324},"                   # Create new project\n",{"type":39,"tag":177,"props":326,"children":327},{"class":179,"line":206},[328,332,336,340],{"type":39,"tag":177,"props":329,"children":330},{"style":184},[331],{"type":44,"value":4},{"type":39,"tag":177,"props":333,"children":334},{"style":189},[335],{"type":44,"value":247},{"type":39,"tag":177,"props":337,"children":338},{"style":189},[339],{"type":44,"value":225},{"type":39,"tag":177,"props":341,"children":342},{"style":200},[343],{"type":44,"value":344},"           # Add dependency\n",{"type":39,"tag":177,"props":346,"children":347},{"class":179,"line":237},[348,352,357,361],{"type":39,"tag":177,"props":349,"children":350},{"style":184},[351],{"type":44,"value":4},{"type":39,"tag":177,"props":353,"children":354},{"style":189},[355],{"type":44,"value":356}," remove",{"type":39,"tag":177,"props":358,"children":359},{"style":189},[360],{"type":44,"value":225},{"type":39,"tag":177,"props":362,"children":363},{"style":200},[364],{"type":44,"value":365},"        # Remove dependency\n",{"type":39,"tag":177,"props":367,"children":369},{"class":179,"line":368},4,[370,374,379],{"type":39,"tag":177,"props":371,"children":372},{"style":184},[373],{"type":44,"value":4},{"type":39,"tag":177,"props":375,"children":376},{"style":189},[377],{"type":44,"value":378}," sync",{"type":39,"tag":177,"props":380,"children":381},{"style":200},[382],{"type":44,"value":383},"                   # Install from lockfile\n",{"type":39,"tag":177,"props":385,"children":387},{"class":179,"line":386},5,[388,392,396,402,407,413,418],{"type":39,"tag":177,"props":389,"children":390},{"style":184},[391],{"type":44,"value":4},{"type":39,"tag":177,"props":393,"children":394},{"style":189},[395],{"type":44,"value":192},{"type":39,"tag":177,"props":397,"children":399},{"style":398},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[400],{"type":44,"value":401}," \u003C",{"type":39,"tag":177,"props":403,"children":404},{"style":189},[405],{"type":44,"value":406},"comman",{"type":39,"tag":177,"props":408,"children":410},{"style":409},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[411],{"type":44,"value":412},"d",{"type":39,"tag":177,"props":414,"children":415},{"style":398},[416],{"type":44,"value":417},">",{"type":39,"tag":177,"props":419,"children":420},{"style":200},[421],{"type":44,"value":422},"          # Run commands in environment\n",{"type":39,"tag":177,"props":424,"children":426},{"class":179,"line":425},6,[427,431,435,440,445,450],{"type":39,"tag":177,"props":428,"children":429},{"style":184},[430],{"type":44,"value":4},{"type":39,"tag":177,"props":432,"children":433},{"style":189},[434],{"type":44,"value":192},{"type":39,"tag":177,"props":436,"children":437},{"style":189},[438],{"type":44,"value":439}," python",{"type":39,"tag":177,"props":441,"children":442},{"style":189},[443],{"type":44,"value":444}," -c",{"type":39,"tag":177,"props":446,"children":447},{"style":398},[448],{"type":44,"value":449}," \"\"",{"type":39,"tag":177,"props":451,"children":452},{"style":200},[453],{"type":44,"value":454},"       # Run Python in project environment\n",{"type":39,"tag":177,"props":456,"children":458},{"class":179,"line":457},7,[459,463,467,472,478,482,486,490,494],{"type":39,"tag":177,"props":460,"children":461},{"style":184},[462],{"type":44,"value":4},{"type":39,"tag":177,"props":464,"children":465},{"style":189},[466],{"type":44,"value":192},{"type":39,"tag":177,"props":468,"children":469},{"style":189},[470],{"type":44,"value":471}," -p",{"type":39,"tag":177,"props":473,"children":475},{"style":474},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[476],{"type":44,"value":477}," 3.12",{"type":39,"tag":177,"props":479,"children":480},{"style":398},[481],{"type":44,"value":401},{"type":39,"tag":177,"props":483,"children":484},{"style":189},[485],{"type":44,"value":406},{"type":39,"tag":177,"props":487,"children":488},{"style":409},[489],{"type":44,"value":412},{"type":39,"tag":177,"props":491,"children":492},{"style":398},[493],{"type":44,"value":417},{"type":39,"tag":177,"props":495,"children":496},{"style":200},[497],{"type":44,"value":498},"  # Run with specific Python version\n",{"type":39,"tag":141,"props":500,"children":502},{"id":501},"tools",[503],{"type":44,"value":504},"Tools",{"type":39,"tag":46,"props":506,"children":507},{},[508,512],{"type":39,"tag":62,"props":509,"children":510},{},[511],{"type":44,"value":154},{"type":44,"value":513}," Running command-line tools (e.g., ruff, ty, pytest) without\ninstallation.",{"type":39,"tag":46,"props":515,"children":516},{},[517],{"type":39,"tag":62,"props":518,"children":519},{},[520],{"type":44,"value":164},{"type":39,"tag":166,"props":522,"children":524},{"className":168,"code":523,"language":170,"meta":171,"style":171},"uvx \u003Ctool> \u003Cargs>            # Run a tool without installation\nuvx \u003Ctool>@\u003Cversion> \u003Cargs>  # Run a specific version of a tool\n",[525],{"type":39,"tag":80,"props":526,"children":527},{"__ignoreMap":171},[528,577],{"type":39,"tag":177,"props":529,"children":530},{"class":179,"line":180},[531,536,540,545,550,554,558,563,568,572],{"type":39,"tag":177,"props":532,"children":533},{"style":184},[534],{"type":44,"value":535},"uvx",{"type":39,"tag":177,"props":537,"children":538},{"style":398},[539],{"type":44,"value":401},{"type":39,"tag":177,"props":541,"children":542},{"style":189},[543],{"type":44,"value":544},"too",{"type":39,"tag":177,"props":546,"children":547},{"style":409},[548],{"type":44,"value":549},"l",{"type":39,"tag":177,"props":551,"children":552},{"style":398},[553],{"type":44,"value":417},{"type":39,"tag":177,"props":555,"children":556},{"style":398},[557],{"type":44,"value":401},{"type":39,"tag":177,"props":559,"children":560},{"style":189},[561],{"type":44,"value":562},"arg",{"type":39,"tag":177,"props":564,"children":565},{"style":409},[566],{"type":44,"value":567},"s",{"type":39,"tag":177,"props":569,"children":570},{"style":398},[571],{"type":44,"value":417},{"type":39,"tag":177,"props":573,"children":574},{"style":200},[575],{"type":44,"value":576},"            # Run a tool without installation\n",{"type":39,"tag":177,"props":578,"children":579},{"class":179,"line":206},[580,584,588,592,596,600,605,610,615,620,624,628,632,636,640],{"type":39,"tag":177,"props":581,"children":582},{"style":184},[583],{"type":44,"value":535},{"type":39,"tag":177,"props":585,"children":586},{"style":398},[587],{"type":44,"value":401},{"type":39,"tag":177,"props":589,"children":590},{"style":189},[591],{"type":44,"value":544},{"type":39,"tag":177,"props":593,"children":594},{"style":409},[595],{"type":44,"value":549},{"type":39,"tag":177,"props":597,"children":598},{"style":398},[599],{"type":44,"value":417},{"type":39,"tag":177,"props":601,"children":602},{"style":189},[603],{"type":44,"value":604},"@",{"type":39,"tag":177,"props":606,"children":607},{"style":398},[608],{"type":44,"value":609},"\u003C",{"type":39,"tag":177,"props":611,"children":612},{"style":189},[613],{"type":44,"value":614},"versio",{"type":39,"tag":177,"props":616,"children":617},{"style":409},[618],{"type":44,"value":619},"n",{"type":39,"tag":177,"props":621,"children":622},{"style":398},[623],{"type":44,"value":417},{"type":39,"tag":177,"props":625,"children":626},{"style":398},[627],{"type":44,"value":401},{"type":39,"tag":177,"props":629,"children":630},{"style":189},[631],{"type":44,"value":562},{"type":39,"tag":177,"props":633,"children":634},{"style":409},[635],{"type":44,"value":567},{"type":39,"tag":177,"props":637,"children":638},{"style":398},[639],{"type":44,"value":417},{"type":39,"tag":177,"props":641,"children":642},{"style":200},[643],{"type":44,"value":644},"  # Run a specific version of a tool\n",{"type":39,"tag":46,"props":646,"children":647},{},[648],{"type":39,"tag":62,"props":649,"children":650},{},[651],{"type":44,"value":652},"Important:",{"type":39,"tag":70,"props":654,"children":655},{},[656,666],{"type":39,"tag":74,"props":657,"children":658},{},[659,664],{"type":39,"tag":80,"props":660,"children":662},{"className":661},[],[663],{"type":44,"value":535},{"type":44,"value":665}," runs tools from PyPI by package name. This can be unsafe - only run\nwell-known tools.",{"type":39,"tag":74,"props":667,"children":668},{},[669,671,677],{"type":44,"value":670},"Only use ",{"type":39,"tag":80,"props":672,"children":674},{"className":673},[],[675],{"type":44,"value":676},"uv tool install",{"type":44,"value":678}," only when specifically requested by the user.",{"type":39,"tag":141,"props":680,"children":682},{"id":681},"pip-interface",[683],{"type":44,"value":684},"Pip interface",{"type":39,"tag":46,"props":686,"children":687},{},[688,692,694,700,702,707],{"type":39,"tag":62,"props":689,"children":690},{},[691],{"type":44,"value":154},{"type":44,"value":693}," Legacy workflows with ",{"type":39,"tag":80,"props":695,"children":697},{"className":696},[],[698],{"type":44,"value":699},"requirements.txt",{"type":44,"value":701}," or manual environment\nmanagement, no ",{"type":39,"tag":80,"props":703,"children":705},{"className":704},[],[706],{"type":44,"value":85},{"type":44,"value":708}," present.",{"type":39,"tag":46,"props":710,"children":711},{},[712],{"type":39,"tag":62,"props":713,"children":714},{},[715],{"type":44,"value":164},{"type":39,"tag":166,"props":717,"children":719},{"className":168,"code":718,"language":170,"meta":171,"style":171},"uv venv\nuv pip install -r requirements.txt\nuv pip compile requirements.in -o requirements.txt\nuv pip sync requirements.txt\n\n# Platform independent resolution\nuv pip compile --universal requirements.in -o requirements.txt\n",[720],{"type":39,"tag":80,"props":721,"children":722},{"__ignoreMap":171},[723,735,762,792,811,820,828],{"type":39,"tag":177,"props":724,"children":725},{"class":179,"line":180},[726,730],{"type":39,"tag":177,"props":727,"children":728},{"style":184},[729],{"type":44,"value":4},{"type":39,"tag":177,"props":731,"children":732},{"style":189},[733],{"type":44,"value":734}," venv\n",{"type":39,"tag":177,"props":736,"children":737},{"class":179,"line":206},[738,742,747,752,757],{"type":39,"tag":177,"props":739,"children":740},{"style":184},[741],{"type":44,"value":4},{"type":39,"tag":177,"props":743,"children":744},{"style":189},[745],{"type":44,"value":746}," pip",{"type":39,"tag":177,"props":748,"children":749},{"style":189},[750],{"type":44,"value":751}," install",{"type":39,"tag":177,"props":753,"children":754},{"style":189},[755],{"type":44,"value":756}," -r",{"type":39,"tag":177,"props":758,"children":759},{"style":189},[760],{"type":44,"value":761}," requirements.txt\n",{"type":39,"tag":177,"props":763,"children":764},{"class":179,"line":237},[765,769,773,778,783,788],{"type":39,"tag":177,"props":766,"children":767},{"style":184},[768],{"type":44,"value":4},{"type":39,"tag":177,"props":770,"children":771},{"style":189},[772],{"type":44,"value":746},{"type":39,"tag":177,"props":774,"children":775},{"style":189},[776],{"type":44,"value":777}," compile",{"type":39,"tag":177,"props":779,"children":780},{"style":189},[781],{"type":44,"value":782}," requirements.in",{"type":39,"tag":177,"props":784,"children":785},{"style":189},[786],{"type":44,"value":787}," -o",{"type":39,"tag":177,"props":789,"children":790},{"style":189},[791],{"type":44,"value":761},{"type":39,"tag":177,"props":793,"children":794},{"class":179,"line":368},[795,799,803,807],{"type":39,"tag":177,"props":796,"children":797},{"style":184},[798],{"type":44,"value":4},{"type":39,"tag":177,"props":800,"children":801},{"style":189},[802],{"type":44,"value":746},{"type":39,"tag":177,"props":804,"children":805},{"style":189},[806],{"type":44,"value":378},{"type":39,"tag":177,"props":808,"children":809},{"style":189},[810],{"type":44,"value":761},{"type":39,"tag":177,"props":812,"children":813},{"class":179,"line":386},[814],{"type":39,"tag":177,"props":815,"children":817},{"emptyLinePlaceholder":816},true,[818],{"type":44,"value":819},"\n",{"type":39,"tag":177,"props":821,"children":822},{"class":179,"line":425},[823],{"type":39,"tag":177,"props":824,"children":825},{"style":200},[826],{"type":44,"value":827},"# Platform independent resolution\n",{"type":39,"tag":177,"props":829,"children":830},{"class":179,"line":457},[831,835,839,843,848,852,856],{"type":39,"tag":177,"props":832,"children":833},{"style":184},[834],{"type":44,"value":4},{"type":39,"tag":177,"props":836,"children":837},{"style":189},[838],{"type":44,"value":746},{"type":39,"tag":177,"props":840,"children":841},{"style":189},[842],{"type":44,"value":777},{"type":39,"tag":177,"props":844,"children":845},{"style":189},[846],{"type":44,"value":847}," --universal",{"type":39,"tag":177,"props":849,"children":850},{"style":189},[851],{"type":44,"value":782},{"type":39,"tag":177,"props":853,"children":854},{"style":189},[855],{"type":44,"value":787},{"type":39,"tag":177,"props":857,"children":858},{"style":189},[859],{"type":44,"value":761},{"type":39,"tag":46,"props":861,"children":862},{},[863],{"type":39,"tag":62,"props":864,"children":865},{},[866],{"type":44,"value":652},{"type":39,"tag":70,"props":868,"children":869},{},[870,875,887],{"type":39,"tag":74,"props":871,"children":872},{},[873],{"type":44,"value":874},"Don't use the pip interface unless clearly needed.",{"type":39,"tag":74,"props":876,"children":877},{},[878,880,885],{"type":44,"value":879},"Don't introduce new ",{"type":39,"tag":80,"props":881,"children":883},{"className":882},[],[884],{"type":44,"value":699},{"type":44,"value":886}," files.",{"type":39,"tag":74,"props":888,"children":889},{},[890,892,898],{"type":44,"value":891},"Prefer ",{"type":39,"tag":80,"props":893,"children":895},{"className":894},[],[896],{"type":44,"value":897},"uv init",{"type":44,"value":899}," for new projects.",{"type":39,"tag":52,"props":901,"children":903},{"id":902},"migrating-from-other-tools",[904],{"type":44,"value":905},"Migrating from other tools",{"type":39,"tag":141,"props":907,"children":909},{"id":908},"pyenv-uv-python",[910],{"type":44,"value":911},"pyenv → uv python",{"type":39,"tag":166,"props":913,"children":915},{"className":168,"code":914,"language":170,"meta":171,"style":171},"pyenv install 3.12       → uv python install 3.12\npyenv versions           → uv python list --only-installed\npyenv local 3.12         → uv python pin 3.12\npyenv global 3.12        → uv python install 3.12 --default\n",[916],{"type":39,"tag":80,"props":917,"children":918},{"__ignoreMap":171},[919,958,993,1031],{"type":39,"tag":177,"props":920,"children":921},{"class":179,"line":180},[922,927,931,935,940,945,949,953],{"type":39,"tag":177,"props":923,"children":924},{"style":184},[925],{"type":44,"value":926},"pyenv",{"type":39,"tag":177,"props":928,"children":929},{"style":189},[930],{"type":44,"value":751},{"type":39,"tag":177,"props":932,"children":933},{"style":474},[934],{"type":44,"value":477},{"type":39,"tag":177,"props":936,"children":937},{"style":189},[938],{"type":44,"value":939},"       →",{"type":39,"tag":177,"props":941,"children":942},{"style":189},[943],{"type":44,"value":944}," uv",{"type":39,"tag":177,"props":946,"children":947},{"style":189},[948],{"type":44,"value":439},{"type":39,"tag":177,"props":950,"children":951},{"style":189},[952],{"type":44,"value":751},{"type":39,"tag":177,"props":954,"children":955},{"style":474},[956],{"type":44,"value":957}," 3.12\n",{"type":39,"tag":177,"props":959,"children":960},{"class":179,"line":206},[961,965,970,975,979,983,988],{"type":39,"tag":177,"props":962,"children":963},{"style":184},[964],{"type":44,"value":926},{"type":39,"tag":177,"props":966,"children":967},{"style":189},[968],{"type":44,"value":969}," versions",{"type":39,"tag":177,"props":971,"children":972},{"style":189},[973],{"type":44,"value":974},"           →",{"type":39,"tag":177,"props":976,"children":977},{"style":189},[978],{"type":44,"value":944},{"type":39,"tag":177,"props":980,"children":981},{"style":189},[982],{"type":44,"value":439},{"type":39,"tag":177,"props":984,"children":985},{"style":189},[986],{"type":44,"value":987}," list",{"type":39,"tag":177,"props":989,"children":990},{"style":189},[991],{"type":44,"value":992}," --only-installed\n",{"type":39,"tag":177,"props":994,"children":995},{"class":179,"line":237},[996,1000,1005,1009,1014,1018,1022,1027],{"type":39,"tag":177,"props":997,"children":998},{"style":184},[999],{"type":44,"value":926},{"type":39,"tag":177,"props":1001,"children":1002},{"style":189},[1003],{"type":44,"value":1004}," local",{"type":39,"tag":177,"props":1006,"children":1007},{"style":474},[1008],{"type":44,"value":477},{"type":39,"tag":177,"props":1010,"children":1011},{"style":189},[1012],{"type":44,"value":1013},"         →",{"type":39,"tag":177,"props":1015,"children":1016},{"style":189},[1017],{"type":44,"value":944},{"type":39,"tag":177,"props":1019,"children":1020},{"style":189},[1021],{"type":44,"value":439},{"type":39,"tag":177,"props":1023,"children":1024},{"style":189},[1025],{"type":44,"value":1026}," pin",{"type":39,"tag":177,"props":1028,"children":1029},{"style":474},[1030],{"type":44,"value":957},{"type":39,"tag":177,"props":1032,"children":1033},{"class":179,"line":368},[1034,1038,1043,1047,1052,1056,1060,1064,1068],{"type":39,"tag":177,"props":1035,"children":1036},{"style":184},[1037],{"type":44,"value":926},{"type":39,"tag":177,"props":1039,"children":1040},{"style":189},[1041],{"type":44,"value":1042}," global",{"type":39,"tag":177,"props":1044,"children":1045},{"style":474},[1046],{"type":44,"value":477},{"type":39,"tag":177,"props":1048,"children":1049},{"style":189},[1050],{"type":44,"value":1051},"        →",{"type":39,"tag":177,"props":1053,"children":1054},{"style":189},[1055],{"type":44,"value":944},{"type":39,"tag":177,"props":1057,"children":1058},{"style":189},[1059],{"type":44,"value":439},{"type":39,"tag":177,"props":1061,"children":1062},{"style":189},[1063],{"type":44,"value":751},{"type":39,"tag":177,"props":1065,"children":1066},{"style":474},[1067],{"type":44,"value":477},{"type":39,"tag":177,"props":1069,"children":1070},{"style":189},[1071],{"type":44,"value":1072}," --default\n",{"type":39,"tag":141,"props":1074,"children":1076},{"id":1075},"pipx-uvx",[1077],{"type":44,"value":1078},"pipx → uvx",{"type":39,"tag":166,"props":1080,"children":1082},{"className":168,"code":1081,"language":170,"meta":171,"style":171},"pipx run ruff            → uvx ruff\npipx install ruff        → uv tool install ruff\npipx upgrade ruff        → uv tool upgrade ruff\npipx list                → uv tool list\n",[1083],{"type":39,"tag":80,"props":1084,"children":1085},{"__ignoreMap":171},[1086,1118,1154,1190],{"type":39,"tag":177,"props":1087,"children":1088},{"class":179,"line":180},[1089,1094,1098,1103,1108,1113],{"type":39,"tag":177,"props":1090,"children":1091},{"style":184},[1092],{"type":44,"value":1093},"pipx",{"type":39,"tag":177,"props":1095,"children":1096},{"style":189},[1097],{"type":44,"value":192},{"type":39,"tag":177,"props":1099,"children":1100},{"style":189},[1101],{"type":44,"value":1102}," ruff",{"type":39,"tag":177,"props":1104,"children":1105},{"style":189},[1106],{"type":44,"value":1107},"            →",{"type":39,"tag":177,"props":1109,"children":1110},{"style":189},[1111],{"type":44,"value":1112}," uvx",{"type":39,"tag":177,"props":1114,"children":1115},{"style":189},[1116],{"type":44,"value":1117}," ruff\n",{"type":39,"tag":177,"props":1119,"children":1120},{"class":179,"line":206},[1121,1125,1129,1133,1137,1141,1146,1150],{"type":39,"tag":177,"props":1122,"children":1123},{"style":184},[1124],{"type":44,"value":1093},{"type":39,"tag":177,"props":1126,"children":1127},{"style":189},[1128],{"type":44,"value":751},{"type":39,"tag":177,"props":1130,"children":1131},{"style":189},[1132],{"type":44,"value":1102},{"type":39,"tag":177,"props":1134,"children":1135},{"style":189},[1136],{"type":44,"value":1051},{"type":39,"tag":177,"props":1138,"children":1139},{"style":189},[1140],{"type":44,"value":944},{"type":39,"tag":177,"props":1142,"children":1143},{"style":189},[1144],{"type":44,"value":1145}," tool",{"type":39,"tag":177,"props":1147,"children":1148},{"style":189},[1149],{"type":44,"value":751},{"type":39,"tag":177,"props":1151,"children":1152},{"style":189},[1153],{"type":44,"value":1117},{"type":39,"tag":177,"props":1155,"children":1156},{"class":179,"line":237},[1157,1161,1166,1170,1174,1178,1182,1186],{"type":39,"tag":177,"props":1158,"children":1159},{"style":184},[1160],{"type":44,"value":1093},{"type":39,"tag":177,"props":1162,"children":1163},{"style":189},[1164],{"type":44,"value":1165}," upgrade",{"type":39,"tag":177,"props":1167,"children":1168},{"style":189},[1169],{"type":44,"value":1102},{"type":39,"tag":177,"props":1171,"children":1172},{"style":189},[1173],{"type":44,"value":1051},{"type":39,"tag":177,"props":1175,"children":1176},{"style":189},[1177],{"type":44,"value":944},{"type":39,"tag":177,"props":1179,"children":1180},{"style":189},[1181],{"type":44,"value":1145},{"type":39,"tag":177,"props":1183,"children":1184},{"style":189},[1185],{"type":44,"value":1165},{"type":39,"tag":177,"props":1187,"children":1188},{"style":189},[1189],{"type":44,"value":1117},{"type":39,"tag":177,"props":1191,"children":1192},{"class":179,"line":368},[1193,1197,1201,1206,1210,1214],{"type":39,"tag":177,"props":1194,"children":1195},{"style":184},[1196],{"type":44,"value":1093},{"type":39,"tag":177,"props":1198,"children":1199},{"style":189},[1200],{"type":44,"value":987},{"type":39,"tag":177,"props":1202,"children":1203},{"style":189},[1204],{"type":44,"value":1205},"                →",{"type":39,"tag":177,"props":1207,"children":1208},{"style":189},[1209],{"type":44,"value":944},{"type":39,"tag":177,"props":1211,"children":1212},{"style":189},[1213],{"type":44,"value":1145},{"type":39,"tag":177,"props":1215,"children":1216},{"style":189},[1217],{"type":44,"value":1218}," list\n",{"type":39,"tag":141,"props":1220,"children":1222},{"id":1221},"pip-and-pip-tools-uv-pip",[1223],{"type":44,"value":1224},"pip and pip-tools → uv pip",{"type":39,"tag":166,"props":1226,"children":1228},{"className":168,"code":1227,"language":170,"meta":171,"style":171},"pip install package      → uv pip install package\npip install -r req.txt   → uv pip install -r req.txt\npip freeze               → uv pip freeze\npip-compile req.in       → uv pip compile req.in\npip-sync req.txt         → uv pip sync req.txt\nvirtualenv .venv         → uv venv\n",[1229],{"type":39,"tag":80,"props":1230,"children":1231},{"__ignoreMap":171},[1232,1271,1317,1347,1381,1413],{"type":39,"tag":177,"props":1233,"children":1234},{"class":179,"line":180},[1235,1240,1244,1249,1254,1258,1262,1266],{"type":39,"tag":177,"props":1236,"children":1237},{"style":184},[1238],{"type":44,"value":1239},"pip",{"type":39,"tag":177,"props":1241,"children":1242},{"style":189},[1243],{"type":44,"value":751},{"type":39,"tag":177,"props":1245,"children":1246},{"style":189},[1247],{"type":44,"value":1248}," package",{"type":39,"tag":177,"props":1250,"children":1251},{"style":189},[1252],{"type":44,"value":1253},"      →",{"type":39,"tag":177,"props":1255,"children":1256},{"style":189},[1257],{"type":44,"value":944},{"type":39,"tag":177,"props":1259,"children":1260},{"style":189},[1261],{"type":44,"value":746},{"type":39,"tag":177,"props":1263,"children":1264},{"style":189},[1265],{"type":44,"value":751},{"type":39,"tag":177,"props":1267,"children":1268},{"style":189},[1269],{"type":44,"value":1270}," package\n",{"type":39,"tag":177,"props":1272,"children":1273},{"class":179,"line":206},[1274,1278,1282,1286,1291,1296,1300,1304,1308,1312],{"type":39,"tag":177,"props":1275,"children":1276},{"style":184},[1277],{"type":44,"value":1239},{"type":39,"tag":177,"props":1279,"children":1280},{"style":189},[1281],{"type":44,"value":751},{"type":39,"tag":177,"props":1283,"children":1284},{"style":189},[1285],{"type":44,"value":756},{"type":39,"tag":177,"props":1287,"children":1288},{"style":189},[1289],{"type":44,"value":1290}," req.txt",{"type":39,"tag":177,"props":1292,"children":1293},{"style":189},[1294],{"type":44,"value":1295},"   →",{"type":39,"tag":177,"props":1297,"children":1298},{"style":189},[1299],{"type":44,"value":944},{"type":39,"tag":177,"props":1301,"children":1302},{"style":189},[1303],{"type":44,"value":746},{"type":39,"tag":177,"props":1305,"children":1306},{"style":189},[1307],{"type":44,"value":751},{"type":39,"tag":177,"props":1309,"children":1310},{"style":189},[1311],{"type":44,"value":756},{"type":39,"tag":177,"props":1313,"children":1314},{"style":189},[1315],{"type":44,"value":1316}," req.txt\n",{"type":39,"tag":177,"props":1318,"children":1319},{"class":179,"line":237},[1320,1324,1329,1334,1338,1342],{"type":39,"tag":177,"props":1321,"children":1322},{"style":184},[1323],{"type":44,"value":1239},{"type":39,"tag":177,"props":1325,"children":1326},{"style":189},[1327],{"type":44,"value":1328}," freeze",{"type":39,"tag":177,"props":1330,"children":1331},{"style":189},[1332],{"type":44,"value":1333},"               →",{"type":39,"tag":177,"props":1335,"children":1336},{"style":189},[1337],{"type":44,"value":944},{"type":39,"tag":177,"props":1339,"children":1340},{"style":189},[1341],{"type":44,"value":746},{"type":39,"tag":177,"props":1343,"children":1344},{"style":189},[1345],{"type":44,"value":1346}," freeze\n",{"type":39,"tag":177,"props":1348,"children":1349},{"class":179,"line":368},[1350,1355,1360,1364,1368,1372,1376],{"type":39,"tag":177,"props":1351,"children":1352},{"style":184},[1353],{"type":44,"value":1354},"pip-compile",{"type":39,"tag":177,"props":1356,"children":1357},{"style":189},[1358],{"type":44,"value":1359}," req.in",{"type":39,"tag":177,"props":1361,"children":1362},{"style":189},[1363],{"type":44,"value":939},{"type":39,"tag":177,"props":1365,"children":1366},{"style":189},[1367],{"type":44,"value":944},{"type":39,"tag":177,"props":1369,"children":1370},{"style":189},[1371],{"type":44,"value":746},{"type":39,"tag":177,"props":1373,"children":1374},{"style":189},[1375],{"type":44,"value":777},{"type":39,"tag":177,"props":1377,"children":1378},{"style":189},[1379],{"type":44,"value":1380}," req.in\n",{"type":39,"tag":177,"props":1382,"children":1383},{"class":179,"line":386},[1384,1389,1393,1397,1401,1405,1409],{"type":39,"tag":177,"props":1385,"children":1386},{"style":184},[1387],{"type":44,"value":1388},"pip-sync",{"type":39,"tag":177,"props":1390,"children":1391},{"style":189},[1392],{"type":44,"value":1290},{"type":39,"tag":177,"props":1394,"children":1395},{"style":189},[1396],{"type":44,"value":1013},{"type":39,"tag":177,"props":1398,"children":1399},{"style":189},[1400],{"type":44,"value":944},{"type":39,"tag":177,"props":1402,"children":1403},{"style":189},[1404],{"type":44,"value":746},{"type":39,"tag":177,"props":1406,"children":1407},{"style":189},[1408],{"type":44,"value":378},{"type":39,"tag":177,"props":1410,"children":1411},{"style":189},[1412],{"type":44,"value":1316},{"type":39,"tag":177,"props":1414,"children":1415},{"class":179,"line":425},[1416,1421,1426,1430,1434],{"type":39,"tag":177,"props":1417,"children":1418},{"style":184},[1419],{"type":44,"value":1420},"virtualenv",{"type":39,"tag":177,"props":1422,"children":1423},{"style":189},[1424],{"type":44,"value":1425}," .venv",{"type":39,"tag":177,"props":1427,"children":1428},{"style":189},[1429],{"type":44,"value":1013},{"type":39,"tag":177,"props":1431,"children":1432},{"style":189},[1433],{"type":44,"value":944},{"type":39,"tag":177,"props":1435,"children":1436},{"style":189},[1437],{"type":44,"value":734},{"type":39,"tag":52,"props":1439,"children":1441},{"id":1440},"common-patterns",[1442],{"type":44,"value":1443},"Common patterns",{"type":39,"tag":141,"props":1445,"children":1447},{"id":1446},"dont-use-pip-in-uv-projects",[1448],{"type":44,"value":1449},"Don't use pip in uv projects",{"type":39,"tag":166,"props":1451,"children":1453},{"className":168,"code":1452,"language":170,"meta":171,"style":171},"# Bad\npip install requests\n\n# Good\nuv add requests\n",[1454],{"type":39,"tag":80,"props":1455,"children":1456},{"__ignoreMap":171},[1457,1465,1481,1488,1496],{"type":39,"tag":177,"props":1458,"children":1459},{"class":179,"line":180},[1460],{"type":39,"tag":177,"props":1461,"children":1462},{"style":200},[1463],{"type":44,"value":1464},"# Bad\n",{"type":39,"tag":177,"props":1466,"children":1467},{"class":179,"line":206},[1468,1472,1476],{"type":39,"tag":177,"props":1469,"children":1470},{"style":184},[1471],{"type":44,"value":1239},{"type":39,"tag":177,"props":1473,"children":1474},{"style":189},[1475],{"type":44,"value":751},{"type":39,"tag":177,"props":1477,"children":1478},{"style":189},[1479],{"type":44,"value":1480}," requests\n",{"type":39,"tag":177,"props":1482,"children":1483},{"class":179,"line":237},[1484],{"type":39,"tag":177,"props":1485,"children":1486},{"emptyLinePlaceholder":816},[1487],{"type":44,"value":819},{"type":39,"tag":177,"props":1489,"children":1490},{"class":179,"line":368},[1491],{"type":39,"tag":177,"props":1492,"children":1493},{"style":200},[1494],{"type":44,"value":1495},"# Good\n",{"type":39,"tag":177,"props":1497,"children":1498},{"class":179,"line":386},[1499,1503,1507],{"type":39,"tag":177,"props":1500,"children":1501},{"style":184},[1502],{"type":44,"value":4},{"type":39,"tag":177,"props":1504,"children":1505},{"style":189},[1506],{"type":44,"value":247},{"type":39,"tag":177,"props":1508,"children":1509},{"style":189},[1510],{"type":44,"value":1480},{"type":39,"tag":141,"props":1512,"children":1514},{"id":1513},"dont-run-python-directly",[1515],{"type":44,"value":1516},"Don't run python directly",{"type":39,"tag":166,"props":1518,"children":1520},{"className":168,"code":1519,"language":170,"meta":171,"style":171},"# Bad\npython script.py\n\n# Good\nuv run script.py\n",[1521],{"type":39,"tag":80,"props":1522,"children":1523},{"__ignoreMap":171},[1524,1531,1543,1550,1557],{"type":39,"tag":177,"props":1525,"children":1526},{"class":179,"line":180},[1527],{"type":39,"tag":177,"props":1528,"children":1529},{"style":200},[1530],{"type":44,"value":1464},{"type":39,"tag":177,"props":1532,"children":1533},{"class":179,"line":206},[1534,1538],{"type":39,"tag":177,"props":1535,"children":1536},{"style":184},[1537],{"type":44,"value":19},{"type":39,"tag":177,"props":1539,"children":1540},{"style":189},[1541],{"type":44,"value":1542}," script.py\n",{"type":39,"tag":177,"props":1544,"children":1545},{"class":179,"line":237},[1546],{"type":39,"tag":177,"props":1547,"children":1548},{"emptyLinePlaceholder":816},[1549],{"type":44,"value":819},{"type":39,"tag":177,"props":1551,"children":1552},{"class":179,"line":368},[1553],{"type":39,"tag":177,"props":1554,"children":1555},{"style":200},[1556],{"type":44,"value":1495},{"type":39,"tag":177,"props":1558,"children":1559},{"class":179,"line":386},[1560,1564,1568],{"type":39,"tag":177,"props":1561,"children":1562},{"style":184},[1563],{"type":44,"value":4},{"type":39,"tag":177,"props":1565,"children":1566},{"style":189},[1567],{"type":44,"value":192},{"type":39,"tag":177,"props":1569,"children":1570},{"style":189},[1571],{"type":44,"value":1542},{"type":39,"tag":166,"props":1573,"children":1575},{"className":168,"code":1574,"language":170,"meta":171,"style":171},"# Bad\npython -c \"...\"\n\n# Good\nuv run python -c \"...\"\n",[1576],{"type":39,"tag":80,"props":1577,"children":1578},{"__ignoreMap":171},[1579,1586,1612,1619,1626],{"type":39,"tag":177,"props":1580,"children":1581},{"class":179,"line":180},[1582],{"type":39,"tag":177,"props":1583,"children":1584},{"style":200},[1585],{"type":44,"value":1464},{"type":39,"tag":177,"props":1587,"children":1588},{"class":179,"line":206},[1589,1593,1597,1602,1607],{"type":39,"tag":177,"props":1590,"children":1591},{"style":184},[1592],{"type":44,"value":19},{"type":39,"tag":177,"props":1594,"children":1595},{"style":189},[1596],{"type":44,"value":444},{"type":39,"tag":177,"props":1598,"children":1599},{"style":398},[1600],{"type":44,"value":1601}," \"",{"type":39,"tag":177,"props":1603,"children":1604},{"style":189},[1605],{"type":44,"value":1606},"...",{"type":39,"tag":177,"props":1608,"children":1609},{"style":398},[1610],{"type":44,"value":1611},"\"\n",{"type":39,"tag":177,"props":1613,"children":1614},{"class":179,"line":237},[1615],{"type":39,"tag":177,"props":1616,"children":1617},{"emptyLinePlaceholder":816},[1618],{"type":44,"value":819},{"type":39,"tag":177,"props":1620,"children":1621},{"class":179,"line":368},[1622],{"type":39,"tag":177,"props":1623,"children":1624},{"style":200},[1625],{"type":44,"value":1495},{"type":39,"tag":177,"props":1627,"children":1628},{"class":179,"line":386},[1629,1633,1637,1641,1645,1649,1653],{"type":39,"tag":177,"props":1630,"children":1631},{"style":184},[1632],{"type":44,"value":4},{"type":39,"tag":177,"props":1634,"children":1635},{"style":189},[1636],{"type":44,"value":192},{"type":39,"tag":177,"props":1638,"children":1639},{"style":189},[1640],{"type":44,"value":439},{"type":39,"tag":177,"props":1642,"children":1643},{"style":189},[1644],{"type":44,"value":444},{"type":39,"tag":177,"props":1646,"children":1647},{"style":398},[1648],{"type":44,"value":1601},{"type":39,"tag":177,"props":1650,"children":1651},{"style":189},[1652],{"type":44,"value":1606},{"type":39,"tag":177,"props":1654,"children":1655},{"style":398},[1656],{"type":44,"value":1611},{"type":39,"tag":166,"props":1658,"children":1660},{"className":168,"code":1659,"language":170,"meta":171,"style":171},"# Bad\npython3.12 -c \"...\"\n\n# Good\nuvx python@3.12 -c \"...\"\n",[1661],{"type":39,"tag":80,"props":1662,"children":1663},{"__ignoreMap":171},[1664,1671,1695,1702,1709],{"type":39,"tag":177,"props":1665,"children":1666},{"class":179,"line":180},[1667],{"type":39,"tag":177,"props":1668,"children":1669},{"style":200},[1670],{"type":44,"value":1464},{"type":39,"tag":177,"props":1672,"children":1673},{"class":179,"line":206},[1674,1679,1683,1687,1691],{"type":39,"tag":177,"props":1675,"children":1676},{"style":184},[1677],{"type":44,"value":1678},"python3.12",{"type":39,"tag":177,"props":1680,"children":1681},{"style":189},[1682],{"type":44,"value":444},{"type":39,"tag":177,"props":1684,"children":1685},{"style":398},[1686],{"type":44,"value":1601},{"type":39,"tag":177,"props":1688,"children":1689},{"style":189},[1690],{"type":44,"value":1606},{"type":39,"tag":177,"props":1692,"children":1693},{"style":398},[1694],{"type":44,"value":1611},{"type":39,"tag":177,"props":1696,"children":1697},{"class":179,"line":237},[1698],{"type":39,"tag":177,"props":1699,"children":1700},{"emptyLinePlaceholder":816},[1701],{"type":44,"value":819},{"type":39,"tag":177,"props":1703,"children":1704},{"class":179,"line":368},[1705],{"type":39,"tag":177,"props":1706,"children":1707},{"style":200},[1708],{"type":44,"value":1495},{"type":39,"tag":177,"props":1710,"children":1711},{"class":179,"line":386},[1712,1716,1721,1725,1729,1733],{"type":39,"tag":177,"props":1713,"children":1714},{"style":184},[1715],{"type":44,"value":535},{"type":39,"tag":177,"props":1717,"children":1718},{"style":189},[1719],{"type":44,"value":1720}," python@3.12",{"type":39,"tag":177,"props":1722,"children":1723},{"style":189},[1724],{"type":44,"value":444},{"type":39,"tag":177,"props":1726,"children":1727},{"style":398},[1728],{"type":44,"value":1601},{"type":39,"tag":177,"props":1730,"children":1731},{"style":189},[1732],{"type":44,"value":1606},{"type":39,"tag":177,"props":1734,"children":1735},{"style":398},[1736],{"type":44,"value":1611},{"type":39,"tag":141,"props":1738,"children":1740},{"id":1739},"dont-manually-manage-environments-in-uv-projects",[1741],{"type":44,"value":1742},"Don't manually manage environments in uv projects",{"type":39,"tag":166,"props":1744,"children":1746},{"className":168,"code":1745,"language":170,"meta":171,"style":171},"# Bad\npython -m venv .venv\nsource .venv\u002Fbin\u002Factivate\n\n# Good\nuv run \u003Ccommand>\n",[1747],{"type":39,"tag":80,"props":1748,"children":1749},{"__ignoreMap":171},[1750,1757,1779,1793,1800,1807],{"type":39,"tag":177,"props":1751,"children":1752},{"class":179,"line":180},[1753],{"type":39,"tag":177,"props":1754,"children":1755},{"style":200},[1756],{"type":44,"value":1464},{"type":39,"tag":177,"props":1758,"children":1759},{"class":179,"line":206},[1760,1764,1769,1774],{"type":39,"tag":177,"props":1761,"children":1762},{"style":184},[1763],{"type":44,"value":19},{"type":39,"tag":177,"props":1765,"children":1766},{"style":189},[1767],{"type":44,"value":1768}," -m",{"type":39,"tag":177,"props":1770,"children":1771},{"style":189},[1772],{"type":44,"value":1773}," venv",{"type":39,"tag":177,"props":1775,"children":1776},{"style":189},[1777],{"type":44,"value":1778}," .venv\n",{"type":39,"tag":177,"props":1780,"children":1781},{"class":179,"line":237},[1782,1788],{"type":39,"tag":177,"props":1783,"children":1785},{"style":1784},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[1786],{"type":44,"value":1787},"source",{"type":39,"tag":177,"props":1789,"children":1790},{"style":189},[1791],{"type":44,"value":1792}," .venv\u002Fbin\u002Factivate\n",{"type":39,"tag":177,"props":1794,"children":1795},{"class":179,"line":368},[1796],{"type":39,"tag":177,"props":1797,"children":1798},{"emptyLinePlaceholder":816},[1799],{"type":44,"value":819},{"type":39,"tag":177,"props":1801,"children":1802},{"class":179,"line":386},[1803],{"type":39,"tag":177,"props":1804,"children":1805},{"style":200},[1806],{"type":44,"value":1495},{"type":39,"tag":177,"props":1808,"children":1809},{"class":179,"line":425},[1810,1814,1818,1822,1826,1830],{"type":39,"tag":177,"props":1811,"children":1812},{"style":184},[1813],{"type":44,"value":4},{"type":39,"tag":177,"props":1815,"children":1816},{"style":189},[1817],{"type":44,"value":192},{"type":39,"tag":177,"props":1819,"children":1820},{"style":398},[1821],{"type":44,"value":401},{"type":39,"tag":177,"props":1823,"children":1824},{"style":189},[1825],{"type":44,"value":406},{"type":39,"tag":177,"props":1827,"children":1828},{"style":409},[1829],{"type":44,"value":412},{"type":39,"tag":177,"props":1831,"children":1832},{"style":398},[1833],{"type":44,"value":1834},">\n",{"type":39,"tag":52,"props":1836,"children":1838},{"id":1837},"documentation",[1839],{"type":44,"value":1840},"Documentation",{"type":39,"tag":46,"props":1842,"children":1843},{},[1844],{"type":44,"value":1845},"For detailed information, read the official documentation:",{"type":39,"tag":70,"props":1847,"children":1848},{},[1849],{"type":39,"tag":74,"props":1850,"children":1851},{},[1852],{"type":39,"tag":1853,"props":1854,"children":1858},"a",{"href":1855,"rel":1856},"https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002Fllms.txt",[1857],"nofollow",[1859],{"type":44,"value":1855},{"type":39,"tag":46,"props":1861,"children":1862},{},[1863],{"type":44,"value":1864},"The documentation links to specific pages for each of these workflows.",{"type":39,"tag":1866,"props":1867,"children":1868},"style",{},[1869],{"type":44,"value":1870},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1872,"total":237},[1873,1881,1889],{"slug":1874,"name":1874,"fn":1875,"description":1876,"org":1877,"tags":1878,"stars":23,"repoUrl":24,"updatedAt":1880},"ruff","lint and format Python code with ruff","Guide for using ruff, the extremely fast Python linter and formatter. Use this when linting, formatting, or fixing Python code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1879],{"name":18,"slug":19,"type":16},"2026-07-12T08:08:46.65062",{"slug":1882,"name":1882,"fn":1883,"description":1884,"org":1885,"tags":1886,"stars":23,"repoUrl":24,"updatedAt":1888},"ty","type check Python code with ty","Guide for using ty, the extremely fast Python type checker and language server. Use this when type checking Python code or setting up type checking in Python projects.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1887],{"name":18,"slug":19,"type":16},"2026-07-12T08:08:45.153123",{"slug":4,"name":4,"fn":5,"description":6,"org":1890,"tags":1891,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1892,1893,1894],{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":18,"slug":19,"type":16},{"items":1896,"total":237},[1897,1901,1905],{"slug":1874,"name":1874,"fn":1875,"description":1876,"org":1898,"tags":1899,"stars":23,"repoUrl":24,"updatedAt":1880},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1900],{"name":18,"slug":19,"type":16},{"slug":1882,"name":1882,"fn":1883,"description":1884,"org":1902,"tags":1903,"stars":23,"repoUrl":24,"updatedAt":1888},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1904],{"name":18,"slug":19,"type":16},{"slug":4,"name":4,"fn":5,"description":6,"org":1906,"tags":1907,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1908,1909,1910],{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":18,"slug":19,"type":16}]