Coverage report: 84%

Files Functions Classes

coverage.py v7.16.1, created at 2026-09-17 20:20 +0000

      Statements   Branches   Total
File function   coverage statements missing excluded   coverage branches partial   coverage
src/lpip/__init__.py _pyproject_version   0% 5 5 0   0% 2 0   0%
src/lpip/__init__.py format_cli_version   100% 1 0 0   100% 0 0   100%
src/lpip/__init__.py (no function)   83% 12 2 0   100% 0 0   83%
src/lpip/cache.py catalog_identity_hash   100% 2 0 0   100% 0 0   100%
src/lpip/cache.py catalog_cache_paths   100% 3 0 0   100% 0 0   100%
src/lpip/cache.py read_last_success   62% 16 6 0   67% 6 2   64%
src/lpip/cache.py write_last_success   79% 14 3 0   67% 6 2   75%
src/lpip/cache.py needs_auto_refresh   86% 7 1 0   75% 4 1   82%
src/lpip/cache.py should_fetch   100% 5 0 0   100% 4 0   100%
src/lpip/cache.py _repo_ready   100% 2 0 0   100% 0 0   100%
src/lpip/cache.py ensure_catalog_checkout   100% 13 0 0   75% 8 2   90%
src/lpip/cache.py _rmtree   100% 2 0 0   100% 0 0   100%
src/lpip/cache.py _rmtree._onerror   0% 2 2 0   100% 0 0   0%
src/lpip/cache.py purge_catalog_cache   100% 4 0 0   50% 2 1   83%
src/lpip/cache.py (no function)   100% 31 0 0   100% 0 0   100%
src/lpip/catalog.py Catalog.find   100% 5 0 0   100% 4 0   100%
src/lpip/catalog.py Catalog.get   100% 4 0 0   100% 4 0   100%
src/lpip/catalog.py Catalog.sorted_by_name   100% 1 0 0   100% 0 0   100%
src/lpip/catalog.py load_catalog   95% 21 1 0   90% 10 1   94%
src/lpip/catalog.py _package_from_table   83% 24 4 0   86% 14 2   84%
src/lpip/catalog.py local_catalog_path   100% 1 0 0   100% 0 0   100%
src/lpip/catalog.py local_path_for_source   100% 2 0 0   100% 0 0   100%
src/lpip/catalog.py catalog_file_in_repo   67% 6 2 0   50% 4 2   60%
src/lpip/catalog.py resolve_source_location   86% 7 1 0   75% 4 1   82%
src/lpip/catalog.py resolve_catalog_location   0% 1 1 0   100% 0 0   0%
src/lpip/catalog.py git_sources   100% 1 0 0   100% 0 0   100%
src/lpip/catalog.py planned_git_cache_paths_for   67% 3 1 0   50% 2 1   60%
src/lpip/catalog.py planned_git_cache_paths   0% 1 1 0   100% 0 0   0%
src/lpip/catalog.py purge_git_catalog_cache   0% 3 3 0   0% 2 0   0%
src/lpip/catalog.py purge_all_git_catalog_caches   75% 4 1 0   50% 2 1   67%
src/lpip/catalog.py _package_definition   100% 1 0 0   100% 0 0   100%
src/lpip/catalog.py load_merged_catalog   100% 19 0 0   100% 8 0   100%
src/lpip/catalog.py load_catalog_for_config   100% 2 0 0   100% 0 0   100%
src/lpip/catalog.py normalize_package_for_catalog   80% 5 1 0   50% 2 1   71%
src/lpip/catalog.py _validate_new_package   67% 3 1 0   50% 2 1   60%
src/lpip/catalog.py resolve_authoring_catalog_path   100% 3 0 0   100% 0 0   100%
src/lpip/catalog.py write_catalog_init_template   100% 5 0 0   100% 2 0   100%
src/lpip/catalog.py add_package_to_catalog_file   90% 29 3 0   92% 12 1   90%
src/lpip/catalog.py (no function)   100% 52 0 0   100% 0 0   100%
src/lpip/cli.py _print_version_and_exit   100% 3 0 0   100% 2 0   100%
src/lpip/cli.py _invoked_as_lpipx   100% 3 0 0   100% 0 0   100%
src/lpip/cli.py _root   100% 2 0 0   100% 0 0   100%
src/lpip/cli.py _load_catalog   100% 3 0 0   100% 0 0   100%
src/lpip/cli.py format_list_table   92% 13 1 0   75% 4 1   88%
src/lpip/cli.py format_list_table._line   100% 1 0 0   100% 0 0   100%
src/lpip/cli.py _git_needed_reason   88% 8 1 0   75% 8 2   81%
src/lpip/cli.py doctor   77% 22 5 0   75% 8 2   77%
src/lpip/cli.py validate   100% 14 0 0   100% 4 0   100%
src/lpip/cli.py _install_requirement   90% 10 1 0   83% 6 1   88%
src/lpip/cli.py _run_install   91% 43 4 0   86% 28 4   89%
src/lpip/cli.py install   100% 2 0 0   100% 0 0   100%
src/lpip/cli.py upgrade   100% 2 0 0   100% 0 0   100%
src/lpip/cli.py list_packages   100% 6 0 0   100% 0 0   100%
src/lpip/cli.py show   100% 14 0 0   50% 2 1   94%
src/lpip/cli.py _run_versions   100% 8 0 0   100% 0 0   100%
src/lpip/cli.py version   100% 1 0 0   100% 0 0   100%
src/lpip/cli.py versions   100% 1 0 0   100% 0 0   100%
src/lpip/cli.py index_versions   100% 1 0 0   100% 0 0   100%
src/lpip/cli.py export_requirements   100% 7 0 0   100% 2 0   100%
src/lpip/cli.py config_init   100% 7 0 0   100% 0 0   100%
src/lpip/cli.py config_show   50% 6 3 0   100% 0 0   50%
src/lpip/cli.py config_get   100% 7 0 0   100% 0 0   100%
src/lpip/cli.py config_set   100% 6 0 0   100% 0 0   100%
src/lpip/cli.py config_unset   50% 6 3 0   100% 0 0   50%
src/lpip/cli.py _blank_to_none   100% 4 0 0   100% 2 0   100%
src/lpip/cli.py catalog_init   100% 7 0 0   100% 0 0   100%
src/lpip/cli.py catalog_add   90% 30 3 0   62% 16 6   80%
src/lpip/cli.py catalog_refresh   64% 14 5 0   67% 6 2   65%
src/lpip/cli.py catalog_path   62% 13 5 0   75% 4 1   65%
src/lpip/cli.py catalog_purge   62% 8 3 0   100% 2 0   70%
src/lpip/cli.py source_list   50% 6 3 0   100% 0 0   50%
src/lpip/cli.py source_add   50% 6 3 0   100% 0 0   50%
src/lpip/cli.py source_remove   50% 6 3 0   100% 0 0   50%
src/lpip/cli.py main   0% 1 1 0   100% 0 0   0%
src/lpip/cli.py (no function)   100% 84 0 0   100% 0 0   100%
src/lpip/config.py platform_dirs   100% 1 0 0   100% 0 0   100%
src/lpip/config.py default_user_config_path   100% 1 0 0   100% 0 0   100%
src/lpip/config.py default_user_cache_dir   100% 1 0 0   100% 0 0   100%
src/lpip/config.py find_git_root   100% 6 0 0   100% 4 0   100%
src/lpip/config.py workspace_config_path   100% 1 0 0   100% 0 0   100%
src/lpip/config.py load_effective_config   100% 8 0 0   100% 0 0   100%
src/lpip/config.py resolve_init_target   90% 10 1 0   75% 4 1   86%
src/lpip/config.py write_init_template   100% 5 0 0   100% 2 0   100%
src/lpip/config.py _writable_config_path   75% 4 1 0   50% 2 1   67%
src/lpip/config.py _split_config_key   80% 10 2 0   67% 6 2   75%
src/lpip/config.py _parse_set_value   18% 22 18 0   12% 16 2   16%
src/lpip/config.py _load_tomlkit   50% 4 2 0   100% 0 0   50%
src/lpip/config.py _dump_tomlkit   100% 1 0 0   100% 0 0   100%
src/lpip/config.py _toml_table   100% 1 0 0   100% 0 0   100%
src/lpip/config.py set_config_key   89% 9 1 0   50% 2 1   82%
src/lpip/config.py unset_config_key   100% 8 0 0   50% 2 1   90%
src/lpip/config.py format_config_value   100% 4 0 0   100% 2 0   100%
src/lpip/config.py format_effective_config   78% 9 2 0   50% 2 1   73%
src/lpip/config.py _source_location   33% 6 4 0   25% 4 1   30%
src/lpip/config.py format_sources_table   100% 9 0 0   100% 2 0   100%
src/lpip/config.py format_sources_table._line   100% 1 0 0   100% 0 0   100%
src/lpip/config.py _validate_source_name   75% 4 1 0   50% 2 1   67%
src/lpip/config.py _source_table   55% 11 5 0   17% 6 1   41%
src/lpip/config.py _migrate_legacy_source   0% 12 12 0   0% 6 0   0%
src/lpip/config.py add_configured_source   82% 22 4 0   71% 14 4   78%
src/lpip/config.py remove_configured_source   82% 22 4 0   67% 12 4   76%
src/lpip/config.py _select_persistent_file   94% 18 1 0   79% 14 3   88%
src/lpip/config.py _read_config_file   83% 23 4 0   86% 14 2   84%
src/lpip/config.py _section   83% 6 1 0   75% 4 1   80%
src/lpip/config.py _apply_env_and_cli   100% 18 0 0   100% 2 0   100%
src/lpip/config.py _apply_env_and_cli.overlay   100% 2 0 0   100% 2 0   100%
src/lpip/config.py _opt   50% 4 2 0   100% 0 0   50%
src/lpip/config.py _parse_source_config   76% 21 5 0   83% 6 1   78%
src/lpip/config.py _build_effective   85% 20 3 0   70% 10 3   80%
src/lpip/config.py (no function)   100% 62 0 0   100% 0 0   100%
src/lpip/errors.py LpipError.__init__   100% 4 0 0   100% 0 0   100%
src/lpip/errors.py LpipError.format   100% 6 0 0   75% 4 1   90%
src/lpip/errors.py InstallRevisionEqualsConflictError.__init__   100% 1 0 0   100% 0 0   100%
src/lpip/errors.py RequirementsParseError.__init__   100% 4 0 0   50% 2 1   83%
src/lpip/errors.py UnsupportedCatalogSpecifierError.__init__   100% 1 0 0   100% 0 0   100%
src/lpip/errors.py CatalogExtrasNotSupportedError.__init__   0% 1 1 0   100% 0 0   0%
src/lpip/errors.py VersionTagNotFoundError.__init__   100% 1 0 0   100% 0 0   100%
src/lpip/errors.py UnknownPackageError.__init__   100% 2 0 0   100% 0 0   100%
src/lpip/errors.py TomlParseError.__init__   100% 4 0 0   50% 2 1   83%
src/lpip/errors.py UnknownTomlKeyError.__init__   100% 3 0 0   100% 0 0   100%
src/lpip/errors.py CatalogSchemaError.__init__   100% 1 0 0   100% 0 0   100%
src/lpip/errors.py ConfigSchemaError.__init__   100% 1 0 0   100% 0 0   100%
src/lpip/errors.py MissingRevisionError.__init__   100% 2 0 0   100% 0 0   100%
src/lpip/errors.py DisallowedSchemeError.__init__   100% 4 0 0   100% 0 0   100%
src/lpip/errors.py SubdirectoryEscapeError.__init__   100% 2 0 0   100% 0 0   100%
src/lpip/errors.py GitNotFoundError.__init__   100% 1 0 0   100% 0 0   100%
src/lpip/errors.py PipxNotFoundError.__init__   100% 1 0 0   100% 0 0   100%
src/lpip/errors.py GitCommandError.__init__   100% 5 0 0   50% 2 1   86%
src/lpip/errors.py CatalogAlreadyExistsError.__init__   100% 1 0 0   100% 0 0   100%
src/lpip/errors.py ConfigAlreadyExistsError.__init__   100% 1 0 0   100% 0 0   100%
src/lpip/errors.py UnsupportedAuthoringUrlError.__init__   0% 2 2 0   100% 0 0   0%
src/lpip/errors.py PackageAlreadyExistsError.__init__   100% 2 0 0   100% 0 0   100%
src/lpip/errors.py MissingCatalogAddFieldsError.__init__   100% 1 0 0   100% 0 0   100%
src/lpip/errors.py InvalidPackageNameError.__init__   0% 1 1 0   100% 0 0   0%
src/lpip/errors.py InvalidSourceNameError.__init__   0% 1 1 0   100% 0 0   0%
src/lpip/errors.py SourceAlreadyExistsError.__init__   0% 1 1 0   100% 0 0   0%
src/lpip/errors.py SourceNotFoundError.__init__   0% 1 1 0   100% 0 0   0%
src/lpip/errors.py CatalogFileNotFoundError.__init__   100% 1 0 0   100% 0 0   100%
src/lpip/errors.py (no function)   100% 59 0 0   100% 0 0   100%
src/lpip/gitutils.py find_git_executable   90% 20 2 0   71% 14 4   82%
src/lpip/gitutils.py require_git   100% 4 0 0   100% 2 0   100%
src/lpip/gitutils.py run_git   100% 7 0 0   100% 2 0   100%
src/lpip/gitutils.py git_ls_remote_tags   80% 15 3 0   62% 8 3   74%
src/lpip/gitutils.py git_clone   100% 2 0 0   100% 0 0   100%
src/lpip/gitutils.py git_fetch   100% 1 0 0   100% 0 0   100%
src/lpip/gitutils.py git_checkout   100% 1 0 0   100% 0 0   100%
src/lpip/gitutils.py git_current_revision   0% 1 1 0   100% 0 0   0%
src/lpip/gitutils.py (no function)   100% 18 0 0   100% 0 0   100%
src/lpip/models.py EffectiveConfig.source   100% 1 0 0   100% 0 0   100%
src/lpip/models.py (no function)   100% 45 0 0   100% 0 0   100%
src/lpip/pipwrap.py render_requirement   100% 6 0 0   100% 4 0   100%
src/lpip/pipwrap.py render_catalog_install   100% 9 0 0   100% 6 0   100%
src/lpip/pipwrap.py format_pip_install_command   100% 2 0 0   100% 0 0   100%
src/lpip/pipwrap.py pip_install_argv   100% 5 0 0   100% 2 0   100%
src/lpip/pipwrap.py run_pip_install   100% 2 0 0   100% 0 0   100%
src/lpip/pipwrap.py (no function)   100% 14 0 0   100% 0 0   100%
src/lpip/pipxutils.py find_pipx_executable   0% 3 3 0   100% 0 0   0%
src/lpip/pipxutils.py require_pipx   0% 4 4 0   0% 2 0   0%
src/lpip/pipxutils.py pipx_install_argv   100% 1 0 0   100% 0 0   100%
src/lpip/pipxutils.py format_pipx_install_command   100% 1 0 0   100% 0 0   100%
src/lpip/pipxutils.py run_pipx_install   100% 2 0 0   100% 0 0   100%
src/lpip/pipxutils.py (no function)   100% 12 0 0   100% 0 0   100%
src/lpip/reqfile.py iter_requirement_lines   89% 9 1 0   88% 8 1   88%
src/lpip/reqfile.py requirement_name   100% 6 0 0   100% 2 0   100%
src/lpip/reqfile.py parse_catalog_request   69% 16 5 0   83% 6 1   73%
src/lpip/reqfile.py load_requirement_lines   75% 4 1 0   50% 2 1   67%
src/lpip/reqfile.py (no function)   100% 10 0 0   100% 0 0   100%
src/lpip/validation.py first_unknown_key   100% 4 0 0   100% 2 0   100%
src/lpip/validation.py optional_str   71% 7 2 0   75% 4 1   73%
src/lpip/validation.py subdirectory_escapes_repo   80% 15 3 0   67% 12 4   74%
src/lpip/validation.py url_scheme   100% 1 0 0   100% 0 0   100%
src/lpip/validation.py _scp_to_git_ssh   100% 2 0 0   100% 0 0   100%
src/lpip/validation.py normalize_authoring_git_url   88% 16 2 0   70% 10 3   81%
src/lpip/validation.py toml_posix_path   100% 1 0 0   100% 0 0   100%
src/lpip/validation.py normalize_git_file_url   100% 9 0 0   100% 6 0   100%
src/lpip/validation.py to_git_remote_url   100% 9 0 0   100% 6 0   100%
src/lpip/validation.py (no function)   100% 26 0 0   100% 0 0   100%
src/lpip/versions.py version_from_tag   100% 9 0 0   100% 4 0   100%
src/lpip/versions.py select_tag_for_version   80% 5 1 0   75% 4 1   78%
src/lpip/versions.py collect_version_refs   100% 9 0 0   100% 6 0   100%
src/lpip/versions.py unversioned_tags   100% 1 0 0   100% 0 0   100%
src/lpip/versions.py format_versions_report   82% 11 2 0   75% 4 1   80%
src/lpip/versions.py tag_for_version   100% 6 0 0   100% 4 0   100%
src/lpip/versions.py list_package_versions   100% 4 0 0   100% 0 0   100%
src/lpip/versions.py (no function)   100% 23 0 0   100% 0 0   100%
Total     88% 1557 193 0   74% 468 93   84%

No items found using the specified filter.