
                         D    d dl mZ d dlmZ dZ ede      ZdedefdZy	)
    )TypeVar)FunctionTypez0.1_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 @overrides are checked.

    How to use:
    from overrides import final

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

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

    :raises  AssertionError if there exists a match in sub classes for the method name
    :return  method
    __finalized__T)setattr)r   s    "lib/third_party/overrides/final.pyfinalr      s    , FOT*M    N)typingr   typesr   __VERSION__r   r    r   r   <module>r      s4       )>. ^ r   