All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
-
New Logging System: Added simple, practical logging utility with
STATQA_DEBUGenvironment variable supportstatqa.utils.logging.get_logger()for standardized logging across modules- Debug mode enabled with
STATQA_DEBUG=1for enhanced debugging - Structured logging in core analysis modules (univariate, bivariate)
- Computational provenance logging in analysis operations
-
Enhanced Type System: Comprehensive type hints using Python 3.12+ features
Finalannotations for enum constants and immutable valuesLiteraltypes for constrained parameters (providers, analysis types)Selftype annotations for better IDE support- Pattern matching (
match/case) replacing if/elif chains in parsers and enrichers
-
Structured Exception Hierarchy: New
statqa.exceptionsmodule with specific exception typesStatQAError,ParseError,ValidationError,AnalysisError,LLMError- Error codes dictionary for programmatic error handling
- Better error context and debugging information
-
Modern Type Definitions: Comprehensive TypedDict definitions in
statqa.typesUnivariateResult,BivariateResult,QAPairtypes- Enhanced type safety across analysis pipeline
- Better IDE autocomplete and static analysis
-
Dependency Management: Added
examplesoptional dependency group- Moved
tqdmto examples group (only used in example scripts) - Clean separation of core vs example dependencies
- Comprehensive
allinstallation option
- Moved
-
Toolchain Simplification: Removed mypy static type checker
- Eliminated complex mypy configuration and CI overhead
- Preserved type hints for IDE support and documentation
- Simplified development workflow while maintaining type safety
- Removed TCH (type checking) rules from ruff configuration
-
Development Status: Promoted from Alpha to Beta
- Indicates increased stability and feature completeness
- API stabilization for core analysis functionality
- Production readiness for basic workflows
-
Code Modernization: Updated codebase to leverage Python 3.12+ features
- Pattern matching in
enricher.pyfor provider selection - Enhanced error handling with structured exceptions
- Improved type hints throughout codebase
- Pattern matching in
-
Debug Experience: Enhanced debugging capabilities across the framework
- Debug logging in core analysis modules
- Computational step tracking for reproducibility
- Environment-based debug control without complexity
-
Code Quality: Comprehensive linting and formatting improvements
- All ruff checks pass with zero issues
- Cleaned up dependency management with deptry
- Consistent code formatting and import organization
-
Example Scripts: Updated example scripts to use structured logging
- Replaced print statements with proper logging calls
- Consistent logging patterns across all examples
- Better debugging experience for users learning the framework
-
Dependency Issues: Resolved all dependency validation problems
- Fixed DEP002 violations by moving non-core dependencies to optional groups
- Configured deptry to properly handle optional dependencies
- Clean dependency separation between core, examples, and development needs
-
Import Issues: Fixed Python 3.12+ compatibility
- Added
from __future__ import annotationswhere needed - Resolved pandas type subscripting errors
- Enhanced compatibility across Python 3.12-3.14
- Added
This release focuses on developer experience and code modernization without breaking existing APIs. Key technical improvements include:
- Logging Architecture: Simple, non-intrusive logging that respects the principle of not over-engineering
- Type Safety: Enhanced without the complexity overhead of mypy
- Modern Python: Leverages Python 3.12+ features for better performance and developer experience
- Dependency Hygiene: Clean separation of concerns in package dependencies
- For Users: No breaking changes - all existing code continues to work
- For Contributors:
- No more mypy checks - ruff handles all linting
- Use
STATQA_DEBUG=1for enhanced debugging - Optional dependencies now properly organized by use case
- Core statistical analysis framework
- Q/A generation with provenance tracking
- Multimodal visualization support
- LLM-powered metadata enrichment
Full Changelog: https://github.com/gojiplus/statqa/compare/v0.2.0...v0.3.0