[Sqlalchemy-commits] [5330] sqlalchemy/trunk: deprecated CompositeProperty 'comparator' which is no
Brought to you by:
zzzeek
From: <co...@sq...> - 2008-11-24 01:44:12
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!-- #msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; } #msg dt { float: left; width: 6em; font-weight: bold; } #msg dt:after { content:':';} #msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; } #msg dl a { font-weight: bold} #msg dl a:link { color:#fc3; } #msg dl a:active { color:#ff0; } #msg dl a:visited { color:#cc6; } h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; } #msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; } #msg ul, pre { overflow: auto; } #header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; } #patch { width: 100%; } #patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;} #patch .propset h4, #patch .binary h4 {margin:0;} #patch pre {padding:0;line-height:1.2em;margin:0;} #patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;} #patch .propset .diff, #patch .binary .diff {padding:10px 0;} #patch span {display:block;padding:0 10px;} #patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;} #patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;} #patch .lines, .info {color:#888;background:#fff;} --></style> <title>[5330] sqlalchemy/trunk: deprecated CompositeProperty 'comparator' which is now</title> </head> <body> <div id="msg"> <dl> <dt>Revision</dt> <dd>5330</dd> <dt>Author</dt> <dd>zzzeek</dd> <dt>Date</dt> <dd>2008-11-23 20:44:08 -0500 (Sun, 23 Nov 2008)</dd> </dl> <h3>Log Message</h3> <pre>deprecated CompositeProperty 'comparator' which is now named 'comparator_factory'.</pre> <h3>Modified Paths</h3> <ul> <li><a href="#sqlalchemytrunkdocbuildcontentmapperstxt">sqlalchemy/trunk/doc/build/content/mappers.txt</a></li> <li><a href="#sqlalchemytrunklibsqlalchemyorm__init__py">sqlalchemy/trunk/lib/sqlalchemy/orm/__init__.py</a></li> <li><a href="#sqlalchemytrunklibsqlalchemyormpropertiespy">sqlalchemy/trunk/lib/sqlalchemy/orm/properties.py</a></li> </ul> </div> <div id="patch"> <h3>Diff</h3> <a id="sqlalchemytrunkdocbuildcontentmapperstxt"></a> <div class="modfile"><h4>Modified: sqlalchemy/trunk/doc/build/content/mappers.txt (5329 => 5330)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/trunk/doc/build/content/mappers.txt 2008-11-24 01:21:08 UTC (rev 5329) +++ sqlalchemy/trunk/doc/build/content/mappers.txt 2008-11-24 01:44:08 UTC (rev 5330) </span><span class="lines">@@ -289,23 +289,23 @@ </span><span class="cx"> </span><span class="cx"> v2 = session.query(Vertex).filter(Vertex.start == Point(3, 4)) </span><span class="cx"> </span><del>-The "equals" comparison operation by default produces an AND of all corresponding columns equated to one another. If you'd like to override this, or define the behavior of other SQL operators for your new type, the `composite()` function accepts an extension object of type `sqlalchemy.orm.PropComparator`: </del><ins>+The "equals" comparison operation by default produces an AND of all corresponding columns equated to one another. This can be changed using the `comparator_factory`, described in [advdatamapping_mapper_attributes_comparators](rel:advdatamapping_mapper_attributes_comparators) </ins><span class="cx"> </span><span class="cx"> {python} </span><del>- from sqlalchemy.orm import PropComparator </del><ins>+ from sqlalchemy.orm.properties import CompositeProperty </ins><span class="cx"> from sqlalchemy import sql </span><span class="cx"> </span><del>- class PointComparator(PropComparator): </del><ins>+ class PointComparator(CompositeProperty.Comparator): </ins><span class="cx"> def __gt__(self, other): </span><span class="cx"> """define the 'greater than' operation""" </span><span class="cx"> </span><span class="cx"> return sql.and_(*[a>b for a, b in </span><del>- zip(self.prop.columns, </del><ins>+ zip(self.__clause_element__().clauses, </ins><span class="cx"> other.__composite_values__())]) </span><span class="cx"> </span><span class="cx"> maper(Vertex, vertices, properties={ </span><del>- 'start': composite(Point, vertices.c.x1, vertices.c.y1, comparator=PointComparator), - 'end': composite(Point, vertices.c.x2, vertices.c.y2, comparator=PointComparator) </del><ins>+ 'start': composite(Point, vertices.c.x1, vertices.c.y1, comparator_factory=PointComparator), + 'end': composite(Point, vertices.c.x2, vertices.c.y2, comparator_factory=PointComparator) </ins><span class="cx"> }) </span><span class="cx"> </span><span class="cx"> #### Controlling Ordering {@name=orderby} </span></span></pre></div> <a id="sqlalchemytrunklibsqlalchemyorm__init__py"></a> <div class="modfile"><h4>Modified: sqlalchemy/trunk/lib/sqlalchemy/orm/__init__.py (5329 => 5330)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/trunk/lib/sqlalchemy/orm/__init__.py 2008-11-24 01:21:08 UTC (rev 5329) +++ sqlalchemy/trunk/lib/sqlalchemy/orm/__init__.py 2008-11-24 01:44:08 UTC (rev 5330) </span><span class="lines">@@ -211,7 +211,7 @@ </span><span class="cx"> used in place of a plain list for storing elements. </span><span class="cx"> </span><span class="cx"> comparator_factory </span><del>- a class which extends sqlalchemy.orm.properties.RelationProperty.Comparator </del><ins>+ a class which extends ``sqlalchemy.orm.properties.RelationProperty.Comparator`` </ins><span class="cx"> which provides custom SQL clause generation for comparison operations. </span><span class="cx"> </span><span class="cx"> extension </span><span class="lines">@@ -404,7 +404,7 @@ </span><span class="cx"> list of Column objects to be mapped. </span><span class="cx"> </span><span class="cx"> comparator_factory </span><del>- a class which extends sqlalchemy.orm.properties.RelationProperty.Comparator </del><ins>+ a class which extends ``sqlalchemy.orm.properties.ColumnProperty.Comparator`` </ins><span class="cx"> which provides custom SQL clause generation for comparison operations. </span><span class="cx"> </span><span class="cx"> group </span><span class="lines">@@ -485,9 +485,9 @@ </span><span class="cx"> load immediately, and is instead loaded when the attribute is first </span><span class="cx"> accessed on an instance. See also [sqlalchemy.orm#deferred()]. </span><span class="cx"> </span><del>- comparator - An optional instance of [sqlalchemy.orm#PropComparator] which provides - SQL expression generation functions for this composite type. </del><ins>+ comparator_factory + a class which extends ``sqlalchemy.orm.properties.CompositeProperty.Comparator`` + which provides custom SQL clause generation for comparison operations. </ins><span class="cx"> </span><span class="cx"> extension </span><span class="cx"> an [sqlalchemy.orm.interfaces#AttributeExtension] instance, </span></span></pre></div> <a id="sqlalchemytrunklibsqlalchemyormpropertiespy"></a> <div class="modfile"><h4>Modified: sqlalchemy/trunk/lib/sqlalchemy/orm/properties.py (5329 => 5330)</h4> <pre class="diff"><span> <span class="info">--- sqlalchemy/trunk/lib/sqlalchemy/orm/properties.py 2008-11-24 01:21:08 UTC (rev 5329) +++ sqlalchemy/trunk/lib/sqlalchemy/orm/properties.py 2008-11-24 01:44:08 UTC (rev 5330) </span><span class="lines">@@ -41,7 +41,7 @@ </span><span class="cx"> self.columns = [expression._labeled(c) for c in columns] </span><span class="cx"> self.group = kwargs.pop('group', None) </span><span class="cx"> self.deferred = kwargs.pop('deferred', False) </span><del>- self.comparator_factory = kwargs.pop('comparator_factory', ColumnProperty.ColumnComparator) </del><ins>+ self.comparator_factory = kwargs.pop('comparator_factory', self.__class__.Comparator) </ins><span class="cx"> self.extension = kwargs.pop('extension', None) </span><span class="cx"> util.set_creation_order(self) </span><span class="cx"> if self.deferred: </span><span class="lines">@@ -108,10 +108,12 @@ </span><span class="cx"> """subclasses ColumnProperty to provide composite type support.""" </span><span class="cx"> </span><span class="cx"> def __init__(self, class_, *columns, **kwargs): </span><ins>+ if 'comparator' in kwargs: + util.warn_deprecated("The 'comparator' argument to CompositeProperty is deprecated. Use comparator_factory.") + kwargs['comparator_factory'] = kwargs['comparator'] </ins><span class="cx"> super(CompositeProperty, self).__init__(*columns, **kwargs) </span><span class="cx"> self._col_position_map = dict((c, i) for i, c in enumerate(columns)) </span><span class="cx"> self.composite_class = class_ </span><del>- self.comparator_factory = kwargs.pop('comparator', CompositeProperty.Comparator) </del><span class="cx"> self.strategy_class = strategies.CompositeColumnLoader </span><span class="cx"> </span><span class="cx"> def do_init(self): </span></span></pre> </div> </div> </body> </html> |