Coverage report: 100%

Files Functions Classes

coverage.py v7.13.5, created at 2026-03-23 14:54 +0000

      Statements   Branches   Total
File function   coverage statements missing excluded   coverage branches partial   coverage
src / app / __init__.py (no function)   100% 1 0 0   100% 0 0   100%
src / app / main.py greet   100% 1 0 0   100% 0 0   100%
src / app / main.py main   100% 2 0 0   100% 0 0   100%
src / app / main.py (no function)   100% 5 0 2   100% 0 0   100%
src / app / secure_system.py UserNotFoundError.__init__   100% 2 0 0   100% 0 0   100%
src / app / secure_system.py UserAlreadyExistsError.__init__   100% 2 0 0   100% 0 0   100%
src / app / secure_system.py UserRepository.save   100% 0 0 7   100% 0 0   100%
src / app / secure_system.py UserRepository.get_by_id   100% 0 0 10   100% 0 0   100%
src / app / secure_system.py InMemoryUserRepository.__init__   100% 1 0 0   100% 0 0   100%
src / app / secure_system.py InMemoryUserRepository.save   100% 1 0 0   100% 0 0   100%
src / app / secure_system.py InMemoryUserRepository.get_by_id   100% 1 0 0   100% 0 0   100%
src / app / secure_system.py UserService.__init__   100% 1 0 0   100% 0 0   100%
src / app / secure_system.py UserService.create_user   100% 10 0 0   100% 0 0   100%
src / app / secure_system.py UserService.get_user   100% 5 0 0   100% 2 0   100%
src / app / secure_system.py (no function)   100% 35 0 4   100% 0 0   100%
src / taipanstack / __init__.py (no function)   100% 5 0 0   100% 0 0   100%
src / taipanstack / config / __init__.py (no function)   100% 3 0 0   100% 0 0   100%
src / taipanstack / config / generators.py _generate_ruff_config   100% 1 0 0   100% 0 0   100%
src / taipanstack / config / generators.py _generate_mypy_config   100% 1 0 0   100% 0 0   100%
src / taipanstack / config / generators.py _generate_pytest_config   100% 1 0 0   100% 0 0   100%
src / taipanstack / config / generators.py _generate_coverage_config   100% 0 0 1   100% 0 0   100%
src / taipanstack / config / generators.py generate_pyproject_config   100% 3 0 0   100% 0 0   100%
src / taipanstack / config / generators.py _generate_bandit_hook   100% 2 0 0   100% 0 0   100%
src / taipanstack / config / generators.py _generate_safety_hook   100% 1 0 0   100% 0 0   100%
src / taipanstack / config / generators.py _generate_semgrep_hook   100% 1 0 0   100% 0 0   100%
src / taipanstack / config / generators.py _generate_detect_secrets_hook   100% 1 0 0   100% 0 0   100%
src / taipanstack / config / generators.py _generate_paranoid_hooks   100% 1 0 0   100% 0 0   100%
src / taipanstack / config / generators.py generate_pre_commit_config   100% 12 0 0   100% 10 0   100%
src / taipanstack / config / generators.py generate_dependabot_config   100% 1 0 0   100% 0 0   100%
src / taipanstack / config / generators.py generate_security_policy   100% 1 0 0   100% 0 0   100%
src / taipanstack / config / generators.py generate_editorconfig   100% 1 0 0   100% 0 0   100%
src / taipanstack / config / generators.py write_config_file   100% 7 0 0   100% 4 0   100%
src / taipanstack / config / generators.py (no function)   100% 17 0 0   100% 0 0   100%
src / taipanstack / config / models.py StackConfig.validate_project_name   100% 5 0 0   100% 2 0   100%
src / taipanstack / config / models.py StackConfig.validate_python_version   100% 10 0 0   100% 4 0   100%
src / taipanstack / config / models.py StackConfig.validate_project_dir   100% 5 0 0   100% 2 0   100%
src / taipanstack / config / models.py StackConfig.validate_config_consistency   100% 5 0 0   100% 2 0   100%
src / taipanstack / config / models.py StackConfig.to_target_version   100% 1 0 0   100% 0 0   100%
src / taipanstack / config / models.py (no function)   100% 49 0 0   100% 0 0   100%
src / taipanstack / config / version_config.py VersionRecommendations.to_dict   100% 1 0 0   100% 0 0   100%
src / taipanstack / config / version_config.py _get_311_recommendations   100% 1 0 0   100% 0 0   100%
src / taipanstack / config / version_config.py _get_312_recommendations   100% 1 0 0   100% 0 0   100%
src / taipanstack / config / version_config.py _get_313_recommendations   100% 2 0 0   100% 0 0   100%
src / taipanstack / config / version_config.py _get_314_recommendations   100% 2 0 0   100% 0 0   100%
src / taipanstack / config / version_config.py get_version_recommendations   100% 7 0 0   100% 6 0   100%
src / taipanstack / config / version_config.py (no function)   100% 30 0 2   100% 0 0   100%
src / taipanstack / core / __init__.py (no function)   100% 3 0 0   100% 0 0   100%
src / taipanstack / core / compat.py _check_jit_available   100% 4 0 2   100% 0 0   100%
src / taipanstack / core / compat.py _check_free_threading_available   100% 8 0 2   100% 2 0   100%
src / taipanstack / core / compat.py _check_mimalloc_available   100% 8 0 0   100% 2 0   100%
src / taipanstack / core / compat.py _check_tail_call_interpreter   100% 1 0 0   100% 0 0   100%
src / taipanstack / core / compat.py is_experimental_enabled   100% 5 0 0   100% 2 0   100%
src / taipanstack / core / compat.py get_optimization_level   100% 8 0 0   100% 2 0   100%
src / taipanstack / core / compat.py PythonFeatures.to_dict   100% 1 0 0   100% 0 0   100%
src / taipanstack / core / compat.py get_features   100% 17 0 0   100% 8 0   100%
src / taipanstack / core / compat.py get_python_info   100% 3 0 0   100% 0 0   100%
src / taipanstack / core / compat.py (no function)   100% 56 0 0   100% 0 0   100%
src / taipanstack / core / optimizations.py OptimizationResult.to_dict   100% 1 0 0   100% 0 0   100%
src / taipanstack / core / optimizations.py get_optimization_profile   100% 20 0 0   100% 12 0   100%
src / taipanstack / core / optimizations.py _apply_gc_tuning   100% 6 0 0   100% 0 0   100%
src / taipanstack / core / optimizations.py _apply_gc_freeze   100% 8 0 0   100% 4 0   100%
src / taipanstack / core / optimizations.py _apply_experimental   100% 8 0 0   100% 6 0   100%
src / taipanstack / core / optimizations.py apply_optimizations   100% 21 0 0   100% 12 0   100%
src / taipanstack / core / optimizations.py get_recommended_thread_pool_size   100% 4 0 0   100% 0 0   100%
src / taipanstack / core / optimizations.py should_use_slots   100% 1 0 0   100% 0 0   100%
src / taipanstack / core / optimizations.py should_use_frozen_dataclass   100% 1 0 0   100% 0 0   100%
src / taipanstack / core / optimizations.py (no function)   100% 46 0 0   100% 0 0   100%
src / taipanstack / core / result.py safe   100% 0 0 1   100% 0 0   100%
src / taipanstack / core / result.py safe   100% 0 0 1   100% 0 0   100%
src / taipanstack / core / result.py safe   100% 7 0 0   100% 2 0   100%
src / taipanstack / core / result.py safe.async_wrapper   100% 5 0 0   100% 0 0   100%
src / taipanstack / core / result.py safe.wrapper   100% 5 0 0   100% 0 0   100%
src / taipanstack / core / result.py SafeFromDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / core / result.py SafeFromDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / core / result.py safe_from   100% 2 0 0   100% 0 0   100%
src / taipanstack / core / result.py safe_from.decorator   100% 7 0 0   100% 2 0   100%
src / taipanstack / core / result.py safe_from.decorator.async_wrapper   100% 5 0 0   100% 0 0   100%
src / taipanstack / core / result.py safe_from.decorator.wrapper   100% 5 0 0   100% 0 0   100%
src / taipanstack / core / result.py collect_results   100% 8 0 0   100% 2 0   100%
src / taipanstack / core / result.py map_async   100% 0 0 1   100% 0 0   100%
src / taipanstack / core / result.py map_async   100% 0 0 1   100% 0 0   100%
src / taipanstack / core / result.py map_async   100% 0 0 1   100% 0 0   100%
src / taipanstack / core / result.py map_async   100% 5 0 0   100% 0 0   100%
src / taipanstack / core / result.py and_then_async   100% 0 0 1   100% 0 0   100%
src / taipanstack / core / result.py and_then_async   100% 0 0 1   100% 0 0   100%
src / taipanstack / core / result.py and_then_async   100% 0 0 1   100% 0 0   100%
src / taipanstack / core / result.py and_then_async   100% 5 0 0   100% 0 0   100%
src / taipanstack / core / result.py (no function)   100% 17 0 34   100% 0 0   100%
src / taipanstack / security / __init__.py (no function)   100% 9 0 0   100% 0 0   100%
src / taipanstack / security / decorators.py ValidatorFunc.__call__   100% 0 0 2   100% 0 0   100%
src / taipanstack / security / decorators.py OperationTimeoutError.__init__   100% 3 0 0   100% 0 0   100%
src / taipanstack / security / decorators.py ValidationError.__init__   100% 3 0 0   100% 0 0   100%
src / taipanstack / security / decorators.py validate_inputs   100% 2 0 0   100% 0 0   100%
src / taipanstack / security / decorators.py validate_inputs.decorator   100% 4 0 0   100% 0 0   100%
src / taipanstack / security / decorators.py validate_inputs.decorator.wrapper   100% 12 0 0   100% 6 0   100%
src / taipanstack / security / decorators.py guard_exceptions   100% 3 0 0   100% 0 0   100%
src / taipanstack / security / decorators.py guard_exceptions.decorator   100% 2 0 0   100% 0 0   100%
src / taipanstack / security / decorators.py guard_exceptions.decorator.wrapper   100% 11 0 0   100% 6 0   100%
src / taipanstack / security / decorators.py timeout   100% 3 0 0   100% 0 0   100%
src / taipanstack / security / decorators.py timeout.decorator   100% 2 0 0   100% 0 0   100%
src / taipanstack / security / decorators.py timeout.decorator.wrapper   100% 2 0 2   100% 0 0   100%
src / taipanstack / security / decorators.py _timeout_with_signal   100% 0 0 14   100% 0 0   100%
src / taipanstack / security / decorators.py _timeout_with_signal.handler   100% 0 0 1   100% 0 0   100%
src / taipanstack / security / decorators.py _timeout_with_thread   100% 12 0 0   100% 4 0   100%
src / taipanstack / security / decorators.py _timeout_with_thread.target   100% 4 0 0   100% 0 0   100%
src / taipanstack / security / decorators.py deprecated   100% 3 0 0   100% 0 0   100%
src / taipanstack / security / decorators.py deprecated.decorator   100% 2 0 0   100% 0 0   100%
src / taipanstack / security / decorators.py deprecated.decorator.wrapper   100% 8 0 0   100% 4 0   100%
src / taipanstack / security / decorators.py require_type   100% 2 0 0   100% 0 0   100%
src / taipanstack / security / decorators.py require_type.decorator   100% 4 0 0   100% 0 0   100%
src / taipanstack / security / decorators.py require_type.decorator.wrapper   100% 8 0 0   100% 6 0   100%
src / taipanstack / security / decorators.py (no function)   100% 25 0 7   100% 0 0   100%
src / taipanstack / security / guards.py SecurityError.__init__   100% 3 0 0   100% 0 0   100%
src / taipanstack / security / guards.py _check_traversal_patterns   100% 3 0 0   100% 2 0   100%
src / taipanstack / security / guards.py _resolve_and_check_bounds   100% 8 0 0   100% 2 0   100%
src / taipanstack / security / guards.py _check_symlink_safety   100% 5 0 0   100% 4 0   100%
src / taipanstack / security / guards.py guard_path_traversal   100% 9 0 0   100% 4 0   100%
src / taipanstack / security / guards.py guard_command_injection   100% 17 0 0   100% 12 0   100%
src / taipanstack / security / guards.py guard_file_extension   100% 13 0 0   100% 8 0   100%
src / taipanstack / security / guards.py guard_file_extension.normalize_ext   100% 1 0 0   100% 0 0   100%
src / taipanstack / security / guards.py _check_env_denied   100% 5 0 0   100% 4 0   100%
src / taipanstack / security / guards.py _check_env_sensitive   100% 7 0 0   100% 6 0   100%
src / taipanstack / security / guards.py guard_env_variable   100% 11 0 0   100% 6 0   100%
src / taipanstack / security / guards.py guard_hash_algorithm   100% 9 0 0   100% 6 0   100%
src / taipanstack / security / guards.py _validate_ssrf_url   100% 12 0 2   100% 8 0   100%
src / taipanstack / security / guards.py _check_ip_safety   100% 13 0 0   100% 4 0   100%
src / taipanstack / security / guards.py guard_ssrf   100% 9 0 0   100% 8 0   100%
src / taipanstack / security / guards.py (no function)   100% 32 0 0   100% 0 0   100%
src / taipanstack / security / jwt.py encode_jwt   100% 3 0 0   100% 2 0   100%
src / taipanstack / security / jwt.py decode_jwt   100% 4 0 0   100% 2 0   100%
src / taipanstack / security / jwt.py (no function)   100% 11 0 0   100% 0 0   100%
src / taipanstack / security / models.py _mask_data   100% 14 0 0   100% 12 0   100%
src / taipanstack / security / models.py SecureBaseModel.__str__   100% 1 0 0   100% 0 0   100%
src / taipanstack / security / models.py SecureBaseModel.__repr_args__   100% 4 0 0   100% 4 0   100%
src / taipanstack / security / models.py SecureBaseModel.model_dump   100% 2 0 0   100% 0 0   100%
src / taipanstack / security / models.py SecureBaseModel.model_dump_json   100% 6 0 0   100% 2 0   100%
src / taipanstack / security / models.py (no function)   100% 17 0 0   100% 0 0   100%
src / taipanstack / security / password.py hash_password   100% 4 0 0   100% 2 0   100%
src / taipanstack / security / password.py verify_password   100% 20 0 0   100% 6 0   100%
src / taipanstack / security / password.py (no function)   100% 12 0 0   100% 0 0   100%
src / taipanstack / security / sanitizers.py sanitize_string   100% 18 0 0   100% 12 0   100%
src / taipanstack / security / sanitizers.py sanitize_filename   100% 28 0 4   100% 14 0   100%
src / taipanstack / security / sanitizers.py _clean_path_parts   100% 10 0 0   100% 10 0   100%
src / taipanstack / security / sanitizers.py _apply_base_dir_constraint   100% 12 0 0   100% 6 0   100%
src / taipanstack / security / sanitizers.py sanitize_path   100% 15 0 0   100% 8 0   100%
src / taipanstack / security / sanitizers.py sanitize_env_value   100% 13 0 0   100% 10 0   100%
src / taipanstack / security / sanitizers.py sanitize_sql_identifier   100% 18 0 0   100% 14 0   100%
src / taipanstack / security / sanitizers.py (no function)   100% 16 0 0   100% 0 0   100%
src / taipanstack / security / types.py _validate_safe_url   100% 5 0 0   100% 4 0   100%
src / taipanstack / security / types.py _validate_safe_path   100% 5 0 0   100% 0 0   100%
src / taipanstack / security / types.py _validate_safe_command   100% 5 0 0   100% 0 0   100%
src / taipanstack / security / types.py _validate_safe_project_name   100% 1 0 0   100% 0 0   100%
src / taipanstack / security / types.py _validate_safe_url_format   100% 1 0 0   100% 0 0   100%
src / taipanstack / security / types.py _sanitize_safe_html   100% 1 0 0   100% 0 0   100%
src / taipanstack / security / types.py _validate_safe_sql_identifier   100% 3 0 0   100% 2 0   100%
src / taipanstack / security / types.py (no function)   100% 27 0 0   100% 0 0   100%
src / taipanstack / security / validators.py _validate_type   100% 4 0 0   100% 2 0   100%
src / taipanstack / security / validators.py _check_project_name_length   100% 6 0 0   100% 4 0   100%
src / taipanstack / security / validators.py _check_project_name_chars   100% 14 0 0   100% 8 0   100%
src / taipanstack / security / validators.py _check_project_name_reserved   100% 3 0 0   100% 2 0   100%
src / taipanstack / security / validators.py validate_project_name   100% 5 0 0   100% 0 0   100%
src / taipanstack / security / validators.py validate_python_version   100% 17 0 0   100% 6 0   100%
src / taipanstack / security / validators.py validate_email   100% 16 0 0   100% 8 0   100%
src / taipanstack / security / validators.py validate_url   100% 27 0 0   100% 12 0   100%
src / taipanstack / security / validators.py (no function)   100% 16 0 0   100% 0 0   100%
src / taipanstack / utils / __init__.py (no function)   100% 11 0 0   100% 0 0   100%
src / taipanstack / utils / cache.py CacheDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / utils / cache.py CacheDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / utils / cache.py cached   100% 4 0 0   100% 0 0   100%
src / taipanstack / utils / cache.py cached.get_cache_key   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / cache.py cached.decorator   100% 7 0 0   100% 2 0   100%
src / taipanstack / utils / cache.py cached.decorator.async_wrapper   100% 15 0 0   100% 8 0   100%
src / taipanstack / utils / cache.py cached.decorator.sync_wrapper   100% 15 0 0   100% 8 0   100%
src / taipanstack / utils / cache.py (no function)   100% 11 0 6   100% 0 0   100%
src / taipanstack / utils / circuit_breaker.py CircuitBreakerDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / utils / circuit_breaker.py CircuitBreakerDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / utils / circuit_breaker.py CircuitBreakerError.__init__   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / circuit_breaker.py CircuitBreaker.__init__   100% 4 0 0   100% 0 0   100%
src / taipanstack / utils / circuit_breaker.py CircuitBreaker.state   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / circuit_breaker.py CircuitBreaker.failure_count   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / circuit_breaker.py CircuitBreaker._notify_state_change   100% 4 0 0   100% 4 0   100%
src / taipanstack / utils / circuit_breaker.py CircuitBreaker._should_attempt   100% 19 0 1   100% 8 0   100%
src / taipanstack / utils / circuit_breaker.py CircuitBreaker._record_success   100% 14 0 0   100% 8 0   100%
src / taipanstack / utils / circuit_breaker.py CircuitBreaker._record_failure   100% 18 0 0   100% 10 0   100%
src / taipanstack / utils / circuit_breaker.py CircuitBreaker.reset   100% 6 0 0   100% 0 0   100%
src / taipanstack / utils / circuit_breaker.py CircuitBreaker.__call__   100% 9 0 0   100% 2 0   100%
src / taipanstack / utils / circuit_breaker.py CircuitBreaker.__call__.async_wrapper   100% 9 0 0   100% 2 0   100%
src / taipanstack / utils / circuit_breaker.py CircuitBreaker.__call__.wrapper   100% 9 0 0   100% 2 0   100%
src / taipanstack / utils / circuit_breaker.py circuit_breaker   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / circuit_breaker.py circuit_breaker.decorator   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / circuit_breaker.py (no function)   100% 51 0 7   100% 0 0   100%
src / taipanstack / utils / concurrency.py OverloadError.__init__   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / concurrency.py ConcurrencyLimitDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / utils / concurrency.py ConcurrencyLimitDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / utils / concurrency.py _handle_async_concurrency   100% 4 0 0   100% 0 0   100%
src / taipanstack / utils / concurrency.py _handle_async_concurrency.async_wrapper   100% 12 0 0   100% 4 0   100%
src / taipanstack / utils / concurrency.py _handle_sync_concurrency   100% 4 0 0   100% 0 0   100%
src / taipanstack / utils / concurrency.py _handle_sync_concurrency.wrapper   100% 10 0 0   100% 6 0   100%
src / taipanstack / utils / concurrency.py limit_concurrency   100% 6 0 0   100% 4 0   100%
src / taipanstack / utils / concurrency.py limit_concurrency.decorator   100% 3 0 0   100% 2 0   100%
src / taipanstack / utils / concurrency.py (no function)   100% 16 0 8   100% 0 0   100%
src / taipanstack / utils / context.py get_correlation_id   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / context.py set_correlation_id   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / context.py correlation_scope   100% 4 0 0   100% 0 0   100%
src / taipanstack / utils / context.py (no function)   100% 9 0 0   100% 0 0   100%
src / taipanstack / utils / filesystem.py FileNotFoundErr.__post_init__   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / filesystem.py NotAFileErr.__post_init__   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / filesystem.py _validate_path   100% 7 0 0   100% 4 0   100%
src / taipanstack / utils / filesystem.py FileTooLargeErr.__post_init__   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / filesystem.py safe_read   100% 14 0 0   100% 8 0   100%
src / taipanstack / utils / filesystem.py safe_write   100% 33 0 0   100% 14 0   100%
src / taipanstack / utils / filesystem.py ensure_dir   100% 4 0 0   100% 0 0   100%
src / taipanstack / utils / filesystem.py safe_copy   100% 17 0 0   100% 8 0   100%
src / taipanstack / utils / filesystem.py safe_delete   100% 12 0 0   100% 8 0   100%
src / taipanstack / utils / filesystem.py get_file_hash   100% 8 0 0   100% 2 0   100%
src / taipanstack / utils / filesystem.py find_files   100% 10 0 0   100% 6 0   100%
src / taipanstack / utils / filesystem.py (no function)   100% 45 0 0   100% 0 0   100%
src / taipanstack / utils / logging.py _is_sensitive   100% 3 0 0   100% 2 0   100%
src / taipanstack / utils / logging.py _redact_dict   100% 5 0 0   100% 6 0   100%
src / taipanstack / utils / logging.py mask_sensitive_data_processor   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / logging.py correlation_id_processor   100% 4 0 0   100% 2 0   100%
src / taipanstack / utils / logging.py StackLogger.__init__   100% 9 0 0   100% 2 0   100%
src / taipanstack / utils / logging.py StackLogger.bind   100% 4 0 0   100% 2 0   100%
src / taipanstack / utils / logging.py StackLogger.unbind   100% 5 0 0   100% 4 0   100%
src / taipanstack / utils / logging.py StackLogger._format_message   100% 6 0 0   100% 2 0   100%
src / taipanstack / utils / logging.py StackLogger.debug   100% 3 0 0   100% 2 0   100%
src / taipanstack / utils / logging.py StackLogger.info   100% 3 0 0   100% 2 0   100%
src / taipanstack / utils / logging.py StackLogger.warning   100% 3 0 0   100% 2 0   100%
src / taipanstack / utils / logging.py StackLogger.error   100% 3 0 0   100% 2 0   100%
src / taipanstack / utils / logging.py StackLogger.critical   100% 3 0 0   100% 2 0   100%
src / taipanstack / utils / logging.py StackLogger.exception   100% 3 0 0   100% 2 0   100%
src / taipanstack / utils / logging.py setup_logging   100% 14 0 0   100% 8 0   100%
src / taipanstack / utils / logging.py get_logger   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / logging.py log_operation   100% 3 0 0   100% 0 0   100%
src / taipanstack / utils / logging.py log_operation._log_context   100% 15 0 0   100% 2 0   100%
src / taipanstack / utils / logging.py (no function)   100% 36 0 2   100% 0 0   100%
src / taipanstack / utils / metrics.py TimingStats.avg_time   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py TimingStats.record   100% 4 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py Counter.__init__   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py Counter.increment   100% 3 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py Counter.decrement   100% 3 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py Counter.reset   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py MetricsCollector.__new__   100% 6 0 0   100% 4 0   100%
src / taipanstack / utils / metrics.py MetricsCollector.__init__   100% 7 0 0   100% 2 0   100%
src / taipanstack / utils / metrics.py MetricsCollector.increment   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py MetricsCollector.decrement   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py MetricsCollector.gauge   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py MetricsCollector.get_gauge   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py MetricsCollector.record_time   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py MetricsCollector.timer   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py MetricsCollector.get_counter   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py MetricsCollector.get_timer_stats   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py MetricsCollector.get_all_metrics   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py MetricsCollector.reset   100% 4 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py Timer.__init__   100% 3 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py Timer.__enter__   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py Timer.__exit__   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py timed   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py timed.decorator   100% 5 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py timed.decorator.wrapper   100% 5 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py counted   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py counted.decorator   100% 5 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py counted.decorator.wrapper   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / metrics.py (no function)   100% 58 0 0   100% 0 0   100%
src / taipanstack / utils / rate_limit.py RateLimitError.__init__   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / rate_limit.py RateLimiter.__init__   100% 7 0 0   100% 2 0   100%
src / taipanstack / utils / rate_limit.py RateLimiter.consume   100% 10 0 0   100% 2 0   100%
src / taipanstack / utils / rate_limit.py RateLimitDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / utils / rate_limit.py RateLimitDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / utils / rate_limit.py rate_limit   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / rate_limit.py rate_limit.decorator   100% 8 0 0   100% 2 0   100%
src / taipanstack / utils / rate_limit.py rate_limit.decorator.async_wrapper   100% 3 0 0   100% 2 0   100%
src / taipanstack / utils / rate_limit.py rate_limit.decorator.wrapper   100% 3 0 0   100% 2 0   100%
src / taipanstack / utils / rate_limit.py (no function)   100% 17 0 8   100% 0 0   100%
src / taipanstack / utils / resilience.py FallbackDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / utils / resilience.py FallbackDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / utils / resilience.py fallback   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / resilience.py fallback.decorator   100% 7 0 0   100% 2 0   100%
src / taipanstack / utils / resilience.py fallback.decorator.async_wrapper   100% 10 0 1   100% 2 0   100%
src / taipanstack / utils / resilience.py fallback.decorator.sync_wrapper   100% 10 0 1   100% 2 0   100%
src / taipanstack / utils / resilience.py TimeoutDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / utils / resilience.py TimeoutDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / utils / resilience.py timeout   100% 2 0 0   100% 0 0   100%
src / taipanstack / utils / resilience.py timeout.decorator   100% 7 0 0   100% 2 0   100%
src / taipanstack / utils / resilience.py timeout.decorator.async_wrapper   100% 5 0 0   100% 0 0   100%
src / taipanstack / utils / resilience.py timeout.decorator.sync_wrapper   100% 11 0 0   100% 4 0   100%
src / taipanstack / utils / resilience.py timeout.decorator.sync_wrapper.worker   100% 5 0 0   100% 0 0   100%
src / taipanstack / utils / resilience.py (no function)   100% 16 0 14   100% 0 0   100%
src / taipanstack / utils / retry.py RetryDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / utils / retry.py RetryDecorator.__call__   100% 0 0 1   100% 0 0   100%
src / taipanstack / utils / retry.py RetryError.__init__   100% 3 0 0   100% 0 0   100%
src / taipanstack / utils / retry.py calculate_delay   100% 7 0 0   100% 2 0   100%
src / taipanstack / utils / retry.py _log_retry_attempt   100% 6 0 0   100% 6 0   100%
src / taipanstack / utils / retry.py _log_all_failed   100% 2 0 0   100% 2 0   100%
src / taipanstack / utils / retry.py _raise_retry_error   100% 3 0 0   100% 2 0   100%
src / taipanstack / utils / retry.py retry   100% 3 0 0   100% 0 0   100%
src / taipanstack / utils / retry.py retry.decorator   100% 9 0 0   100% 2 0   100%
src / taipanstack / utils / retry.py retry.decorator.async_wrapper   100% 13 0 0   100% 4 0   100%
src / taipanstack / utils / retry.py retry.decorator.wrapper   100% 13 0 0   100% 4 0   100%
src / taipanstack / utils / retry.py retry_on_exception   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / retry.py Retrier.__init__   100% 4 0 0   100% 0 0   100%
src / taipanstack / utils / retry.py Retrier.__enter__   100% 3 0 0   100% 0 0   100%
src / taipanstack / utils / retry.py Retrier.__exit__   100% 11 0 0   100% 6 0   100%
src / taipanstack / utils / retry.py (no function)   100% 40 0 7   100% 0 0   100%
src / taipanstack / utils / serialization.py default_encoder   100% 9 0 0   100% 6 0   100%
src / taipanstack / utils / serialization.py (no function)   100% 3 0 0   100% 0 0   100%
src / taipanstack / utils / subprocess.py SafeCommandResult.success   100% 1 0 0   100% 0 0   100%
src / taipanstack / utils / subprocess.py SafeCommandResult.raise_on_error   100% 3 0 0   100% 2 0   100%
src / taipanstack / utils / subprocess.py _validate_and_resolve_command   100% 11 0 0   100% 6 0   100%
src / taipanstack / utils / subprocess.py _filter_environment   100% 7 0 0   100% 4 0   100%
src / taipanstack / utils / subprocess.py _execute_command   100% 12 0 2   100% 2 0   100%
src / taipanstack / utils / subprocess.py run_safe_command   100% 13 0 0   100% 8 0   100%
src / taipanstack / utils / subprocess.py (no function)   100% 23 0 0   100% 0 0   100%
Total     100% 2232 0 177   100% 586 0   100%

No items found using the specified filter.