
    Mh-	                     L    d dl mZ  G d de          Z G d de          ZdS )    )ABCMetac                   `     e Zd Z fdZed             Zed             Zed             Z xZS )EnforceOverridesMetac                 P   t          |           D ]}|                    d          so|dk    rit          | |          }t          |t          t
          t          t          t          t          t          f          st          t          | |          dd            t                      j        | |||fi |}|                                D ]\\  }}|                     ||           |                    d          s,|                     |          }|                     |||           ]|S )N__mro__ignored__T)dir
startswithgetattr
isinstanceboolstrintfloattuplelistdictsetattrsuper__new__items _check_if_overrides_final_method_handle_special_value/_check_if_overrides_without_overrides_decorator)	mclsnamebases	namespacekwargsmethodvaluecls	__class__s	           Q/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/overrides/enforce.pyr   zEnforceOverridesMeta.__new__   s&   $ii 	H 	HF$$T** Hvf--!%$S%d)STT HGD&11=$GGGeggodD%EEfEE$??,, 	Y 	YKD%11$>>>??4(( Y22599DDT5RWXXX
    c                     t          |dd          }|D ]N}t          || d          }|r t          |          rt          |dd          r6|st          d|  d| d          Od S )N__override__Fr	   Method z overrides method from z& but does not have @override decorator)r   callable	TypeError)r   r"   r   is_overridebasebase_class_methods         r%   r   zDEnforceOverridesMeta._check_if_overrides_without_overrides_decorator   s    e^U;; 	 	D 'dE : :% 122 ,mUCC
  gdgg4ggg  	 	r&   c                     |D ]:}t          || d          }t          |dd          rt          d|  d| d          ;d S )NF	__final__r)   z is finalized in z, it cannot be overridden)r   r+   )r   r   r-   r.   s       r%   r   z5EnforceOverridesMeta._check_if_overrides_final_method%   so     	 	D 'dE : :(+u== TdTTTTTT  	 	r&   c                     t          | t                    st          | t                    r|                     d t                    } nt          | t
                    r| j        } | S )N)r   classmethodstaticmethod__get__r   propertyfget)r"   s    r%   r   z*EnforceOverridesMeta._handle_special_value/   sX    e[)) 	Z|-L-L 	MM$--EEx(( 	JEr&   )	__name__
__module____qualname__r   r3   r   r   r   __classcell__)r$   s   @r%   r   r      s                \   \   \    r&   r   c                       e Zd ZdZdS )EnforceOverridesz4Use this as the parent class for your custom classesN)r7   r8   r9   __doc__ r&   r%   r<   r<   8   s        ::Dr&   r<   )	metaclassN)abcr   r   r<   r>   r&   r%   <module>rA      s|         1 1 1 1 17 1 1 1h	 	 	 	 	!5 	 	 	 	 	 	r&   