import numpy as np import pytest import pandas as pd from pandas.core.arrays.integer import ( Int8Dtype, Int16Dtype, Int32Dtype, Int64Dtype, UInt8Dtype, UInt16Dtype, UInt32Dtype, UInt64Dtype, ) @pytest.fixture( params=[ Int8Dtype, Int16Dtype, Int32Dtype, Int64Dtype, UInt8Dtype, UInt16Dtype, UInt32Dtype, UInt64Dtype, ] ) def dtype(request): """Parametrized fixture returning integer 'dtype'""" return request.param() @pytest.fixture def data(dtype): """ Fixture returning 'data' array with valid and missing values according to parametrized integer 'dtype'. Used to test dtype conversion with and without missing values. """ return pd.array( list(range(8)) + [np.nan] + list(range(10, 98)) + [np.nan] + [99, 100], dtype=dtype, ) @pytest.fixture def data_missing(dtype): """ Fixture returning array with exactly one NaN and one valid integer, according to parametrized integer 'dtype'. Used to test dtype conversion with and without missing values. """ return pd.array([np.nan, 1], dtype=dtype) @pytest.fixture(params=["data", "data_missing"]) def all_data(request, data, data_missing): """Parametrized fixture returning 'data' or 'data_missing' integer arrays. Used to test dtype conversion with and without missing values. """ if request.param == "data": return data elif request.param == "data_missing": return data_missing