@@ -62,10 +62,13 @@ def get_package_dir_for_subclasses_of(clazz):
6262 ).resolve ()
6363 )
6464 elif clazz .__name__ == "Service" :
65+ # here, we'd like to know the Path of the namespace module cryptoadvance.specterext
66+ # but that fails because you cannot import namespace-modules.
67+ # So we take a module that we know exists and take its parent.
6568 return str (
6669 Path (
67- import_module ("cryptoadvance.specter.services " ).__file__
68- ).parent .resolve ()
70+ import_module ("cryptoadvance.specterext.devhelp " ).__file__
71+ ).parent .parent . resolve ()
6972 )
7073 # This is mainly for testing purposes for now
7174 elif clazz .__name__ == "Device" :
@@ -176,53 +179,44 @@ def get_subclasses_for_clazz(clazz, package_dirs: List[str] = None):
176179 f"Iterating on importer={ importer } , module_name={ module_name } is_pkg={ is_pkg } "
177180 )
178181 if clazz .__name__ == "Service" :
182+ # Ignore the stuff lying around in cryptoadvance/specter/services
183+ if importer .path .endswith (
184+ os .path .sep .join (["cryptoadvance" , "specter" , "services" ])
185+ ):
186+ continue
179187 try :
180-
181- module = import_module (
182- f"cryptoadvance.specter.services.{ module_name } .service"
183- )
184- logger .debug (
185- f" Imported cryptoadvance.specter.services.{ module_name } .service"
186- )
187- except ModuleNotFoundError :
188- # Ignore the stuff lying around in cryptoadvance/specter/services
189- if importer .path .endswith (
190- os .path .sep .join (["cryptoadvance" , "specter" , "services" ])
191- ):
192- continue
188+ module = import_module (f"{ module_name } .service" )
189+ logger .debug (f" Imported { module_name } .service" )
190+ except ModuleNotFoundError as e :
193191 try :
194- module = import_module (f"{ module_name } .service" )
195- logger .debug (f" Imported { module_name } .service" )
192+ # Another style is orgname.specterext.extensionid, for that we have to guess the orgname:
193+ orgname = str (importer ).split (os .path .sep )[- 2 ]
194+ logger .debug (f"guessing orgname: { orgname } " )
195+ module = import_module (
196+ f"{ orgname } .specterext.{ module_name } .service"
197+ )
198+ logger .debug (
199+ f" Imported { orgname } .specterext.{ module_name } .service"
200+ )
196201 except ModuleNotFoundError as e :
197- try :
198- # Another style is orgname.specterext.extensionid, for that we have to guess the orgname:
199- orgname = str (importer ).split (os .path .sep )[- 2 ]
200- logger .debug (f"guessing orgname: { orgname } " )
201- module = import_module (
202- f"{ orgname } .specterext.{ module_name } .service"
203- )
204- logger .debug (
205- f" Imported { orgname } .specterext.{ module_name } .service"
202+ if module_name in str (e .name ) or orgname in str (e .name ):
203+ raise Exception (
204+ f"""
205+ While iterating over { importer } for module { module_name } ,
206+ a Service implementation could not be found in this places:
207+ * cryptoadvance.specter.services.{ module_name } .service
208+ * { module_name } .service
209+ * { orgname } .specterext.{ module_name } .service
210+ Maybe you did forget to do this:
211+ $ pip3 install -e .
212+
213+ OR The Module has been found, but had issues finding Modules itself
214+
215+ { e }
216+ """
206217 )
207- except ModuleNotFoundError as e :
208- if module_name in str (e .name ) or orgname in str (e .name ):
209- raise Exception (
210- f"""
211- While iterating over { importer } for module { module_name } ,
212- a Service implementation could not be found in this places:
213- * cryptoadvance.specter.services.{ module_name } .service
214- * { module_name } .service
215- * { orgname } .specterext.{ module_name } .service
216- Maybe you did forget to do this:
217- $ pip3 install -e .
218-
219- OR The Module has been found, but had issues finding Modules itself
220-
221- { e }
222- """
223- )
224- else :
225- raise e
218+ else :
219+ raise e
226220 elif clazz .__name__ == "SpecterMigration" :
227221 module = import_module (
228222 f"cryptoadvance.specter.util.migrations.{ module_name } "
0 commit comments