| 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% |