def __call__(cls, *args, **params): assembly = params.pop("__assembly__", None) if not assembly: assembly = Assembly.current() identity = params.pop("__identity__", None) token = params.pop("__token__", None) if not token: token = identity = cls.identity signature = get_constructor_args(cls) if args: for i, argument in enumerate(args): try: name = signature[i] if name not in params: params[name] = argument else: raise TypeError("duplicate arguments") except IndexError: raise TypeError("too many arguments") unit = cls.__new__(cls) unit.__assembly__ = assembly unit.__identity__ = identity unit.__token__ = token # log('debug', 'instantiating unit %s: token=%r, identity=%r', # cls.identity, token, identity) if cls.configuration: configuration = cls.configuration.get(unit) if params: for name, value in params.items(): configuration[name] = value if name not in signature: del params[name] for name in signature: if name in configuration: params[name] = configuration[name] for dependency in cls.dependencies.itervalues(): if not dependency.deferred: dependency.get(unit) unit.__init__(**params) return unit
def __call__(cls, *args, **params): assembly = params.pop('__assembly__', None) if not assembly: assembly = Assembly.current() identity = params.pop('__identity__', None) token = params.pop('__token__', None) if not token: token = identity = cls.identity signature = get_constructor_args(cls) if args: for i, argument in enumerate(args): try: name = signature[i] if name not in params: params[name] = argument else: raise TypeError('duplicate arguments') except IndexError: raise TypeError('too many arguments') unit = cls.__new__(cls) unit.__assembly__ = assembly unit.__identity__ = identity unit.__token__ = token #log('debug', 'instantiating unit %s: token=%r, identity=%r', # cls.identity, token, identity) if cls.configuration: configuration = cls.configuration.get(unit) if params: for name, value in params.items(): configuration[name] = value if name not in signature: del params[name] for name in signature: if name in configuration: params[name] = configuration[name] for dependency in cls.dependencies.itervalues(): if not dependency.deferred: dependency.get(unit) unit.__init__(**params) return unit
from threading import Lock from sqlalchemy import Column, MetaData, Table, event from sqlalchemy.ext.declarative import DeclarativeMeta, declarative_base from sqlalchemy.orm import mapper from sqlalchemy.orm.attributes import InstrumentedAttribute from sqlalchemy.orm.mapper import Mapper from sqlalchemy.orm.properties import ColumnProperty from sqlalchemy.orm.session import object_session from spire.schema.schema import Schema, SessionLocals from spire.util import get_constructor_args, pluralize __all__ = ("Model",) MAPPER_PARAMS = get_constructor_args(Mapper) class AttributeValidator(object): def __init__(self, column): self.column = column def __call__(self, instance, value, oldvalue, initiator): column = self.column if value is None: if column.nullable: return value else: raise ValueError(repr(self.column)) else: return column.type.validate(instance, column, value) or value
from threading import Lock from sqlalchemy import Column, MetaData, Table, event from sqlalchemy.ext.declarative import DeclarativeMeta, declarative_base from sqlalchemy.orm import mapper from sqlalchemy.orm.attributes import InstrumentedAttribute from sqlalchemy.orm.mapper import Mapper from sqlalchemy.orm.properties import ColumnProperty from sqlalchemy.orm.session import object_session from spire.schema.schema import Schema, SessionLocals from spire.util import get_constructor_args, pluralize __all__ = ('Model', ) MAPPER_PARAMS = get_constructor_args(Mapper) class AttributeValidator(object): def __init__(self, column): self.column = column def __call__(self, instance, value, oldvalue, initiator): column = self.column if value is None: if column.nullable: return value else: raise ValueError(repr(self.column)) else: return column.type.validate(instance, column, value) or value