ó
P{Zc           @   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   _gbtt	   _sentinelt   func(    s,   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(    s,   lib/python2.7/site-packages/simplegeneric.pyt   decorate!   s
    (   t
   isinstancet
   classtypesR   (   R   R   R   (   R   R   (   R   s,   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_objectR   t   obs(    s,   lib/python2.7/site-packages/simplegeneric.pyR   /   s
    ((    (   R   R   (   R   R   (   R   s,   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   (   t   _gboR   R   R   (    s,   lib/python2.7/site-packages/simplegeneric.pyt   dispatch9   s    c            s   t  |  ƒ ˆ  k S(   N(   R   (   R   (   R   (    s,   lib/python2.7/site-packages/simplegeneric.pyt   <lambda>M   s    c            s
   |  ˆ  k S(   N(    (   R   (   R   (    s,   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   s,   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*   (    (    s,   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(    (    (    s,   lib/python2.7/site-packages/simplegeneric.pyt   <module>   s   	
	J	