Releases: codellm-devkit/codeanalyzer-python
Releases · codellm-devkit/codeanalyzer-python
Release list
v0.1.10
Release Notes (from CHANGELOG.md)
Added
- Ray distributed processing support for parallel symbol table generation (addresses #16)
--ray/--no-rayCLI flag to enable/disable Ray-based distributed analysis--skip-tests/--include-testsCLI flag to control whether test files are analyzed (improves analysis performance)--file-nameCLI flag for single file analysis (addresses part of #16)- Incremental caching system with SHA256-based file change detection
- Automatic caching of analysis results to
analysis_cache.json - File-level caching with content hash validation to avoid re-analyzing unchanged files
- Significant performance improvements for subsequent analysis runs
- Cache reuse statistics logging
- Automatic caching of analysis results to
- Custom exception classes for better error handling in symbol table building:
SymbolTableBuilderException(base exception)SymbolTableBuilderFileNotFoundError(file not found errors)SymbolTableBuilderParsingError(parsing errors)SymbolTableBuilderRayError(Ray processing errors)
- Enhanced PyModule schema with metadata fields for caching:
last_modifiedtimestamp trackingcontent_hashfor precise change detection
- Progress bar support for both serial and parallel processing modes
- Enhanced test fixtures including xarray project for comprehensive testing
- Comprehensive
__init__.pyexports for syntactic analysis module - Smart dependency installation with conditional logic:
- Only installs requirements files when they exist (requirements.txt, requirements-dev.txt, dev-requirements.txt, test-requirements.txt)
- Only performs editable installation when package definition files are present (pyproject.toml, setup.py, setup.cfg)
- Improved virtual environment setup with better dependency detection and installation logic
Changed
- BREAKING CHANGE: Updated Python version requirement from
>=3.10to>=3.9for broader compatibility (closes #17) - BREAKING CHANGE: Updated dependency versions with more conservative constraints for better stability:
pydanticdowngraded from>=2.11.7to>=1.8.0,<2.0.0for stabilitypandasconstrained to>=1.3.0,<2.0.0numpyconstrained to>=1.21.0,<1.24.0richconstrained to>=12.6.0,<14.0.0typerconstrained to>=0.9.0,<1.0.0- Other dependencies updated with conservative version ranges for better compatibility
- Major Architecture Enhancement: Complete rewrite of analysis caching system
analyze()method now implements intelligent caching with PyApplication serialization- Symbol table building redesigned to support incremental updates and cache reuse
- File change detection using SHA256 content hashing for maximum accuracy
- Enhanced
Codeanalyzerconstructor signature to acceptfile_nameparameter for single file analysis - Refactored symbol table building from monolithic
build()method to cache-aware file-level processing - Enhanced
Codeanalyzerconstructor signature to acceptskip_testsandusing_rayparameters - Improved error handling with proper context managers in core analyzer
- Updated CLI to use Pydantic v1 compatible JSON serialization methods
- Reorganized syntactic analysis module structure with proper exception handling and exports
- Enhanced virtual environment detection with better fallback mechanisms
- Symbol table builder now sets metadata fields (
last_modified,content_hash) for all PyModule objects
Fixed
- Fixed critical symbol table bug for nested functions (closes #15)
- Corrected
_callables()method recursion logic to properly capture both outer and inner functions - Previously, only inner/nested functions were being captured in the symbol table
- Now correctly processes module-level functions, class methods, and all nested function definitions
- Corrected
- Fixed nested method/function signature generation in symbol table builder
- Corrected
_callables()method to properly build fully qualified signatures for nested structures - Fixed issue where nested functions and methods were getting incorrect signatures (e.g.,
main.__init__instead ofmain.outer_function.NestedClass.__init__) - Added
prefixparameter to_callables()and_add_class()methods to maintain proper nesting context - Signatures now correctly reflect the full nested hierarchy (e.g.,
main.outer_function.NestedClass.nested_class_method.method_nested_function) - Updated class method processing to pass class signature as prefix to nested callable processing
- Improved path relativization to project directory for cleaner signature generation
- Corrected
- Fixed Pydantic v2 compatibility issues by reverting to v1 API (
json()instead ofmodel_dump_json()) - Fixed missing import statements and type annotations throughout the codebase
- Fixed symbol table builder to support individual file processing for distributed execution
- Improved error handling in virtual environment detection and Python interpreter resolution
- Fixed schema type annotations to use proper string keys for better serialization
- Enhanced import ordering and removed unnecessary blank lines in CLI module
- Improved virtual environment setup reliability:
- Fixed unnecessary pip installs by adding conditional logic to only install when dependencies are available
- Only attempts to install requirements files if they actually exist in the project
- Only performs editable installation when package definition files are present
- Prevents errors and warnings from attempting to install non-existent dependencies
Technical Details
- Added Ray as a core dependency for distributed computing capabilities (addresses #16)
- Implemented
@ray.remotedecorator for parallel file processing - Comprehensive caching system implementation:
_load_pyapplication_from_cache()and_save_analysis_cache()methods for PyApplication serialization_file_unchanged()method with SHA256 content hash validation- Cache-aware symbol table building with selective file processing
- Automatic cache statistics and performance reporting
- Enhanced progress tracking for both serial and parallel execution modes with Rich progress bars
- Updated schema to use
Dict[str, PyModule]instead ofdict[Path, PyModule]for better serialization - Extended PyModule schema with optional
last_modifiedandcontent_hashfields for caching metadata - Added comprehensive exception hierarchy for better error classification and handling
- Refactored symbol table building into modular, file-level processing suitable for distribution
- Enhanced Python interpreter detection with support for multiple version managers (pyenv, conda, asdf)
- Added
hashlibintegration for file content hashing throughout the codebase - Enhanced virtual environment setup logic:
- Modified
_add_class()method to acceptprefixparameter and pass class signature to method processing - Updated
_callables()method signature to includeprefixparameter for nested context tracking - Enhanced signature building logic to use prefix when available, falling back to Jedi resolution for top-level definitions
- Fixed recursive calls to pass current signature as prefix for proper nesting hierarchy
- Implemented conditional dependency installation with existence checks for requirements files and package definition files
- Modified
Notes
- This release significantly addresses the performance improvements requested in #16:
- ✅ Ray parallelization implemented
- ✅ Incremental caching with SHA256-based change detection implemented
- ✅
--file-nameoption for single-file analysis implemented - ❌
--nprocoptions not yet included (still uses all available cores with Ray)
- ✅ Critical bug fix for nested function detection (#15) is now included in this version
- Expected performance improvements: 2-10x faster on subsequent runs depending on code change frequency
- Enhanced symbol table accuracy ensures all function definitions are properly captured
- Virtual environment setup is now more robust and only installs dependencies when they are actually available
Detailed Changes (auto-generated)
- no changes
v0.1.9
Release Notes (from CHANGELOG.md)
Fixed
- Fixed
AttributeError: 'OutputFormat' object has no attribute 'casefold'when using--formatflag with case-insensitive options - Changed
OutputFormatenum to inherit fromstrto support typer's case-insensitive string processing
Detailed Changes (auto-generated)
- no changes
v0.1.8
Release Notes (from CHANGELOG.md)
Added
- Added missing config module with OutputFormat enum for better code organization
- Added proper
__init__.pyandconfig.pyfiles to the config directory
Fixed
- Fixed missing config directory files that were not previously tracked in git
Detailed Changes (auto-generated)
- no changes
v0.1.7
Release Notes (from CHANGELOG.md)
Changed
- Relaxed Python version requirement from
==3.10.*to>=3.10for improved flexibility - Enhanced compatibility to support Python 3.10+ versions while maintaining backward compatibility
Detailed Changes (auto-generated)
- no changes
v0.1.6
Release Notes (from CHANGELOG.md)
Changed
- BREAKING CHANGE: Updated Python version requirement from
>=3.12to==3.10for improved backwards compatibility - Enhanced backwards compatibility by supporting Python 3.10 environments commonly used in enterprise and CI/CD systems
Fixed
- Fixed Python version compatibility issue that was unnecessarily blocking installation on Python 3.10 and 3.11 systems
- Resolved adoption barriers for users on older but still supported Python versions
Technical Notes
- All codebase features are fully compatible with Python 3.10 (ast.unparse, built-in generics, type hints)
- No Python 3.11+ or 3.12+ specific features are used in the implementation
- All dependencies support Python 3.10+
Detailed Changes (auto-generated)
🐛 Fixes
- Fix issue 13: Downgrade to python 3.10
- PR: #14
v0.1.5
Release Notes (from CHANGELOG.md)
Fixed
- Fixed
TypeErrorwhen callingBaseModel.model_dump_json()with unsupportedseparatorsargument (Issue #8) - Fixed ANSI color codes appearing in CLI test output despite
color=Falsesetting in CI/CD environments (Issue #9) - Replaced deprecated
astor.to_source()with built-inast.unparse()for better Python 3.12+ compatibility
Changed
- Updated JSON output formatting to use
indent=Nonefor compact output instead of unsupportedseparatorsparameter - Enhanced CLI test configuration to explicitly disable colors using environment variables (
NO_COLOR=1,TERM=dumb) - Improved test robustness for CI/CD environments, particularly GitHub Actions
- Updated test assertions to properly validate JSON output structure and content
Removed
- Removed
astordependency in favor of Python's built-inast.unparse()functionality
Added
- Comprehensive coverage configuration in
pyproject.tomlwith proper source mapping and exclusions - Enhanced test fixtures with improved project root path calculation
- Proper logging configuration for test environments
- Coverage reporting with HTML output and configurable thresholds
Detailed Changes (auto-generated)
🚀 Features
- Add compression for output file with gzip and MessagePack. Add inbuil…
- PR: #7
🐛 Fixes
v0.1.4
Release Notes - v0.1.4
🚀 New Features
Output Format Options with Ultra-Compression
Added a new --format flag that revolutionizes how analysis results are stored and transferred:
- Compact JSON: Default output now uses space-efficient formatting (70% of previous size)
- MessagePack + Gzip: New ultra-compressed binary format achieving 80-90% size reduction
bash# Compact JSON (default) codeanalyzer -i /path/to/project # Maximum compression codeanalyzer -i /path/to/project -o ./output --format msgpack
Real-World Impact
- Large codebases: 2.4MB JSON → 384KB MessagePack (84% reduction)
- CI/CD pipelines: Faster uploads/downloads and reduced storage costs
- Network transfer: Significant bandwidth savings for distributed workflows
🔧 Technical Improvements
Enhanced Serialization
- Type-safe format selection using Python enums
- Path object handling for cross-platform compatibility
- Round-trip data integrity ensuring no information loss
- Compression reporting shows exact size savings
Performance Optimizations
- Streaming serialization for memory efficiency
- Recursive type conversion handles complex nested structures
- Binary format support with automatic compression
📊 Compression Performance
Format | Size | Compression Ratio -- | -- | -- Pretty JSON | 2.4 MB | 100% (baseline) Compact JSON | 1.7 MB | 71% MessagePack + Gzip | 384 KB | 16%
🛠️ Dependencies
Added
msgpack>=1.0.0- Efficient binary serialization
Installation
bashpip install --upgrade codeanalyzer-python