@@ -15,8 +15,8 @@ def get_version(java_class_or_python_package) -> str:
15
15
"""
16
16
Return the version of a Java class or Python package.
17
17
18
- For Python package, uses importlib.metadata.version if available
19
- (Python 3.8+), with pkg_resources.get_distribution as a fallback .
18
+ For Python packages, invokes importlib.metadata.version on the given
19
+ object's base __module__ or __package__ (before the first dot symbol) .
20
20
21
21
For Java classes, requires org.scijava:scijava-common on the classpath.
22
22
@@ -32,8 +32,16 @@ def get_version(java_class_or_python_package) -> str:
32
32
VersionUtils = jimport ("org.scijava.util.VersionUtils" )
33
33
return str (VersionUtils .getVersion (java_class_or_python_package ))
34
34
35
- # Assume we were given a Python package name.
36
- return version (java_class_or_python_package )
35
+ # Assume we were given a Python package name or module.
36
+ package_name = None
37
+ if hasattr (java_class_or_python_package , "__module__" ):
38
+ package_name = java_class_or_python_package .__module__
39
+ elif hasattr (java_class_or_python_package , "__package__" ):
40
+ package_name = java_class_or_python_package .__package__
41
+ else :
42
+ package_name = str (java_class_or_python_package )
43
+
44
+ return version (package_name .split ("." )[0 ])
37
45
38
46
39
47
def is_version_at_least (actual_version : str , minimum_version : str ) -> bool :
0 commit comments