Skip to content

Commit f03af18

Browse files
committed
[core] Tweak submitters registration to allow submitters from external plugins
1 parent f044cd0 commit f03af18

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

meshroom/core/__init__.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
391401
def 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

410420
def 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

Comments
 (0)