some more docstring patches for [ticket:214]

This commit is contained in:
Mike Bayer
2007-03-28 00:23:39 +00:00
parent 0491452799
commit cebb673af1
3 changed files with 81 additions and 45 deletions
+57 -31
View File
@@ -271,74 +271,100 @@ class Session(object):
if e is None:
raise exceptions.InvalidRequestError("Could not locate any Engine bound to mapper '%s'" % str(mapper))
return e
def query(self, mapper_or_class, entity_name=None, **kwargs):
"""return a new Query object corresponding to this Session and the mapper, or the classes' primary mapper."""
"""Return a new Query object corresponding to this Session and
the mapper, or the classes' primary mapper.
"""
if isinstance(mapper_or_class, type):
return query.Query(_class_mapper(mapper_or_class, entity_name=entity_name), self, **kwargs)
else:
return query.Query(mapper_or_class, self, **kwargs)
def _sql(self):
class SQLProxy(object):
def __getattr__(self, key):
def call(*args, **kwargs):
kwargs[engine] = self.engine
return getattr(sql, key)(*args, **kwargs)
sql = property(_sql)
def flush(self, objects=None):
"""flush all the object modifications present in this session to the database.
'objects' is a list or tuple of objects specifically to be flushed; if None, all
new and modified objects are flushed."""
"""Flush all the object modifications present in this session
to the database.
`objects` is a list or tuple of objects specifically to be
flushed; if None, all new and modified objects are flushed.
"""
self.uow.flush(self, objects)
def get(self, class_, ident, **kwargs):
"""return an instance of the object based on the given identifier, or None if not found.
The ident argument is a scalar or tuple of primary key column values in the order of the
table def's primary key columns.
the entity_name keyword argument may also be specified which further qualifies the underlying
Mapper used to perform the query."""
"""Return an instance of the object based on the given
identifier, or None if not found.
The `ident` argument is a scalar or tuple of primary key
column values in the order of the table def's primary key
columns.
The `entity_name` keyword argument may also be specified which
further qualifies the underlying Mapper used to perform the
query.
"""
entity_name = kwargs.get('entity_name', None)
return self.query(class_, entity_name=entity_name).get(ident)
def load(self, class_, ident, **kwargs):
"""return an instance of the object based on the given identifier.
If not found, raises an exception. The method will *remove all pending changes* to the object
already existing in the Session. The ident argument is a scalar or tuple of
primary key columns in the order of the table def's primary key columns.
the entity_name keyword argument may also be specified which further qualifies the underlying
Mapper used to perform the query."""
"""Return an instance of the object based on the given
identifier.
If not found, raises an exception. The method will **remove
all pending changes** to the object already existing in the
Session. The `ident` argument is a scalar or tuple of primary
key columns in the order of the table def's primary key
columns.
The `entity_name` keyword argument may also be specified which
further qualifies the underlying Mapper used to perform the
query.
"""
entity_name = kwargs.get('entity_name', None)
return self.query(class_, entity_name=entity_name).load(ident)
def refresh(self, obj):
"""reload the attributes for the given object from the database, clear any changes made."""
"""Reload the attributes for the given object from the
database, clear any changes made.
"""
self._validate_persistent(obj)
if self.query(obj.__class__)._get(obj._instance_key, reload=True) is None:
raise exceptions.InvalidRequestError("Could not refresh instance '%s'" % repr(obj))
def expire(self, obj):
"""mark the given object as expired.
this will add an instrumentation to all mapped attributes on the instance such that when
an attribute is next accessed, the session will reload all attributes on the instance
from the database.
"""Mark the given object as expired.
This will add an instrumentation to all mapped attributes on
the instance such that when an attribute is next accessed, the
session will reload all attributes on the instance from the
database.
"""
for c in [obj] + list(_object_mapper(obj).cascade_iterator('refresh-expire', obj)):
self._expire_impl(c)
def _expire_impl(self, obj):
self._validate_persistent(obj)
def exp():
if self.query(obj.__class__)._get(obj._instance_key, reload=True) is None:
raise exceptions.InvalidRequestError("Could not refresh instance '%s'" % repr(obj))
attribute_manager.trigger_history(obj, exp)
def is_expired(self, obj, unexpire=False):
"""Return True if the given object has been marked as expired."""
+9 -5
View File
@@ -19,20 +19,24 @@ class CascadeOptions(object):
self.merge = "merge" in values or "all" in values
self.expunge = "expunge" in values or "all" in values
self.refresh_expire = "refresh-expire" in values or "all" in values
for x in values:
if x not in all_cascades:
raise exceptions.ArgumentError("Invalid cascade option '%s'" % x)
def __contains__(self, item):
return getattr(self, item.replace("-", "_"), False)
def __repr__(self):
return "CascadeOptions(arg=%s)" % repr(",".join([x for x in ['delete', 'save_update', 'merge', 'expunge', 'delete_orphan', 'refresh-expire'] if getattr(self, x, False) is True]))
def polymorphic_union(table_map, typecolname, aliasname='p_union'):
"""create a UNION statement used by a polymorphic mapper.
See the SQLAlchemy advanced mapping docs for an example of how this is used."""
"""Create a ``UNION`` statement used by a polymorphic mapper.
See the SQLAlchemy advanced mapping docs for an example of how
this is used.
"""
colnames = util.Set()
colnamemaps = {}
types = {}
+15 -9
View File
@@ -421,6 +421,7 @@ class _FunctionGateway(object):
if name[-1] == '_':
name = name[0:-1]
return getattr(_FunctionGenerator(), name)
func = _FunctionGateway()
def _compound_clause(keyword, *clauses):
@@ -435,7 +436,6 @@ def _is_literal(element):
def is_column(col):
return isinstance(col, ColumnElement)
class AbstractDialect(object):
"""Represent the behavior of a particular database.
@@ -678,7 +678,6 @@ class Compiled(ClauseVisitor):
return self.execute(*multiparams, **params).scalar()
class ClauseElement(object):
"""Base class for elements of a programmatically constructed SQL
expression.
@@ -769,7 +768,9 @@ class ClauseElement(object):
else:
return None
engine = property(lambda s: s._find_engine(), doc="Attempts to locate a Engine within this ClauseElement structure, or returns None if none found.")
engine = property(lambda s: s._find_engine(),
doc="""Attempts to locate a Engine within this ClauseElement
structure, or returns None if none found.""")
def execute(self, *multiparams, **params):
"""Compile and execute this ``ClauseElement``."""
@@ -1663,9 +1664,10 @@ class _Exists(_BooleanExpression):
kwargs['correlate'] = True
s = select(*args, **kwargs)
_BooleanExpression.__init__(self, _TextClause("EXISTS"), s, None)
def _hide_froms(self):
return self._get_from_objects()
class Join(FromClause):
def __init__(self, left, right, onclause=None, isouter = False):
self.left = left._selectable()
@@ -2156,7 +2158,11 @@ class Select(_SelectBaseMixin, FromClause):
well as the ability to execute itself and return a result set.
"""
def __init__(self, columns=None, whereclause = None, from_obj = [], order_by = None, group_by=None, having=None, use_labels = False, distinct=False, for_update=False, engine=None, limit=None, offset=None, scalar=False, correlate=True):
def __init__(self, columns=None, whereclause=None, from_obj=[],
order_by=None, group_by=None, having=None,
use_labels=False, distinct=False, for_update=False,
engine=None, limit=None, offset=None, scalar=False,
correlate=True):
_SelectBaseMixin.__init__(self)
self.__froms = util.OrderedSet()
self.__hide_froms = util.Set([self])
@@ -2192,7 +2198,6 @@ class Select(_SelectBaseMixin, FromClause):
self.__correlator = Select._CorrelatedVisitor(self, False)
self.__wherecorrelator = Select._CorrelatedVisitor(self, True)
if columns is not None:
for c in columns:
self.append_column(c)
@@ -2207,7 +2212,6 @@ class Select(_SelectBaseMixin, FromClause):
for f in from_obj:
self.append_from(f)
# whereclauses must be appended after the columns/FROM, since it affects
# the correlation of subqueries. see test/sql/select.py SelectTest.testwheresubquery
if whereclause is not None:
@@ -2232,9 +2236,11 @@ class Select(_SelectBaseMixin, FromClause):
for s in cs.selects:
s.parens = False
def visit_column(self, c):pass
def visit_column(self, c):
pass
def visit_table(self, c):pass
def visit_table(self, c):
pass
def visit_select(self, select):
if select is self.select: