Skip to content

Commit

Permalink
refactor: move is_XXX from ak._do to ak._meta
Browse files Browse the repository at this point in the history
  • Loading branch information
agoose77 committed Dec 4, 2023
1 parent 9760698 commit 663d6ae
Show file tree
Hide file tree
Showing 12 changed files with 67 additions and 75 deletions.
56 changes: 1 addition & 55 deletions src/awkward/_do/meta.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,67 +3,13 @@
from __future__ import annotations

from awkward._nplikes.numpy_like import NumpyMetadata
from awkward._typing import TYPE_CHECKING, TypeGuard, TypeVar
from awkward._typing import TYPE_CHECKING

if TYPE_CHECKING:
from awkward._meta.bitmaskedmeta import BitMaskedMeta
from awkward._meta.bytemaskedmeta import ByteMaskedMeta
from awkward._meta.indexedmeta import IndexedMeta
from awkward._meta.indexedoptionmeta import IndexedOptionMeta
from awkward._meta.listmeta import ListMeta
from awkward._meta.listoffsetmeta import ListOffsetMeta
from awkward._meta.meta import Meta
from awkward._meta.numpymeta import NumpyMeta
from awkward._meta.recordmeta import RecordMeta
from awkward._meta.regularmeta import RegularMeta
from awkward._meta.unionmeta import UnionMeta
from awkward._meta.unmaskedmeta import UnmaskedMeta

np = NumpyMetadata.instance()


T = TypeVar("T", bound="Meta")


def is_option(
meta: Meta
) -> TypeGuard[IndexedOptionMeta | BitMaskedMeta | ByteMaskedMeta | UnmaskedMeta]:
return meta.is_option


def is_list(meta: Meta) -> TypeGuard[RegularMeta | ListOffsetMeta | ListMeta]:
return meta.is_list


def is_numpy(meta: Meta) -> TypeGuard[NumpyMeta]:
return meta.is_numpy


def is_regular(meta: Meta) -> TypeGuard[RegularMeta]:
return meta.is_regular


def is_union(meta: Meta) -> TypeGuard[UnionMeta]:
return meta.is_union


def is_record(meta: Meta) -> TypeGuard[RecordMeta]:
return meta.is_record


def is_indexed(meta: Meta) -> TypeGuard[IndexedOptionMeta, IndexedMeta]:
return meta.is_indexed


# FIXME: narrow this to have `is_tuple` be a const True
def is_record_tuple(meta: Meta) -> TypeGuard[RecordMeta]:
return meta.is_record and meta.is_tuple


# FIXME: narrow this to have `is_tuple` be a const False
def is_record_record(meta: Meta) -> TypeGuard[RecordMeta]:
return meta.is_record and not meta.is_tuple


def mergeable(one: Meta, two: Meta, mergebool: bool = True) -> bool:
return one._mergeable_next(two, mergebool=mergebool)
3 changes: 1 addition & 2 deletions src/awkward/_meta/bitmaskedmeta.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

from __future__ import annotations

from awkward._do.meta import is_indexed, is_option
from awkward._meta.meta import Meta
from awkward._meta.meta import Meta, is_indexed, is_option
from awkward._parameters import type_parameters_equal
from awkward._typing import JSONSerializable

Expand Down
3 changes: 1 addition & 2 deletions src/awkward/_meta/bytemaskedmeta.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

from __future__ import annotations

from awkward._do.meta import is_indexed, is_option
from awkward._meta.meta import Meta
from awkward._meta.meta import Meta, is_indexed, is_option
from awkward._parameters import type_parameters_equal
from awkward._typing import JSONSerializable

Expand Down
3 changes: 1 addition & 2 deletions src/awkward/_meta/indexedmeta.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

from __future__ import annotations

from awkward._do.meta import is_indexed, is_option
from awkward._meta.meta import Meta
from awkward._meta.meta import Meta, is_indexed, is_option
from awkward._parameters import type_parameters_equal
from awkward._typing import JSONSerializable

Expand Down
3 changes: 1 addition & 2 deletions src/awkward/_meta/indexedoptionmeta.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

from __future__ import annotations

from awkward._do.meta import is_indexed, is_option
from awkward._meta.meta import Meta
from awkward._meta.meta import Meta, is_indexed, is_option
from awkward._parameters import type_parameters_equal
from awkward._typing import JSONSerializable

Expand Down
3 changes: 1 addition & 2 deletions src/awkward/_meta/listmeta.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

from __future__ import annotations

from awkward._do.meta import is_indexed, is_list, is_numpy, is_option
from awkward._meta.meta import Meta
from awkward._meta.meta import Meta, is_indexed, is_list, is_numpy, is_option
from awkward._parameters import type_parameters_equal
from awkward._typing import JSONSerializable

Expand Down
3 changes: 1 addition & 2 deletions src/awkward/_meta/listoffsetmeta.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

from __future__ import annotations

from awkward._do.meta import is_indexed, is_list, is_numpy, is_option
from awkward._meta.meta import Meta
from awkward._meta.meta import Meta, is_indexed, is_list, is_numpy, is_option
from awkward._parameters import type_parameters_equal
from awkward._typing import JSONSerializable

Expand Down
55 changes: 55 additions & 0 deletions src/awkward/_meta/meta.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,68 @@
from __future__ import annotations

from awkward._typing import (
TYPE_CHECKING,
ClassVar,
JSONMapping,
JSONSerializable,
Self,
TypeGuard,
)
from awkward._util import UNSET, Sentinel

if TYPE_CHECKING:
from awkward._meta.bitmaskedmeta import BitMaskedMeta
from awkward._meta.bytemaskedmeta import ByteMaskedMeta
from awkward._meta.indexedmeta import IndexedMeta
from awkward._meta.indexedoptionmeta import IndexedOptionMeta
from awkward._meta.listmeta import ListMeta
from awkward._meta.listoffsetmeta import ListOffsetMeta
from awkward._meta.numpymeta import NumpyMeta
from awkward._meta.recordmeta import RecordMeta
from awkward._meta.regularmeta import RegularMeta
from awkward._meta.unionmeta import UnionMeta
from awkward._meta.unmaskedmeta import UnmaskedMeta


def is_option(
meta: Meta
) -> TypeGuard[IndexedOptionMeta | BitMaskedMeta | ByteMaskedMeta | UnmaskedMeta]:
return meta.is_option


def is_list(meta: Meta) -> TypeGuard[RegularMeta | ListOffsetMeta | ListMeta]:
return meta.is_list


def is_numpy(meta: Meta) -> TypeGuard[NumpyMeta]:
return meta.is_numpy


def is_regular(meta: Meta) -> TypeGuard[RegularMeta]:
return meta.is_regular


def is_union(meta: Meta) -> TypeGuard[UnionMeta]:
return meta.is_union


def is_record(meta: Meta) -> TypeGuard[RecordMeta]:
return meta.is_record


def is_indexed(meta: Meta) -> TypeGuard[IndexedOptionMeta | IndexedMeta]:
return meta.is_indexed


# FIXME: narrow this to have `is_tuple` be a const True
def is_record_tuple(meta: Meta) -> TypeGuard[RecordMeta]:
return meta.is_record and meta.is_tuple


# FIXME: narrow this to have `is_tuple` be a const False
def is_record_record(meta: Meta) -> TypeGuard[RecordMeta]:
return meta.is_record and not meta.is_tuple


class Meta:
is_numpy: ClassVar[bool] = False
Expand Down
3 changes: 1 addition & 2 deletions src/awkward/_meta/numpymeta.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

from __future__ import annotations

from awkward._do.meta import is_indexed, is_numpy, is_option
from awkward._meta.meta import Meta
from awkward._meta.meta import Meta, is_indexed, is_numpy, is_option
from awkward._nplikes.numpy_like import NumpyMetadata
from awkward._nplikes.shape import ShapeItem
from awkward._parameters import type_parameters_equal
Expand Down
4 changes: 2 additions & 2 deletions src/awkward/_meta/recordmeta.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

from __future__ import annotations

from awkward._do.meta import (
from awkward._meta.meta import (
Meta,
is_indexed,
is_option,
is_record,
is_record_record,
is_record_tuple,
)
from awkward._meta.meta import Meta
from awkward._parameters import type_parameters_equal
from awkward._regularize import is_integer
from awkward._typing import JSONSerializable
Expand Down
3 changes: 1 addition & 2 deletions src/awkward/_meta/regularmeta.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

from __future__ import annotations

from awkward._do.meta import is_indexed, is_list, is_numpy, is_option
from awkward._meta.meta import Meta
from awkward._meta.meta import Meta, is_indexed, is_list, is_numpy, is_option
from awkward._nplikes.shape import ShapeItem
from awkward._parameters import type_parameters_equal
from awkward._typing import JSONSerializable
Expand Down
3 changes: 1 addition & 2 deletions src/awkward/_meta/unmaskedmeta.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

from __future__ import annotations

from awkward._do.meta import is_indexed, is_option
from awkward._meta.meta import Meta
from awkward._meta.meta import Meta, is_indexed, is_option
from awkward._parameters import type_parameters_equal
from awkward._typing import JSONSerializable

Expand Down

0 comments on commit 663d6ae

Please sign in to comment.