@@ -29,10 +29,26 @@ def query_pkg_info(path: pathlib.Path) -> Version:
29
29
30
30
def query_package_folder (path : pathlib .Path , search_parent_directories : bool = False ) -> Version :
31
31
"""Get version from Python package folder."""
32
+ global_metadata_json_paths , global_pkg_info_paths = [], []
33
+ if path .joinpath ('pyproject.toml' ).exists () or path .joinpath ('setup.py' ).exists ():
34
+ metadata_json_paths = list (path .glob ('*.dist-info/metadata.json' ))
35
+ pkg_info_paths = list (path .glob ('*.egg-info/PKG-INFO' ))
36
+ pkg_info_paths += list (path .glob ('*.dist-info/METADATA' ))
37
+ if len (metadata_json_paths ) == 1 and not pkg_info_paths :
38
+ return query_metadata_json (metadata_json_paths [0 ])
39
+ if not metadata_json_paths and len (pkg_info_paths ) == 1 :
40
+ return query_pkg_info (pkg_info_paths [0 ])
41
+ _LOG .debug (
42
+ 'in %s found pyproject.toml or setup.py, as well as'
43
+ ' %i JSON metadata: %s and %i PKG-INFO metadata: %s'
44
+ ' - unable to infer package metadata, continuing search' ,
45
+ path , len (metadata_json_paths ), metadata_json_paths , len (pkg_info_paths ),
46
+ pkg_info_paths )
47
+ global_metadata_json_paths .extend (metadata_json_paths )
48
+ global_pkg_info_paths .extend (pkg_info_paths )
32
49
paths = [path ]
33
50
if search_parent_directories :
34
51
paths += path .parents
35
- metadata_json_paths , pkg_info_paths = None , None
36
52
for pth in paths :
37
53
metadata_json_paths = list (pth .parent .glob (f'{ pth .name } *.dist-info/metadata.json' ))
38
54
pkg_info_paths = list (pth .parent .glob (f'{ pth .name } *.egg-info/PKG-INFO' ))
@@ -41,4 +57,13 @@ def query_package_folder(path: pathlib.Path, search_parent_directories: bool = F
41
57
return query_metadata_json (metadata_json_paths [0 ])
42
58
if not metadata_json_paths and len (pkg_info_paths ) == 1 :
43
59
return query_pkg_info (pkg_info_paths [0 ])
44
- raise ValueError (paths , metadata_json_paths , pkg_info_paths )
60
+ _LOG .debug (
61
+ 'in %s found %i JSON metadata: %s and %i PKG-INFO metadata: %s'
62
+ ' - unable to infer package metadata, continuing search' ,
63
+ pth , len (metadata_json_paths ), metadata_json_paths , len (pkg_info_paths ), pkg_info_paths )
64
+ global_metadata_json_paths .extend (metadata_json_paths )
65
+ global_pkg_info_paths .extend (pkg_info_paths )
66
+ raise ValueError (
67
+ f'unable to infer package metadata from the following paths { paths } '
68
+ f'- found { len (global_metadata_json_paths )} JSON metadata: { global_metadata_json_paths } '
69
+ f' and { len (global_pkg_info_paths )} PKG-INFO metadata: { global_pkg_info_paths } ' )
0 commit comments