Reference Documentation๏
Technical specifications and complete API documentation
This reference provides detailed technical information about FailExtractโs APIs, configuration options, and technical specifications. Use this section when you need precise details about classes, methods, parameters, and behavior.
- API Reference
- Main Module
CodeContextExtractorFixtureExtractorFailureExtractorOutputConfigOutputFormatOutputFormatterJSONFormatterextract_on_failure()extract_failure_info()extract_function_source()save_single_failure()save_failure_report()save_with_config()generate_session_report()get_available_features()suggest_installation()__getattr__()
- Core Classes
- Decorators and Functions
- Enums and Types
- Formatter Classes
- Configuration Classes
- CLI Module
- Exception Classes
- Constants and Settings
- Feature Detection
- Utilities and Helpers
- Examples
- Error Handling
- Migration Notes
- See Also
- Main Module
Quick Reference๏
Core Classes
FailureExtractor- Main singleton for managing failure dataOutputConfig- Configuration for report generation@extract_on_failure- Primary decorator for failure capture
Output Formats
json- Machine-readable JSON (always available)markdown- Human-readable Markdown (always available)xml- Structured XML data (always available)csv- Tabular CSV data (always available)yaml- YAML format (requirespip install failextract[formatters])
Configuration Options
Parameter |
Default |
Description |
|---|---|---|
|
|
Capture local variables in failure context |
|
|
Capture pytest fixture values |
|
|
Maximum depth for variable inspection |
|
|
Skip standard library stack frames |
|
|
Extract class instance details |
|
|
Enhanced context analysis (experimental) |
|
|
Lines of code context around failure point |
Memory Management
Parameter |
Default |
Description |
|---|---|---|
|
|
Maximum number of failures to store |
|
|
Maximum number of passed tests to track |
Environment Variables
Variable |
Purpose |
|---|---|
|
Detects CI/CD environment for performance optimization |
|
Detects pytest execution context |
|
Override performance mode ( |
Common Patterns๏
Basic Usage Pattern
from failextract import extract_on_failure, FailureExtractor, OutputConfig
@extract_on_failure
def test_function():
# Test code that might fail
pass
# Generate report
extractor = FailureExtractor()
config = OutputConfig("output.json", format="json")
extractor.save_report(config)
Environment-Aware Configuration
import os
from failextract import extract_on_failure
# Configure based on environment
is_ci = os.getenv("CI") == "true"
config = {
"include_locals": True,
"max_depth": 8 if is_ci else 15,
"skip_stdlib": is_ci
}
@extract_on_failure(**config)
def test_with_env_config():
pass
Memory Management Pattern
from failextract import FailureExtractor
extractor = FailureExtractor()
# Set appropriate limits
extractor.set_memory_limits(
max_failures=500, # For CI environments
max_passed=100
)
# Monitor usage
stats = extractor.get_stats()
if stats['failures_at_limit']:
# Handle memory limit reached
pass
Error Handling Pattern
from failextract import OutputConfig, FailureExtractor
def safe_report_generation():
extractor = FailureExtractor()
# Try preferred format, fall back to JSON
try:
config = OutputConfig("report.yaml", format="yaml")
extractor.save_report(config)
except ImportError:
config = OutputConfig("report.json", format="json")
extractor.save_report(config)
Exit Codes and Return Values๏
CLI Exit Codes
0- Success1- General error (invalid arguments, file errors)2- No data available for operation3- Permission/access errors
Exception Hierarchy
ConfigurationError- Invalid configuration parametersIntegrationError- Errors during integration with external systems
Version Compatibility๏
Python Version Support
Minimum: Python 3.11
Recommended: Python 3.11+
Tested: Python 3.11, 3.12, 3.13
Dependencies
Core (required) - None - FailExtractโs core uses only Python standard library
Optional extras
- pyyaml>=6.0 - For YAML formatter (pip install failextract[formatters])
- tomli>=1.2.0 - For TOML config support on Python < 3.11 (pip install failextract[config])
- rich>=13.0 - For enhanced CLI (pip install failextract[cli])
- typer>=0.9 - For advanced CLI features (pip install failextract[cli])
Performance Characteristics๏
Overhead by Mode
Mode |
Overhead |
Use Case |
Configuration |
|---|---|---|---|
Static |
<5% |
Production |
|
Profile |
~50% |
CI/CD |
|
Trace |
~300% |
Development |
|
Memory Usage
Per failure: ~2-10 KB depending on context captured
Per passed test: ~0.5-1 KB if tracked
Default limits: 1000 failures + 500 passed tests โ 2.5-10.5 MB
Technical Specifications๏
Data Formats
Failure Data Structure
{
"test_name": str, # Test function name
"test_module": str, # Module containing test
"test_file": str, # File path
"exception_type": str, # Exception class name
"exception_message": str, # Exception message
"timestamp": str, # ISO format timestamp
"local_variables": dict, # Local variables (optional)
"test_source": str, # Source code (optional)
"exception_traceback": str # Stack trace (optional)
}
Passed Test Data Structure
{
"test_name": str, # Test function name
"test_module": str, # Module containing test
"timestamp": str, # ISO format timestamp
"duration": float # Execution time (optional)
}
Thread Safety
FailureExtractorsingleton is thread-safeReport generation is thread-safe
Decorator application is thread-safe
File Format Specifications
Format |
MIME Type |
Specification |
|---|---|---|
JSON |
|
RFC 7159 compliant JSON |
XML |
|
Well-formed XML with UTF-8 encoding |
CSV |
|
RFC 4180 compliant CSV |
Markdown |
|
CommonMark specification |
YAML |
|
YAML 1.2 specification |
Migration Guides๏
Upgrading to Version 2.x
Major changes from 1.x:
FailureExtractoris now a singleton (automatically managed)Optional features moved to separate installation extras
CLI functionality requires
[cli]extraYAML formatter requires
[formatters]extra
Backward Compatibility
All core APIs remain unchanged
Configuration parameters unchanged
Report formats unchanged
Decorator interface unchanged
See Also๏
Tutorials - Learn FailExtract step-by-step
How-To Guides - Solve specific problems
Discussions - Understand design decisions