
    Xf                         U d Z ddlZddlZddlmZ ddlmZmZmZm	Z	m
Z
  ed      Z ed      Z G d de      Z G d	 d
ej                        Z e       gZeej                     ed<   eej&                  z   e_        y)z8Volatility 3 - An open-source memory forensics framework    N)abc)ListTypeVarCallableAnyOptional_T_Sc                   T     e Zd ZdZdeegef   ddf fdZd	dede	e   defdZ
 xZS )
classpropertyzIClass property decorator.

    Note this will change the return type
    funcreturnNc                 0    || _         t        | 	          y N)_funcsuper__init__)selfr   	__class__s     F/home/panchajanya/Development/work/volatility3/volatility3/__init__.pyr   zclassproperty.__init__   s    
    objtypec                 >    || j                  |      S t        d      )Nz&Classproperty was not applied properly)r   	TypeError)r   r   r   s      r   __get__zclassproperty.__get__   s#    ::d##@AAr   r   )__name__
__module____qualname____doc__r   r
   r	   r   r   r   r   __classcell__)r   s   @r   r   r      sH    
XrdBh/ D B3 Bhrl Bb Br   r   c            
       B    e Zd ZdZe	 ddedeee      ddddfd       Zy)	WarningFindSpeczNChecks import attempts and throws a warning if the name shouldn't be
    used.Nfullnamepathtargetr   c                     | j                  d      rYd|  d}t        j                         d   j                  dvr/t        j                         d   j                  dvrt	        |      yyy)	zLMock find_spec method that just checks the name, this must go
        first.zvolatility3.framework.plugins.zImport zf: Please do not use the volatility3.framework.plugins namespace directly, only use volatility3.plugins)walk_packages_collect_submodules)r*   N)
startswithinspectstackfunctionWarning)r$   r%   r&   kwargswarnings        r   	find_speczWarningFindSpec.find_spec"   s     ?@z  *P  QG }}r"++ 4  --/"%..6MMg&& N	 Ar   r   )	r   r   r   r    staticmethodstrr   r   r3    r   r   r#   r#      sG     AE''%d3i0':>'	' 'r   r#   warning_find_spec)r    r-   sys	importlibr   typingr   r   r   r   r   r	   r
   propertyr   MetaPathFinderr#   r7   __annotations__	meta_pathr6   r   r   <module>r?      sy    ?  
  9 9T]T]BH B 'c(( '* 0?/@.A 4**+ A!CMM1r   