CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-configparser

Updated configparser from stdlib for earlier Pythons with enhanced configuration file parsing capabilities.

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

file-operations.mddocs/

File Operations

Methods for reading configuration data from various sources (files, strings, dictionaries) and writing configuration data back to files. These operations form the core I/O capabilities of the configparser library.

Capabilities

Reading from Files

Load configuration data from one or more files, with support for encoding specification and error handling.

def read(filenames, encoding=None):
    """
    Read and parse configuration files.
    
    Parameters:
    - filenames: str or iterable of str, file paths to read
    - encoding: str, text encoding (defaults to locale default)
    
    Returns:
    list of str: successfully read file names
    
    Notes:
    - Non-existent files are silently ignored
    - Later files override earlier ones for duplicate options
    """

def read_file(f, source=None):
    """
    Read configuration from a file-like object.
    
    Parameters:
    - f: file-like object, must have readline() method
    - source: str, name for error messages (defaults to f.name)
    
    Returns:
    None
    
    Raises:
    - ParsingError: if file cannot be parsed
    """

Reading from Strings and Dictionaries

Load configuration data from string literals or dictionary objects, useful for programmatic configuration.

def read_string(string, source='<string>'):
    """
    Read configuration from a string.
    
    Parameters:
    - string: str, configuration data in INI format
    - source: str, name for error messages
    
    Returns:
    None
    
    Raises:
    - ParsingError: if string cannot be parsed
    """

def read_dict(dictionary, source='<dict>'):
    """
    Read configuration from a dictionary.
    
    Parameters:
    - dictionary: dict, nested dictionary {section: {option: value}}
    - source: str, name for error messages
    
    Returns:
    None
    
    Notes:
    - Dictionary keys become section names
    - Nested dictionary values become options
    - All keys and values are converted to strings
    """

Writing Configuration

Save configuration data to files in standard INI format.

def write(fp, space_around_delimiters=True):
    """
    Write configuration to a file-like object.
    
    Parameters:
    - fp: file-like object, must have write() method
    - space_around_delimiters: bool, add spaces around '=' in output
    
    Returns:
    None
    
    Notes:
    - Writes in standard INI format
    - DEFAULT section is written first if present
    - Comments and original formatting are not preserved
    """

Usage Examples

Reading from Multiple Files

from backports import configparser

config = configparser.ConfigParser()

# Read from multiple files (later files override earlier ones)
files_read = config.read(['default.ini', 'user.ini', 'local.ini'])
print(f"Successfully read: {files_read}")

# Read with explicit encoding
config.read('config.ini', encoding='utf-8')

Reading from File Objects

from backports import configparser
import io

config = configparser.ConfigParser()

# Read from file object
with open('config.ini', 'r', encoding='utf-8') as f:
    config.read_file(f)

# Read from StringIO
config_data = """
[section1]
option1 = value1
option2 = value2
"""
config.read_file(io.StringIO(config_data), source='memory')

Reading from Strings

from backports import configparser

config = configparser.ConfigParser()

# Read configuration from string
config_string = '''
[database]
host = localhost
port = 5432
name = myapp

[cache]
enabled = true
timeout = 300
'''

config.read_string(config_string)

Reading from Dictionaries

from backports import configparser

config = configparser.ConfigParser()

# Read from dictionary
config_dict = {
    'database': {
        'host': 'localhost',
        'port': '5432',
        'name': 'myapp'
    },
    'cache': {
        'enabled': 'true',
        'timeout': '300'
    }
}

config.read_dict(config_dict)

Writing Configuration

from backports import configparser

config = configparser.ConfigParser()
config.add_section('database')
config.set('database', 'host', 'localhost')
config.set('database', 'port', '5432')

# Write to file
with open('output.ini', 'w') as f:
    config.write(f)

# Write to string
import io
output = io.StringIO()
config.write(output, space_around_delimiters=False)
config_string = output.getvalue()

Error Handling

from backports import configparser

config = configparser.ConfigParser()

try:
    config.read('nonexistent.ini')  # Silently ignores missing files
    config.read_string('invalid [section without closing bracket')
except configparser.ParsingError as e:
    print(f"Parsing error: {e}")
    for filename, lineno, line in e.errors:
        print(f"File: {filename}, Line {lineno}: {line}")

Install with Tessl CLI

npx tessl i tessl/pypi-configparser

docs

exception-handling.md

file-operations.md

index.md

interpolation.md

option-access.md

parser-classes.md

section-management.md

tile.json