| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| # Tools for dealing with Arrow type metadata in Python |
| |
| |
| from pyarrow.lib import (is_boolean_value, # noqa |
| is_integer_value, |
| is_float_value) |
| |
| import pyarrow.lib as lib |
| |
| |
| _SIGNED_INTEGER_TYPES = {lib.Type_INT8, lib.Type_INT16, lib.Type_INT32, |
| lib.Type_INT64} |
| _UNSIGNED_INTEGER_TYPES = {lib.Type_UINT8, lib.Type_UINT16, lib.Type_UINT32, |
| lib.Type_UINT64} |
| _INTEGER_TYPES = _SIGNED_INTEGER_TYPES | _UNSIGNED_INTEGER_TYPES |
| _FLOATING_TYPES = {lib.Type_HALF_FLOAT, lib.Type_FLOAT, lib.Type_DOUBLE} |
| _DATE_TYPES = {lib.Type_DATE32, lib.Type_DATE64} |
| _TIME_TYPES = {lib.Type_TIME32, lib.Type_TIME64} |
| _TEMPORAL_TYPES = {lib.Type_TIMESTAMP, |
| lib.Type_DURATION} | _TIME_TYPES | _DATE_TYPES |
| _UNION_TYPES = {lib.Type_SPARSE_UNION, lib.Type_DENSE_UNION} |
| _NESTED_TYPES = {lib.Type_LIST, lib.Type_LARGE_LIST, lib.Type_STRUCT, |
| lib.Type_MAP} | _UNION_TYPES |
| |
| |
| def is_null(t): |
| """ |
| Return True if value is an instance of a null type. |
| """ |
| return t.id == lib.Type_NA |
| |
| |
| def is_boolean(t): |
| """ |
| Return True if value is an instance of a boolean type. |
| """ |
| return t.id == lib.Type_BOOL |
| |
| |
| def is_integer(t): |
| """ |
| Return True if value is an instance of any integer type. |
| """ |
| return t.id in _INTEGER_TYPES |
| |
| |
| def is_signed_integer(t): |
| """ |
| Return True if value is an instance of any signed integer type. |
| """ |
| return t.id in _SIGNED_INTEGER_TYPES |
| |
| |
| def is_unsigned_integer(t): |
| """ |
| Return True if value is an instance of any unsigned integer type. |
| """ |
| return t.id in _UNSIGNED_INTEGER_TYPES |
| |
| |
| def is_int8(t): |
| """ |
| Return True if value is an instance of an int8 type. |
| """ |
| return t.id == lib.Type_INT8 |
| |
| |
| def is_int16(t): |
| """ |
| Return True if value is an instance of an int16 type. |
| """ |
| return t.id == lib.Type_INT16 |
| |
| |
| def is_int32(t): |
| """ |
| Return True if value is an instance of an int32 type. |
| """ |
| return t.id == lib.Type_INT32 |
| |
| |
| def is_int64(t): |
| """ |
| Return True if value is an instance of an int64 type. |
| """ |
| return t.id == lib.Type_INT64 |
| |
| |
| def is_uint8(t): |
| """ |
| Return True if value is an instance of an uint8 type. |
| """ |
| return t.id == lib.Type_UINT8 |
| |
| |
| def is_uint16(t): |
| """ |
| Return True if value is an instance of an uint16 type. |
| """ |
| return t.id == lib.Type_UINT16 |
| |
| |
| def is_uint32(t): |
| """ |
| Return True if value is an instance of an uint32 type. |
| """ |
| return t.id == lib.Type_UINT32 |
| |
| |
| def is_uint64(t): |
| """ |
| Return True if value is an instance of an uint64 type. |
| """ |
| return t.id == lib.Type_UINT64 |
| |
| |
| def is_floating(t): |
| """ |
| Return True if value is an instance of a floating point numeric type. |
| """ |
| return t.id in _FLOATING_TYPES |
| |
| |
| def is_float16(t): |
| """ |
| Return True if value is an instance of a float16 (half-precision) type. |
| """ |
| return t.id == lib.Type_HALF_FLOAT |
| |
| |
| def is_float32(t): |
| """ |
| Return True if value is an instance of a float32 (single precision) type. |
| """ |
| return t.id == lib.Type_FLOAT |
| |
| |
| def is_float64(t): |
| """ |
| Return True if value is an instance of a float64 (double precision) type. |
| """ |
| return t.id == lib.Type_DOUBLE |
| |
| |
| def is_list(t): |
| """ |
| Return True if value is an instance of a list type. |
| """ |
| return t.id == lib.Type_LIST |
| |
| |
| def is_large_list(t): |
| """ |
| Return True if value is an instance of a large list type. |
| """ |
| return t.id == lib.Type_LARGE_LIST |
| |
| |
| def is_fixed_size_list(t): |
| """ |
| Return True if value is an instance of a fixed size list type. |
| """ |
| return t.id == lib.Type_FIXED_SIZE_LIST |
| |
| |
| def is_struct(t): |
| """ |
| Return True if value is an instance of a struct type. |
| """ |
| return t.id == lib.Type_STRUCT |
| |
| |
| def is_union(t): |
| """ |
| Return True if value is an instance of a union type. |
| """ |
| return t.id in _UNION_TYPES |
| |
| |
| def is_nested(t): |
| """ |
| Return True if value is an instance of a nested type. |
| """ |
| return t.id in _NESTED_TYPES |
| |
| |
| def is_temporal(t): |
| """ |
| Return True if value is an instance of date, time, timestamp or duration. |
| """ |
| return t.id in _TEMPORAL_TYPES |
| |
| |
| def is_timestamp(t): |
| """ |
| Return True if value is an instance of a timestamp type. |
| """ |
| return t.id == lib.Type_TIMESTAMP |
| |
| |
| def is_duration(t): |
| """ |
| Return True if value is an instance of a duration type. |
| """ |
| return t.id == lib.Type_DURATION |
| |
| |
| def is_time(t): |
| """ |
| Return True if value is an instance of a time type. |
| """ |
| return t.id in _TIME_TYPES |
| |
| |
| def is_time32(t): |
| """ |
| Return True if value is an instance of a time32 type. |
| """ |
| return t.id == lib.Type_TIME32 |
| |
| |
| def is_time64(t): |
| """ |
| Return True if value is an instance of a time64 type. |
| """ |
| return t.id == lib.Type_TIME64 |
| |
| |
| def is_binary(t): |
| """ |
| Return True if value is an instance of a variable-length binary type. |
| """ |
| return t.id == lib.Type_BINARY |
| |
| |
| def is_large_binary(t): |
| """ |
| Return True if value is an instance of a large variable-length |
| binary type. |
| """ |
| return t.id == lib.Type_LARGE_BINARY |
| |
| |
| def is_unicode(t): |
| """ |
| Alias for is_string. |
| """ |
| return is_string(t) |
| |
| |
| def is_string(t): |
| """ |
| Return True if value is an instance of string (utf8 unicode) type. |
| """ |
| return t.id == lib.Type_STRING |
| |
| |
| def is_large_unicode(t): |
| """ |
| Alias for is_large_string. |
| """ |
| return is_large_string(t) |
| |
| |
| def is_large_string(t): |
| """ |
| Return True if value is an instance of large string (utf8 unicode) type. |
| """ |
| return t.id == lib.Type_LARGE_STRING |
| |
| |
| def is_fixed_size_binary(t): |
| """ |
| Return True if value is an instance of a fixed size binary type. |
| """ |
| return t.id == lib.Type_FIXED_SIZE_BINARY |
| |
| |
| def is_date(t): |
| """ |
| Return True if value is an instance of a date type. |
| """ |
| return t.id in _DATE_TYPES |
| |
| |
| def is_date32(t): |
| """ |
| Return True if value is an instance of a date32 (days) type. |
| """ |
| return t.id == lib.Type_DATE32 |
| |
| |
| def is_date64(t): |
| """ |
| Return True if value is an instance of a date64 (milliseconds) type. |
| """ |
| return t.id == lib.Type_DATE64 |
| |
| |
| def is_map(t): |
| """ |
| Return True if value is an instance of a map logical type. |
| """ |
| return t.id == lib.Type_MAP |
| |
| |
| def is_decimal(t): |
| """ |
| Return True if value is an instance of a decimal type. |
| """ |
| return t.id == lib.Type_DECIMAL |
| |
| |
| def is_dictionary(t): |
| """ |
| Return True if value is an instance of a dictionary-encoded type. |
| """ |
| return t.id == lib.Type_DICTIONARY |
| |
| |
| def is_primitive(t): |
| """ |
| Return True if the value is an instance of a primitive type. |
| """ |
| return lib._is_primitive(t.id) |