Source code for armpicom.setup.registry

# -*- coding: UTF-8 -*-

'''
Module
    registry.py
Copyright
    Copyright (C) 2026 Vladimir Roncevic <elektron.ronca@gmail.com>
    armpicom is free software: you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by the
    Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
    armpicom is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    See the GNU General Public License for more details.
    You should have received a copy of the GNU General Public License along
    with this program. If not, see <http://www.gnu.org/licenses/>.
Info
    Encapsulates core armpicom components for simplification of armpicom bundle.
'''

from __future__ import annotations

from ats_utilities.base.setup.bundle import BaseBundle

from armpicom.core.service.iservice import IService
from armpicom.core.service.isubprocessor import ISubProcessor
from armpicom.infrastructure.cli.icli import ICLI
from armpicom.setup.bundle import ARMPicomBundle
from armpicom.setup.validator import ARMPicomBundleValidator
from armpicom.setup.keys import ARMPicomBundleKeys
from armpicom.setup.dependencies import ARMPicomBundleDependencies
from armpicom.setup.dep_validator import ARMPicomBundleDependenciesValidator

__author__ = 'Vladimir Roncevic'
__copyright__ = '(C) 2026, https://vroncevic.github.io/armpicom'
__credits__ = ['Vladimir Roncevic', 'Python Software Foundation']
__license__ = 'https://github.com/vroncevic/armpicom/blob/dev/LICENSE'
__version__ = '2.0.3'
__maintainer__ = 'Vladimir Roncevic'
__email__ = 'elektron.ronca@gmail.com'
__status__ = 'Updated'


[docs] class ARMPicomBundleRegistry: ''' Encapsulates core armpicom components for simplification of armpicom bundle. It defines: :methods: | create_bundle - Creates the armpicom bundle. | get_version - Returns the registry version. '''
[docs] @classmethod def create_bundle(cls, dependencies: ARMPicomBundleDependencies) -> ARMPicomBundle: ''' Creates the armpicom bundle. :param dependencies: The armpicom bundle dependencies. :return: The armpicom bundle. :exceptions: | ATSValueError: The armpicom bundle dependencies must be provided and have proper values. | ATSTypeError: The armpicom bundle dependencies must be an instance of Mapping and its | attributes must be instances of their respective types. | ATSValueError: The armpicom bundle must be provided and have proper values. | ATSTypeError: The armpicom bundle must be an instance of ARMPicomBundle and | its attributes must be instances of their respective types. ''' ARMPicomBundleDependenciesValidator.validate(dependencies) base: BaseBundle | None = dependencies.get(ARMPicomBundleKeys.DEPENDENCY_BASE) if dependencies else None service: IService | None = dependencies.get(ARMPicomBundleKeys.DEPENDENCY_SERVICE) if dependencies else None subprocessor: ISubProcessor | None = dependencies.get(ARMPicomBundleKeys.DEPENDENCY_SUBPROCESSOR) if dependencies else None cli: ICLI | None = dependencies.get(ARMPicomBundleKeys.DEPENDENCY_CLI) if dependencies else None bundle: ARMPicomBundle = ARMPicomBundle(base=base, service=service, subprocessor=subprocessor, cli=cli) ARMPicomBundleValidator.validate(bundle) return bundle
[docs] @classmethod def get_version(cls) -> str: ''' Returns the registry version. :return: The registry version. :exceptions: None. ''' return __version__