ó

æNXc           @   sœ   d  g Z  y& d d l m Z m Z e e f Z Wn e k
 rN e Z d Z n Xd „  Z d „  Z	 e
 d k r˜ d d l Z e j ƒ  Z e j e	 ƒ  ƒ n  d S(   t   genericiÿÿÿÿ(   t	   ClassTypet   InstanceTypec            sÿ   t  ƒ  ‰  ‡  ‡ ‡ f d †  } i ˆ t  6| t 6‰ ˆ j ‰ ‡ ‡ f d †  } i  ‰ ˆ j ‰ ‡ ‡ f d †  } ‡  ‡ ‡ ‡ f d †  } ˆ j | _ ˆ j j ƒ  | _ ˆ j | _ ˆ j | _ | | _ | | _	 ˆ | _
 ‡ f d †  | _ ‡ f d †  | _ | S(   s    Create a simple generic functionc             so   |  d j  } x[ t | j | t f i  ƒ j D]. } ˆ | ˆ  ƒ } | ˆ  k	 r, | |  | Ž  Sq, Wˆ |  | Ž  Sd  S(   Ni    (   t	   __class__t   typet   __name__t   objectt   __mro__(   t   argst   kwt   clst   tt   f(   t	   _sentinelt   funct   _gbt(    sE   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/simplegeneric.pyt	   _by_class   s    %c             sO   x3 ˆ  D]+ } t  | t ƒ s t d | f ƒ ‚ q q W‡ ‡ ‡  f d †  } | S(   sA   Decorator to add a method that will be called for the given typess   %r is not a type or classc            sF   x? ˆ D]7 } ˆ  j  | |  ƒ |  k	 r t d ˆ | f ƒ ‚ q q W|  S(   Ns!   %r already has method for type %r(   t
   setdefaultt	   TypeError(   R   R   (   t   _by_typeR   t   types(    sE   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/simplegeneric.pyt   decorate!   s
    (   t
   isinstancet
   classtypesR   (   R   R   R   (   R   R   (   R   sE   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/simplegeneric.pyt	   when_type   s    c             s   ‡ ‡  ‡ f d †  } | S(   s>   Decorator to add a method to be called for the given object(s)c            sV   xO ˆ D]G } ˆ  j  t | ƒ | |  f ƒ d |  k	 r t d ˆ | f ƒ ‚ q q W|  S(   Ni   s#   %r already has method for object %r(   R   t   idR   (   R   t   o(   t
   _by_objectt   obsR   (    sE   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/simplegeneric.pyR   /   s
    ((    (   R   R   (   R   R   (   R   sE   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/simplegeneric.pyt   when_object-   s    c             s   ˆ t  |  d ƒ ˆ  ƒ } | ˆ  k r{ xd t |  d ƒ j D]. } ˆ | ˆ  ƒ } | ˆ  k	 r9 | |  | Ž  Sq9 Wˆ |  | Ž  Sn | d |  | Ž  Sd  S(   Ni    i   (   R   R   R   (   R   R	   R   R   (   R   t   _gboR   R   (    sE   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/simplegeneric.pyt   dispatch9   s    c            s   t  |  ƒ ˆ  k S(   N(   R   (   R   (   R   (    sE   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/simplegeneric.pyt   <lambda>M   s    c            s
   |  ˆ  k S(   N(    (   R   (   R   (    sE   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/simplegeneric.pyR    N   s    (   R   R   t   getR   t   __dict__t   copyt   __doc__t
   __module__R   R   t   defaultt
   has_objectt   has_type(   R   R   R   R   R   (    (   R   R   R   R   R   R   sE   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/simplegeneric.pyR    	   s&    							c          C   s)   d d  l  }  |  j d d |  j |  j BƒS(   Niÿÿÿÿs
   README.txtt   optionflags(   t   doctestt   DocFileSuitet   ELLIPSISt   REPORT_ONLY_FIRST_FAILURE(   R*   (    (    sE   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/simplegeneric.pyt
   test_suiteS   s    t   __main__N(   t   __all__R   R   R   R   R   t   ImportErrort   NoneR    R.   R   t   unittestt   TextTestRunnert   rt   run(    (    (    sE   /data/av2000/mvv/env_mvv/lib/python2.7/site-packages/simplegeneric.pyt   <module>   s   	
	J	