ó
6j/Qc           @   só   d  Z  d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m	 Z	 d d l
 m Z d d	 l
 m Z d d
 l
 m Z d d l m Z d Z d e f d „  ƒ  YZ d „  Z d d d d „ Z d „  Z d „  Z d S(   s5   zope.security support for the configuration handlers
iÿÿÿÿ(   t
   providedBy(   t	   ProxyBase(   t   getProxiedObject(   t   LocatingTrustedAdapterFactory(   t   LocatingUntrustedAdapterFactory(   t   TrustedAdapterFactory(   t   Checker(   t   CheckerPublic(   t   InterfaceChecker(   t   Proxys   zope.Publict   PermissionProxyc           B   s#   e  Z d Z d „  Z e e ƒ Z RS(   t   __Security_checker__c         C   s   t  t |  ƒ ƒ S(   N(   R    R   (   t   self(    (    s;   /usr/lib/python2.7/site-packages/zope/component/security.pyt   __providedBy__"   s    (   s   __Security_checker__(   t   __name__t
   __module__t	   __slots__R   t   property(    (    (    s;   /usr/lib/python2.7/site-packages/zope/component/security.pyR
      s   	c         C   sª   | r | r d g } n  | t  k r/ t } n  i  } | rY x | D] } | | | <qB Wn  | rš x8 | D]- } x$ | j d t ƒ D] } | | | <q Wqf Wn  t | ƒ } | S(   Nt   __call__t   all(   t   PublicPermissionR   t   namest   TrueR   (   t   _contextt
   permissiont   allowed_interfacet   allowed_attributest   requiret   namet   it   checker(    (    s;   /usr/lib/python2.7/site-packages/zope/component/security.pyt   _checker&   s    	c         C   ss   | d k rZ | d k s$ | d k r3 t d ƒ ‚ n  | t k rH t } n  t | | ƒ } n  t |  ƒ }  | |  _ |  S(   sˆ   Try to get the object proxied with the `checker`, but not too soon

    We really don't want to proxy the object unless we need to.
    s<   Required arguments: checker or both provides and permissionsN(   t   Nonet
   ValueErrorR   R   R   R
   R   (   t   obR   t   providesR   (    (    s;   /usr/lib/python2.7/site-packages/zope/component/security.pyt   proxify9   s    		c            sC   | t  k r t } n  t | | ƒ ‰  ‡  ‡ f d †  } ˆ | _ | S(   Nc             s@   ˆ |  Œ  } y ˆ  | _  Wn  t k
 r; t | ˆ  ƒ } n X| S(   N(   R   t   AttributeErrorR	   (   t   argsR"   (   R   t   original_factory(    s;   /usr/lib/python2.7/site-packages/zope/component/security.pyt   factoryO   s    (   R   R   R   R(   (   R'   R#   R   R(   (    (   R   R'   s;   /usr/lib/python2.7/site-packages/zope/component/security.pyt   protectedFactoryJ   s    		c         C   sh   | t  k r t } n  | s3 | d  k	 rP | t k	 rP | rC t |  ƒ St |  ƒ Sn | r` t |  ƒ S|  Sd  S(   N(   R   R   R    R   R   R   (   R(   R   t   locatet   trusted(    (    s;   /usr/lib/python2.7/site-packages/zope/component/security.pyt   securityAdapterFactoryY   s    	

N(   t   __doc__t   zope.interfaceR    t
   zope.proxyR   R   t   zope.security.adapterR   R   R   t   zope.security.checkerR   R   R   t   zope.security.proxyR	   R   R
   R   R    R$   R)   R,   (    (    (    s;   /usr/lib/python2.7/site-packages/zope/component/security.pyt   <module>   s    		