Changelog¶
All notable changes to ArchiPy are documented in this changelog, organized by version.
[3.11.1] - 2025-09-06¶
Added¶
Temporal Worker Management Enhancement¶
- Wait Until Stopped Method - Added
wait_until_stopped()
method to Temporal WorkerHandle class- Enhanced worker lifecycle management with ability to wait for worker completion
- Improved synchronization capabilities for worker shutdown scenarios
- Better control over worker background task lifecycle in long-running applications
- Enhanced debugging and monitoring capabilities for Temporal worker operations
Changed¶
CI/CD Infrastructure¶
- GitHub Actions Updates - Updated Python setup action across all workflows for improved CI/CD reliability
- Updated actions/setup-python from version 5 to 6 in all GitHub Actions workflows
- Enhanced Python environment setup with latest action features and security improvements
- Improved workflow performance and compatibility with latest GitHub Actions infrastructure
- Updated workflows: deploy-docs.yml, lint.yml, publish.yml, and tests.yml
Documentation¶
- Documentation Build Fixes - Resolved documentation generation and deployment issues
- Fixed documentation builds for improved reliability and consistency
- Enhanced documentation index organization and navigation
- Improved documentation deployment pipeline stability
[3.11.0] - 2025-09-04¶
Added¶
Temporal Workflow Orchestration¶
- Comprehensive Temporal Integration - Added complete Temporal workflow orchestration support
- Full Temporal integration with atomic transaction support for activities
- Comprehensive configuration management for Temporal workflow execution
- Clean architecture separation between workflow orchestration and activity execution
- Support for distributed workflow patterns with reliable activity execution
- Enhanced error handling and transaction management for Temporal workflows
Changed¶
Documentation Assets¶
- Logo Path Update - Updated logo path reference for improved asset management
- Enhanced documentation asset organization
- Improved logo accessibility and display consistency
[3.10.0] - 2025-09-04¶
Added¶
gRPC Interceptor Enhancements¶
- Sentry Support in gRPC Trace Interceptors - Enhanced gRPC trace interceptors with dual APM support
- Added Sentry span creation for both sync and async gRPC client interceptors
- Added Sentry transaction creation for both sync and async gRPC server interceptors
- Maintained backward compatibility with existing Elastic APM functionality
- Support for simultaneous Elastic APM and Sentry tracing in gRPC services
- Proper error handling and span status management for both APM systems
- Configuration-driven tracing with graceful degradation when APM systems are unavailable
[3.9.0] - 2025-09-04¶
Added¶
Tracing Decorators¶
- Pure Python APM Tracing - Added
@capture_transaction
and@capture_span
decorators for pure Python applications@capture_transaction
decorator for top-level transaction tracing without FastAPI/gRPC dependencies@capture_span
decorator for nested span tracking within existing transactions- Seamless integration with existing Sentry and Elastic APM configuration system
- Conditional tracing based on
config.SENTRY.IS_ENABLED
andconfig.ELASTIC_APM.IS_ENABLED
settings - Proper error handling and graceful fallbacks when APM libraries are unavailable
- Automatic initialization of Sentry with full config parameters for transactions
- Uses existing APM clients for spans to work within transaction context
Developer Experience¶
- Comprehensive Decorator Exports - Enhanced
archipy.helpers.decorators
module accessibility- Exported all 17 decorators in
__init__.py
for easy discovery and import - Includes tracing, caching, retry, database atomic operations, deprecation, and utility decorators
- Simplified import syntax for all decorator functionality
- Exported all 17 decorators in
[3.8.1] - 2025-09-04¶
Changed¶
Dependency Updates¶
- Elasticsearch Version Bump - Updated Elasticsearch Docker image from 9.1.2 to 9.1.3 in test configuration
- Enhanced test reliability with latest Elasticsearch stable version
- Improved test container compatibility and performance
Code Quality Improvements¶
- Enhanced Keycloak Utils Type Safety - Improved type handling in Keycloak utilities for gRPC metadata
- Fixed handling of both bytes and string metadata values in gRPC authentication
- Enhanced type conversion safety with proper string/bytes compatibility
- Improved authentication reliability across different gRPC implementations
- MyPy Configuration Enhancements - Expanded MyPy overrides for better type checking coverage
- Added comprehensive overrides for Keycloak utilities, MinIO, Kafka, and payment gateway adapters
- Enhanced type checking for optional imports with proper type placeholders
- Improved development experience with more accurate type checking
Library Updates¶
- Development Tools - Updated multiple development dependencies for improved tooling
- Updated Ruff from 0.7.4 to 0.12.11 for enhanced linting capabilities
- Updated various type stubs packages for better IDE support and type checking
- Enhanced MkDocs Material theme from 9.6.7 to 9.6.18 for improved documentation
- Core Dependencies - Updated runtime dependencies for better performance and security
- Updated fakeredis from 2.30.1 to 2.31.1 for improved Redis mocking
- Updated sentry-sdk from 2.33.0 to 2.36.0 for better error tracking
- Updated pymysql from 1.1.1 to 1.1.2 for enhanced MySQL compatibility
- Updated behave from 1.3.1 to 1.3.2 for improved BDD testing
Documentation and Code Structure¶
- Enhanced CLAUDE.md - Comprehensive documentation improvements for Claude Code integration
- Added detailed architecture overview with module descriptions
- Enhanced code style guidelines with Python 3.13+ requirements
- Improved command reference with complete development workflow
- Added comprehensive MyPy configuration documentation
Bug Fixes¶
Type Safety¶
- Optional Import Handling - Fixed type assignments for optional gRPC imports
- Resolved type compatibility issues when gRPC dependencies are not available
- Enhanced graceful degradation with proper type placeholders
- Improved development experience with better error messages
Configuration¶
- Workflow Permissions - Fixed potential security issues in GitHub Actions workflows
- Added proper permissions configuration to prevent unauthorized access
- Enhanced CI/CD security with explicit permission declarations
- Resolved code scanning alerts for workflow security best practices
[3.8.0] - 2025-08-21¶
Changed¶
Build System Migration¶
- Poetry to UV Migration - Migrated from Poetry to UV for improved performance and modern toolchain
- Replaced Poetry with UV for dependency management and virtual environment handling
- Updated all GitHub Actions workflows to use
astral-sh/setup-uv@v4
- Converted
pyproject.toml
to use standard[project]
format with UV-compatible optional dependencies - Updated Makefile commands to use UV equivalents (
uv sync
,uv run
,uv build
) - Updated pre-commit hooks to use UV for tool execution
- Migrated from Poetry build backend to Hatchling for better flexibility
- Updated all documentation to reflect UV usage instead of Poetry
- Significant performance improvements in dependency resolution and installation
Python 3.13 Compatibility¶
- Modern Type Hints - Updated codebase to use Python 3.13 generic syntax and modern type annotations
- Migrated from
Union[T, None]
toT | None
syntax throughout the codebase - Updated Generic syntax to use modern Python 3.13 patterns (UP046, UP047)
- Enhanced type safety with improved generic type operations and Comparable protocol
- Fixed type assignment issues in error classes and DTO implementations
- Added comprehensive mypy overrides for flexible data dictionary assignments
- Migrated from
Code Quality Improvements¶
- Linting and Type Checking - Resolved all ruff and mypy issues across the codebase
- Fixed type annotations and imports across configs, models, and decorators
- Added missing error classes (DeadlineExceededError, DeprecationError)
- Enhanced SQLAlchemy column type compatibility with mapped_column
- Resolved import conflicts and improved code organization
- Added missing docstrings and type hints for better code documentation
- Test Infrastructure Cleanup - Streamlined test helper functions for better maintainability
- Removed unused imports and dependencies from test_helpers.py
- Cleaned up test infrastructure to reduce code duplication
- Improved test execution efficiency and maintainability
CI/CD Enhancements¶
- GitHub Actions Updates - Updated all GitHub Actions workflows to latest versions
- Bumped actions/setup-python from 4 to 5 for improved Python support
- Bumped actions/cache from 3 to 4 for enhanced caching capabilities
- Bumped actions/checkout from 4 to 5 for better repository access
- Improved workflow reliability and performance across all CI/CD pipelines
Testing Framework Updates¶
- Behave Version Upgrade - Updated Behave testing framework to version 1.3.1
- Enhanced test execution capabilities with latest Behave features
- Improved test reliability and performance across all test suites
- Better compatibility with modern Python development practices
- MyPy Version Upgrade - Updated MyPy type checker to version 1.17.1
- Enhanced type checking capabilities with latest MyPy features
- Improved type safety and error detection across the codebase
- Better support for Python 3.13 type annotations and modern type patterns
Bug Fixes¶
Type System¶
- Generic Type Operations - Fixed generic type operations with Comparable protocol in DTO classes
- SQLAlchemy Compatibility - Resolved SQLAlchemy column type compatibility issues with mapped_column
- Error Class Initialization - Fixed type assignment issues in error classes for better type safety
Configuration¶
- Type Annotations - Resolved type annotation and inheritance issues in configuration classes
- Validator Documentation - Added missing docstrings to validators for better code documentation
Known Issues¶
- Remaining Linting Issues - Some minor linting issues remain that are planned for future releases
- 13 ANN401 (any-type) violations for flexible data handling
- 11 ANN201 (missing return type annotations) for public functions
- 8 D415 (missing terminal punctuation) for docstrings
- These issues are intentionally allowed for specific use cases and will be addressed incrementally
[3.7.0] - 2025-08-16¶
New Features¶
Elasticsearch Index Management¶
- Index Existence Check - Added
index_exists
method to Elasticsearch adapters for improved index management- New
index_exists()
method in both synchronous and asynchronous Elasticsearch ports - Enhanced index lifecycle management with proper existence validation
- Improved error handling and index operation safety
- Better support for index-dependent operations and workflows
- New
CI/CD Pipeline Enhancement¶
- Dedicated Test Workflow - Implemented comprehensive CI/CD pipeline for automated testing
- Added dedicated GitHub Actions workflow for Behave BDD tests
- Automated test execution on push to main branch and pull requests
- Python 3.13 matrix testing with Poetry dependency management
- Enhanced test reliability and continuous integration capabilities
Improvements¶
Testing Framework¶
- Kafka Test Reliability - Enhanced Kafka adapter tests with retry mechanism for improved stability
- Implemented retry logic for Kafka connection tests to handle transient network issues
- Improved test reliability in CI/CD environments with better error handling
- Enhanced test coverage for Kafka adapter functionality
Configuration Management¶
- PostgreSQL DSN Type Safety - Fixed PostgresDsn type instantiation for improved configuration validation
- Corrected PostgresDsn type handling in configuration templates
- Enhanced type safety for database connection string validation
- Improved configuration error handling and validation
Development Tools¶
- Dependency Updates - Updated development dependencies for improved tooling and security
- Enhanced Poetry dependency management with latest package versions
- Improved development environment setup and tooling
- Better compatibility with Python 3.13 and modern development practices
Bug Fixes¶
Test Infrastructure¶
- Image Version Compatibility - Fixed test container image versions for improved test reliability
- Updated Elasticsearch, Keycloak, and Kafka test container images
- Resolved test environment compatibility issues
- Enhanced test stability across different environments
Error Handling¶
- Exception Utility Assertions - Fixed error assertion logic in exception utilities
- Corrected error handling in test scenarios for better validation
- Improved error message consistency and debugging capabilities
Dependencies¶
- Development Tools - Updated development dependencies for improved tooling and security
- Test Containers - Enhanced test container configurations for better test reliability
- CI/CD Tools - Improved GitHub Actions workflow for automated testing
Community Contributions¶
- @heysaeid - Fixed PostgresDsn type instantiation for improved configuration validation
- @negatic - Enhanced Kafka adapter tests with retry mechanism and improved test infrastructure
- @s.kazemi - Added index_exists method to Elasticsearch adapters and implemented CI/CD test workflow
[3.6.1] - 2025-08-11¶
New Features¶
Security Scanning Integration¶
- Bandit Security Tool - Added comprehensive security vulnerability scanning to the development workflow
- Integrated Bandit 1.7.8 for automated security analysis of Python code
- Added security scanning to CI/CD pipeline with configurable rules and exclusions
- Enhanced security posture with automated detection of common security issues
- Improved code quality through proactive security vulnerability identification
Enhanced Testing Framework¶
- Behave 1.3.0 Upgrade - Updated BDD testing framework to latest version with improved async support
- Enhanced async test handling capabilities for better performance and reliability
- Improved test execution efficiency with optimized async context management
- Streamlined test infrastructure with cleaner step definitions and scenario management
- Enhanced test coverage and reliability across all adapter test suites
Improvements¶
SQLAlchemy Type Safety¶
- Generic TypeVar Support - Enhanced SQLAlchemy adapters with improved generic type preservation
- Added TypeVar support to preserve concrete entity types in adapter operations
- Improved type safety for database operations with better generic type handling
- Enhanced IDE support and type checking for database adapter usage
- Maintained backward compatibility while improving type inference capabilities
Test Infrastructure¶
- Streamlined Test Helpers - Refactored and optimized test infrastructure for better maintainability
- Removed redundant test helper functions to reduce code duplication
- Enhanced step definitions with cleaner, more focused implementations
- Improved test scenario context management for better test isolation
- Optimized test execution with reduced overhead and improved performance
Code Quality¶
Security Enhancements¶
- Automated Security Checks - Integrated security scanning into development workflow
- Added Bandit configuration with customizable security rules and exclusions
- Enhanced CI/CD pipeline with automated security vulnerability detection
- Improved security posture through proactive code analysis
- Standardized security practices across development team
Testing Improvements¶
- Enhanced Test Coverage - Improved test reliability and maintainability
- Updated all adapter test suites to work with Behave 1.3.0
- Streamlined test step definitions for better readability and maintenance
- Enhanced test context management for improved test isolation
- Optimized test execution performance and reliability
Dependencies¶
- Security Tools - Added Bandit 1.7.8 for automated security scanning
- Testing Framework - Updated Behave to version 1.3.0 for improved async support
- Development Tools - Enhanced development workflow with security and testing improvements
Community Contributions¶
- @younesious - Enhanced SQLAlchemy adapters with generic TypeVar support for improved type safety
- @itsnegaar - Upgraded Behave testing framework to version 1.3.0 with enhanced async support
[3.6.0] - 2025-07-29¶
New Features¶
gRPC Exception Interceptor System¶
- Centralized Exception Handling - Implemented comprehensive gRPC server exception interceptors for both synchronous
and asynchronous operations
- Added
GrpcServerExceptionInterceptor
for synchronous gRPC services with automatic exception conversion - Added
AsyncGrpcServerExceptionInterceptor
for asynchronous gRPC services with async exception handling - Eliminated the need for repetitive try-catch blocks in individual gRPC service methods
- Automatic conversion of exceptions to appropriate gRPC error responses with proper status codes
- Added
Enhanced Error Handling¶
- Pydantic Validation Error Handling - Integrated automatic Pydantic validation error processing in gRPC
interceptors
- Automatic conversion of ValidationError to InvalidArgumentError with detailed error information
- Structured validation error formatting with field-level error details
- Enhanced debugging capabilities with comprehensive validation error reporting
Language Configuration System¶
- Global Language Configuration - Added LANGUAGE configuration to BaseConfig for consistent language handling
- Introduced LANGUAGE attribute in BaseConfig with default Persian (FA) language support
- Standardized language type constants to uppercase for ISO compliance
- Improved language handling across error messages and user interfaces
Improvements¶
gRPC Status Code Management¶
- Enhanced Status Code Handling - Improved gRPC status code conversion and management in BaseError
- Added static method for converting integer status codes to gRPC StatusCode enums
- Enhanced metadata handling in gRPC abort methods with conditional additional data inclusion
- Refined type hints for context parameters in abort methods for better clarity
- Improved error context preservation and debugging capabilities
Error System Refactoring¶
- Optional Language Parameters - Refactored error handling classes to use optional language parameters
- Removed mandatory language parameter requirements for improved flexibility
- Enhanced error initialization with automatic language detection from global configuration
- Improved error message consistency and localization support
- Maintained backward compatibility while improving developer experience
Bug Fixes¶
Error Initialization¶
- Language Configuration Fix - Fixed language initialization in BaseError to use global configuration
- Ensured language is set correctly from global configuration when not provided during initialization
- Improved error message consistency across different initialization scenarios
- Enhanced code readability and maintainability
Type Safety Improvements¶
- Enhanced Type Hints - Improved type hints for gRPC status codes and error handling
- Refined type annotations for better IDE support and code reliability
- Enhanced type safety across error handling components
- Improved developer experience with better autocomplete and error detection
Code Quality¶
- Comprehensive Error Coverage - Updated all error classes to support the new language and gRPC handling system
- Enhanced auth_errors, business_errors, database_errors, network_errors, resource_errors, system_errors, and validation_errors
- Improved error categorization and handling consistency
- Enhanced error reporting and debugging capabilities across all error types
[3.5.2] - 2025-07-28¶
Bug Fixes¶
Elasticsearch Authentication¶
- Password Secret Value Extraction - Fixed critical authentication issue in Elasticsearch adapters where password
secret values were not being properly extracted
- Updated both synchronous and asynchronous Elasticsearch adapters to use
get_secret_value()
method for HTTP_PASSWORD - Resolved authentication failures when using SecretStr password configuration
- Improved security by properly handling encrypted password fields in Elasticsearch configuration
- Updated both synchronous and asynchronous Elasticsearch adapters to use
Dependencies¶
- Poetry Lock Update - Updated poetry.lock file to Poetry 2.1.2 for improved dependency management
- Enhanced dependency resolution with latest Poetry version
- Updated platform-specific package markers for better cross-platform compatibility
- Improved package hash verification and security
Code Quality¶
- Authentication Consistency - Standardized password handling across Elasticsearch adapters
- Ensured consistent secret value extraction in both sync and async adapters
- Maintained backward compatibility while improving security practices
- Enhanced error handling for authentication configuration
[3.5.1] - 2025-07-28¶
Bug Fixes¶
HTTP Status Code Handling¶
- Status Code Name Mismatch - Fixed critical issue in FastAPIExceptionHandler where
http_status_code
was incorrectly referenced- Changed from
exception.http_status_code
toexception.http_status_code_value
for proper status code retrieval - Resolved HTTP status code name mismatch that was causing incorrect error responses
- Improved error handling consistency in FastAPI exception processing
- Changed from
Improvements¶
Protobuf DTO Runtime Type Safety¶
- Runtime Type Checking - Enhanced BaseProtobufDTO with comprehensive runtime type validation
- Added runtime type checking in
from_proto()
method to validate input parameter types - Implemented proper type validation before protobuf message processing
- Enhanced error messages with clear type mismatch information
- Added runtime type checking in
Custom Exception Integration¶
- Custom Exception Handling - Replaced generic TypeError with domain-specific InvalidEntityTypeError
- Updated protobuf DTO type validation to use
InvalidEntityTypeError
for better error categorization - Improved error context with expected and actual type information
- Enhanced error handling consistency across the protobuf DTO system
- Updated protobuf DTO type validation to use
Code Quality Enhancements¶
- Error Handling Consistency - Standardized error handling patterns across protobuf DTO operations
- Improved error message clarity and debugging capabilities
- Enhanced type safety with proper exception chaining
- Maintained backward compatibility while improving error reporting
[3.5.0] - 2025-07-26¶
New Features¶
Protobuf DTO Support¶
- BaseProtobufDTO - Added new base class for Data Transfer Objects that can be converted to and from Protobuf
messages
- Provides seamless integration between Pydantic DTOs and Google Protocol Buffers
- Supports bidirectional conversion with
from_proto()
andto_proto()
methods - Includes runtime dependency checking for protobuf availability
- Maintains type safety with proper error handling for missing protobuf dependencies
Bug Fixes¶
Type Safety Improvements¶
- ClassVar Type Variable Issue - Fixed critical type annotation issue in BaseProtobufDTO where ClassVar contained
type variables
- Resolved
ClassVar
parameter cannot include type variables error - Updated type annotations to use concrete
Message
type instead of type variables - Improved type safety by using proper concrete types for class variables
- Added comprehensive type annotations for all methods and parameters
- Resolved
Code Quality Enhancements¶
- Import Cleanup - Removed invalid Unicode characters and simplified import structure
- Fixed invisible Unicode character
\uab
that was causing linter errors - Streamlined protobuf import logic by removing unnecessary type variables
- Enhanced code readability and maintainability
- Added proper docstring formatting with Google-style documentation
- Fixed invisible Unicode character
Linting Configuration¶
- Ruff Configuration - Updated linting rules to accommodate protobuf DTO patterns
- Added
ANN401
exception forbase_protobuf_dto.py
to allowAny
types in*args
and**kwargs
- Maintained strict type checking while allowing necessary flexibility for DTO inheritance patterns
- Ensured all pre-commit hooks pass without compromising code quality standards
- Added
[3.4.5] - 2025-07-24¶
Improvements¶
Configuration Template Enhancements¶
- Improved Readability - Enhanced ElasticsearchAPMConfig size fields to use human-readable string values instead of
raw bytes
- Changed
API_REQUEST_SIZE
from768 * 1024
to"768kb"
for better configuration clarity - Changed
LOG_FILE_SIZE
from50 * 1024 * 1024
to"50mb"
for improved readability
- Changed
- Configuration Clarity - Updated size-related configuration fields to use standard size notation (kb, mb) making configuration files more intuitive and easier to understand
Bug Fixes¶
- Code Cleanup - Removed redundant files to improve project structure and reduce maintenance overhead
[3.4.4] - 2025-07-17¶
Improvements¶
gRPC Integration Improvements¶
- Import Safety - Added robust gRPC import handling with try/except blocks to prevent import errors when gRPC is not available
- Type Safety - Enhanced type annotations for gRPC context handling with improved error type definitions
- Error Handling - Improved gRPC error handling with better type safety and context management
Dependency Updates¶
- Kafka - Updated confluent-kafka to version 2.11.0+ for improved stability and performance
- Keycloak - Updated python-keycloak to version 5.7.0+ for enhanced security and features
- Sentry - Updated sentry-sdk to version 2.33.0+ for better error tracking capabilities
- MyPy - Updated MyPy to version 1.17.0+ for improved type checking and Python 3.13 support
[3.4.3] - 2025-07-17¶
Improvements¶
Keycloak Security Enhancements¶
- Admin Mode Control - Implemented
IS_ADMIN_MODE_ENABLED
configuration flag to control Keycloak admin operations - Enhanced Security - Added granular control over admin capabilities allowing authentication-only mode without admin privileges
- Principle of Least Privilege - Updated both synchronous and asynchronous Keycloak adapters to respect admin mode configuration
- Test Coverage - Updated BDD test steps to properly handle admin mode configuration for comprehensive testing
Security¶
- Reduced Attack Surface - Admin operations can now be disabled while maintaining authentication capabilities
- Environment Isolation - Different environments can have different admin capabilities based on configuration
- Audit Trail - Clear separation between authentication and administrative operations for better security monitoring
[3.4.2] - 2025-07-17¶
Bug Fixes¶
- Import Error Resolution - Fixed critical import errors that were preventing proper module initialization and functionality
[3.4.1] - 2025-07-07¶
Bug Fixes¶
- Import Error Fix - Resolved import error issues that were affecting module loading and dependency resolution
[3.4.0] - 2025-06-29¶
New Features¶
gRPC Integration Enhancements¶
- Async gRPC Server Interceptors - Added comprehensive async gRPC server interceptors with enhanced tracing capabilities and metric collection for better observability
- Enhanced Authentication Context - Implemented advanced authentication context management with gRPC decorators for seamless integration
- Improved Error Handling - Enhanced gRPC error handling and context management with better type annotations and error propagation
Keycloak gRPC Authentication¶
- gRPC Authentication Enhancement - Added token extraction and role validation capabilities for gRPC services with Keycloak integration
- Composite Role Management - Implemented composite role management methods in both KeycloakAdapter and AsyncKeycloakAdapter for advanced authorization scenarios
- Streamlined Role Checks - Enhanced role checking and error handling in KeycloakAdapter for better performance and reliability
Improvements¶
Error Handling & Type Safety¶
- Enhanced Type Annotations - Updated type annotations in BaseError class for improved gRPC context handling and better type safety
- Refined Interceptors - Improved gRPC server interceptors with better error handling and method name context support
Code Quality & Performance¶
- DateTime Optimization - Refactored BaseUtils and UpdatableMixin to use naive local datetime for improved performance and consistency
- Library Updates - Updated dependencies and libraries for better compatibility and security
Community Contributions¶
- Collaborative Development - Merged contributions from @Mohammadreza-kh94 for Keycloak gRPC authentication enhancements
- Code Refactoring - Integrated improvements from @heysaeid for datetime handling optimizations
[v3.3.1] - 2025-06-12¶
Improvements¶
Keycloak Integration Enhancements¶
- Enhanced error handling - Added comprehensive custom error classes and centralized exception handling for better Keycloak error management and debugging
- Improved error messaging - Introduced
KeycloakErrorMessageType
enum for standardized error handling and clearer error messages - Extended functionality - Added
get_realm
method to both synchronous and asynchronous Keycloak ports for better realm management - Optimized caching - Updated cache clearing methods in Keycloak adapters for improved performance and reliability
Datetime Utilities Enhancement¶
- Enhanced datetime handling - Significantly improved datetime utility functions with better timezone support, date parsing capabilities, and comprehensive validation for more robust date and time operations
- Extended functionality - Added new datetime manipulation methods and improved existing functions for better developer experience
Elasticsearch Adapter Refinements¶
- Improved adapter implementation - Enhanced Elasticsearch adapter with better error handling, improved connection management, and optimized query performance
- Configuration enhancements - Refined Elasticsearch configuration options for more flexible deployment scenarios and better SSL/TLS support
Configuration Management¶
- Enhanced configuration templates - Updated configuration templates with improved validation, better default values, and comprehensive documentation
- Streamlined setup process - Simplified configuration management for various adapters and services with clearer parameter definitions
Testing & Quality Assurance¶
- Enhanced test coverage - Significantly improved Keycloak adapter feature tests and datetime utilities with comprehensive feature tests and better validation scenarios
- Development environment - Updated Keycloak and development configuration in test environment for improved local development experience
- Documentation updates - Enhanced API reference documentation and configuration guides for better developer onboarding
Code Quality & Maintenance¶
- Code organization - Improved code structure and organization across multiple modules for better maintainability
- Enhanced validation - Added better input validation and error handling throughout the codebase
Bug Fixes¶
- Configuration cleanup - Removed invalid imports and unused Elasticsearch configuration references to prevent import errors
- Code optimization - Removed redundant error handling code for cleaner and more maintainable codebase
Community Contributions¶
- Collaborative improvements - Merged contributions from @Mohammadreza-kh94 for Keycloak enhancements and @heysaeid for configuration fixes
[v3.3.0] - 2025-06-09¶
New Features¶
Elasticsearch Integration¶
- New Elasticsearch adapter - Added comprehensive Elasticsearch integration with full search and indexing capabilities, enabling powerful full-text search and analytics functionality for your applications
- Enhanced search capabilities - Integrated advanced search features with Elasticsearch 9.0.2 support for improved performance and modern search functionality
Improvements¶
Configuration & Testing¶
- Improved Elasticsearch configuration - Enhanced configuration management with better validation and streamlined setup process
- Comprehensive test coverage - Added extensive test suite for Elasticsearch functionality to ensure reliability and stability
Bug Fixes¶
- Configuration validation - Removed unnecessary authentication validation in Elasticsearch configuration for improved flexibility
- Adapter initialization - Fixed Elasticsearch adapter initialization issues for smoother integration
Collaboration¶
- Community contributions - Merged contributions from @alireza-shirmohammadi improving Elasticsearch functionality and resolving upstream conflicts
[v3.2.7] - 2025-01-06¶
Improvements¶
Database Query Flexibility¶
- Enhanced query result handling - Added
has_multiple_entities
parameter to search query methods in both synchronous and asynchronous SQLAlchemy adapters and ports. This new parameter provides flexible control over query result processing, allowing developers to choose betweenfetchall()
for multiple entities orscalars().all()
for single entity queries, optimizing performance based on query requirements.
Database Performance¶
- Optimized search query execution - Refactored SQLAlchemy query execution method to use
fetchall()
instead ofscalars().all()
for improved performance and memory efficiency in both synchronous and asynchronous adapters
[v3.2.6] - 2025-01-06¶
Improvements¶
Database Performance¶
- Optimized search query execution - Refactored SQLAlchemy query execution method to use
fetchall()
instead ofscalars().all()
for improved performance and memory efficiency in both synchronous and asynchronous adapters
[v3.2.5] - 2025-01-06¶
Improvements¶
Developer Experience¶
- Enhanced changelog generation script - Significantly improved the changelog generation process with comprehensive type hints, better error handling, and enhanced Conventional Commits support for more accurate categorization of changes
- Updated development guidelines - Added new coding standards and architectural rules to improve code quality and maintainability
Technical Enhancements¶
- Type Safety - Added Python 3.13 type hints throughout the changelog generation script for better IDE support and code reliability
- Error Handling - Implemented proper exception chaining and more robust error reporting
- Code Organization - Refactored script structure for better modularity and maintainability
[3.2.4] - 2025-01-27¶
Fixed¶
Testing¶
- Fixed atomic transactions feature test error handling expectations:
- Corrected test to expect
InternalError
instead ofDatabaseError
for normal exceptions - Aligned test expectations with the correct exception wrapping behavior in atomic decorators
- Normal exceptions (like
ValueError
) are now correctly expected to be wrapped asInternalError
- Database-specific exceptions continue to be wrapped as appropriate
DatabaseError
subclasses
[3.2.3] - 2025-01-24¶
Fixed¶
- Fix using "IS_ENABLED" instead wrong variable "ENABLED" in elastic ap… by @majasemzadeh in #45
[3.2.2] - 2025-05-24¶
Changed¶
Database Entities¶
- Enhanced timestamp handling in SQLAlchemy base entities:
- Improved timezone-aware datetime handling in UpdatableMixin
- Updated
updated_at
field to use server-side default timestamp - Added helper method
_make_naive()
for timezone conversion - Optimized update timestamp behavior for better database compatibility
[3.2.1] - 2025-05-20¶
Changed¶
Elastic APM Configuration¶
- Enhanced Elastic APM configuration and integration:
- Refactored configuration logic for improved maintainability
- Updated configuration templates for greater flexibility
- Improved gRPC tracing interceptor for better observability
- Refined application utility functions related to APM
[3.2.0] - 2025-05-20¶
Added¶
Keycloak Integration¶
- Added and refactored methods for creating realms, clients, and client roles in Keycloak adapters (sync and async)
- Improved admin credential support and configuration for Keycloak
- Enhanced type hints and readability in Keycloak step definitions
Utilities¶
- Introduced string utility functions for case conversion (snake_case ↔ camelCase)
Configuration¶
- Expanded .env.example with more detailed configuration options for services
- Improved KeycloakConfig with admin fields for easier testing and setup
Documentation & Code Quality¶
- Improved and clarified usage examples and step definitions
- Reformatted Python files to comply with Ruff checks
- Minor refactoring for better code clarity and maintainability
[3.1.1] - 2025-05-17¶
Documentation¶
- Enhanced project documentation
- Improved usage examples
Changed¶
Configuration¶
- Updated configuration templates
- Enhanced Kafka configuration template with improved settings
- Optimized template structure for better usability
Fixed¶
- Resolved merge conflicts
- Streamlined codebase integration
[3.1.0] - 2025-05-15¶
Added¶
Payment Gateway¶
- Implemented Parsian Internet Payment Gateway adapter
- Added comprehensive IPG integration support
- Enhanced payment processing capabilities
Changed¶
Documentation¶
- Updated adapter documentation
- Improved IPG integration examples
- Refactored Parsian adapter code structure
Removed¶
- Eliminated redundant error messages
- Streamlined error handling
[3.0.1] - 2025-04-27¶
Fixed¶
Code Quality¶
- Fixed import error in module dependencies
[3.0.0] - 2025-04-27¶
Changed¶
Database Adapters¶
- Refactor StarRocks driver integration
- Refactor SQLite driver integration
- Enhanced database adapter support
- Updated dependencies for StarRocks compatibility
Configuration¶
- Updated Elasticsearch Config Template
- Enhanced configuration management
- Improved dependency handling
Code Quality¶
- Improved type safety across adapters
- Enhanced error handling
- Optimized connection management
[2.0.1] - 2025-04-27¶
Added¶
StarRocks¶
- Added StarRocks driver integration
- Enhanced database adapter support
- Updated dependencies for StarRocks compatibility
Changed¶
Dependencies¶
- Updated poetry.lock with new dependencies
- Enhanced package compatibility
- Updated Elasticsearch Config Template
[2.0.0] - 2025-04-27¶
Changed¶
Models¶
- Refactored range DTOs for better type safety and validation
- Enhanced pagination DTO implementation
- Added time interval unit type support
Code Quality¶
- Improved type hints in DTO implementations
- Enhanced validation in range operations
- Optimized DTO serialization
[1.0.3] - 2025-04-20¶
Documentation¶
Features¶
- Updated atomic transaction documentation with detailed examples
- Enhanced feature documentation with clear scenarios
- Added comprehensive step definitions for BDD tests
Code Quality¶
- Improved SQLAlchemy atomic decorator implementation
- Enhanced test coverage for atomic transactions
- Updated BDD test scenarios for better clarity
[1.0.2] - 2025-04-20¶
Documentation¶
API Reference¶
- Updated adapter documentation with new architecture details
- Enhanced API reference structure and organization
- Added comprehensive usage examples
General Documentation¶
- Improved installation guide with detailed setup instructions
- Enhanced feature documentation with clear examples
- Updated usage guide with new architecture patterns
Code Quality¶
- Updated dependencies in poetry.lock and pyproject.toml
- Enhanced documentation consistency and clarity
[1.0.1] - 2025-04-20¶
Fixed¶
Error Handling¶
- Enhanced exception capture in all scenarios
- Improved error handling robustness across components
- Added comprehensive error logging
Code Quality¶
- Strengthened error recovery mechanisms
- Enhanced error reporting and debugging capabilities
[1.0.0] - 2025-04-20¶
Architecture¶
Database Adapters¶
- Refactored database adapter architecture for better modularity
- Separated base SQLAlchemy functionality from specific database implementations
- Introduced dedicated adapters for PostgreSQL, SQLite, and StarRocks
- Enhanced session management with improved registry system
Added¶
PostgreSQL Support¶
- Implemented dedicated PostgreSQL adapter with optimized connection handling
- Added PostgreSQL-specific session management
- Enhanced configuration options for PostgreSQL connections
SQLite Support¶
- Added dedicated SQLite adapter with improved transaction handling
- Implemented SQLite-specific session management
- Enhanced mock testing capabilities for SQLite
StarRocks Support¶
- Introduced StarRocks database adapter
- Implemented StarRocks-specific session management
- Added configuration support for StarRocks connections
Changed¶
Core Architecture¶
- Moved base SQLAlchemy functionality to
adapters/base/sqlalchemy
- Refactored session management system for better extensibility
- Improved atomic transaction decorator implementation
Documentation¶
- Updated API reference for new adapter structure
- Enhanced configuration documentation
- Added examples for new database adapters
Code Quality¶
- Improved type safety across database adapters
- Enhanced error handling in session management
- Optimized connection pooling implementation
[0.14.3] - 2025-04-26¶
Added¶
Adapters¶
- Major database adapter refactoring
Changed¶
- Update dependencies
Fixed¶
- Fix capture exeptrioin in all senario
[0.14.2] - 2025-04-20¶
Fixed¶
Keycloak¶
- Resolved linter errors in Keycloak integration
- Enhanced code quality in authentication components
Code Quality¶
- Improved type safety in Keycloak adapters
- Enhanced error handling in authentication flows
[0.14.1] - 2025-04-20¶
Fixed¶
Database¶
- Resolved "DEFAULT" server_default value issue in BaseEntity timestamps
- Enhanced timestamp handling in database entities
Code Quality¶
- Improved database entity configuration
- Enhanced type safety in entity definitions
[0.14.0] - 2025-04-16¶
Added¶
Kafka Integration¶
- Implemented comprehensive Kafka adapter system with ports and adapters
- Added test suite for Kafka adapters
- Enhanced Kafka documentation with detailed usage examples
Documentation¶
- Refactored and improved documentation structure
- Added comprehensive Kafka integration guides
- Enhanced docstrings for better code understanding
Fixed¶
Code Quality¶
- Resolved linting issues in configuration templates
- Fixed lint errors in Keycloak adapters and ports
[0.13.5] - 2025-04-16¶
Fixed¶
SQLAlchemy¶
- Resolved sorting functionality in SQLAlchemy mixin
- Enhanced query sorting capabilities with improved error handling
Code Quality¶
- Applied ruff formatter to config_template.py for consistent code style
- Updated AsyncContextManager to AbstractAsyncContextManager to resolve UP035 lint error
[0.13.4] - 2025-04-15¶
Added¶
FastAPI Integration¶
- Implemented lifespan support for FastAPI applications
- Enhanced application lifecycle management with proper startup and shutdown handlers
Database Configuration¶
- Added automatic database URL generation with validation in SqlAlchemyConfig
- Improved database connection configuration with enhanced error handling
Code Quality¶
- Integrated new features with comprehensive test coverage
- Enhanced configuration validation and error reporting
Changed¶
- Update changelogs
Fixed¶
Configs¶
- Run ruff format on config_template.py to resolve formatting issues
- Replace AsyncContextManager with AbstractAsyncContextManager to fix UP035 lint error
[0.13.3] - 2025-04-15¶
Added¶
CI/CD¶
- Implemented comprehensive linting workflow for improved code quality
- Enhanced GitHub Actions with updated tj-actions/changed-files for better change tracking
Documentation¶
- Added detailed documentation for range DTOs and their usage patterns
- Improved API reference documentation with new examples
Changed¶
Models¶
- Enhanced range DTOs with improved type safety and validation
- Updated range DTOs to support more flexible boundary conditions
Code Quality¶
- Integrated automated linting for consistent code style
- Improved code formatting and documentation standards
[0.13.2] - 2025-04-10¶
Documentation¶
- Enhanced Redis adapter documentation with comprehensive docstrings
- Added MinIO adapter to API reference documentation
Code Quality¶
- Improved code quality with linter fixes across Redis adapter and ORM components
- Fixed file utilities test suite
- Cleaned up redundant changelog files
[0.13.1] - 2025-04-08¶
Security¶
- Enhanced cryptographic security by replacing
random
withsecrets
module - Strengthened TOTP implementation with improved security practices
- Upgraded password utilities with robust validation and generation
Code Quality¶
- Improved type safety with explicit typing and modern type hints
- Enhanced error handling with domain-specific exception types
- Standardized parameter naming and module consistency
Documentation¶
- Added comprehensive docstrings to configuration classes
- Expanded utility function documentation
- Improved error handling documentation
[0.13.0] - 2025-04-08¶
Features¶
- MinIO Integration: Full S3-compatible object storage adapter with:
- Comprehensive S3 operation support (12 standardized methods)
- Built-in TTL caching for performance optimization
- Flexible configuration with endpoint and credential management
- Clear cache management through
clear_all_caches
Testing¶
- Added complete BDD test suite for MinIO adapter:
- Bucket and object operation validation
- Presigned URL generation testing
- Bucket policy management verification
Documentation¶
- Added extensive MinIO adapter examples and usage guides
- Improved error handling documentation
- Updated configuration documentation with new MinIO settings
Usage Example¶
# Initialize the MinIO adapter
from archipy.adapters.minio.adapters import MinioAdapter
minio = MinioAdapter()
# Create a bucket and upload a file
minio.make_bucket("my-bucket")
minio.put_object("my-bucket", "document.pdf", "/path/to/document.pdf")
# Generate a presigned URL for temporary access
download_url = minio.presigned_get_object("my-bucket", "document.pdf", expires=3600)
[0.12.0] - 2025-03-29¶
Features¶
- Keycloak Integration: Comprehensive authentication and authorization for FastAPI:
- Role-based access control with customizable requirements
- Resource-based authorization for fine-grained access control
- Both synchronous and asynchronous authentication flows
- Token validation and introspection
- User info extraction capabilities
Code Quality¶
- Improved error handling clarity by renaming
ExceptionMessageType
toErrorMessageType
- Enhanced error documentation with detailed descriptions
- Updated error handling implementation with new message types
Usage Example¶
from fastapi import FastAPI, Depends
from archipy.helpers.utils.keycloak_utils import KeycloakUtils
app = FastAPI()
@app.get("/api/profile")
def get_profile(user: dict = Depends(KeycloakUtils.fastapi_auth(
required_roles={"user"},
admin_roles={"admin"}
))):
return {
"user_id": user.get("sub"),
"username": user.get("preferred_username")
}
[0.11.2] - 2025-03-21¶
Error Handling¶
- Enhanced exception management with improved error reporting
- Streamlined error messaging for better debugging
- Fixed various error handling edge cases
[0.11.1] - 2025-03-15¶
Performance¶
- Optimized resource usage across core components
- Enhanced caching mechanisms for improved performance
- Improved memory utilization in key operations
[0.11.0] - 2025-03-10¶
Features¶
- Keycloak Adapter: New authentication and authorization system:
- Asynchronous operations support
- Token management and validation
- User information retrieval
- Comprehensive security features
Performance¶
- Added TTL cache decorator for optimized performance
- Improved Keycloak adapter efficiency
Documentation¶
- Added detailed Keycloak integration guides
- Included comprehensive usage examples
Usage Example¶
from archipy.adapters.keycloak.adapters import KeycloakAdapter
# Initialize adapter with configuration from global config
keycloak = KeycloakAdapter()
# Authenticate and get access token
token = keycloak.get_token("username", "password")
# Get user information
user_info = keycloak.get_userinfo(token)
# Verify token validity
is_valid = keycloak.validate_token(token)
[0.10.2] - 2025-03-05¶
Stability¶
- Improved Redis connection pool stability and management
- Enhanced error recovery mechanisms
- Fixed various edge cases in Redis operations
[0.10.1] - 2025-03-01¶
Documentation¶
- Enhanced Redis and email adapter documentation
- Added comprehensive API reference
- Improved usage examples for common operations
[0.10.0] - 2025-02-25¶
Features¶
-
Redis Integration: New caching and key-value storage system:
- Flexible key-value operations
- Built-in TTL support
- Connection pooling
- Comprehensive error handling
-
Email Service: New email integration system:
- Multiple email provider support
- Template-based email sending
- Attachment handling
- Async operation support
Configuration¶
- Enhanced configuration management system
- Added support for Redis and email settings
- Improved environment variable handling
Usage Example¶
# Initialize the Redis adapter
from archipy.adapters.redis.adapters import RedisAdapter
redis = RedisAdapter()
# Basic operations
redis.set("user:1:name", "John Doe")
name = redis.get("user:1:name")
# Using with TTL
redis.set("session:token", "abc123", ttl=3600) # Expires in 1 hour
[0.9.0] - 2025-02-20¶
Security¶
-
TOTP System: Comprehensive Time-based One-Time Password implementation:
- Secure token generation and validation
- Configurable time windows
- Built-in expiration handling
- RFC compliance
-
Multi-Factor Authentication: Enhanced security framework:
- Multiple authentication factor support
- Flexible factor configuration
- Integration with existing auth systems
Usage Example¶
from archipy.helpers.utils.totp_utils import TOTPUtils
from uuid import uuid4
# Generate a TOTP code
user_id = uuid4()
totp_code, expires_at = TOTPUtils.generate_totp(user_id)
# Verify a TOTP code
is_valid = TOTPUtils.verify_totp(user_id, totp_code)
# Generate a secure key for TOTP initialization
secret_key = TOTPUtils.generate_secret_key_for_totp()
[0.8.0] - 2025-02-15¶
Features¶
- Redis Integration: Comprehensive key-value store and caching system:
- Full Redis API implementation
- Built-in caching functionality
- Performance-optimized operations
- Connection pooling support
Testing¶
- Mock Redis Implementation:
- Complete test coverage for Redis operations
- Simulated Redis environment for testing
- Configurable mock behaviors
Documentation¶
- Added Redis integration guides
- Included mock testing examples
- Updated configuration documentation
[0.7.2] - 2025-02-10¶
Database¶
- Enhanced connection pool stability and management
- Improved transaction isolation and handling
- Optimized error reporting for database operations
- Added connection lifecycle management
[0.7.1] - 2025-02-05¶
Performance¶
- Optimized query execution and planning
- Reduced memory footprint for ORM operations
- Enhanced connection pool efficiency
- Improved cache utilization
[0.7.0] - 2025-02-01¶
Features¶
- SQLAlchemy Integration: Complete ORM implementation:
- Robust entity model system
- Transaction management with ACID compliance
- Connection pooling with configurable settings
- Comprehensive database operations support
Usage Example¶
from archipy.adapters.postgres.sqlalchemy.adapters import SQLAlchemyAdapter
from archipy.models.entities.sqlalchemy.base_entities import BaseEntity
from sqlalchemy import Column, String
# Define a model
class User(BaseEntity):
__tablename__ = "users"
name = Column(String(100))
email = Column(String(100), unique=True)
# Use the ORM
orm = SQLAlchemyAdapter()
with orm.session() as session:
# Create and read operations
new_user = User(name="John Doe", email="john@example.com")
session.add(new_user)
session.commit()
user = session.query(User).filter_by(email="john@example.com").first()
[0.6.1] - 2025-01-25¶
Stability¶
- Fixed memory leaks in gRPC interceptors
- Improved interceptor performance and efficiency
- Enhanced request/response handling reliability
- Optimized resource cleanup
[0.6.0] - 2025-01-20¶
Features¶
- gRPC Integration: Comprehensive interceptor system:
- Client and server-side interceptors
- Request/response monitoring
- Performance tracing capabilities
- Enhanced error management
Documentation¶
- Added gRPC integration guides
- Included interceptor configuration examples
- Updated troubleshooting documentation
[0.5.1] - 2025-01-15¶
Stability¶
- Enhanced FastAPI middleware reliability
- Improved response processing efficiency
- Optimized request handling performance
- Fixed edge cases in error management
[0.5.0] - 2025-01-10¶
Features¶
- FastAPI Integration: Complete web framework support:
- Custom middleware components
- Request/response processors
- Standardized error handling
- Response formatting utilities
Documentation¶
- Added FastAPI integration guides
- Included middleware configuration examples
- Updated API documentation
[0.4.0] - 2025-01-05¶
Features¶
- Configuration System: Flexible environment management:
- Environment variable support
- Type-safe configuration validation
- Default value management
- Override capabilities
Documentation¶
- Added configuration system guides
- Included environment setup examples
- Updated validation documentation
[0.3.0] - 2024-12-25¶
Features¶
- Core Utilities: Comprehensive helper functions:
- Date/time manipulation with timezone support
- String processing and formatting
- Common development utilities
- Type conversion helpers
Documentation¶
- Added utility function reference
- Included usage examples
- Updated API documentation
[0.2.0] - 2024-12-20¶
Architecture¶
- Hexagonal Architecture: Core implementation:
- Ports and adapters pattern
- Clean architecture principles
- Domain-driven design
- Base entity models
Documentation¶
- Added architecture overview
- Included design pattern guides
- Updated component documentation
[0.1.0] - 2025-02-21¶
Features¶
- Initial Release: Project foundation:
- Core project structure
- Basic framework components
- Configuration system
- CI/CD pipeline with GitHub Actions
Documentation¶
- Added initial documentation
- Included getting started guide
- Created contribution guidelines