| 1 | 0.5.0 - 2007-12-08 |
|---|
| 2 | |
|---|
| 3 | Please see http://elixir.ematia.de/trac/wiki/Migrate04to05 for detailed |
|---|
| 4 | upgrade notes. |
|---|
| 5 | |
|---|
| 6 | New features: |
|---|
| 7 | - Added set method on base Entity (set attributes using kwargs) |
|---|
| 8 | |
|---|
| 9 | Changes: |
|---|
| 10 | - Autosetup defaults to False ! (please look at those upgrade notes!) |
|---|
| 11 | - Polymorphic defaults to True (inheritance is polymorphic by default). |
|---|
| 12 | - Removed one of the autosetup triggers altogether: there is no "fake" mapper |
|---|
| 13 | registered in SQLAlchemy's mapper_registry anymore, so if you try to |
|---|
| 14 | access the class mapper directly (not through the 'mapper' attribute on |
|---|
| 15 | the class), before the setup phase happens, it won't work. This was done |
|---|
| 16 | because of a change in SQLAlchemy trunk (future SA 0.4.2) which broke that |
|---|
| 17 | piece of code (and prevented to use autosetup at all). Since that code |
|---|
| 18 | was a hack in the first place, instead of doing some even uglier hackery, |
|---|
| 19 | I got rid of it altogether. |
|---|
| 20 | - Moved some format strings to constants in options, so that one can change |
|---|
| 21 | them if he wants to. |
|---|
| 22 | - Allow overriding primary_key columns on autoloaded entities (closes tickets |
|---|
| 23 | #20 and #22) |
|---|
| 24 | - Columns created by ManyToOne relationships can now optionally (through |
|---|
| 25 | column_kwargs) *not* create an index (ie it's not harcoded anymore). |
|---|
| 26 | Suggestion by Jason R. Coombs. |
|---|
| 27 | |
|---|
| 28 | Bug fixes: |
|---|
| 29 | - Fixed a nasty bug which prevented inheritance to work correctly when using |
|---|
| 30 | the attribute syntax in many cases. |
|---|
| 31 | - Fixed associable extension to work with SQLAlchemy trunk (future 0.4.2). |
|---|
| 32 | - Fixed an incompatibility with zope.interfaces. |
|---|
| 33 | - Tweaked the initialization sequence again (in fact revert an older change) |
|---|
| 34 | which prevented to reuse class properties of one class in other (subsequent) |
|---|
| 35 | classes. |
|---|
| 36 | - Fixed our tests to work with SA trunk (future 0.4.2) (unicode data + use of |
|---|
| 37 | deprecated attributes) |
|---|
| 38 | |
|---|
| 39 | 0.4.0 - 2007-10-29 |
|---|
| 40 | |
|---|
| 41 | Please see http://elixir.ematia.de/trac/wiki/Migrate03to04 for detailed |
|---|
| 42 | upgrade notes. |
|---|
| 43 | |
|---|
| 44 | New features: |
|---|
| 45 | - Implemented a new syntax to declare fields and relationships, much closer to |
|---|
| 46 | what is found in other Python ORM's. The with_fields syntax is now |
|---|
| 47 | deprecated in favor of a that new syntax. The old statement based (has_field |
|---|
| 48 | et al.) syntax is still available though (and will remain so for quite some |
|---|
| 49 | time). This was done with help from a patch by Adam Gomaa. |
|---|
| 50 | - Implemented polymorphic single-table inheritance as well as polymorphic and |
|---|
| 51 | non-polymorphic multi-table (aka joined table) inheritance. |
|---|
| 52 | - Added ext sub-package for additional Elixir statements. |
|---|
| 53 | - Added associable extension for generating polymorphic associations with |
|---|
| 54 | Elixir statements. |
|---|
| 55 | - Added versioning extension to keep track to all changes to your entities by |
|---|
| 56 | storing them in a secondary table. |
|---|
| 57 | - Added encryption extenstion to encrypt/decrypt some fields data on the fly |
|---|
| 58 | when writing to/reading from the database. |
|---|
| 59 | - Added support for synonym properties. |
|---|
| 60 | - Added shortcut syntax to define column_properties. |
|---|
| 61 | - Added a .query attribute on all entities. The old .query() syntax is still |
|---|
| 62 | available. |
|---|
| 63 | - Added support to add any SQLAlchemy property on your mapper, through the |
|---|
| 64 | GenericProperty class (as well as the has_property statement). These can |
|---|
| 65 | work even if they rely on the entity columns (an thus need them to be |
|---|
| 66 | defined before the property can be declared). See tests/test_properties.py |
|---|
| 67 | for examples. |
|---|
| 68 | - Added support for "manual session management" (ie you can now define an |
|---|
| 69 | entity with "using_options(session=None)" and it won't use any |
|---|
| 70 | SessionContext extension, nor receive the "query" attribute. |
|---|
| 71 | - Made the statement system more powerfull. |
|---|
| 72 | |
|---|
| 73 | Changes: |
|---|
| 74 | - The setup time was changed. That is the table and mapper are not created as |
|---|
| 75 | soon as the class is defined, but rather when first used, or when explicitly |
|---|
| 76 | calling the setup function (recommended). This also allowed us to reorder |
|---|
| 77 | the setup process and allows, among others to use a ManyToOne-generated |
|---|
| 78 | column as a primary key, to use unique constraints on those columns, to |
|---|
| 79 | order by those columns and so on... |
|---|
| 80 | - Made Elixir work with both SQLAlchemy 0.4 and 0.3.10 (with help from a patch |
|---|
| 81 | by Ants Aasma). |
|---|
| 82 | - Moved away from assign_mapper, now all assign_mapper-provided methods are on |
|---|
| 83 | the Entity class. Now, if people don't like them, they have the option to |
|---|
| 84 | simply provide another base class. |
|---|
| 85 | - Default objectstore is now a ScopedSession when working on SQLAlchemy 0.4. |
|---|
| 86 | It means that it's not wrapped in an Objectstore object at all. This means, |
|---|
| 87 | that depending on the version of SA you are using, you'll get a slightly |
|---|
| 88 | different behavior. |
|---|
| 89 | - Relationships to other classes can now also be defined using the classes |
|---|
| 90 | themselves in addition to the class namees. Obviously, this doesn't work for |
|---|
| 91 | forward references. |
|---|
| 92 | - Classes defined inside a function can now have relationships to each other. |
|---|
| 93 | - Added default __init__ method on entities so that subclasses can override it |
|---|
| 94 | and still have the "set attribute by keyword" behavior by calling super() |
|---|
| 95 | - Added "through" and "via" keyword arguments on relationships and has_field |
|---|
| 96 | statement, to proxy values through relationships (uses association_proxy) |
|---|
| 97 | - Made EntityMeta public, so that people can actually define their own base |
|---|
| 98 | class. |
|---|
| 99 | - Changed the order of relationship kwargs processing so that computed kwargs |
|---|
| 100 | can be overridden by kwargs manually passed to the statement. This should |
|---|
| 101 | only be used if you know what you are doing. |
|---|
| 102 | - Added onupdate kwarg to BelongsTo relationships for consistency with the |
|---|
| 103 | ondelete kwarg |
|---|
| 104 | - Added ondelete and onupdate kwargs for use with has_and_belongs_to_many |
|---|
| 105 | to apply on delete clauses to foreign key constraints on the m2m table. |
|---|
| 106 | - Columns of the intermediary table of an has_and_belongs_to_many relationship |
|---|
| 107 | are now marked as primary keys. |
|---|
| 108 | - Reworked how entities look for primary keys on related entities. This |
|---|
| 109 | enables one "normal" entity (fully defined in Elixir) to refer to an entity |
|---|
| 110 | which is autoloaded. |
|---|
| 111 | - Added translation (from column name to column object) of the primary_key |
|---|
| 112 | mapper option so that it can actually be used. This allows to have entities |
|---|
| 113 | without any primary key defined at the table level. |
|---|
| 114 | - Added the possibility to give a custom name for ManyToOne constraints |
|---|
| 115 | (patch from and closes ticket #16) |
|---|
| 116 | - Dropped support for the old threadlocal SA extension (which doesn't even exist |
|---|
| 117 | anymore in SA 0.4) |
|---|
| 118 | |
|---|
| 119 | Bug fixes: |
|---|
| 120 | - Reworked/cleaned tests so that they don't leak stuff to other tests (both at |
|---|
| 121 | the method level and module level) anymore. Uses nosetest's module level |
|---|
| 122 | fixture. |
|---|
| 123 | - Fixed relationships to entities whose primary_key field has been defined |
|---|
| 124 | with a "key" argument (based on a patch by Paul Johnston). |
|---|
| 125 | - Fixed some buggy tests. |
|---|
| 126 | - Fixed relationships to tables using a schema (patch by Neil Blakey-Milner) |
|---|
| 127 | - Made inverse relationships use backrefs. This fixes the "bidirectional |
|---|
| 128 | coherency" problem some people had before doing a flush. (based on a patch |
|---|
| 129 | from Remi Jolin). |
|---|
| 130 | |
|---|
| 131 | 0.3.0 - 2007-03-27 |
|---|
| 132 | - Made the provided metadata not threadlocal. This could break things for you |
|---|
| 133 | in some rare case. Please see the (newly created) FAQ file for details about |
|---|
| 134 | this. |
|---|
| 135 | - Added support for autoloading/reflecting databases with |
|---|
| 136 | has_and_belongs_to_many relationships. The tablename argument is now |
|---|
| 137 | optional, but still recommended, otherwise you'll have to use the same exact |
|---|
| 138 | name for your intermediary table than the one generated. You also _have to_ |
|---|
| 139 | specify at least one of either local_side or remote_side argument. |
|---|
| 140 | - Added support for the "version_id_col" option on entities. This option adds |
|---|
| 141 | a column to the table which will be used to prevent concurrent modifications |
|---|
| 142 | on any row of the entity's table (i.e. it will raise an error if it happens). |
|---|
| 143 | - Made the colname argument optional for belongs_to relationships in |
|---|
| 144 | autoloaded entities. It is only required to specify it if you have several |
|---|
| 145 | belongs_to relationships between two entities/tables. |
|---|
| 146 | - Applied patch from "Wavy" so that columns of a table are in the same order |
|---|
| 147 | as they were declared (this only works for the has_field statement). |
|---|
| 148 | - Applied patch from Isaac Csandl to add an "ondelete" argument to |
|---|
| 149 | belongs_to relationships. The content of that argument is forwarded to the |
|---|
| 150 | foreign key constraint. |
|---|
| 151 | - Foreign key names generated by belongs_to relationships use column names |
|---|
| 152 | instead of relation names in case we have a relation with the same name |
|---|
| 153 | defined in several entities inheriting from the same entity using single- |
|---|
| 154 | table inheritance (and we set a custom column name in one of them to avoid |
|---|
| 155 | a column-name conflict). |
|---|
| 156 | - Using invalid options on entities will now raise an exception |
|---|
| 157 | - Added __version__ |
|---|
| 158 | - Use an explicit metaclass for entities, so that people can define their own |
|---|
| 159 | base class. |
|---|
| 160 | - Changed the approach to reflecting/autoloading belongs_to relationships. |
|---|
| 161 | This shouldn't change anything to how it's used but allowed me to factor |
|---|
| 162 | some code with has_and_belongs_to_many relationships. |
|---|
| 163 | - The tablename option can now be given a callable so that people can provide |
|---|
| 164 | their own function to get the table name for an entity. The tablename option |
|---|
| 165 | can now also be set globally (using the options_defaults dictionary). Of |
|---|
| 166 | course, this only makes sense for the callable usecase. |
|---|
| 167 | |
|---|
| 168 | - Fixed bug preventing having entities without any statement. |
|---|
| 169 | - Fixed documentation for belongs_to relationships (the arguemnt is "required", |
|---|
| 170 | not "nullable"). |
|---|
| 171 | - Fixed typo which broke the use_alter argument on belongs_to relationships. |
|---|
| 172 | - Fixed inheritance unit test to pass SQLAlchemy type check on relations |
|---|
| 173 | (introduced in SA 0.3.6) |
|---|
| 174 | - Fixed wrong field length in autoload test (it was not noticeable with sqlite). |
|---|
| 175 | - Actually make the code python 2.3 compatible (Robin's patch was based on |
|---|
| 176 | 0.1.0 while I had introduced more decorators in the trunk in the mean time). |
|---|
| 177 | |
|---|
| 178 | - Made some PEP8 tweaks in many places. Used the pep8 script provided with |
|---|
| 179 | Cheesecake. |
|---|
| 180 | - Some cleanup/useless code removal |
|---|
| 181 | |
|---|
| 182 | 0.2.0 - 2007-02-28 |
|---|
| 183 | - Applied patch from Robin Munn to make the code python 2.3 compatible |
|---|
| 184 | - Per a suggestion on the mailing list, look at the calling stack frame to |
|---|
| 185 | ensure that we apply statements to the proper class. We now attach the |
|---|
| 186 | statement list to the class itself, rather than attaching it to a global |
|---|
| 187 | list that is neither threadsafe, nor safe when doing nested class |
|---|
| 188 | definition. Also added a test to validate that this works. |
|---|
| 189 | - implemented singletable non-polymorphic inheritance |
|---|
| 190 | - added support to pass non-keyword arguments to tables. You just pass |
|---|
| 191 | them to the using_table_options statement and they will be forwarded to the |
|---|
| 192 | table along with the keyword arguments. This can be used to set table |
|---|
| 193 | constraints. |
|---|
| 194 | - added support for deferred columns (use the "deferred" keyword argument on |
|---|
| 195 | fields) |
|---|
| 196 | - added a "required" keyword argument on fields and BelongsTo |
|---|
| 197 | relationships. This is the opposite of the "nullable" SA argument. |
|---|
| 198 | - added a "column_kwargs" keyword argument to BelongsTo relationships |
|---|
| 199 | to forward any keyword argument directly to the SA Column. |
|---|
| 200 | - added support for the use_alter and constraint_kwargs kwargs on BelongsTo |
|---|
| 201 | relationships (forwarded to SA ForeignKeyConstraint). |
|---|
| 202 | -> removed the systematic use_alter on BelongsTo relations since it |
|---|
| 203 | can now be specified only when needed. |
|---|
| 204 | -> removed it from HasAndBelongsToMany relations, since I think a |
|---|
| 205 | circular foreign key dependency can't happen with those relations. |
|---|
| 206 | - fixed foreign key names on MySQL (and possibly other) databases by |
|---|
| 207 | making sure the generated name is unique for the whole database, and not |
|---|
| 208 | only for the table on which it applies. |
|---|
| 209 | - corrected some docstrings |
|---|
| 210 | |
|---|
| 211 | 0.1.0 - 2007-02-12 |
|---|
| 212 | initial release |
|---|