???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................ó
¿œ^c           @   s±   d  Z  d d l m Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d d d „  ƒ  YZ d	 e f d
 „  ƒ  YZ	 d e f d „  ƒ  YZ
 d „  Z e d k r­ e e ƒ e e
 ƒ n  d S(   s6   Support Eiffel-style preconditions and postconditions.iÿÿÿÿ(   t   FunctionTypet   EiffelBaseMetaClassc           B   s    e  Z d  „  Z e d „  ƒ Z RS(   c         C   s,   |  j  | ƒ t t |  ƒ j |  | | | ƒ S(   N(   t   convert_methodst   superR   t   __new__(   t   metat   namet   basest   dict(    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR      s    c         C   sß   g  } xo | j  ƒ  D]a \ } } | j d ƒ s= | j d ƒ rU t | t ƒ st t ‚ q t | t ƒ r | j | ƒ q q Wx` | D]X } | j d | ƒ } | j d | ƒ } | s· | r |  j | | | | ƒ | | <q q Wd S(   sí   Replace functions in dict with EiffelMethod wrappers.

        The dict is modified in place.

        If a method ends in _pre or _post, it is removed from the dict
        regardless of whether there is a corresponding method.
        t   _pret   _posts   %s_pres   %s_postN(   t	   iteritemst   endswitht
   isinstancet   functiont   AssertionErrort   appendt   gett   make_eiffel_method(   t   clsR   t   methodst   kt   vt   mt   pret   post(    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR      s    
(   t   __name__t
   __module__R   t   classmethodR   (    (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR      s   	t   EiffelMetaClass1c           B   s   e  Z e d  „  ƒ Z RS(   c            s1   ‡  ‡ ‡ f d †  } ˆ  j  r- ˆ  j  | _  n  | S(   Nc            sK   ˆ r ˆ |  | | Ž n  ˆ  |  | | Ž } ˆ rG ˆ |  | | | Ž n  | S(   N(    (   t   selft   argst   kwargst   x(   t   funcR   R   (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyt   method'   s    (   t   __doc__(   R"   R   R   R#   (    (   R"   R   R   s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR   %   s    	(   R   R   t   staticmethodR   (    (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR   "   s   t   EiffelMethodWrapperc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   t   _instt   _descr(   R   t   instt   descr(    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyt   __init__6   s    	c         O   s   |  j  j |  j | | ƒ S(   N(   R(   t
   callmethodR'   (   R   R   R    (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyt   __call__:   s    (   R   R   R+   R-   (    (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR&   4   s   	t   EiffelDescriptorc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s7   | |  _  | |  _ | |  _ | j |  _ | j |  _ d  S(   N(   t   _funcR	   R
   R   R$   (   R   R"   R   R   (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR+   ?   s
    			c         C   s   t  | |  ƒ S(   N(   R&   (   R   t   objR   (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyt   __get__G   s    c         C   sZ   |  j  r |  j  | | | Ž n  |  j | | | Ž } |  j rV |  j | | | | Ž n  | S(   N(   R	   R/   R
   (   R   R)   R   R    R!   (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR,   J   s    		(   R   R   R+   R1   R,   (    (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR.   =   s   		t   EiffelMetaClass2c           B   s   e  Z e Z RS(    (   R   R   R.   R   (    (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR2   R   s   c            s  d d ‡ f d †  ƒ  Y} d | f d „  ƒ  Y} d | f ‡  f d †  ƒ  Y‰  | ƒ  } | j  d ƒ | j d ƒ y | j d ƒ Wn t k
 r’ n Xt sŸ t ‚ ˆ  ƒ  } y | j d ƒ Wn t k
 rÌ n Xt sÙ t ‚ y | j d	 ƒ Wn t k
 rý n Xt s
t ‚ | j d
 ƒ d  S(   Nt   Eiffelc              s   e  Z ˆ  Z RS(    (   R   R   t   __metaclass__(    (   t	   metaclass(    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR3   X   s   t   Testc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         S   s   | d S(   s   Make it a little largeri   (    (   R   t   arg(    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR   ]   s    c         S   s   | d S(   s   Make it a little largeri   (    (   R   R7   (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyt   m2a   s    c         S   s   | d k s t  ‚ d  S(   Ni    (   R   (   R   R7   (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyt   m2_pree   s    c         S   s   | | k s t  ‚ d  S(   N(   R   (   R   t   resultR7   (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyt   m2_posth   s    (   R   R   R   R8   R9   R;   (    (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR6   [   s   			t   Subc              s    e  Z d  „  Z ‡  f d †  Z RS(   c         S   s   | d S(   Ni   (    (   R   R7   (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR8   l   s    c            s/   t  ˆ  |  ƒ j | | ƒ | d k  s+ t ‚ d  S(   Nid   (   R   R;   R   (   R   t   ResultR7   (   R<   (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR;   n   s    (   R   R   R8   R;   (    (   R<   (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR<   k   s   	i   i    i
   i   (    (   R   R8   R   t   False(   R5   R3   R6   t   tt   s(    (   R<   R5   s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyt   _testW   s.    		t   __main__N(    (   R$   t   typesR    R   t   typeR   R   R&   t   objectR.   R2   RA   R   (    (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyt   <module>   s   		4
