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):
65
65
try :
66
66
return type (modname + key )
67
67
except KeyError :
68
- pass
68
+ # allow walking through not-yet-classloaded packages
69
+ return JavaPackageLoader ._create_module (loadname )
69
70
raise AttributeError (key )
70
71
return __getattr__
71
72
else :
@@ -132,12 +133,20 @@ class JavaImportFinder:
132
133
def find_spec (fullname , path , target = None ):
133
134
if JavaPackageLoader .is_java_package (fullname ):
134
135
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 )
135
144
else :
136
145
try :
137
146
type (fullname )
138
147
return _frozen_importlib .ModuleSpec (fullname , JavaTypeLoader , is_package = False )
139
148
except KeyError :
140
- pass
149
+ pass # when importing from the implicit top-level java module, we only allow types
141
150
else :
142
151
@staticmethod
143
152
def find_spec (fullname , path , target = None ):
You can’t perform that action at this time.
0 commit comments