<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Python Developer Tooling Handbook – Python Developer Tools Reference</title>
    <link>https://pydevtools.com/handbook/reference/</link>
    <description>Quick-reference pages describing individual Python development tools, their features, and ecosystem role.</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Mon, 27 Apr 2026 11:32:36 -0400</lastBuildDate>
    
	  <atom:link href="https://pydevtools.com/handbook/reference/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Anaconda: Python and R Data Science Platform</title>
      <link>https://pydevtools.com/handbook/reference/anaconda/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/anaconda/</guid>
      <description>&lt;p&gt;Anaconda Distribution is a pre-packaged Python and R data science platform maintained by Anaconda, Inc. It bundles the &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda/&#34;&gt;conda&lt;/a&gt; package manager, a Python interpreter, and over 1,500 scientific computing libraries into a single installer. The current release, Anaconda Distribution 2025.12, ships with Python 3.13.9 and conda 25.11.0.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-amber-200 hx:bg-amber-100 hx:text-amber-900 hx:dark:border-amber-200/30 hx:dark:bg-amber-900/30 hx:dark:text-amber-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z&#34;/&gt;&lt;/svg&gt;Warning&lt;/p&gt;</description>
    </item>
    <item>
      <title>Basedpyright: Python Type Checker (pyright Fork)</title>
      <link>https://pydevtools.com/handbook/reference/basedpyright/</link>
      <pubDate>Fri, 08 May 2026 03:19:33 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/basedpyright/</guid>
      <description>&lt;p&gt;Basedpyright is a static type checker and language server for Python, maintained by DetachHead as a community fork of Microsoft&amp;rsquo;s &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyright/&#34;&gt;pyright&lt;/a&gt;. It tracks upstream pyright closely and adds diagnostic rules, stricter defaults, and language-server features that Microsoft keeps exclusive to its closed-source Pylance extension.&lt;/p&gt;
&lt;p&gt;The fork exists because pyright ships as an npm package and depends on Node.js, which makes it awkward to pin as a project dependency, and because the editor features most Python developers associate with &amp;ldquo;pyright&amp;rdquo; actually live in Pylance, whose license restricts it to official Microsoft VS Code builds. Basedpyright packages the language server on &lt;a href=&#34;https://pypi.org/project/basedpyright/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;PyPI&lt;/a&gt; so &lt;code&gt;uv add --dev basedpyright&lt;/code&gt; works, and re-implements Pylance-style features (inlay hints, semantic highlighting, docstring completion) in the open-source server so VS Code forks like Cursor, VSCodium, and Positron can use them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Black: Python Code Formatter</title>
      <link>https://pydevtools.com/handbook/reference/black/</link>
      <pubDate>Fri, 08 May 2026 03:18:58 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/black/</guid>
      <description>&lt;p&gt;Black is an opinionated Python code formatter that automatically formats Python code to conform to a strict subset of PEP 8. Black deliberately offers minimal configuration options, aiming to end arguments about code formatting by providing &amp;ldquo;one way&amp;rdquo; to format code.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:rounded-lg hx:border hx:py-2 hx:ltr:pr-4 hx:rtl:pl-4 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;div class=&#34;hx:ltr:pl-3 hx:ltr:pr-2 hx:rtl:pr-3 hx:rtl:pl-2&#34;&gt;&lt;svg height=1.2em class=&#34;hx:inline-block hx:align-middle&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;

  &lt;div class=&#34;hx:w-full hx:min-w-0 hx:leading-7&#34;&gt;
    &lt;div class=&#34;hx:mt-6 hx:leading-7 hx:first:mt-0&#34;&gt;Consider using &lt;a href=&#34;https://pydevtools.com/handbook/reference/ruff/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ruff&lt;/a&gt; instead of Black. Ruff provides the same formatting capabilities but with significantly better performance. Ruff also includes linting, import sorting, and other code quality tools in a single high-performance package.&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;When to use Black&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-black&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-black&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Black suits codebases that already run it in CI or pre-commit hooks and teams that want a zero-config formatter to end style debates. It has been the default Python formatter for years, with stable output that editor plugins, &lt;code&gt;pre-commit&lt;/code&gt; hooks, and CI configurations across the ecosystem rely on.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Briefcase</title>
      <link>https://pydevtools.com/handbook/reference/briefcase/</link>
      <pubDate>Thu, 07 May 2026 07:15:39 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/briefcase/</guid>
      <description>&lt;p&gt;Briefcase is the only mainstream Python packaging tool that ships to iOS and Android. It also packages applications for macOS, Windows, Linux, and the Web, producing platform-specific artifacts (&lt;code&gt;.app&lt;/code&gt;/DMG, MSI, &lt;code&gt;.deb&lt;/code&gt;/&lt;code&gt;.rpm&lt;/code&gt;/AppImage/Flatpak, Xcode project, Gradle project, PyScript/Pyodide site) from a single &lt;code&gt;pyproject.toml&lt;/code&gt; configuration.&lt;/p&gt;
&lt;p&gt;Briefcase is part of the &lt;a href=&#34;https://beeware.org&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;BeeWare&lt;/a&gt; project and is the packaging companion to &lt;a href=&#34;https://toga.readthedocs.io/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Toga&lt;/a&gt;, BeeWare&amp;rsquo;s cross-platform GUI toolkit. Briefcase does not require Toga; it packages any Python application, GUI or otherwise. Install it with &lt;code&gt;uv tool install briefcase&lt;/code&gt; or &lt;code&gt;pipx install briefcase&lt;/code&gt;; the BSD 3-Clause license imposes no restrictions on applications it packages.&lt;/p&gt;</description>
    </item>
    <item>
      <title>build: Python Package Build Frontend</title>
      <link>https://pydevtools.com/handbook/reference/build/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/build/</guid>
      <description>&lt;p&gt;build is a &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pep-517/&#34;&gt;PEP 517-compliant&lt;/a&gt; Python package builder developed by the &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pypa/&#34;&gt;Python Packaging Authority (PyPA)&lt;/a&gt;. It provides a standardized interface for building Python packages using any compliant &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-build-backend/&#34;&gt;build backend&lt;/a&gt;, serving as a simple frontend tool that executes the build process defined by backends like &lt;a href=&#34;https://pydevtools.com/handbook/reference/setuptools/&#34;&gt;setuptools&lt;/a&gt;, &lt;a href=&#34;https://pydevtools.com/handbook/reference/flit/&#34;&gt;flit&lt;/a&gt;, or &lt;a href=&#34;https://pydevtools.com/handbook/reference/hatch/&#34;&gt;hatchling&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Core Functionality&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;core-functionality&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#core-functionality&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Build Operations&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;build-operations&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#build-operations&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Source Distributions: Creates &lt;a href=&#34;https://pydevtools.com/handbook/reference/sdist/&#34;&gt;sdist&lt;/a&gt; packages containing source code&lt;/li&gt;
&lt;li&gt;Binary Distributions: Builds &lt;a href=&#34;https://pydevtools.com/handbook/reference/wheel/&#34;&gt;wheel packages&lt;/a&gt; for direct installation&lt;/li&gt;
&lt;li&gt;Backend Compatibility: Works with any &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pep-517/&#34;&gt;PEP 517-compatible&lt;/a&gt; build backend&lt;/li&gt;
&lt;li&gt;Isolated Builds: Manages build dependencies in separate environments&lt;/li&gt;
&lt;li&gt;Cross-Platform Support: Functions consistently across operating systems&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Command Interface&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;command-interface&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#command-interface&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div class=&#34;hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code&#34;&gt;

&lt;div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Build both wheel and sdist&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Build only a wheel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m build --wheel
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Build only a source distribution&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m build --sdist
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Build in a specified directory&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m build /path/to/project
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# Build with specific Python interpreter&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;python -m build --python-executable /path/to/python&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;hextra-code-copy-btn-container  hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0&#34;&gt;
  &lt;button
    class=&#34;hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50&#34;
    title=&#34;Copy code&#34;
    aria-label=&#34;Copy code&#34;
    data-copied-label=&#34;Copied!&#34;
  &gt;
    &lt;div class=&#34;hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
&lt;div class=&#34;hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Technical Design&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;technical-design&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#technical-design&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;build operates using a straightforward process flow:&lt;/p&gt;</description>
    </item>
    <item>
      <title>cibuildwheel: Cross-Platform Python Wheel Builder</title>
      <link>https://pydevtools.com/handbook/reference/cibuildwheel/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/cibuildwheel/</guid>
      <description>&lt;p&gt;cibuildwheel is a CI tool that builds Python &lt;a href=&#34;https://pydevtools.com/handbook/reference/wheel/&#34;&gt;wheels&lt;/a&gt; for multiple platforms, architectures, and Python versions from a single configuration. It runs on CI servers (GitHub Actions, GitLab CI, Azure Pipelines, CircleCI, and Cirrus CI), automating the work of compiling C/C++/Rust/Cython extensions and producing &lt;a href=&#34;https://peps.python.org/pep-0600/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;manylinux&lt;/a&gt;/musllinux-compliant wheels.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;Note&lt;/p&gt;</description>
    </item>
    <item>
      <title>Conda</title>
      <link>https://pydevtools.com/handbook/reference/conda/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/conda/</guid>
      <description>&lt;p&gt;Conda is a language-agnostic, cross-platform package and &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-virtual-environment/&#34;&gt;environment&lt;/a&gt; manager. Where &lt;a href=&#34;https://pydevtools.com/handbook/reference/pip/&#34;&gt;pip&lt;/a&gt; installs Python packages from &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pypi/&#34;&gt;PyPI&lt;/a&gt;, conda resolves dependencies across Python, R, C/C++, Fortran, and other languages in a single dependency graph. The current stable release is 26.3.1 (March 2026).&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;Note&lt;/p&gt;</description>
    </item>
    <item>
      <title>Conda Package</title>
      <link>https://pydevtools.com/handbook/reference/conda-package/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/conda-package/</guid>
      <description>&lt;p&gt;A conda package is a compressed archive containing pre-built binaries, library code, metadata, and dependency information for installation through &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda/&#34;&gt;conda&lt;/a&gt; channels. It serves the same role in the conda ecosystem that a &lt;a href=&#34;https://pydevtools.com/handbook/reference/wheel/&#34;&gt;wheel&lt;/a&gt; serves on &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pypi/&#34;&gt;PyPI&lt;/a&gt;, with one critical difference: conda packages can bundle software from any language (Python, R, C++, Fortran, Julia), not just Python.&lt;/p&gt;
&lt;h2&gt;Package Formats&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;package-formats&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#package-formats&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The conda ecosystem recognizes two archive formats, referred to as v1 and v2.&lt;/p&gt;</description>
    </item>
    <item>
      <title>conda-forge: Community Conda Package Channel</title>
      <link>https://pydevtools.com/handbook/reference/conda-forge/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/conda-forge/</guid>
      <description>&lt;p&gt;conda-forge is a community-maintained collection of &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda-package/&#34;&gt;conda packages&lt;/a&gt; distributed through a public channel on &lt;a href=&#34;https://anaconda.org/conda-forge&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;anaconda.org&lt;/a&gt;. Over 25,000 feedstocks (package repositories) produce builds for Linux, macOS, and Windows across multiple CPU architectures. Each feedstock contains a build recipe in its own GitHub repository, and automated infrastructure rebuilds packages when dependencies change or new platforms appear.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;Note&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cookiecutter: Python Project Template Tool</title>
      <link>https://pydevtools.com/handbook/reference/cookiecutter/</link>
      <pubDate>Mon, 04 May 2026 08:02:03 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/cookiecutter/</guid>
      <description>&lt;p&gt;Cookiecutter is a cross-platform command-line utility that creates projects from templates. It generates project structures by copying template directories and replacing templated variables with user-provided values, supporting any programming language or markup format.&lt;/p&gt;
&lt;h2&gt;Core Functionality&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;core-functionality&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#core-functionality&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Template Processing&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;template-processing&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#template-processing&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Copies source directory trees and replaces names surrounded by templating tags &lt;code&gt;{{ }}&lt;/code&gt; with values from &lt;code&gt;cookiecutter.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Supports variable replacement in file names, directory names, and file contents&lt;/li&gt;
&lt;li&gt;Uses Jinja2 templating engine for advanced variable processing&lt;/li&gt;
&lt;li&gt;Handles multiple data types including strings, lists, booleans, and dictionaries&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Interactive Configuration&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;interactive-configuration&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#interactive-configuration&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Command-line prompts for template variables&lt;/li&gt;
&lt;li&gt;Default values specified in &lt;code&gt;cookiecutter.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;User can accept defaults or provide custom values during project generation&lt;/li&gt;
&lt;li&gt;Support for conditional prompts and validation&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Additional Features&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;additional-features&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#additional-features&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Hooks System&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;hooks-system&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#hooks-system&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Pre-generation hooks for input validation and setup tasks&lt;/li&gt;
&lt;li&gt;Post-generation hooks for environment initialization, dependency installation, and git repository setup&lt;/li&gt;
&lt;li&gt;Access to template variables within hook scripts&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Advanced Templating&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;advanced-templating&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#advanced-templating&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Private variables for computed values&lt;/li&gt;
&lt;li&gt;Choice variables for predefined options&lt;/li&gt;
&lt;li&gt;Template inheritance for shared configurations&lt;/li&gt;
&lt;li&gt;Custom Jinja2 extensions and filters&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Installation and Usage&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;installation-and-usage&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#installation-and-usage&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Installation&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;installation&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#installation&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Install Cookiecutter as a global CLI tool with &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>cx_Freeze</title>
      <link>https://pydevtools.com/handbook/reference/cx-freeze/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/cx-freeze/</guid>
      <description>&lt;p&gt;cx_Freeze is a Python application freezer that packages a Python program and its dependencies into a self-contained directory or executable. It targets Windows, macOS, and Linux from the same configuration and ships native commands for producing each platform&amp;rsquo;s preferred installer format. Recent releases add experimental support for freezing free-threaded CPython builds. Install it with &lt;code&gt;uv tool install cx_Freeze&lt;/code&gt; or &lt;code&gt;pipx install cx_Freeze&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;When to Use cx_Freeze&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-cx_freeze&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-cx_freeze&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;cx_Freeze fits projects whose deliverable is an installer rather than a raw binary. Its &lt;code&gt;bdist_msi&lt;/code&gt;, &lt;code&gt;bdist_dmg&lt;/code&gt;, &lt;code&gt;bdist_appimage&lt;/code&gt;, and &lt;code&gt;bdist_deb&lt;/code&gt; commands produce platform-native installers in one step, without a second packaging tool like WiX, dmgbuild, or &lt;code&gt;dpkg-deb&lt;/code&gt;. Most other freezers stop at a folder or single executable and leave installer generation to the user.&lt;/p&gt;</description>
    </item>
    <item>
      <title>direnv: Per-Directory Environment Variables for Python</title>
      <link>https://pydevtools.com/handbook/reference/direnv/</link>
      <pubDate>Thu, 30 Apr 2026 07:12:25 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/direnv/</guid>
      <description>&lt;p&gt;direnv is a shell extension that loads and unloads environment variables based on the current working directory. It reads a per-directory &lt;code&gt;.envrc&lt;/code&gt; file when entering a folder and reverts the environment when leaving. Although direnv is language-agnostic, it is widely used in Python projects to activate &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-virtual-environment/&#34;&gt;virtual environments&lt;/a&gt; and export project-specific settings without polluting the global shell.&lt;/p&gt;
&lt;h2&gt;Key Features&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;key-features&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#key-features&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Loads variables from &lt;code&gt;.envrc&lt;/code&gt; on &lt;code&gt;cd&lt;/code&gt; into a directory and unloads them on &lt;code&gt;cd&lt;/code&gt; out&lt;/li&gt;
&lt;li&gt;Provides a stdlib of layout helpers, including &lt;code&gt;layout python&lt;/code&gt;, &lt;code&gt;layout python3&lt;/code&gt;, &lt;code&gt;layout pyenv&lt;/code&gt;, and &lt;code&gt;layout pipenv&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Supports bash, zsh, fish, tcsh, elvish, and PowerShell&lt;/li&gt;
&lt;li&gt;Requires explicit per-directory authorization with &lt;code&gt;direnv allow&lt;/code&gt; before any new &lt;code&gt;.envrc&lt;/code&gt; runs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Installation&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;installation&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#installation&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;direnv is distributed through most package managers:&lt;/p&gt;</description>
    </item>
    <item>
      <title>distutils: Python&#39;s Original Build System</title>
      <link>https://pydevtools.com/handbook/reference/distutils/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/distutils/</guid>
      <description>&lt;p&gt;distutils was a standard library module that provided the original mechanism for building and distributing Python packages. It defined the &lt;code&gt;setup.py&lt;/code&gt;-based workflow that became the foundation of Python packaging for over two decades.&lt;/p&gt;
&lt;h2&gt;What It Did&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;what-it-did&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#what-it-did&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;distutils handled package building, installation, and distribution through a &lt;code&gt;setup.py&lt;/code&gt; script:&lt;/p&gt;
&lt;div class=&#34;hextra-code-block hx:relative hx:mt-6 hx:first:mt-0 hx:group/code&#34;&gt;

&lt;div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;from&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;distutils.core&lt;/span&gt; &lt;span class=&#34;kn&#34;&gt;import&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;setup&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;setup&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;example&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;1.0&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;n&#34;&gt;py_modules&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;example&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&#34;hextra-code-copy-btn-container  hx:transition hx:group-hover/code:opacity-100 hx:flex hx:gap-1 hx:absolute hx:m-[11px] hx:right-0 hx:top-0&#34;&gt;
  &lt;button
    class=&#34;hextra-code-copy-btn hx:group/copybtn hx:cursor-pointer hx:transition-all hx:active:opacity-50 hx:bg-primary-700/5 hx:border hx:border-black/5 hx:text-gray-600 hx:hover:text-gray-900 hx:rounded-md hx:p-1.5 hx:dark:bg-primary-300/10 hx:dark:border-white/10 hx:dark:text-gray-400 hx:dark:hover:text-gray-50&#34;
    title=&#34;Copy code&#34;
    aria-label=&#34;Copy code&#34;
    data-copied-label=&#34;Copied!&#34;
  &gt;
    &lt;div class=&#34;hextra-copy-icon hx:group-[.copied]/copybtn:hidden hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
&lt;div class=&#34;hextra-success-icon hx:hidden hx:group-[.copied]/copybtn:block hx:pointer-events-none hx:h-4 hx:w-4&#34;&gt;&lt;/div&gt;
  &lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Running &lt;code&gt;python setup.py install&lt;/code&gt; would copy modules into the correct location on the target system. Running &lt;code&gt;python setup.py sdist&lt;/code&gt; would produce a source distribution archive.&lt;/p&gt;</description>
    </item>
    <item>
      <title>flake8: Python Linter</title>
      <link>https://pydevtools.com/handbook/reference/flake8/</link>
      <pubDate>Fri, 08 May 2026 03:18:58 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/flake8/</guid>
      <description>&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:rounded-lg hx:border hx:py-2 hx:ltr:pr-4 hx:rtl:pl-4 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;div class=&#34;hx:ltr:pl-3 hx:ltr:pr-2 hx:rtl:pr-3 hx:rtl:pl-2&#34;&gt;&lt;svg height=1.2em class=&#34;hx:inline-block hx:align-middle&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;

  &lt;div class=&#34;hx:w-full hx:min-w-0 hx:leading-7&#34;&gt;
    &lt;div class=&#34;hx:mt-6 hx:leading-7 hx:first:mt-0&#34;&gt;Flake8 has been largely superseded by newer tools like &lt;a href=&#34;https://pydevtools.com/handbook/reference/ruff/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Ruff&lt;/a&gt;, which offer significantly faster performance and more features. Consider using Ruff for new projects.&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Flake8 is a Python linting tool that enforces style consistency and checks for programming errors. It combines multiple code quality tools into a single interface: PyFlakes for logical errors, pycodestyle for style checking, and mccabe for code complexity checking.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flit: Python Package Build and Publish Tool</title>
      <link>https://pydevtools.com/handbook/reference/flit/</link>
      <pubDate>Tue, 07 Apr 2026 14:40:41 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/flit/</guid>
      <description>&lt;p&gt;Flit is a Python packaging tool designed to be simple to use. Flit provides &lt;code&gt;flit init&lt;/code&gt; to create a new package, &lt;code&gt;flit publish&lt;/code&gt; for publishing to PyPI, automatically includes data files in the package, and fetches the package version number from the &lt;code&gt;__init__.py&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;Flit does not support advanced packaging functionality like building C extensions. It also doesn&amp;rsquo;t provide a CLI for managing virtual environments or dependencies; the user creates their own &lt;a href=&#34;https://pydevtools.com/handbook/reference/virtualenv/&#34;&gt;virtualenv&lt;/a&gt; and adds dependencies to the &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyproject.toml/&#34;&gt;pyproject.toml&lt;/a&gt; file manually.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Furo: Sphinx Documentation Theme</title>
      <link>https://pydevtools.com/handbook/reference/furo/</link>
      <pubDate>Wed, 29 Apr 2026 14:33:02 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/furo/</guid>
      <description>&lt;p&gt;Furo is a &lt;a href=&#34;https://pydevtools.com/handbook/reference/sphinx/&#34;&gt;Sphinx&lt;/a&gt; theme written by &lt;a href=&#34;https://pradyunsg.me/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Pradyun Gedam&lt;/a&gt;. It is a clean, customisable replacement for Sphinx&amp;rsquo;s default &lt;code&gt;alabaster&lt;/code&gt; theme, with built-in light and dark modes, a responsive layout, and a focused sidebar.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;Note&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hatch: Python Project Manager</title>
      <link>https://pydevtools.com/handbook/reference/hatch/</link>
      <pubDate>Wed, 06 May 2026 06:23:54 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/hatch/</guid>
      <description>&lt;p&gt;hatch is a Python project management tool maintained by the Python Packaging Authority (PyPA). It handles virtual environment management, dependency resolution, project scaffolding, and publishing through a unified interface that follows Python packaging standards. Its build backend, hatchling, is one of the most widely used on PyPI.&lt;/p&gt;
&lt;h2&gt;When to Use Hatch&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-hatch&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-hatch&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Hatch suits library authors who want a single, standards-compliant tool covering scaffolding, building, publishing, and multi-version testing. Its environment matrix system runs tests across Python versions and dependency sets without a separate tool like &lt;a href=&#34;https://pydevtools.com/handbook/reference/tox/&#34;&gt;tox&lt;/a&gt; or &lt;a href=&#34;https://pydevtools.com/handbook/reference/nox/&#34;&gt;nox&lt;/a&gt;. PyPA governance backs the project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Homebrew: macOS Package Manager for Python</title>
      <link>https://pydevtools.com/handbook/reference/homebrew/</link>
      <pubDate>Mon, 04 May 2026 08:02:03 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/homebrew/</guid>
      <description>&lt;p&gt;Homebrew is a package manager for macOS and Linux that makes installing software packages simple. While not Python-specific, it provides an important way to install Python tools and dependencies on macOS systems.&lt;/p&gt;
&lt;h2&gt;Core Capabilities&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;core-capabilities&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#core-capabilities&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Installs packages (&amp;ldquo;formulae&amp;rdquo;) and larger binary packages (&amp;ldquo;casks&amp;rdquo;)&lt;/li&gt;
&lt;li&gt;Manages package dependencies&lt;/li&gt;
&lt;li&gt;Updates installed packages&lt;/li&gt;
&lt;li&gt;Installation and uninstallation using &lt;code&gt;brew install&lt;/code&gt; and &lt;code&gt;brew uninstall&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Installs &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-python-interpreter/&#34;&gt;Python interpreters&lt;/a&gt; (&lt;code&gt;brew install python&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Installs Python tools like &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; and &lt;a href=&#34;https://pydevtools.com/handbook/reference/pipx/&#34;&gt;pipx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Provides dependency libraries needed for Python packages (e.g. openssl, sqlite)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:rounded-lg hx:border hx:py-2 hx:ltr:pr-4 hx:rtl:pl-4 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-amber-200 hx:bg-amber-100 hx:text-amber-900 hx:dark:border-amber-200/30 hx:dark:bg-amber-900/30 hx:dark:text-amber-200&#34;&gt;
  &lt;div class=&#34;hx:ltr:pl-3 hx:ltr:pr-2 hx:rtl:pr-3 hx:rtl:pl-2&#34;&gt;&lt;svg height=1.2em class=&#34;hx:inline-block hx:align-middle&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;

  &lt;div class=&#34;hx:w-full hx:min-w-0 hx:leading-7&#34;&gt;
    &lt;div class=&#34;hx:mt-6 hx:leading-7 hx:first:mt-0&#34;&gt;While Homebrew can install Python, it&amp;rsquo;s not recommended as your primary way to manage Python versions for development projects. Homebrew updates can unexpectedly change Python versions, breaking your project environments. Instead, use dedicated Python version management tools like &lt;a href=&#34;https://pydevtools.com/handbook/how-to/how-to-install-python-with-uv/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;code&gt;uv python install&lt;/code&gt;&lt;/a&gt; or &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyenv/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;pyenv&lt;/a&gt; which provide more reliable and granular control over Python versions. See &lt;a href=&#34;https://pydevtools.com/handbook/explanation/should-i-use-homebrew-to-install-python/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Should I use Homebrew to install Python?&lt;/a&gt; for the full reasoning.&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;Pros&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;pros&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#pros&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Simple to use with consistent commands&lt;/li&gt;
&lt;li&gt;Well-maintained and stable&lt;/li&gt;
&lt;li&gt;Large collection of available packages&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Cons&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;cons&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#cons&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;macOS/Linux only (no Windows support)&lt;/li&gt;
&lt;li&gt;Can conflict with system Python on macOS&lt;/li&gt;
&lt;li&gt;Updates may break existing Python setups&lt;/li&gt;
&lt;li&gt;Less granular control compared to Python-specific tools&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class=&#34;pdt-learn-more&#34;&gt;Learn More&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;learn-more&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#learn-more&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.brew.sh&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Homebrew Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.brew.sh/Homebrew-and-Python&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Homebrew and Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/Homebrew/homebrew-core&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Formula Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pydevtools.com/handbook/explanation/should-i-use-homebrew-to-install-python/&#34;&gt;Should I use Homebrew to install Python?&lt;/a&gt; explains why Homebrew&amp;rsquo;s Python is for Homebrew&amp;rsquo;s own packages, not your projects.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pydevtools.com/handbook/explanation/why-should-i-avoid-system-python/&#34;&gt;Why should I avoid system Python?&lt;/a&gt; covers the broader risk of using interpreters managed by another package manager.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://pydevtools.com/handbook/how-to/how-to-install-uv-on-macos/&#34;&gt;How to install uv on macOS&lt;/a&gt; walks through the recommended replacement for &lt;code&gt;brew install python&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>IPython: Enhanced Python Interactive Shell</title>
      <link>https://pydevtools.com/handbook/reference/ipython/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/ipython/</guid>
      <description>&lt;p&gt;IPython is an enhanced interactive Python interpreter that provides a powerful command-line interface with advanced features like syntax highlighting, tab completion, magic commands, and rich display capabilities. It serves as the computational kernel for Jupyter notebooks.&lt;/p&gt;
&lt;h2&gt;Core Features&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;core-features&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#core-features&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Enhanced Interactive Shell&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;enhanced-interactive-shell&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#enhanced-interactive-shell&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Syntax Highlighting: Real-time code coloring for better readability&lt;/li&gt;
&lt;li&gt;Tab Completion: Intelligent autocompletion for objects, methods, and file paths&lt;/li&gt;
&lt;li&gt;History Management: Persistent command history with search capabilities&lt;/li&gt;
&lt;li&gt;Rich Output: Native display of images, plots, and formatted data structures&lt;/li&gt;
&lt;li&gt;Object Introspection: Detailed information about objects using &lt;code&gt;?&lt;/code&gt; and &lt;code&gt;??&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Magic Commands&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;magic-commands&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#magic-commands&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;IPython provides magic commands prefixed with &lt;code&gt;%&lt;/code&gt; for single-line operations or &lt;code&gt;%%&lt;/code&gt; for cell-wide operations:&lt;/p&gt;</description>
    </item>
    <item>
      <title>marimo: Reactive Python Notebook</title>
      <link>https://pydevtools.com/handbook/reference/marimo/</link>
      <pubDate>Sat, 02 May 2026 08:49:34 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/marimo/</guid>
      <description>&lt;p&gt;marimo is an open-source Python notebook in which cells re-execute automatically when the variables they read change. Notebooks are stored as plain &lt;code&gt;.py&lt;/code&gt; files rather than JSON and are parsed by static analysis to derive a deterministic execution order. The same file can be run as a standalone script or inside a sandboxed environment managed by &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt;. It is licensed under Apache-2.0 and requires Python 3.10 or newer.&lt;/p&gt;
&lt;h2&gt;Reactive Notebook Model&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;reactive-notebook-model&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#reactive-notebook-model&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The traditional notebook model decouples cell ordering from execution. A Jupyter cell runs only when the user runs it, so the in-memory kernel state can drift from the visible code. Variables outlive the cells that defined them, and re-running cells out of order produces results that a fresh kernel restart cannot reproduce. This is the &lt;em&gt;hidden state&lt;/em&gt; problem.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Material for MkDocs: Documentation Theme and Framework</title>
      <link>https://pydevtools.com/handbook/reference/mkdocs-material/</link>
      <pubDate>Wed, 29 Apr 2026 14:33:02 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/mkdocs-material/</guid>
      <description>&lt;p&gt;Material for MkDocs is a theme and feature framework for &lt;a href=&#34;https://pydevtools.com/handbook/reference/mkdocs/&#34;&gt;MkDocs&lt;/a&gt;. Built by &lt;a href=&#34;https://github.com/squidfunk&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Martin Donath (squidfunk)&lt;/a&gt;, it layers Material Design styling, client-side search, dark mode, code annotations, and a wide configuration surface on top of the base MkDocs build pipeline.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;Note&lt;/p&gt;</description>
    </item>
    <item>
      <title>MkDocs: Markdown Documentation for Python Projects</title>
      <link>https://pydevtools.com/handbook/reference/mkdocs/</link>
      <pubDate>Fri, 01 May 2026 06:58:04 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/mkdocs/</guid>
      <description>&lt;p&gt;MkDocs is a static site generator that builds documentation websites from Markdown source files. A project&amp;rsquo;s structure, navigation, theme, and plugins are declared in a single &lt;code&gt;mkdocs.yml&lt;/code&gt; file at the repo root.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;Note&lt;/p&gt;</description>
    </item>
    <item>
      <title>mkdocstrings: Autogenerate API Documentation in MkDocs</title>
      <link>https://pydevtools.com/handbook/reference/mkdocstrings/</link>
      <pubDate>Wed, 29 Apr 2026 14:33:02 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/mkdocstrings/</guid>
      <description>&lt;p&gt;mkdocstrings is a &lt;a href=&#34;https://pydevtools.com/handbook/reference/mkdocs/&#34;&gt;MkDocs&lt;/a&gt; plugin that generates API documentation from source code and injects it directly into Markdown pages. The base plugin is language-agnostic; concrete language support ships as separate handler packages.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;Note&lt;/p&gt;</description>
    </item>
    <item>
      <title>mypy: Python Static Type Checker</title>
      <link>https://pydevtools.com/handbook/reference/mypy/</link>
      <pubDate>Tue, 05 May 2026 06:57:20 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/mypy/</guid>
      <description>&lt;p&gt;mypy is a static type checker for Python that analyzes type annotations to detect bugs before runtime. It has been the default Python type checker since 2012 and has the broadest ecosystem support of any Python type checking tool.&lt;/p&gt;
&lt;h2&gt;When to use mypy&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-mypy&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-mypy&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Use mypy when you want to catch type-related bugs before runtime by adding static type checking to a Python project. It is the most established Python type checker with broad ecosystem support, making it a reliable default for projects that are adopting type annotations incrementally. For faster checking or tighter VS Code integration, consider &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyright/&#34;&gt;pyright&lt;/a&gt;; for an emerging alternative from the creators of &lt;a href=&#34;https://pydevtools.com/handbook/reference/ruff/&#34;&gt;Ruff&lt;/a&gt;, see &lt;a href=&#34;https://pydevtools.com/handbook/reference/ty/&#34;&gt;ty&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>nox: Python Test Automation Tool</title>
      <link>https://pydevtools.com/handbook/reference/nox/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/nox/</guid>
      <description>&lt;p&gt;nox manages Python virtual environments and runs tests across multiple Python versions and configurations. Unlike &lt;a href=&#34;https://pydevtools.com/handbook/reference/tox/&#34;&gt;tox&lt;/a&gt;, which uses INI format configuration files, nox uses Python files for configuration, providing more flexibility and control. &lt;a href=&#34;https://pydevtools.com/handbook/reference/hatch/&#34;&gt;Hatch&lt;/a&gt; offers a third approach with its environment matrix system configured in &lt;code&gt;pyproject.toml&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;When to Use nox&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-nox&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-nox&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;nox solves the problem of running test suites, linters, and other checks across multiple Python versions and dependency combinations. Choose nox over &lt;a href=&#34;https://pydevtools.com/handbook/reference/tox/&#34;&gt;tox&lt;/a&gt; when test automation logic requires conditionals, loops, or dynamic session generation that INI configuration cannot express. Projects with straightforward multi-version testing may find &lt;a href=&#34;https://pydevtools.com/handbook/how-to/how-to-test-against-multiple-python-versions-using-uv/&#34;&gt;uv&amp;rsquo;s built-in multi-version support&lt;/a&gt; sufficient without a separate tool; see &lt;a href=&#34;https://pydevtools.com/handbook/explanation/do-you-still-need-tox-or-nox-with-uv/&#34;&gt;Do you still need tox or nox with uv?&lt;/a&gt; for guidance.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nuitka</title>
      <link>https://pydevtools.com/handbook/reference/nuitka/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/nuitka/</guid>
      <description>&lt;p&gt;Nuitka is a Python-to-C compiler that translates CPython bytecode into C source, then compiles and links the result against &lt;code&gt;libpython&lt;/code&gt;. The output runs without a separate Python installation and can ship as a standalone folder, a self-extracting single-file executable, or an importable extension module. Nuitka runs on Linux, macOS, and Windows; the build machine needs a C toolchain (&lt;code&gt;gcc&lt;/code&gt;, &lt;code&gt;clang&lt;/code&gt;, or MSVC). Install it with &lt;code&gt;uv tool install nuitka&lt;/code&gt; or &lt;code&gt;pipx install nuitka&lt;/code&gt;. Nuitka is AGPL-3.0+ with a runtime exception for compiled output, so the license does not carry over to the applications it produces.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pdb: Python&#39;s Built-in Debugger</title>
      <link>https://pydevtools.com/handbook/reference/pdb/</link>
      <pubDate>Mon, 27 Apr 2026 09:16:03 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pdb/</guid>
      <description>&lt;p&gt;pdb is Python&amp;rsquo;s interactive source debugger, distributed as a module in the standard library. It supports setting breakpoints, single-stepping at the source-line level, inspecting and modifying variables in any stack frame, and post-mortem analysis of an unhandled exception. The interface is line-oriented and runs in any terminal with no external dependencies.&lt;/p&gt;
&lt;h2&gt;When to use pdb&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-pdb&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-pdb&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Use pdb when a problem can be reproduced locally and adding a print statement is not enough. Drop a &lt;code&gt;breakpoint()&lt;/code&gt; call at the line of interest, run the program, and inspect state interactively. For a crash that has already happened, run the script with &lt;code&gt;python -m pdb -c continue script.py&lt;/code&gt; to land in post-mortem at the offending frame. pdb pauses the entire process, so it is not appropriate for debugging long-running production services; reach for logging or a sampling profiler instead.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PDM: Python Package and Dependency Manager</title>
      <link>https://pydevtools.com/handbook/reference/pdm/</link>
      <pubDate>Mon, 27 Apr 2026 09:16:18 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pdm/</guid>
      <description>&lt;p&gt;PDM is a Python package and dependency manager that implements the modern &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pep-517/&#34;&gt;PEP 517/518 build-system interface&lt;/a&gt; and reads &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pep-621-compatibility/&#34;&gt;PEP 621 project metadata&lt;/a&gt; from &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyproject.toml/&#34;&gt;pyproject.toml&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;When to use PDM&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-pdm&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-pdm&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Use PDM when you have an existing project built around its workflow and want a standards-compliant package manager with lockfile support and dependency groups. PDM&amp;rsquo;s strict adherence to the &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pep-517/&#34;&gt;PEP 517/518&lt;/a&gt; build-system interface and &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pep-621-compatibility/&#34;&gt;PEP 621&lt;/a&gt; project metadata makes it a good fit for teams that prioritize alignment with official Python packaging standards. For new projects, &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; provides &lt;a href=&#34;https://pydevtools.com/handbook/explanation/which-python-package-manager-should-i-use/&#34;&gt;faster performance and broader functionality&lt;/a&gt;; PDM&amp;rsquo;s standalone build backend, pdm-backend, can still be used in uv projects without adopting the full PDM CLI.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pip: Python Package Installer</title>
      <link>https://pydevtools.com/handbook/reference/pip/</link>
      <pubDate>Mon, 27 Apr 2026 21:44:29 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pip/</guid>
      <description>&lt;p&gt;pip is the Python Package Authority&amp;rsquo;s (PyPA) standard package installer. It enables installing and managing Python packages from the Python Package Index (PyPI) and other package indexes. pip comes with modern Python installations and serves as the default tool for package operations in the Python ecosystem.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:rounded-lg hx:border hx:py-2 hx:ltr:pr-4 hx:rtl:pl-4 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;div class=&#34;hx:ltr:pl-3 hx:ltr:pr-2 hx:rtl:pr-3 hx:rtl:pl-2&#34;&gt;&lt;svg height=1.2em class=&#34;hx:inline-block hx:align-middle&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;

  &lt;div class=&#34;hx:w-full hx:min-w-0 hx:leading-7&#34;&gt;
    &lt;div class=&#34;hx:mt-6 hx:leading-7 hx:first:mt-0&#34;&gt;While pip remains Python&amp;rsquo;s default package installer, many workflows benefit from newer tools like uv that provide better performance and more integrated functionality.&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;Core Functionality&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;core-functionality&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#core-functionality&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;pip provides essential package management capabilities:&lt;/p&gt;</description>
    </item>
    <item>
      <title>pip-tools: Python Dependency Pinning Tools</title>
      <link>https://pydevtools.com/handbook/reference/pip-tools/</link>
      <pubDate>Mon, 04 May 2026 08:09:53 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pip-tools/</guid>
      <description>&lt;p&gt;pip-tools is a set of command-line utilities for managing Python dependency pinning. It consists of two commands: &lt;code&gt;pip-compile&lt;/code&gt; for resolving and locking dependencies, and &lt;code&gt;pip-sync&lt;/code&gt; for synchronizing a virtual environment to match a &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-lock-file/&#34;&gt;lockfile&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;Note&lt;/p&gt;</description>
    </item>
    <item>
      <title>pipenv: Python Dependency Manager</title>
      <link>https://pydevtools.com/handbook/reference/pipenv/</link>
      <pubDate>Sat, 18 Apr 2026 11:22:55 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pipenv/</guid>
      <description>&lt;p&gt;pipenv is a tool for managing &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-python-application/&#34;&gt;application&lt;/a&gt; dependencies analogous to npm for Node.js or
bundler for Ruby.&lt;/p&gt;
&lt;p&gt;Per the &lt;a href=&#34;https://pipenv.pypa.io&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;pipenv documentation&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;Pipenv automatically creates and manages a virtualenv for your projects, as well as
adds/removes packages from your Pipfile as you install/uninstall packages. It also
generates a project Pipfile.lock, which is used to produce deterministic builds.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;When to Use Pipenv&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-pipenv&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-pipenv&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pipenv fits teams already committed to a Pipfile-based workflow for an &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-python-application/&#34;&gt;application&lt;/a&gt; project, where the existing lockfile and automatic virtualenv still cover the team&amp;rsquo;s needs. Its release cadence has slowed relative to newer tools, and it predates the &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyproject.toml/&#34;&gt;pyproject.toml&lt;/a&gt; standards the rest of the packaging ecosystem has adopted.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pipfile: Python Dependency Declaration Format</title>
      <link>https://pydevtools.com/handbook/reference/pipfile/</link>
      <pubDate>Mon, 04 May 2026 08:09:53 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pipfile/</guid>
      <description>&lt;p&gt;A Pipfile is a TOML-formatted file that declares a project&amp;rsquo;s Python dependencies for use with &lt;a href=&#34;https://pydevtools.com/handbook/reference/pipenv/&#34;&gt;Pipenv&lt;/a&gt;. It was originally proposed as a successor to &lt;a href=&#34;https://pydevtools.com/handbook/reference/requirements/&#34;&gt;requirements.txt&lt;/a&gt;, adding structured runtime and development dependency sections alongside a paired &lt;code&gt;Pipfile.lock&lt;/code&gt; for reproducible installs.&lt;/p&gt;
&lt;p&gt;The standalone &lt;code&gt;pipfile&lt;/code&gt; specification project at &lt;a href=&#34;https://github.com/pypa/pipfile&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;pypa/pipfile&lt;/a&gt; has not seen substantive activity since 2019. The format lives on inside Pipenv, which reads and writes both the &lt;code&gt;Pipfile&lt;/code&gt; and &lt;code&gt;Pipfile.lock&lt;/code&gt;. The broader Python packaging ecosystem moved toward dependency declarations in &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyproject.toml/&#34;&gt;pyproject.toml&lt;/a&gt; under &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pep-621-compatibility/&#34;&gt;PEP 621&lt;/a&gt;, and the two formats are no longer in active competition.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pipx: Install Python CLI Tools in Isolation</title>
      <link>https://pydevtools.com/handbook/reference/pipx/</link>
      <pubDate>Wed, 06 May 2026 06:23:54 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pipx/</guid>
      <description>&lt;p&gt;pipx is a command line tool to install and run Python command line applications in isolated environments. Each installed application gets its own virtual environment, preventing dependency conflicts between tools while making their executables available on your &lt;code&gt;PATH&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;When to use pipx&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-pipx&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-pipx&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Reach for pipx when installing standalone Python CLI tools (ruff, csvkit, httpie, cookiecutter) that should stay isolated from any project&amp;rsquo;s &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-virtual-environment/&#34;&gt;virtual environment&lt;/a&gt; and remain on &lt;code&gt;PATH&lt;/code&gt; across shell sessions. It fits teams that already have pipx wired into setup scripts, documentation, or CI and prefer a narrowly-scoped tool over a general-purpose one. For new installations, &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; provides equivalent isolation through &lt;code&gt;uv tool install&lt;/code&gt; and &lt;code&gt;uvx&lt;/code&gt; while also handling Python version and project management in the same binary.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pixi: Multi-Language Package and Workflow Manager</title>
      <link>https://pydevtools.com/handbook/reference/pixi/</link>
      <pubDate>Sat, 25 Apr 2026 06:42:19 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pixi/</guid>
      <description>&lt;p&gt;Pixi is a cross-platform package manager and workflow tool that manages both &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda-forge/&#34;&gt;conda-forge&lt;/a&gt; packages and PyPI packages from a single project manifest. It replaces &lt;a href=&#34;https://pydevtools.com/handbook/reference/conda/&#34;&gt;conda&lt;/a&gt;&amp;rsquo;s global environment model with project-local environments and automatic lock files.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;Note&lt;/p&gt;</description>
    </item>
    <item>
      <title>Poetry: Python Packaging and Dependency Manager</title>
      <link>https://pydevtools.com/handbook/reference/poetry/</link>
      <pubDate>Thu, 23 Apr 2026 06:56:42 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/poetry/</guid>
      <description>&lt;p&gt;Poetry is a Python packaging and dependency management tool that handles dependency installation, virtual environment management, package building, and publishing. It aims to provide a unified workflow for Python project management through configuration in &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyproject.toml/&#34;&gt;pyproject.toml&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;When to Use Poetry&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-poetry&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-poetry&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Poetry fits teams that already have an established Poetry workflow and need integrated dependency management, virtual environment handling, and package publishing. Its lockfile and dependency group features suit application projects that require reproducible builds.&lt;/p&gt;</description>
    </item>
    <item>
      <title>prek: Fast Pre-commit Hook Runner for Python</title>
      <link>https://pydevtools.com/handbook/reference/prek/</link>
      <pubDate>Sun, 19 Apr 2026 07:03:22 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/prek/</guid>
      <description>&lt;p&gt;prek is a fast reimplementation of the &lt;a href=&#34;https://pre-commit.com/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;pre-commit&lt;/a&gt; framework that serves as a faster, dependency-free, drop-in alternative. It maintains full compatibility with existing &lt;code&gt;.pre-commit-config.yaml&lt;/code&gt; files while providing significant performance improvements, reduced disk usage, and an enhanced CLI experience.&lt;/p&gt;
&lt;h2&gt;Key Features&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;key-features&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#key-features&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Performance&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;performance&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#performance&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;prek executes multiple times faster than the original pre-commit tool while using approximately half the disk space. It achieves this through shared toolchain management across hooks, parallel repository cloning and hook installation, and concurrent hook execution based on priority levels.&lt;/p&gt;</description>
    </item>
    <item>
      <title>profiling.sampling: Statistical Profiler in the Standard Library</title>
      <link>https://pydevtools.com/handbook/reference/profiling-sampling/</link>
      <pubDate>Thu, 07 May 2026 13:56:14 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/profiling-sampling/</guid>
      <description>&lt;p&gt;&lt;code&gt;profiling.sampling&lt;/code&gt; is the statistical sampling profiler that ships with Python 3.15, developed under the codename Tachyon. It samples the call stacks of a Python process on a timer rather than instrumenting every call, and it can attach to a process that is already running by PID. The CLI is invoked as &lt;code&gt;python -m profiling.sampling&lt;/code&gt;, with &lt;code&gt;run&lt;/code&gt; and &lt;code&gt;attach&lt;/code&gt; as the two profiling entry points, &lt;code&gt;dump&lt;/code&gt; for a single stack snapshot, and &lt;code&gt;replay&lt;/code&gt; for converting saved binary profiles to other output formats.&lt;/p&gt;</description>
    </item>
    <item>
      <title>py-spy: Sampling Profiler for Python</title>
      <link>https://pydevtools.com/handbook/reference/py-spy/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/py-spy/</guid>
      <description>&lt;p&gt;py-spy is a sampling profiler for Python programs. It visualizes where a Python process spends its time without restarting the process or modifying its code. py-spy runs in a separate process from the program it profiles and reads stack information out of the target&amp;rsquo;s memory, which keeps overhead low enough that the project documents it as safe to use against production workloads.&lt;/p&gt;
&lt;h2&gt;When to Use py-spy&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-py-spy&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-py-spy&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Use py-spy when a Python process is already running and needs to be profiled in place: a web worker under load, a data-pipeline job mid-run, a stuck process that needs a stack dump, or any CPU-bound script whose profile should not be distorted by per-function tracing overhead. py-spy is a practical default for production CPU profiling because it requires no instrumentation and can be attached and detached at will. For line-by-line attribution inside a known hot function, reach for &lt;a href=&#34;https://github.com/pyutils/line_profiler&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;line_profiler&lt;/a&gt;; for memory rather than CPU, reach for &lt;a href=&#34;https://github.com/bloomberg/memray&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;memray&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pyenv: Python Version Manager</title>
      <link>https://pydevtools.com/handbook/reference/pyenv/</link>
      <pubDate>Tue, 05 May 2026 06:54:22 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pyenv/</guid>
      <description>&lt;p&gt;pyenv is a command-line tool for installing, managing, and switching between multiple Python interpreter versions on macOS and Linux. It intercepts Python commands through shell shims, routing them to whichever interpreter version is active for the current directory, user, or system.&lt;/p&gt;
&lt;h2&gt;When to use pyenv&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-pyenv&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-pyenv&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;pyenv fits workflows where Python version management should remain separate from package management. It pairs with &lt;a href=&#34;https://pydevtools.com/handbook/reference/pip/&#34;&gt;pip&lt;/a&gt;, &lt;a href=&#34;https://pydevtools.com/handbook/reference/venv/&#34;&gt;venv&lt;/a&gt;, or any other packaging tool without imposing opinions on how dependencies are managed. If you want a single tool that also handles dependencies and virtual environments, &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; covers version management alongside those workflows.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pyenv-virtualenv: Python Virtual Environment Plugin</title>
      <link>https://pydevtools.com/handbook/reference/pyenv-virtualenv/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pyenv-virtualenv/</guid>
      <description>&lt;p&gt;pyenv-virtualenv is a plugin for &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyenv/&#34;&gt;pyenv&lt;/a&gt; that creates and manages &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-virtual-environment/&#34;&gt;virtual environments&lt;/a&gt; tied to specific Python versions. It extends pyenv with a &lt;code&gt;pyenv virtualenv&lt;/code&gt; command and hooks into shell initialization so the right environment activates whenever a directory&amp;rsquo;s &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-python-version-file/&#34;&gt;&lt;code&gt;.python-version&lt;/code&gt; file&lt;/a&gt; names it.&lt;/p&gt;
&lt;h2&gt;When to use pyenv-virtualenv&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-pyenv-virtualenv&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-pyenv-virtualenv&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;pyenv-virtualenv fits teams already running pyenv who want directory-scoped virtual environments without changing version managers. The plugin pairs with &lt;a href=&#34;https://pydevtools.com/handbook/reference/pip/&#34;&gt;pip&lt;/a&gt; or any other installer because it only handles environment creation and activation. Teams looking for a single tool that combines Python version management, virtual environments, lockfiles, and dependency resolution may prefer &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt;. For pyenv users moving to uv, see &lt;a href=&#34;https://pydevtools.com/handbook/how-to/how-to-switch-from-pyenv-to-uv-for-managing-python-versions/&#34;&gt;How to switch from pyenv to uv for managing Python versions&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PyInstaller</title>
      <link>https://pydevtools.com/handbook/reference/pyinstaller/</link>
      <pubDate>Wed, 22 Apr 2026 06:46:02 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pyinstaller/</guid>
      <description>&lt;p&gt;PyInstaller is a Python &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-python-application/&#34;&gt;application&lt;/a&gt; bundler that freezes a Python program, the CPython interpreter it was built against, and every imported dependency into a single distributable. The output runs on end-user machines without a pre-installed Python interpreter and without a &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-virtual-environment/&#34;&gt;virtual environment&lt;/a&gt;. PyInstaller supports CPython on macOS, Linux, and Windows; there is no iOS, Android, or tvOS target. Install it with &lt;code&gt;uv tool install pyinstaller&lt;/code&gt; or &lt;code&gt;pipx install pyinstaller&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Key Features&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;key-features&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#key-features&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;One-folder bundles via &lt;code&gt;--onedir&lt;/code&gt; and self-extracting single-file executables via &lt;code&gt;--onefile&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Hook system that declares hidden imports, data files, and runtime patches for third-party packages&lt;/li&gt;
&lt;li&gt;Community hook repository (&lt;code&gt;pyinstaller-hooks-contrib&lt;/code&gt;) installed alongside PyInstaller, covering packages such as NumPy, SciPy, PyQt, and Matplotlib&lt;/li&gt;
&lt;li&gt;Spec file workflow for declarative builds (&lt;code&gt;pyinstaller my.spec&lt;/code&gt;) in addition to CLI flags&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--exclude-module&lt;/code&gt; flag for trimming unused transitive dependencies out of a bundle&lt;/li&gt;
&lt;li&gt;Optional UPX compression for smaller executables&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Build Process&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;build-process&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#build-process&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A PyInstaller spec file orchestrates four stages: &lt;code&gt;Analysis&lt;/code&gt; walks the entry-point script&amp;rsquo;s imports to produce a dependency graph and applies hooks for packages that need special handling. &lt;code&gt;PYZ&lt;/code&gt; compiles pure-Python modules to bytecode and packs them into a ZlibArchive. &lt;code&gt;EXE&lt;/code&gt; concatenates the PYZ, extension modules, shared libraries, and data files (wrapped internally in a &lt;code&gt;PKG&lt;/code&gt; CArchive) onto a precompiled native bootloader and writes the executable. &lt;code&gt;COLLECT&lt;/code&gt; copies the executable plus any external dependencies into the output folder for one-folder builds; one-file builds skip &lt;code&gt;COLLECT&lt;/code&gt; and emit the self-extracting executable directly.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pylint: Python Static Code Analyzer</title>
      <link>https://pydevtools.com/handbook/reference/pylint/</link>
      <pubDate>Fri, 08 May 2026 03:18:58 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pylint/</guid>
      <description>&lt;p&gt;pylint is a static code analysis tool that identifies programming errors, coding standard violations, and potential bugs in Python code. It analyzes source code without running it to find issues from basic syntax errors to complex design problems.&lt;/p&gt;
&lt;h2&gt;When to use pylint&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-pylint&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-pylint&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pylint fits codebases that depend on its semantic checks, such as cyclomatic complexity, duplicate-code detection, and design-rule enforcement that go beyond what style-focused linters catch. Teams with an established &lt;code&gt;.pylintrc&lt;/code&gt; and CI pipelines tuned around its output keep a familiar tool backed by a long-running plugin ecosystem.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pyproject.toml: The Standard Python Project Configuration File</title>
      <link>https://pydevtools.com/handbook/reference/pyproject.toml/</link>
      <pubDate>Fri, 08 May 2026 03:19:33 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pyproject.toml/</guid>
      <description>&lt;p&gt;pyproject.toml is the standard configuration file for a Python project. It is written in &lt;a href=&#34;https://toml.io/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;TOML&lt;/a&gt; and lives in the project root. A single file captures three kinds of information that older Python projects scattered across &lt;code&gt;setup.py&lt;/code&gt;, &lt;code&gt;setup.cfg&lt;/code&gt;, &lt;code&gt;MANIFEST.in&lt;/code&gt;, &lt;code&gt;requirements.txt&lt;/code&gt;, &lt;code&gt;.flake8&lt;/code&gt;, &lt;code&gt;mypy.ini&lt;/code&gt;, &lt;code&gt;pytest.ini&lt;/code&gt;, and &lt;code&gt;tox.ini&lt;/code&gt;: project metadata, build-system requirements, and third-party tool configuration.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://peps.python.org/pep-0518/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;PEP 518&lt;/a&gt; introduced pyproject.toml in 2016 to declare build-system requirements in a tool-agnostic way. &lt;a href=&#34;https://peps.python.org/pep-0621/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;PEP 621&lt;/a&gt; extended it in 2020 with a standardized &lt;code&gt;[project]&lt;/code&gt; table for project metadata. Together, the two PEPs make pyproject.toml the canonical home for a Python project&amp;rsquo;s configuration.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pyrefly: Python Type Checker by Meta</title>
      <link>https://pydevtools.com/handbook/reference/pyrefly/</link>
      <pubDate>Fri, 08 May 2026 03:19:33 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pyrefly/</guid>
      <description>&lt;p&gt;Pyrefly is a static type checker and language server for Python, developed by Meta. It performs static analysis on Python code to identify type-related issues before runtime and provides IDE features like code navigation, autocompletion, and semantic highlighting.&lt;/p&gt;
&lt;p&gt;Pyrefly is a clean-slate implementation inspired by Meta&amp;rsquo;s earlier &lt;a href=&#34;https://pyre-check.org&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Pyre&lt;/a&gt; type checker. It uses a new type inference engine, a custom incremental computation model, and multi-threaded parallel checking.&lt;/p&gt;
&lt;h2&gt;When to use Pyrefly&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-pyrefly&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-pyrefly&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Pyrefly is worth evaluating for large Python codebases where &lt;a href=&#34;https://pydevtools.com/handbook/reference/mypy/&#34;&gt;mypy&lt;/a&gt; or &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyright/&#34;&gt;pyright&lt;/a&gt; feel slow and where aggressive type inference that catches errors in unannotated code is desirable. Its conformance score (90% of the typing spec test suite as of April 2026, per the &lt;a href=&#34;https://htmlpreview.github.io/?https://github.com/python/typing/blob/main/conformance/results/results.html&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Python typing conformance dashboard&lt;/a&gt;) is higher than &lt;a href=&#34;https://pydevtools.com/handbook/reference/mypy/&#34;&gt;mypy&lt;/a&gt; and &lt;a href=&#34;https://pydevtools.com/handbook/reference/ty/&#34;&gt;ty&lt;/a&gt;, though lower than &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyright/&#34;&gt;pyright&lt;/a&gt; and Zuban (another Rust-based checker).&lt;/p&gt;</description>
    </item>
    <item>
      <title>pyright: Python Static Type Checker by Microsoft</title>
      <link>https://pydevtools.com/handbook/reference/pyright/</link>
      <pubDate>Fri, 08 May 2026 03:19:33 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pyright/</guid>
      <description>&lt;p&gt;pyright is a static type checker and language server for Python, built and maintained by Microsoft. It analyzes type annotations to detect bugs before runtime and provides editor features like autocompletion, hover information, and go-to-definition.&lt;/p&gt;
&lt;p&gt;pyright powers the &lt;a href=&#34;https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Pylance extension&lt;/a&gt; for Visual Studio Code. Pylance is closed-source and adds features on top of pyright&amp;rsquo;s open-source language server, but pyright itself can be used with any editor that supports LSP.&lt;/p&gt;
&lt;h2&gt;When to use pyright&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-pyright&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-pyright&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;pyright is a strong choice for teams that want real-time type feedback in their editor, especially in VS Code through the Pylance extension. Its aggressive type inference catches bugs in unannotated code that &lt;a href=&#34;https://pydevtools.com/handbook/reference/mypy/&#34;&gt;mypy&lt;/a&gt; would skip by default.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pytest: Python Testing Framework</title>
      <link>https://pydevtools.com/handbook/reference/pytest/</link>
      <pubDate>Tue, 21 Apr 2026 11:05:10 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/pytest/</guid>
      <description>&lt;p&gt;pytest is a mature, feature-rich testing framework for Python that simplifies test writing and execution through a clear, concise syntax. Unlike Python&amp;rsquo;s built-in unittest module, pytest minimizes boilerplate and offers powerful fixture capabilities, parameterized testing, and a comprehensive plugin ecosystem.&lt;/p&gt;
&lt;p&gt;pytest is the standard choice for most Python testing, from small scripts to large applications. Its &lt;code&gt;assert&lt;/code&gt;-based syntax requires less code than unittest, and its fixture system scales well as projects grow. The main reasons to prefer unittest over pytest are maintaining a codebase already committed to unittest conventions or working in an environment where third-party packages are restricted.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python Packaging User Guide</title>
      <link>https://pydevtools.com/handbook/reference/python-packaging-user-guide/</link>
      <pubDate>Tue, 07 Apr 2026 14:40:41 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/python-packaging-user-guide/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://pydevtools.com/handbook/reference/python-packaging-user-guide/&#34;&gt;Python Packaging User Guide&lt;/a&gt; (PyPUG) is the official guide for packaging, publishing, and installing Python projects using the tools provided by the Python Packaging Authority.&lt;/p&gt;
&lt;p&gt;The guide documents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PyPA-maintained tools (pip, setuptools, &lt;a href=&#34;https://pydevtools.com/handbook/reference/wheel/&#34;&gt;wheel&lt;/a&gt;, &lt;a href=&#34;https://pydevtools.com/handbook/reference/virtualenv/&#34;&gt;virtualenv&lt;/a&gt;, etc.)&lt;/li&gt;
&lt;li&gt;Official Python packaging standards and specifications&lt;/li&gt;
&lt;li&gt;Core workflows using standard tooling&lt;/li&gt;
&lt;li&gt;Package index (PyPI) interaction&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;While comprehensive for PyPA tools, the guide does not:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cover all available Python packaging tools&lt;/li&gt;
&lt;li&gt;Require tools to follow its guidance&lt;/li&gt;
&lt;li&gt;Restrict innovation in packaging approaches&lt;/li&gt;
&lt;li&gt;Represent the only valid packaging methods&lt;/li&gt;
&lt;/ul&gt;</description>
    </item>
    <item>
      <title>requirements.txt: Python Dependency File Format</title>
      <link>https://pydevtools.com/handbook/reference/requirements/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/requirements/</guid>
      <description>&lt;p&gt;A plain-text file format for declaring Python package dependencies. Each line specifies a package and optional version constraint. The file is consumed by &lt;a href=&#34;https://pydevtools.com/handbook/reference/pip/&#34;&gt;pip&lt;/a&gt;, &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt;, and other installers, typically via &lt;code&gt;pip install -r requirements.txt&lt;/code&gt;. The filename is a convention, not a requirement — any text file works.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:flex-col hx:rounded-lg hx:border hx:py-4 hx:px-4 hx:border-gray-200 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;p class=&#34;hx:flex hx:items-center hx:font-medium&#34;&gt;&lt;svg height=16px class=&#34;hx:inline-block hx:align-middle hx:mr-2&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;Note&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruff: Python Linter and Formatter</title>
      <link>https://pydevtools.com/handbook/reference/ruff/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/ruff/</guid>
      <description>&lt;p&gt;Ruff is a fast Python linter and code formatter from &lt;a href=&#34;https://astral.sh/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Astral&lt;/a&gt; (the makers of &lt;a href=&#34;https://pydevtools.com/handbook/reference/uv/&#34;&gt;uv&lt;/a&gt; and &lt;a href=&#34;https://pydevtools.com/handbook/reference/ty/&#34;&gt;ty&lt;/a&gt;). It replaces multiple Python code quality tools (like flake8, &lt;a href=&#34;https://pydevtools.com/handbook/reference/black/&#34;&gt;Black&lt;/a&gt;, isort, and pyupgrade) with a single binary.&lt;/p&gt;
&lt;div class=&#34;hx:overflow-x-auto hx:mt-6 hx:flex hx:rounded-lg hx:border hx:py-2 hx:ltr:pr-4 hx:rtl:pl-4 hx:contrast-more:border-current hx:contrast-more:dark:border-current hx:border-blue-200 hx:bg-blue-100 hx:text-blue-900 hx:dark:border-blue-200/30 hx:dark:bg-blue-900/30 hx:dark:text-blue-200&#34;&gt;
  &lt;div class=&#34;hx:ltr:pl-3 hx:ltr:pr-2 hx:rtl:pr-3 hx:rtl:pl-2&#34;&gt;&lt;svg height=1.2em class=&#34;hx:inline-block hx:align-middle&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34; fill=&#34;none&#34; viewBox=&#34;0 0 24 24&#34; stroke-width=&#34;2&#34; stroke=&#34;currentColor&#34; aria-hidden=&#34;true&#34;&gt;&lt;path stroke-linecap=&#34;round&#34; stroke-linejoin=&#34;round&#34; d=&#34;M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z&#34;/&gt;&lt;/svg&gt;&lt;/div&gt;

  &lt;div class=&#34;hx:w-full hx:min-w-0 hx:leading-7&#34;&gt;
    &lt;div class=&#34;hx:mt-6 hx:leading-7 hx:first:mt-0&#34;&gt;Ruff includes over 1,000 built-in lint rules and can replace functionality from more than 20 different Python code quality tools.&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h2&gt;When to use Ruff&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;when-to-use-ruff&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#when-to-use-ruff&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Use Ruff when you want a single, fast tool for linting and formatting Python code instead of maintaining separate configurations for &lt;a href=&#34;https://pydevtools.com/handbook/reference/flake8/&#34;&gt;flake8&lt;/a&gt;, &lt;a href=&#34;https://pydevtools.com/handbook/reference/black/&#34;&gt;Black&lt;/a&gt;, isort, and other code quality tools. It is a strong default for any Python project, from small scripts to large monorepos, because it handles linting, formatting, and import sorting in one pass with minimal configuration. If you need deeper static analysis beyond what lint rules provide, pair Ruff with a type checker like &lt;a href=&#34;https://pydevtools.com/handbook/reference/mypy/&#34;&gt;mypy&lt;/a&gt; or &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyright/&#34;&gt;pyright&lt;/a&gt;; for a comparison with traditional linting, see &lt;a href=&#34;https://pydevtools.com/handbook/explanation/how-do-ruff-and-pylint-compare/&#34;&gt;How do Ruff and Pylint compare?&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>sdist: Python Source Distribution Format</title>
      <link>https://pydevtools.com/handbook/reference/sdist/</link>
      <pubDate>Tue, 28 Apr 2026 21:54:51 -0400</pubDate>
      <author>Tim Hopper</author>
      <guid>https://pydevtools.com/handbook/reference/sdist/</guid>
      <description>&lt;p&gt;An sdist (source distribution) is a compressed archive containing the source code, metadata, and build instructions for a &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-python-package/&#34;&gt;Python package&lt;/a&gt;. It is one of two standard distribution formats on &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-pypi/&#34;&gt;PyPI&lt;/a&gt;, the other being &lt;a href=&#34;https://pydevtools.com/handbook/reference/wheel/&#34;&gt;wheel&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;What an sdist Contains&lt;span class=&#34;hx:absolute hx:-mt-20&#34; id=&#34;what-an-sdist-contains&#34;&gt;&lt;/span&gt;
    &lt;a href=&#34;#what-an-sdist-contains&#34; class=&#34;subheading-anchor&#34; aria-label=&#34;Permalink for this section&#34;&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;An sdist is a &lt;code&gt;.tar.gz&lt;/code&gt; archive. Its contents include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The package&amp;rsquo;s Python source code&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;PKG-INFO&lt;/code&gt; file with package metadata (name, version, author, license, etc.)&lt;/li&gt;
&lt;li&gt;A &lt;a href=&#34;https://pydevtools.com/handbook/reference/pyproject.toml/&#34;&gt;pyproject.toml&lt;/a&gt; specifying the &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-build-backend/&#34;&gt;build backend&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Any non-Python files the build backend includes (C extensions, data files, templates)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The format is defined by the &lt;a href=&#34;https://packaging.python.org/en/latest/specifications/source-distribution-format/&#34;target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;source distribution specification&lt;/a&gt;, which standardized the layout so that any compliant &lt;a href=&#34;https://pydevtools.com/handbook/explanation/what-is-a-build-frontend/&#34;&gt;build frontend&lt;/a&gt; can process it.&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
