summaryrefslogtreecommitdiff
path: root/test/ext/declarative.py
Commit message (Collapse)AuthorAgeFilesLines
* - unit tests have been migrated from unittest to nose.Mike Bayer2009-06-101-1538/+0
| | | | | See README.unittests for information on how to run the tests. [ticket:970]
* - removed test.testing.ORMTest, test.fixtures, and allMike Bayer2009-06-021-1/+3
| | | | dependencies on those.
* Fixed adding of deferred or othe column properties to a declarative class.Michael Trier2009-04-181-1/+24
|
* - Fixed __repr__() and other _get_colspec() methods onMike Bayer2009-03-271-0/+2
| | | | | ForeignKey constructed from __clause_element__() style construct (i.e. declarative columns). [ticket:1353]
* - Declarative will accept a table-bound column as a propertyMike Bayer2009-02-221-2/+10
| | | | | | when used in conjunction with __table__, if the column is already present in __table__. The column will be remapped to the given key the same way as when added to the mapper() properties dict.
* - Declarative locates the "inherits" class using a searchMike Bayer2009-02-191-1/+20
| | | | | through __bases__, to skip over mixins that are local to subclasses.
* - Declarative will properly interpret the "foreign_keys" argumentMike Bayer2009-02-171-1/+3
| | | | on a backref() if it's a string.
* fix errant foreign keyMike Bayer2009-01-171-1/+1
|
* - The "clear()", "save()", "update()", "save_or_update()"Mike Bayer2009-01-171-26/+26
| | | | | | Session methods have been deprecated, replaced by "expunge_all()" and "add()". "expunge_all()" has also been added to ScopedSession.
* - It's an error to add new Column objects to a declarative classMike Bayer2009-01-131-0/+8
| | | | that specified an existing table using __table__.
* - Column with no name (as in declarative) won't raise aMike Bayer2009-01-131-0/+12
| | | | | NoneType error when it's string output is requsted (such as in a stack trace).
* - Can now specify Column objects on subclasses which have noMike Bayer2009-01-121-107/+414
| | | | | | | | | | | | | | | | | | | | | table of their own (i.e. use single table inheritance). The columns will be appended to the base table, but only mapped by the subclass. - For both joined and single inheriting subclasses, the subclass will only map those columns which are already mapped on the superclass and those explicit on the subclass. Other columns that are present on the `Table` will be excluded from the mapping by default, which can be disabled by passing a blank `exclude_properties` collection to the `__mapper_args__`. This is so that single-inheriting classes which define their own columns are the only classes to map those columns. The effect is actually a more organized mapping than you'd normally get with explicit `mapper()` calls unless you set up the `exclude_properties` arguments explicitly. - docs/tests
* mysql/pg sensitive fixesMike Bayer2009-01-121-1/+1
|
* - Concrete inheriting mappers now instrument attributes which are inherited ↵Mike Bayer2009-01-111-13/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | from the superclass, but are not defined for the concrete mapper itself, with an InstrumentedAttribute that issues a descriptive error when accessed. [ticket:1237] - Added a new `relation()` keyword `back_populates`. This allows configuation of backreferences using explicit relations. [ticket:781] This is required when creating bidirectional relations between a hierarchy of concrete mappers and another class. [ticket:1237] - Test coverage added for `relation()` objects specified on concrete mappers. [ticket:1237] - A short documentation example added for bidirectional relations specified on concrete mappers. [ticket:1237] - Mappers now instrument class attributes upon construction with the final InstrumentedAttribute object which remains persistent. The `_CompileOnAttr`/`__getattribute__()` methodology has been removed. The net effect is that Column-based mapped class attributes can now be used fully at the class level without invoking a mapper compilation operation, greatly simplifying typical usage patterns within declarative. [ticket:1269] - Index now accepts column-oriented InstrumentedAttributes (i.e. column-based mapped class attributes) as column arguments. [ticket:1214] - Broke up attributes.register_attribute into two separate functions register_descriptor and register_attribute_impl. The first assembles an InstrumentedAttribute or Proxy descriptor, the second assembles the AttributeImpl inside the InstrumentedAttribute. register_attribute remains for outside compatibility. The argument lists have been simplified. - Removed class_manager argument from all but MutableScalarAttributeImpl (the branch had removed class_ as well but this has been reverted locally to support the serializer extension). - Mapper's previous construction of _CompileOnAttr now moves to a new MapperProperty.instrument_class() method which is called on all MapperProperty objects at the moment the mapper receives them. All MapperProperty objects now call attributes.register_descriptor within that method to assemble an InstrumentedAttribute object directly. - InstrumentedAttribute now receives the "property" attribute from the given PropComparator. The guesswork within the constructor is removed, and allows "property" to serve as a mapper compilation trigger. - RelationProperty.Comparator now triggers compilation of its parent mapper within a util.memoized_property accessor for the "property" attribute, which is used instead of "prop" (we can probably remove "prop"). - ColumnProperty and similar handle most of their initialization in their __init__ method since they must function fully at the class level before mappers are compiled. - SynonymProperty and ComparableProperty move their class instrumentation logic to the new instrument_class() method. - LoaderStrategy objects now add their state to existing InstrumentedAttributes using attributes.register_attribute_impl. Both column and relation-based loaders instrument in the same way now, with a unique InstrumentedAttribute *and* a unique AttributeImpl for each class in the hierarchy. attribute.parententity should now be correct in all cases. - Removed unitofwork.register_attribute, and simpified the _register_attribute methods into a single function in strategies.py. unitofwork exports the UOWEventHandler extension directly. - To accomodate the multiple AttributeImpls across a class hierarchy, the sethasparent() method now uses an optional "parent_token" attribute to identify the "parent". AbstractRelationLoader sends the MapperProperty along to serve as this token. If the token isn't present (which is only the case in the attributes unit tests), the AttributeImpl is used instead, which is essentially the same as the old behavior. - Added new ConcreteInheritedProperty MapperProperty. This is invoked for concrete mappers within _adapt_inherited_property() to accomodate concrete mappers which inherit unhandled attributes from the base class, and basically raises an exception upon access. [ticket:1237] - attributes.register_attribute and register_descriptor will now re-instrument an attribute unconditionally without checking for a previous attribute. Not sure if this is controversial. It's needed so that ConcreteInheritedProperty instrumentation can be overridden by an incoming legit MapperProperty without any complexity. - Added new UninstrumentedColumnLoader LoaderStrategy. This is used by the polymorphic_on argument when the given column is not represented within the mapped selectable, as is typical with a concrete scenario which maps to a polymorphic union. It does not configure class instrumentation, keeping polymorphic_on from getting caught up in the new concrete attribute-checking logic. - RelationProperty now records its "backref" attributes using a set assigned to `_reverse_property` instead of a scalar. The `back_populates` keyword allows any number of properties to be involved in a single bidirectional relation. Changes were needed to RelationProperty.merge(), DependencyProcessor to accomodate for the new multiple nature of this attribute. - Generalized the methodology used by ManyToManyDP to check for "did the other dependency already handle this direction", building on the `_reverse_property` collection. - post_update logic within dependency.py moves to use the same methodology as ManyToManyDP so that "did the other dependency do this already" checks are made to be specific to the two dependent instances. - Caught that RelationProperty.merge() was writing to instance.__dict__ directly (!) - repaired to talk to instance_state.dict. - Removed needless eager loading example from concrete mapper docs. - Added test for [ticket:965]. - Added the usual Node class/nodes table to orm/_fixtures.py, but haven't used it for anything yet. We can potentially update test/orm/query.py to use this fixture. - Other test/documentation cleanup.
* - 0.5.1 bumpMike Bayer2009-01-111-0/+6
| | | | | - modernized mapper()/no table exception - added __tablename__ exception to declarative since ppl keep complaining
* - Exceptions raised during compile_mappers() are nowMike Bayer2008-12-241-1/+16
| | | | | | | | | preserved to provide "sticky behavior" - if a hasattr() call on a pre-compiled mapped attribute triggers a failing compile and suppresses the exception, subsequent compilation is blocked and the exception will be reiterated on the next compile() call. This issue occurs frequently when using declarative.
* merge the test/ directory from -r5438:5439 of py3k_warnings branch. this givesMike Bayer2008-12-181-0/+1
| | | | us a 2.5-frozen copy of unittest so we're insulated from unittest changes.
* - comparator_factory is accepted by all MapperProperty constructors. ↵Mike Bayer2008-11-241-0/+22
| | | | | | | | | | | | [ticket:1149] - added other unit tests as per [ticket:1149] - rewrote most of the "joined table inheritance" documentation section, removed badly out of date "polymorphic_fetch" and "select_table" arguments. - "select_table" raises a deprecation warning. converted unit tests to not use it. - removed all references to "ORDER BY table.oid" from mapping docs. - renamed PropertyLoader to RelationProperty. Old symbol remains. - renamed ColumnProperty.ColumnComparator to ColumnProperty.Comparator. Old symbol remains.
* - switched session.save() to session.add() throughout declarative testMike Bayer2008-11-141-22/+48
| | | | | | | | - Fixed PendingDeprecationWarning involving order_by parameter on relation(). [ticket:1226] - Unit tests still filter pending deprecation warnings but have a commented-out line to temporarily disable this behavior. Tests need to be fully converted before we can turn this on.
* - Can now use a custom "inherit_condition" inMike Bayer2008-11-121-0/+14
| | | | __mapper_args__ when using declarative.
* - Improved the behavior of aliased() objects such that they moreMike Bayer2008-11-031-1/+71
| | | | | | | | | | | accurately adapt the expressions generated, which helps particularly with self-referential comparisons. [ticket:1171] - Fixed bug involving primaryjoin/secondaryjoin conditions constructed from class-bound attributes (as often occurs when using declarative), which later would be inappropriately aliased by Query, particularly with the various EXISTS based comparators.
* - Fixed exception throw which would occur when string-basedMike Bayer2008-09-041-2/+22
| | | | primaryjoin condition was used in conjunction with backref.
* - Fixed bug whereby mapper couldn't initialize if a compositeMike Bayer2008-09-041-0/+16
| | | | | primary key referenced another table that was not defined yet [ticket:1161]
* - fixed tearDown to reverse sorted table listMike Bayer2008-08-231-1/+1
|
* - fixed a bug in declarative test which was looking for old version of historyMike Bayer2008-08-191-2/+2
| | | | | | | | | | - Added "sorted_tables" accessor to MetaData, which returns Table objects sorted in order of dependency as a list. This deprecates the MetaData.table_iterator() method. The "reverse=False" keyword argument has also been removed from util.sort_tables(); use the Python 'reversed' function to reverse the results. [ticket:1033]
* - fixed endless loop bug which could occurMike Bayer2008-08-041-0/+17
| | | | | | | | | | | | within a mapper's deferred load of inherited attributes. - declarative initialization of Columns adjusted so that non-renamed columns initialize in the same way as a non declarative mapper. This allows an inheriting mapper to set up its same-named "id" columns in particular such that the parent "id" column is favored over the child column, reducing database round trips when this value is requested.
* descriptive error message raised when string-based relation() expressions ↵Mike Bayer2008-08-031-1/+8
| | | | inadvertently mistake a PropertyLoader for a ColumnLoader property
* relation.order_by requires _literal_as_column conversion as wellMike Bayer2008-07-291-2/+32
|
* - An inheriting class can now override an attributeMike Bayer2008-07-201-1/+1
| | | | | | inherited from the base class with a plain descriptor, or exclude an inherited attribute via the include_properties/exclude_properties collections.
* - Some improvements to the _CompileOnAttr mechanism whichMike Bayer2008-07-191-5/+14
| | | | | | should reduce the probability of "Attribute x was not replaced during compile" warnings. (this generally applies to SQLA hackers, like Elixir devs).
* - Class-bound attributes sent as arguments toMike Bayer2008-07-191-1/+27
| | | | | relation()'s remote_side and foreign_keys parameters are now accepted, allowing them to be used with declarative.
* - Removed 2.3 set emulations/enhancements.Jason Kirtland2008-07-151-1/+0
| | | | (sets.Set-based collections & DB-API returns still work.)
* - Declarative supports a __table_args__ class variable, whichMike Bayer2008-07-091-1/+17
| | | | | | | is either a dictionary, or tuple of the form (arg1, arg2, ..., {kwarg1:value, ...}) which contains positional + kw arguments to be passed to the Table constructor. [ticket:1096]
* added string argument resolution to relation() in conjunction with ↵Mike Bayer2008-05-261-1/+29
| | | | | | declarative for: order_by, primaryjoin, secondaryjoin, secondary, foreign_keys, and remote_side.
* - 2.3 compat.Jason Kirtland2008-05-211-0/+1
|
* - renamed query.slice_() to query.slice()Mike Bayer2008-05-131-0/+41
| | | | | | - pulled out DeclarativeMeta.__init__ into its own function, added instrument_declarative() which will do the "declarative" thing to any class independent of its lineage (for ctheune) - added "cls" kwarg to declarative_base() allowing user-defined base class for declarative base [ticket:1042]
* Removed declared_synonym(), pep-8 clean ups.Jason Kirtland2008-05-131-203/+178
|
* r4695 merged to trunk; trunk now becomes 0.5.Mike Bayer2008-05-091-3/+3
| | | | 0.4 development continues at /sqlalchemy/branches/rel_0_4
* - fixed reentrant mapper compile hang whenMike Bayer2008-05-021-4/+35
| | | | | a declared attribute is used within ForeignKey, ie. ForeignKey(MyOtherClass.someattribute)
* - factored out the logic used by Join to create its join conditionMike Bayer2008-05-021-1/+27
| | | | | | | - With declarative, joined table inheritance mappers use a slightly relaxed function to create the "inherit condition" to the parent table, so that other foreign keys to not-yet-declared Table objects don't trigger an error.
* - declarative_base() takes optional kwarg "mapper", whichMike Bayer2008-03-291-0/+36
| | | | | | | is any callable/class/method that produces a mapper, such as declarative_base(mapper=scopedsession.mapper). This property can also be set on individual declarative classes using the "__mapper_cls__" property.
* - already-compiled mappers will still trigger compiles ofMike Bayer2008-03-231-0/+24
| | | | other uncompiled mappers when used [ticket:995]
* added nicer error message to dependent class not foundMike Bayer2008-03-221-0/+14
|
* - added support for declarative deferred(Column(...))Mike Bayer2008-03-181-3/+73
| | | | - changed "instrument" argument on synonym() to "descriptor", for consistency with comparable_proeprty()
* mapper double checks that columns in _compile_property are in the ↵Mike Bayer2008-03-181-3/+43
| | | | _cols_by_table collection
* - Start coverage for Class.prop = Column(), promote nameless ColumnsJason Kirtland2008-03-181-18/+42
|
* - Declarative will complete setup for Columns lacking names, allowsJason Kirtland2008-03-181-4/+9
| | | | | | | | a more DRY syntax. class Foo(Base): __tablename__ = 'foos' id = Column(Integer, primary_key=True)
* - Declarative gains @synonym_for and @comparable_using decoratorsJason Kirtland2008-03-171-1/+65
|
* Issue a warning when a declarative detects a likely trailing comma: foo = ↵Jason Kirtland2008-03-151-0/+16
| | | | Column(foo),
* - the "synonym" function is now directly usable withMike Bayer2008-03-151-1/+46
| | | | | | | "declarative". Pass in the decorated property using the "instrument" keyword argument, e.g.: somekey = synonym('_somekey', instrument=property(g, s)) - declared_synonym deprecated