@@ -29,10 +29,26 @@ def query_pkg_info(path: pathlib.Path) -> Version:
2929
3030def query_package_folder (path : pathlib .Path , search_parent_directories : bool = False ) -> Version :
3131 """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 )
3249 paths = [path ]
3350 if search_parent_directories :
3451 paths += path .parents
35- metadata_json_paths , pkg_info_paths = None , None
3652 for pth in paths :
3753 metadata_json_paths = list (pth .parent .glob (f'{ pth .name } *.dist-info/metadata.json' ))
3854 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
4157 return query_metadata_json (metadata_json_paths [0 ])
4258 if not metadata_json_paths and len (pkg_info_paths ) == 1 :
4359 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