aiidalab.registry package#
Submodules#
aiidalab.registry.api module#
Generate API endpoints.
aiidalab.registry.apps_index module#
Generate the apps index including all aggregated metadata.
- aiidalab.registry.apps_index._determine_app_name(app_id)[source]#
Currently the app name is identical to its id.
aiidalab.registry.core module#
Core data classes for the app registry.
- class aiidalab.registry.core.AppRegistryData(apps: dict, categories: dict)[source]#
Bases:
object
The app registry data objects (apps and categories).
- __annotations__ = {'apps': <class 'dict'>, 'categories': <class 'dict'>}#
- __dataclass_fields__ = {'apps': Field(name='apps',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'categories': Field(name='categories',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}#
- __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False)#
- __dict__ = mappingproxy({'__module__': 'aiidalab.registry.core', '__annotations__': {'apps': <class 'dict'>, 'categories': <class 'dict'>}, '__doc__': 'The app registry data objects (apps and categories).', 'validate': <function AppRegistryData.validate>, '__dict__': <attribute '__dict__' of 'AppRegistryData' objects>, '__weakref__': <attribute '__weakref__' of 'AppRegistryData' objects>, '__dataclass_params__': _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False), '__dataclass_fields__': {'apps': Field(name='apps',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'categories': Field(name='categories',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}, '__init__': <function AppRegistryData.__init__>, '__repr__': <function AppRegistryData.__repr__>, '__eq__': <function AppRegistryData.__eq__>, '__hash__': None, '__match_args__': ('apps', 'categories')})#
- __eq__(other)#
Return self==value.
- __hash__ = None#
- __match_args__ = ('apps', 'categories')#
- __module__ = 'aiidalab.registry.core'#
- __repr__()#
Return repr(self).
- __weakref__#
list of weak references to the object (if defined)
- validate(schemas: aiidalab.registry.core.AppRegistrySchemas)[source]#
Validate the registry data against the provided registry schemas.
- class aiidalab.registry.core.AppRegistrySchemas(app: dict, apps: dict, apps_index: dict, categories: dict, environment: dict, metadata: dict)[source]#
Bases:
object
The app registry JSON-schema objects.
- __annotations__ = {'app': <class 'dict'>, 'apps': <class 'dict'>, 'apps_index': <class 'dict'>, 'categories': <class 'dict'>, 'environment': <class 'dict'>, 'metadata': <class 'dict'>}#
- __dataclass_fields__ = {'app': Field(name='app',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'apps': Field(name='apps',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'apps_index': Field(name='apps_index',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'categories': Field(name='categories',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'environment': Field(name='environment',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'metadata': Field(name='metadata',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}#
- __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False)#
- __dict__ = mappingproxy({'__module__': 'aiidalab.registry.core', '__annotations__': {'app': <class 'dict'>, 'apps': <class 'dict'>, 'apps_index': <class 'dict'>, 'categories': <class 'dict'>, 'environment': <class 'dict'>, 'metadata': <class 'dict'>}, '__doc__': 'The app registry JSON-schema objects.', 'from_path': <classmethod(<function AppRegistrySchemas.from_path>)>, 'from_package': <classmethod(<function AppRegistrySchemas.from_package>)>, '__dict__': <attribute '__dict__' of 'AppRegistrySchemas' objects>, '__weakref__': <attribute '__weakref__' of 'AppRegistrySchemas' objects>, '__dataclass_params__': _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False), '__dataclass_fields__': {'app': Field(name='app',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'apps': Field(name='apps',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'apps_index': Field(name='apps_index',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'categories': Field(name='categories',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'environment': Field(name='environment',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'metadata': Field(name='metadata',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}, '__init__': <function AppRegistrySchemas.__init__>, '__repr__': <function AppRegistrySchemas.__repr__>, '__eq__': <function AppRegistrySchemas.__eq__>, '__hash__': None, '__match_args__': ('app', 'apps', 'apps_index', 'categories', 'environment', 'metadata')})#
- __eq__(other)#
Return self==value.
- __hash__ = None#
- __init__(app: dict, apps: dict, apps_index: dict, categories: dict, environment: dict, metadata: dict) None #
- __match_args__ = ('app', 'apps', 'apps_index', 'categories', 'environment', 'metadata')#
- __module__ = 'aiidalab.registry.core'#
- __repr__()#
Return repr(self).
- __weakref__#
list of weak references to the object (if defined)
aiidalab.registry.html module#
Generate the app registry website HTML pages.
aiidalab.registry.releases module#
- class aiidalab.registry.releases.Release(environment: aiidalab.environment.Environment, metadata: aiidalab.metadata.Metadata, url: str)[source]#
Bases:
object
- __annotations__ = {'environment': <class 'aiidalab.environment.Environment'>, 'metadata': <class 'aiidalab.metadata.Metadata'>, 'url': <class 'str'>}#
- __dataclass_fields__ = {'environment': Field(name='environment',type=<class 'aiidalab.environment.Environment'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'metadata': Field(name='metadata',type=<class 'aiidalab.metadata.Metadata'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'url': Field(name='url',type=<class 'str'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}#
- __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False)#
- __dict__ = mappingproxy({'__module__': 'aiidalab.registry.releases', '__annotations__': {'environment': <class 'aiidalab.environment.Environment'>, 'metadata': <class 'aiidalab.metadata.Metadata'>, 'url': <class 'str'>}, '__dict__': <attribute '__dict__' of 'Release' objects>, '__weakref__': <attribute '__weakref__' of 'Release' objects>, '__doc__': 'Release(environment: aiidalab.environment.Environment, metadata: aiidalab.metadata.Metadata, url: str)', '__dataclass_params__': _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False), '__dataclass_fields__': {'environment': Field(name='environment',type=<class 'aiidalab.environment.Environment'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'metadata': Field(name='metadata',type=<class 'aiidalab.metadata.Metadata'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'url': Field(name='url',type=<class 'str'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}, '__init__': <function Release.__init__>, '__repr__': <function Release.__repr__>, '__eq__': <function Release.__eq__>, '__hash__': None, '__match_args__': ('environment', 'metadata', 'url')})#
- __eq__(other)#
Return self==value.
- __hash__ = None#
- __init__(environment: aiidalab.environment.Environment, metadata: aiidalab.metadata.Metadata, url: str) None #
- __match_args__ = ('environment', 'metadata', 'url')#
- __module__ = 'aiidalab.registry.releases'#
- __repr__()#
Return repr(self).
- __weakref__#
list of weak references to the object (if defined)
- environment: aiidalab.environment.Environment#
- metadata: aiidalab.metadata.Metadata#
- aiidalab.registry.releases._gather_releases(release_specs, scan_app_repository, app_metadata)[source]#
- aiidalab.registry.releases._get_release_commits(repo: aiidalab.git_util.GitRepo, release_line: str)[source]#
Get the commits for a release line.
- Parameters
repo – Git repository object.
release_line – support standard git revision selection syntax to further reduce the selected commits on a release line. For example, @main:v1.0.0.. means “select all tagged commits on the main branch after commit tagged with v1.0.0”.
- aiidalab.registry.releases._get_tags(repo: aiidalab.git_util.GitRepo, branch: str, rev_selection: str)[source]#
Get all tags for given revision selection of a branch.
- Parameters
repo – Git repository object.
branch – Branch name.
rev_selection – Revision selection, the format is described in https://git-scm.com/docs/git-rev-list
aiidalab.registry.util module#
Utility functions for the application registry.
- aiidalab.registry.util.load_json(path: pathlib.Path) dict [source]#
aiidalab.registry.web module#
Generate the app registry website.
- aiidalab.registry.web.build(apps_path: pathlib.Path, categories_path: pathlib.Path, base_path: pathlib.Path, html_path: Optional[pathlib.Path] = None, api_path: Optional[pathlib.Path] = None, static_path: Optional[pathlib.Path] = None, templates_path: Optional[pathlib.Path] = None, validate_output: bool = True, validate_input: bool = False)[source]#
Build the app registry website (including schema files).
aiidalab.registry.yaml module#
- aiidalab.registry.yaml.load(path)[source]#
Deserialize YAML file at path to a Python object and dereference all references.
Module contents#
Manage a registry of applications.
- class aiidalab.registry.AppRegistryData(apps: dict, categories: dict)[source]#
Bases:
object
The app registry data objects (apps and categories).
- __annotations__ = {'apps': <class 'dict'>, 'categories': <class 'dict'>}#
- __dataclass_fields__ = {'apps': Field(name='apps',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'categories': Field(name='categories',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}#
- __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False)#
- __dict__ = mappingproxy({'__module__': 'aiidalab.registry.core', '__annotations__': {'apps': <class 'dict'>, 'categories': <class 'dict'>}, '__doc__': 'The app registry data objects (apps and categories).', 'validate': <function AppRegistryData.validate>, '__dict__': <attribute '__dict__' of 'AppRegistryData' objects>, '__weakref__': <attribute '__weakref__' of 'AppRegistryData' objects>, '__dataclass_params__': _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False), '__dataclass_fields__': {'apps': Field(name='apps',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'categories': Field(name='categories',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}, '__init__': <function AppRegistryData.__init__>, '__repr__': <function AppRegistryData.__repr__>, '__eq__': <function AppRegistryData.__eq__>, '__hash__': None, '__match_args__': ('apps', 'categories')})#
- __eq__(other)#
Return self==value.
- __hash__ = None#
- __match_args__ = ('apps', 'categories')#
- __module__ = 'aiidalab.registry.core'#
- __repr__()#
Return repr(self).
- __weakref__#
list of weak references to the object (if defined)
- validate(schemas: aiidalab.registry.core.AppRegistrySchemas)[source]#
Validate the registry data against the provided registry schemas.
- class aiidalab.registry.AppRegistrySchemas(app: dict, apps: dict, apps_index: dict, categories: dict, environment: dict, metadata: dict)[source]#
Bases:
object
The app registry JSON-schema objects.
- __annotations__ = {'app': <class 'dict'>, 'apps': <class 'dict'>, 'apps_index': <class 'dict'>, 'categories': <class 'dict'>, 'environment': <class 'dict'>, 'metadata': <class 'dict'>}#
- __dataclass_fields__ = {'app': Field(name='app',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'apps': Field(name='apps',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'apps_index': Field(name='apps_index',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'categories': Field(name='categories',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'environment': Field(name='environment',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'metadata': Field(name='metadata',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}#
- __dataclass_params__ = _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False)#
- __dict__ = mappingproxy({'__module__': 'aiidalab.registry.core', '__annotations__': {'app': <class 'dict'>, 'apps': <class 'dict'>, 'apps_index': <class 'dict'>, 'categories': <class 'dict'>, 'environment': <class 'dict'>, 'metadata': <class 'dict'>}, '__doc__': 'The app registry JSON-schema objects.', 'from_path': <classmethod(<function AppRegistrySchemas.from_path>)>, 'from_package': <classmethod(<function AppRegistrySchemas.from_package>)>, '__dict__': <attribute '__dict__' of 'AppRegistrySchemas' objects>, '__weakref__': <attribute '__weakref__' of 'AppRegistrySchemas' objects>, '__dataclass_params__': _DataclassParams(init=True,repr=True,eq=True,order=False,unsafe_hash=False,frozen=False), '__dataclass_fields__': {'app': Field(name='app',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'apps': Field(name='apps',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'apps_index': Field(name='apps_index',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'categories': Field(name='categories',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'environment': Field(name='environment',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD), 'metadata': Field(name='metadata',type=<class 'dict'>,default=<dataclasses._MISSING_TYPE object>,default_factory=<dataclasses._MISSING_TYPE object>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),kw_only=False,_field_type=_FIELD)}, '__init__': <function AppRegistrySchemas.__init__>, '__repr__': <function AppRegistrySchemas.__repr__>, '__eq__': <function AppRegistrySchemas.__eq__>, '__hash__': None, '__match_args__': ('app', 'apps', 'apps_index', 'categories', 'environment', 'metadata')})#
- __eq__(other)#
Return self==value.
- __hash__ = None#
- __init__(app: dict, apps: dict, apps_index: dict, categories: dict, environment: dict, metadata: dict) None #
- __match_args__ = ('app', 'apps', 'apps_index', 'categories', 'environment', 'metadata')#
- __module__ = 'aiidalab.registry.core'#
- __repr__()#
Return repr(self).
- __weakref__#
list of weak references to the object (if defined)
- aiidalab.registry.build(apps_path: pathlib.Path, categories_path: pathlib.Path, base_path: pathlib.Path, html_path: Optional[pathlib.Path] = None, api_path: Optional[pathlib.Path] = None, static_path: Optional[pathlib.Path] = None, templates_path: Optional[pathlib.Path] = None, validate_output: bool = True, validate_input: bool = False)[source]#
Build the app registry website (including schema files).