Source code for django_pid.django_pid_interface

"""_____________________________________________________________________

:PROJECT: django PID

* Main module formal interface. *

:details: In larger projects, formal interfaces are helping to define a trustable contract.
          Currently there are two commonly used approaches: 
          [ABCMetadata](https://docs.python.org/3/library/abc.html) or [Python Protocols](https://peps.python.org/pep-0544/)

       see also:
       ABC metaclass
         - https://realpython.com/python-interface/
         - https://dev.to/meseta/factories-abstract-base-classes-and-python-s-new-protocols-structural-subtyping-20bm

.. note:: -
.. todo:: - 
________________________________________________________________________
"""


# here is a 
from abc import ABCMeta, abstractclassmethod

[docs] class GreeterInterface(metaclass=ABCMeta): """ Greeter formal Interface TODO: test, if ABC baseclass is wor """ @classmethod def __subclasshook__(cls, subclass): return (hasattr(subclass, 'greet_the_world') and callable(subclass.greet_the_world) or NotImplemented)
[docs] @abstractclassmethod def greet_the_world(self, name: str) -> str: """greeting module - adds a name to a greeting :param name: person to greet :type name: str """