CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-docformatter

Formats docstrings to follow PEP 257 conventions with support for various docstring styles and Black formatter compatibility

Pending
Overview
Eval results
Files

configuration.mddocs/

Configuration Management

Configuration handling for command-line arguments and configuration files, supporting multiple configuration sources including pyproject.toml, setup.cfg, and tox.ini files.

Capabilities

Configurater Class

The main configuration management class that handles command-line argument parsing and configuration file reading.

class Configurater:
    """Read and store all docformatter configuration information."""
    
    # Class attributes
    parser: argparse.ArgumentParser  # Argument parser instance
    flargs_dct: Dict[str, Union[bool, float, int, str]]  # Configuration file arguments
    configuration_file_lst: List[str]  # Supported configuration files
    args: argparse.Namespace  # Parsed arguments
    
    def __init__(self, args: List[Union[bool, int, str]]) -> None:
        """
        Initialize configuration manager.
        
        Args:
            args: List of command-line arguments to parse
        """
    
    def do_parse_arguments(self) -> None:
        """
        Parse command-line arguments and read configuration files.
        
        Combines arguments from command-line and configuration files,
        with command-line arguments taking precedence.
        """

Configuration File Support

# Supported configuration files (in order of precedence)
configuration_file_lst = [
    "pyproject.toml",    # Primary configuration file (TOML format)
    "setup.cfg",         # Legacy setuptools configuration
    "tox.ini",          # Tox configuration file
]

Internal Configuration Methods

def _do_read_configuration_file(self) -> None:
    """
    Read configuration from supported configuration files.
    
    Searches for configuration files in current directory and reads
    docformatter section from the first found file.
    """

def _do_read_toml_configuration(self) -> None:
    """
    Read TOML configuration from pyproject.toml.
    
    Uses tomllib (Python >=3.11) or tomli (Python <3.11) to parse
    [tool.docformatter] section.
    """

def _do_read_parser_configuration(self) -> None:
    """
    Read parser-style configuration from setup.cfg or tox.ini.
    
    Parses [docformatter] section using ConfigParser.
    """

Command-Line Arguments

File Processing Options

# File input/output control
--in-place, -i          # Modify files in place instead of printing diffs
--check, -c             # Only check formatting, don't modify files
--diff, -d              # Show diffs when used with --check or --in-place
--recursive, -r         # Process directories recursively
--exclude PATTERNS      # Exclude files/directories by name patterns
files                   # Files to format or '-' for standard input

Format Control Options

# Docstring formatting control
--black                     # Black formatter compatibility mode
--wrap-summaries LENGTH     # Wrap summary lines at LENGTH (default: 79, 88 with --black)
--wrap-descriptions LENGTH  # Wrap description lines at LENGTH (default: 72, 88 with --black)
--force-wrap               # Force wrapping even if messy
--tab-width WIDTH          # Tab width for indentation (default: 1)
--make-summary-multi-line  # Convert single-line to multi-line docstrings
--close-quotes-on-newline  # Place closing quotes on new line when wrapping

Content Control Options

# Docstring content control
--blank                    # Add blank line after description
--pre-summary-newline     # Add newline before summary in multi-line docstrings
--pre-summary-space       # Add space after opening triple quotes
--non-cap WORDS           # Words not to capitalize when first in summary
--style STYLE             # Docstring style: 'sphinx' (default) or 'epytext'
--non-strict              # Don't strictly follow reST syntax for lists

Processing Control Options

# Processing range and filtering
--range START END              # Process docstrings between line numbers
--docstring-length MIN MAX     # Process docstrings within length range
--rest-section-adorns REGEX    # Regex for reST section adornments
--config CONFIG               # Path to configuration file

Information Options

--help, -h     # Show help message
--version      # Show version number

Configuration Files

pyproject.toml Configuration

[tool.docformatter]
black = true
wrap-summaries = 88
wrap-descriptions = 88
make-summary-multi-line = false
close-quotes-on-newline = false
force-wrap = false
tab-width = 4
blank = false
pre-summary-newline = false
pre-summary-space = false
non-strict = false
style = "sphinx"
non-cap = ["docformatter", "API"]
exclude = ["tests/", "build/"]

setup.cfg Configuration

[docformatter]
black = True
wrap-summaries = 88
wrap-descriptions = 88
make-summary-multi-line = False
force-wrap = False
tab-width = 4
blank = False
pre-summary-newline = False
pre-summary-space = False
non-strict = False
style = sphinx
non-cap = docformatter,API
exclude = tests/,build/

tox.ini Configuration

[docformatter]
black = True
wrap-summaries = 88
wrap-descriptions = 88
make-summary-multi-line = False
force-wrap = False
tab-width = 4
blank = False
pre-summary-newline = False
pre-summary-space = False
non-strict = False
style = sphinx
non-cap = docformatter,API
exclude = tests/,build/

Usage Examples

Basic Configuration Setup

from docformatter import Configurater

# Simple file formatting
args = ['--in-place', 'example.py']
configurator = Configurater(args)
configurator.do_parse_arguments()

# Access parsed arguments
print(f"In-place mode: {configurator.args.in_place}")
print(f"Files to format: {configurator.args.files}")

Configuration with Multiple Options

from docformatter import Configurater

# Complex configuration
args = [
    '--black',
    '--recursive',
    '--wrap-summaries', '88',
    '--wrap-descriptions', '88',
    '--exclude', 'tests/', 'build/',
    '--non-cap', 'API', 'JSON',
    '--in-place',
    'src/'
]

configurator = Configurater(args)
configurator.do_parse_arguments()

# Check configuration values
print(f"Black mode: {configurator.args.black}")
print(f"Summary wrap: {configurator.args.wrap_summaries}")
print(f"Excluded patterns: {configurator.args.exclude}")
print(f"Non-capitalized words: {configurator.args.non_cap}")

Configuration File Integration

import os
from docformatter import Configurater

# Change to directory with pyproject.toml
os.chdir('project_root')

# Configuration will be read from pyproject.toml
args = ['--in-place', 'src/']
configurator = Configurater(args)
configurator.do_parse_arguments()

# Configuration combines file settings with command-line args
# Command-line arguments override file settings

Check Mode Configuration

from docformatter import Configurater

# CI/CD check configuration
args = [
    '--check',
    '--diff',
    '--recursive',
    '.'
]

configurator = Configurater(args)
configurator.do_parse_arguments()

# Verify check mode settings
assert configurator.args.check is True
assert configurator.args.diff is True
assert configurator.args.in_place is False

Configuration Precedence

Configuration values are resolved in the following order (highest to lowest precedence):

  1. Command-line arguments - Direct CLI arguments
  2. Configuration file - First found configuration file
  3. Default values - Built-in default values

Example Configuration Resolution

# If pyproject.toml contains:
# [tool.docformatter]
# wrap-summaries = 72
# black = false

# And command-line is:
args = ['--black', '--wrap-descriptions', '88', 'file.py']

# Final configuration will be:
# wrap-summaries = 72    (from config file)
# wrap-descriptions = 88 (from command-line)
# black = True           (from command-line, overrides file)

Error Handling

The Configurater handles various configuration errors:

  • Invalid Arguments: Clear error messages for unknown options
  • File Not Found: Graceful handling when specified config file doesn't exist
  • Parse Errors: Detailed error messages for malformed configuration files
  • Type Conversion: Automatic conversion of string values to appropriate types
  • Validation: Range checking for numeric parameters

Configuration Validation

from docformatter import Configurater

# Invalid wrap length
args = ['--wrap-summaries', '-1', 'file.py']
try:
    configurator = Configurater(args)
    configurator.do_parse_arguments()
except SystemExit:
    print("Invalid wrap length detected")

# Missing required file argument
args = ['--in-place']
try:
    configurator = Configurater(args)
    configurator.do_parse_arguments()
except SystemExit:
    print("Missing file argument")

Install with Tessl CLI

npx tessl i tessl/pypi-docformatter

docs

configuration.md

core-formatting.md

file-io.md

index.md

string-processing.md

syntax-analysis.md

tile.json