#! /usr/bin/env python3
"""
szabstractfactory_abstract.py is the abstract class for all implementations of szabstractfactory.
"""
from abc import ABC, abstractmethod
from .szconfig import SzConfig
from .szconfigmanager import SzConfigManager
from .szdiagnostic import SzDiagnostic
from .szengine import SzEngine
from .szhelpers import construct_help
from .szproduct import SzProduct
# Metadata
__all__ = ["SzAbstractFactory"]
__version__ = "0.0.1" # See https://www.python.org/dev/peps/pep-0396/
__date__ = "2024-09-23"
__updated__ = "2024-09-23"
# -----------------------------------------------------------------------------
# SzAbstractFactory
# -----------------------------------------------------------------------------
[docs]
class SzAbstractFactory(ABC):
"""
SzAbstractFactory is the definition of the Senzing Python SDK
SzAbstractFactory implementations.
"""
# -------------------------------------------------------------------------
# Interface definition
# -------------------------------------------------------------------------
[docs]
@abstractmethod
def create_config(self) -> SzConfig:
"""
The `create_config` method creates a new implementation of an `SzConfigAbstract` object.
Args:
Returns:
SzConfigAbstract: A new implementation.
Raises:
.. collapse:: Example:
.. literalinclude:: ../../examples/szabstractfactory/create_config.py
:linenos:
:language: python
**Output:**
.. literalinclude:: ../../examples/szabstractfactory/create_config.txt
:linenos:
:language: json
"""
[docs]
@abstractmethod
def create_configmanager(self) -> SzConfigManager:
"""
The `create_configmanager` method creates a new implementation of an `SzConfigManagerAbstract` object.
Args:
Returns:
SzConfigManagerAbstract: A new implementation.
Raises:
.. collapse:: Example:
.. literalinclude:: ../../examples/szabstractfactory/create_configmanager.py
:linenos:
:language: python
**Output:**
.. literalinclude:: ../../examples/szabstractfactory/create_configmanager.txt
:linenos:
:language: json
"""
[docs]
@abstractmethod
def create_diagnostic(self) -> SzDiagnostic:
"""
The `create_diagnostic` method creates a new implementation of an `SzDiagnosticAbstract` object.
Args:
Returns:
SzDiagnosticAbstract: A new implementation.
Raises:
.. collapse:: Example:
.. literalinclude:: ../../examples/szabstractfactory/create_diagnostic.py
:linenos:
:language: python
**Output:**
.. literalinclude:: ../../examples/szabstractfactory/create_diagnostic.txt
:linenos:
:language: json
"""
[docs]
@abstractmethod
def create_engine(self) -> SzEngine:
"""
The `create_engine` method creates a new implementation of an `SzEngineAbstract` object.
Args:
Returns:
SzEngineAbstract: A new implementation.
Raises:
.. collapse:: Example:
.. literalinclude:: ../../examples/szabstractfactory/create_engine.py
:linenos:
:language: python
**Output:**
.. literalinclude:: ../../examples/szabstractfactory/create_engine.txt
:linenos:
:language: json
"""
[docs]
@abstractmethod
def create_product(self) -> SzProduct:
"""
The `create_product` method creates a new implementation of an `SzProductAbstract` object.
Args:
Returns:
SzProductAbstract: A new implementation.
Raises:
.. collapse:: Example:
.. literalinclude:: ../../examples/szabstractfactory/create_product.py
:linenos:
:language: python
**Output:**
.. literalinclude:: ../../examples/szabstractfactory/create_product.txt
:linenos:
:language: json
"""
[docs]
@abstractmethod
def reinitialize(self, config_id: int) -> None:
"""
The `reinitialize` method reinitializes the Senzing objects using a specific configuration
identifier. A list of available configuration identifiers can be retrieved using
`szconfigmanager.get_configs`.
Args:
config_id (int): The configuration ID used for the initialization
Raises:
TypeError: Incorrect datatype of input parameter.
szexception.SzError: config_id does not exist.
.. collapse:: Example:
.. literalinclude:: ../../examples/szabstractfactory/reinitialize.py
:linenos:
:language: python
"""
# -------------------------------------------------------------------------
# Convenience methods
# -------------------------------------------------------------------------
[docs]
def help(self, method_name: str = "") -> str:
"""
Return the help for a particular message.
Args:
method_name (str): The name of the method. (e.g. "init"). If empty, a list of methods and descriptions is returned.
Returns:
str: The Help information about the requested method
"""
return construct_help(self, method_name=method_name)