All notable changes to the EsmdFHIRClient project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Shared Utilities Package: Created
esmd_sharedpackage to eliminate code duplication- Enhanced
EsmdAuthClientwith token caching, better error handling, and type hints - Improved
ConfigUtilitywith environment variable support and validation - Advanced
loggermodule with file rotation and configurable formatting
- Enhanced
- Comprehensive Documentation: Complete README.md with installation, usage, and API documentation
- Development Tools: Added Makefile with common development commands
- Environment Variable Support: All configuration can now be set via environment variables
- Configuration Templates: Added
config.yaml.templateandenvironment.template - Secure Configuration: Sensitive data (client secrets) now prefer environment variables
- Configuration Validation: Added validation methods for required configuration
- Pytest Configuration: Complete pytest setup with coverage reporting
- Test Fixtures: Comprehensive shared fixtures in
tests/conftest.py - Unit Tests: Sample unit tests for shared utilities with proper mocking
- Test Categories: Markers for unit, integration, network, and slow tests
- Requirements with Version Pinning: Secure, pinned dependencies in
requirements.txt - Comprehensive setup.py: Proper package configuration with optional dependencies
- Type Checking: mypy configuration for strict type checking
- Code Quality Tools: flake8, black, and other development tools
- Git Integration: Comprehensive .gitignore for Python projects
- Code Quality: Pre-commit hooks support and quality checks
- CLI Tools: Entry points for command-line usage
- Development Workflow: Quick setup with
make setup
- Type Hints: Added comprehensive type annotations throughout shared utilities
- Error Handling: Standardized and improved error handling patterns
- Logging: Enhanced logging with structured output and rotation
- Code Structure: Better separation of concerns and modularity
- Dependency Security: Pinned versions to prevent security vulnerabilities
- Credential Management: Moved sensitive data to environment variables
- Token Management: Added token caching and expiration handling
- Configuration Security: Warnings for insecure configuration practices
- API Documentation: Comprehensive docstrings and type information
- Usage Examples: Clear examples for each module and common use cases
- Configuration Guide: Detailed configuration options and best practices
- Development Guide: Setup instructions and contribution guidelines
- Code Duplication: Eliminated duplicate files across modules
- Import Issues: Fixed circular imports and dependency issues
- Configuration Loading: Improved config file discovery and error handling
- Token Refresh: Fixed token expiration and refresh logic
- Package Structure: Proper Python package hierarchy
- Dependency Management: Cleaner dependency resolution
- Module Isolation: Better separation between modules
- Testing Infrastructure: Reliable test setup and execution
- Dependency Pinning: All dependencies are pinned to specific versions
- Environment Variables: Sensitive configuration moved to environment variables
- Token Security: Improved token handling and storage
- Input Validation: Better validation of configuration and input data
- Token Caching: Reduced authentication overhead with intelligent caching
- Configuration Caching: Config loaded once and reused
- Logging Optimization: Efficient logging with rotation and proper levels
- Request Optimization: Better connection handling and timeouts
- Testing Pipeline: Automated testing with coverage reporting
- Code Quality Pipeline: Linting, formatting, and type checking
- Build System: Proper packaging and distribution setup
- Documentation Pipeline: Automated documentation generation
-
Update Imports: Change imports to use shared utilities:
# Old from bundlesubmissionclient.EsmdAuthClient import EsmdAuthClient # New from esmd_shared import EsmdAuthClient
-
Configuration: Update configuration to use environment variables:
# Set environment variables export ESMD_CLIENT_ID="your_client_id" export ESMD_CLIENT_SECRET="your_client_secret"
-
Dependencies: Update requirements and install:
pip install -r requirements.txt
- Environment Setup: Configure environment variables instead of config files
- Logging: Update log file paths and rotation settings
- Security: Remove sensitive data from configuration files
- Monitoring: Use new logging and error handling features
- Import Paths: Some import paths have changed due to shared utilities
- Configuration: Some configuration keys may have changed
- Dependencies: Minimum Python version is now 3.9+
- File Structure: Some files have been moved or consolidated
# Clone repository
git clone https://github.com/your-org/esmd-fhir-client.git
cd esmd-fhir-client
# Set up development environment
make setup
# Run tests
make test
# Check code quality
make quality# All tests
make test
# Unit tests only
make test-unit
# With coverage
make test-cov# Format code
make format
# Lint code
make lint
# Type check
make type-check
# All quality checks
make quality