
    Mh                     `    d dl mZ d dlmZmZmZ  edeeef                   ZdedefdZdS )	    )FunctionType)CallableTypeVarUnion_WrappedMethod)boundmethodreturnc                 (    t          | dd           | S )a  Decorator to indicate that the decorated method is finalized and cannot be overridden.
    The decorator code is executed while loading class. Using this method
    should have minimal runtime performance implications.
    Currently, only methods with @override are checked.

    How to use:
    from overrides import final

    class SuperClass(object):
        @final
        def method(self):
          return 2

    class SubClass(SuperClass):
        @override
        def method(self): #causes an error
            return 1

    :raises AssertionError: if there exists a match in sub classes for the method name
    :return: method
    	__final__T)setattr)r	   s    O/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/overrides/final.pyfinalr      s    , FK&&&M    N)typesr   typingr   r   r   r   r    r   r   <module>r      s           + + + + + + + + + +)|X7M1NOOO. ^      r   