thank you. What of the relative ordering of the different ORM event types? i.e.
before_flush before_delete after_flush etc When looking at before_flush I see the before_delete has not yet been fired, yet is has been fired in the after_flush. Is this guaranteed to always be the case? On 5 Dec 2013, at 16:01, Michael Bayer <mike...@zzzcomputing.com> wrote: > > On Dec 5, 2013, at 10:51 AM, Tim Kersten <t...@io41.com> wrote: > >> Hi Folks, >> >> Is the order ORM events ( >> http://docs.sqlalchemy.org/en/rel_0_9/orm/events.html ) are fired in >> deterministic and guaranteed to be the same every time? I've searched the >> docs and google but couldn't anything relating to their relative order. > > > the events are ordered. when you do an event.listen it appends the event > listener to a list of listeners. the events are fired from the beginning of > the list on forward. there’s actually an undocumented argument to > event.listen() “insert=True” that will cause the listener to be inserted at > position zero rather than appended. > > the reason the order of events is not really mentioned much is because > there’s complex cases where the order of listener application has not been > evaluated or tested. When you make use of mapper or instrumentation events > against un-mapped base classes and such, the actual append() operation > doesn’t occur until later, when classes are actually mapped, and this works > by shuttling the event listener functions around to those classes. In these > cases we don’t as yet have guarantees in place as to the order of the > listeners being first applied, e.g. if you had a class that is a product of > two mixins, and each mixin has listeners applied to it, that sort of thing. > > however, the order of listeners once applied should definitely be the same > each time assuming no changes to the listener collections. > > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/groups/opt_out.