File tree Expand file tree Collapse file tree 1 file changed +11
-2
lines changed
graalpython/lib-graalpython Expand file tree Collapse file tree 1 file changed +11
-2
lines changed Original file line number Diff line number Diff line change @@ -65,7 +65,8 @@ def __getattr__(key, default=None):
6565 try :
6666 return type (modname + key )
6767 except KeyError :
68- pass
68+ # allow walking through not-yet-classloaded packages
69+ return JavaPackageLoader ._create_module (loadname )
6970 raise AttributeError (key )
7071 return __getattr__
7172 else :
@@ -132,12 +133,20 @@ class JavaImportFinder:
132133 def find_spec (fullname , path , target = None ):
133134 if JavaPackageLoader .is_java_package (fullname ):
134135 return _frozen_importlib .ModuleSpec (fullname , JavaPackageLoader , is_package = True )
136+ elif path == __path__ :
137+ try :
138+ # do not rely on name conventions. check if it's a type,
139+ # otherwise treat it as a not-yet-classloaded package
140+ type (fullname )
141+ return _frozen_importlib .ModuleSpec (fullname , JavaTypeLoader , is_package = False )
142+ except KeyError :
143+ return _frozen_importlib .ModuleSpec (fullname , JavaPackageLoader , is_package = True )
135144 else :
136145 try :
137146 type (fullname )
138147 return _frozen_importlib .ModuleSpec (fullname , JavaTypeLoader , is_package = False )
139148 except KeyError :
140- pass
149+ pass # when importing from the implicit top-level java module, we only allow types
141150 else :
142151 @staticmethod
143152 def find_spec (fullname , path , target = None ):
You can’t perform that action at this time.
0 commit comments