
    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_        dS )z8Volatility 3 - An open-source memory forensics framework    N)abc)ListTypeVarCallableAnyOptional_T_Sc                   `     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                 V    || _         t                                                       d S N)_funcsuper__init__)selfr   	__class__s     F/home/panchajanya/Development/work/volatility3/volatility3/__init__.pyr   zclassproperty.__init__   s&    
    objtypec                 N    ||                      |          S t          d          )Nz&Classproperty was not applied properly)r   	TypeError)r   r   r   s      r   __get__zclassproperty.__get__   s)    ::d###@AAAr   r   )__name__
__module____qualname____doc__r   r
   r	   r   r   r   r   __classcell__)r   s   @r   r   r      s         
XrdBh/ D      B B3 Bhrl Bb B B B B B B B Br   r   c            
       V    e Zd ZdZe	 ddedeee                  ddddfd            ZdS )	WarningFindSpeczNChecks import attempts and throws a warning if the name shouldn't be
    used.Nfullnamepathtargetr   c                     |                      d          rUd|  d}t          j                    d         j        dvr1t          j                    d         j        dvrt	          |          dS dS dS )	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     ?@@ 	' Q  Q  Q  QG }r"+ 4   -//"%.6MMMg&&&	' 	'  NMr   r   )	r   r   r   r    staticmethodstrr   r   r3    r   r   r#   r#      so          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?      s   ? > >  



       9 9 9 9 9 9 9 9 9 9 9 9 9 9WT]]WT]]B B B B BH B B B ' ' ' ' 'c( ' ' '* 0?/@/@.A 4*+ A A A!CM1r   