# Python Developer Tooling Handbook > The Python Developer Tooling Handbook is a comprehensive guide to Python development tools including uv, ruff, pytest, mypy, ty, and more. ## Python Tooling Blog - [ty now checks Pydantic like Pydantic does](https://pydevtools.com/blog/ty-ships-first-class-pydantic-support/): ty shipped first-class Pydantic support across its July 2026 releases (0.0.57 through 0.0.61), and … - Published 2026-07-21 - [Python 3.15 makes UTF-8 the default encoding](https://pydevtools.com/blog/python-315-utf8-default/): Python 3.15, due as a release candidate on August 4, 2026, ships PEP 686 enabled by default. Every … - Published 2026-07-19 - [uv Wants to Secure Your CLI Tools](https://pydevtools.com/blog/uv-wants-to-secure-your-cli-tools/): Tools like Ruff, pre-commit, and httpie sit on a developer’s machine for months. Your project … - Published 2026-07-07 - [uv Solved the Packaging UX, Not Packaging](https://pydevtools.com/blog/uv-solved-packaging-ux-hard-problems-remain/): Someone asked me what the new Python Packaging Council could possibly work on “now that uv has … - Published 2026-07-06 - [Pixi Can Now Build Packages From Source](https://pydevtools.com/blog/pixi-can-now-build-packages-from-source/): Pixi shipped pixi-build, a preview feature that lets pixi build packages from source instead of only … - Published 2026-07-02 - [Astral Shuts Down pyx, Open-Sources the Part That Mattered](https://pydevtools.com/blog/astral-winds-down-pyx-open-sources-gpu-packaging/): Astral is winding down pyx, its hosted commercial registry, and open-sourcing the GPU index and … - Published 2026-06-17 - [Blanket 1.0: An Early Look at Larry Hastings's Deterministic Threading Tests](https://pydevtools.com/blog/blanket-1-0-early-look/): Larry Hastings (CPython core developer behind the Gilectomy GIL-removal work) released Blanket 1.0 … - Published 2026-05-26 - [PyPI Moved 1.92 Exabytes Last Year. Its Safety Team Is One Person.](https://pydevtools.com/blog/pypi-exabyte-year-one-person-safety-team/): On July 26, 2025, PyPI maintainers received phishing emails pointing at pypj.org. The domain proxied … - Published 2026-05-20 - [Bernát Gábor's Recap of the 2026 Python Packaging Summit](https://pydevtools.com/blog/python-packaging-summit-2026-recap/): The 2026 Python Packaging Summit ran on Friday, May 15 in Long Beach. Bernát Gábor’s hour-by-hour … - Published 2026-05-18 - [If you're on mypy in 2026, Pyrefly is the obvious upgrade](https://pydevtools.com/blog/pyrefly-1-0-is-the-obvious-mypy-upgrade/): The case for staying on mypy has often been migration cost. Pyrefly 1.0, released May 12, 2026, … - Published 2026-05-13 - [Python 3.14.5 rolls back the incremental garbage collector](https://pydevtools.com/blog/python-3145-rolls-back-the-incremental-garbage-collector/): Python 3.14.5 landed on 10 May 2026, pulled the incremental garbage collector that shipped in 3.14.0 … - Published 2026-05-11 - [mypy 2.0 picks parallelism over a rewrite](https://pydevtools.com/blog/mypy-2-0-parallel-type-checking/): For most of the past year, the speed conversation around Python type checkers has had one shape: … - Published 2026-05-09 - [Locking dependencies for PEP 723 single-file scripts in May 2026](https://pydevtools.com/blog/locking-dependencies-for-pep-723-scripts/): PEP 723 plus uv made single-file Python scripts easy to share. Declare dependencies in a commented … - Published 2026-05-08 - [Ruff Already Rewrites Your Python to Be More Idiomatic](https://pydevtools.com/blog/ruff-already-rewrites-your-python-to-be-more-idiomatic/): Open any Python codebase that’s been through a few hands and you’ll find the same fossils: a for … - Published 2026-05-05 - [Lightning Got Owned: When `import lightning` Steals Your Credentials](https://pydevtools.com/blog/lightning-pypi-compromise-import-time-supply-chain-attack/): import lightning shows up at the top of millions of PyTorch training scripts. On April 30, 2026, … - Published 2026-04-30 - [What Reddit taught me about why people switch to uv](https://pydevtools.com/blog/what-reddit-taught-me-about-why-people-switch-to-uv/): A thread titled “But really, why use uv?” landed on r/Python and pulled 476 upvotes. The original … - Published 2026-04-27 - [ty and pyrefly find different bugs](https://pydevtools.com/blog/ty-and-pyrefly-find-different-bugs/): Note Update 2026-04-29: An earlier version of this post used a multi-line Liskov-violation panel … - Published 2026-04-27 - [Did pip 26 close the gap with uv?](https://pydevtools.com/blog/did-pip-26-close-the-gap-with-uv/): pip 26.0 closed two of uv’s clearest feature gaps in January: PEP 723 script installs and a … - Published 2026-04-24 - [How Astral Uses Its Own Tools](https://pydevtools.com/blog/how-astral-uses-its-own-tools/): Astral runs ruff, uv, and ty inside the repos that build them. Their pyproject.toml, … - Published 2026-04-23 - [Astral told you how they secure uv. Here's what to keep.](https://pydevtools.com/blog/astral-security-post-what-to-keep/): Astral published a detailed writeup of how they secure the org that ships uv, Ruff, and ty. It’s a … - Published 2026-04-16 - [PyPI's Second Audit Found 14 Bugs. Two Remain.](https://pydevtools.com/blog/pypi-second-security-audit/): PyPI completed its second external security audit today. Trail of Bits found 14 issues in the … - Published 2026-04-16 - [Your Python Wheels Still Target 2009 CPUs](https://pydevtools.com/blog/your-python-wheels-still-target-2009-cpus/): Intel shipped AVX2 in 2013. AMD reached it with Excavator-era parts around 2015. Eleven years later, … - Published 2026-04-15 - [uv won developer hearts. Now it has to win READMEs.](https://pydevtools.com/blog/uv-admired-but-not-adopted/): uv ranked as the most admired technology in Stack Overflow’s 2025 Developer Survey at 74%. A recent … - Published 2026-04-14 - [The Python Packaging Summit Returns to PyCon US](https://pydevtools.com/blog/python-packaging-summit-2026/): The Python Packaging Summit returns Friday, May 15, 2026 in Room 201A of the Long Beach Convention … - Published 2026-04-09 - [How uv Solves Dependencies So Fast](https://pydevtools.com/blog/how-uv-solves-dependencies-so-fast/): Tip Want more on uv? Browse every uv tutorial, how-to, reference, and explanation on the uv topic … - Published 2026-04-09 - [LLM-Powered Copycats Are Flooding PyPI](https://pydevtools.com/blog/llm-powered-copycats-are-flooding-pypi/): A developer named Roman Dubrovin published repowise, a tool for generating structured wikis from … - Published 2026-04-08 - [In 2012, Guido Had No Idea NumPy Had Its Own Packaging System](https://pydevtools.com/blog/guido-had-no-idea-about-numpy-distutils/): In a recently resurfaced 2012 PyData panel discussion, Fernando Perez, Travis Oliphant, and David … - Published 2026-04-07 - [Migrating from mypy to ty: Lessons from FastAPI](https://pydevtools.com/blog/migrating-from-mypy-to-ty-lessons-from-fastapi/): Sebastián Ramírez, creator of FastAPI, recently announced that all his Python projects now use ty … - Published 2026-04-03 - [LiteLLM Got Owned, and Your Dependencies Might Be Next](https://pydevtools.com/blog/litellm-supply-chain-attack-and-securing-python-dependencies/): Earlier today, someone published malicious versions of litellm (versions 1.82.7 and 1.82.8) to PyPI. … - Published 2026-03-24 - [OpenAI to Acquire Astral](https://pydevtools.com/blog/openai-acquires-astral/): OpenAI announced today that it will acquire Astral, the company behind uv, Ruff, and ty. The Astral … - Published 2026-03-19 - [Charlie Marsh on uv, Coding Agents, and the Changing Open Source Contract](https://pydevtools.com/blog/charlie-marsh-test-set-interview/): Charlie Marsh (founder of Astral, creator of ruff, uv, and ty) joined Michael Chow and Wes McKinney … - Published 2026-02-24 - [Seven Claude Code Skills for Python from the Creator of spaCy](https://pydevtools.com/blog/matthew-honnibal-claude-skills-for-python/): Matthew Honnibal, co-founder of Explosion and creator of spaCy, has published a collection of Claude … - Published 2026-02-16 - [Pydantic Monty: A Secure Python Interpreter for AI Agents](https://pydevtools.com/blog/pydantic-monty-secure-python-interpreter-for-ai-agents/): Pydantic has released Monty, a minimal Python interpreter written in Rust for safely executing … - Published 2026-02-06 - [FOSDEM Talk: Modern Python Monorepo with uv, Workspaces, and prek](https://pydevtools.com/blog/fosdem-talk-modern-python-monorepo/): Jarek Potiuk, Apache Airflow PMC member and the project’s top committer, gave a talk at FOSDEM 2026 … - Published 2026-02-05 - [uvx.sh: Install Python tools without uv or Python](https://pydevtools.com/blog/uvx-sh-install-python-tools-without-uv-or-python/): Astral has released uvx.sh, a service that generates installation scripts for any Python tool on … - Published 2026-01-22 - [Teaching Claude Code Quality Patterns with a Custom Skill](https://pydevtools.com/blog/dignified-python-313-claude-skill/): Dagster’s dignified-python-313 skill guides Claude Code to write Python 3.13 code that matches their … - Published 2026-01-09 - [ty is Built with AI](https://pydevtools.com/blog/ai-driven-software-development/): Tool creators are building their tools with AI coding assistants. Boris Cherny, creator of Claude … - Published 2026-01-02 - [How uv Achieved Its Performance](https://pydevtools.com/blog/how-uv-achieved-its-performance/): Andrew Nesbitt’s “How uv got so fast” explains that uv’s speed comes less from Rust and more from … - Published 2025-12-26 - [ty: Astral's New Python Type Checker Released](https://pydevtools.com/blog/ty-beta/): Astral released ty, a Python type checker written in Rust, today. The company behind uv and Ruff … - Published 2025-12-16 - [Teaching LLMs Python Best Practices](https://pydevtools.com/blog/teaching-llms-python-best-practices/): Large language models possess extensive Python knowledge from training data, yet they consistently … - Published 2025-11-21 - [Claude Code Hooks for uv Projects](https://pydevtools.com/blog/claude-code-hooks-for-uv/): Claude Code supports custom hooks that guide the AI agent toward project-specific workflows. For … - Published 2025-11-11 - [Sync with uv: Eliminate Pre-commit Version Drift](https://pydevtools.com/blog/sync-with-uv-eliminate-pre-commit-version-drift/): anaging tool versions across multiple configuration files creates persistent headaches in Python … - Published 2025-09-26 - [Analysis of the New Wave of Python Type Checkers](https://pydevtools.com/blog/analysis-of-the-new-wave-of-python-type-checkers/): Rob Hand’s comparison of emerging type checkers is the first comprehensive look at three new … - Published 2025-09-17 - [prek: pre-commit, but fast](https://pydevtools.com/blog/prek-pre-commit-but-fast/): pre-commit is an essential tool in my development workflow for running ruff and other tools. … - Published 2025-09-16 - [uv format: Code Formatting Comes to uv (experimentally!)](https://pydevtools.com/blog/uv-format-code-formatting-comes-to-uv-experimentally/): The latest uv release (0.8.13) quietly introduced an experimental new command that Python developers … - Published 2025-08-21 - [Google Sunsets Pytype: The End of an Era for Python Type Checking](https://pydevtools.com/blog/google-sunsets-pytype-the-end-of-an-era-for-python-type-checking/): Google announced that Pytype, their Python static type checker, will end support with Python 3.12. … - Published 2025-08-21 - [ty's Breakthrough: Why Incremental Analysis Matters for Python](https://pydevtools.com/blog/tys-breakthrough-why-incremental-analysis-matters-for-python/): In a recent PyBytes podcast interview, Astral’s Charlie Marsh shared insights into what makes their … - Published 2025-08-11 - [How Python's RFC Process Paved the Way for uv, Ruff, and Ty](https://pydevtools.com/blog/peps-and-astral/): Astral, an independent startup, has taken the Python world by storm over the last few years with … - Published 2025-08-01 - [Interview with the Pybites podcast](https://pydevtools.com/blog/interview-with-the-pybites-podcast/): Bob Belderbos invited me on the Pybites podcast where I talked about the handbook, uv, and more. I … - Published 2025-07-30 - [Use Interceptors to teach Claude Code to use uv](https://pydevtools.com/blog/interceptors/): AI coding agents like Claude Code, Cursor, or GitHub Copilot often default to using system Python … - Published 2025-07-28 - [uvhow: Get uv upgrade instructions for your uv install](https://pydevtools.com/blog/uvhow-get-uv-upgrade-instructions-for-your-uv-install/): I’ve released uvhow, a simple command-line tool that detects how uv was installed on your system and … - Published 2025-07-22 - [uv 0.8 Release: Automatic Python Installation to PATH](https://pydevtools.com/blog/uv-0-8-release-automatic-python-installation-to-path/): [!TIP] Check out our guide to upgrading uv uv 0.8 stabilizes one of the most significant workflow … - Published 2025-07-19 - [Python is good now!](https://pydevtools.com/blog/python-is-good-now/): love César Soto Valero’s recent post I’m Switching to Python and Actually Liking It. To my great … - Published 2025-07-16 - [Why isn't Python packaging part of core development?](https://pydevtools.com/blog/why-isnt-python-packaging-part-of-core-development/): In a video interview with bitecode.dev, Python core developer Brett Cannon explains why packaging … - Published 2025-07-16 - [Hynek Schlawack's uv Workflow Guide](https://pydevtools.com/blog/fast-and-boring-uv/): {< youtube TiBIjouDGuI >}} Hynek Schlawack’s new video “uv: Making Python Local Workflows FAST and … - Published 2025-07-07 - [The uv build backend is now stable](https://pydevtools.com/blog/uv-build-backend/): For about a year, uv has had a uv build command for generating distributable wheels and source … - Published 2025-07-03 - [Managing Python Versions In Your uv Projects](https://pydevtools.com/blog/managing-python-versions-in-your-uv-projects/): One of the many ways the package manager uv has changed Python is by making it painless to install … - Published 2025-06-25 - [Comparison of the Two New Typecheckers](https://pydevtools.com/blog/comparison-of-the-two-new-typecheckers/): At PyCon 2025’s Typing Summit, participants saw the first demonstrations of Meta’s Pyrefly and … - Published 2025-05-28 - [Pyrefly: Meta's New Type Checker for Python](https://pydevtools.com/blog/pyrefly-metas-new-type-checker-for-python/): Meta has announced Pyrefly, a new static type checker built in Rust to deliver fast performance and … - Published 2025-04-30 - [Why uv makes Make less essential for Python projects](https://pydevtools.com/blog/why-uv-makes-make-less-essential-for-python-projects/): or years, I’ve been a strong advocate for using Makefiles in Python projects. They’ve provided a … - Published 2025-04-04 - [Early Explorations of Astral's Red Knot Type Checker](https://pydevtools.com/blog/early-explorations-of-astrals-red-knot-type-checker/): Update (May 5, 2025): Red Knot has been renamed ty. A recent blog post by Michael Jurasovic … - Published 2025-04-03 - [The Python Tooling Revolution](https://pydevtools.com/blog/python-tooling-revolution/): Python development is experiencing a tooling revolution thanks to Astral’s ruff and uv. Lewis Gaul’s … - Published 2025-04-02 - [Simple, Modern Python](https://pydevtools.com/blog/simple-modern-uv/): Joshua Levy recently shared his enthusiasm for uv, Astral’s Python package manager, along with a … - Published 2025-04-01 - [Setuptools 78.0.1 breaking package installation](https://pydevtools.com/blog/setuptools-78-0-1-breaking-package-installation/): Update: Setuptools released version 78.0.2 postponing this breaking change. A recent update to … - Published 2025-03-24 - [Dependabot Now Supports uv](https://pydevtools.com/blog/dependabot-uv-support/): As of March 13, 2025, Dependabot officially supports uv. Dependabot monitors repositories for … - Published 2025-03-14 - [Why Doesn't the Authoritative Python Packaging Guide Mention the Best Thing that's Happened to Python Packaging?](https://pydevtools.com/blog/uv-not-in-ppug/): Despite uv’s meteoric rise and widespread adoption in the Python community over the last year, the … - Published 2025-02-27 - [Production Experiences with uv](https://pydevtools.com/blog/uv-in-prod/): Yesterday on Reddit, batman-iphone asked: Anyone used uv package manager in production Is it … - Published 2025-02-26 - [Poetry's Move Toward Python Standards](https://pydevtools.com/blog/poetry2/): This is an excerpt from the forthcoming Python Developer’s Tool Handbook. The handbook provides … - Published 2025-02-21 - [Why Use uv Projects Instead of requirements.txt?](https://pydevtools.com/blog/requirementstxt-vs-pyprojecttoml/): This is an excerpt from the forthcoming Python Developer’s Tool Handbook. The handbook provides … - Published 2025-02-19 - [bitecode.dev's "A year of uv"](https://pydevtools.com/blog/year-of-uv/): uv hit its one-year mark, and bitecode.dev published a thorough retrospective on how it’s held up. … - Published 2025-02-18 - [Flexible Python Version Management with uv and tox](https://pydevtools.com/blog/flexible-version-management-for-tox/): When working with Python projects that use tox for testing, you may encounter version mismatch … - Published 2025-02-12 - [It's happening! A Python Type Checker from Astral](https://pydevtools.com/blog/its-happening-a-python-type-checker-from-astral/): After months of speculation, Astral (creators of Ruff and uv) has officially announced their work on … - Published 2025-01-29 - [One Line Command to Launch a Notebook with Pytorch](https://pydevtools.com/blog/one-line-command-to-launch-a-notebook-with-pytorch/): uv is changing how accessible Python is for new users. If you want to try out pytorch in a Jupyter … - Published 2025-01-15 - ["uv: Towards a unified vision for Python tooling"](https://pydevtools.com/blog/uv-towards-a-unified-vision-for-python-tooling/): This is a great post](https://thedataquarry.com/posts/towards-a-unified-python-toolchain/) by … - Published 2024-12-27 - [Effective Python Developer Tooling in December 2024](https://pydevtools.com/blog/effective-python-developer-tooling-in-december-2024/): I have been writing Python for 14 years next month. When I started, people were still using … - Published 2024-12-20 - [uv 0.3: One command line to rule them all (almost)](https://pydevtools.com/blog/uv-0-3-one-command-line-to-rule-them-all-almost/): Yesterday, Charlie Marsh and his team at Astral released uv 0.3.0. For those who may have missed it, … - Published 2024-08-21 - [Require pip to install packages in virtual environment](https://pydevtools.com/blog/require-pip-to-install-in-virtual-environments/): A frequently heard piece of advice in improving Python development practice is using virtual … - Published 2024-03-04 - [uv got to keep up: a new installer announced!](https://pydevtools.com/blog/uv-got-to-keep-up-a-new-installer-announced/): Astral, Charlie Marsh’s company best known for Ruff, announced uv today, “an extremely fast Python … - Published 2024-02-16 - [Pip and Poetry and Hatch, Oh My!](https://pydevtools.com/blog/pip-and-poetry-and-hatch-oh-my/): Modern Python developers have a plethora of tooling available to help the development process. When … - Published 2024-02-14 - [Sponsor the Python Developer Tooling Handbook](https://pydevtools.com/blog/sponsor-the-python-developer-tooling-handbook/): The Python Developer Tooling Handbook is free, independent, and ad-free. Sponsorship helps fund … - Published 2024-02-14 - [Scientific Python Library Development Guide](https://pydevtools.com/blog/scientific-python-library-development-guide/): Along with the Python Packaging User Guide, another excellent resource for learning about Python … - Published 2024-02-12 - [Python Packaging Tool Examples](https://pydevtools.com/blog/packaging-tool-examples/): In the last few years, Python packaging has seen a lot of change. Instead of every project using … - Published 2024-02-06 - [Quick start guide for Python development on a Mac](https://pydevtools.com/blog/python-quickstart/): Note For a modern approach, consider uv, which handles Python installation, project management, and … - Published 2024-02-05 - [Introduction to Rye](https://pydevtools.com/blog/introduction-to-rye/): Note Rye’s author Armin Ronacher now recommends uv for new projects. Rye continues as a maintained … - Published 2024-02-03 - [Python Packaging User Guide](https://pydevtools.com/blog/python-packaging-user-guide/): The Python Packaging Authority produces an excellent resource called the Python Packaging User … - Published 2024-02-03 ## Feedback ## Newsletters ## Python Developer Tooling Handbook ### Python Development Tooling Tutorials - [Build a Python library with a C extension](https://pydevtools.com/handbook/tutorial/build-a-python-library-with-a-c-extension/): Python handles strings well. C handles them faster. In this tutorial, you’ll write three string … - [Build a Python library with a C++ extension](https://pydevtools.com/handbook/tutorial/build-a-python-library-with-a-cpp-extension/): Python handles most tasks well, but numerical code and tight loops can hit its performance ceiling. … - [Build a Python library with a Rust extension](https://pydevtools.com/handbook/tutorial/build-a-python-library-with-a-rust-extension/): Python is flexible and productive, but sometimes a function needs to run faster than Python allows. … - [Build and Publish a Python Package with uv, Ruff, Pyrefly, pytest, and GitHub Actions](https://pydevtools.com/handbook/tutorial/build-and-publish-a-python-package/): A Python library needs more than working code. It needs linting to catch bugs before they land, type … - [Create your first Python project with pixi](https://pydevtools.com/handbook/tutorial/create-your-first-python-project-with-pixi/): This tutorial builds a weather data analysis tool that reads CSV data, computes statistics with … - [Create your first Python project with uv](https://pydevtools.com/handbook/tutorial/create-your-first-python-project/): This Python uv tutorial walks you through building a text analysis tool that counts words, measures … - [Getting started with uv](https://pydevtools.com/handbook/tutorial/getting-started-with-uv/): uv handles Python installation, project setup, dependency management, and script execution in a … - [Publishing Your First Python Package to PyPI](https://pydevtools.com/handbook/tutorial/publishing-your-first-python-package-to-pypi/): This tutorial guides you through publishing a Python package to the Python Package Index (PyPI) … - [Run your first Python script with uv](https://pydevtools.com/handbook/tutorial/how-to-run-your-first-python-script/): uv can run Python scripts without any prior Python installation. This tutorial starts with a … - [Set up a complete Python project with uv, Ruff, Pyrefly, pytest, and pre-commit](https://pydevtools.com/handbook/tutorial/set-up-a-complete-python-project/): Five tools turn an empty directory into a project that catches bugs before they reach version … - [Set up a data science project with uv](https://pydevtools.com/handbook/tutorial/set-up-a-data-science-project-with-uv/): This tutorial sets up a data analysis project with uv so that every dependency is pinned, notebooks … - [Set up a Django project with uv](https://pydevtools.com/handbook/tutorial/set-up-a-django-project-with-uv/): Most Django setup guides still tell you to install Python and a virtual environment by hand before … - [Set up a GPU data science project with pixi](https://pydevtools.com/handbook/tutorial/set-up-a-gpu-data-science-project-with-pixi/): This tutorial builds a PyTorch image classification project managed by pixi. It loads a pretrained … - [Set up a multi-GPU training environment with uv](https://pydevtools.com/handbook/tutorial/set-up-a-multi-gpu-training-environment-with-uv/): This tutorial builds a PyTorch training project managed by uv that runs identically on one GPU or … - [Set up a Python project optimized for Claude Code](https://pydevtools.com/handbook/tutorial/set-up-a-python-project-for-claude-code/): Claude Code writes Python fluently, but without project-specific configuration it falls back on pip … - [Set up Ruff for formatting and checking your code](https://pydevtools.com/handbook/tutorial/set-up-ruff-for-formatting-and-checking-your-code/): This tutorial helps you set up Ruff to automatically format your Python code and check it for common … - [Setting up GitHub Actions with uv](https://pydevtools.com/handbook/tutorial/setting-up-github-actions-with-uv/): Every push to main and every pull request should be tested and linted automatically. This tutorial … - [Setting up testing with pytest and uv](https://pydevtools.com/handbook/tutorial/setting-up-testing-with-pytest-and-uv/): Every Python project needs tests, but setting up a test suite from scratch involves decisions about … - [Take over an existing conda environment](https://pydevtools.com/handbook/tutorial/take-over-an-existing-conda-environment/): You just joined a team or lab that uses conda. Someone handed you an environment.yml and told you to … - [Try Free-Threaded Python with uv](https://pydevtools.com/handbook/tutorial/try-free-threaded-python-with-uv/): Python threads usually don’t make CPU-bound code faster. The Global Interpreter Lock lets only one … ### Python Development Tooling How-To Guides - [How to add dynamic versioning to uv projects](https://pydevtools.com/handbook/how-to/how-to-add-dynamic-versioning-to-uv-projects/): Dynamic versioning generates version numbers from Git tags instead of requiring manual updates to a … - [How to add Python to your system path with uv](https://pydevtools.com/handbook/how-to/how-to-add-python-to-your-system-path-with-uv/): Since uv 0.8, Python versions installed by uv are automatically added to your PATH. When you run uv … - [How to add type annotations to a Python project with pyrefly infer](https://pydevtools.com/handbook/how-to/how-to-add-type-annotations-with-pyrefly-infer/): Pyrefly can turn def total(numbers): into def total(numbers: list[int]) -> int: without running your … - [How to Build Multi-Platform Wheels with cibuildwheel](https://pydevtools.com/handbook/how-to/how-to-build-multi-platform-wheels-with-cibuildwheel/): Python packages with compiled extensions (C, C++, Rust, Cython) need platform-specific wheels so … - [How to Build Read the Docs with uv](https://pydevtools.com/handbook/how-to/how-to-build-read-the-docs-with-uv/): If your docs already build on Read the Docs, you can now switch .readthedocs.yaml to native uv … - [How to Cache uvx Tools in GitHub Actions](https://pydevtools.com/handbook/how-to/how-to-cache-uvx-tools-in-github-actions/): A workflow that runs uvx some-tool fetches that tool from PyPI on every run. setup-uv’s cache is … - [How to change the Python version of a uv project](https://pydevtools.com/handbook/how-to/how-to-change-the-python-version-of-a-uv-project/): To change the Python version of a uv project, run uv python pin 3.12 to update .python-version, then … - [How to Combine Coverage Across a CI Matrix](https://pydevtools.com/handbook/how-to/how-to-combine-coverage-across-a-ci-matrix/): When a test suite runs across a Python-version matrix, each job measures coverage for only the lines … - [How to configure Claude Code to run your pre-commit hooks](https://pydevtools.com/handbook/how-to/how-to-configure-claude-code-for-pre-commit/): Claude Code edits your files, but the checks that gate your commit do not run until you type git … - [How to configure Claude Code to run your pytest suite](https://pydevtools.com/handbook/how-to/how-to-configure-claude-code-for-pytest/): Claude Code runs your pytest suite in a raw terminal, and by default pytest answers with a full … - [How to configure Claude Code to use uv](https://pydevtools.com/handbook/how-to/how-to-configure-claude-code-to-use-uv/): Claude Code defaults to pip when it needs to install packages or run scripts. A CLAUDE.md file in … - [How to configure Claude Code to use virtual environments](https://pydevtools.com/handbook/how-to/how-to-configure-claude-code-to-use-virtual-environments/): Claude Code starts a fresh shell for every Bash tool call, so source .venv/bin/activate in one … - [How to configure Claude Code with a Python type checker](https://pydevtools.com/handbook/how-to/how-to-configure-claude-code-with-a-python-type-checker/): Claude Code does not run a Python type checker by default, and the gap is wider than it looks. … - [How to configure Cursor for a uv project](https://pydevtools.com/handbook/how-to/how-to-configure-cursor-for-a-uv-project/): This guide assumes you have a Python project managed with uv. If you haven’t created a project yet, … - [How to configure Cursor for pytest](https://pydevtools.com/handbook/how-to/how-to-configure-cursor-for-pytest/): Cursor’s Testing sidebar runs pytest tests without leaving the editor, shows pass/fail status inline … - [How to configure Cursor for Ruff](https://pydevtools.com/handbook/how-to/how-to-configure-cursor-for-ruff/): Cursor is a fork of VS Code, so the Ruff extension installs and behaves the same way. The one … - [How to configure Cursor rules to use uv](https://pydevtools.com/handbook/how-to/how-to-configure-cursor-rules-to-use-uv/): This guide shows you how to configure Cursor editor rules to automatically use uv for Python package … - [How to Configure Helix for a uv Project](https://pydevtools.com/handbook/how-to/how-to-configure-helix-for-a-uv-project/): This guide assumes a Python project managed with uv. If you haven’t created a project yet, see the … - [How to configure mypy and django-stubs in a uv project](https://pydevtools.com/handbook/how-to/how-to-configure-mypy-and-django-stubs-in-a-uv-project/): Run mypy on a Django project without django-stubs and the first error is Need type annotation for … - [How to configure mypy strict mode](https://pydevtools.com/handbook/how-to/how-to-configure-mypy-strict-mode/): This guide assumes you have a Python project set up with uv and mypy installed as a dev dependency. … - [How to configure PyCharm for a uv project](https://pydevtools.com/handbook/how-to/how-to-configure-pycharm-for-a-uv-project/): This guide assumes you have a Python project managed with uv. If you haven’t created a project yet, … - [How to configure recommended Ruff defaults](https://pydevtools.com/handbook/how-to/how-to-configure-recommended-ruff-defaults/): This guide assumes you have a Python project set up. If you haven’t created a project yet, see the … - [How to configure Ruff for Django](https://pydevtools.com/handbook/how-to/how-to-configure-ruff-for-django/): Ruff’s default rule set knows nothing about Django. It will not flag CharField(null=True), but it … - [How to configure Ruff with Claude Code](https://pydevtools.com/handbook/how-to/how-to-configure-ruff-with-claude-code/): Claude Code does not run Ruff by default, so Python edits land unformatted and lint errors slip … - [How to configure VS Code for a uv project](https://pydevtools.com/handbook/how-to/how-to-configure-vs-code-for-a-uv-project/): This guide assumes you have a Python project managed with uv. If you haven’t created a project yet, … - [How to configure VS Code for type checking in a uv project](https://pydevtools.com/handbook/how-to/how-to-configure-vs-code-for-type-checking-in-a-uv-project/): VS Code doesn’t show type errors by default. Adding inline diagnostics takes two steps: installing a … - [How to Configure Zed for a uv Project](https://pydevtools.com/handbook/how-to/how-to-configure-zed-for-a-uv-project/): This guide assumes a Python project managed with uv. If you haven’t created a project yet, see the … - [How to convert a script with requirements.txt to PEP 723 inline metadata](https://pydevtools.com/handbook/how-to/how-to-convert-a-script-with-requirements-txt-to-pep-723-inline-metadata/): A standalone Python script paired with a requirements.txt is the old way of saying “this script … - [How to create a new Python project with Codex](https://pydevtools.com/handbook/how-to/how-to-create-a-new-python-project-with-codex/): Codex produces consistent project scaffolding when you explicitly point it at the Modern Python … - [How to create a pylock.toml lockfile](https://pydevtools.com/handbook/how-to/how-to-create-a-pylock-toml-lockfile/): A PEP 751 pylock.toml is the first standards-track lockfile every Python installer can read, but the … - [How to Create and Distribute a Python CLI Tool](https://pydevtools.com/handbook/how-to/how-to-create-and-distribute-a-python-cli-tool/): pyproject.toml lets you attach any Python function to an executable command name via … - [How to create and use a Python virtual environment with venv](https://pydevtools.com/handbook/how-to/how-to-create-and-use-a-python-virtual-environment-with-venv/): A README says “create a virtual environment” before it tells you what that means. Use Python’s … - [How to customize uv's virtual environment location](https://pydevtools.com/handbook/how-to/how-to-customize-uvs-virtual-environment-location/): When working with uv projects, the virtual environment is automatically created in a folder called … - [How to Debug a Python Script with pdb](https://pydevtools.com/handbook/how-to/how-to-debug-a-python-script-with-pdb/): When a script prints the wrong number or crashes with a traceback, print() calls only go so far. … - [How to deploy a uv project to AWS Fargate](https://pydevtools.com/handbook/how-to/how-to-deploy-a-uv-project-to-aws-fargate/): AWS Fargate runs a container image you push to Amazon ECR, with no host to manage. Two things decide … - [How to deploy a uv project to AWS Lambda](https://pydevtools.com/handbook/how-to/how-to-deploy-a-uv-project-to-aws-lambda/): AWS Lambda packages a Python function as either a zip archive (up to 250 MB unzipped) or a container … - [How to deploy a uv project to Azure Container Apps](https://pydevtools.com/handbook/how-to/how-to-deploy-a-uv-project-to-azure-container-apps/): Azure Container Apps runs a container and scales it to zero when idle, the Azure counterpart to the … - [How to deploy a uv project to Fly.io](https://pydevtools.com/handbook/how-to/how-to-deploy-a-uv-project-to-fly-io/): Fly.io runs a container on Fly Machines, lightweight VMs that boot a persistent process close to the … - [How to deploy a uv project to Google Cloud Run](https://pydevtools.com/handbook/how-to/how-to-deploy-a-uv-project-to-google-cloud-run/): Cloud Run runs a container and scales it to zero when idle. Getting a uv project there comes down to … - [How to Deploy a uv Project to Hugging Face Spaces](https://pydevtools.com/handbook/how-to/how-to-deploy-a-uv-project-to-hugging-face-spaces/): Hugging Face Spaces offers three SDKs: Gradio, Streamlit, and Docker. Only the Docker SDK can use a … - [How to deploy a uv project to Vercel](https://pydevtools.com/handbook/how-to/how-to-deploy-a-uv-project-to-vercel/): Vercel installs Python dependencies with uv by default, with no configuration, and it reads a … - [How to Disable Ruff Rules for a Block of Code](https://pydevtools.com/handbook/how-to/how-to-disable-ruff-rules-for-a-block-of-code/): Ruff suppresses a rule on a single line with # noqa, but a legacy region that trips the same rule on … - [How to Disable the Ruff Formatter for a Block of Code](https://pydevtools.com/handbook/how-to/how-to-disable-the-ruff-formatter-for-a-block-of-code/): Ruff’s formatter collapses extra whitespace, so a hand-aligned matrix or a column-formatted data … - [How to distribute internal Python CLI tools with uv](https://pydevtools.com/handbook/how-to/how-to-distribute-internal-python-cli-tools-with-uv/): Your team built a CLI. Now you need one install path for teammate laptops and fresh CI runners, plus … - [How to Enable Ruff Security Rules](https://pydevtools.com/handbook/how-to/how-to-enable-ruff-security-rules/): Ruff’s S rule group implements flake8-bandit security checks, catching hardcoded passwords, … - [How to Fix "ImportError: attempted relative import with no known parent package"](https://pydevtools.com/handbook/how-to/how-to-fix-importerror-attempted-relative-import-with-no-known-parent-package/): ImportError: attempted relative import with no known parent package means Python ran a file that … - [How to fix "No `project` Table Found" error in uv](https://pydevtools.com/handbook/how-to/how-to-fix-no-project-table-found-error-in-uv/): uv project commands (uv run, uv sync, uv add) expect a [project] table in pyproject.toml. Without … - [How to Fix "zsh: command not found: python" on macOS](https://pydevtools.com/handbook/how-to/how-to-fix-python-command-not-found-on-mac/): You typed python in Terminal and macOS answered: zsh: command not found: python Nothing is broken. … - [How to Fix Common pytest Errors with uv](https://pydevtools.com/handbook/how-to/how-to-fix-common-pytest-errors-with-uv/): pytest failures that have nothing to do with your actual tests are some of the most frustrating … - [How to Fix ModuleNotFoundError: No module named 'numpy' During pip Install](https://pydevtools.com/handbook/how-to/how-to-fix-modulenotfounderror-no-module-named-numpy-during-pip-install/): This guide helps resolve an issue where a Python package fails to install because it cannot find … - [How to Fix pyenv's "No module named '_lzma'" Error](https://pydevtools.com/handbook/how-to/how-to-fix-pyenv-no-module-named-lzma/): A pyenv-installed Python that raises this error is missing its lzma extension module: … - [How to fix Python version incompatibility errors in uv](https://pydevtools.com/handbook/how-to/how-to-fix-python-version-incompatibility-errors-in-uv/): Understanding the Error When you see an error like this: error: The Python request from … - [How to fix the "externally-managed-environment" error](https://pydevtools.com/handbook/how-to/how-to-fix-the-externally-managed-environment-error/): Running pip install on a system Python protected by PEP 668 produces this error: error: … - [How to format pyproject.toml with taplo](https://pydevtools.com/handbook/how-to/how-to-format-pyproject-toml-with-taplo/): uv does not include a built-in formatter for pyproject.toml. Taplo is a TOML formatter and validator … - [How to gradually adopt type checking in an existing Python project](https://pydevtools.com/handbook/how-to/how-to-gradually-adopt-type-checking-in-an-existing-python-project/): This guide assumes you have a Python project managed by uv. If you haven’t created a project yet, … - [How to Host Your Own Python Package Index](https://pydevtools.com/handbook/how-to/how-to-host-your-own-python-package-index/): A self-hosted Python package index can save a team from PyPI outages, vendor lock-in, or restricted … - [How to Install bitsandbytes](https://pydevtools.com/handbook/how-to/how-to-install-bitsandbytes/): bitsandbytes provides 4-bit and 8-bit quantization for large language models, cutting GPU memory … - [How to Install DeepSpeed](https://pydevtools.com/handbook/how-to/how-to-install-deepspeed/): DeepSpeed publishes only a source distribution on PyPI, with no prebuilt wheels. The setup.py … - [How to Install Flash-Attention](https://pydevtools.com/handbook/how-to/how-to-install-flash-attention/): PyPI has no wheels for flash-attn. Every pip install flash-attn triggers a from-source CUDA … - [How to install from a pylock.toml lockfile with pip](https://pydevtools.com/handbook/how-to/how-to-install-from-a-pylock-toml-lockfile-with-pip/): A teammate hands you a pylock.toml. Or uv’s uv export --format pylock.toml produces one. Now you … - [How to Install Hugging Face Transformers with uv](https://pydevtools.com/handbook/how-to/how-to-install-hugging-face-transformers-with-uv/): The Transformers library from Hugging Face provides access to thousands of pretrained models for … - [How to Install JAX with uv](https://pydevtools.com/handbook/how-to/how-to-install-jax-with-uv/): JAX distributes GPU builds through pip extras rather than separate package indexes (see Why … - [How to Install llama-cpp-python](https://pydevtools.com/handbook/how-to/how-to-install-llama-cpp-python/): PyPI has no prebuilt wheels for llama-cpp-python. A bare pip install downloads a source distribution … - [How to install OpenAI's Astral plugins for Claude Code](https://pydevtools.com/handbook/how-to/how-to-install-astral-plugins-for-claude-code/): OpenAI publishes the official Astral plugin for Claude Code that bundles three skills (/astral:uv, … - [How to Install Python (and Which Method to Choose)](https://pydevtools.com/handbook/how-to/how-to-install-python/): Use uv to install Python. Install uv once, and it downloads Python for you, keeps each project on … - [How to install Python CLI tools without Python](https://pydevtools.com/handbook/how-to/how-to-install-python-cli-tools-without-python/): uvx.sh provides installation scripts for any Python tool on PyPI. Use it to install tools like ruff, … - [How to Install Python on macOS](https://pydevtools.com/handbook/how-to/how-to-install-python-on-macos/): macOS makes Python confusing before you write a line of code. Type python and the shell answers … - [How to Install Python on Windows](https://pydevtools.com/handbook/how-to/how-to-install-python-on-windows/): You typed python and the Microsoft Store opened. Or you searched for how to install Python and got … - [How to install Python with uv](https://pydevtools.com/handbook/how-to/how-to-install-python-with-uv/): uv downloads and installs Python interpreters on demand, so you usually don’t need to install Python … - [How to Install PyTorch with uv](https://pydevtools.com/handbook/how-to/how-to-install-pytorch-with-uv/): PyTorch publishes different wheel builds for CPU, CUDA, ROCm, and XPU on separate package indexes … - [How to Install RAPIDS with uv](https://pydevtools.com/handbook/how-to/how-to-install-rapids-with-uv/): RAPIDS packages live on NVIDIA’s own package index, not PyPI (see Why Installing GPU Python Packages … - [How to Install Triton](https://pydevtools.com/handbook/how-to/how-to-install-triton/): Triton is OpenAI’s open-source compiler for writing GPU kernels in Python. Most users encounter it … - [How to install uv](https://pydevtools.com/handbook/how-to/how-to-install-uv/): You can install uv, the fast Python package and project manager, with a standalone installer, with … - [How to install uv on 32-bit Raspberry Pi OS](https://pydevtools.com/handbook/how-to/how-to-install-uv-on-32-bit-raspberry-pi-os/): uv’s standalone installer works on 32-bit Raspberry Pi OS (armv7l), but three quirks bite first-time … - [How to install uv on Linux](https://pydevtools.com/handbook/how-to/how-to-install-uv-on-linux/): uv is a fast Python package and project manager. This guide covers how to install it on Linux. … - [How to install uv on macOS](https://pydevtools.com/handbook/how-to/how-to-install-uv-on-macos/): uv is a fast Python package and project manager. This guide covers how to install it on macOS. … - [How to install uv on Windows](https://pydevtools.com/handbook/how-to/how-to-install-uv-on-windows/): uv is a fast Python package and project manager. This guide covers how to install it on Windows. … - [How to Install xformers](https://pydevtools.com/handbook/how-to/how-to-install-xformers/): xformers ships prebuilt wheels through the PyTorch package index, not PyPI. Like PyTorch itself, the … - [How to keep Python up to date with uv python upgrade](https://pydevtools.com/handbook/how-to/how-to-keep-python-up-to-date-with-uv-python-upgrade/): Run uv python upgrade to pull the latest patch release for every Python that uv manages. Pass a … - [How to lock uv script dependencies for reproducible execution](https://pydevtools.com/handbook/how-to/how-to-lock-uv-script-dependencies/): A self-contained script with PEP 723 inline metadata declares loose dependency ranges like … - [How to maintain a uv project](https://pydevtools.com/handbook/how-to/how-to-maintain-a-uv-project/): A uv project needs regular care, like a dog. Most of that care can run on autopilot: Dependabot for … - [How to manage cross-repository Python dependencies with uv](https://pydevtools.com/handbook/how-to/how-to-manage-cross-repo-python-dependencies-with-uv/): A uv workspace keeps sibling packages in sync when they live in the same repository. When the … - [How to Measure Code Coverage with pytest-cov](https://pydevtools.com/handbook/how-to/how-to-measure-code-coverage-with-pytest-cov/): pytest-cov is a pytest plugin that wraps coverage.py, integrating coverage measurement directly into … - [How to migrate from Black to Ruff formatter](https://pydevtools.com/handbook/how-to/how-to-migrate-from-black-to-ruff-formatter/): Ruff’s ruff format command is a drop-in replacement for Black. It follows the same formatting style, … - [How to migrate from conda to pixi](https://pydevtools.com/handbook/how-to/how-to-migrate-from-conda-to-pixi/): This guide converts a conda project (defined by an environment.yml) into a pixi project. The result: … - [How to Migrate from conda to uv](https://pydevtools.com/handbook/how-to/how-to-migrate-from-conda-to-uv/): This guide converts a conda project (defined by an environment.yml) into a uv project built on … - [How to migrate from mypy to Pyrefly](https://pydevtools.com/handbook/how-to/how-to-migrate-from-mypy-to-pyrefly/): Pyrefly 1.0 ships an auto-migration tool that reads an existing mypy config and writes the … - [How to migrate from mypy to ty](https://pydevtools.com/handbook/how-to/how-to-migrate-from-mypy-to-ty/): ty is a fast Python type checker from Astral, the uv and Ruff team now part of OpenAI. It checks … - [How to migrate from Pipenv to uv](https://pydevtools.com/handbook/how-to/how-to-migrate-from-pipenv-to-uv/): Pipenv combines pip and virtualenv into a single tool. uv covers the same ground and adds Python … - [How to migrate from Poetry to uv](https://pydevtools.com/handbook/how-to/how-to-migrate-from-poetry-to-uv/): Poetry and uv both manage dependencies and virtual environments from a single tool, but uv adds … - [How to migrate from pyright to ty](https://pydevtools.com/handbook/how-to/how-to-migrate-from-pyright-to-ty/): ty is a Python type checker developed by Astral, the creators of uv and Ruff, now part of OpenAI. It … - [How to migrate from requirements.txt to pyproject.toml with uv](https://pydevtools.com/handbook/how-to/migrate-requirements.txt/): To migrate a requirements.txt project to pyproject.toml, run uv init --bare to create a minimal … - [How to migrate from setup.py to pyproject.toml](https://pydevtools.com/handbook/how-to/migrate-setup-py/): The setup.py file was long the dominant way to configure a Python package. PEP 621 changed that by … - [How to migrate from uv to pip](https://pydevtools.com/handbook/how-to/how-to-migrate-from-uv-to-pip/): Moving a uv-managed project to pip is mostly an audit of pyproject.toml, not a rebuild of the … - [How to Parameterize Tests with pytest](https://pydevtools.com/handbook/how-to/how-to-parameterize-tests-with-pytest/): When a test function contains the right logic but needs to run against multiple inputs, copying the … - [How to pin GitHub Actions by SHA for Python projects](https://pydevtools.com/handbook/how-to/how-to-pin-github-actions-by-sha-for-python-projects/): Tag-based pins like @v7 are mutable references that the action’s maintainer (or anyone who … - [How to profile a Python script with py-spy](https://pydevtools.com/handbook/how-to/how-to-profile-a-python-script-with-py-spy/): This guide shows how to use py-spy to profile a Python script. py-spy is a sampling profiler that … - [How to Protect Against Python Supply Chain Attacks with uv](https://pydevtools.com/handbook/how-to/how-to-protect-against-python-supply-chain-attacks-with-uv/): Malicious packages uploaded to PyPI are usually caught and yanked within hours or days. A dependency … - [How to Publish a Python Package to conda-forge](https://pydevtools.com/handbook/how-to/how-to-publish-a-python-package-to-conda-forge/): Your package is on PyPI, so pip install and uv add work. Scientific and machine-learning users reach … - [How to Publish Python Packages with Digital Attestations](https://pydevtools.com/handbook/how-to/how-to-publish-python-packages-with-digital-attestations/): Digital attestations let PyPI record who published each file, not just what the file contains. When … - [How to Publish to PyPI with Trusted Publishing](https://pydevtools.com/handbook/how-to/how-to-publish-to-pypi-with-trusted-publishing/): Trusted publishing lets GitHub Actions upload packages to PyPI without storing any secrets. Instead … - [How to Publish to TestPyPI with uv](https://pydevtools.com/handbook/how-to/how-to-publish-to-testpypi-with-uv/): PyPI versions are write-once. Upload 0.1.0 with a broken README or a missing dependency, and the … - [How to put your Python project on GitHub](https://pydevtools.com/handbook/how-to/how-to-put-your-python-project-on-github/): This guide walks through the one-time setup to get a uv-based Python project into a Git repository … - [How to replace Black, isort, flake8, and pyupgrade with Ruff](https://pydevtools.com/handbook/how-to/how-to-replace-black-isort-flake8-pyupgrade-with-ruff/): Ruff replaces Black, isort, flake8 (with its plugins), and pyupgrade with one binary and one … - [How to replace tox with uv and a Makefile](https://pydevtools.com/handbook/how-to/how-to-replace-tox-with-uv-and-a-makefile/): A Makefile is already the control surface for many Python projects. make test, make lint, make … - [How to require a virtualenv when installing packages with pip?](https://pydevtools.com/handbook/how-to/how-to-require-a-virtual-for-installing-packages/): By default, pip allows installing packages into the global Python environment. This can lead to … - [How to Run a Jupyter Notebook with uv](https://pydevtools.com/handbook/how-to/jupyter-notebook-with-uv/): When working with Jupyter notebooks, you should run them in isolated environments to prevent … - [How to Run a Python REPL with uv](https://pydevtools.com/handbook/how-to/how-to-run-a-python-repl-with-uv/): uv does not currently officially support a system-level installation of Python, however, you can … - [How to run Python scripts on a Raspberry Pi with uv](https://pydevtools.com/handbook/how-to/how-to-run-python-scripts-on-a-raspberry-pi-with-uv/): Running pip install requests on a fresh Raspberry Pi OS Bookworm install prints error: … - [How to run tests in parallel with pytest-xdist](https://pydevtools.com/handbook/how-to/how-to-run-tests-in-parallel-with-pytest-xdist/): A large test suite that runs sequentially can take minutes. pytest-xdist distributes tests across … - [How to Run Tests Using uv](https://pydevtools.com/handbook/how-to/how-to-run-tests-using-uv/): If your project lists pytest as a dev dependency, run every test with a single command: uv run … - [How to run the IPython shell in your uv project](https://pydevtools.com/handbook/how-to/how-to-run-the-ipython-shell-in-your-uv-project/): When working with uv projects, you might want to use IPython for interactive development without … - [How to run uv on Modal](https://pydevtools.com/handbook/how-to/how-to-run-uv-on-modal/): Modal runs Python functions in ephemeral cloud containers, and you define the container image in … - [How to Scan Python Dependencies for Vulnerabilities](https://pydevtools.com/handbook/how-to/how-to-scan-python-dependencies-for-vulnerabilities/): Every dependency in a Python project is a potential source of known security vulnerabilities. … - [How to Serve LLMs Locally with vLLM and uv](https://pydevtools.com/handbook/how-to/how-to-use-vllm-with-uv/): vLLM is a high-throughput inference engine for large language models. GPU inference runs on Linux … - [How to set up a Python monorepo with uv workspaces](https://pydevtools.com/handbook/how-to/how-to-set-up-a-python-monorepo-with-uv-workspaces/): A uv workspace lets multiple Python packages share a single repository, a single lockfile, and a … - [How to Set Up Auto-Reload for Python Projects](https://pydevtools.com/handbook/how-to/how-to-set-up-auto-reload-for-python-projects/): This guide covers auto-reload setup for the most common Python development scenarios. For background … - [How to Set Up CLAUDE.md for a Python Project](https://pydevtools.com/handbook/how-to/how-to-use-the-pydevtools-claude-md-template/): Claude Code reads a CLAUDE.md file in your project root every session. Without one, it falls back to … - [How to Set Up Documentation for a Python Package with Sphinx or MkDocs](https://pydevtools.com/handbook/how-to/how-to-set-up-documentation-for-a-python-package/): Sphinx and MkDocs are the two documentation generators most Python packages reach for. They cover … - [How to set up pre-commit hooks for a Python project](https://pydevtools.com/handbook/how-to/how-to-set-up-pre-commit-hooks-for-a-python-project/): This guide assumes you have a Python project managed with uv. If you haven’t created a project yet, … - [How to set up prek hooks for a Python project](https://pydevtools.com/handbook/how-to/how-to-set-up-prek-hooks-for-a-python-project/): This guide assumes you have a Python project managed with uv. If you haven’t created a project yet, … - [How to sort Python imports with Ruff](https://pydevtools.com/handbook/how-to/how-to-sort-python-imports-with-ruff/): This guide assumes you have uv installed. If not, see How to install uv first. Ruff sorts imports … - [How to stop AI agents from bypassing pre-commit hooks](https://pydevtools.com/handbook/how-to/how-to-stop-ai-agents-from-bypassing-pre-commit-hooks/): Claude Code can ship broken code by running git commit --no-verify to skip your pre-commit hooks. … - [How to switch from pyenv to uv for managing Python versions](https://pydevtools.com/handbook/how-to/how-to-switch-from-pyenv-to-uv-for-managing-python-versions/): This guide shows how to transition from using pyenv to uv for managing Python versions. While pyenv … - [How to test a Python library against multiple type checkers](https://pydevtools.com/handbook/how-to/how-to-test-a-python-library-against-multiple-type-checkers/): Python users don’t all run the same type checker. Some reach for mypy, others pyright or Pyrefly. … - [How to Test Against Multiple Python Versions Using uv](https://pydevtools.com/handbook/how-to/how-to-test-against-multiple-python-versions-using-uv/): A library that works on Python 3.11 can break on 3.12 because of removed deprecations, C API … - [How to try the ty type checker](https://pydevtools.com/handbook/how-to/how-to-try-the-ty-type-checker/): This guide shows you how to try out ty, a static type checker and language server, in your project. … - [How to upgrade setup-uv from v7 to v8](https://pydevtools.com/handbook/how-to/how-to-upgrade-setup-uv-from-v7-to-v8/): If a GitHub Actions workflow uses astral-sh/setup-uv@v7, Dependabot will not bump it to v8 … - [How to upgrade uv](https://pydevtools.com/handbook/how-to/how-to-upgrade-uv/): Tip Try my command line tool uvx uvhow for a quick view into your uv install and how to upgrade it. … - [How to Use `--exclude-newer` for Reproducible Python Environments](https://pydevtools.com/handbook/how-to/how-to-use-exclude-newer-for-reproducible-python-environments/): The --exclude-newer option instructs uv to ignore any package versions published after a specified … - [How to use a uv lockfile for reproducible Python environments](https://pydevtools.com/handbook/how-to/how-to-use-a-uv-lockfile-for-reproducible-python-environments/): Commit uv.lock to version control. It records the exact version and hash of every package your … - [How to use free-threaded Python in a uv project](https://pydevtools.com/handbook/how-to/how-to-use-free-threaded-python-in-a-uv-project/): Python 3.14 is the first release where the free-threaded build ships as officially supported, after … - [How to Use marimo with uv](https://pydevtools.com/handbook/how-to/how-to-use-marimo-with-uv/): marimo is a reactive Python notebook stored as a plain .py file, and uv is its recommended package … - [How to use picamera2 and GPIO with uv on Raspberry Pi](https://pydevtools.com/handbook/how-to/how-to-use-picamera2-and-gpio-with-uv-on-raspberry-pi/): picamera2, libcamera, and gpiozero ship through apt on Raspberry Pi OS, not through PyPI. A clean uv … - [How to use pip in a uv virtual environment](https://pydevtools.com/handbook/how-to/how-to-use-pip-in-a-uv-virtual-environment/): Only add pip to uv environments when specifically needed for compatibility with tools that directly … - [How to Use Poe the Poet as a Task Runner with uv](https://pydevtools.com/handbook/how-to/how-to-use-poe-the-poet-as-a-task-runner-with-uv/): Poe the Poet provides a flexible task runner that works seamlessly with uv projects. This guide … - [How to use private package indexes with uv](https://pydevtools.com/handbook/how-to/how-to-use-private-package-indexes-with-uv/): Most organizations host internal Python packages on private registries. uv supports private indexes … - [How to use Python skills with Claude Code](https://pydevtools.com/handbook/how-to/how-to-use-python-skills-with-claude-code/): Skills bottle up your Python workflow. Instead of re-explaining “tighten these type annotations” or … - [How to use ty in CI](https://pydevtools.com/handbook/how-to/how-to-use-ty-in-ci/): ty can run in CI with no installation step beyond uv. Because ty is a single binary with no runtime … - [How to use uv in a Dockerfile](https://pydevtools.com/handbook/how-to/how-to-use-uv-in-a-dockerfile/): Docker images for Python projects have traditionally suffered from slow builds and bloated layers. … - [How to use uv on NixOS](https://pydevtools.com/handbook/how-to/how-to-use-uv-on-nixos/): uv ships as a single static binary that drops onto NixOS without a build step. The hard part is what … - [How to Use uv on Windows ARM64](https://pydevtools.com/handbook/how-to/how-to-use-uv-on-windows-arm64/): uv ships a native Windows ARM64 binary, but uv python install 3.13 still installs x86_64 CPython by … - [How to use uv to speed up Hatch](https://pydevtools.com/handbook/how-to/how-to-use-uv-to-speed-up-hatch/): Hatch can use uv as its installer backend instead of pip and virtualenv. This makes environment … - [How to use uv to speed up PDM](https://pydevtools.com/handbook/how-to/how-to-use-uv-to-speed-up-pdm/): PDM has experimental support for using uv as its resolver and installer (available since PDM … - [How to use uv to speed up tox](https://pydevtools.com/handbook/how-to/how-to-use-uv-to-speed-up-tox/): tox spends most of its time creating virtual environments and installing dependencies. The tox-uv … - [How to use uv with VS Code devcontainers](https://pydevtools.com/handbook/how-to/how-to-use-uv-with-vs-code-devcontainers/): A devcontainer hands every teammate the same Python interpreter and the same locked dependencies. uv … - [How to Verify Dependencies with Hashes in uv](https://pydevtools.com/handbook/how-to/how-to-pin-dependencies-with-hashes-in-uv/): Dependency hashes let uv verify that every downloaded artifact matches what was resolved, catching … - [How to Vet a Python Package Before Installing It](https://pydevtools.com/handbook/how-to/how-to-vet-a-python-package-before-installing-it/): litellm 1.82.7 and 1.82.8, and Lightning AI 2.6.2 and 2.6.3, hit PyPI before matching source … - [How to write Claude Code hooks for Python projects](https://pydevtools.com/handbook/how-to/how-to-write-claude-code-hooks-for-python-projects/): Claude Code hooks are scripts that run at specific points during a session, letting you enforce … - [How to write install instructions for a Python library](https://pydevtools.com/handbook/how-to/how-to-write-install-instructions-for-a-python-library/): A library’s README is the first place a new user lands, and the install command in that README is … - [How to write self-contained Python scripts using PEP 723 inline metadata](https://pydevtools.com/handbook/how-to/how-to-write-a-self-contained-script/): By using PEP 723 inline metadata, you can create self-contained Python scripts that declare their … - [pip to uv: a command cheatsheet](https://pydevtools.com/handbook/how-to/how-to-translate-pip-commands-to-uv/): A quick-reference table for developers switching from pip, venv, pyenv, pip-tools, or pipx to uv. … ### Python Tooling Explained - [uv: A Complete Guide to Python's Fastest Package Manager](https://pydevtools.com/handbook/explanation/uv-complete-guide/): uv is a fast, all-in-one command-line tool for Python development. Built by Astral, now part of … - [ty: A Complete Guide to Python's Fastest Type Checker](https://pydevtools.com/handbook/explanation/ty-complete-guide/): ty is a Python type checker and language server built by Astral, the team behind Ruff and uv that … - [Ruff: A Complete Guide to Python's Fastest Linter and Formatter](https://pydevtools.com/handbook/explanation/ruff-complete-guide/): Ruff is a Python linter and code formatter that bundles the jobs of flake8, Black, isort, pyupgrade, … - [Claude Code for Python: A Complete Guide](https://pydevtools.com/handbook/explanation/claude-code-complete-guide/): Claude Code is a terminal-based AI assistant that reads your files, runs commands, edits code, and … - [Why Doesn't the Authoritative Python Packaging Guide Mention the Best Thing that's Happened to Python Packaging?](https://pydevtools.com/handbook/explanation/uv-not-in-ppug/): uv is the most widely adopted new Python tool in years, yet the Python Packaging User Guide (PPUG) … - Published 2025-02-27 - [Can you trust uv long-term?](https://pydevtools.com/handbook/explanation/can-you-trust-uv-long-term/): In March 2026, OpenAI acquired Astral, the venture-backed startup behind uv. Before betting a team’s … - [Getting Started with Python Using Codex](https://pydevtools.com/handbook/explanation/codex-complete-guide/): Codex CLI is OpenAI’s terminal-based coding agent. It reads your repository, edits files, runs … - [Do I need a project to use uv?](https://pydevtools.com/handbook/explanation/do-i-need-a-project-to-use-uv/): If your Python life is a folder full of short scripts that glue APIs together and rename files, uv’s … - [Do you still need tox or nox if you use uv?](https://pydevtools.com/handbook/explanation/do-you-still-need-tox-or-nox-if-you-use-uv/): For many projects, no. uv can run your test suite against multiple Python versions without any extra … - [Does Poetry Support Python Standards for Dependency Management?](https://pydevtools.com/handbook/explanation/poetry-python-dependency-management/): Poetry 2.0 added support for the PEP 621 project metadata standard. Before that release, Poetry … - [Does Ruff support type checking?](https://pydevtools.com/handbook/explanation/does-ruff-support-type-checking/): No. Ruff is a Python linter and formatter; it does not perform type inference and is not a type … - [Enough Git to Supervise Your AI Coding Agent](https://pydevtools.com/handbook/explanation/enough-git-to-supervise-your-ai-coding-agent/): AI coding agents like Claude Code, Codex, Cursor, and GitHub Copilot run Git commands on your … - [Essential pytest Plugins for Reliable, Fast Test Suites](https://pydevtools.com/handbook/explanation/essential-pytest-plugins/): A fresh pytest setup works well for small projects. Tests run, assertions report clearly, and … - [How do I ship a Python application to end users?](https://pydevtools.com/handbook/explanation/how-do-i-ship-a-python-application-to-end-users/): Python usually ships an environment rather than a native executable. It ships as code plus an … - [How do pyenv and uv compare for Python interpreter management?](https://pydevtools.com/handbook/explanation/how-do-pyenv-and-uv-compare-for-python-interpreter-management/): pyenv manages Python versions and gets out of the way; uv manages Python versions as part of … - [How do Python type checkers compare?](https://pydevtools.com/handbook/explanation/how-do-mypy-pyright-and-ty-compare/): mypy, pyright, ty, Pyrefly, Basedpyright, and Zuban all analyze type annotations to catch bugs … - [How do Ruff and Pylint compare?](https://pydevtools.com/handbook/explanation/how-do-ruff-and-pylint-compare/): Ruff and Pylint are Python code analysis tools with overlapping but distinct capabilities. Core … - [How do uv and conda compare?](https://pydevtools.com/handbook/explanation/how-do-uv-and-conda-compare/): uv and conda both create isolated environments and install packages, but they draw from different … - [How do uv and Poetry compare?](https://pydevtools.com/handbook/explanation/how-do-uv-and-poetry-compare/): Poetry and uv both manage Python projects through pyproject.toml, create lockfiles, and handle … - [How do uv tool and pipx compare?](https://pydevtools.com/handbook/explanation/how-do-uv-tool-and-pipx-compare/): pipx and uv tool (with its uvx alias) solve the same problem: install Python command-line tools into … - [How Does Hot Reloading Work in Python?](https://pydevtools.com/handbook/explanation/how-does-hot-reloading-work-in-python/): Every Django developer knows runserver restarts when you save a file. Every FastAPI developer knows … - [How mypy, ty, and Pyrefly handle untyped code](https://pydevtools.com/handbook/explanation/how-mypy-ty-and-pyrefly-handle-untyped-code/): Run three Python type checkers over the same unannotated function and you get three different … - [How Python Package Formats Evolved: From tar.gz to .whl](https://pydevtools.com/handbook/explanation/how-python-package-formats-evolved/): In 2000, installing a third-party Python package meant downloading a tarball, extracting it, and … - [How Python tools adopt uv under the hood](https://pydevtools.com/handbook/explanation/how-python-tools-adopt-uv-under-the-hood/): You don’t have to switch to uv to get uv’s speed. Pixi, Hatch, PDM, and tox now use uv’s resolver … - [Is Conda actually free?](https://pydevtools.com/handbook/explanation/is-conda-actually-free/): The conda package manager is open source and always free. The Anaconda repository that ships as the … - [Modern Python Project Setup Guide for AI Assistants](https://pydevtools.com/handbook/explanation/modern-python-project-setup-guide-for-ai-assistants/): Important For AI assistants: this guide is meant to be ingested directly. Paste it (or link it) … - [pytest vs unittest: Which Should You Use?](https://pydevtools.com/handbook/explanation/pytest-vs-unittest/): pytest and unittest both run Python tests. unittest ships in the standard library and organizes … - [Python Tooling for C# Developers](https://pydevtools.com/handbook/explanation/python-tooling-for-csharp-developers/): Installing .NET gives you everything in one box. Installing Python gives you a box and a list of … - [Python Tooling for Go Developers](https://pydevtools.com/handbook/explanation/python-tooling-for-go-developers/): Go ships one toolchain that handles compilation, dependency management, testing, formatting, and … - [Python Tooling for Java Developers](https://pydevtools.com/handbook/explanation/python-tooling-for-java-developers/): Your first day writing Python, you will look for Maven and not find it. No single tool compiles … - [Python Tooling for Node.js Developers](https://pydevtools.com/handbook/explanation/python-tooling-for-nodejs-developers/): npm installs packages, locks versions, runs scripts, and publishes modules. Python splits those … - [Python Tooling for PHP Developers](https://pydevtools.com/handbook/explanation/python-tooling-for-php-developers/): Composer, PHPUnit, PHP-CS-Fixer, PHPStan. PHP developers already work with a specialized toolchain. … - [Python Tooling for Ruby Developers](https://pydevtools.com/handbook/explanation/python-tooling-for-ruby-developers/): Bundler manages dependencies, RuboCop enforces style, RSpec runs tests, and rbenv switches Ruby … - [Python Tooling for Rust Developers](https://pydevtools.com/handbook/explanation/python-tooling-for-rust-developers/): Cargo manages dependencies, builds code, runs tests, and publishes crates. Separate tools handle … - [Python Tooling for TypeScript Developers](https://pydevtools.com/handbook/explanation/python-tooling-for-typescript-developers/): TypeScript developers moving to Python often expect a single tool like npm that handles everything. … - [Running Python on Serverless](https://pydevtools.com/handbook/explanation/about-running-python-on-serverless/): Seven handbook how-tos deploy a uv project to the cloud: AWS Lambda, AWS Fargate, Google Cloud Run, … - [Sampling vs deterministic profilers: which should I use?](https://pydevtools.com/handbook/explanation/sampling-vs-deterministic-profilers/): Two different designs dominate Python profiling, and they produce two different kinds of lies about … - [Should I run `python setup.py`?](https://pydevtools.com/handbook/explanation/should-i-run-python-setuppy-commands/): No. Commands like python setup.py sdist, python setup.py bdist_wheel, and python setup.py install … - [Should I use Homebrew to install Python?](https://pydevtools.com/handbook/explanation/should-i-use-homebrew-to-install-python/): Homebrew ships Python because dozens of its own packages depend on it. Tools like glib, cmake, and … - [src layout vs flat layout: which to use and why](https://pydevtools.com/handbook/explanation/src-layout-vs-flat-layout/): A packaging mistake can pass every local pytest run and still break in production. The choice … - [ty vs Pyrefly: which Python type checker should you pick?](https://pydevtools.com/handbook/explanation/ty-vs-pyrefly/): ty (Astral) and Pyrefly (Meta) are the two new Rust-based Python type checkers. Both are fast. Both … - [Understanding dependency groups in uv](https://pydevtools.com/handbook/explanation/understanding-dependency-groups-in-uv/): uv separates project dependencies into dependency groups (for development workflows) and optional … - [Understanding the Conda/Anaconda Ecosystem](https://pydevtools.com/handbook/explanation/understanding-the-conda-anaconda-ecosystem/): Conda is not Anaconda. Conda is a package manager; Anaconda is a distribution that bundles conda … - [uv for Non-Python Teams](https://pydevtools.com/handbook/explanation/uv-for-non-python-teams/): A Java shop ships a database. In the corner of the repo sits a 200-line Python script that reshapes … - [uv init: project types, flags, and examples](https://pydevtools.com/handbook/explanation/understanding-uv-init-project-types/): The uv command uv init creates a new Python project with a pyproject.toml, a virtual environment, … - [uv vs pixi vs conda for Scientific Python](https://pydevtools.com/handbook/explanation/uv-vs-pixi-vs-conda-for-scientific-python/): Your scientific Python project needs CUDA, GDAL, or HDF5, and pip install cannot help. Which tool … - [Versioning Python packages: SemVer, CalVer, and PEP 440](https://pydevtools.com/handbook/explanation/versioning-python-packages-semver-calver-and-pep-440/): Every Python package that lands on PyPI carries a version string. Three names show up whenever teams … - [What are Optional Dependencies and Dependency Groups?](https://pydevtools.com/handbook/explanation/what-are-optional-dependencies-and-dependency-groups/): Optional Dependencies: End-User Features Optional dependencies, defined in pyproject.toml under … - [What Are Wheel Variants?](https://pydevtools.com/handbook/explanation/what-are-wheel-variants/): A default NumPy wheel for x86_64 has to run on every x86-64 CPU that has ever shipped, with the … - [What Happens When You Run `uv run`](https://pydevtools.com/handbook/explanation/what-happens-when-you-run-uv-run/): uv doesn’t replace Python. It orchestrates Python. When you type uv run pytest, uv sets up the right … - [What is a .python-version file?](https://pydevtools.com/handbook/explanation/what-is-a-python-version-file/): A .python-version file is a simple text file that specifies which Python version should be used for … - [What is a build backend?](https://pydevtools.com/handbook/explanation/what-is-a-build-backend/): A build backend is a library that turns your Python source code into distributable packages: wheels … - [What is a build frontend?](https://pydevtools.com/handbook/explanation/what-is-a-build-frontend/): A build frontend is a tool that invokes build backends to create Python packages. It typically … - [What is a Dependency Cooldown?](https://pydevtools.com/handbook/explanation/what-is-a-dependency-cooldown/): A dependency cooldown tells a package manager to ignore any release published within the last few … - [What is a lockfile?](https://pydevtools.com/handbook/explanation/what-is-a-lock-file/): A lockfile is a text file enumerating the specific version of every dependency used by a project; it … - [What is a PEP?](https://pydevtools.com/handbook/explanation/pep/): Python Enhancement Proposals (PEPs) are the documents that govern Python’s evolution. Each one … - [What is a Python application?](https://pydevtools.com/handbook/explanation/what-is-a-python-application/): A Python application is a program that end users run directly. A web server, a CLI tool, a data … - [What is a Python Interpreter?](https://pydevtools.com/handbook/explanation/what-is-a-python-interpreter/): A Python interpreter is the executable program that reads .py files and runs them. When someone says … - [What is a Python language server?](https://pydevtools.com/handbook/explanation/what-is-a-python-language-server/): Type a dot after a variable in your editor and a list of methods appears. Hover a function and its … - [What is a Python module?](https://pydevtools.com/handbook/explanation/what-is-a-python-module/): A module is the basic unit of code Python can import. Any .py file is a module. So is any compiled … - [What is a Python package?](https://pydevtools.com/handbook/explanation/what-is-a-python-package/): A Python package is code designed to be imported by other Python programs, bundled with metadata so … - [What Is a Python Supply Chain Attack?](https://pydevtools.com/handbook/explanation/what-is-a-python-supply-chain-attack/): A Python supply chain attack is a class of compromise where the attacker reaches your project not by … - [What is a version specifier?](https://pydevtools.com/handbook/explanation/what-is-a-version-specifier/): Every time you write requests>=2.28,<3 or numpy~=1.26, you’re writing a version specifier. It’s the … - [What is a Virtual Environment?](https://pydevtools.com/handbook/explanation/what-is-a-virtual-environment/): A virtual environment is an isolated Python runtime that keeps a project’s packages separate from … - [What Is an Editable Install?](https://pydevtools.com/handbook/explanation/what-is-an-editable-install/): An editable install (also called a “development install”) installs a Python package so that changes … - [What is core metadata?](https://pydevtools.com/handbook/explanation/what-is-core-metadata/): Every Python package on PyPI carries a small text file that tells installers what it is, what it … - [What is CPython's JIT Compiler?](https://pydevtools.com/handbook/explanation/what-is-cpythons-jit-compiler/): CPython’s JIT compiler is an experimental feature, introduced in Python 3.13, that translates … - [What is PEP 484?](https://pydevtools.com/handbook/explanation/what-is-pep-484/): PEP 484: Type Hints is the 2014 proposal that gave Python optional static types. Accepted for Python … - [What is PEP 503?](https://pydevtools.com/handbook/explanation/what-is-pep-503/): PEP 503 defines the “Simple Repository API” — the interface that Python package repositories must … - [What is PEP 508?](https://pydevtools.com/handbook/explanation/what-is-pep-508/): PEP 508: Dependency specification for Python Software Packages defines the standard format for … - [What is PEP 517/518 compatibility?](https://pydevtools.com/handbook/explanation/what-is-pep-517/): PEP 518 introduced pyproject.toml in 2016 and defined the [build-system] table for declaring … - [What is PEP 541 (Package Index Name Retention)?](https://pydevtools.com/handbook/explanation/what-is-pep-541/): You pick a name for your project, run uv publish, and PyPI rejects it: the name is already taken by … - [What is PEP 561?](https://pydevtools.com/handbook/explanation/what-is-pep-561/): PEP 561: Distributing and Packaging Type Information defines how an installed package tells type … - [What is PEP 604?](https://pydevtools.com/handbook/explanation/what-is-pep-604/): PEP 604: Allow writing union types as X | Y lets Python 3.10 and later spell a union of types with … - [What is PEP 609?](https://pydevtools.com/handbook/explanation/what-is-pep-609/): Note PEP 609 was superseded by PEP 772 in April 2026, which replaces PyPA’s informal governance … - [What is PEP 612?](https://pydevtools.com/handbook/explanation/what-is-pep-612/): PEP 612: Parameter Specification Variables (Python 3.10) adds ParamSpec and Concatenate to the … - [What is PEP 621?](https://pydevtools.com/handbook/explanation/what-is-pep-621-compatibility/): PEP 621 defines the [project] table in pyproject.toml for declaring project name, version, … - [What is PEP 649?](https://pydevtools.com/handbook/explanation/what-is-pep-649/): PEP 649: Deferred Evaluation of Annotations Using Descriptors changes when Python evaluates type … - [What is PEP 660?](https://pydevtools.com/handbook/explanation/what-is-pep-660/): PEP 660 standardizes how build backends implement editable installs, bringing consistency to a … - [What is PEP 668?](https://pydevtools.com/handbook/explanation/what-is-pep-668/): If pip has ever refused with error: externally-managed-environment, that was PEP 668 at work. PEP … - [What is PEP 681?](https://pydevtools.com/handbook/explanation/what-is-pep-681/): PEP 681: Data Class Transforms (Python 3.11) adds typing.dataclass_transform, a decorator a library … - [What is PEP 688?](https://pydevtools.com/handbook/explanation/what-is-pep-688/): PEP 688: Making the buffer protocol accessible in Python (Python 3.12) gives the buffer protocol a … - [What is PEP 695?](https://pydevtools.com/handbook/explanation/what-is-pep-695/): PEP 695: Type Parameter Syntax (Python 3.12) builds generics into the language. class Box[T]: … - [What is PEP 703?](https://pydevtools.com/handbook/explanation/what-is-pep-703/): PEP 703: Making the Global Interpreter Lock Optional in CPython is the proposal that makes a no-GIL … - [What is PEP 723?](https://pydevtools.com/handbook/explanation/what-is-pep-723/): Before PEP 723, a single-file Python script that needed third-party packages had no self-contained … - [What is PEP 735?](https://pydevtools.com/handbook/explanation/what-is-pep-735/): PEP 735: Dependency Groups in pyproject.toml standardizes how a Python project declares named groups … - [What is PEP 740?](https://pydevtools.com/handbook/explanation/what-is-pep-740/): PEP 740: Index support for digital attestations defines how a package index such as PyPI accepts, … - [What is PEP 751?](https://pydevtools.com/handbook/explanation/what-is-pep-751/): Python Enhancement Proposal 751 (PEP 751) introduces a standardized file format for specifying … - [What is PEP 772?](https://pydevtools.com/handbook/explanation/what-is-pep-772/): PEP 772 creates the Python Packaging Council, a five-member elected body with authority over … - [What is PEP 773?](https://pydevtools.com/handbook/explanation/what-is-pep-773/): Windows has accumulated at least four ways to install Python: the MSI installer from python.org, the … - [What is PEP 779?](https://pydevtools.com/handbook/explanation/what-is-pep-779/): PEP 779: Criteria for supported status for free-threaded Python is the checklist that moved … - [What is PEP 8?](https://pydevtools.com/handbook/explanation/what-is-pep-8/): PEP 8 is a Python Enhancement Proposal that defines the style guide for the Python standard library, … - [What is PEP 810?](https://pydevtools.com/handbook/explanation/what-is-pep-810/): PEP 810: Explicit Lazy Imports adds a lazy keyword in front of an import or from statement that … - [What is PEP 829?](https://pydevtools.com/handbook/explanation/what-is-pep-829/): PEP 829: Package Startup Configuration Files splits the two jobs that .pth files do today into two … - [What is PyPA (Python Packaging Authority)?](https://pydevtools.com/handbook/explanation/what-is-pypa/): The Python Packaging Authority (PyPA) is the working group that maintains the tools most Python … - [What is PyPI (Python Package Index)?](https://pydevtools.com/handbook/explanation/what-is-pypi/): PyPI (Python Package Index) is the official package repository for Python. When a developer runs uv … - [What is Python?](https://pydevtools.com/handbook/explanation/what-is-python/): Python is a high-level, general-purpose programming language created by Guido van Rossum and first … - [What is the GIL?](https://pydevtools.com/handbook/explanation/what-is-the-gil/): The Global Interpreter Lock (GIL) is a mutex in CPython, the standard Python interpreter, that … - [What's the difference between a distribution package and an import package?](https://pydevtools.com/handbook/explanation/distribution-package-vs-import-package/): You run pip install Pillow, open a REPL, and type import Pillow. Python raises ModuleNotFoundError. … - [What's the difference between pip and uv?](https://pydevtools.com/handbook/explanation/whats-the-difference-between-pip-and-uv/): pip and uv both install Python packages from PyPI, but they solve different problems. pip installs … - [When should I choose pixi over uv?](https://pydevtools.com/handbook/explanation/when-should-i-choose-pixi-over-uv/): uv and pixi solve overlapping problems with different scope. Both create project-local environments … - [When to Use `uv run` vs `uvx`](https://pydevtools.com/handbook/explanation/when-to-use-uv-run-vs-uvx/): Use uv run to execute code inside your project’s virtual environment with its locked dependencies. … - [Which Python package manager should I use?](https://pydevtools.com/handbook/explanation/which-python-package-manager-should-i-use/): Use uv. It handles dependency management, virtual environments, Python version management, and … - [Why are there so many Python packaging tools?](https://pydevtools.com/handbook/explanation/why-are-there-so-many-python-packaging-tools/): Python existed for nine years before its first package manager, distutils, shipped with Python 1.6 … - [Why did uv originally use Hatch as a build backend?](https://pydevtools.com/handbook/explanation/why-does-uv-use-hatch-as-a-backend/): Note Since July 2025, uv init defaults to uv_build, uv’s own build backend. Hatchling still works … - [Why doesn't Python just fix packaging?](https://pydevtools.com/handbook/explanation/why-doesnt-python-just-fix-packaging/): If you’ve come to Python from Go, Rust, or even JavaScript, you’ve probably had this thought: why … - [Why Installing a Python Package Can Run Code](https://pydevtools.com/handbook/explanation/why-installing-a-python-package-can-run-code/): pip install has never meant “copy some files into site-packages.” A Python package gets four … - [Why Installing GPU Python Packages Is So Complicated](https://pydevtools.com/handbook/explanation/installing-cuda-python-packages/): Python wheels have no way to express GPU hardware requirements. A wheel’s three metadata tags … - [Why is Python Slow?](https://pydevtools.com/handbook/explanation/why-is-python-slow/): A Python program that does the same arithmetic as a C or Rust program runs slower for reasons baked … - [Why pylock.toml Includes Digital Attestations](https://pydevtools.com/handbook/explanation/why-pylock-toml-includes-digital-attestations/): A lockfile pins exact versions. Hashes verify that the files you download match the files the … - [Why should I avoid using the system Python?](https://pydevtools.com/handbook/explanation/why-should-i-avoid-system-python/): The “system Python” is the Python interpreter that ships with your operating system. On macOS and … - [Why should I choose Conda?](https://pydevtools.com/handbook/explanation/why-should-i-choose-conda/): Conda installs software, not just Python packages. That distinction matters when your project … - [Why Should I Choose pyproject.toml over requirements.txt for managing dependencies?](https://pydevtools.com/handbook/explanation/pyproject-vs-requirements/): requirements.txt lists packages to install. pyproject.toml defines a project. That distinction … - [Why should I use a virtual environment?](https://pydevtools.com/handbook/explanation/why-should-i-use-a-virtual-environment/): Without a virtual environment, every package you install lands in a single shared directory. One … - [Why use native uv commands instead of uv pip](https://pydevtools.com/handbook/explanation/why-use-native-uv-over-uv-pip/): uv pip install is the fastest way to start using uv. Replace pip with uv pip in your existing … - [Why Use Trusted Publishing for PyPI?](https://pydevtools.com/handbook/explanation/why-use-trusted-publishing-for-pypi/): Most Python packages reach PyPI through a CI pipeline. A GitHub Actions workflow builds the package, … - [Why You Should Try uv if You Use Python](https://pydevtools.com/handbook/explanation/why-you-should-try-uv-if-you-use-python/): Resolve and install packages 10-100x faster uv resolves and installs packages faster than pip … ### Python Developer Tools Reference - [Anaconda: Python and R Data Science Platform](https://pydevtools.com/handbook/reference/anaconda/): Anaconda Distribution is a pre-packaged Python and R data science platform maintained by Anaconda, … - [Basedpyright: Python Type Checker (pyright Fork)](https://pydevtools.com/handbook/reference/basedpyright/): Basedpyright is a static type checker and language server for Python, maintained by DetachHead as a … - [Black: Python Code Formatter](https://pydevtools.com/handbook/reference/black/): Black is an opinionated Python code formatter that rewrites source files to conform to a strict … - [Briefcase](https://pydevtools.com/handbook/reference/briefcase/): Briefcase is the only mainstream Python packaging tool that ships to iOS and Android. It also … - [build: Python Package Build Frontend](https://pydevtools.com/handbook/reference/build/): build is a PEP 517-compliant Python package builder developed by the Python Packaging Authority … - [cibuildwheel: Cross-Platform Python Wheel Builder](https://pydevtools.com/handbook/reference/cibuildwheel/): cibuildwheel is a CI tool that builds Python wheels for multiple platforms, architectures, and … - [Conda](https://pydevtools.com/handbook/reference/conda/): Conda is a language-agnostic, cross-platform package and environment manager. Where pip installs … - [Conda Package](https://pydevtools.com/handbook/reference/conda-package/): A conda package is a compressed archive containing pre-built binaries, library code, metadata, and … - [conda-forge: Community Conda Package Channel](https://pydevtools.com/handbook/reference/conda-forge/): conda-forge is a community-maintained collection of conda packages distributed through a public … - [conda-pypi](https://pydevtools.com/handbook/reference/conda-pypi/): conda-pypi is a conda plugin that installs PyPI packages into a conda environment by converting … - [Cookiecutter: Python Project Template Tool](https://pydevtools.com/handbook/reference/cookiecutter/): Cookiecutter is a cross-platform command-line utility that creates projects from templates. It … - [cx_Freeze](https://pydevtools.com/handbook/reference/cx-freeze/): cx_Freeze is a Python application freezer that packages a Python program and its dependencies into a … - [direnv: Per-Directory Environment Variables for Python](https://pydevtools.com/handbook/reference/direnv/): direnv is a shell extension that loads and unloads environment variables based on the current … - [distutils: Python's Original Build System](https://pydevtools.com/handbook/reference/distutils/): distutils was a standard library module that provided the original mechanism for building and … - [flake8: Python Linter](https://pydevtools.com/handbook/reference/flake8/): Flake8 is a Python linting tool that wraps three checkers into one CLI: PyFlakes for logical errors, … - [Flit: Python Build and Publish Tool](https://pydevtools.com/handbook/reference/flit/): Flit is a Python packaging tool for building and publishing pure-Python packages. It provides a CLI … - [Furo: Sphinx Documentation Theme](https://pydevtools.com/handbook/reference/furo/): Furo is a Sphinx theme written by Pradyun Gedam. It is a clean, customisable replacement for … - [Hatch: Python Project Manager](https://pydevtools.com/handbook/reference/hatch/): hatch is a Python project management tool maintained by the Python Packaging Authority (PyPA). It … - [Homebrew: macOS Package Manager for Python](https://pydevtools.com/handbook/reference/homebrew/): Homebrew is a package manager for macOS and Linux that installs software outside the operating … - [IPython: Enhanced Python Interactive Shell](https://pydevtools.com/handbook/reference/ipython/): IPython is an enhanced interactive Python interpreter that provides a powerful command-line … - [marimo: Reactive Python Notebook](https://pydevtools.com/handbook/reference/marimo/): marimo is an open-source Python notebook in which cells re-execute automatically when the variables … - [Material for MkDocs: Documentation Theme and Framework](https://pydevtools.com/handbook/reference/mkdocs-material/): Material for MkDocs is a theme and feature framework for MkDocs. Built by Martin Donath (squidfunk), … - [mise: Polyglot Runtime and Tool Version Manager](https://pydevtools.com/handbook/reference/mise/): mise (pronounced “meez,” formerly named rtx) is a cross-platform command-line tool that manages … - [MkDocs: Markdown Documentation for Python Projects](https://pydevtools.com/handbook/reference/mkdocs/): MkDocs is a static site generator that builds documentation websites from Markdown source files. A … - [mkdocstrings: Autogenerate API Documentation in MkDocs](https://pydevtools.com/handbook/reference/mkdocstrings/): mkdocstrings is a MkDocs plugin that generates API documentation from source code and injects it … - [mypy: Python Static Type Checker](https://pydevtools.com/handbook/reference/mypy/): mypy is a static type checker for Python that analyzes type annotations to detect bugs before … - [nox: Python Test Automation Tool](https://pydevtools.com/handbook/reference/nox/): nox manages Python virtual environments and runs tests across multiple Python versions and … - [Nuitka](https://pydevtools.com/handbook/reference/nuitka/): Nuitka is a Python-to-C compiler that translates CPython bytecode into C source, then compiles and … - [pdb: Python's Built-in Debugger](https://pydevtools.com/handbook/reference/pdb/): pdb is Python’s interactive source debugger, distributed as a module in the standard library. It … - [PDM: Python Package and Dependency Manager](https://pydevtools.com/handbook/reference/pdm/): PDM is a Python package and dependency manager that implements the modern PEP 517/518 build-system … - [pip: Python Package Installer](https://pydevtools.com/handbook/reference/pip/): pip is the Python Package Authority’s (PyPA) standard package installer. It enables installing and … - [pip-tools: Python Dependency Pinning Tools](https://pydevtools.com/handbook/reference/pip-tools/): pip-tools is a set of command-line utilities for managing Python dependency pinning. It consists of … - [pipenv: Python Dependency Manager](https://pydevtools.com/handbook/reference/pipenv/): pipenv is a dependency management tool for Python applications that wraps pip and virtualenv into a … - [Pipfile: Python Dependency Declaration Format](https://pydevtools.com/handbook/reference/pipfile/): A Pipfile is a TOML-formatted file that declares a project’s Python dependencies for use with … - [pipx: Install Python CLI Tools in Isolation](https://pydevtools.com/handbook/reference/pipx/): pipx is a command-line tool that installs and runs Python command-line applications in isolated … - [Pixi: Multi-Language Package and Workflow Manager](https://pydevtools.com/handbook/reference/pixi/): Pixi is a cross-platform package manager and workflow tool that manages both conda-forge packages … - [Poetry: Python Packaging and Dependency Manager](https://pydevtools.com/handbook/reference/poetry/): Poetry is a Python packaging and dependency management tool that handles dependency installation, … - [Positron: Data Science IDE](https://pydevtools.com/handbook/reference/positron/): Positron is a data science IDE developed by Posit PBC, the company behind RStudio. It is built on … - [prek: Fast Pre-commit Hook Runner for Python](https://pydevtools.com/handbook/reference/prek/): prek is a fast reimplementation of the pre-commit framework that serves as a faster, … - [profiling.sampling: Statistical Profiler in the Standard Library](https://pydevtools.com/handbook/reference/profiling-sampling/): profiling.sampling is the statistical sampling profiler that ships with Python 3.15, developed under … - [py-spy: Sampling Profiler for Python](https://pydevtools.com/handbook/reference/py-spy/): py-spy is a sampling profiler for Python programs. It visualizes where a Python process spends its … - [pyenv: Python Version Manager](https://pydevtools.com/handbook/reference/pyenv/): pyenv is a command-line tool for installing, managing, and switching between multiple Python … - [pyenv-virtualenv: Python Virtual Environment Plugin](https://pydevtools.com/handbook/reference/pyenv-virtualenv/): pyenv-virtualenv is a plugin for pyenv that creates and manages virtual environments tied to … - [PyInstaller](https://pydevtools.com/handbook/reference/pyinstaller/): PyInstaller is a Python application bundler that freezes a Python program, the CPython interpreter … - [pylint: Python Static Code Analyzer](https://pydevtools.com/handbook/reference/pylint/): Pylint is a static analysis tool for Python. It parses source code without executing it and reports … - [pyproject-fmt: Opinionated pyproject.toml Formatter](https://pydevtools.com/handbook/reference/pyproject-fmt/): pyproject-fmt is an opinionated formatter for pyproject.toml files. It applies packaging-aware rules … - [pyproject.toml: The Standard Python Project Configuration File](https://pydevtools.com/handbook/reference/pyproject.toml/): pyproject.toml is the standard configuration file for a Python project. It is written in TOML and … - [Pyrefly: Python Type Checker by Meta](https://pydevtools.com/handbook/reference/pyrefly/): Pyrefly is a static type checker and language server for Python, developed by Meta. It performs … - [pyright: Python Static Type Checker by Microsoft](https://pydevtools.com/handbook/reference/pyright/): pyright is a static type checker and language server for Python, built and maintained by Microsoft. … - [pytest: Python Testing Framework](https://pydevtools.com/handbook/reference/pytest/): pytest is a mature, feature-rich testing framework for Python that simplifies test writing and … - [Python Packaging User Guide](https://pydevtools.com/handbook/reference/python-packaging-user-guide/): The Python Packaging User Guide (PyPUG) is the official documentation site for packaging, … - [Read the Docs: Documentation Hosting for Python Projects](https://pydevtools.com/handbook/reference/read-the-docs/): Read the Docs is a hosted documentation platform that watches a Git repository for pushes and … - [requirements.txt: Python Dependency File Format](https://pydevtools.com/handbook/reference/requirements/): A plain-text file format for declaring Python package dependencies. Each line specifies a package … - [Ruff: Python Linter and Formatter](https://pydevtools.com/handbook/reference/ruff/): Ruff is a fast Python linter and code formatter from Astral (the makers of uv and ty). It replaces … - [scikit-build-core: CMake Build Backend for Python](https://pydevtools.com/handbook/reference/scikit-build-core/): scikit-build-core is a PEP 517 build backend for Python packages with compiled extensions. It drives … - [sdist: Python Source Distribution Format](https://pydevtools.com/handbook/reference/sdist/): An sdist (source distribution) is a compressed archive containing the source code, metadata, and … - [setup.cfg: Setuptools Declarative Configuration File](https://pydevtools.com/handbook/reference/setup.cfg/): setup.cfg is an INI-style configuration file read by setuptools for declarative package … - [setuptools: Python Package Build Backend](https://pydevtools.com/handbook/reference/setuptools/): Setuptools is the original Python build backend. Created in 2004 as an extension of distutils, it … - [Sphinx: Python Documentation Generator](https://pydevtools.com/handbook/reference/sphinx/): Sphinx is a documentation generator that produces HTML, PDF, ePub, and other formats from source … - [sphinx-autobuild: Live Reload for Sphinx Documentation](https://pydevtools.com/handbook/reference/sphinx-autobuild/): sphinx-autobuild watches a Sphinx documentation source tree and rebuilds the HTML output every time … - [tox: Python Test Automation Tool](https://pydevtools.com/handbook/reference/tox/): tox is a command-line testing automation tool that manages Python virtual environments and executes … - [tox-uv: uv backend for tox](https://pydevtools.com/handbook/reference/tox-uv/): tox-uv is a plugin for tox that replaces pip and virtualenv with uv. When installed alongside tox, … - [Twine: Python Package Upload Tool](https://pydevtools.com/handbook/reference/twine/): Twine is a command-line tool for uploading Python distribution files (sdists and wheels) to PyPI and … - [ty: Python Type Checker by Astral](https://pydevtools.com/handbook/reference/ty/): ty (pronounced tee-why) is a static type checker and language server for Python from Astral, the … - [uv: Python Package and Project Manager](https://pydevtools.com/handbook/reference/uv/): uv is a high-performance Python package and project manager that provides a unified interface for … - [uvx: Run Python CLI Tools in Isolated Environments](https://pydevtools.com/handbook/reference/uvx/): uvx is a command that runs Python CLI tools in temporary, isolated virtual environments. It is an … - [venv: Python Built-in Virtual Environment Module](https://pydevtools.com/handbook/reference/venv/): venv is Python’s built-in module for creating virtual environments. Included in the standard library … - [virtualenv: Python Virtual Environment Tool](https://pydevtools.com/handbook/reference/virtualenv/): virtualenv creates isolated Python virtual environments. Each environment is a self-contained … - [watchfiles](https://pydevtools.com/handbook/reference/watchfiles/): watchfiles is a file-watching library and CLI for Python. It uses Rust’s notify crate for filesystem … - [Wheel: Python Binary Distribution Format](https://pydevtools.com/handbook/reference/wheel/): A wheel is a built distribution format for Python packages, defined by PEP 427. It uses the .whl … - [Zuban: Mypy-Compatible Python Type Checker](https://pydevtools.com/handbook/reference/zuban/): Zuban is a static type checker and language server for Python, written in Rust by David Halter, … ## Root Pages - [About](https://pydevtools.com/about/): Python’s packaging and tooling ecosystem earned its reputation for confusion. Official documentation … - [Modern Python Tooling Checklist](https://pydevtools.com/tooling-checklist/): Use this checklist when you start a Python project or standardize a team template. It covers the … - [Privacy Policy](https://pydevtools.com/privacy/): The Python Developer Tooling Handbook (pydevtools.com) collects as little personal data as it can. … --- Generated on 2026-07-21 20:58:16 UTC Site: https://pydevtools.com/