From aaf09c1213377ba81567a3cf4c1c76111b11fc52 Mon Sep 17 00:00:00 2001 From: Angus Hollands Date: Mon, 4 Sep 2023 19:43:38 +0100 Subject: [PATCH] feat!: remove deprecations for 1.4.0 release (#2688) * feat!: drop `typestr` argument * feat!: drop `Form.type_from_behavior` * feat!: drop `ak.typetracer.empty_if_typetracer` * feat!: drop `UnionArray.simplified`'s `merge` argument * feat!: drop string and categorical behaviors * Revert "feat!: drop string and categorical behaviors" This reverts commit 9218a77a563f7eff7fae5632e8bc208a15c56840. This is required because it these classes are likely serialised in some behavior dictionaries * fix: catch broken tests * feat!: don't import unused behaviors * test: drop reference to unused behavior * feat: replace behaviors with pass-throughs --- src/awkward/__init__.py | 2 - src/awkward/behaviors/categorical.py | 14 +------ src/awkward/behaviors/string.py | 56 ++-------------------------- src/awkward/contents/unionarray.py | 14 +------ src/awkward/forms/form.py | 10 ----- src/awkward/types/listtype.py | 18 ++------- src/awkward/types/numpytype.py | 18 ++------- src/awkward/types/optiontype.py | 34 +++-------------- src/awkward/types/recordtype.py | 17 +-------- src/awkward/types/regulartype.py | 23 ++---------- src/awkward/types/type.py | 9 +---- src/awkward/types/uniontype.py | 20 ++-------- src/awkward/types/unknowntype.py | 32 ++++------------ src/awkward/typetracer.py | 10 ----- tests/test_0028_add_dressed_types.py | 1 - tests/test_2096_ak_scalar_type.py | 14 ++----- tests/test_2125_type_of_scalar.py | 5 +-- tests/test_2365_enforce_type.py | 10 +---- 18 files changed, 41 insertions(+), 266 deletions(-) diff --git a/src/awkward/__init__.py b/src/awkward/__init__.py index 041df4fe87..c8d871a111 100644 --- a/src/awkward/__init__.py +++ b/src/awkward/__init__.py @@ -37,8 +37,6 @@ from awkward.highlevel import * # behaviors -import awkward.behaviors.categorical -import awkward.behaviors.string from awkward.behaviors.mixins import * # exports diff --git a/src/awkward/behaviors/categorical.py b/src/awkward/behaviors/categorical.py index 9422102530..09d5d42426 100644 --- a/src/awkward/behaviors/categorical.py +++ b/src/awkward/behaviors/categorical.py @@ -1,16 +1,4 @@ # BSD 3-Clause License; see https://github.com/scikit-hep/awkward-1.0/blob/main/LICENSE -from awkward._errors import deprecate from awkward.highlevel import Array - -class CategoricalBehavior(Array): - __name__ = "Array" - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - deprecate( - f"{type(self).__name__} is deprecated: categorical types are now considered a built-in feature " - f"provided by Awkward Array, rather than an extension.", - version="2.4.0", - ) +CategoricalBehavior = Array diff --git a/src/awkward/behaviors/string.py b/src/awkward/behaviors/string.py index a50bb6ae86..ff34d7dd41 100644 --- a/src/awkward/behaviors/string.py +++ b/src/awkward/behaviors/string.py @@ -1,55 +1,7 @@ # BSD 3-Clause License; see https://github.com/scikit-hep/awkward-1.0/blob/main/LICENSE -from awkward._errors import deprecate from awkward.highlevel import Array - -class ByteBehavior(Array): - __name__ = "Array" - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - deprecate( - f"{type(self).__name__} is deprecated: string types are now considered a built-in feature " - f"provided by Awkward Array, rather than an extension.", - version="2.4.0", - ) - - -class CharBehavior(Array): - __name__ = "Array" - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - deprecate( - f"{type(self).__name__} is deprecated: string types are now considered a built-in feature " - f"provided by Awkward Array, rather than an extension.", - version="2.4.0", - ) - - -class ByteStringBehavior(Array): - __name__ = "Array" - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - deprecate( - f"{type(self).__name__} is deprecated: string types are now considered a built-in feature " - f"provided by Awkward Array, rather than an extension.", - version="2.4.0", - ) - - -class StringBehavior(Array): - __name__ = "Array" - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - deprecate( - f"{type(self).__name__} is deprecated: string types are now considered a built-in feature " - f"provided by Awkward Array, rather than an extension.", - version="2.4.0", - ) +ByteBehavior = Array +CharBehavior = Array +ByteStringBehavior = Array +StringBehavior = Array diff --git a/src/awkward/contents/unionarray.py b/src/awkward/contents/unionarray.py index a9f69c3423..a729bbd4c7 100644 --- a/src/awkward/contents/unionarray.py +++ b/src/awkward/contents/unionarray.py @@ -8,7 +8,6 @@ import awkward as ak from awkward._backends.backend import Backend -from awkward._errors import deprecate from awkward._layout import maybe_posaxis from awkward._nplikes.numpy import Numpy from awkward._nplikes.numpylike import ArrayLike, IndexType, NumpyMetadata @@ -228,17 +227,8 @@ def simplified( contents, *, parameters=None, - merge=UNSET, mergebool=False, ): - if merge is UNSET: - merge = True - else: - deprecate( - "The `merge` argument to UnionArray.simplified(...) is deprecated; " - "it is no longer possible to construct UnionArrays with mergeable contents.", - version="2.4.0", - ) self_index = index self_tags = tags self_contents = contents @@ -282,7 +272,7 @@ def simplified( # For each "final" outer union content for k in range(len(contents)): # Try and merge inner union content with running outer-union contentca - if merge and contents[k]._mergeable_next(inner_cont, mergebool): + if contents[k]._mergeable_next(inner_cont, mergebool): backend.maybe_kernel_error( backend[ "awkward_UnionArray_simplify", @@ -362,7 +352,7 @@ def simplified( unmerged = False break - elif merge and contents[k]._mergeable_next(self_cont, mergebool): + elif contents[k]._mergeable_next(self_cont, mergebool): backend.maybe_kernel_error( backend[ "awkward_UnionArray_simplify_one", diff --git a/src/awkward/forms/form.py b/src/awkward/forms/form.py index 6904fd7a8d..a661a2c52a 100644 --- a/src/awkward/forms/form.py +++ b/src/awkward/forms/form.py @@ -476,16 +476,6 @@ def _repr_args(self): def type(self): raise NotImplementedError - def type_from_behavior(self, behavior): - deprecate( - "low level types produced by forms do not hold references to behaviors. " - "Use a high-level type (e.g. ak.types.ArrayType or ak.types.ScalarType) to" - "associate a type with behavior information, or simply access the low-level" - "type from Form.type", - version="2.4.0", - ) - return self.type - def columns(self, list_indicator=None, column_prefix=()): output = [] self._columns(column_prefix, output, list_indicator) diff --git a/src/awkward/types/listtype.py b/src/awkward/types/listtype.py index 6e77b15621..e1cc2b2f47 100644 --- a/src/awkward/types/listtype.py +++ b/src/awkward/types/listtype.py @@ -2,7 +2,6 @@ from __future__ import annotations from awkward._behavior import find_array_typestr -from awkward._errors import deprecate from awkward._parameters import parameters_are_equal, type_parameters_equal from awkward._typing import Self, final from awkward._util import UNSET @@ -11,14 +10,13 @@ @final class ListType(Type): - def copy(self, *, content: Type = UNSET, parameters=UNSET, typestr=UNSET) -> Self: + def copy(self, *, content: Type = UNSET, parameters=UNSET) -> Self: return ListType( self._content if content is UNSET else content, parameters=self._parameters if parameters is UNSET else parameters, - typestr=self._typestr if typestr is UNSET else typestr, ) - def __init__(self, content, *, parameters=None, typestr=None): + def __init__(self, content, *, parameters=None): if not isinstance(content, Type): raise TypeError( "{} 'content' must be a Type subtype, not {}".format( @@ -31,22 +29,15 @@ def __init__(self, content, *, parameters=None, typestr=None): type(self).__name__, repr(parameters) ) ) - if typestr is not None and not isinstance(typestr, str): - raise TypeError( - "{} 'typestr' must be of type string or None, not {}".format( - type(self).__name__, repr(typestr) - ) - ) self._content = content self._parameters = parameters - self._typestr = typestr @property def content(self): return self._content def _get_typestr(self, behavior) -> str | None: - typestr = find_array_typestr(behavior, self._parameters, self._typestr) + typestr = find_array_typestr(behavior, self._parameters) if typestr is not None: return typestr @@ -62,9 +53,6 @@ def _get_typestr(self, behavior) -> str | None: return None def _str(self, indent, compact, behavior): - if self._typestr is not None: - deprecate("typestr argument is deprecated", "2.4.0") - typestr = self._get_typestr(behavior) if typestr is not None: out = [typestr] diff --git a/src/awkward/types/numpytype.py b/src/awkward/types/numpytype.py index 3d6d781534..f26a7a1222 100644 --- a/src/awkward/types/numpytype.py +++ b/src/awkward/types/numpytype.py @@ -5,7 +5,6 @@ import re from awkward._behavior import find_array_typestr -from awkward._errors import deprecate from awkward._nplikes.numpylike import NumpyMetadata from awkward._parameters import parameters_are_equal, type_parameters_equal from awkward._typing import Self, final @@ -95,14 +94,13 @@ def dtype_to_primitive(dtype): @final class NumpyType(Type): - def copy(self, *, primitive: Type = UNSET, parameters=UNSET, typestr=UNSET) -> Self: + def copy(self, *, primitive: Type = UNSET, parameters=UNSET) -> Self: return NumpyType( self._primitive if primitive is UNSET else primitive, parameters=self._parameters if parameters is UNSET else parameters, - typestr=self._typestr if typestr is UNSET else typestr, ) - def __init__(self, primitive, *, parameters=None, typestr=None): + def __init__(self, primitive, *, parameters=None): primitive = dtype_to_primitive(primitive_to_dtype(primitive)) if parameters is not None and not isinstance(parameters, dict): raise TypeError( @@ -110,15 +108,8 @@ def __init__(self, primitive, *, parameters=None, typestr=None): type(self).__name__, repr(parameters) ) ) - if typestr is not None and not isinstance(typestr, str): - raise TypeError( - "{} 'typestr' must be of type string or None, not {}".format( - type(self).__name__, repr(typestr) - ) - ) self._primitive = primitive self._parameters = parameters - self._typestr = typestr @property def primitive(self): @@ -127,7 +118,7 @@ def primitive(self): _str_parameters_exclude = ("__categorical__", "__unit__") def _get_typestr(self, behavior) -> str | None: - typestr = find_array_typestr(behavior, self._parameters, self._typestr) + typestr = find_array_typestr(behavior, self._parameters) if typestr is not None: return typestr @@ -141,9 +132,6 @@ def _get_typestr(self, behavior) -> str | None: return None def _str(self, indent, compact, behavior): - if self._typestr is not None: - deprecate("typestr argument is deprecated", "2.4.0") - typestr = self._get_typestr(behavior) if typestr is not None: out = [typestr] diff --git a/src/awkward/types/optiontype.py b/src/awkward/types/optiontype.py index 0ef6be32aa..ce16a3dfa8 100644 --- a/src/awkward/types/optiontype.py +++ b/src/awkward/types/optiontype.py @@ -2,7 +2,6 @@ from __future__ import annotations from awkward._behavior import find_array_typestr -from awkward._errors import deprecate from awkward._parameters import ( parameters_are_equal, parameters_union, @@ -18,14 +17,13 @@ @final class OptionType(Type): - def copy(self, *, content: Type = UNSET, parameters=UNSET, typestr=UNSET) -> Self: + def copy(self, *, content: Type = UNSET, parameters=UNSET) -> Self: return OptionType( self._content if content is UNSET else content, parameters=self._parameters if parameters is UNSET else parameters, - typestr=self._typestr if typestr is UNSET else typestr, ) - def __init__(self, content, *, parameters=None, typestr=None): + def __init__(self, content, *, parameters=None): if not isinstance(content, Type): raise TypeError( "{} 'content' must be a Type subclass, not {}".format( @@ -38,25 +36,15 @@ def __init__(self, content, *, parameters=None, typestr=None): type(self).__name__, repr(parameters) ) ) - if typestr is not None and not isinstance(typestr, str): - raise TypeError( - "{} 'typestr' must be of type string or None, not {}".format( - type(self).__name__, repr(typestr) - ) - ) self._content = content self._parameters = parameters - self._typestr = typestr @property def content(self): return self._content def _str(self, indent, compact, behavior): - if self._typestr is not None: - deprecate("typestr argument is deprecated", "2.4.0") - - typestr = find_array_typestr(behavior, self._parameters, self._typestr) + typestr = find_array_typestr(behavior, self._parameters) head = [] tail = [] @@ -101,31 +89,19 @@ def simplify_option_union(self): contents = [] for content in self._content.contents: if isinstance(content, OptionType): - typestr = ( - content._typestr if self._typestr is None else self._typestr - ) contents.append( OptionType( content.content, parameters=parameters_union( self._parameters, content._parameters ), - typestr=typestr, ) ) else: - contents.append( - OptionType( - content, parameters=self._parameters, typestr=self._typestr - ) - ) + contents.append(OptionType(content, parameters=self._parameters)) - return UnionType( - contents, - parameters=self._content.parameters, - typestr=self._content.typestr, - ) + return UnionType(contents, parameters=self._content.parameters) else: return self diff --git a/src/awkward/types/recordtype.py b/src/awkward/types/recordtype.py index c2abe46875..a027397ec2 100644 --- a/src/awkward/types/recordtype.py +++ b/src/awkward/types/recordtype.py @@ -8,7 +8,6 @@ import awkward as ak import awkward._prettyprint from awkward._behavior import find_record_typestr -from awkward._errors import deprecate from awkward._parameters import parameters_are_equal, type_parameters_equal from awkward._typing import Self, final from awkward._util import UNSET @@ -23,16 +22,14 @@ def copy( contents: list[Type] = UNSET, fields: list[str] | None = UNSET, parameters=UNSET, - typestr=UNSET, ) -> Self: return RecordType( self._contents if contents is UNSET else contents, self._fields if fields is UNSET else fields, parameters=self._parameters if parameters is UNSET else parameters, - typestr=self._typestr if typestr is UNSET else typestr, ) - def __init__(self, contents, fields, *, parameters=None, typestr=None): + def __init__(self, contents, fields, *, parameters=None): if not isinstance(contents, Iterable): raise TypeError( "{} 'contents' must be iterable, not {}".format( @@ -58,16 +55,9 @@ def __init__(self, contents, fields, *, parameters=None, typestr=None): type(self).__name__, repr(parameters) ) ) - if typestr is not None and not isinstance(typestr, str): - raise TypeError( - "{} 'typestr' must be of type string or None, not {}".format( - type(self).__name__, repr(typestr) - ) - ) self._contents = contents self._fields = fields self._parameters = parameters - self._typestr = typestr @property def contents(self): @@ -84,10 +74,7 @@ def is_tuple(self): _str_parameters_exclude = ("__categorical__", "__record__") def _str(self, indent, compact, behavior): - if self._typestr is not None: - deprecate("typestr argument is deprecated", "2.4.0") - - typestr = find_record_typestr(behavior, self._parameters, self._typestr) + typestr = find_record_typestr(behavior, self._parameters) if typestr is not None: out = [typestr] diff --git a/src/awkward/types/regulartype.py b/src/awkward/types/regulartype.py index 849dd4105a..615b04366f 100644 --- a/src/awkward/types/regulartype.py +++ b/src/awkward/types/regulartype.py @@ -2,7 +2,6 @@ from __future__ import annotations from awkward._behavior import find_array_typestr -from awkward._errors import deprecate from awkward._nplikes.shape import ShapeItem, unknown_length from awkward._parameters import parameters_are_equal, type_parameters_equal from awkward._regularize import is_integer @@ -14,21 +13,15 @@ @final class RegularType(Type): def copy( - self, - *, - content: Type = UNSET, - size: ShapeItem = UNSET, - parameters=UNSET, - typestr=UNSET, + self, *, content: Type = UNSET, size: ShapeItem = UNSET, parameters=UNSET ) -> Self: return RegularType( self._content if content is UNSET else content, size=self._size if size is UNSET else size, parameters=self._parameters if parameters is UNSET else parameters, - typestr=self._typestr if typestr is UNSET else typestr, ) - def __init__(self, content, size, *, parameters=None, typestr=None): + def __init__(self, content, size, *, parameters=None): if not isinstance(content, Type): raise TypeError( "{} 'content' must be a Type subtype, not {}".format( @@ -47,16 +40,9 @@ def __init__(self, content, size, *, parameters=None, typestr=None): type(self).__name__, repr(parameters) ) ) - if typestr is not None and not isinstance(typestr, str): - raise TypeError( - "{} 'typestr' must be of type string or None, not {}".format( - type(self).__name__, repr(typestr) - ) - ) self._content = content self._size = size self._parameters = parameters - self._typestr = typestr @property def content(self): @@ -67,7 +53,7 @@ def size(self): return self._size def _get_typestr(self, behavior) -> str | None: - typestr = find_array_typestr(behavior, self._parameters, self._typestr) + typestr = find_array_typestr(behavior, self._parameters) if typestr is not None: return typestr @@ -83,9 +69,6 @@ def _get_typestr(self, behavior) -> str | None: return None def _str(self, indent, compact, behavior): - if self._typestr is not None: - deprecate("typestr argument is deprecated", "2.4.0") - typestr = self._get_typestr(behavior) if typestr is not None: out = [f"{typestr}[{self._size}]"] diff --git a/src/awkward/types/type.py b/src/awkward/types/type.py index f87d93657b..4294867e9c 100644 --- a/src/awkward/types/type.py +++ b/src/awkward/types/type.py @@ -14,7 +14,7 @@ class Type: - def copy(self, *, parameters=UNSET, typestr=UNSET) -> Self: + def copy(self, *, parameters=UNSET) -> Self: raise NotImplementedError @property @@ -29,10 +29,6 @@ def parameter(self, key): else: return self._parameters.get(key) - @property - def typestr(self): - return self._typestr - def __str__(self): return "".join(self._str("", True, None)) @@ -78,9 +74,6 @@ def _repr_args(self) -> list[str]: if self._parameters is not None and len(self._parameters) > 0: out.append("parameters=" + repr(self._parameters)) - if self._typestr is not None: - out.append("typestr=" + repr(self._typestr)) - return out def is_equal_to(self, other, *, all_parameters: bool = False) -> bool: diff --git a/src/awkward/types/uniontype.py b/src/awkward/types/uniontype.py index fc7950392a..2efd2dae36 100644 --- a/src/awkward/types/uniontype.py +++ b/src/awkward/types/uniontype.py @@ -5,7 +5,6 @@ from itertools import permutations from awkward._behavior import find_array_typestr -from awkward._errors import deprecate from awkward._parameters import parameters_are_equal, type_parameters_equal from awkward._typing import Self, final from awkward._util import UNSET @@ -14,16 +13,13 @@ @final class UnionType(Type): - def copy( - self, *, contents: list[Type] = UNSET, parameters=UNSET, typestr=UNSET - ) -> Self: + def copy(self, *, contents: list[Type] = UNSET, parameters=UNSET) -> Self: return UnionType( self._contents if contents is UNSET else contents, parameters=self._parameters if parameters is UNSET else parameters, - typestr=self._typestr if typestr is UNSET else typestr, ) - def __init__(self, contents, *, parameters=None, typestr=None): + def __init__(self, contents, *, parameters=None): if not isinstance(contents, Iterable): raise TypeError( "{} 'contents' must be iterable, not {}".format( @@ -45,25 +41,15 @@ def __init__(self, contents, *, parameters=None, typestr=None): type(self).__name__, repr(parameters) ) ) - if typestr is not None and not isinstance(typestr, str): - raise TypeError( - "{} 'typestr' must be of type string or None, not {}".format( - type(self).__name__, repr(typestr) - ) - ) self._contents = contents self._parameters = parameters - self._typestr = typestr @property def contents(self): return self._contents def _str(self, indent, compact, behavior): - if self._typestr is not None: - deprecate("typestr argument is deprecated", "2.4.0") - - typestr = find_array_typestr(behavior, self._parameters, self._typestr) + typestr = find_array_typestr(behavior, self._parameters) if typestr is not None: out = [typestr] diff --git a/src/awkward/types/unknowntype.py b/src/awkward/types/unknowntype.py index 0d08212cf9..69403a9c61 100644 --- a/src/awkward/types/unknowntype.py +++ b/src/awkward/types/unknowntype.py @@ -1,7 +1,6 @@ # BSD 3-Clause License; see https://github.com/scikit-hep/awkward-1.0/blob/main/LICENSE from __future__ import annotations -from awkward._errors import deprecate from awkward._typing import Self, final from awkward._util import UNSET from awkward.types.type import Type @@ -9,39 +8,22 @@ @final class UnknownType(Type): - def copy(self, *, parameters=UNSET, typestr=UNSET) -> Self: + def copy(self, *, parameters=UNSET) -> Self: if not (parameters is UNSET or parameters is None or len(parameters) == 0): raise TypeError(f"{type(self).__name__} cannot contain parameters") - return UnknownType( - typestr=self._typestr if typestr is UNSET else typestr, - ) + return UnknownType() - def __init__(self, *, parameters=None, typestr=None): + def __init__(self, *, parameters=None): if not (parameters is None or len(parameters) == 0): raise TypeError(f"{type(self).__name__} cannot contain parameters") - if typestr is not None and not isinstance(typestr, str): - raise TypeError( - "{} 'typestr' must be of type string or None, not {}".format( - type(self).__name__, repr(typestr) - ) - ) self._parameters = None - self._typestr = typestr def _str(self, indent, compact, behavior): - if self._typestr is not None: - deprecate("typestr argument is deprecated", "2.4.0") - - typestr = self._typestr - if typestr is not None: - out = [typestr] - + params = self._str_parameters() + if params is None: + out = ["unknown"] else: - params = self._str_parameters() - if params is None: - out = ["unknown"] - else: - out = ["unknown[", params, "]"] + out = ["unknown[", params, "]"] return [self._str_categorical_begin(), *out, self._str_categorical_end()] diff --git a/src/awkward/typetracer.py b/src/awkward/typetracer.py index c654eec78e..5f3acff626 100644 --- a/src/awkward/typetracer.py +++ b/src/awkward/typetracer.py @@ -3,7 +3,6 @@ __all__ = [ "is_unknown_array", "is_unknown_scalar", - "empty_if_typetracer", "TypeTracerReport", "typetracer_with_report", "PlaceholderArray", @@ -51,15 +50,6 @@ def _length_0_1_if_typetracer(array, function, highlevel: bool, behavior) -> T: return wrap_layout(layout, behavior=behavior, highlevel=highlevel) -def empty_if_typetracer(array) -> T: - deprecate( - "'empty_if_typetracer' is being replaced by 'length_zero_if_typetracer' (change name)", - "2.4.0", - ) - - return length_zero_if_typetracer(array) - - def length_zero_if_typetracer(array, *, highlevel: bool = True, behavior=None) -> T: """ Args: diff --git a/tests/test_0028_add_dressed_types.py b/tests/test_0028_add_dressed_types.py index 32f7116bff..f6049a6ca0 100644 --- a/tests/test_0028_add_dressed_types.py +++ b/tests/test_0028_add_dressed_types.py @@ -80,7 +80,6 @@ def test_string2(): a = ak.highlevel.Array(listoffsetarray, check_valid=True) assert isinstance(a, ak.highlevel.Array) - assert not isinstance(a, ak.behaviors.string.StringBehavior) assert to_list(a) == [[104, 101, 121], [], [116, 104, 101, 114, 101]] assert str(ak.operations.type(a)) == "3 * var * uint8" diff --git a/tests/test_2096_ak_scalar_type.py b/tests/test_2096_ak_scalar_type.py index ccc65d406e..7eecd6116f 100644 --- a/tests/test_2096_ak_scalar_type.py +++ b/tests/test_2096_ak_scalar_type.py @@ -60,31 +60,25 @@ def test_unknown(): def test_bare_string(): assert ak.type("hello") == ak.types.ArrayType( - ak.types.NumpyType("uint8", parameters={"__array__": "char"}, typestr="char"), 5 + ak.types.NumpyType("uint8", parameters={"__array__": "char"}), 5 ) assert ak.type(b"hello") == ak.types.ArrayType( - ak.types.NumpyType("uint8", parameters={"__array__": "byte"}, typestr="byte"), 5 + ak.types.NumpyType("uint8", parameters={"__array__": "byte"}), 5 ) def test_array_string(): assert ak.type(["hello"]) == ak.types.ArrayType( ak.types.ListType( - ak.types.NumpyType( - "uint8", parameters={"__array__": "char"}, typestr="char" - ), + ak.types.NumpyType("uint8", parameters={"__array__": "char"}), parameters={"__array__": "string"}, - typestr="string", ), 1, ) assert ak.type([b"hello"]) == ak.types.ArrayType( ak.types.ListType( - ak.types.NumpyType( - "uint8", parameters={"__array__": "byte"}, typestr="byte" - ), + ak.types.NumpyType("uint8", parameters={"__array__": "byte"}), parameters={"__array__": "bytestring"}, - typestr="bytes", ), 1, ) diff --git a/tests/test_2125_type_of_scalar.py b/tests/test_2125_type_of_scalar.py index 0ef51cbffe..07231b35db 100644 --- a/tests/test_2125_type_of_scalar.py +++ b/tests/test_2125_type_of_scalar.py @@ -22,11 +22,8 @@ def test(): ) assert ak.type(["int16"]) == ak.types.ArrayType( ak.types.ListType( - ak.types.NumpyType( - "uint8", parameters={"__array__": "char"}, typestr="char" - ), + ak.types.NumpyType("uint8", parameters={"__array__": "char"}), parameters={"__array__": "string"}, - typestr="string", ), 1, ) diff --git a/tests/test_2365_enforce_type.py b/tests/test_2365_enforce_type.py index 91e4d15b65..7493606f9d 100644 --- a/tests/test_2365_enforce_type.py +++ b/tests/test_2365_enforce_type.py @@ -497,11 +497,8 @@ def test_union(): [ ak.types.NumpyType("int64"), ak.types.ListType( - ak.types.NumpyType( - "uint8", parameters={"__array__": "char"}, typestr="char" - ), + ak.types.NumpyType("uint8", parameters={"__array__": "char"}), parameters={"__array__": "string", "foo": "bar"}, - typestr="string", ), ] ), @@ -555,11 +552,8 @@ def test_union(): [ ak.types.NumpyType("float32"), ak.types.ListType( - ak.types.NumpyType( - "uint8", parameters={"__array__": "char"}, typestr="char" - ), + ak.types.NumpyType("uint8", parameters={"__array__": "char"}), parameters={"__array__": "string", "foo": "bar"}, - typestr="string", ), ] ),