Repository URL to install this package:
|
Version:
4.0.111 ▾
|
contego
/
home
/
tvault
/
.virtenv
/
lib
/
python2.7
/
site-packages
/
sqlalchemy
/
event
/
attr.pyc
|
|---|
ó
EYc @À s% d Z d d l m Z 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 Z d d
l Z d e j
f d YZ d
e f d YZ d e f d YZ d e f d YZ d e f d YZ d e f d YZ d e f d YZ d
S( s Attribute implementation for _Dispatch classes.
The various listener targets for a particular event class are represented
as attributes, which refer to collections of listeners to be fired off.
These collections can exist at the class level as well as at the instance
level. An event is fired off using code like this::
some_object.dispatch.first_connect(arg1, arg2)
Above, ``some_object.dispatch`` would be an instance of ``_Dispatch`` and
``first_connect`` is typically an instance of ``_ListenerCollection``
if event listeners are present, or ``_EmptyListener`` if none are present.
The attribute mechanics here spend effort trying to ensure listener functions
are available with a minimum of function call overhead, that unnecessary
objects aren't created (i.e. many empty per-instance listener collections),
as well as that everything is garbage collectable when owning references are
lost. Other features such as "propagation" of listener functions across
many ``_Dispatch`` instances, "joining" of multiple ``_Dispatch`` instances,
as well as support for subclass propagation (e.g. events assigned to
``Pool`` vs. ``QueuePool``) are all implemented here.
i ( t absolute_importt with_statementi ( t util( t threadingi ( t registry( t legacy( t chainNt
RefCollectionc BÀ s e Z d Z d Z RS( t refc CÀ s t j | t j S( N( t weakrefR R t _collection_gced( t self( ( sJ /home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/event/attr.pyt _memoized_attr_ref. s ( s ref( t __name__t
__module__t __slots__R ( ( ( sJ /home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/event/attr.pyR + s t _ClsLevelDispatchc BÀ se e Z d Z d Z d Z d Z d Z d
Z d Z d Z d
Z
d Z d Z RS( s2 Class-level events on :class:`._Dispatch` classes.t namet arg_namest has_kwt legacy_signaturest _clslevelt __weakref__c CÀ s | j | _ t j | } | j d | _ t | j | _ t t
t t | d g d d | _
t j | | | | _ t j | _ d S( Ni t _legacy_signaturest keyc SÀ s | d S( Ni ( ( t s( ( sJ /home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/event/attr.pyt <lambda>@ s ( R
R R t inspect_getargspect argsR t boolt keywordsR t listt reversedt sortedt getattrR R t _augment_fn_docst __doc__R t WeakKeyDictionaryR ( R t parent_dispatch_clst fnt argspec( ( sJ /home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/event/attr.pyt __init__8 s c CÀ sj | r | j | } n | j rf y t j | d t } Wn t k
rM qf Xt j | | | } n | S( Nt no_self( t _wrap_fn_for_kwR R t get_callable_argspect Truet TypeErrorR t _wrap_fn_for_legacy( R R' t namedR( ( ( sJ /home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/event/attr.pyt _adjust_fn_specG s
c À s f d } | S( Nc À s/ t t j | } | j | | S( N( t dictt zipR t update( R t kwt argdict( R' R ( sJ /home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/event/attr.pyt wrap_kwT s
( ( R R' R7 ( ( R' R sJ /home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/event/attr.pyR+ S s c CÀ s× | j } t | t s$ t d | g } x | r | j d } | j | j | | k r | | j k r | j | q0 | | j k r¨ t j
| j | <n | j | j | j q0 Wt
j | | d S( Ns* Class-level Event targets must be classes.i ( t dispatch_targett
isinstancet typet AssertionErrort popt extendt __subclasses__R t update_subclasst collectionst dequet
appendleftt
_listen_fnR t _stored_in_collection( R t event_keyt propagatet targett stackt cls( ( sJ /home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/event/attr.pyt insertZ s c CÀ s× | j } t | t s$ t d | g } x | r | j d } | j | j | | k r | | j k r | j | q0 | | j k r¨ t j
| j | <n | j | j | j q0 Wt
j | | d S( Ns* Class-level Event targets must be classes.i ( R8 R9 R: R; R<