Skip to content

Python Target Configuration

To configure Python target, use [py] in genotype.toml.

This configuration reference lists all available Python configuration options.

See the Genotype Configuration for global settings and Common Target Options.

Set to true to generate Python. Defaults to false; see enable target.

[py]
enabled = true

version selects the Python syntax generation mode:

  • "latest" (default): Python 3.13 and later, using modern syntax such as type aliases.
  • "legacy": Python 3.8 and later, using older typing constructs and typing-extensions where needed.
[py]
enabled = true
version = "latest"

Overrides package generation for Python. Inherits the global setting when omitted; see target package generation.

Defaults to "py", relative to the global output directory. See target output directory.

manager selects the generated Python manifest format:

  • "poetry" (default): Poetry metadata under [tool.poetry].
  • "uv": Package metadata under [project].
[py]
enabled = true
version = "latest"
manager = "uv"

module sets the generated Python package’s importable module name. It defaults to "module":

[py]
enabled = true
version = "latest"
module = "bookstore_types"

With package generation enabled, source files go into this directory inside the target output directory, e.g., dist/py/bookstore_types.

Manifest options in [py.manifest] follow the pyproject.toml structure. The default package name uses kebab-case. The location of package name and version overrides depends on manager:

[py]
enabled = true
version = "latest"
manager = "poetry"
[py.manifest.tool.poetry]
name = "bookstore-types"
version = "0.2.0"
description = "Shared bookstore types"
[py.manifest.tool.poetry.dependencies]
bookstore-shared = "^1.0.0"

With uv, Genotype replaces project.dependencies with its detected runtime dependencies. Additional dependencies configured in that array aren’t preserved.

Values in dependencies are Python module import paths, which may differ from their distribution names:

[py]
enabled = true
version = "latest"
[py.dependencies]
shared_types = "bookstore_shared"

Adds formatters for Python; defaults to []. See target formatters for execution order and formatter configuration for commands and presets.