Coverage report:
84%
hide covered
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.