Your IP : 216.73.216.213
�
��fN c @ s� d Z d d l Z d d l m Z Gd d � d e � Z Gd d � d e � Z Gd d � d � Z Gd
d � d � Z Gd d
� d
e � Z
Gd d � d e j � Z e
d k r� e j � n d S( uj
Support Eiffel-style preconditions and postconditions for functions.
An example for Python metaclasses.
i N( u FunctionTypec s8 | Ee Z d Z � f d d � Z e d d � � Z � S( u EiffelBaseMetaClassc s, | j | � t t | � j | | | | � S( N( u convert_methodsu superu EiffelBaseMetaClassu __new__( u metau nameu basesu dict( u __class__( u6 /opt/alt/python33/lib64/python3.3/Tools/demo/eiffel.pyu __new__ s
u EiffelBaseMetaClass.__new__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( u� 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.
u _preu _postu %s_preu %s_postN( u itemsu endswithu
isinstanceu functionu AssertionErroru appendu getu make_eiffel_method( u clsu dictu methodsu ku vu mu preu post( ( u6 /opt/alt/python33/lib64/python3.3/Tools/demo/eiffel.pyu convert_methods s
u# EiffelBaseMetaClass.convert_methods( u __name__u
__module__u __qualname__u __new__u classmethodu convert_methods( u
__locals__( ( u __class__u6 /opt/alt/python33/lib64/python3.3/Tools/demo/eiffel.pyu EiffelBaseMetaClass s u EiffelBaseMetaClassc B s&