From fda71def8828a374d527d98db5348204390700f8 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Tue, 19 Mar 2019 18:49:02 -0700 Subject: [PATCH 01/11] move core.config to _config.config, update imports --- pandas/_config/__init__.py | 2 + pandas/{core => _config}/config.py | 2 +- pandas/_libs/tslibs/parsing.pyx | 16 +-- pandas/core/api.py | 2 +- pandas/core/arrays/categorical.py | 2 +- pandas/core/arrays/interval.py | 2 +- pandas/core/base.py | 2 +- pandas/core/computation/expressions.py | 2 +- pandas/core/config_init.py | 4 +- pandas/core/dtypes/dtypes.py | 2 +- pandas/core/dtypes/missing.py | 2 +- pandas/core/frame.py | 2 +- pandas/core/generic.py | 4 +- pandas/core/groupby/groupby.py | 2 +- pandas/core/indexes/category.py | 2 +- pandas/core/indexes/interval.py | 2 +- pandas/core/indexes/multi.py | 2 +- pandas/core/nanops.py | 2 +- pandas/core/series.py | 2 +- pandas/io/excel/_base.py | 2 +- pandas/io/formats/console.py | 2 +- pandas/io/formats/format.py | 2 +- pandas/io/formats/html.py | 2 +- pandas/io/formats/printing.py | 2 +- pandas/io/formats/style.py | 2 +- pandas/io/pytables.py | 4 +- pandas/plotting/_core.py | 2 +- pandas/tests/arrays/categorical/test_repr.py | 2 +- pandas/tests/{ => config}/test_config.py | 4 +- pandas/tests/dtypes/test_missing.py | 3 +- pandas/tests/groupby/test_transform.py | 2 +- pandas/tests/indexes/multi/test_format.py | 2 +- pandas/tests/indexes/test_base.py | 3 +- pandas/tests/indexes/test_category.py | 3 +- pandas/tests/io/formats/test_format.py | 2 +- pandas/tests/io/formats/test_printing.py | 2 +- pandas/tests/io/test_excel.py | 2 +- pandas/tests/plotting/test_converter.py | 3 +- pandas/tests/sparse/test_format.py | 135 ------------------- 39 files changed, 49 insertions(+), 188 deletions(-) rename pandas/{core => _config}/config.py (99%) rename pandas/tests/{ => config}/test_config.py (99%) diff --git a/pandas/_config/__init__.py b/pandas/_config/__init__.py index 52150f526350d..f56765bee6464 100644 --- a/pandas/_config/__init__.py +++ b/pandas/_config/__init__.py @@ -2,3 +2,5 @@ pandas._config is considered explicitly upstream of everything else in pandas, should have no intra-pandas dependencies. """ +__all__ = ["config"] +from . import config diff --git a/pandas/core/config.py b/pandas/_config/config.py similarity index 99% rename from pandas/core/config.py rename to pandas/_config/config.py index 306311dc8ad5c..688080311cd33 100644 --- a/pandas/core/config.py +++ b/pandas/_config/config.py @@ -695,7 +695,7 @@ def config_prefix(prefix): Example: - import pandas.core.config as cf + import pandas._config.config as cf with cf.config_prefix("display.font"): cf.register_option("color", "red") cf.register_option("size", " 5 pt") diff --git a/pandas/_libs/tslibs/parsing.pyx b/pandas/_libs/tslibs/parsing.pyx index 7759e165b7193..257a4b747309d 100644 --- a/pandas/_libs/tslibs/parsing.pyx +++ b/pandas/_libs/tslibs/parsing.pyx @@ -30,6 +30,8 @@ from dateutil.relativedelta import relativedelta from dateutil.parser import DEFAULTPARSER from dateutil.parser import parse as du_parse +from pandas._config.config import get_option + from pandas._libs.tslibs.ccalendar import MONTH_NUMBERS from pandas._libs.tslibs.nattype import nat_strings, NaT @@ -51,20 +53,6 @@ cdef: # ---------------------------------------------------------------------- -_get_option = None - - -def get_option(param): - """ Defer import of get_option to break an import cycle that caused - significant performance degradation in Period construction. See - GH#24118 for details - """ - global _get_option - if _get_option is None: - from pandas.core.config import get_option - _get_option = get_option - return _get_option(param) - def parse_datetime_string(date_string, freq=None, dayfirst=False, yearfirst=False, **kwargs): diff --git a/pandas/core/api.py b/pandas/core/api.py index 8c92287e212a6..89e4d7cd50e3b 100644 --- a/pandas/core/api.py +++ b/pandas/core/api.py @@ -48,7 +48,7 @@ from pandas.core.tools.datetimes import to_datetime from pandas.core.tools.timedeltas import to_timedelta -from pandas.core.config import (get_option, set_option, reset_option, +from pandas._config.config import (get_option, set_option, reset_option, describe_option, option_context, options) diff --git a/pandas/core/arrays/categorical.py b/pandas/core/arrays/categorical.py index 7f77a5dcce613..a0c76f6252400 100644 --- a/pandas/core/arrays/categorical.py +++ b/pandas/core/arrays/categorical.py @@ -32,7 +32,7 @@ from pandas.core.algorithms import factorize, take, take_1d, unique1d from pandas.core.base import NoNewAttributesMixin, PandasObject, _shared_docs import pandas.core.common as com -from pandas.core.config import get_option +from pandas._config.config import get_option from pandas.core.missing import interpolate_2d from pandas.core.sorting import nargsort diff --git a/pandas/core/arrays/interval.py b/pandas/core/arrays/interval.py index 1e671c7bd956a..41bf0f6cceecd 100644 --- a/pandas/core/arrays/interval.py +++ b/pandas/core/arrays/interval.py @@ -24,7 +24,7 @@ ExtensionArray, _extension_array_shared_docs) from pandas.core.arrays.categorical import Categorical import pandas.core.common as com -from pandas.core.config import get_option +from pandas._config.config import get_option from pandas.core.indexes.base import Index, ensure_index _VALID_CLOSED = {'left', 'right', 'both', 'neither'} diff --git a/pandas/core/base.py b/pandas/core/base.py index ce91c232bb92d..beba72d2dd3b9 100644 --- a/pandas/core/base.py +++ b/pandas/core/base.py @@ -66,7 +66,7 @@ def __bytes__(self): Invoked by bytes(obj) in py3 only. Yields a bytestring in both py2/py3. """ - from pandas.core.config import get_option + from pandas._config.config import get_option encoding = get_option("display.encoding") return self.__unicode__().encode(encoding, 'replace') diff --git a/pandas/core/computation/expressions.py b/pandas/core/computation/expressions.py index a91ef7592a36d..b2711eb25e76a 100644 --- a/pandas/core/computation/expressions.py +++ b/pandas/core/computation/expressions.py @@ -14,7 +14,7 @@ import pandas.core.common as com from pandas.core.computation.check import _NUMEXPR_INSTALLED -from pandas.core.config import get_option +from pandas._config.config import get_option if _NUMEXPR_INSTALLED: import numexpr as ne diff --git a/pandas/core/config_init.py b/pandas/core/config_init.py index d42a1ab72b156..19af321f3d88b 100644 --- a/pandas/core/config_init.py +++ b/pandas/core/config_init.py @@ -9,8 +9,8 @@ module is imported, register them here rather then in the module. """ -import pandas.core.config as cf -from pandas.core.config import ( +import pandas._config.config as cf +from pandas._config.config import ( is_bool, is_callable, is_instance_factory, is_int, is_one_of_factory, is_text) diff --git a/pandas/core/dtypes/dtypes.py b/pandas/core/dtypes/dtypes.py index b3d46b7dc76a6..f9dbf5059bfcd 100644 --- a/pandas/core/dtypes/dtypes.py +++ b/pandas/core/dtypes/dtypes.py @@ -138,7 +138,7 @@ def __bytes__(self): Invoked by bytes(obj) in py3 only. Yields a bytestring in both py2/py3. """ - from pandas.core.config import get_option + from pandas._config.config import get_option encoding = get_option("display.encoding") return self.__unicode__().encode(encoding, 'replace') diff --git a/pandas/core/dtypes/missing.py b/pandas/core/dtypes/missing.py index 697c58a365233..6ef60a8650434 100644 --- a/pandas/core/dtypes/missing.py +++ b/pandas/core/dtypes/missing.py @@ -172,7 +172,7 @@ def _use_inf_as_na(key): * http://stackoverflow.com/questions/4859217/ programmatically-creating-variables-in-python/4859312#4859312 """ - from pandas.core.config import get_option + from pandas._config.config import get_option flag = get_option(key) if flag: globals()['_isna'] = _isna_old diff --git a/pandas/core/frame.py b/pandas/core/frame.py index b4f15905afc44..490f390d8102a 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -84,7 +84,7 @@ from pandas.core.arrays.datetimelike import ( DatetimeLikeArrayMixin as DatetimeLikeArray ) -from pandas.core.config import get_option +from pandas._config.config import get_option from pandas.core.generic import NDFrame, _shared_docs from pandas.core.index import (Index, MultiIndex, ensure_index, ensure_index_from_sequences) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index ac2ec40d6305d..7e09e1c612e3e 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -11,6 +11,8 @@ import numpy as np +from pandas._config import config + from pandas._libs import Timestamp, iNaT, properties import pandas.compat as compat from pandas.compat import ( @@ -34,7 +36,7 @@ from pandas.core.dtypes.missing import isna, notna import pandas as pd -from pandas.core import config, missing, nanops +from pandas.core import missing, nanops import pandas.core.algorithms as algos from pandas.core.base import PandasObject, SelectionMixin import pandas.core.common as com diff --git a/pandas/core/groupby/groupby.py b/pandas/core/groupby/groupby.py index 96eafbfae2cdb..dd8327cab1929 100644 --- a/pandas/core/groupby/groupby.py +++ b/pandas/core/groupby/groupby.py @@ -37,7 +37,7 @@ class providing the base-class of operations. from pandas.core.base import ( DataError, GroupByError, PandasObject, SelectionMixin, SpecificationError) import pandas.core.common as com -from pandas.core.config import option_context +from pandas._config.config import option_context from pandas.core.frame import DataFrame from pandas.core.generic import NDFrame from pandas.core.groupby import base diff --git a/pandas/core/indexes/category.py b/pandas/core/indexes/category.py index b494c41c3b58c..fbe35aa0a99b4 100644 --- a/pandas/core/indexes/category.py +++ b/pandas/core/indexes/category.py @@ -19,7 +19,7 @@ from pandas.core.algorithms import take_1d from pandas.core.arrays.categorical import Categorical, contains import pandas.core.common as com -from pandas.core.config import get_option +from pandas._config.config import get_option import pandas.core.indexes.base as ibase from pandas.core.indexes.base import Index, _index_shared_docs import pandas.core.missing as missing diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index 2c63fe33c57fe..77a03e5f11903 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -21,7 +21,7 @@ from pandas.core.arrays.interval import IntervalArray, _interval_shared_docs import pandas.core.common as com -from pandas.core.config import get_option +from pandas._config.config import get_option import pandas.core.indexes.base as ibase from pandas.core.indexes.base import ( Index, _index_shared_docs, default_pprint, ensure_index) diff --git a/pandas/core/indexes/multi.py b/pandas/core/indexes/multi.py index 616c17cd16f9a..4fc9e2d843763 100644 --- a/pandas/core/indexes/multi.py +++ b/pandas/core/indexes/multi.py @@ -24,7 +24,7 @@ import pandas.core.algorithms as algos import pandas.core.common as com -from pandas.core.config import get_option +from pandas._config.config import get_option import pandas.core.indexes.base as ibase from pandas.core.indexes.base import ( Index, InvalidIndexError, _index_shared_docs, ensure_index) diff --git a/pandas/core/nanops.py b/pandas/core/nanops.py index 86c3c380636c9..1db83c4e7bac9 100644 --- a/pandas/core/nanops.py +++ b/pandas/core/nanops.py @@ -19,7 +19,7 @@ from pandas.core.dtypes.missing import isna, na_value_for_dtype, notna import pandas.core.common as com -from pandas.core.config import get_option +from pandas._config.config import get_option _BOTTLENECK_INSTALLED = False _MIN_BOTTLENECK_VERSION = '1.0.0' diff --git a/pandas/core/series.py b/pandas/core/series.py index 5eb3376621ab0..0137f2aa86181 100644 --- a/pandas/core/series.py +++ b/pandas/core/series.py @@ -33,7 +33,7 @@ from pandas.core.arrays.categorical import Categorical, CategoricalAccessor from pandas.core.arrays.sparse import SparseAccessor import pandas.core.common as com -from pandas.core.config import get_option +from pandas._config.config import get_option from pandas.core.index import ( Float64Index, Index, InvalidIndexError, MultiIndex, ensure_index) from pandas.core.indexes.accessors import CombinedDatetimelikeProperties diff --git a/pandas/io/excel/_base.py b/pandas/io/excel/_base.py index c6d390692c789..dcbf9e2357cce 100644 --- a/pandas/io/excel/_base.py +++ b/pandas/io/excel/_base.py @@ -13,7 +13,7 @@ from pandas.core.dtypes.common import ( is_bool, is_float, is_integer, is_list_like) -from pandas.core import config +from pandas._config import config from pandas.core.frame import DataFrame from pandas.io.common import _NA_VALUES, _stringify_path, _validate_header_arg diff --git a/pandas/io/formats/console.py b/pandas/io/formats/console.py index ad63b3efdd832..0a035b52d6d42 100644 --- a/pandas/io/formats/console.py +++ b/pandas/io/formats/console.py @@ -69,7 +69,7 @@ def get_console_size(): if in_ipython_frontend(): # sane defaults for interactive non-shell terminal # match default for width,height in config_init - from pandas.core.config import get_default_val + from pandas._config.config import get_default_val terminal_width = get_default_val('display.width') terminal_height = get_default_val('display.max_rows') else: diff --git a/pandas/io/formats/format.py b/pandas/io/formats/format.py index 2bf0cd56daebf..ac4c6300394ec 100644 --- a/pandas/io/formats/format.py +++ b/pandas/io/formats/format.py @@ -27,7 +27,7 @@ from pandas import compat from pandas.core.base import PandasObject import pandas.core.common as com -from pandas.core.config import get_option, set_option +from pandas._config.config import get_option, set_option from pandas.core.index import Index, ensure_index from pandas.core.indexes.datetimes import DatetimeIndex diff --git a/pandas/io/formats/html.py b/pandas/io/formats/html.py index a543b21f287ec..7e3cd73739f67 100644 --- a/pandas/io/formats/html.py +++ b/pandas/io/formats/html.py @@ -13,7 +13,7 @@ from pandas.core.dtypes.generic import ABCMultiIndex from pandas import compat, option_context -from pandas.core.config import get_option +from pandas._config.config import get_option from pandas.io.common import _is_url from pandas.io.formats.format import TableFormatter, get_level_lengths diff --git a/pandas/io/formats/printing.py b/pandas/io/formats/printing.py index 6d45d1e5dfcee..86150142845f3 100644 --- a/pandas/io/formats/printing.py +++ b/pandas/io/formats/printing.py @@ -9,7 +9,7 @@ from pandas.core.dtypes.inference import is_sequence from pandas import compat -from pandas.core.config import get_option +from pandas._config.config import get_option def adjoin(space, *lists, **kwargs): diff --git a/pandas/io/formats/style.py b/pandas/io/formats/style.py index b872f86eb8683..0751ce1881821 100644 --- a/pandas/io/formats/style.py +++ b/pandas/io/formats/style.py @@ -21,7 +21,7 @@ import pandas as pd from pandas.api.types import is_dict_like, is_list_like import pandas.core.common as com -from pandas.core.config import get_option +from pandas._config.config import get_option from pandas.core.generic import _shared_docs from pandas.core.indexing import _maybe_numeric_slice, _non_reducing_slice diff --git a/pandas/io/pytables.py b/pandas/io/pytables.py index 2ee8759b9bdd8..e296410f7c465 100644 --- a/pandas/io/pytables.py +++ b/pandas/io/pytables.py @@ -29,13 +29,13 @@ DataFrame, DatetimeIndex, Index, Int64Index, MultiIndex, PeriodIndex, Series, SparseDataFrame, SparseSeries, TimedeltaIndex, compat, concat, isna, to_datetime) -from pandas.core import config +from pandas._config import config from pandas.core.arrays.categorical import Categorical from pandas.core.arrays.sparse import BlockIndex, IntIndex from pandas.core.base import StringMixin import pandas.core.common as com from pandas.core.computation.pytables import Expr, maybe_expression -from pandas.core.config import get_option +from pandas._config.config import get_option from pandas.core.index import ensure_index from pandas.core.internals import BlockManager, _block_shape, make_block diff --git a/pandas/plotting/_core.py b/pandas/plotting/_core.py index c33f7900c2cb5..1ad41e1f46747 100644 --- a/pandas/plotting/_core.py +++ b/pandas/plotting/_core.py @@ -22,7 +22,7 @@ from pandas.core.base import PandasObject import pandas.core.common as com -from pandas.core.config import get_option +from pandas._config.config import get_option from pandas.core.generic import _shared_doc_kwargs, _shared_docs from pandas.io.formats.printing import pprint_thing diff --git a/pandas/tests/arrays/categorical/test_repr.py b/pandas/tests/arrays/categorical/test_repr.py index 08b32a216ffb6..5c696e3f5befe 100644 --- a/pandas/tests/arrays/categorical/test_repr.py +++ b/pandas/tests/arrays/categorical/test_repr.py @@ -7,7 +7,7 @@ from pandas import ( Categorical, CategoricalIndex, Series, date_range, period_range, timedelta_range) -from pandas.core.config import option_context +from pandas._config.config import option_context from pandas.tests.arrays.categorical.common import TestCategorical diff --git a/pandas/tests/test_config.py b/pandas/tests/config/test_config.py similarity index 99% rename from pandas/tests/test_config.py rename to pandas/tests/config/test_config.py index baca66e0361ad..849679a29d518 100644 --- a/pandas/tests/test_config.py +++ b/pandas/tests/config/test_config.py @@ -6,7 +6,7 @@ from pandas.compat import PY2 import pandas as pd -from pandas.core.config import OptionError +from pandas._config.config import OptionError class TestConfig(object): @@ -15,7 +15,7 @@ class TestConfig(object): def setup_class(cls): from copy import deepcopy - cls.cf = pd.core.config + cls.cf = pd._config.config cls.gc = deepcopy(getattr(cls.cf, '_global_config')) cls.do = deepcopy(getattr(cls.cf, '_deprecated_options')) cls.ro = deepcopy(getattr(cls.cf, '_registered_options')) diff --git a/pandas/tests/dtypes/test_missing.py b/pandas/tests/dtypes/test_missing.py index 7ca01e13a33a9..7d14055d91173 100644 --- a/pandas/tests/dtypes/test_missing.py +++ b/pandas/tests/dtypes/test_missing.py @@ -7,6 +7,8 @@ import numpy as np import pytest +from pandas._config import config as cf + from pandas._libs import missing as libmissing from pandas._libs.tslibs import iNaT, is_null_datetimelike from pandas.compat import u @@ -20,7 +22,6 @@ import pandas as pd from pandas import ( DatetimeIndex, Float64Index, NaT, Series, TimedeltaIndex, date_range) -from pandas.core import config as cf from pandas.util import testing as tm diff --git a/pandas/tests/groupby/test_transform.py b/pandas/tests/groupby/test_transform.py index b645073fcf72a..99d9bd25fbf88 100644 --- a/pandas/tests/groupby/test_transform.py +++ b/pandas/tests/groupby/test_transform.py @@ -10,7 +10,7 @@ import pandas as pd from pandas import DataFrame, MultiIndex, Series, Timestamp, concat, date_range -from pandas.core.config import option_context +from pandas._config.config import option_context from pandas.core.groupby.groupby import DataError from pandas.util import testing as tm from pandas.util.testing import assert_frame_equal, assert_series_equal diff --git a/pandas/tests/indexes/multi/test_format.py b/pandas/tests/indexes/multi/test_format.py index a10b7220b8aa0..0c124edc41532 100644 --- a/pandas/tests/indexes/multi/test_format.py +++ b/pandas/tests/indexes/multi/test_format.py @@ -54,7 +54,7 @@ def test_format_sparse_display(): def test_repr_with_unicode_data(): - with pd.core.config.option_context("display.encoding", 'UTF-8'): + with pd._config.config.option_context("display.encoding", 'UTF-8'): d = {"a": [u("\u05d0"), 2, 3], "b": [4, 5, 6], "c": [7, 8, 9]} index = pd.DataFrame(d).set_index(["a", "b"]).index assert "\\u" not in repr(index) # we don't want unicode-escaped diff --git a/pandas/tests/indexes/test_base.py b/pandas/tests/indexes/test_base.py index 773bb91e39376..82da90a609dc0 100644 --- a/pandas/tests/indexes/test_base.py +++ b/pandas/tests/indexes/test_base.py @@ -10,6 +10,8 @@ import numpy as np import pytest +import pandas._config.config as cf + from pandas._libs.tslib import Timestamp from pandas.compat import ( PY3, PY35, PY36, StringIO, lrange, lzip, range, text_type, u, zip) @@ -23,7 +25,6 @@ CategoricalIndex, DataFrame, DatetimeIndex, Float64Index, Int64Index, PeriodIndex, RangeIndex, Series, TimedeltaIndex, UInt64Index, date_range, isna, period_range) -import pandas.core.config as cf from pandas.core.index import _get_combined_index, ensure_index_from_sequences from pandas.core.indexes.api import Index, MultiIndex from pandas.core.sorting import safe_sort diff --git a/pandas/tests/indexes/test_category.py b/pandas/tests/indexes/test_category.py index 95fac2f6ae05b..9aa8999bcc6ab 100644 --- a/pandas/tests/indexes/test_category.py +++ b/pandas/tests/indexes/test_category.py @@ -3,6 +3,8 @@ import numpy as np import pytest +import pandas._config.config as cf + from pandas._libs import index as libindex from pandas.compat import PY3, range @@ -10,7 +12,6 @@ import pandas as pd from pandas import Categorical, IntervalIndex, compat -import pandas.core.config as cf from pandas.core.indexes.api import CategoricalIndex, Index import pandas.util.testing as tm from pandas.util.testing import assert_almost_equal diff --git a/pandas/tests/io/formats/test_format.py b/pandas/tests/io/formats/test_format.py index 43bb382ea3f20..f2e117cc0669b 100644 --- a/pandas/tests/io/formats/test_format.py +++ b/pandas/tests/io/formats/test_format.py @@ -28,7 +28,7 @@ import pandas as pd from pandas import ( DataFrame, Index, MultiIndex, NaT, Series, Timestamp, date_range, read_csv) -from pandas.core.config import ( +from pandas._config.config import ( get_option, option_context, reset_option, set_option) import pandas.util.testing as tm diff --git a/pandas/tests/io/formats/test_printing.py b/pandas/tests/io/formats/test_printing.py index 67ff68ac4db8c..190ff091b1360 100644 --- a/pandas/tests/io/formats/test_printing.py +++ b/pandas/tests/io/formats/test_printing.py @@ -4,7 +4,7 @@ import pandas as pd from pandas import compat -import pandas.core.config as cf +import pandas._config.config as cf import pandas.io.formats.format as fmt import pandas.io.formats.printing as printing diff --git a/pandas/tests/io/test_excel.py b/pandas/tests/io/test_excel.py index 04c9c58a326a4..bfe269124e373 100644 --- a/pandas/tests/io/test_excel.py +++ b/pandas/tests/io/test_excel.py @@ -15,7 +15,7 @@ import pandas as pd from pandas import DataFrame, Index, MultiIndex, Series -from pandas.core.config import get_option, set_option +from pandas._config.config import get_option, set_option import pandas.util.testing as tm from pandas.util.testing import ensure_clean, makeCustomDataframe as mkdf diff --git a/pandas/tests/plotting/test_converter.py b/pandas/tests/plotting/test_converter.py index 7dfc21562cc5d..dfbdb2abc00d7 100644 --- a/pandas/tests/plotting/test_converter.py +++ b/pandas/tests/plotting/test_converter.py @@ -5,11 +5,12 @@ import numpy as np import pytest +import pandas._config.config as cf + from pandas.compat import u from pandas.compat.numpy import np_datetime64_compat from pandas import Index, Period, Series, Timestamp, date_range -import pandas.core.config as cf import pandas.util.testing as tm from pandas.tseries.offsets import Day, Micro, Milli, Second diff --git a/pandas/tests/sparse/test_format.py b/pandas/tests/sparse/test_format.py index 63018f9525b1f..e69de29bb2d1d 100644 --- a/pandas/tests/sparse/test_format.py +++ b/pandas/tests/sparse/test_format.py @@ -1,135 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import print_function - -import numpy as np - -from pandas.compat import is_platform_32bit, is_platform_windows - -import pandas as pd -from pandas.core.config import option_context -import pandas.util.testing as tm - -use_32bit_repr = is_platform_windows() or is_platform_32bit() - - -class TestSparseSeriesFormatting(object): - - @property - def dtype_format_for_platform(self): - return '' if use_32bit_repr else ', dtype=int32' - - def test_sparse_max_row(self): - s = pd.Series([1, np.nan, np.nan, 3, np.nan]).to_sparse() - result = repr(s) - dfm = self.dtype_format_for_platform - exp = ("0 1.0\n1 NaN\n2 NaN\n3 3.0\n" - "4 NaN\ndtype: Sparse[float64, nan]\nBlockIndex\n" - "Block locations: array([0, 3]{0})\n" - "Block lengths: array([1, 1]{0})".format(dfm)) - assert result == exp - - def test_sparsea_max_row_truncated(self): - s = pd.Series([1, np.nan, np.nan, 3, np.nan]).to_sparse() - dfm = self.dtype_format_for_platform - - with option_context("display.max_rows", 3): - # GH 10560 - result = repr(s) - exp = ("0 1.0\n ... \n4 NaN\n" - "Length: 5, dtype: Sparse[float64, nan]\nBlockIndex\n" - "Block locations: array([0, 3]{0})\n" - "Block lengths: array([1, 1]{0})".format(dfm)) - assert result == exp - - def test_sparse_mi_max_row(self): - idx = pd.MultiIndex.from_tuples([('A', 0), ('A', 1), ('B', 0), - ('C', 0), ('C', 1), ('C', 2)]) - s = pd.Series([1, np.nan, np.nan, 3, np.nan, np.nan], - index=idx).to_sparse() - result = repr(s) - dfm = self.dtype_format_for_platform - exp = ("A 0 1.0\n 1 NaN\nB 0 NaN\n" - "C 0 3.0\n 1 NaN\n 2 NaN\n" - "dtype: Sparse[float64, nan]\nBlockIndex\n" - "Block locations: array([0, 3]{0})\n" - "Block lengths: array([1, 1]{0})".format(dfm)) - assert result == exp - - with option_context("display.max_rows", 3, - "display.show_dimensions", False): - # GH 13144 - result = repr(s) - exp = ("A 0 1.0\n ... \nC 2 NaN\n" - "dtype: Sparse[float64, nan]\nBlockIndex\n" - "Block locations: array([0, 3]{0})\n" - "Block lengths: array([1, 1]{0})".format(dfm)) - assert result == exp - - def test_sparse_bool(self): - # GH 13110 - s = pd.SparseSeries([True, False, False, True, False, False], - fill_value=False) - result = repr(s) - dtype = '' if use_32bit_repr else ', dtype=int32' - exp = ("0 True\n1 False\n2 False\n" - "3 True\n4 False\n5 False\n" - "dtype: Sparse[bool, False]\nBlockIndex\n" - "Block locations: array([0, 3]{0})\n" - "Block lengths: array([1, 1]{0})".format(dtype)) - assert result == exp - - with option_context("display.max_rows", 3): - result = repr(s) - exp = ("0 True\n ... \n5 False\n" - "Length: 6, dtype: Sparse[bool, False]\nBlockIndex\n" - "Block locations: array([0, 3]{0})\n" - "Block lengths: array([1, 1]{0})".format(dtype)) - assert result == exp - - def test_sparse_int(self): - # GH 13110 - s = pd.SparseSeries([0, 1, 0, 0, 1, 0], fill_value=False) - - result = repr(s) - dtype = '' if use_32bit_repr else ', dtype=int32' - exp = ("0 0\n1 1\n2 0\n3 0\n4 1\n" - "5 0\ndtype: Sparse[int64, False]\nBlockIndex\n" - "Block locations: array([1, 4]{0})\n" - "Block lengths: array([1, 1]{0})".format(dtype)) - assert result == exp - - with option_context("display.max_rows", 3, - "display.show_dimensions", False): - result = repr(s) - exp = ("0 0\n ..\n5 0\n" - "dtype: Sparse[int64, False]\nBlockIndex\n" - "Block locations: array([1, 4]{0})\n" - "Block lengths: array([1, 1]{0})".format(dtype)) - assert result == exp - - -class TestSparseDataFrameFormatting(object): - - def test_sparse_frame(self): - # GH 13110 - df = pd.DataFrame({'A': [True, False, True, False, True], - 'B': [True, False, True, False, True], - 'C': [0, 0, 3, 0, 5], - 'D': [np.nan, np.nan, np.nan, 1, 2]}) - sparse = df.to_sparse() - assert repr(sparse) == repr(df) - - with option_context("display.max_rows", 3): - assert repr(sparse) == repr(df) - - def test_sparse_repr_after_set(self): - # GH 15488 - sdf = pd.SparseDataFrame([[np.nan, 1], [2, np.nan]]) - res = sdf.copy() - - # Ignore the warning - with pd.option_context('mode.chained_assignment', None): - sdf[0][1] = 2 # This line triggers the bug - - repr(sdf) - tm.assert_sp_frame_equal(sdf, res) From 0e287085a5192628aa3080869ccce3b91a1b9232 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Tue, 19 Mar 2019 19:01:22 -0700 Subject: [PATCH 02/11] isort imports --- pandas/__init__.py | 3 +++ pandas/core/api.py | 3 --- pandas/core/arrays/categorical.py | 3 ++- pandas/core/arrays/interval.py | 3 ++- pandas/core/computation/expressions.py | 3 ++- pandas/core/frame.py | 3 ++- pandas/core/groupby/groupby.py | 3 ++- pandas/core/indexes/category.py | 3 ++- pandas/core/indexes/interval.py | 3 ++- pandas/core/indexes/multi.py | 3 ++- pandas/core/nanops.py | 3 ++- pandas/core/series.py | 3 ++- pandas/io/excel/_base.py | 3 ++- pandas/io/formats/format.py | 3 ++- pandas/io/formats/html.py | 3 ++- pandas/io/formats/printing.py | 3 ++- pandas/io/formats/style.py | 3 ++- pandas/io/pytables.py | 5 +++-- pandas/plotting/_core.py | 3 ++- pandas/tests/arrays/categorical/test_repr.py | 3 ++- pandas/tests/config/test_config.py | 3 ++- pandas/tests/groupby/test_transform.py | 3 ++- pandas/tests/io/formats/test_format.py | 5 +++-- pandas/tests/io/formats/test_printing.py | 3 ++- pandas/tests/io/test_excel.py | 3 ++- 25 files changed, 51 insertions(+), 28 deletions(-) diff --git a/pandas/__init__.py b/pandas/__init__.py index 427157acb433f..064433c99853e 100644 --- a/pandas/__init__.py +++ b/pandas/__init__.py @@ -36,6 +36,9 @@ from datetime import datetime +from pandas._config.config import (get_option, set_option, reset_option, + describe_option, option_context, options) + # let init-time option registration happen import pandas.core.config_init diff --git a/pandas/core/api.py b/pandas/core/api.py index 89e4d7cd50e3b..09ca0c82395e2 100644 --- a/pandas/core/api.py +++ b/pandas/core/api.py @@ -48,9 +48,6 @@ from pandas.core.tools.datetimes import to_datetime from pandas.core.tools.timedeltas import to_timedelta -from pandas._config.config import (get_option, set_option, reset_option, - describe_option, option_context, options) - # Deprecation: xref gh-16747 class TimeGrouper(object): diff --git a/pandas/core/arrays/categorical.py b/pandas/core/arrays/categorical.py index a0c76f6252400..a6f0be6499361 100644 --- a/pandas/core/arrays/categorical.py +++ b/pandas/core/arrays/categorical.py @@ -5,6 +5,8 @@ import numpy as np +from pandas._config.config import get_option + from pandas._libs import algos as libalgos, lib import pandas.compat as compat from pandas.compat import lzip, u @@ -32,7 +34,6 @@ from pandas.core.algorithms import factorize, take, take_1d, unique1d from pandas.core.base import NoNewAttributesMixin, PandasObject, _shared_docs import pandas.core.common as com -from pandas._config.config import get_option from pandas.core.missing import interpolate_2d from pandas.core.sorting import nargsort diff --git a/pandas/core/arrays/interval.py b/pandas/core/arrays/interval.py index 41bf0f6cceecd..99e766d825c72 100644 --- a/pandas/core/arrays/interval.py +++ b/pandas/core/arrays/interval.py @@ -3,6 +3,8 @@ import numpy as np +from pandas._config.config import get_option + from pandas._libs.interval import ( Interval, IntervalMixin, intervals_to_interval_bounds) from pandas.compat import add_metaclass @@ -24,7 +26,6 @@ ExtensionArray, _extension_array_shared_docs) from pandas.core.arrays.categorical import Categorical import pandas.core.common as com -from pandas._config.config import get_option from pandas.core.indexes.base import Index, ensure_index _VALID_CLOSED = {'left', 'right', 'both', 'neither'} diff --git a/pandas/core/computation/expressions.py b/pandas/core/computation/expressions.py index b2711eb25e76a..60c78d78ee7d4 100644 --- a/pandas/core/computation/expressions.py +++ b/pandas/core/computation/expressions.py @@ -10,11 +10,12 @@ import numpy as np +from pandas._config.config import get_option + from pandas.core.dtypes.generic import ABCDataFrame import pandas.core.common as com from pandas.core.computation.check import _NUMEXPR_INSTALLED -from pandas._config.config import get_option if _NUMEXPR_INSTALLED: import numexpr as ne diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 490f390d8102a..b1d5d3a2b12b5 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -24,6 +24,8 @@ import numpy as np import numpy.ma as ma +from pandas._config.config import get_option + from pandas._libs import lib, algos as libalgos from pandas.util._decorators import (Appender, Substitution, @@ -84,7 +86,6 @@ from pandas.core.arrays.datetimelike import ( DatetimeLikeArrayMixin as DatetimeLikeArray ) -from pandas._config.config import get_option from pandas.core.generic import NDFrame, _shared_docs from pandas.core.index import (Index, MultiIndex, ensure_index, ensure_index_from_sequences) diff --git a/pandas/core/groupby/groupby.py b/pandas/core/groupby/groupby.py index dd8327cab1929..2f52eb81d4ad0 100644 --- a/pandas/core/groupby/groupby.py +++ b/pandas/core/groupby/groupby.py @@ -17,6 +17,8 @@ class providing the base-class of operations. import numpy as np +from pandas._config.config import option_context + from pandas._libs import Timestamp, groupby as libgroupby import pandas.compat as compat from pandas.compat import range, set_function_name, zip @@ -37,7 +39,6 @@ class providing the base-class of operations. from pandas.core.base import ( DataError, GroupByError, PandasObject, SelectionMixin, SpecificationError) import pandas.core.common as com -from pandas._config.config import option_context from pandas.core.frame import DataFrame from pandas.core.generic import NDFrame from pandas.core.groupby import base diff --git a/pandas/core/indexes/category.py b/pandas/core/indexes/category.py index fbe35aa0a99b4..46973ea30d323 100644 --- a/pandas/core/indexes/category.py +++ b/pandas/core/indexes/category.py @@ -3,6 +3,8 @@ import numpy as np +from pandas._config.config import get_option + from pandas._libs import index as libindex import pandas.compat as compat from pandas.compat.numpy import function as nv @@ -19,7 +21,6 @@ from pandas.core.algorithms import take_1d from pandas.core.arrays.categorical import Categorical, contains import pandas.core.common as com -from pandas._config.config import get_option import pandas.core.indexes.base as ibase from pandas.core.indexes.base import Index, _index_shared_docs import pandas.core.missing as missing diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index 77a03e5f11903..d0e162f0e69f2 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -4,6 +4,8 @@ import numpy as np +from pandas._config.config import get_option + from pandas._libs import Timedelta, Timestamp from pandas._libs.interval import Interval, IntervalMixin, IntervalTree from pandas.compat import add_metaclass @@ -21,7 +23,6 @@ from pandas.core.arrays.interval import IntervalArray, _interval_shared_docs import pandas.core.common as com -from pandas._config.config import get_option import pandas.core.indexes.base as ibase from pandas.core.indexes.base import ( Index, _index_shared_docs, default_pprint, ensure_index) diff --git a/pandas/core/indexes/multi.py b/pandas/core/indexes/multi.py index 4fc9e2d843763..88edc2b37020e 100644 --- a/pandas/core/indexes/multi.py +++ b/pandas/core/indexes/multi.py @@ -6,6 +6,8 @@ import numpy as np +from pandas._config.config import get_option + from pandas._libs import ( Timestamp, algos as libalgos, index as libindex, lib, tslibs) import pandas.compat as compat @@ -24,7 +26,6 @@ import pandas.core.algorithms as algos import pandas.core.common as com -from pandas._config.config import get_option import pandas.core.indexes.base as ibase from pandas.core.indexes.base import ( Index, InvalidIndexError, _index_shared_docs, ensure_index) diff --git a/pandas/core/nanops.py b/pandas/core/nanops.py index 1db83c4e7bac9..eca51f8b9cd04 100644 --- a/pandas/core/nanops.py +++ b/pandas/core/nanops.py @@ -6,6 +6,8 @@ import numpy as np +from pandas._config.config import get_option + from pandas._libs import iNaT, lib, tslibs import pandas.compat as compat @@ -19,7 +21,6 @@ from pandas.core.dtypes.missing import isna, na_value_for_dtype, notna import pandas.core.common as com -from pandas._config.config import get_option _BOTTLENECK_INSTALLED = False _MIN_BOTTLENECK_VERSION = '1.0.0' diff --git a/pandas/core/series.py b/pandas/core/series.py index 0137f2aa86181..8d212d25f7832 100644 --- a/pandas/core/series.py +++ b/pandas/core/series.py @@ -9,6 +9,8 @@ import numpy as np +from pandas._config.config import get_option + from pandas._libs import iNaT, index as libindex, lib, tslibs import pandas.compat as compat from pandas.compat import PY36, StringIO, u, zip @@ -33,7 +35,6 @@ from pandas.core.arrays.categorical import Categorical, CategoricalAccessor from pandas.core.arrays.sparse import SparseAccessor import pandas.core.common as com -from pandas._config.config import get_option from pandas.core.index import ( Float64Index, Index, InvalidIndexError, MultiIndex, ensure_index) from pandas.core.indexes.accessors import CombinedDatetimelikeProperties diff --git a/pandas/io/excel/_base.py b/pandas/io/excel/_base.py index dcbf9e2357cce..0195826f234a3 100644 --- a/pandas/io/excel/_base.py +++ b/pandas/io/excel/_base.py @@ -5,6 +5,8 @@ from textwrap import fill import warnings +from pandas._config import config + import pandas.compat as compat from pandas.compat import add_metaclass, range, string_types, u from pandas.errors import EmptyDataError @@ -13,7 +15,6 @@ from pandas.core.dtypes.common import ( is_bool, is_float, is_integer, is_list_like) -from pandas._config import config from pandas.core.frame import DataFrame from pandas.io.common import _NA_VALUES, _stringify_path, _validate_header_arg diff --git a/pandas/io/formats/format.py b/pandas/io/formats/format.py index ac4c6300394ec..6869df4655b3a 100644 --- a/pandas/io/formats/format.py +++ b/pandas/io/formats/format.py @@ -10,6 +10,8 @@ import numpy as np +from pandas._config.config import get_option, set_option + from pandas._libs import lib from pandas._libs.tslib import format_array_from_datetime from pandas._libs.tslibs import NaT, Timedelta, Timestamp, iNaT @@ -27,7 +29,6 @@ from pandas import compat from pandas.core.base import PandasObject import pandas.core.common as com -from pandas._config.config import get_option, set_option from pandas.core.index import Index, ensure_index from pandas.core.indexes.datetimes import DatetimeIndex diff --git a/pandas/io/formats/html.py b/pandas/io/formats/html.py index 7e3cd73739f67..8ec9cdabb1650 100644 --- a/pandas/io/formats/html.py +++ b/pandas/io/formats/html.py @@ -8,12 +8,13 @@ from collections import OrderedDict from textwrap import dedent +from pandas._config.config import get_option + from pandas.compat import lzip, map, range, u, unichr, zip from pandas.core.dtypes.generic import ABCMultiIndex from pandas import compat, option_context -from pandas._config.config import get_option from pandas.io.common import _is_url from pandas.io.formats.format import TableFormatter, get_level_lengths diff --git a/pandas/io/formats/printing.py b/pandas/io/formats/printing.py index 86150142845f3..ed5e117bb932d 100644 --- a/pandas/io/formats/printing.py +++ b/pandas/io/formats/printing.py @@ -4,12 +4,13 @@ import sys +from pandas._config.config import get_option + from pandas.compat import u from pandas.core.dtypes.inference import is_sequence from pandas import compat -from pandas._config.config import get_option def adjoin(space, *lists, **kwargs): diff --git a/pandas/io/formats/style.py b/pandas/io/formats/style.py index 0751ce1881821..f839cd6bea717 100644 --- a/pandas/io/formats/style.py +++ b/pandas/io/formats/style.py @@ -12,6 +12,8 @@ import numpy as np +from pandas._config.config import get_option + from pandas.compat import range from pandas.util._decorators import Appender @@ -21,7 +23,6 @@ import pandas as pd from pandas.api.types import is_dict_like, is_list_like import pandas.core.common as com -from pandas._config.config import get_option from pandas.core.generic import _shared_docs from pandas.core.indexing import _maybe_numeric_slice, _non_reducing_slice diff --git a/pandas/io/pytables.py b/pandas/io/pytables.py index e296410f7c465..656b5b4e04756 100644 --- a/pandas/io/pytables.py +++ b/pandas/io/pytables.py @@ -15,6 +15,9 @@ import numpy as np +from pandas._config import config +from pandas._config.config import get_option + from pandas._libs import lib, writers as libwriters from pandas._libs.tslibs import timezones from pandas.compat import PY3, filter, lrange, range, string_types @@ -29,13 +32,11 @@ DataFrame, DatetimeIndex, Index, Int64Index, MultiIndex, PeriodIndex, Series, SparseDataFrame, SparseSeries, TimedeltaIndex, compat, concat, isna, to_datetime) -from pandas._config import config from pandas.core.arrays.categorical import Categorical from pandas.core.arrays.sparse import BlockIndex, IntIndex from pandas.core.base import StringMixin import pandas.core.common as com from pandas.core.computation.pytables import Expr, maybe_expression -from pandas._config.config import get_option from pandas.core.index import ensure_index from pandas.core.internals import BlockManager, _block_shape, make_block diff --git a/pandas/plotting/_core.py b/pandas/plotting/_core.py index 1ad41e1f46747..e01705b6ac4ad 100644 --- a/pandas/plotting/_core.py +++ b/pandas/plotting/_core.py @@ -9,6 +9,8 @@ import numpy as np +from pandas._config.config import get_option + import pandas.compat as compat from pandas.compat import lrange, map, range, string_types, zip from pandas.errors import AbstractMethodError @@ -22,7 +24,6 @@ from pandas.core.base import PandasObject import pandas.core.common as com -from pandas._config.config import get_option from pandas.core.generic import _shared_doc_kwargs, _shared_docs from pandas.io.formats.printing import pprint_thing diff --git a/pandas/tests/arrays/categorical/test_repr.py b/pandas/tests/arrays/categorical/test_repr.py index 5c696e3f5befe..6ed3ebfbd9588 100644 --- a/pandas/tests/arrays/categorical/test_repr.py +++ b/pandas/tests/arrays/categorical/test_repr.py @@ -2,12 +2,13 @@ import numpy as np +from pandas._config.config import option_context + from pandas.compat import PY3, u from pandas import ( Categorical, CategoricalIndex, Series, date_range, period_range, timedelta_range) -from pandas._config.config import option_context from pandas.tests.arrays.categorical.common import TestCategorical diff --git a/pandas/tests/config/test_config.py b/pandas/tests/config/test_config.py index 849679a29d518..d12bf9ca02f5c 100644 --- a/pandas/tests/config/test_config.py +++ b/pandas/tests/config/test_config.py @@ -3,10 +3,11 @@ import pytest +from pandas._config.config import OptionError + from pandas.compat import PY2 import pandas as pd -from pandas._config.config import OptionError class TestConfig(object): diff --git a/pandas/tests/groupby/test_transform.py b/pandas/tests/groupby/test_transform.py index 99d9bd25fbf88..80ef92e86f63f 100644 --- a/pandas/tests/groupby/test_transform.py +++ b/pandas/tests/groupby/test_transform.py @@ -3,6 +3,8 @@ import numpy as np import pytest +from pandas._config.config import option_context + from pandas._libs import groupby from pandas.compat import StringIO @@ -10,7 +12,6 @@ import pandas as pd from pandas import DataFrame, MultiIndex, Series, Timestamp, concat, date_range -from pandas._config.config import option_context from pandas.core.groupby.groupby import DataError from pandas.util import testing as tm from pandas.util.testing import assert_frame_equal, assert_series_equal diff --git a/pandas/tests/io/formats/test_format.py b/pandas/tests/io/formats/test_format.py index f2e117cc0669b..c91109e215c34 100644 --- a/pandas/tests/io/formats/test_format.py +++ b/pandas/tests/io/formats/test_format.py @@ -20,6 +20,9 @@ import pytest import pytz +from pandas._config.config import ( + get_option, option_context, reset_option, set_option) + import pandas.compat as compat from pandas.compat import ( PY3, StringIO, is_platform_32bit, is_platform_windows, lrange, lzip, range, @@ -28,8 +31,6 @@ import pandas as pd from pandas import ( DataFrame, Index, MultiIndex, NaT, Series, Timestamp, date_range, read_csv) -from pandas._config.config import ( - get_option, option_context, reset_option, set_option) import pandas.util.testing as tm import pandas.io.formats.format as fmt diff --git a/pandas/tests/io/formats/test_printing.py b/pandas/tests/io/formats/test_printing.py index 190ff091b1360..a8de784da1347 100644 --- a/pandas/tests/io/formats/test_printing.py +++ b/pandas/tests/io/formats/test_printing.py @@ -2,9 +2,10 @@ import numpy as np import pytest +import pandas._config.config as cf + import pandas as pd from pandas import compat -import pandas._config.config as cf import pandas.io.formats.format as fmt import pandas.io.formats.printing as printing diff --git a/pandas/tests/io/test_excel.py b/pandas/tests/io/test_excel.py index bfe269124e373..3eb0105b00be7 100644 --- a/pandas/tests/io/test_excel.py +++ b/pandas/tests/io/test_excel.py @@ -10,12 +10,13 @@ from numpy import nan import pytest +from pandas._config.config import get_option, set_option + from pandas.compat import PY36, BytesIO, iteritems, map, range, u import pandas.util._test_decorators as td import pandas as pd from pandas import DataFrame, Index, MultiIndex, Series -from pandas._config.config import get_option, set_option import pandas.util.testing as tm from pandas.util.testing import ensure_clean, makeCustomDataframe as mkdf From a4c8e6de31e0fa62c96e151ae3b8658ea56f933f Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Tue, 19 Mar 2019 21:06:54 -0700 Subject: [PATCH 03/11] restore accidnetally-deleted file --- pandas/tests/sparse/test_format.py | 135 +++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) diff --git a/pandas/tests/sparse/test_format.py b/pandas/tests/sparse/test_format.py index e69de29bb2d1d..63018f9525b1f 100644 --- a/pandas/tests/sparse/test_format.py +++ b/pandas/tests/sparse/test_format.py @@ -0,0 +1,135 @@ +# -*- coding: utf-8 -*- +from __future__ import print_function + +import numpy as np + +from pandas.compat import is_platform_32bit, is_platform_windows + +import pandas as pd +from pandas.core.config import option_context +import pandas.util.testing as tm + +use_32bit_repr = is_platform_windows() or is_platform_32bit() + + +class TestSparseSeriesFormatting(object): + + @property + def dtype_format_for_platform(self): + return '' if use_32bit_repr else ', dtype=int32' + + def test_sparse_max_row(self): + s = pd.Series([1, np.nan, np.nan, 3, np.nan]).to_sparse() + result = repr(s) + dfm = self.dtype_format_for_platform + exp = ("0 1.0\n1 NaN\n2 NaN\n3 3.0\n" + "4 NaN\ndtype: Sparse[float64, nan]\nBlockIndex\n" + "Block locations: array([0, 3]{0})\n" + "Block lengths: array([1, 1]{0})".format(dfm)) + assert result == exp + + def test_sparsea_max_row_truncated(self): + s = pd.Series([1, np.nan, np.nan, 3, np.nan]).to_sparse() + dfm = self.dtype_format_for_platform + + with option_context("display.max_rows", 3): + # GH 10560 + result = repr(s) + exp = ("0 1.0\n ... \n4 NaN\n" + "Length: 5, dtype: Sparse[float64, nan]\nBlockIndex\n" + "Block locations: array([0, 3]{0})\n" + "Block lengths: array([1, 1]{0})".format(dfm)) + assert result == exp + + def test_sparse_mi_max_row(self): + idx = pd.MultiIndex.from_tuples([('A', 0), ('A', 1), ('B', 0), + ('C', 0), ('C', 1), ('C', 2)]) + s = pd.Series([1, np.nan, np.nan, 3, np.nan, np.nan], + index=idx).to_sparse() + result = repr(s) + dfm = self.dtype_format_for_platform + exp = ("A 0 1.0\n 1 NaN\nB 0 NaN\n" + "C 0 3.0\n 1 NaN\n 2 NaN\n" + "dtype: Sparse[float64, nan]\nBlockIndex\n" + "Block locations: array([0, 3]{0})\n" + "Block lengths: array([1, 1]{0})".format(dfm)) + assert result == exp + + with option_context("display.max_rows", 3, + "display.show_dimensions", False): + # GH 13144 + result = repr(s) + exp = ("A 0 1.0\n ... \nC 2 NaN\n" + "dtype: Sparse[float64, nan]\nBlockIndex\n" + "Block locations: array([0, 3]{0})\n" + "Block lengths: array([1, 1]{0})".format(dfm)) + assert result == exp + + def test_sparse_bool(self): + # GH 13110 + s = pd.SparseSeries([True, False, False, True, False, False], + fill_value=False) + result = repr(s) + dtype = '' if use_32bit_repr else ', dtype=int32' + exp = ("0 True\n1 False\n2 False\n" + "3 True\n4 False\n5 False\n" + "dtype: Sparse[bool, False]\nBlockIndex\n" + "Block locations: array([0, 3]{0})\n" + "Block lengths: array([1, 1]{0})".format(dtype)) + assert result == exp + + with option_context("display.max_rows", 3): + result = repr(s) + exp = ("0 True\n ... \n5 False\n" + "Length: 6, dtype: Sparse[bool, False]\nBlockIndex\n" + "Block locations: array([0, 3]{0})\n" + "Block lengths: array([1, 1]{0})".format(dtype)) + assert result == exp + + def test_sparse_int(self): + # GH 13110 + s = pd.SparseSeries([0, 1, 0, 0, 1, 0], fill_value=False) + + result = repr(s) + dtype = '' if use_32bit_repr else ', dtype=int32' + exp = ("0 0\n1 1\n2 0\n3 0\n4 1\n" + "5 0\ndtype: Sparse[int64, False]\nBlockIndex\n" + "Block locations: array([1, 4]{0})\n" + "Block lengths: array([1, 1]{0})".format(dtype)) + assert result == exp + + with option_context("display.max_rows", 3, + "display.show_dimensions", False): + result = repr(s) + exp = ("0 0\n ..\n5 0\n" + "dtype: Sparse[int64, False]\nBlockIndex\n" + "Block locations: array([1, 4]{0})\n" + "Block lengths: array([1, 1]{0})".format(dtype)) + assert result == exp + + +class TestSparseDataFrameFormatting(object): + + def test_sparse_frame(self): + # GH 13110 + df = pd.DataFrame({'A': [True, False, True, False, True], + 'B': [True, False, True, False, True], + 'C': [0, 0, 3, 0, 5], + 'D': [np.nan, np.nan, np.nan, 1, 2]}) + sparse = df.to_sparse() + assert repr(sparse) == repr(df) + + with option_context("display.max_rows", 3): + assert repr(sparse) == repr(df) + + def test_sparse_repr_after_set(self): + # GH 15488 + sdf = pd.SparseDataFrame([[np.nan, 1], [2, np.nan]]) + res = sdf.copy() + + # Ignore the warning + with pd.option_context('mode.chained_assignment', None): + sdf[0][1] = 2 # This line triggers the bug + + repr(sdf) + tm.assert_sp_frame_equal(sdf, res) From 7164f61069085315fb198bf441782b88b3f9d303 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Tue, 19 Mar 2019 21:07:46 -0700 Subject: [PATCH 04/11] Change to absolute import --- pandas/_config/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/_config/__init__.py b/pandas/_config/__init__.py index f56765bee6464..d544a8932cbd2 100644 --- a/pandas/_config/__init__.py +++ b/pandas/_config/__init__.py @@ -3,4 +3,4 @@ should have no intra-pandas dependencies. """ __all__ = ["config"] -from . import config +from pandas._config import config From c531c0cbeee23d0393acec2fbe39b1f503239813 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Wed, 20 Mar 2019 08:19:24 -0700 Subject: [PATCH 05/11] update import --- pandas/tests/sparse/test_format.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pandas/tests/sparse/test_format.py b/pandas/tests/sparse/test_format.py index 63018f9525b1f..a0a6691ab905e 100644 --- a/pandas/tests/sparse/test_format.py +++ b/pandas/tests/sparse/test_format.py @@ -3,10 +3,11 @@ import numpy as np +from pandas._config.config import option_context + from pandas.compat import is_platform_32bit, is_platform_windows import pandas as pd -from pandas.core.config import option_context import pandas.util.testing as tm use_32bit_repr = is_platform_windows() or is_platform_32bit() From c271fd69b6e0a5cd193d12063402e405bd830639 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Fri, 22 Mar 2019 10:09:10 -0700 Subject: [PATCH 06/11] update imports --- pandas/_config/__init__.py | 4 ++-- pandas/_libs/tslibs/parsing.pyx | 2 +- pandas/core/arrays/categorical.py | 2 +- pandas/core/arrays/interval.py | 2 +- pandas/core/base.py | 2 +- pandas/core/computation/expressions.py | 2 +- pandas/core/dtypes/dtypes.py | 2 +- pandas/core/dtypes/missing.py | 2 +- pandas/core/frame.py | 2 +- pandas/core/indexes/category.py | 2 +- pandas/core/indexes/interval.py | 2 +- pandas/core/indexes/multi.py | 2 +- pandas/core/nanops.py | 2 +- pandas/core/series.py | 2 +- pandas/io/formats/html.py | 2 +- pandas/io/formats/printing.py | 2 +- pandas/io/formats/style.py | 2 +- pandas/io/pytables.py | 3 +-- pandas/plotting/_core.py | 2 +- 19 files changed, 20 insertions(+), 21 deletions(-) diff --git a/pandas/_config/__init__.py b/pandas/_config/__init__.py index d544a8932cbd2..25a3d1b7a2e5e 100644 --- a/pandas/_config/__init__.py +++ b/pandas/_config/__init__.py @@ -2,5 +2,5 @@ pandas._config is considered explicitly upstream of everything else in pandas, should have no intra-pandas dependencies. """ -__all__ = ["config"] -from pandas._config import config +__all__ = ["config", "get_option"] +from pandas._config import config, get_option diff --git a/pandas/_libs/tslibs/parsing.pyx b/pandas/_libs/tslibs/parsing.pyx index 257a4b747309d..70b0f9c05f8fe 100644 --- a/pandas/_libs/tslibs/parsing.pyx +++ b/pandas/_libs/tslibs/parsing.pyx @@ -30,7 +30,7 @@ from dateutil.relativedelta import relativedelta from dateutil.parser import DEFAULTPARSER from dateutil.parser import parse as du_parse -from pandas._config.config import get_option +from pandas._config import get_option from pandas._libs.tslibs.ccalendar import MONTH_NUMBERS from pandas._libs.tslibs.nattype import nat_strings, NaT diff --git a/pandas/core/arrays/categorical.py b/pandas/core/arrays/categorical.py index a6f0be6499361..49411778426f9 100644 --- a/pandas/core/arrays/categorical.py +++ b/pandas/core/arrays/categorical.py @@ -5,7 +5,7 @@ import numpy as np -from pandas._config.config import get_option +from pandas._config import get_option from pandas._libs import algos as libalgos, lib import pandas.compat as compat diff --git a/pandas/core/arrays/interval.py b/pandas/core/arrays/interval.py index 99e766d825c72..7b20c7e1b6336 100644 --- a/pandas/core/arrays/interval.py +++ b/pandas/core/arrays/interval.py @@ -3,7 +3,7 @@ import numpy as np -from pandas._config.config import get_option +from pandas._config import get_option from pandas._libs.interval import ( Interval, IntervalMixin, intervals_to_interval_bounds) diff --git a/pandas/core/base.py b/pandas/core/base.py index beba72d2dd3b9..190b27a991f3a 100644 --- a/pandas/core/base.py +++ b/pandas/core/base.py @@ -66,7 +66,7 @@ def __bytes__(self): Invoked by bytes(obj) in py3 only. Yields a bytestring in both py2/py3. """ - from pandas._config.config import get_option + from pandas._config import get_option encoding = get_option("display.encoding") return self.__unicode__().encode(encoding, 'replace') diff --git a/pandas/core/computation/expressions.py b/pandas/core/computation/expressions.py index 60c78d78ee7d4..f293b3b33e8d3 100644 --- a/pandas/core/computation/expressions.py +++ b/pandas/core/computation/expressions.py @@ -10,7 +10,7 @@ import numpy as np -from pandas._config.config import get_option +from pandas._config import get_option from pandas.core.dtypes.generic import ABCDataFrame diff --git a/pandas/core/dtypes/dtypes.py b/pandas/core/dtypes/dtypes.py index f9dbf5059bfcd..b1fe2940fe5c6 100644 --- a/pandas/core/dtypes/dtypes.py +++ b/pandas/core/dtypes/dtypes.py @@ -138,7 +138,7 @@ def __bytes__(self): Invoked by bytes(obj) in py3 only. Yields a bytestring in both py2/py3. """ - from pandas._config.config import get_option + from pandas._config import get_option encoding = get_option("display.encoding") return self.__unicode__().encode(encoding, 'replace') diff --git a/pandas/core/dtypes/missing.py b/pandas/core/dtypes/missing.py index 6ef60a8650434..94efab1f94009 100644 --- a/pandas/core/dtypes/missing.py +++ b/pandas/core/dtypes/missing.py @@ -172,7 +172,7 @@ def _use_inf_as_na(key): * http://stackoverflow.com/questions/4859217/ programmatically-creating-variables-in-python/4859312#4859312 """ - from pandas._config.config import get_option + from pandas._config import get_option flag = get_option(key) if flag: globals()['_isna'] = _isna_old diff --git a/pandas/core/frame.py b/pandas/core/frame.py index fba817beef552..810ee12c13824 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -24,7 +24,7 @@ import numpy as np import numpy.ma as ma -from pandas._config.config import get_option +from pandas._config import get_option from pandas._libs import lib, algos as libalgos diff --git a/pandas/core/indexes/category.py b/pandas/core/indexes/category.py index 46973ea30d323..4493136e3e61e 100644 --- a/pandas/core/indexes/category.py +++ b/pandas/core/indexes/category.py @@ -3,7 +3,7 @@ import numpy as np -from pandas._config.config import get_option +from pandas._config import get_option from pandas._libs import index as libindex import pandas.compat as compat diff --git a/pandas/core/indexes/interval.py b/pandas/core/indexes/interval.py index d0e162f0e69f2..077bfb6a88f0c 100644 --- a/pandas/core/indexes/interval.py +++ b/pandas/core/indexes/interval.py @@ -4,7 +4,7 @@ import numpy as np -from pandas._config.config import get_option +from pandas._config import get_option from pandas._libs import Timedelta, Timestamp from pandas._libs.interval import Interval, IntervalMixin, IntervalTree diff --git a/pandas/core/indexes/multi.py b/pandas/core/indexes/multi.py index 88edc2b37020e..55789532c56a7 100644 --- a/pandas/core/indexes/multi.py +++ b/pandas/core/indexes/multi.py @@ -6,7 +6,7 @@ import numpy as np -from pandas._config.config import get_option +from pandas._config import get_option from pandas._libs import ( Timestamp, algos as libalgos, index as libindex, lib, tslibs) diff --git a/pandas/core/nanops.py b/pandas/core/nanops.py index eca51f8b9cd04..5e762325da192 100644 --- a/pandas/core/nanops.py +++ b/pandas/core/nanops.py @@ -6,7 +6,7 @@ import numpy as np -from pandas._config.config import get_option +from pandas._config import get_option from pandas._libs import iNaT, lib, tslibs import pandas.compat as compat diff --git a/pandas/core/series.py b/pandas/core/series.py index 684758b9c0e10..edc0d9b2d1ca6 100644 --- a/pandas/core/series.py +++ b/pandas/core/series.py @@ -9,7 +9,7 @@ import numpy as np -from pandas._config.config import get_option +from pandas._config import get_option from pandas._libs import iNaT, index as libindex, lib, tslibs import pandas.compat as compat diff --git a/pandas/io/formats/html.py b/pandas/io/formats/html.py index 8ec9cdabb1650..a44cd6f342ceb 100644 --- a/pandas/io/formats/html.py +++ b/pandas/io/formats/html.py @@ -8,7 +8,7 @@ from collections import OrderedDict from textwrap import dedent -from pandas._config.config import get_option +from pandas._config import get_option from pandas.compat import lzip, map, range, u, unichr, zip diff --git a/pandas/io/formats/printing.py b/pandas/io/formats/printing.py index ed5e117bb932d..17b8fb436ccb3 100644 --- a/pandas/io/formats/printing.py +++ b/pandas/io/formats/printing.py @@ -4,7 +4,7 @@ import sys -from pandas._config.config import get_option +from pandas._config import get_option from pandas.compat import u diff --git a/pandas/io/formats/style.py b/pandas/io/formats/style.py index f839cd6bea717..0860989a03ba3 100644 --- a/pandas/io/formats/style.py +++ b/pandas/io/formats/style.py @@ -12,7 +12,7 @@ import numpy as np -from pandas._config.config import get_option +from pandas._config import get_option from pandas.compat import range from pandas.util._decorators import Appender diff --git a/pandas/io/pytables.py b/pandas/io/pytables.py index 656b5b4e04756..9c1b042b2e2d1 100644 --- a/pandas/io/pytables.py +++ b/pandas/io/pytables.py @@ -15,8 +15,7 @@ import numpy as np -from pandas._config import config -from pandas._config.config import get_option +from pandas._config import config, get_option from pandas._libs import lib, writers as libwriters from pandas._libs.tslibs import timezones diff --git a/pandas/plotting/_core.py b/pandas/plotting/_core.py index e01705b6ac4ad..11ef47482fc15 100644 --- a/pandas/plotting/_core.py +++ b/pandas/plotting/_core.py @@ -9,7 +9,7 @@ import numpy as np -from pandas._config.config import get_option +from pandas._config import get_option import pandas.compat as compat from pandas.compat import lrange, map, range, string_types, zip From d82c15d91a66d7c2c0411c076c6575cfd02f4dde Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Fri, 22 Mar 2019 10:47:32 -0700 Subject: [PATCH 07/11] fixup import --- pandas/_config/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pandas/_config/__init__.py b/pandas/_config/__init__.py index 25a3d1b7a2e5e..3600b3a94a8b8 100644 --- a/pandas/_config/__init__.py +++ b/pandas/_config/__init__.py @@ -3,4 +3,5 @@ should have no intra-pandas dependencies. """ __all__ = ["config", "get_option"] -from pandas._config import config, get_option +from pandas._config import config +from pandas._config.config import get_option \ No newline at end of file From 11a7117fb0b277126db8d4b909c50ae2856856eb Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Fri, 22 Mar 2019 10:58:26 -0700 Subject: [PATCH 08/11] flake8 fixup --- pandas/_config/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/_config/__init__.py b/pandas/_config/__init__.py index 3600b3a94a8b8..d716a79aba9c4 100644 --- a/pandas/_config/__init__.py +++ b/pandas/_config/__init__.py @@ -4,4 +4,4 @@ """ __all__ = ["config", "get_option"] from pandas._config import config -from pandas._config.config import get_option \ No newline at end of file +from pandas._config.config import get_option From 78dc045e84822c22460f967b70eb2997f10ae9ad Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Fri, 22 Mar 2019 12:54:45 -0700 Subject: [PATCH 09/11] put more in __all__ --- pandas/__init__.py | 4 ++-- pandas/_config/__init__.py | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/pandas/__init__.py b/pandas/__init__.py index 064433c99853e..cdf7dafba0e75 100644 --- a/pandas/__init__.py +++ b/pandas/__init__.py @@ -36,8 +36,8 @@ from datetime import datetime -from pandas._config.config import (get_option, set_option, reset_option, - describe_option, option_context, options) +from pandas._config import (get_option, set_option, reset_option, + describe_option, option_context, options) # let init-time option registration happen import pandas.core.config_init diff --git a/pandas/_config/__init__.py b/pandas/_config/__init__.py index d716a79aba9c4..78434876b29fb 100644 --- a/pandas/_config/__init__.py +++ b/pandas/_config/__init__.py @@ -2,6 +2,9 @@ pandas._config is considered explicitly upstream of everything else in pandas, should have no intra-pandas dependencies. """ -__all__ = ["config", "get_option"] +__all__ = ["config", "get_option", "set_option", "reset_option", + "describe_option", "option_context", "options"] from pandas._config import config -from pandas._config.config import get_option +from pandas._config.config import ( + describe_option, get_option, option_context, options, reset_option, + set_option) From 62b01fbd4152dae85fb3591fa74adc12c856152c Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Sat, 23 Mar 2019 14:45:49 -0700 Subject: [PATCH 10/11] update imports in tests --- pandas/tests/arrays/categorical/test_repr.py | 6 ++---- pandas/tests/config/test_config.py | 2 +- pandas/tests/groupby/test_transform.py | 4 +--- pandas/tests/indexes/multi/test_format.py | 2 +- pandas/tests/io/formats/test_format.py | 6 ++---- pandas/tests/io/test_excel.py | 4 +--- pandas/tests/sparse/test_format.py | 3 +-- 7 files changed, 9 insertions(+), 18 deletions(-) diff --git a/pandas/tests/arrays/categorical/test_repr.py b/pandas/tests/arrays/categorical/test_repr.py index be679c5db9526..e46486d102ee5 100644 --- a/pandas/tests/arrays/categorical/test_repr.py +++ b/pandas/tests/arrays/categorical/test_repr.py @@ -2,13 +2,11 @@ import numpy as np -from pandas._config.config import option_context - from pandas.compat import u from pandas import ( - Categorical, CategoricalIndex, Series, date_range, period_range, - timedelta_range) + Categorical, CategoricalIndex, Series, date_range, option_context, + period_range, timedelta_range) from pandas.tests.arrays.categorical.common import TestCategorical diff --git a/pandas/tests/config/test_config.py b/pandas/tests/config/test_config.py index 0a936ff8db473..2fa277f000ec0 100644 --- a/pandas/tests/config/test_config.py +++ b/pandas/tests/config/test_config.py @@ -14,7 +14,7 @@ class TestConfig(object): def setup_class(cls): from copy import deepcopy - cls.cf = pd._config.config + cls.cf = pd.config cls.gc = deepcopy(getattr(cls.cf, '_global_config')) cls.do = deepcopy(getattr(cls.cf, '_deprecated_options')) cls.ro = deepcopy(getattr(cls.cf, '_registered_options')) diff --git a/pandas/tests/groupby/test_transform.py b/pandas/tests/groupby/test_transform.py index 80ef92e86f63f..ff0dd6b67754b 100644 --- a/pandas/tests/groupby/test_transform.py +++ b/pandas/tests/groupby/test_transform.py @@ -3,8 +3,6 @@ import numpy as np import pytest -from pandas._config.config import option_context - from pandas._libs import groupby from pandas.compat import StringIO @@ -446,7 +444,7 @@ def f(group): assert result['d'].dtype == np.float64 # this is by definition a mutating operation! - with option_context('mode.chained_assignment', None): + with pd.option_context('mode.chained_assignment', None): for key, group in grouped: res = f(group) assert_frame_equal(res, result.loc[key]) diff --git a/pandas/tests/indexes/multi/test_format.py b/pandas/tests/indexes/multi/test_format.py index 426f69172456e..06ae5f53bf1a9 100644 --- a/pandas/tests/indexes/multi/test_format.py +++ b/pandas/tests/indexes/multi/test_format.py @@ -54,7 +54,7 @@ def test_format_sparse_display(): def test_repr_with_unicode_data(): - with pd._config.config.option_context("display.encoding", 'UTF-8'): + with pd.option_context("display.encoding", 'UTF-8'): d = {"a": [u("\u05d0"), 2, 3], "b": [4, 5, 6], "c": [7, 8, 9]} index = pd.DataFrame(d).set_index(["a", "b"]).index assert "\\u" not in repr(index) # we don't want unicode-escaped diff --git a/pandas/tests/io/formats/test_format.py b/pandas/tests/io/formats/test_format.py index aefd9d084f885..1857e3ec17c4c 100644 --- a/pandas/tests/io/formats/test_format.py +++ b/pandas/tests/io/formats/test_format.py @@ -20,16 +20,14 @@ import pytest import pytz -from pandas._config.config import ( - get_option, option_context, reset_option, set_option) - import pandas.compat as compat from pandas.compat import ( StringIO, is_platform_32bit, is_platform_windows, lrange, lzip, u) import pandas as pd from pandas import ( - DataFrame, Index, MultiIndex, NaT, Series, Timestamp, date_range, read_csv) + DataFrame, Index, MultiIndex, NaT, Series, Timestamp, date_range, + get_option, option_context, read_csv, reset_option, set_option) import pandas.util.testing as tm import pandas.io.formats.format as fmt diff --git a/pandas/tests/io/test_excel.py b/pandas/tests/io/test_excel.py index c2e22c038f802..e3bd4f182a980 100644 --- a/pandas/tests/io/test_excel.py +++ b/pandas/tests/io/test_excel.py @@ -10,13 +10,11 @@ from numpy import nan import pytest -from pandas._config.config import get_option, set_option - from pandas.compat import PY36, BytesIO, iteritems, u import pandas.util._test_decorators as td import pandas as pd -from pandas import DataFrame, Index, MultiIndex, Series +from pandas import DataFrame, Index, MultiIndex, Series, get_option, set_option import pandas.util.testing as tm from pandas.util.testing import ensure_clean, makeCustomDataframe as mkdf diff --git a/pandas/tests/sparse/test_format.py b/pandas/tests/sparse/test_format.py index a0a6691ab905e..036d3401dba40 100644 --- a/pandas/tests/sparse/test_format.py +++ b/pandas/tests/sparse/test_format.py @@ -3,11 +3,10 @@ import numpy as np -from pandas._config.config import option_context - from pandas.compat import is_platform_32bit, is_platform_windows import pandas as pd +from pandas import option_context import pandas.util.testing as tm use_32bit_repr = is_platform_windows() or is_platform_32bit() From 33259498076a9701593005850f46d42035865c51 Mon Sep 17 00:00:00 2001 From: Brock Mendel Date: Sat, 23 Mar 2019 18:30:02 -0700 Subject: [PATCH 11/11] update import --- pandas/tests/config/test_config.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pandas/tests/config/test_config.py b/pandas/tests/config/test_config.py index 2fa277f000ec0..639d4adb3a4d3 100644 --- a/pandas/tests/config/test_config.py +++ b/pandas/tests/config/test_config.py @@ -3,6 +3,7 @@ import pytest +from pandas._config import config as cf from pandas._config.config import OptionError import pandas as pd @@ -14,7 +15,7 @@ class TestConfig(object): def setup_class(cls): from copy import deepcopy - cls.cf = pd.config + cls.cf = cf cls.gc = deepcopy(getattr(cls.cf, '_global_config')) cls.do = deepcopy(getattr(cls.cf, '_deprecated_options')) cls.ro = deepcopy(getattr(cls.cf, '_registered_options'))