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:

dict

Raises:

FileNotFoundError – If the configuration file doesn’t exist

save_config

promptprep.config.save_config(config, config_file=None)

Save configuration to a file.

Parameters:
  • config (dict) – Configuration dictionary to save

  • config_file (str) – Path to the configuration file (default: None, which uses the default location)

Returns:

None

get_default_config_path

promptprep.config.get_default_config_path()

Get the default path for the configuration file.

Returns:

Default configuration file path

Return type:

str

get_default_config

promptprep.config.get_default_config()

Get the default configuration settings.

Returns:

Default configuration as a dictionary

Return type:

dict

merge_configs

promptprep.config.merge_configs(base_config, override_config)

Merge two configuration dictionaries, with override_config taking precedence.

Parameters:
  • base_config (dict) – Base configuration dictionary

  • override_config (dict) – Configuration dictionary to override base settings

Returns:

Merged configuration dictionary

Return type:

dict

validate_config

promptprep.config.validate_config(config)

Validate a configuration dictionary.

Parameters:

config (dict) – Configuration dictionary to validate

Returns:

Validated configuration dictionary

Return type:

dict

Raises:

ValueError – If the configuration is invalid

normalize_config

promptprep.config.normalize_config(config)

Normalize a configuration dictionary (convert types, handle special cases).

Parameters:

config (dict) – Configuration dictionary to normalize

Returns:

Normalized configuration dictionary

Return type:

dict

config_to_args

promptprep.config.config_to_args(config)

Convert a configuration dictionary to command-line arguments.

Parameters:

config (dict) – Configuration dictionary

Returns:

List of command-line arguments

Return type:

list

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:

dict

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.json

  • On 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')