Thread: [Sqlalchemy-tickets] [sqlalchemy] #1165: Allow types to be wrapped in functools.partial
Brought to you by:
zzzeek
From: sqlalchemy <mi...@zz...> - 2008-09-15 07:45:37
|
#1165: Allow types to be wrapped in functools.partial -------------------------+-------------------------------------------------- Reporter: ged | Owner: zzzeek Type: enhancement | Status: new Priority: medium | Milestone: Component: schema | Severity: no triage selected yet Keywords: | Status_field: awaiting triage -------------------------+-------------------------------------------------- Currently (r5104), the following code: {{{ #!python from functools import partial from sqlalchemy import * metadata = MetaData('sqlite:///') Unicode = partial(Unicode, assert_unicode=None) thing_table = Table('thing', metadata, Column('name', Unicode, primary_key=True) ) }}} produce this traceback: {{{ Traceback (most recent call last): File "test_partial.py", line 9, in <module> Column('name', Unicode, primary_key=True) File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/schema.py", line 113, in __call__ return type.__call__(self, name, metadata, *args, **kwargs) File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/schema.py", line 246, in __init__ self.__post_init(*args, **kwargs) File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/schema.py", line 292, in __post_init self._init_items(*args) File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/schema.py", line 54, in _init_items item._set_parent(self) File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/schema.py", line 691, in _set_parent self._init_items(*toinit) File "/home/ged/devel/sqlalchemy/trunk/lib/sqlalchemy/schema.py", line 54, in _init_items item._set_parent(self) AttributeError: 'functools.partial' object has no attribute '_set_parent' }}} This issue was initially reported at: http://elixir.ematia.de/trac/ticket/72 -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1165> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |
From: sqlalchemy <mi...@zz...> - 2008-09-15 13:57:49
|
#1165: Allow types to be wrapped in functools.partial -----------------------------------------+---------------------------------- Reporter: ged | Owner: zzzeek Type: enhancement | Status: new Priority: medium | Milestone: Component: schema | Severity: no triage selected yet Resolution: | Keywords: Status_field: needs questions answered | -----------------------------------------+---------------------------------- Changes (by zzzeek): * status_field: awaiting triage => needs questions answered Comment: what happens if you just say: {{{ Column('name', Unicode()) }}} ? assuming a Unicode() instance is returned that should be fine. -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1165#comment:1> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |
From: sqlalchemy <mi...@zz...> - 2008-09-18 05:57:28
|
#1165: Allow types to be wrapped in functools.partial -----------------------------------------+---------------------------------- Reporter: ged | Owner: zzzeek Type: enhancement | Status: new Priority: medium | Milestone: Component: schema | Severity: no triage selected yet Resolution: | Keywords: Status_field: needs questions answered | -----------------------------------------+---------------------------------- Comment (by guest): Yes, that works. So should this trivial patch. -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1165#comment:2> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |
From: sqlalchemy <mi...@zz...> - 2008-09-18 06:45:56
|
#1165: Allow types to be wrapped in functools.partial -----------------------------------------+---------------------------------- Reporter: ged | Owner: zzzeek Type: enhancement | Status: new Priority: medium | Milestone: Component: schema | Severity: no triage selected yet Resolution: | Keywords: Status_field: needs questions answered | -----------------------------------------+---------------------------------- Comment (by zzzeek): I was suggesting that you just call `Unicode()` in your own application code. That patch strikes me as extremely specific to an arbitrary use case. There's lots of ways to do partials in Python. -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1165#comment:3> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |
From: sqlalchemy <mi...@zz...> - 2008-09-19 02:11:45
|
#1165: Allow types to be wrapped in functools.partial -----------------------------------------+---------------------------------- Reporter: ged | Owner: zzzeek Type: enhancement | Status: new Priority: medium | Milestone: Component: schema | Severity: no triage selected yet Resolution: | Keywords: Status_field: needs questions answered | -----------------------------------------+---------------------------------- Comment (by guest): There are other ways to do partial application, but `partial` is the standard. The use case is whenever there are several columns that need the same parameters. However, I agree the solution isn't to add another special case. The above patch lets `to_instance` handle any callable by removing the current special treatment of types. -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1165#comment:4> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |
From: sqlalchemy <mi...@zz...> - 2008-10-01 14:15:43
|
#1165: Allow types to be wrapped in functools.partial ----------------------------+----------------------------------------------- Reporter: ged | Owner: zzzeek Type: enhancement | Status: new Priority: medium | Milestone: 0.5.0 Component: schema | Severity: no triage selected yet Resolution: | Keywords: Status_field: in queue | ----------------------------+----------------------------------------------- Changes (by ged): * cc: ge...@op... (added) -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1165#comment:6> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |
From: sqlalchemy <mi...@zz...> - 2008-10-04 02:05:02
|
#1165: Allow types to be wrapped in functools.partial ---------------------------------+------------------------------------------ Reporter: ged | Owner: zzzeek Type: enhancement | Status: closed Priority: medium | Milestone: 0.5.0 Component: schema | Severity: minor - half an hour Resolution: fixed | Keywords: Status_field: completed/closed | ---------------------------------+------------------------------------------ Changes (by empty): * status: new => closed * resolution: => fixed * severity: no triage selected yet => minor - half an hour * status_field: in queue => completed/closed Comment: Fixed in r5139 -- Ticket URL: <http://www.sqlalchemy.org/trac/ticket/1165#comment:7> sqlalchemy <http://www.sqlalchemy.org/> The Database Toolkit for Python |