@@ -380,14 +380,24 @@ def registerSubmitter(s: BaseSubmitter):
380380 submitters [s .name ] = s
381381
382382
383- def loadSubmitters (folder , packageName ):
383+ def loadSubmitters (folder , packageName ) -> list [ BaseSubmitter ] :
384384 if not os .path .isdir (folder ):
385385 logging .error (f"Submitters folder '{ folder } ' does not exist." )
386386 return
387387
388388 return loadClassesSubmitters (folder , packageName )
389389
390390
391+ def loadAllSubmitters (folder ) -> list [BaseSubmitter ]:
392+ submitters = []
393+ for _ , package , ispkg in pkgutil .iter_modules ([folder ]):
394+ if ispkg :
395+ subs = loadSubmitters (folder , package )
396+ if subs :
397+ submitters .extend (subs )
398+ return submitters
399+
400+
391401def loadPipelineTemplates (folder : str ):
392402 if not os .path .isdir (folder ):
393403 logging .error (f"Pipeline templates folder '{ folder } ' does not exist." )
@@ -408,10 +418,20 @@ def initNodes():
408418
409419
410420def initSubmitters ():
421+ """ Detect and register submitter plugins
422+ Note: Make sure the package name (folder inside the additionalPaths folders)
423+ are unique : so we cannot name them "submitters" because it's already taken
424+ by the submitters package inside meshroom
425+ """
426+ # Load meshroom default submitters
427+ # Use directly loadSubmitters because we don't want any folder except submitters to be registered
428+ subs = loadSubmitters (meshroomFolder , "submitters" )
429+ for sub in subs :
430+ registerSubmitter (sub ())
431+ # Load additional submitters
411432 additionalPaths = EnvVar .getList (EnvVar .MESHROOM_SUBMITTERS_PATH )
412- allSubmittersFolders = [meshroomFolder ] + additionalPaths
413- for folder in allSubmittersFolders :
414- subs = loadSubmitters (folder , "submitters" )
433+ for folder in additionalPaths :
434+ subs = loadAllSubmitters (folder )
415435 for sub in subs :
416436 registerSubmitter (sub ())
417437
0 commit comments