Config Module
The config module provides functionality for managing configuration settings in promptprep.
Module Overview
The config module provides functionality for:
Loading configuration from files
Saving configuration to files
Managing default configuration settings
Converting between different configuration formats
Key Functions
load_config
- promptprep.config.load_config(config_file=None)
Load configuration from a file.
- Parameters:
config_file (str) – Path to the configuration file (default: None, which uses the default location)
- Returns:
Loaded configuration as a dictionary
- Return type:
- Raises:
FileNotFoundError – If the configuration file doesn’t exist
save_config
get_default_config_path
get_default_config
merge_configs
- promptprep.config.merge_configs(base_config, override_config)
Merge two configuration dictionaries, with override_config taking precedence.
validate_config
- promptprep.config.validate_config(config)
Validate a configuration dictionary.
- Parameters:
config (dict) – Configuration dictionary to validate
- Returns:
Validated configuration dictionary
- Return type:
- Raises:
ValueError – If the configuration is invalid
normalize_config
config_to_args
args_to_config
- promptprep.config.args_to_config(args)
Convert command-line arguments to a configuration dictionary.
- Parameters:
args (argparse.Namespace) – Command-line arguments
- Returns:
Configuration dictionary
- Return type:
Configuration File Format
The configuration file is a JSON file with the following structure:
{
"directory": "./my_project",
"output_file": "output.md",
"format": "markdown",
"exclude_dirs": ["node_modules", "venv", "__pycache__"],
"extensions": [".py", ".js", ".md"],
"include_comments": true,
"metadata": true,
"count_tokens": true,
"token_model": "cl100k_base",
"line_numbers": false,
"summary_mode": false,
"max_file_size": 100.0
}
All fields are optional and will use default values if not specified.
Default Configuration Location
The default location for the configuration file is:
On Windows:
C:\\Users\\<username>\\.promptprep\\config.jsonOn macOS/Linux:
/home/<username>/.promptprep/config.json
Usage Examples
Basic Usage
from promptprep.config import load_config, save_config
# Load configuration
config = load_config()
# Modify configuration
config['format'] = 'markdown'
config['exclude_dirs'] = ['node_modules', 'venv']
# Save configuration
save_config(config)
Custom Configuration File
from promptprep.config import load_config, save_config
# Load from custom file
config = load_config('my_config.json')
# Save to custom file
save_config(config, 'new_config.json')
Default Configuration
from promptprep.config import get_default_config, get_default_config_path
# Get default configuration
default_config = get_default_config()
print(f"Default configuration: {default_config}")
# Get default configuration path
config_path = get_default_config_path()
print(f"Default configuration path: {config_path}")
Merging Configurations
from promptprep.config import get_default_config, merge_configs
# Get default configuration
default_config = get_default_config()
# Create custom overrides
custom_config = {
'format': 'markdown',
'exclude_dirs': ['node_modules', 'venv']
}
# Merge configurations
merged_config = merge_configs(default_config, custom_config)
print(f"Merged configuration: {merged_config}")
Converting Between Formats
from promptprep.config import args_to_config, config_to_args
import argparse
# Create argument parser
parser = argparse.ArgumentParser()
parser.add_argument('--format', default='plain')
parser.add_argument('--directory', '-d', default='.')
# Parse arguments
args = parser.parse_args(['--format', 'markdown', '-d', './my_project'])
# Convert arguments to configuration
config = args_to_config(args)
print(f"Configuration from args: {config}")
# Convert configuration to arguments
arg_list = config_to_args(config)
print(f"Arguments from config: {arg_list}")
Validating Configuration
from promptprep.config import validate_config, normalize_config
# Create a configuration
config = {
'format': 'markdown',
'exclude_dirs': 'node_modules,venv', # String instead of list
'max_file_size': '10' # String instead of float
}
# Normalize configuration
normalized_config = normalize_config(config)
print(f"Normalized configuration: {normalized_config}")
# Validate configuration
try:
validated_config = validate_config(normalized_config)
print(f"Validated configuration: {validated_config}")
except ValueError as e:
print(f"Invalid configuration: {e}")
Creating a New Configuration
from promptprep.config import get_default_config, save_config
# Start with default configuration
config = get_default_config()
# Customize for a specific project
config.update({
'directory': './my_project',
'format': 'markdown',
'exclude_dirs': ['node_modules', 'venv', '__pycache__'],
'extensions': ['.py', '.js', '.md'],
'metadata': True,
'count_tokens': True
})
# Save as a project-specific configuration
save_config(config, 'my_project_config.json')