Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/dist-packages/zope/interface/
Upload File :
Current File : //usr/lib/python2.7/dist-packages/zope/interface/adapter.pyc


Kc@sjdZddlZddlmZmZmZeZdefdYZeZ	defdYZ
e
Zde
fd	YZeZ
yddlZWnek
rnXdd
lmZm
Z
defdYZd
eefdYZdefdYZdee
fdYZdefdYZdZdZdZdZdZdS(sJAdapter management

$Id: adapter.py 110699 2010-04-09 08:16:17Z regebro $
iN(t
providedByt	InterfacetrotBaseAdapterRegistryc	BseZdZd	Zdd
ZdZedd
ZdZdZ	dZ
ddZddZ
dZddZdZRS(tlookuptqueryMultiAdaptertlookup1tqueryAdaptertadapter_hookt	lookupAlltnamest
subscriptionstsubscribersicCs2g|_g|_i|_|j||_dS(N(t	_adapterst_subscriberst	_providedt
_createLookupt	__bases__(tselftbases((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyt__init__"s
			
cCs0||jd<tj||_|j|dS(NR(t__dict__Rtchanged(RR((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyt	_setBasesQs
cCs|jdS(NR(R(R((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyt<lambda>VscCs
|j|S(N(R(RR((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRWscCsC|j||_x*|jD]}t|j||j|<qWdS(N(tLookupClasst	_v_lookupt
_delegatedtgetattrR(Rtname((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRZscCs#|jd7_|jj|dS(Ni(t_generationRR(Rtoriginally_changed((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR_scCsW|dkr&|j||||dSttt|}t|}t|}|j}x#t||kr|jiq_W||}||f}xB|D]:}	|j	|	}
|
dkri}
|
||	<n|
}qW|j	||krdS|||<|j
j	|dd}||j
|<|dkrF|jj|n|j
|dS(Nii(tNonet
unregisterttupletmapt_convert_None_to_Interfacet_normalize_nametlenR
tappendtgetRRtadd_extendorR(RtrequiredtprovidedRtvaluetordertbyordert
componentstkeytktdtn((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pytregistercs2	






uc
Csttt|}t|}t|}|j}t||krLdS||}||f}x3|D]+}|j|}	|	dkrdS|	}qjW|j|S(N(R"R#R$R%R&R
R R((
RR*R+RR-R.R/R0R1R2((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyt
registereds	



cCsttt|}t|}|j}|t|kr@tS||}||f}g}	g}	xF|D]>}
|j|
}|dkrdS|	j||
f|}qjW|j|}|dkrdS|dk	r||k	rdS||=|sNx5t	|	D]'\}
}
|
|
}|r!Pq|
|
=qWx|rJ|drJ|d=q/Wn|j
|d}|dkr|j
|=|jj|n
||j
|<|j
|dS(Niii(R"R#R$R&R
tFalseR(R R'treversedRRtremove_extendorR(RR*R+RR,R-R.R/R0tlookupsR1R2toldtcompR3((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR!sF	






cCs4ttt|}d}t|}|j}x#t||krU|jiq3W||}||f}xB|D]:}	|j|	}
|
dkri}
|
||	<n|
}qtW|j|d|f||<|dk	r#|jj|dd}||j|<|dkr#|j	j
|q#n|j|dS(Nuii((R"R#R$R&RR'R(R RRR)R(RR*R+R,RR-R.R/R0R1R2R3((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyt	subscribes*	





cCsttt|}t|}|j}|t|kr@dS||}||f}g}g}xF|D]>}	|j|	}
|
dkrdS|j||	f|
}qjW|jd}|sdS|dkrd}n+tg|D]}
|
|k	r|
^q}||krdS|r(||d<nmd|kr>|d=nx5t|D]'\}}	||	}
|
rkPqK||	=qKWx|r|dr|d=qyW|dk	r|j	|t|t|}|dkr|j	|=|j
j|qn|j|dS(Nuii((
R"R#R$R&RR(R R'R7RRR8R(RR*R+R,R-R.R/R0R9R1R2R:tnewtvR;R3((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pytunsubscribesP	



	+


!
cCsdddY}|S(NtXXXTwistedFakeOutcBseZiZRS((t__name__t
__module__tselfImplied(((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR@#s(((Rt_R@((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR("s(	slookupsqueryMultiAdapterslookup1squeryAdaptersadapter_hooks	lookupAllsnamess
subscriptionsssubscribers(N(RARBRRRRtpropertyRRRR4R5R R!R<R?R((((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRs /					!2	>tLookupBasePycBsteZdZd
dZdZdd
dZdd
dZdd
dZdd
dZ	dZ
d	ZRS(cCsi|_i|_i|_dS(N(t_cachet_mcachet_scache(R((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR+s		cCs+|jj|jj|jjdS(N(RGtclearRHRI(Rtignored((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR0s

cCsu|jj|}|dkr4i}||j|<n|rq|j|}|dkrhi}|||<n|}n|S(N(RGR(R (RR+Rtcachetc((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyt	_getcache5s
	ucCs|j||}t|dkr=|j|dt}n|jt|t}|tkr|j|||}t|dkr|||d<q||t|<n|dkr|S|S(Nii(RNR&R(t_not_in_mappingR"t_uncached_lookupR (RR*R+RtdefaultRLtresult((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRBscCs]|j||}|j|t}|tkrI|j|f|||S|dkrY|S|S(N(RNR(RORR (RR*R+RRQRLRR((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRUscCs|j||||S(N(R(RtobjectR+RRQ((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR`sc	Cst|}|j||}|j|t}|tkrW|j|f||}n|dk	r||}|dk	r|Sn|S(N(RRNR(RORR (	RR+RSRRQR*RLtfactoryRR((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRcscCs|jj|}|dkr4i}||j|<nt|}|j|t}|tkr}|j||}|||<n|S(N(RHR(R R"ROt_uncached_lookupAll(RR*R+RLRR((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR	qs
cCs|jj|}|dkr4i}||j|<nt|}|j|t}|tkr}|j||}|||<n|S(N(RIR(R R"ROt_uncached_subscriptions(RR*R+RLRR((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRs
N(RARBRR RRNRRRRR	R(((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRF)s		
	tVerifyingBasePycBs5eZdZdZdZdZdZRS(cCsItj|||jjd|_g|jD]}|j^q-|_dS(Ni(RFRt	_registryRt
_verify_roRt_verify_generations(RRtr((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRscCs<g|jD]}|j^q
|jkr8|jdndS(N(RYRRZRR (RR[((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyt_verifyscCs|jtj|||S(N(R\RFRN(RR+R((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRNs
cCs|jtj|||S(N(R\RFR	(RR*R+((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR	s
cCs|jtj|||S(N(R\RFR(RR*R+((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRs
(RARBRR\RNR	R(((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRWs
				(t
LookupBaset
VerifyingBasetAdapterLookupBasecBseZdZd
dZdZdZdZdZddZ	dd
dZ
d	Zd
ZdZ
dZRS(cCs3||_i|_|jtt|jdS(N(RXt	_requiredtinit_extendorstsuperR_R(Rtregistry((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRs		
cCsftt|jdx<|jjD]+}|}|dk	r&|j|q&q&W|jjdS(N(RbR_RR R`tkeysR?RJ(RRKR[((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRs	cCs1i|_x!|jjD]}|j|qWdS(N(t
_extendorsRXRR)(Rtp((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRas	cCs|j}x||jD]q}|j|d}g|D]}|j|r2|^q2|gg|D]}|j|s^|^q^||<qWdS(N((Ret__iro__R(tisOrExtends(RR+Retit	extendorste((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR)s
	,cCsV|j}xF|jD];}g|j|dD]}||kr,|^q,||<qWdS(N((ReRgR((RR+ReRiRk((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR8s	cGsP|j}x@|D]8}|j}||kr|j|d||<qqWdS(Ni(R`tweakrefR<(RR*t_refsR[tref((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyt
_subscribes	

uc
Csd}t|}x|jjD]}}|j}|t|krFqn|jjj|}|sgqn||}	t|	|||d|}|dk	rPqqW|j	||S(Ni(
R R&RXRR
RReR(t_lookupRo(
RR*R+RRRR-RcR.RjR/((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRPs 	
	
cCsN|jtt|||}|dkr.|S||}|dkrJ|S|S(N(RR#RR (RtobjectsR+RRQRTRR((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRsc	Cst|}i}xt|jjD]k}|j}|t|krLq%n|jjj|}|smq%n||}t||||d|q%W|j	|t
|jS(Ni(R&R7RXRR
RReR(t
_lookupAllRoR"t	iteritems(	RR*R+R-RRRcR.RjR/((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRUs	

cCs'g|j||D]}|d^qS(Ni(R	(RR*R+RM((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR
+sc	Cst|}g}xt|jjD]}|j}|t|krLq%n|dkrd|f}n'|jjj|}|dkrq%nt	||||d|d|q%W|j
||S(Nui(R&R7RXRRR RReR(t_subscriptionsRo(RR*R+R-RRRcR.Rj((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRV.s	
cCs|jtt||}|dkrKd}xZ|D]}||q4Wn?g}x6|D].}||}|dk	rX|j|qXqXW|S(N((RR#RR R'(RRqR+RRRtsubscriptiont
subscriber((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRDs

N(RARBRR RRaR)R8RoRPRRUR
RVR(((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR_s								t
AdapterLookupcBseZRS((RARB(((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRwRstAdapterRegistrycBs>eZeZddZdZdZdZdZRS(cCs)tj|_tt|j|dS(N(RltWeakKeyDictionaryt_v_subregistriesRbRxR(RR((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRYscCsd|j|<dS(Ni(Rz(RR[((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyt_addSubregistry`scCs ||jkr|j|=ndS(N(Rz(RR[((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyt_removeSubregistrycscCs|jjdd}x*|D]"}||kr|j|qqWx*|D]"}||krI|j|qIqIWtt|j|dS(NR((RR(R|R{RbRxR(RRR:R[((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRgs

cCsAtt|j|x$|jjD]}|j|q&WdS(N(RbRxRRzRd(RRtsub((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRrs((	RARBRwRRR{R|RR(((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRxUs			tVerifyingAdapterLookupcBseZRS((RARB(((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR~ystVerifyingAdapterRegistrycBseZeZRS((RARBR~R(((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR|scCs|dkrtS|SdS(N(R R(tx((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR$scCs)t|trt|StddS(Ns(name must be a regular or unicode string(t
isinstancet
basestringtunicodet	TypeError(R((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyR%s
c
Cs||krnx||jD]M}|j|}|rt|||||d|}|dk	rg|SqqWnHxE|D]=}	|j|	}|ru|j|}|dk	r|SququWdS(Ni(t__sro__R(RpR (
R/tspecsR+RRitltspectcompsR[tiface((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRps
c	Cs||krbxt||jD];}|j|}|r t|||||d|q q Wn<x9t|D]+}|j|}|ro|j|qoqoWdS(Ni(R7RR(Rrtupdate(	R/RR+RRRiRRRR((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRrs'c
	Cs||krext||jD]>}|j|}|r t||||||d|q q WnTxQt|D]C}	|j|	}|rr|j|}|r|j|qqrqrWdS(Ni(R7RR(Rttextend(
R/RR+RRRRiRRRR((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyRts*(t__doc__Rltzope.interfaceRRRRSt_markerRRORFR]RWR^t_zope_interface_coptimizationstImportErrorR_RwRxR~RR$R%RpRrRt(((s:/usr/lib/python2.7/dist-packages/zope/interface/adapter.pyt<module>s2	e
$