| 1 | 0.7.0 - 2009-09-xx |
|---|
| 2 | |
|---|
| 3 | Please see http://elixir.ematia.de/trac/wiki/Migrate06to07 for detailed |
|---|
| 4 | upgrade notes. If you are upgrading an application with existing data from an |
|---|
| 5 | earlier version of Elixir, you are VERY STRONGLY ADVISED to read them! |
|---|
| 6 | |
|---|
| 7 | New features: |
|---|
| 8 | - Added a new statement 'using_options_defaults' which can be used |
|---|
| 9 | on a custom base class to set default values for the options of all its |
|---|
| 10 | subclasses. For example, this makes it possible to have all classes |
|---|
| 11 | inheriting from your custom base class use some custom options without |
|---|
| 12 | having to set it individually on each entity, nor modify |
|---|
| 13 | options.options_defaults. |
|---|
| 14 | - The local_colname and remote_colname arguments on ManyToMany relationships |
|---|
| 15 | can now also be used to set custom names for the ManyToMany table columns. |
|---|
| 16 | This effectively replace the column_format on ManyToMany relationships which |
|---|
| 17 | is now deprecated. Change based on a patch from Diez B. Roggisch. |
|---|
| 18 | - Added (or rather fixed and documented) a "table" argument on ManyToMany |
|---|
| 19 | relationships to allow using a manually-defined Table (closes #44). |
|---|
| 20 | - Added a "schema" argument on ManyToMany relationships to be able to create |
|---|
| 21 | the ManyToMany table in a custom schema and not necessarily the same schema |
|---|
| 22 | as the table of the "source" entity (patch from Diez B. Roggisch). |
|---|
| 23 | - Added a "table_kwargs" argument on ManyToMany relationships to pass any |
|---|
| 24 | extra keyword arguments to the underlying Table object (ticket #94). |
|---|
| 25 | - Added a new "target_column" argument on ManyToOne relationships so that you |
|---|
| 26 | can target unique but non-primary key columns. At the moment, this only works |
|---|
| 27 | if the target column is declared before the ManyToOne (see ticket #26). |
|---|
| 28 | - Added new "column_names" argument to the acts_as_versioned extension, |
|---|
| 29 | allowing to specify custom column names (inspired by a patch by |
|---|
| 30 | Alex Bodnaru). |
|---|
| 31 | - Made M2MCOL_NAMEFORMAT option accept a callable, so that more complex naming |
|---|
| 32 | generation can be used if so desired. |
|---|
| 33 | - Added two new extensions (contributed by Alex Bodnaru) |
|---|
| 34 | - "perform_ddl" allows to execute one or several DDL statements upon table |
|---|
| 35 | creation. |
|---|
| 36 | - "preload_data" allows to insert data into the entity table just after it |
|---|
| 37 | has been created. |
|---|
| 38 | - EntityCollection gained a working extend method |
|---|
| 39 | |
|---|
| 40 | Changes: |
|---|
| 41 | - Moved class instrumentation to a separate function: instrument_class |
|---|
| 42 | - Moved all methods of the "Entity" base class, to the "EntityBase" class, so |
|---|
| 43 | that people who want to provide their own base class but don't want to loose |
|---|
| 44 | all the methods provided by "Entity" can simply inherit from EntityBase |
|---|
| 45 | instead of copy-pasting the code for all its methods. |
|---|
| 46 | - Renamed remote_side and local_side ManyToMany arguments to remote_colname and |
|---|
| 47 | local_colname respectively to not collide with the remote_side argument |
|---|
| 48 | provided by SA (it doesn't make much sense on ManyToMany relationships but |
|---|
| 49 | still). |
|---|
| 50 | - Delete Elixir properties in the setup phase rather than as soon as they are |
|---|
| 51 | attached to their class. It makes it possible to access them or refer to them |
|---|
| 52 | after the class is defined (but before setup). |
|---|
| 53 | - Deprecated act_as_list extension in favor of SQLAlchemy's orderinglist |
|---|
| 54 | extension (closes #53). |
|---|
| 55 | - Made manually defined mapper options take precedence over Elixir-generated |
|---|
| 56 | ones. Not very useful yet since most are expecting Column objects. |
|---|
| 57 | |
|---|
| 58 | Bug fixes: |
|---|
| 59 | - Fixed Elixir to work with the future SQLAlchemy 0.6 (trunk as of 6377). |
|---|
| 60 | - Changed the pattern used by default to generate column names for (all) |
|---|
| 61 | ManyToMany relationships so that the meaning of bidirectional |
|---|
| 62 | self-referential relationships does not depend on the order of declaration |
|---|
| 63 | of each side (closes #69). See upgrade notes for details. |
|---|
| 64 | - Changed slightly the pattern used to generate the name of the table for |
|---|
| 65 | bidirectional self-referential ManyToMany relationships so that it doesn't |
|---|
| 66 | depend on the order of declaration of each side (closes #19). |
|---|
| 67 | See upgrade notes for details. |
|---|
| 68 | - default EntityCollection raise an exception instead of returning None when |
|---|
| 69 | trying to resolve an inexisting Entity from outside of another entity (for |
|---|
| 70 | example through EntityCollection.__getattr__ |
|---|
| 71 | - Fixed the case where you specify both "primaryjoin" and "colname" arguments |
|---|
| 72 | (useless in this case, but harmless) on a ManyToOne relationship of an |
|---|
| 73 | autoloaded entity. |
|---|
| 74 | - Fixed bug which broke the "identity" (Entity) option |
|---|
| 75 | - Fixed documentation about local_side and remote_side arguments being |
|---|
| 76 | required if the entity containing the relationship is autoloaded, when it is |
|---|
| 77 | only required if the relationship is self-referencial, and primaryjoin or |
|---|
| 78 | secondaryjoin as not been specified manually. |
|---|
| 79 | - Added missing documentation for the "filter" argument on OneToMany |
|---|
| 80 | relationships. |
|---|
| 81 | - Fixed the act_as_list extension's move_to_bottom method to work on MySQL |
|---|
| 82 | (closes #34). |
|---|
| 83 | - Fixed event methods not being called when they are defined on a parent class. |
|---|
| 84 | (introduced in release 0.5.0). |
|---|
| 85 | - Added workaround for an odd mod_python behavior (class.__module__ returns a |
|---|
| 86 | weird name which is not in sys.modules). |
|---|
| 87 | - Fixed filter argument on OneToMany relationship leaking the filter to the |
|---|
| 88 | unfiltered relationship. |
|---|
| 89 | - Fixed encrypted extension to not encrypt several times an instance attributes |
|---|
| 90 | when that instance is flushed several times before being expunged from the |
|---|
| 91 | session. |
|---|
| 92 | - Fixed using to_dict with a ManyToOne relationship in the "deep" set and that |
|---|
| 93 | relationship being None in the entity being converted. |
|---|
| 94 | |
|---|
| 95 | 0.6.1 - 2008-08-18 |
|---|
| 96 | |
|---|
| 97 | New features: |
|---|
| 98 | - Allow ManyToOne relationships to use manually created fields as their |
|---|
| 99 | "supporting column". This means that the columns can be customized without |
|---|
| 100 | resorting to using the ugly "column_kwargs" (patch from Jason R. Coombs, |
|---|
| 101 | closes #39). |
|---|
| 102 | - Extra args and kwargs to Synonym and ColumnProperty are forwarded to their |
|---|
| 103 | underlying constructs. This allows for example deferred ColumnProperties. |
|---|
| 104 | - Added a more helpful assertion message when inverse relationship types don't |
|---|
| 105 | match. |
|---|
| 106 | |
|---|
| 107 | Changes: |
|---|
| 108 | - Removed support for the deprecated "with_fields" syntax |
|---|
| 109 | - Entity.__init__ calls Entity.set instead of duplicating its functionality |
|---|
| 110 | |
|---|
| 111 | Bug fixes: |
|---|
| 112 | - Fixed the "Target resolves to several entities" exception message to actually |
|---|
| 113 | include the target name. |
|---|
| 114 | - Renamed the on_reconstitute method decorator to reconstructor, to track the |
|---|
| 115 | corresponding change in SA's trunk. |
|---|
| 116 | |
|---|
| 117 | 0.6.0 - 2008-07-18 |
|---|
| 118 | |
|---|
| 119 | Please see http://elixir.ematia.de/trac/wiki/Migrate05to06 for detailed |
|---|
| 120 | upgrade notes. |
|---|
| 121 | |
|---|
| 122 | New features: |
|---|
| 123 | - Fields in a custom base class are added to all their children. |
|---|
| 124 | - Added two new methods on the base entity: from_dict and to_dict, which can |
|---|
| 125 | be used to create (or output) a whole hierarchy of instances from (to) a |
|---|
| 126 | simple JSON-like dictionary notation (patch from Paul Johnston, |
|---|
| 127 | closes ticket #40). |
|---|
| 128 | - Added experimental (!) support for concrete table inheritance (both |
|---|
| 129 | polymorphic or not). Concrete polymorphic inheritance requires SQLAlchemy |
|---|
| 130 | 0.4.5 or later. |
|---|
| 131 | - Moved the "entity to string" mapping and resolving code to the (newly |
|---|
| 132 | created) EntityCollection class (which stores lists of entities). This |
|---|
| 133 | allows one to provide a custom mapping method if needed. The default class |
|---|
| 134 | also overrides the __getattr__ method, providing and handy way to get at your |
|---|
| 135 | entities. See http://elixir.ematia.de/trac/browser/elixir/tags/0.6.0/tests/test_collections#L58 |
|---|
| 136 | - Added new "identity" option which can be used to set a custom polymorphic |
|---|
| 137 | identity for an entity. It also accepts a callable so that you can generate |
|---|
| 138 | the identity name automatically from the class itself. |
|---|
| 139 | - Added __setattr__ method on Metaclass so that you can add properties |
|---|
| 140 | slightly more easily after class definition (but *before* setup_all): |
|---|
| 141 | class A(Entity): |
|---|
| 142 | pass |
|---|
| 143 | A.name = Field(String(32)) |
|---|
| 144 | - Added add_table_column, add_mapper_property and add_mapper_extension helper |
|---|
| 145 | methods in EntityBuilders. |
|---|
| 146 | - Added full_tablename property on EntityDescriptor (includes schema name if |
|---|
| 147 | any). |
|---|
| 148 | - Added on_reconstitute event/method decorator. Only works with SA 0.5. |
|---|
| 149 | - Added support for viewonly relationships (OneToMany and OneToOne). |
|---|
| 150 | - Added support for filtered OneToMany relationships. Produce viewonly |
|---|
| 151 | relations. See http://elixir.ematia.de/trac/browser/elixir/tags/0.6.0/tests/test_o2m.py |
|---|
| 152 | for an example. |
|---|
| 153 | - Added support for callables for some arguments on relationships: primaryjoin, |
|---|
| 154 | secondaryjoin and remote_side. It means those can be evaluated at setup time |
|---|
| 155 | (when tables and their columns already exist) instead of definition time. |
|---|
| 156 | |
|---|
| 157 | Changes: |
|---|
| 158 | - Default "target entity resolving code" changed slightly. It now uses a global |
|---|
| 159 | collection keyed on the entity name. This means that entities can refer to |
|---|
| 160 | other entities in a different module simply with the target entity name |
|---|
| 161 | instead of its full path. The full path is only required when there is an |
|---|
| 162 | ambiguity (ie when there are two classes with the same name in two different |
|---|
| 163 | modules). Closes #9. |
|---|
| 164 | - Added support for SQLAlchemy 0.5, and dropped support for version 0.3 and |
|---|
| 165 | earlier. |
|---|
| 166 | - The default session (elixir.session) uses sessionmaker() instead of |
|---|
| 167 | create_session(), which means it has now the following characteristics: |
|---|
| 168 | * autoflush=True |
|---|
| 169 | * autocommit=False (with SA 0.5 -- equivalent to transactional=True with |
|---|
| 170 | SA 0.4) |
|---|
| 171 | * autoexpire=True (with SA 0.5). |
|---|
| 172 | - removed objectstore and other SA 0.3 (or older) support code. |
|---|
| 173 | |
|---|
| 174 | Bug fixes: |
|---|
| 175 | - Fixed multi-table inheritance when using a non default schema (closes #38) |
|---|
| 176 | - Fixed ManyToOne relationships using 'key' kwarg in their column_kwargs |
|---|
| 177 | (patch by Jason R. Coombs) |
|---|
| 178 | - Fixed inheritance with autoloaded entities: when using autoload, we |
|---|
| 179 | shouldn't try to add columns to the table (closes tickets #41 and #43). |
|---|
| 180 | - Fixed acts_as_list extension with autoloaded entities (patch from maqr, |
|---|
| 181 | closes ticket #52). |
|---|
| 182 | - Fixed ColumnProperty to work with latest version of SQLAlchemy (O.4.5 and |
|---|
| 183 | later) |
|---|
| 184 | - Fixed ManyToMany relationships when not using the default schema |
|---|
| 185 | (patch from Diez B. Roggisch, closes ticket #48) |
|---|
| 186 | |
|---|
| 187 | Misc: |
|---|
| 188 | - Added AUTHORS list. If you are missing from this list, don't hesitate to |
|---|
| 189 | contact me. |
|---|
| 190 | |
|---|
| 191 | 0.5.2 - 2008-03-28 |
|---|
| 192 | |
|---|
| 193 | New features: |
|---|
| 194 | - Added an optional `check_concurrency` keyword argument to the versioning |
|---|
| 195 | extension, supporting the usage of SQLAlchemy's built-in optimistic |
|---|
| 196 | concurrency check. |
|---|
| 197 | |
|---|
| 198 | Changes: |
|---|
| 199 | - Made Elixir python 2.3 compatible again (based on patches from |
|---|
| 200 | Jason R. Coombs) |
|---|
| 201 | |
|---|
| 202 | Bug fixes: |
|---|
| 203 | - Fixed act_as_list extension to work with DBMS that require subselects to be |
|---|
| 204 | aliased (patch by Alice McGregor) |
|---|
| 205 | - Fixed the versioning extension so that the history table is updated within |
|---|
| 206 | the current transaction (patch from and closes ticket #35). |
|---|
| 207 | |
|---|
| 208 | 0.5.1 - 2008-02-07 |
|---|
| 209 | |
|---|
| 210 | New features: |
|---|
| 211 | - Added a new elixir plugin for managing entities as (ordered) lists. |
|---|
| 212 | - Added a `column_format` keyword argument to `ManyToMany` which can be used |
|---|
| 213 | to specify an alternate format string for column names in the mapping table. |
|---|
| 214 | - Added support for custom base classes which inherit from another class (ie |
|---|
| 215 | not directly from object). |
|---|
| 216 | - Added an alternate (nicer) syntax to define synonym properties. This syntax |
|---|
| 217 | has a more limited scope, except that it can refer to properties defined in |
|---|
| 218 | a parent entity. This is based on a patch from Alexandre da Silva. |
|---|
| 219 | |
|---|
| 220 | Changes: |
|---|
| 221 | - Added check so that using an inexisting column in an order_by or other |
|---|
| 222 | column-name based argument raises an exception. |
|---|
| 223 | - The polymorphic_identity kwarg in using_mapper_options is not overriden |
|---|
| 224 | anymore by the one generated by Elixir (patch from Ben Bangert). |
|---|
| 225 | - Moved the format of the multi-table inheritance column to a constant in |
|---|
| 226 | options (so that it can be changed globally). |
|---|
| 227 | - The foreign key constraint of the column in a multi-table inheritance is |
|---|
| 228 | configured with a cascade rule. |
|---|
| 229 | |
|---|
| 230 | Bug fixes: |
|---|
| 231 | - A child entity doesn't inherit anymore its parent entity statements (such as |
|---|
| 232 | options) if it doesn't use any statement itself. |
|---|
| 233 | - Made inheritance work for custom base classes (closes #25). |
|---|
| 234 | - Fixed the inverse relationship matching when the inverse relationship is |
|---|
| 235 | defined in a parent Entity (thanks to Alexandre da Silva). |
|---|
| 236 | - Fixed bug in setup_entities (it always used the global entity list and not |
|---|
| 237 | the list given as argument). |
|---|
| 238 | - Fixed the versioning extension not appropriately handling versioned |
|---|
| 239 | entities with onupdate events (patch from Remi Jolin, closes #29). |
|---|
| 240 | - Fixed videostore example (patch from Jason R. Coombs, closes #31). |
|---|
| 241 | |
|---|
| 242 | 0.5.0 - 2007-12-08 |
|---|
| 243 | |
|---|
| 244 | Please see http://elixir.ematia.de/trac/wiki/Migrate04to05 for detailed |
|---|
| 245 | upgrade notes. |
|---|
| 246 | |
|---|
| 247 | New features: |
|---|
| 248 | - Added set method on base Entity (set attributes using kwargs) |
|---|
| 249 | |
|---|
| 250 | Changes: |
|---|
| 251 | - Autosetup defaults to False ! (please look at those upgrade notes!) |
|---|
| 252 | - Polymorphic defaults to True (inheritance is polymorphic by default). |
|---|
| 253 | - Removed one of the autosetup triggers altogether: there is no "fake" mapper |
|---|
| 254 | registered in SQLAlchemy's mapper_registry anymore, so if you try to |
|---|
| 255 | access the class mapper directly (not through the 'mapper' attribute on |
|---|
| 256 | the class), before the setup phase happens, it won't work. This was done |
|---|
| 257 | because of a change in SQLAlchemy trunk (future SA 0.4.2) which broke that |
|---|
| 258 | piece of code (and prevented to use autosetup at all). Since that code |
|---|
| 259 | was a hack in the first place, instead of doing some even uglier hackery, |
|---|
| 260 | I got rid of it altogether. |
|---|
| 261 | - Moved some format strings to constants in options, so that one can change |
|---|
| 262 | them if he wants to. |
|---|
| 263 | - Allow overriding primary_key columns on autoloaded entities (closes tickets |
|---|
| 264 | #20 and #22) |
|---|
| 265 | - Columns created by ManyToOne relationships can now optionally (through |
|---|
| 266 | column_kwargs) *not* create an index (ie it's not harcoded anymore). |
|---|
| 267 | Suggestion by Jason R. Coombs. |
|---|
| 268 | |
|---|
| 269 | Bug fixes: |
|---|
| 270 | - Fixed a nasty bug which prevented inheritance to work correctly when using |
|---|
| 271 | the attribute syntax in many cases. |
|---|
| 272 | - Fixed associable extension to work with SQLAlchemy trunk (future 0.4.2). |
|---|
| 273 | - Fixed an incompatibility with zope.interfaces. |
|---|
| 274 | - Tweaked the initialization sequence again (in fact revert an older change) |
|---|
| 275 | which prevented to reuse class properties of one class in other (subsequent) |
|---|
| 276 | classes. |
|---|
| 277 | - Fixed our tests to work with SA trunk (future 0.4.2) (unicode data + use of |
|---|
| 278 | deprecated attributes) |
|---|
| 279 | |
|---|
| 280 | 0.4.0 - 2007-10-29 |
|---|
| 281 | |
|---|
| 282 | Please see http://elixir.ematia.de/trac/wiki/Migrate03to04 for detailed |
|---|
| 283 | upgrade notes. |
|---|
| 284 | |
|---|
| 285 | New features: |
|---|
| 286 | - Implemented a new syntax to declare fields and relationships, much closer to |
|---|
| 287 | what is found in other Python ORM's. The with_fields syntax is now |
|---|
| 288 | deprecated in favor of a that new syntax. The old statement based (has_field |
|---|
| 289 | et al.) syntax is still available though (and will remain so for quite some |
|---|
| 290 | time). This was done with help from a patch by Adam Gomaa. |
|---|
| 291 | - Implemented polymorphic single-table inheritance as well as polymorphic and |
|---|
| 292 | non-polymorphic multi-table (aka joined table) inheritance. |
|---|
| 293 | - Added ext sub-package for additional Elixir statements. |
|---|
| 294 | - Added associable extension for generating polymorphic associations with |
|---|
| 295 | Elixir statements. |
|---|
| 296 | - Added versioning extension to keep track to all changes to your entities by |
|---|
| 297 | storing them in a secondary table. |
|---|
| 298 | - Added encryption extenstion to encrypt/decrypt some fields data on the fly |
|---|
| 299 | when writing to/reading from the database. |
|---|
| 300 | - Added support for synonym properties. |
|---|
| 301 | - Added shortcut syntax to define column_properties. |
|---|
| 302 | - Added a .query attribute on all entities. The old .query() syntax is still |
|---|
| 303 | available. |
|---|
| 304 | - Added support to add any SQLAlchemy property on your mapper, through the |
|---|
| 305 | GenericProperty class (as well as the has_property statement). These can |
|---|
| 306 | work even if they rely on the entity columns (an thus need them to be |
|---|
| 307 | defined before the property can be declared). See tests/test_properties.py |
|---|
| 308 | for examples. |
|---|
| 309 | - Added support for "manual session management" (ie you can now define an |
|---|
| 310 | entity with "using_options(session=None)" and it won't use any |
|---|
| 311 | SessionContext extension, nor receive the "query" attribute. |
|---|
| 312 | - Made the statement system more powerfull. |
|---|
| 313 | |
|---|
| 314 | Changes: |
|---|
| 315 | - The setup time was changed. That is the table and mapper are not created as |
|---|
| 316 | soon as the class is defined, but rather when first used, or when explicitly |
|---|
| 317 | calling the setup function (recommended). This also allowed us to reorder |
|---|
| 318 | the setup process and allows, among others to use a ManyToOne-generated |
|---|
| 319 | column as a primary key, to use unique constraints on those columns, to |
|---|
| 320 | order by those columns and so on... |
|---|
| 321 | - Made Elixir work with both SQLAlchemy 0.4 and 0.3.10 (with help from a patch |
|---|
| 322 | by Ants Aasma). |
|---|
| 323 | - Moved away from assign_mapper, now all assign_mapper-provided methods are on |
|---|
| 324 | the Entity class. Now, if people don't like them, they have the option to |
|---|
| 325 | simply provide another base class. |
|---|
| 326 | - Default objectstore is now a ScopedSession when working on SQLAlchemy 0.4. |
|---|
| 327 | It means that it's not wrapped in an Objectstore object at all. This means, |
|---|
| 328 | that depending on the version of SA you are using, you'll get a slightly |
|---|
| 329 | different behavior. |
|---|
| 330 | - Relationships to other classes can now also be defined using the classes |
|---|
| 331 | themselves in addition to the class namees. Obviously, this doesn't work for |
|---|
| 332 | forward references. |
|---|
| 333 | - Classes defined inside a function can now have relationships to each other. |
|---|
| 334 | - Added default __init__ method on entities so that subclasses can override it |
|---|
| 335 | and still have the "set attribute by keyword" behavior by calling super() |
|---|
| 336 | - Added "through" and "via" keyword arguments on relationships and has_field |
|---|
| 337 | statement, to proxy values through relationships (uses association_proxy) |
|---|
| 338 | - Made EntityMeta public, so that people can actually define their own base |
|---|
| 339 | class. |
|---|
| 340 | - Changed the order of relationship kwargs processing so that computed kwargs |
|---|
| 341 | can be overridden by kwargs manually passed to the statement. This should |
|---|
| 342 | only be used if you know what you are doing. |
|---|
| 343 | - Added onupdate kwarg to BelongsTo relationships for consistency with the |
|---|
| 344 | ondelete kwarg |
|---|
| 345 | - Added ondelete and onupdate kwargs for use with has_and_belongs_to_many |
|---|
| 346 | to apply on delete clauses to foreign key constraints on the m2m table. |
|---|
| 347 | - Columns of the intermediary table of an has_and_belongs_to_many relationship |
|---|
| 348 | are now marked as primary keys. |
|---|
| 349 | - Reworked how entities look for primary keys on related entities. This |
|---|
| 350 | enables one "normal" entity (fully defined in Elixir) to refer to an entity |
|---|
| 351 | which is autoloaded. |
|---|
| 352 | - Added translation (from column name to column object) of the primary_key |
|---|
| 353 | mapper option so that it can actually be used. This allows to have entities |
|---|
| 354 | without any primary key defined at the table level. |
|---|
| 355 | - Added the possibility to give a custom name for ManyToOne constraints |
|---|
| 356 | (patch from and closes ticket #16) |
|---|
| 357 | - Dropped support for the old threadlocal SA extension (which doesn't even exist |
|---|
| 358 | anymore in SA 0.4) |
|---|
| 359 | |
|---|
| 360 | Bug fixes: |
|---|
| 361 | - Reworked/cleaned tests so that they don't leak stuff to other tests (both at |
|---|
| 362 | the method level and module level) anymore. Uses nosetest's module level |
|---|
| 363 | fixture. |
|---|
| 364 | - Fixed relationships to entities whose primary_key field has been defined |
|---|
| 365 | with a "key" argument (based on a patch by Paul Johnston). |
|---|
| 366 | - Fixed some buggy tests. |
|---|
| 367 | - Fixed relationships to tables using a schema (patch by Neil Blakey-Milner) |
|---|
| 368 | - Made inverse relationships use backrefs. This fixes the "bidirectional |
|---|
| 369 | coherency" problem some people had before doing a flush. (based on a patch |
|---|
| 370 | from Remi Jolin). |
|---|
| 371 | |
|---|
| 372 | 0.3.0 - 2007-03-27 |
|---|
| 373 | - Made the provided metadata not threadlocal. This could break things for you |
|---|
| 374 | in some rare case. Please see the (newly created) FAQ file for details about |
|---|
| 375 | this. |
|---|
| 376 | - Added support for autoloading/reflecting databases with |
|---|
| 377 | has_and_belongs_to_many relationships. The tablename argument is now |
|---|
| 378 | optional, but still recommended, otherwise you'll have to use the same exact |
|---|
| 379 | name for your intermediary table than the one generated. You also _have to_ |
|---|
| 380 | specify at least one of either local_side or remote_side argument. |
|---|
| 381 | - Added support for the "version_id_col" option on entities. This option adds |
|---|
| 382 | a column to the table which will be used to prevent concurrent modifications |
|---|
| 383 | on any row of the entity's table (i.e. it will raise an error if it happens). |
|---|
| 384 | - Made the colname argument optional for belongs_to relationships in |
|---|
| 385 | autoloaded entities. It is only required to specify it if you have several |
|---|
| 386 | belongs_to relationships between two entities/tables. |
|---|
| 387 | - Applied patch from "Wavy" so that columns of a table are in the same order |
|---|
| 388 | as they were declared (this only works for the has_field statement). |
|---|
| 389 | - Applied patch from Isaac Csandl to add an "ondelete" argument to |
|---|
| 390 | belongs_to relationships. The content of that argument is forwarded to the |
|---|
| 391 | foreign key constraint. |
|---|
| 392 | - Foreign key names generated by belongs_to relationships use column names |
|---|
| 393 | instead of relation names in case we have a relation with the same name |
|---|
| 394 | defined in several entities inheriting from the same entity using single- |
|---|
| 395 | table inheritance (and we set a custom column name in one of them to avoid |
|---|
| 396 | a column-name conflict). |
|---|
| 397 | - Using invalid options on entities will now raise an exception |
|---|
| 398 | - Added __version__ |
|---|
| 399 | - Use an explicit metaclass for entities, so that people can define their own |
|---|
| 400 | base class. |
|---|
| 401 | - Changed the approach to reflecting/autoloading belongs_to relationships. |
|---|
| 402 | This shouldn't change anything to how it's used but allowed me to factor |
|---|
| 403 | some code with has_and_belongs_to_many relationships. |
|---|
| 404 | - The tablename option can now be given a callable so that people can provide |
|---|
| 405 | their own function to get the table name for an entity. The tablename option |
|---|
| 406 | can now also be set globally (using the options_defaults dictionary). Of |
|---|
| 407 | course, this only makes sense for the callable usecase. |
|---|
| 408 | |
|---|
| 409 | - Fixed bug preventing having entities without any statement. |
|---|
| 410 | - Fixed documentation for belongs_to relationships (the arguemnt is "required", |
|---|
| 411 | not "nullable"). |
|---|
| 412 | - Fixed typo which broke the use_alter argument on belongs_to relationships. |
|---|
| 413 | - Fixed inheritance unit test to pass SQLAlchemy type check on relations |
|---|
| 414 | (introduced in SA 0.3.6) |
|---|
| 415 | - Fixed wrong field length in autoload test (it was not noticeable with sqlite). |
|---|
| 416 | - Actually make the code python 2.3 compatible (Robin's patch was based on |
|---|
| 417 | 0.1.0 while I had introduced more decorators in the trunk in the mean time). |
|---|
| 418 | |
|---|
| 419 | - Made some PEP8 tweaks in many places. Used the pep8 script provided with |
|---|
| 420 | Cheesecake. |
|---|
| 421 | - Some cleanup/useless code removal |
|---|
| 422 | |
|---|
| 423 | 0.2.0 - 2007-02-28 |
|---|
| 424 | - Applied patch from Robin Munn to make the code python 2.3 compatible |
|---|
| 425 | - Per a suggestion on the mailing list, look at the calling stack frame to |
|---|
| 426 | ensure that we apply statements to the proper class. We now attach the |
|---|
| 427 | statement list to the class itself, rather than attaching it to a global |
|---|
| 428 | list that is neither threadsafe, nor safe when doing nested class |
|---|
| 429 | definition. Also added a test to validate that this works. |
|---|
| 430 | - implemented singletable non-polymorphic inheritance |
|---|
| 431 | - added support to pass non-keyword arguments to tables. You just pass |
|---|
| 432 | them to the using_table_options statement and they will be forwarded to the |
|---|
| 433 | table along with the keyword arguments. This can be used to set table |
|---|
| 434 | constraints. |
|---|
| 435 | - added support for deferred columns (use the "deferred" keyword argument on |
|---|
| 436 | fields) |
|---|
| 437 | - added a "required" keyword argument on fields and BelongsTo |
|---|
| 438 | relationships. This is the opposite of the "nullable" SA argument. |
|---|
| 439 | - added a "column_kwargs" keyword argument to BelongsTo relationships |
|---|
| 440 | to forward any keyword argument directly to the SA Column. |
|---|
| 441 | - added support for the use_alter and constraint_kwargs kwargs on BelongsTo |
|---|
| 442 | relationships (forwarded to SA ForeignKeyConstraint). |
|---|
| 443 | -> removed the systematic use_alter on BelongsTo relations since it |
|---|
| 444 | can now be specified only when needed. |
|---|
| 445 | -> removed it from HasAndBelongsToMany relations, since I think a |
|---|
| 446 | circular foreign key dependency can't happen with those relations. |
|---|
| 447 | - fixed foreign key names on MySQL (and possibly other) databases by |
|---|
| 448 | making sure the generated name is unique for the whole database, and not |
|---|
| 449 | only for the table on which it applies. |
|---|
| 450 | - corrected some docstrings |
|---|
| 451 | |
|---|
| 452 | 0.1.0 - 2007-02-12 |
|---|
| 453 | initial release |
|---|