[docs]defcreate_async_sadlock(connection_or_session:TAsyncConnectionOrSession,key,contextual_timeout:Union[float,int,None]=None,**kwargs)->BaseAsyncSadLock:ifisinstance(connection_or_session,AsyncConnection):engine=connection_or_session.sync_engineelse:bind=connection_or_session.get_bind()ifisinstance(bind,Connection):engine=bind.engineelse:engine=bindengine_name=safe_name(engine.name)try:mod=import_module(f"..lock.{engine_name}",__name__)exceptImportErrorasexception:# pragma: no coverraiseNotImplementedError(f"{engine_name}: {exception}")clz:Type[BaseAsyncSadLock]=getattr(mod,f"{pascal_case(engine_name)}AsyncSadLock")returnclz(connection_or_session,key,contextual_timeout=contextual_timeout,**kwargs)