MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / deprecated_params

Function deprecated_params

lib/sqlalchemy/util/deprecations.py:199–297  ·  view source on GitHub ↗

Decorates a function to warn on use of certain parameters. e.g. :: @deprecated_params( weak_identity_map=( "2.0", "the :paramref:`.Session.weak_identity_map parameter " "is deprecated.", ) ) def som

(**specs: Tuple[str, str])

Source from the content-addressed store, hash-verified

197
198
199def deprecated_params(**specs: Tuple[str, str]) -> Callable[[_F], _F]:
200 """Decorates a function to warn on use of certain parameters.
201
202 e.g. ::
203
204 @deprecated_params(
205 weak_identity_map=(
206 "2.0",
207 "the :paramref:`.Session.weak_identity_map parameter "
208 "is deprecated.",
209 )
210 )
211 def some_function(**kwargs): ...
212
213 """
214
215 messages: Dict[str, str] = {}
216 versions: Dict[str, str] = {}
217 version_warnings: Dict[str, Type[exc.SADeprecationWarning]] = {}
218
219 for param, (version, message) in specs.items():
220 versions[param] = version
221 messages[param] = _sanitize_restructured_text(message)
222 version_warnings[param] = exc.SADeprecationWarning
223
224 def decorate(fn: _F) -> _F:
225 spec = compat.inspect_getfullargspec(fn)
226
227 check_defaults: Union[Set[str], Tuple[()]]
228 if spec.defaults is not None:
229 defaults = dict(
230 zip(
231 spec.args[(len(spec.args) - len(spec.defaults)) :],
232 spec.defaults,
233 )
234 )
235 check_defaults = set(defaults).intersection(messages)
236 check_kw = set(messages).difference(defaults)
237 elif spec.kwonlydefaults is not None:
238 defaults = spec.kwonlydefaults
239 check_defaults = set(defaults).intersection(messages)
240 check_kw = set(messages).difference(defaults)
241 else:
242 check_defaults = ()
243 check_kw = set(messages)
244
245 check_any_kw = spec.varkw
246
247 # latest mypy has opinions here, not sure if they implemented
248 # Concatenate or something
249 @decorator
250 def warned(fn: _F, *args: Any, **kwargs: Any) -> _F:
251 for m in check_defaults:
252 if (defaults[m] is None and kwargs[m] is not None) or (
253 defaults[m] is not None and kwargs[m] != defaults[m]
254 ):
255 _warn_with_version(
256 messages[m],

Callers

nothing calls this directly

Calls 2

itemsMethod · 0.45

Tested by

no test coverage detected