mirror of
https://github.com/p2p-ld/numpydantic.git
synced 2024-11-10 00:34:29 +00:00
apply monkeypatches in vendored nptyping, remove monkeypatch module and call
This commit is contained in:
parent
4c911d2516
commit
4604e7e7bb
2 changed files with 0 additions and 70 deletions
|
@ -1,10 +1,6 @@
|
|||
# ruff: noqa: E402
|
||||
# ruff: noqa: F401
|
||||
# ruff: noqa: I001
|
||||
# ruff: noqa: D104
|
||||
from numpydantic.monkeypatch import apply_patches
|
||||
|
||||
apply_patches()
|
||||
|
||||
from numpydantic.ndarray import NDArray
|
||||
from numpydantic.meta import update_ndarray_stub
|
||||
|
|
|
@ -1,66 +0,0 @@
|
|||
"""
|
||||
Functions to monkeypatch dependent packages - most notably nptyping
|
||||
"""
|
||||
|
||||
# ruff: noqa: ANN001
|
||||
|
||||
|
||||
def patch_npytyping_perf() -> None:
|
||||
"""
|
||||
npytyping makes an expensive call to inspect.stack()
|
||||
that makes imports of pydantic models take ~200x longer than
|
||||
they should:
|
||||
|
||||
References:
|
||||
- https://github.com/ramonhagenaars/nptyping/issues/110
|
||||
"""
|
||||
import inspect
|
||||
from types import FrameType
|
||||
|
||||
from nptyping import base_meta_classes, ndarray, recarray
|
||||
from nptyping.pandas_ import dataframe
|
||||
|
||||
# make a new __module__ methods for the affected classes
|
||||
|
||||
def new_module_ndarray(cls) -> str: # pragma: no cover
|
||||
return cls._get_module(inspect.currentframe(), "nptyping.ndarray")
|
||||
|
||||
def new_module_recarray(cls) -> str: # pragma: no cover
|
||||
return cls._get_module(inspect.currentframe(), "nptyping.recarray")
|
||||
|
||||
def new_module_dataframe(cls) -> str: # pragma: no cover
|
||||
return cls._get_module(inspect.currentframe(), "nptyping.pandas_.dataframe")
|
||||
|
||||
# and a new _get_module method for the parent class
|
||||
def new_get_module(cls, stack: FrameType, module: str) -> str: # pragma: no cover
|
||||
return (
|
||||
"typing"
|
||||
if inspect.getframeinfo(stack.f_back).function == "formatannotation"
|
||||
else module
|
||||
)
|
||||
|
||||
# now apply the patches
|
||||
ndarray.NDArrayMeta.__module__ = property(new_module_ndarray)
|
||||
recarray.RecArrayMeta.__module__ = property(new_module_recarray)
|
||||
dataframe.DataFrameMeta.__module__ = property(new_module_dataframe)
|
||||
base_meta_classes.SubscriptableMeta._get_module = new_get_module
|
||||
|
||||
|
||||
def patch_nptyping_warnings() -> None:
|
||||
"""
|
||||
nptyping shits out a bunch of numpy deprecation warnings from using
|
||||
olde aliases
|
||||
|
||||
References:
|
||||
- https://github.com/ramonhagenaars/nptyping/issues/113
|
||||
- https://github.com/ramonhagenaars/nptyping/issues/102
|
||||
"""
|
||||
import warnings
|
||||
|
||||
warnings.filterwarnings("ignore", category=DeprecationWarning, module="nptyping.*")
|
||||
|
||||
|
||||
def apply_patches() -> None:
|
||||
"""Apply all monkeypatches!"""
|
||||
patch_npytyping_perf()
|
||||
patch_nptyping_warnings()
|
Loading…
Reference in a new issue