lint and format nptyping

This commit is contained in:
sneakers-the-rat 2024-07-31 13:15:17 -07:00
parent cbe5d33fd9
commit dba550f41b
Signed by untrusted user who does not match committer: jonny
GPG key ID: 6DCB96EF1E4D232D
18 changed files with 43 additions and 32 deletions

View file

@ -0,0 +1,10 @@
"""
Vendored modules - see licenses in /licenses.
Currently consists just of nptyping, as it is no longer maintained
and pins a version of numpy<2, and we have to do an increasing
number of awkward monkeypatches for perf and customization reasons.
This vendored module will slowly be worked out of the code and
all its functionality replaced.
"""

View file

@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
from nptyping.assert_isinstance import assert_isinstance from nptyping.assert_isinstance import assert_isinstance
from nptyping.error import ( from nptyping.error import (
InvalidArgumentsError, InvalidArgumentsError,

View file

@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
from typing import ( from typing import (
Any, Any,
Optional, Optional,

View file

@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
from abc import ABCMeta, abstractmethod from abc import ABCMeta, abstractmethod
from inspect import FrameInfo from inspect import FrameInfo
from typing import ( from typing import (
@ -44,6 +45,7 @@ class InconstructableMeta(ABCMeta):
""" """
def __call__(cls, *_: Any, **__: Any) -> None: def __call__(cls, *_: Any, **__: Any) -> None:
"""Raise an error if constructed"""
raise NPTypingError( raise NPTypingError(
f"Cannot instantiate nptyping.{cls.__name__}. Did you mean to use [ ] ?" f"Cannot instantiate nptyping.{cls.__name__}. Did you mean to use [ ] ?"
) )
@ -76,6 +78,7 @@ class FinalMeta(ABCMeta):
cls._name_per_meta_cls[cls] = implementation cls._name_per_meta_cls[cls] = implementation
def __new__(cls, name: str, *args: Any, **kwargs: Any) -> type: def __new__(cls, name: str, *args: Any, **kwargs: Any) -> type:
"""Prevent subclasses, return from internal dict instead"""
if name == cls._name_per_meta_cls[cls]: if name == cls._name_per_meta_cls[cls]:
assert name, "cls_name not set" assert name, "cls_name not set"
return type.__new__(cls, name, *args, **kwargs) return type.__new__(cls, name, *args, **kwargs)
@ -105,8 +108,7 @@ class PrintableMeta(ABCMeta):
""" """
@abstractmethod @abstractmethod
def __str__(cls) -> str: def __str__(cls) -> str: ... # pragma: no cover
... # pragma: no cover
def __repr__(cls) -> str: def __repr__(cls) -> str:
return str(cls) return str(cls)
@ -122,8 +124,7 @@ class SubscriptableMeta(ABCMeta):
_parameterized: bool = False _parameterized: bool = False
@abstractmethod @abstractmethod
def _get_item(cls, item: Any) -> Tuple[Any, ...]: def _get_item(cls, item: Any) -> Tuple[Any, ...]: ... # pragma: no cover
... # pragma: no cover
def _get_module(cls, stack: List[FrameInfo], module: str) -> str: def _get_module(cls, stack: List[FrameInfo], module: str) -> str:
# The magic below makes Python's help function display a meaningful # The magic below makes Python's help function display a meaningful
@ -201,12 +202,10 @@ class ContainerMeta(
__args__: Tuple[str, ...] __args__: Tuple[str, ...]
@abstractmethod @abstractmethod
def _validate_expression(cls, item: str) -> None: def _validate_expression(cls, item: str) -> None: ... # pragma: no cover
... # pragma: no cover
@abstractmethod @abstractmethod
def _normalize_expression(cls, item: str) -> str: def _normalize_expression(cls, item: str) -> str: ... # pragma: no cover
... # pragma: no cover
def _get_item(cls, item: Any) -> Tuple[Any, ...]: def _get_item(cls, item: Any) -> Tuple[Any, ...]:
if not isinstance(item, str): if not isinstance(item, str):

View file

@ -21,12 +21,12 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
import inspect import inspect
from abc import ABC from abc import ABC
from typing import Any, Tuple from typing import Any, Tuple
import numpy as np import numpy as np
from nptyping.base_meta_classes import ( from nptyping.base_meta_classes import (
FinalMeta, FinalMeta,
ImmutableMeta, ImmutableMeta,

View file

@ -21,10 +21,11 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
from abc import ABC from abc import ABC
class NPTypingType(ABC): class NPTypingType(ABC): # noqa: B024
""" """
Baseclass for all nptyping types. Baseclass for all nptyping types.
""" """

View file

@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
__title__ = "nptyping" __title__ = "nptyping"
__version__ = "2.5.0" __version__ = "2.5.0"
__author__ = "Ramon Hagenaars" __author__ = "Ramon Hagenaars"

View file

@ -0,0 +1,3 @@
"""
Pandas dataframe types
"""

View file

@ -21,12 +21,12 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
import inspect import inspect
from abc import ABC from abc import ABC
from typing import Any, Tuple from typing import Any, Tuple
import numpy as np import numpy as np
from nptyping import InvalidArgumentsError from nptyping import InvalidArgumentsError
from nptyping.base_meta_classes import ( from nptyping.base_meta_classes import (
FinalMeta, FinalMeta,
@ -91,7 +91,7 @@ class DataFrameMeta(
if item is Any: if item is Any:
return (Any,) return (Any,)
cls._check_item(item) cls._check_item(item)
return (Structure[getattr(item, "__args__")[0]],) return (Structure[item.__args__[0]],)
def __str__(cls) -> str: def __str__(cls) -> str:
structure = cls.__args__[0] structure = cls.__args__[0]

View file

@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
from nptyping.typing_ import Object from nptyping.typing_ import Object
from nptyping.typing_ import dtype_per_name as dtype_per_name_default from nptyping.typing_ import dtype_per_name as dtype_per_name_default

View file

@ -21,11 +21,11 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
import inspect import inspect
from typing import Any, Tuple from typing import Any, Tuple
import numpy as np import numpy as np
from nptyping.error import InvalidArgumentsError from nptyping.error import InvalidArgumentsError
from nptyping.ndarray import NDArray, NDArrayMeta from nptyping.ndarray import NDArray, NDArrayMeta
from nptyping.structure import Structure from nptyping.structure import Structure

View file

@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
from abc import ABC from abc import ABC
from typing import Any, Dict from typing import Any, Dict

View file

@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
try: try:
from typing import Literal # type: ignore[attr-defined] from typing import Literal # type: ignore[attr-defined]
except ImportError: except ImportError:

View file

@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
import re import re
import string import string
from functools import lru_cache from functools import lru_cache
@ -39,7 +40,7 @@ if TYPE_CHECKING:
from nptyping.shape import Shape # pragma: no cover from nptyping.shape import Shape # pragma: no cover
@lru_cache() @lru_cache
def check_shape(shape: ShapeTuple, target: "Shape") -> bool: def check_shape(shape: ShapeTuple, target: "Shape") -> bool:
""" """
Check whether the given shape corresponds to the given shape_expression. Check whether the given shape corresponds to the given shape_expression.

View file

@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
from abc import ABC from abc import ABC
from typing import ( from typing import (
Any, Any,

View file

@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
try: try:
from typing import Literal # type: ignore[attr-defined] from typing import Literal # type: ignore[attr-defined]
except ImportError: except ImportError:

View file

@ -21,6 +21,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
import re import re
from collections import Counter, defaultdict from collections import Counter, defaultdict
from difflib import get_close_matches from difflib import get_close_matches
@ -37,7 +38,6 @@ from typing import (
) )
import numpy as np import numpy as np
from nptyping.error import InvalidShapeError, InvalidStructureError from nptyping.error import InvalidShapeError, InvalidStructureError
from nptyping.shape import Shape from nptyping.shape import Shape
from nptyping.shape_expression import ( from nptyping.shape_expression import (
@ -109,8 +109,7 @@ def check_structure(
return False return False
def iterator() -> Generator[Tuple[str, Tuple[np.dtype, int]], None, None]: # type: ignore[type-arg] # pylint: disable=line-too-long def iterator() -> Generator[Tuple[str, Tuple[np.dtype, int]], None, None]: # type: ignore[type-arg] # pylint: disable=line-too-long
for name_, dtype_tuple_ in fields.items(): yield from fields.items()
yield name_, dtype_tuple_ # type: ignore[misc]
for name, dtype_tuple in iterator(): for name, dtype_tuple in iterator():
field_in_target_not_in_subject = dtype_tuple is None field_in_target_not_in_subject = dtype_tuple is None

View file

@ -22,22 +22,12 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
""" """
try:
from typing import ( # type: ignore[attr-defined,misc] # pylint: disable=unused-import
Literal,
TypeAlias,
TypeGuard,
final,
)
except ImportError: # pragma: no cover
from typing_extensions import ( # type: ignore[attr-defined,misc]
Literal,
TypeAlias,
TypeGuard,
final,
)
from typing import Tuple, Union from typing import ( # type: ignore[attr-defined,misc] # pylint: disable=unused-import
Tuple,
TypeAlias,
Union,
)
import numpy as np import numpy as np