--- title: "Python Configuration" description: "Configure Codeflash for Python projects using pyproject.toml" icon: "python" sidebarTitle: "Python (pyproject.toml)" keywords: [ "configuration", "pyproject.toml", "python", "pytest", "formatter", "ruff", "black", ] --- # Python Configuration Codeflash stores its configuration in `pyproject.toml` under the `[tool.codeflash]` section. ## Full Reference ```toml [tool.codeflash] # Required module-root = "my_module" tests-root = "tests" # Optional formatter-cmds = ["black $file"] benchmarks-root = "tests/benchmarks" ignore-paths = ["my_module/build/"] pytest-cmd = "pytest" disable-imports-sorting = false disable-telemetry = false git-remote = "origin" override-fixtures = false ``` All file paths are relative to the directory of the `pyproject.toml` file. ## Required Options - `module-root`: The Python module to optimize. Only code under this directory will be optimized. It should have an `__init__.py` file to make the module importable. - `tests-root`: The directory where your tests are located. Codeflash discovers existing tests and generates new ones here. ## Optional Options - `benchmarks-root`: Directory for benchmarks. Required when running with `--benchmark`. - `ignore-paths`: Paths within `module-root` to skip. Useful for build directories or generated code. - `pytest-cmd`: Command to run your tests. Defaults to `pytest`. You can add extra arguments here. - `formatter-cmds`: Formatter/linter commands. `$file` refers to the file being optimized. Disable with `["disabled"]`. - **ruff** (recommended): `["ruff check --exit-zero --fix $file", "ruff format $file"]` - **black**: `["black $file"]` - `disable-imports-sorting`: Disable isort import sorting. Defaults to `false`. - `disable-telemetry`: Disable anonymized telemetry. Defaults to `false`. - `git-remote`: Git remote for pull requests. Defaults to `"origin"`. - `override-fixtures`: Override pytest fixtures during optimization. Defaults to `false`. ## Example ```text acme-project/ |- foo_module/ | |- __init__.py | |- foo.py | |- main.py |- tests/ | |- __init__.py | |- test_script.py |- pyproject.toml ``` ```toml [tool.codeflash] module-root = "foo_module" tests-root = "tests" ignore-paths = [] ```