1+ import inspect
12import logging
23
34from datetime import datetime , timezone
45from typing import TYPE_CHECKING
56
67
78try :
8- from sqlalchemy import (
9- Table ,
10- and_ ,
11- delete ,
12- func ,
13- or_ ,
14- select ,
15- )
9+ from sqlalchemy import Table , and_ , delete , func , or_ , select
1610 from sqlalchemy .ext .asyncio import (
1711 AsyncEngine ,
1812 AsyncSession ,
1913 async_sessionmaker ,
2014 )
21- from sqlalchemy .orm import (
22- class_mapper ,
23- )
15+ from sqlalchemy .orm import class_mapper
2416except ImportError as e :
2517 raise ImportError (
2618 'DatabaseTaskStore requires SQLAlchemy and a database driver. '
@@ -125,12 +117,11 @@ async def _ensure_initialized(self) -> None:
125117
126118 def _to_orm (self , task : Task , owner : str ) -> TaskModel :
127119 """Maps a Proto Task to a SQLAlchemy TaskModel instance."""
128- if self .core_to_model_conversion :
129- conversion = self . core_to_model_conversion
130- # bound method
131- if hasattr (conversion , '__func__' ):
120+ if conversion := self .core_to_model_conversion :
121+ # If it's a bound method of this instance, call the underlying function
122+ # to avoid passing 'self' twice.
123+ if inspect . ismethod (conversion ):
132124 return conversion .__func__ (task , owner )
133- # instance method
134125 return conversion (task , owner )
135126
136127 return self .task_model (
@@ -154,12 +145,11 @@ def _to_orm(self, task: Task, owner: str) -> TaskModel:
154145
155146 def _from_orm (self , task_model : TaskModel ) -> Task :
156147 """Maps a SQLAlchemy TaskModel to a Proto Task instance."""
157- if self .model_to_core_conversion :
158- conversion = self . model_to_core_conversion
159- # bound method
160- if hasattr (conversion , '__func__' ):
148+ if conversion := self .model_to_core_conversion :
149+ # If it's a bound method of this instance, call the underlying function
150+ # to avoid passing 'self' twice.
151+ if inspect . ismethod (conversion ):
161152 return conversion .__func__ (task_model )
162- # instance method
163153 return conversion (task_model )
164154
165155 if task_model .protocol_version == '1.0' :
0 commit comments