aiidalab.registry package#

Submodules#

aiidalab.registry.api module#

Generate API endpoints.

aiidalab.registry.api.build_api_v1(api_path: pathlib.Path, apps_index: dict, apps_data: dict) collections.abc.Generator[pathlib.Path][source]#

Build tree for API endpoint v1.

aiidalab.registry.api.validate_api_v1(api_path: pathlib.Path, schemas: aiidalab.registry.core.AppRegistrySchemas) None[source]#

Validate tree for API endpoint v1.

aiidalab.registry.apps_index module#

Generate the apps index including all aggregated metadata.

aiidalab.registry.apps_index._determine_app_name(app_id: str) str[source]#

Currently the app name is identical to its id.

aiidalab.registry.apps_index._fetch_app_data(app_id: str, app_data: dict, scan_app_repository: Callable[[str], dict[str, Any]]) dict | None[source]#
aiidalab.registry.apps_index._migrate_app_data(app_data: dict[str, Any]) None[source]#
aiidalab.registry.apps_index.generate_apps_index(data: aiidalab.registry.core.AppRegistryData, scan_app_repository: Callable[[str], dict[str, Any]]) tuple[dict, dict][source]#

Generate the comprehensive app index.

This index is built from the apps data and includes additional information such as the releases.

aiidalab.registry.apps_index.validate_apps_index_and_apps(apps_index: dict, apps_index_schema: dict, apps: list[dict], app_schema: dict) None[source]#

Validate the apps_index file.

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#
__init__(apps: dict, categories: dict) None#
__match_args__ = ('apps', 'categories')#
__module__ = 'aiidalab.registry.core'#
__repr__()#

Return repr(self).

__weakref__#

list of weak references to the object (if defined)

apps: dict#
categories: dict#
validate(schemas: aiidalab.registry.core.AppRegistrySchemas) None[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)

app: dict#
apps: dict#
apps_index: dict#
categories: dict#
environment: dict#
classmethod from_package() aiidalab.registry.core.AppRegistrySchemas[source]#
classmethod from_path(path: pathlib.Path) aiidalab.registry.core.AppRegistrySchemas[source]#
metadata: dict#

aiidalab.registry.html module#

Generate the app registry website HTML pages.

aiidalab.registry.html.build_html(base_path: pathlib.Path, apps_index: dict, apps_data: dict, templates_path: pathlib.Path | None) collections.abc.Generator[pathlib.Path][source]#

Generate the app registry website at the base_path path.

aiidalab.registry.releases module#

class aiidalab.registry.releases.Release(environment: 'Environment', metadata: 'Metadata', url: 'str')[source]#

Bases: object

__annotations__ = {'environment': 'Environment', 'metadata': 'Metadata', 'url': 'str'}#
__dataclass_fields__ = {'environment': Field(name='environment',type='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='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='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': 'Environment', 'metadata': 'Metadata', 'url': 'str'}, '__dict__': <attribute '__dict__' of 'Release' objects>, '__weakref__': <attribute '__weakref__' of 'Release' objects>, '__doc__': "Release(environment: 'Environment', 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='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='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='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#
url: str#
aiidalab.registry.releases._gather_releases(release_specs: list[str | dict], scan_app_repository: Callable[[str], dict[str, Any]], app_metadata: dict | None) collections.abc.Generator[tuple[str | None, aiidalab.registry.releases.Release]][source]#
aiidalab.registry.releases._get_release_commits(repo: aiidalab.git_util.GitRepo, release_line: str) collections.abc.Generator[tuple[str, 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) collections.abc.Generator[tuple[str, str]][source]#

Get all tags for given revision selection of a branch.

Parameters
aiidalab.registry.releases._split_release_line(url: str) tuple[str, str | None][source]#
aiidalab.registry.releases.gather_releases(app_data: dict, scan_app_repository: Callable[[str], dict[str, Any]]) collections.abc.Generator[tuple[str, aiidalab.registry.releases.Release]][source]#

aiidalab.registry.util module#

Utility functions for the application registry.

aiidalab.registry.util.get_hosted_on(url: str) str[source]#
aiidalab.registry.util.get_html_app_fname(app_name: str) str[source]#
aiidalab.registry.util.load_json(path: pathlib.Path) dict[source]#

aiidalab.registry.web module#

Generate the app registry website.

aiidalab.registry.web._walk_pkg_resources(package: str, root: str) collections.abc.Generator[tuple[str, list]][source]#
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) None[source]#

Build the app registry website (including schema files).

aiidalab.registry.web.copy_static_tree_from_package(html_path: pathlib.Path, root: str = 'static') collections.abc.Generator[pathlib.Path][source]#
aiidalab.registry.web.copy_static_tree_from_path(base_path: pathlib.Path, static_path: pathlib.Path) collections.abc.Generator[pathlib.Path][source]#

aiidalab.registry.yaml module#

aiidalab.registry.yaml.load(path: str | pathlib.Path) Any[source]#

Deserialize YAML file at path to a Python object and dereference all references.

aiidalab.registry.yaml.loads(s: str) Any[source]#

Deserialize YAML string to a Python object and dereference all references.

aiidalab.registry.yaml.replace_refs(obj: Any) Any[source]#

Dereference all references in obj.

References may point to JSON or YAML files.

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#
__init__(apps: dict, categories: dict) None#
__match_args__ = ('apps', 'categories')#
__module__ = 'aiidalab.registry.core'#
__repr__()#

Return repr(self).

__weakref__#

list of weak references to the object (if defined)

apps: dict#
categories: dict#
validate(schemas: aiidalab.registry.core.AppRegistrySchemas) None[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)

app: dict#
apps: dict#
apps_index: dict#
categories: dict#
environment: dict#
classmethod from_package() aiidalab.registry.core.AppRegistrySchemas[source]#
classmethod from_path(path: pathlib.Path) aiidalab.registry.core.AppRegistrySchemas[source]#
metadata: dict#
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) None[source]#

Build the app registry website (including schema files).

aiidalab.registry.build_html(base_path: pathlib.Path, apps_index: dict, apps_data: dict, templates_path: pathlib.Path | None) collections.abc.Generator[pathlib.Path][source]#

Generate the app registry website at the base_path path.