Manager — Multiflow project manager.¶
This module defines the ProjectManager class.
-
class
admit.ProjectManager.
ProjectManager
(baseDirs=[])[source]¶ Manages parent projects feeding a multiflow project.
Parameters: baseDirs: list of str
Starting parent project directories.
Notes
Managed projects are numbered sequentially beginning with one. A project ID of zero is reserved for the parent project containing this instance. Individual projects can be accessed by indexing the manager object using the corresponding project ID number.
Attributes
_projects: dict of ADMITs Parent project dictionary, keyed by project ID (a positive integer). _baseDirs: dict of project base directories Project directory dictionary, keyed by project ID (a positive integer). Methods
addProject
(baseDir)Adds a project. findTask
(pid, isMatch)Finds AT(s) by arbitrary matching criterion. findTaskAlias
(pid, alias)Finds AT(s) by alias. getProjectDir
(pid)Retrieves project base directory given its ID number. getProjectId
(baseDir)Retrieves project ID number given the base directory. removeProject
(pid)Removes a project. script
(py, baseDir[, proj])Generates a Python script recreating the current project manager. write
()Writes project XML files. -
addProject
(baseDir)[source]¶ Adds a project.
The project must be completely up to date to be accepted.
Parameters: baseDir : str
ADMIT project base directory.
Returns: int
Project ID number, else -1 if the project was rejected (not up-to-date).
Notes
The up-to-date requirement is a safety feature. Managed projects are assumed to be quasi-static since tasks linked from it must provide valid BDP output at the root of the associated multiflow.
-
findTask
(pid, isMatch)[source]¶ Finds AT(s) by arbitrary matching criterion.
Parameters: pid: int
ADMIT project ID number.
isMatch: bool functor(AT)
Match function (returns True/False given an AT argument).
Returns: list of ATs
ADMIT task reference(s) matching the criterion; may be empty.
-
findTaskAlias
(pid, alias)[source]¶ Finds AT(s) by alias.
Parameters: pid: int
ADMIT project ID number.
alias: str
Matching task alias.
Returns: list of ATs
ADMIT task reference(s) matching the alias; may be empty.
-
getProjectDir
(pid)[source]¶ Retrieves project base directory given its ID number.
Parameters: pid: int
Project ID number.
Returns: str
Project base directory, else None if project not found.
-
getProjectId
(baseDir)[source]¶ Retrieves project ID number given the base directory.
Parameters: baseDir: str
Project base directory.
Returns: int
Project ID number, else -1 if project not found.
-
removeProject
(pid)[source]¶ Removes a project.
The project should not have any tasks still linked in the multiflow. Verifying this is the responsibility of the caller (multiflow project).
Parameters: pid : int
Project ID number.
Returns: bool
True if the project was removed successfully, else False.
Notes
This is a low-level interface not normally called by users.
-
script
(py, baseDir, proj='p')[source]¶ Generates a Python script recreating the current project manager.
Parameters: py : file
Open, writable Python file object.
baseDir : str
Master project base directory (ending in ‘/’).
proj : str, optional
Project variable name; defaults to ‘p’.
Returns: None
Notes
This is a low-level method normally called only by Admit.script().
-