???<!-- 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  } xZ | j  ƒ  D]L \ } } | j d ƒ s_ | j d ƒ r@ q t | t ƒ r | j | ƒ q q Wx` | D]X } | j d | ƒ } | j d | ƒ } | s¢ | rj |  j | | | | ƒ | | <qj qj 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   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*   R0   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.pyR1   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 Xˆ  ƒ  } y | j d ƒ Wn t k
 rÀ n Xy | j d	 ƒ Wn t k
 rå n X| 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.pyR2   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   R6   (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyt   m2a   s    c         S   s   d  S(   N(    (   R   R6   (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyt   m2_pree   s    c         S   s   d  S(   N(    (   R   t   resultR6   (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyt   m2_posth   s    (   R   R   R   R7   R8   R:   (    (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR5   [   s   			t   Subc              s    e  Z d  „  Z ‡  f d †  Z RS(   c         S   s   | d S(   Ni   (    (   R   R6   (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR7   l   s    c            s   t  ˆ  |  ƒ j | | ƒ d  S(   N(   R   R:   (   R   t   ResultR6   (   R;   (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR:   n   s    (   R   R   R7   R:   (    (   R;   (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyR;   k   s   	i   i    i
   i   (    (   R   R7   t   AssertionError(   R4   R2   R5   t   tt   s(    (   R;   R4   s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyt   _testW   s(    		t   __main__N(    (   R#   t   typesR    R   t   typeR   R   R%   t   objectR-   R1   R@   R   (    (    (    s2   /usr/lib64/python2.7/Demo/newmetaclasses/Eiffel.pyt   <module>   s   		4
