diff --git a/asv_bench/benchmarks/binary_ops.py b/asv_bench/benchmarks/binary_ops.py index 72700c3de282e..cc869996b49cd 100644 --- a/asv_bench/benchmarks/binary_ops.py +++ b/asv_bench/benchmarks/binary_ops.py @@ -1,5 +1,5 @@ from .pandas_vb_common import * -import pandas.computation.expressions as expr +import pandas.core.computation.expressions as expr class Ops(object): diff --git a/asv_bench/benchmarks/categoricals.py b/asv_bench/benchmarks/categoricals.py index 153107911ca2c..5b0dd126acdea 100644 --- a/asv_bench/benchmarks/categoricals.py +++ b/asv_bench/benchmarks/categoricals.py @@ -1,6 +1,6 @@ from .pandas_vb_common import * try: - from pandas.types.concat import union_categoricals + from pandas.core.dtypes.concat import union_categoricals except ImportError: pass diff --git a/asv_bench/benchmarks/eval.py b/asv_bench/benchmarks/eval.py index a0819e33dc254..ee091e57c6403 100644 --- a/asv_bench/benchmarks/eval.py +++ b/asv_bench/benchmarks/eval.py @@ -1,6 +1,6 @@ from .pandas_vb_common import * import pandas as pd -import pandas.computation.expressions as expr +import pandas.core.computation.expressions as expr class Eval(object): diff --git a/asv_bench/benchmarks/indexing.py b/asv_bench/benchmarks/indexing.py index a32c9f25a0f09..79844414f2746 100644 --- a/asv_bench/benchmarks/indexing.py +++ b/asv_bench/benchmarks/indexing.py @@ -1,6 +1,6 @@ from .pandas_vb_common import * try: - import pandas.computation.expressions as expr + import pandas.core.computation.expressions as expr except: expr = None diff --git a/asv_bench/benchmarks/sparse.py b/asv_bench/benchmarks/sparse.py index 717fe7218ceda..7d424592ed877 100644 --- a/asv_bench/benchmarks/sparse.py +++ b/asv_bench/benchmarks/sparse.py @@ -1,5 +1,5 @@ from .pandas_vb_common import * -import pandas.sparse.series +import pandas.core.sparse.series import scipy.sparse from pandas.core.sparse import SparseSeries, SparseDataFrame from pandas.core.sparse import SparseDataFrame @@ -37,7 +37,7 @@ def setup(self): self.A = scipy.sparse.coo_matrix(([3.0, 1.0, 2.0], ([1, 0, 0], [0, 2, 3])), shape=(100, 100)) def time_sparse_series_from_coo(self): - self.ss = pandas.sparse.series.SparseSeries.from_coo(self.A) + self.ss = pandas.core.sparse.series.SparseSeries.from_coo(self.A) class sparse_series_to_coo(object): diff --git a/ci/install_travis.sh b/ci/install_travis.sh index f71df979c9df0..09668cbccc9d2 100755 --- a/ci/install_travis.sh +++ b/ci/install_travis.sh @@ -123,6 +123,7 @@ if [ "$BUILD_TEST" ]; then # build & install testing echo ["Starting installation test."] + rm -rf dist python setup.py clean python setup.py build_ext --inplace python setup.py sdist --formats=gztar diff --git a/ci/script_multi.sh b/ci/script_multi.sh index 88ecaf344a410..663d2feb5be23 100755 --- a/ci/script_multi.sh +++ b/ci/script_multi.sh @@ -19,7 +19,11 @@ export PYTHONHASHSEED=$(python -c 'import random; print(random.randint(1, 429496 echo PYTHONHASHSEED=$PYTHONHASHSEED if [ "$BUILD_TEST" ]; then + echo "build-test" cd /tmp + pwd + conda list pandas + echo "running" python -c "import pandas; pandas.test(['-n 2'])" elif [ "$DOC" ]; then echo "We are not running pytest as this is a doc-build" diff --git a/doc/source/categorical.rst b/doc/source/categorical.rst index 411f973e9a71f..a508e84465107 100644 --- a/doc/source/categorical.rst +++ b/doc/source/categorical.rst @@ -673,7 +673,7 @@ will be the union of the categories being combined. .. ipython:: python - from pandas.types.concat import union_categoricals + from pandas.api.types import union_categoricals a = pd.Categorical(["b", "c"]) b = pd.Categorical(["a", "b"]) union_categoricals([a, b]) diff --git a/doc/source/whatsnew/v0.20.0.txt b/doc/source/whatsnew/v0.20.0.txt index 914995244fe5f..33d80f8347b0a 100644 --- a/doc/source/whatsnew/v0.20.0.txt +++ b/doc/source/whatsnew/v0.20.0.txt @@ -21,8 +21,11 @@ Highlights include: - Support for S3 handling now uses ``s3fs``, see :ref:`here ` - Google BigQuery support now uses the ``pandas-gbq`` library, see :ref:`here ` - Switched the test framework to use `pytest `__ (:issue:`13097`) -- The ``pandas.tools.plotting`` module has been deprecated, moved to ``pandas.plotting``. See :ref:`here ` +.. warning:: + + Pandas has changed the internal structure and layout of the codebase. + This can affect imports that are not from the top-level ``pandas.*`` namespace, please see the changes :ref:`here `. Check the :ref:`API Changes ` and :ref:`deprecations ` before updating. @@ -489,7 +492,7 @@ Other Enhancements - ``TimedeltaIndex`` now has a custom datetick formatter specifically designed for nanosecond level precision (:issue:`8711`) -- ``pd.types.concat.union_categoricals`` gained the ``ignore_ordered`` argument to allow ignoring the ordered attribute of unioned categoricals (:issue:`13410`). See the :ref:`categorical union docs ` for more information. +- ``pd.api.types.union_categoricals`` gained the ``ignore_ordered`` argument to allow ignoring the ordered attribute of unioned categoricals (:issue:`13410`). See the :ref:`categorical union docs ` for more information. - ``DataFrame.to_latex()`` and ``DataFrame.to_string()`` now allow optional header aliases. (:issue:`15536`) - Re-enable the ``parse_dates`` keyword of ``pd.read_excel()`` to parse string columns as dates (:issue:`14326`) - Added ``.empty`` property to subclasses of ``Index``. (:issue:`15270`) @@ -558,31 +561,6 @@ Using ``.iloc``. Here we will get the location of the 'A' column, then use *posi df.iloc[[0, 2], df.columns.get_loc('A')] -.. _whatsnew_0200.api_breaking.deprecate_plotting - -Deprecate .plotting -^^^^^^^^^^^^^^^^^^^ - -The ``pandas.tools.plotting`` module has been deprecated, in favor of the top level ``pandas.plotting`` module. All the public plotting functions are now available -from ``pandas.plotting`` (:issue:`12548`). - -Furthermore, the top-level ``pandas.scatter_matrix`` and ``pandas.plot_params`` are deprecated. -Users can import these from ``pandas.plotting`` as well. - -Previous script: - -.. code-block:: python - - pd.tools.plotting.scatter_matrix(df) - pd.scatter_matrix(df) - -Should be changed to: - -.. code-block:: python - - pd.plotting.scatter_matrix(df) - - .. _whatsnew_0200.api_breaking.deprecate_panel: Deprecate Panel @@ -1026,34 +1004,6 @@ New Behavior: In [11]: index.memory_usage(deep=True) Out[11]: 260 -.. _whatsnew_0200.api_breaking.extensions: - -Extension Modules Moved -^^^^^^^^^^^^^^^^^^^^^^^ - -Some formerly public c/c++/cython extension modules have been moved and/or renamed. These are all removed from the public API. -If indicated, a deprecation warning will be issued if you reference that module. (:issue:`12588`) - -.. csv-table:: - :header: "Previous Location", "New Location", "Deprecated" - :widths: 30, 30, 4 - - "pandas.lib", "pandas._libs.lib", "X" - "pandas.tslib", "pandas._libs.tslib", "X" - "pandas._join", "pandas._libs.join", "" - "pandas._period", "pandas._libs.period", "" - "pandas.msgpack", "pandas.io.msgpack", "" - "pandas.index", "pandas._libs.index", "" - "pandas.algos", "pandas._libs.algos", "" - "pandas.hashtable", "pandas._libs.hashtable", "" - "pandas.json", "pandas.io.json.libjson", "X" - "pandas.parser", "pandas.io.libparsers", "X" - "pandas.io.sas.saslib", "pandas.io.sas.libsas", "" - "pandas._testing", "pandas.util.libtesting", "" - "pandas._sparse", "pandas.sparse.libsparse", "" - "pandas._hash", "pandas.tools.libhash", "" - "pandas._window", "pandas.core.libwindow", "" - .. _whatsnew_0200.api_breaking.sort_index: DataFrame.sort_index changes @@ -1354,10 +1304,74 @@ Other API Changes - ``DataFrame`` and ``Panel`` constructors with invalid input will now raise ``ValueError`` rather than ``pandas.core.common.PandasError``, if called with scalar inputs and not axes; The exception ``PandasError`` is removed as well. (:issue:`15541`) - The exception ``pandas.core.common.AmbiguousIndexError`` is removed as it is not referenced (:issue:`15541`) -.. _whatsnew_0200.develop: +.. _whatsnew_0200.privacy: + +Privacy Changes +~~~~~~~~~~~~~~~ + +.. _whatsnew_0200.privacy.extensions: + +Modules Privacy Has Changed +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Some formerly public python/c/c++/cython extension modules have been moved and/or renamed. These are all removed from the public API. +Furthermore, the ``pandas.core``, ``pandas.io``, and ``pandas.util`` top-level modules are now considered to be PRIVATE. +If indicated, a deprecation warning will be issued if you reference theses modules. (:issue:`12588`) + +.. csv-table:: + :header: "Previous Location", "New Location", "Deprecated" + :widths: 30, 30, 4 + + "pandas.lib", "pandas._libs.lib", "X" + "pandas.tslib", "pandas._libs.tslib", "X" + "pandas.computation", "pandas.core.computation", "" + "pandas.msgpack", "pandas.io.msgpack", "" + "pandas.index", "pandas._libs.index", "" + "pandas.algos", "pandas._libs.algos", "" + "pandas.hashtable", "pandas._libs.hashtable", "" + "pandas.json", "pandas.io.json.libjson", "X" + "pandas.parser", "pandas.io.libparsers", "X" + "pandas.sparse", "pandas.core.sparse", "" + "pandas.types", "pandas.core.dtypes", "" + "pandas.io.sas.saslib", "pandas.io.sas.libsas", "" + "pandas._join", "pandas._libs.join", "" + "pandas._hash", "pandas.tools.libhash", "" + "pandas._period", "pandas._libs.period", "" + "pandas._sparse", "pandas.core.sparse.libsparse", "" + "pandas._testing", "pandas.util.libtesting", "" + "pandas._window", "pandas.core.libwindow", "" + +- The function :func:`~pandas.api.type.union_categoricals` is now importable from ``pandas.api.types``, formerly from ``pandas.types.concat`` (:issue:`15998`) + +.. _whatsnew_0200.privacy.deprecate_plotting + +Deprecate .plotting +^^^^^^^^^^^^^^^^^^^ + +The ``pandas.tools.plotting`` module has been deprecated, in favor of the top level ``pandas.plotting`` module. All the public plotting functions are now available +from ``pandas.plotting`` (:issue:`12548`). + +Furthermore, the top-level ``pandas.scatter_matrix`` and ``pandas.plot_params`` are deprecated. +Users can import these from ``pandas.plotting`` as well. + +Previous script: + +.. code-block:: python + + pd.tools.plotting.scatter_matrix(df) + pd.scatter_matrix(df) + +Should be changed to: + +.. code-block:: python + + pd.plotting.scatter_matrix(df) + + +.. _whatsnew_0200.privacy.development: -Development Changes -~~~~~~~~~~~~~~~~~~~ +Other Developement Changes +^^^^^^^^^^^^^^^^^^^^^^^^^^ - Building pandas for development now requires ``cython >= 0.23`` (:issue:`14831`) - Require at least 0.23 version of cython to avoid problems with character encodings (:issue:`14699`) diff --git a/pandas/__init__.py b/pandas/__init__.py index bc38919f2c78c..4e1bcbd613965 100644 --- a/pandas/__init__.py +++ b/pandas/__init__.py @@ -40,10 +40,10 @@ import pandas.core.config_init from pandas.core.api import * -from pandas.sparse.api import * +from pandas.core.sparse.api import * from pandas.stats.api import * from pandas.tseries.api import * -from pandas.computation.api import * +from pandas.core.computation.api import * from pandas.tools.concat import concat from pandas.tools.merge import (merge, ordered_merge, diff --git a/pandas/api/types/__init__.py b/pandas/api/types/__init__.py index ee217543f0420..06fb5742ba067 100644 --- a/pandas/api/types/__init__.py +++ b/pandas/api/types/__init__.py @@ -1,4 +1,5 @@ """ public toolkit API """ -from pandas.types.api import * # noqa +from pandas.core.dtypes.api import * # noqa +from pandas.core.dtypes.concat import union_categoricals # noqa del np # noqa diff --git a/pandas/compat/numpy/function.py b/pandas/compat/numpy/function.py index 1dd22795533fc..d707ac66c4eab 100644 --- a/pandas/compat/numpy/function.py +++ b/pandas/compat/numpy/function.py @@ -22,7 +22,7 @@ from pandas.util.validators import (validate_args, validate_kwargs, validate_args_and_kwargs) from pandas.errors import UnsupportedFunctionCall -from pandas.types.common import is_integer, is_bool +from pandas.core.dtypes.common import is_integer, is_bool from pandas.compat import OrderedDict diff --git a/pandas/compat/pickle_compat.py b/pandas/compat/pickle_compat.py index 5b4fcad252192..e977fdc3a267d 100644 --- a/pandas/compat/pickle_compat.py +++ b/pandas/compat/pickle_compat.py @@ -67,16 +67,24 @@ def load_reduce(self): ('pandas.core.series', 'TimeSeries'): ('pandas.core.series', 'Series'), ('pandas.sparse.series', 'SparseTimeSeries'): - ('pandas.sparse.series', 'SparseSeries'), + ('pandas.core.sparse.series', 'SparseSeries'), # 12588, extensions moving ('pandas._sparse', 'BlockIndex'): - ('pandas.sparse.libsparse', 'BlockIndex'), + ('pandas.core.sparse.libsparse', 'BlockIndex'), ('pandas.tslib', 'Timestamp'): ('pandas._libs.tslib', 'Timestamp'), ('pandas.tslib', '__nat_unpickle'): ('pandas._libs.tslib', '__nat_unpickle'), - ('pandas._period', 'Period'): ('pandas._libs.period', 'Period') + ('pandas._period', 'Period'): ('pandas._libs.period', 'Period'), + + # 15998 top-level dirs moving + ('pandas.sparse.array', 'SparseArray'): + ('pandas.core.sparse.array', 'SparseArray'), + ('pandas.sparse.series', 'SparseSeries'): + ('pandas.core.sparse.series', 'SparseSeries'), + ('pandas.sparse.frame', 'SparseDataFrame'): + ('pandas.core.sparse.frame', 'SparseDataFrame') } diff --git a/pandas/conftest.py b/pandas/conftest.py index e0a15f740688b..caced6a0c568e 100644 --- a/pandas/conftest.py +++ b/pandas/conftest.py @@ -2,6 +2,7 @@ import numpy import pandas +import pandas.util.testing as tm def pytest_addoption(parser): @@ -30,3 +31,10 @@ def pytest_runtest_setup(item): def add_imports(doctest_namespace): doctest_namespace['np'] = numpy doctest_namespace['pd'] = pandas + + +@pytest.fixture(params=['bsr', 'coo', 'csc', 'csr', 'dia', 'dok', 'lil']) +def spmatrix(request): + tm._skip_if_no_scipy() + from scipy import sparse + return getattr(sparse, request.param + '_matrix') diff --git a/pandas/core/algorithms.py b/pandas/core/algorithms.py index 5d2db864dd48e..6df7fce631a3c 100644 --- a/pandas/core/algorithms.py +++ b/pandas/core/algorithms.py @@ -7,10 +7,11 @@ import numpy as np from pandas import compat, _np_version_under1p8 -from pandas.types.cast import maybe_promote -from pandas.types.generic import (ABCSeries, ABCIndex, - ABCIndexClass, ABCCategorical) -from pandas.types.common import ( +from pandas.core.dtypes.cast import maybe_promote +from pandas.core.dtypes.generic import ( + ABCSeries, ABCIndex, + ABCIndexClass, ABCCategorical) +from pandas.core.dtypes.common import ( is_unsigned_integer_dtype, is_signed_integer_dtype, is_integer_dtype, is_complex_dtype, is_categorical_dtype, is_sparse, @@ -25,9 +26,9 @@ _ensure_float64, _ensure_uint64, _ensure_int64) from pandas.compat.numpy import _np_version_under1p10 -from pandas.types.missing import isnull +from pandas.core.dtypes.missing import isnull -import pandas.core.common as com +from pandas.core import common as com from pandas.compat import string_types from pandas._libs import algos, lib, hashtable as htable from pandas._libs.tslib import iNaT diff --git a/pandas/core/api.py b/pandas/core/api.py index ea5be17ef3aaf..8e8969e1f6b26 100644 --- a/pandas/core/api.py +++ b/pandas/core/api.py @@ -5,7 +5,7 @@ import numpy as np from pandas.core.algorithms import factorize, unique, value_counts -from pandas.types.missing import isnull, notnull +from pandas.core.dtypes.missing import isnull, notnull from pandas.core.categorical import Categorical from pandas.core.groupby import Grouper from pandas.formats.format import set_eng_float_format diff --git a/pandas/core/base.py b/pandas/core/base.py index 33c95197debdc..e30751a6582f9 100644 --- a/pandas/core/base.py +++ b/pandas/core/base.py @@ -6,9 +6,9 @@ from pandas.compat import builtins import numpy as np -from pandas.types.missing import isnull -from pandas.types.generic import ABCDataFrame, ABCSeries, ABCIndexClass -from pandas.types.common import is_object_dtype, is_list_like, is_scalar +from pandas.core.dtypes.missing import isnull +from pandas.core.dtypes.generic import ABCDataFrame, ABCSeries, ABCIndexClass +from pandas.core.dtypes.common import is_object_dtype, is_list_like, is_scalar from pandas.util.validators import validate_bool_kwarg from pandas.core import common as com @@ -725,7 +725,7 @@ def _aggregate_multiple_funcs(self, arg, _level, _axis): # we are concatting non-NDFrame objects, # e.g. a list of scalars - from pandas.types.cast import is_nested_object + from pandas.core.dtypes.cast import is_nested_object from pandas import Series result = Series(results, index=keys, name=self.name) if is_nested_object(result): diff --git a/pandas/core/categorical.py b/pandas/core/categorical.py index 906e8efafe4af..d1f060113cf1d 100644 --- a/pandas/core/categorical.py +++ b/pandas/core/categorical.py @@ -8,21 +8,24 @@ from pandas.compat import u, lzip from pandas._libs import lib, algos as libalgos -from pandas.types.generic import ABCSeries, ABCIndexClass, ABCCategoricalIndex -from pandas.types.missing import isnull, notnull -from pandas.types.cast import (maybe_infer_to_datetimelike, - coerce_indexer_dtype) -from pandas.types.dtypes import CategoricalDtype -from pandas.types.common import (_ensure_int64, - _ensure_object, - _ensure_platform_int, - is_dtype_equal, - is_datetimelike, - is_categorical, - is_categorical_dtype, - is_integer_dtype, is_bool, - is_list_like, is_sequence, - is_scalar) +from pandas.core.dtypes.generic import ( + ABCSeries, ABCIndexClass, ABCCategoricalIndex) +from pandas.core.dtypes.missing import isnull, notnull +from pandas.core.dtypes.cast import ( + maybe_infer_to_datetimelike, + coerce_indexer_dtype) +from pandas.core.dtypes.dtypes import CategoricalDtype +from pandas.core.dtypes.common import ( + _ensure_int64, + _ensure_object, + _ensure_platform_int, + is_dtype_equal, + is_datetimelike, + is_categorical, + is_categorical_dtype, + is_integer_dtype, is_bool, + is_list_like, is_sequence, + is_scalar) from pandas.core.common import is_null_slice from pandas.core.algorithms import factorize, take_1d, unique1d @@ -1215,7 +1218,7 @@ def value_counts(self, dropna=True): """ from numpy import bincount - from pandas.types.missing import isnull + from pandas.core.dtypes.missing import isnull from pandas.core.series import Series from pandas.core.index import CategoricalIndex diff --git a/pandas/core/common.py b/pandas/core/common.py index bf4acf1fbf257..39a5da0aa6912 100644 --- a/pandas/core/common.py +++ b/pandas/core/common.py @@ -13,12 +13,12 @@ from pandas import compat from pandas.compat import long, zip, iteritems from pandas.core.config import get_option -from pandas.types.generic import ABCSeries -from pandas.types.common import _NS_DTYPE -from pandas.types.inference import _iterable_not_string -from pandas.types.missing import isnull +from pandas.core.dtypes.generic import ABCSeries +from pandas.core.dtypes.common import _NS_DTYPE +from pandas.core.dtypes.inference import _iterable_not_string +from pandas.core.dtypes.missing import isnull from pandas.api import types -from pandas.types import common +from pandas.core.dtypes import common # compat from pandas.errors import ( # noqa @@ -60,7 +60,7 @@ def wrapper(*args, **kwargs): warnings.warn("pandas.core.common.{t} is deprecated. " "These are not longer public API functions, " "but can be imported from " - "pandas.types.common.{t} instead".format(t=t), + "pandas.api.types.{t} instead".format(t=t), DeprecationWarning, stacklevel=3) return getattr(common, t)(*args, **kwargs) return wrapper @@ -73,7 +73,7 @@ def wrapper(*args, **kwargs): def array_equivalent(*args, **kwargs): warnings.warn("'pandas.core.common.array_equivalent' is deprecated and " "is no longer public API", DeprecationWarning, stacklevel=2) - from pandas.types import missing + from pandas.core.dtypes import missing return missing.array_equivalent(*args, **kwargs) diff --git a/pandas/computation/__init__.py b/pandas/core/computation/__init__.py similarity index 100% rename from pandas/computation/__init__.py rename to pandas/core/computation/__init__.py diff --git a/pandas/computation/align.py b/pandas/core/computation/align.py similarity index 98% rename from pandas/computation/align.py rename to pandas/core/computation/align.py index b4c80f4d493af..1c75301082297 100644 --- a/pandas/computation/align.py +++ b/pandas/core/computation/align.py @@ -11,7 +11,7 @@ from pandas import compat from pandas.errors import PerformanceWarning from pandas.core.common import flatten -from pandas.computation.common import _result_type_many +from pandas.core.computation.common import _result_type_many def _align_core_single_unary_op(term): diff --git a/pandas/computation/api.py b/pandas/core/computation/api.py similarity index 74% rename from pandas/computation/api.py rename to pandas/core/computation/api.py index fe3dad015048e..a6fe5aae822df 100644 --- a/pandas/computation/api.py +++ b/pandas/core/computation/api.py @@ -1,6 +1,6 @@ # flake8: noqa -from pandas.computation.eval import eval +from pandas.core.computation.eval import eval # deprecation, xref #13790 @@ -10,5 +10,5 @@ def Expr(*args, **kwargs): warnings.warn("pd.Expr is deprecated as it is not " "applicable to user code", FutureWarning, stacklevel=2) - from pandas.computation.expr import Expr + from pandas.core.computation.expr import Expr return Expr(*args, **kwargs) diff --git a/pandas/computation/common.py b/pandas/core/computation/common.py similarity index 100% rename from pandas/computation/common.py rename to pandas/core/computation/common.py diff --git a/pandas/computation/engines.py b/pandas/core/computation/engines.py similarity index 95% rename from pandas/computation/engines.py rename to pandas/core/computation/engines.py index aebc5bb02d59d..675a3d5eca792 100644 --- a/pandas/computation/engines.py +++ b/pandas/core/computation/engines.py @@ -7,9 +7,10 @@ from pandas import compat from pandas.compat import map import pandas.formats.printing as printing -from pandas.computation.align import _align, _reconstruct_object -from pandas.computation.ops import (UndefinedVariableError, - _mathops, _reductions) +from pandas.core.computation.align import _align, _reconstruct_object +from pandas.core.computation.ops import ( + UndefinedVariableError, + _mathops, _reductions) _ne_builtins = frozenset(_mathops + _reductions) diff --git a/pandas/computation/eval.py b/pandas/core/computation/eval.py similarity index 97% rename from pandas/computation/eval.py rename to pandas/core/computation/eval.py index 5b21c753a71da..fc3986e317d13 100644 --- a/pandas/computation/eval.py +++ b/pandas/core/computation/eval.py @@ -6,11 +6,11 @@ import warnings import tokenize from pandas.formats.printing import pprint_thing -from pandas.computation import _NUMEXPR_INSTALLED -from pandas.computation.expr import Expr, _parsers, tokenize_string -from pandas.computation.scope import _ensure_scope +from pandas.core.computation import _NUMEXPR_INSTALLED +from pandas.core.computation.expr import Expr, _parsers, tokenize_string +from pandas.core.computation.scope import _ensure_scope from pandas.compat import string_types -from pandas.computation.engines import _engines +from pandas.core.computation.engines import _engines from pandas.util.validators import validate_bool_kwarg diff --git a/pandas/computation/expr.py b/pandas/core/computation/expr.py similarity index 98% rename from pandas/computation/expr.py rename to pandas/core/computation/expr.py index e78806b38c667..01c5d1f6f100c 100644 --- a/pandas/computation/expr.py +++ b/pandas/core/computation/expr.py @@ -14,12 +14,13 @@ from pandas.core import common as com import pandas.formats.printing as printing from pandas.tools.util import compose -from pandas.computation.ops import (_cmp_ops_syms, _bool_ops_syms, - _arith_ops_syms, _unary_ops_syms, is_term) -from pandas.computation.ops import _reductions, _mathops, _LOCAL_TAG -from pandas.computation.ops import Op, BinOp, UnaryOp, Term, Constant, Div -from pandas.computation.ops import UndefinedVariableError, FuncNode -from pandas.computation.scope import Scope +from pandas.core.computation.ops import ( + _cmp_ops_syms, _bool_ops_syms, + _arith_ops_syms, _unary_ops_syms, is_term) +from pandas.core.computation.ops import _reductions, _mathops, _LOCAL_TAG +from pandas.core.computation.ops import Op, BinOp, UnaryOp, Term, Constant, Div +from pandas.core.computation.ops import UndefinedVariableError, FuncNode +from pandas.core.computation.scope import Scope def tokenize_string(source): diff --git a/pandas/computation/expressions.py b/pandas/core/computation/expressions.py similarity index 99% rename from pandas/computation/expressions.py rename to pandas/core/computation/expressions.py index 8fd9ab3477b74..4eeefb183001e 100644 --- a/pandas/computation/expressions.py +++ b/pandas/core/computation/expressions.py @@ -9,7 +9,7 @@ import warnings import numpy as np from pandas.core.common import _values_from_object -from pandas.computation import _NUMEXPR_INSTALLED +from pandas.core.computation import _NUMEXPR_INSTALLED if _NUMEXPR_INSTALLED: import numexpr as ne diff --git a/pandas/computation/ops.py b/pandas/core/computation/ops.py similarity index 98% rename from pandas/computation/ops.py rename to pandas/core/computation/ops.py index 6ba2a21940d55..91c414bbc0ec1 100644 --- a/pandas/computation/ops.py +++ b/pandas/core/computation/ops.py @@ -7,14 +7,14 @@ import numpy as np -from pandas.types.common import is_list_like, is_scalar +from pandas.core.dtypes.common import is_list_like, is_scalar import pandas as pd from pandas.compat import PY3, string_types, text_type import pandas.core.common as com from pandas.formats.printing import pprint_thing, pprint_thing_encoded from pandas.core.base import StringMixin -from pandas.computation.common import _ensure_decoded, _result_type_many -from pandas.computation.scope import _DEFAULT_GLOBALS +from pandas.core.computation.common import _ensure_decoded, _result_type_many +from pandas.core.computation.scope import _DEFAULT_GLOBALS _reductions = 'sum', 'prod' diff --git a/pandas/computation/pytables.py b/pandas/core/computation/pytables.py similarity index 98% rename from pandas/computation/pytables.py rename to pandas/core/computation/pytables.py index 2a5056963fe8d..8d0f23e28c0a2 100644 --- a/pandas/computation/pytables.py +++ b/pandas/core/computation/pytables.py @@ -5,15 +5,15 @@ import numpy as np import pandas as pd -from pandas.types.common import is_list_like +from pandas.core.dtypes.common import is_list_like import pandas.core.common as com from pandas.compat import u, string_types, DeepChainMap from pandas.core.base import StringMixin from pandas.formats.printing import pprint_thing, pprint_thing_encoded -from pandas.computation import expr, ops -from pandas.computation.ops import is_term, UndefinedVariableError -from pandas.computation.expr import BaseExprVisitor -from pandas.computation.common import _ensure_decoded +from pandas.core.computation import expr, ops +from pandas.core.computation.ops import is_term, UndefinedVariableError +from pandas.core.computation.expr import BaseExprVisitor +from pandas.core.computation.common import _ensure_decoded from pandas.tseries.timedeltas import _coerce_scalar_to_timedelta_type diff --git a/pandas/computation/scope.py b/pandas/core/computation/scope.py similarity index 99% rename from pandas/computation/scope.py rename to pandas/core/computation/scope.py index 9ade755e0ff12..5a589473f64b7 100644 --- a/pandas/computation/scope.py +++ b/pandas/core/computation/scope.py @@ -15,7 +15,7 @@ import pandas as pd # noqa from pandas.compat import DeepChainMap, map, StringIO from pandas.core.base import StringMixin -import pandas.computation as compu +import pandas.core.computation as compu def _ensure_scope(level, global_dict=None, local_dict=None, resolvers=(), diff --git a/pandas/core/config_init.py b/pandas/core/config_init.py index cf2a653638e90..7307980c8312e 100644 --- a/pandas/core/config_init.py +++ b/pandas/core/config_init.py @@ -415,7 +415,7 @@ def mpl_style_cb(key): def use_inf_as_null_cb(key): - from pandas.types.missing import _use_inf_as_null + from pandas.core.dtypes.missing import _use_inf_as_null _use_inf_as_null(key) diff --git a/pandas/sparse/__init__.py b/pandas/core/dtypes/__init__.py similarity index 100% rename from pandas/sparse/__init__.py rename to pandas/core/dtypes/__init__.py diff --git a/pandas/types/api.py b/pandas/core/dtypes/api.py similarity index 100% rename from pandas/types/api.py rename to pandas/core/dtypes/api.py diff --git a/pandas/types/cast.py b/pandas/core/dtypes/cast.py similarity index 100% rename from pandas/types/cast.py rename to pandas/core/dtypes/cast.py diff --git a/pandas/types/common.py b/pandas/core/dtypes/common.py similarity index 100% rename from pandas/types/common.py rename to pandas/core/dtypes/common.py diff --git a/pandas/types/concat.py b/pandas/core/dtypes/concat.py similarity index 95% rename from pandas/types/concat.py rename to pandas/core/dtypes/concat.py index b098bbb75d984..ddff78c9d511f 100644 --- a/pandas/types/concat.py +++ b/pandas/core/dtypes/concat.py @@ -5,20 +5,21 @@ import numpy as np import pandas._libs.tslib as tslib from pandas import compat -from pandas.core.algorithms import take_1d -from .common import (is_categorical_dtype, - is_sparse, - is_datetimetz, - is_datetime64_dtype, - is_timedelta64_dtype, - is_period_dtype, - is_object_dtype, - is_bool_dtype, - is_dtype_equal, - _NS_DTYPE, - _TD_DTYPE) -from pandas.types.generic import (ABCDatetimeIndex, ABCTimedeltaIndex, - ABCPeriodIndex) +from pandas.core.dtypes.common import ( + is_categorical_dtype, + is_sparse, + is_datetimetz, + is_datetime64_dtype, + is_timedelta64_dtype, + is_period_dtype, + is_object_dtype, + is_bool_dtype, + is_dtype_equal, + _NS_DTYPE, + _TD_DTYPE) +from pandas.core.dtypes.generic import ( + ABCDatetimeIndex, ABCTimedeltaIndex, + ABCPeriodIndex) def get_dtype_kinds(l): @@ -68,7 +69,7 @@ def _get_series_result_type(result): if isinstance(result, dict): # concat Series with axis 1 if all(is_sparse(c) for c in compat.itervalues(result)): - from pandas.sparse.api import SparseDataFrame + from pandas.core.sparse.api import SparseDataFrame return SparseDataFrame else: from pandas.core.frame import DataFrame @@ -76,7 +77,7 @@ def _get_series_result_type(result): elif is_sparse(result): # concat Series with axis 1 - from pandas.sparse.api import SparseSeries + from pandas.core.sparse.api import SparseSeries return SparseSeries else: from pandas.core.series import Series @@ -90,7 +91,7 @@ def _get_frame_result_type(result, objs): otherwise, return 1st obj """ if any(b.is_sparse for b in result.blocks): - from pandas.sparse.api import SparseDataFrame + from pandas.core.sparse.api import SparseDataFrame return SparseDataFrame else: return objs[0] @@ -276,6 +277,8 @@ def _maybe_unwrap(x): if sort_categories and not categories.is_monotonic_increasing: categories = categories.sort_values() indexer = categories.get_indexer(first.categories) + + from pandas.core.algorithms import take_1d new_codes = take_1d(indexer, new_codes, fill_value=-1) elif ignore_order or all(not c.ordered for c in to_union): # different categories - union and recode @@ -288,6 +291,8 @@ def _maybe_unwrap(x): for c in to_union: if len(c.categories) > 0: indexer = categories.get_indexer(c.categories) + + from pandas.core.algorithms import take_1d new_codes.append(take_1d(indexer, c.codes, fill_value=-1)) else: # must be all NaN @@ -433,7 +438,7 @@ def _concat_sparse(to_concat, axis=0, typs=None): a single array, preserving the combined dtypes """ - from pandas.sparse.array import SparseArray, _make_index + from pandas.core.sparse.array import SparseArray, _make_index def convert_sparse(x, axis): # coerce to native type diff --git a/pandas/types/dtypes.py b/pandas/core/dtypes/dtypes.py similarity index 97% rename from pandas/types/dtypes.py rename to pandas/core/dtypes/dtypes.py index 7913950a597c9..59c23addd418e 100644 --- a/pandas/types/dtypes.py +++ b/pandas/core/dtypes/dtypes.py @@ -209,8 +209,15 @@ def __new__(cls, unit=None, tz=None): raise ValueError("DatetimeTZDtype constructor must have a tz " "supplied") + # hash with the actual tz if we can + # some cannot be hashed, so stringfy + try: + key = (unit, tz) + hash(key) + except TypeError: + key = (unit, str(tz)) + # set/retrieve from cache - key = (unit, str(tz)) try: return cls._cache[key] except KeyError: @@ -410,7 +417,7 @@ def __new__(cls, subtype=None): if m is not None: subtype = m.group('subtype') - from pandas.types.common import pandas_dtype + from pandas.core.dtypes.common import pandas_dtype try: subtype = pandas_dtype(subtype) except TypeError: diff --git a/pandas/types/generic.py b/pandas/core/dtypes/generic.py similarity index 100% rename from pandas/types/generic.py rename to pandas/core/dtypes/generic.py diff --git a/pandas/types/inference.py b/pandas/core/dtypes/inference.py similarity index 100% rename from pandas/types/inference.py rename to pandas/core/dtypes/inference.py diff --git a/pandas/types/missing.py b/pandas/core/dtypes/missing.py similarity index 100% rename from pandas/types/missing.py rename to pandas/core/dtypes/missing.py diff --git a/pandas/core/frame.py b/pandas/core/frame.py index a5256868ce419..3a5a0e7044e79 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -23,38 +23,40 @@ import numpy as np import numpy.ma as ma -from pandas.types.cast import (maybe_upcast, infer_dtype_from_scalar, - maybe_cast_to_datetime, - maybe_infer_to_datetimelike, - maybe_convert_platform, - maybe_downcast_to_dtype, - invalidate_string_dtypes, - coerce_to_dtypes, - maybe_upcast_putmask, - find_common_type) -from pandas.types.common import (is_categorical_dtype, - is_object_dtype, - is_extension_type, - is_datetimetz, - is_datetime64_any_dtype, - is_datetime64tz_dtype, - is_bool_dtype, - is_integer_dtype, - is_float_dtype, - is_integer, - is_scalar, - is_dtype_equal, - needs_i8_conversion, - _get_dtype_from_object, - _ensure_float, - _ensure_float64, - _ensure_int64, - _ensure_platform_int, - is_list_like, - is_iterator, - is_sequence, - is_named_tuple) -from pandas.types.missing import isnull, notnull +from pandas.core.dtypes.cast import ( + maybe_upcast, infer_dtype_from_scalar, + maybe_cast_to_datetime, + maybe_infer_to_datetimelike, + maybe_convert_platform, + maybe_downcast_to_dtype, + invalidate_string_dtypes, + coerce_to_dtypes, + maybe_upcast_putmask, + find_common_type) +from pandas.core.dtypes.common import ( + is_categorical_dtype, + is_object_dtype, + is_extension_type, + is_datetimetz, + is_datetime64_any_dtype, + is_datetime64tz_dtype, + is_bool_dtype, + is_integer_dtype, + is_float_dtype, + is_integer, + is_scalar, + is_dtype_equal, + needs_i8_conversion, + _get_dtype_from_object, + _ensure_float, + _ensure_float64, + _ensure_int64, + _ensure_platform_int, + is_list_like, + is_iterator, + is_sequence, + is_named_tuple) +from pandas.core.dtypes.missing import isnull, notnull from pandas.core.common import (_try_sort, _default_index, @@ -70,9 +72,9 @@ create_block_manager_from_blocks) from pandas.core.series import Series from pandas.core.categorical import Categorical -import pandas.computation.expressions as expressions +import pandas.core.computation.expressions as expressions import pandas.core.algorithms as algorithms -from pandas.computation.eval import eval as _eval +from pandas.core.computation.eval import eval as _eval from pandas.compat import (range, map, zip, lrange, lmap, lzip, StringIO, u, OrderedDict, raise_with_traceback) from pandas import compat @@ -1269,7 +1271,7 @@ def to_sparse(self, fill_value=None, kind='block'): ------- y : SparseDataFrame """ - from pandas.core.sparse import SparseDataFrame + from pandas.core.sparse.frame import SparseDataFrame return SparseDataFrame(self._series, index=self.index, columns=self.columns, default_kind=kind, default_fill_value=fill_value) diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 316c9f5e2ccd8..167af8dfc0d8e 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -10,22 +10,23 @@ import pandas as pd from pandas._libs import tslib, lib -from pandas.types.common import (_coerce_to_dtype, - _ensure_int64, - needs_i8_conversion, - is_scalar, - is_integer, is_bool, - is_bool_dtype, - is_numeric_dtype, - is_datetime64_dtype, - is_timedelta64_dtype, - is_datetime64tz_dtype, - is_list_like, - is_dict_like, - is_re_compilable) -from pandas.types.cast import maybe_promote, maybe_upcast_putmask -from pandas.types.missing import isnull, notnull -from pandas.types.generic import ABCSeries, ABCPanel +from pandas.core.dtypes.common import ( + _coerce_to_dtype, + _ensure_int64, + needs_i8_conversion, + is_scalar, + is_integer, is_bool, + is_bool_dtype, + is_numeric_dtype, + is_datetime64_dtype, + is_timedelta64_dtype, + is_datetime64tz_dtype, + is_list_like, + is_dict_like, + is_re_compilable) +from pandas.core.dtypes.cast import maybe_promote, maybe_upcast_putmask +from pandas.core.dtypes.missing import isnull, notnull +from pandas.core.dtypes.generic import ABCSeries, ABCPanel from pandas.core.common import (_values_from_object, _maybe_box_datetimelike, diff --git a/pandas/core/groupby.py b/pandas/core/groupby.py index 27e256a8eb572..2cbcb9ef6efec 100644 --- a/pandas/core/groupby.py +++ b/pandas/core/groupby.py @@ -15,26 +15,27 @@ from pandas.compat.numpy import function as nv, _np_version_under1p8 from pandas.compat import set_function_name -from pandas.types.common import (is_numeric_dtype, - is_timedelta64_dtype, is_datetime64_dtype, - is_categorical_dtype, - is_interval_dtype, - is_datetimelike, - is_datetime64_any_dtype, - is_bool, is_integer_dtype, - is_complex_dtype, - is_bool_dtype, - is_scalar, - is_list_like, - needs_i8_conversion, - _ensure_float64, - _ensure_platform_int, - _ensure_int64, - _ensure_object, - _ensure_categorical, - _ensure_float) -from pandas.types.cast import maybe_downcast_to_dtype -from pandas.types.missing import isnull, notnull, _maybe_fill +from pandas.core.dtypes.common import ( + is_numeric_dtype, + is_timedelta64_dtype, is_datetime64_dtype, + is_categorical_dtype, + is_interval_dtype, + is_datetimelike, + is_datetime64_any_dtype, + is_bool, is_integer_dtype, + is_complex_dtype, + is_bool_dtype, + is_scalar, + is_list_like, + needs_i8_conversion, + _ensure_float64, + _ensure_platform_int, + _ensure_int64, + _ensure_object, + _ensure_categorical, + _ensure_float) +from pandas.core.dtypes.cast import maybe_downcast_to_dtype +from pandas.core.dtypes.missing import isnull, notnull, _maybe_fill from pandas.core.common import (_values_from_object, AbstractMethodError, _default_index) @@ -4079,7 +4080,7 @@ def _apply_to_column_groupbys(self, func): def count(self): """ Compute count of group, excluding missing values """ from functools import partial - from pandas.types.missing import _isnull_ndarraylike as isnull + from pandas.core.dtypes.missing import _isnull_ndarraylike as isnull data, _ = self._get_data_to_aggregate() ids, _, ngroups = self.grouper.group_info diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index dd8fa2d3ddc81..a01e3dc46dfe9 100755 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -4,17 +4,18 @@ import numpy as np from pandas.compat import range, zip import pandas.compat as compat -from pandas.types.generic import ABCDataFrame, ABCPanel, ABCSeries -from pandas.types.common import (is_integer_dtype, - is_integer, is_float, - is_list_like, - is_sequence, - is_iterator, - is_scalar, - is_sparse, - _is_unorderable_exception, - _ensure_platform_int) -from pandas.types.missing import isnull, _infer_fill_value +from pandas.core.dtypes.generic import ABCDataFrame, ABCPanel, ABCSeries +from pandas.core.dtypes.common import ( + is_integer_dtype, + is_integer, is_float, + is_list_like, + is_sequence, + is_iterator, + is_scalar, + is_sparse, + _is_unorderable_exception, + _ensure_platform_int) +from pandas.core.dtypes.missing import isnull, _infer_fill_value from pandas.core.index import Index, MultiIndex diff --git a/pandas/core/internals.py b/pandas/core/internals.py index 57361886eab8c..f7d7efd66f8db 100644 --- a/pandas/core/internals.py +++ b/pandas/core/internals.py @@ -9,41 +9,45 @@ from pandas.core.base import PandasObject -from pandas.types.dtypes import (ExtensionDtype, DatetimeTZDtype, - CategoricalDtype) -from pandas.types.common import (_TD_DTYPE, _NS_DTYPE, - _ensure_int64, _ensure_platform_int, - is_integer, - is_dtype_equal, - is_timedelta64_dtype, - is_datetime64_dtype, is_datetimetz, is_sparse, - is_categorical, is_categorical_dtype, - is_integer_dtype, - is_datetime64tz_dtype, - is_object_dtype, - is_datetimelike_v_numeric, - is_float_dtype, is_numeric_dtype, - is_numeric_v_string_like, is_extension_type, - is_list_like, - is_re, - is_re_compilable, - is_scalar, - _get_dtype) -from pandas.types.cast import (maybe_downcast_to_dtype, - maybe_convert_string_to_object, - maybe_upcast, - maybe_convert_scalar, maybe_promote, - infer_dtype_from_scalar, - soft_convert_objects, - maybe_convert_objects, - astype_nansafe, - find_common_type) -from pandas.types.missing import (isnull, array_equivalent, - _is_na_compat, - is_null_datelike_scalar) -import pandas.types.concat as _concat - -from pandas.types.generic import ABCSeries +from pandas.core.dtypes.dtypes import ( + ExtensionDtype, DatetimeTZDtype, + CategoricalDtype) +from pandas.core.dtypes.common import ( + _TD_DTYPE, _NS_DTYPE, + _ensure_int64, _ensure_platform_int, + is_integer, + is_dtype_equal, + is_timedelta64_dtype, + is_datetime64_dtype, is_datetimetz, is_sparse, + is_categorical, is_categorical_dtype, + is_integer_dtype, + is_datetime64tz_dtype, + is_object_dtype, + is_datetimelike_v_numeric, + is_float_dtype, is_numeric_dtype, + is_numeric_v_string_like, is_extension_type, + is_list_like, + is_re, + is_re_compilable, + is_scalar, + _get_dtype) +from pandas.core.dtypes.cast import ( + maybe_downcast_to_dtype, + maybe_convert_string_to_object, + maybe_upcast, + maybe_convert_scalar, maybe_promote, + infer_dtype_from_scalar, + soft_convert_objects, + maybe_convert_objects, + astype_nansafe, + find_common_type) +from pandas.core.dtypes.missing import ( + isnull, array_equivalent, + _is_na_compat, + is_null_datelike_scalar) +import pandas.core.dtypes.concat as _concat + +from pandas.core.dtypes.generic import ABCSeries from pandas.core.common import is_null_slice import pandas.core.algorithms as algos @@ -54,12 +58,12 @@ from pandas.formats.printing import pprint_thing import pandas.core.missing as missing -from pandas.sparse.array import _maybe_to_sparse, SparseArray +from pandas.core.sparse.array import _maybe_to_sparse, SparseArray from pandas._libs import lib, tslib from pandas._libs.tslib import Timedelta from pandas._libs.lib import BlockPlacement -import pandas.computation.expressions as expressions +import pandas.core.computation.expressions as expressions from pandas.util.decorators import cache_readonly from pandas.util.validators import validate_bool_kwarg diff --git a/pandas/core/missing.py b/pandas/core/missing.py index 91039f3270af2..3010348423340 100644 --- a/pandas/core/missing.py +++ b/pandas/core/missing.py @@ -8,18 +8,19 @@ from pandas._libs import algos, lib from pandas.compat import range, string_types -from pandas.types.common import (is_numeric_v_string_like, - is_float_dtype, - is_datetime64_dtype, - is_datetime64tz_dtype, - is_integer_dtype, - is_scalar, - is_integer, - needs_i8_conversion, - _ensure_float64) - -from pandas.types.cast import infer_dtype_from_array -from pandas.types.missing import isnull +from pandas.core.dtypes.common import ( + is_numeric_v_string_like, + is_float_dtype, + is_datetime64_dtype, + is_datetime64tz_dtype, + is_integer_dtype, + is_scalar, + is_integer, + needs_i8_conversion, + _ensure_float64) + +from pandas.core.dtypes.cast import infer_dtype_from_array +from pandas.core.dtypes.missing import isnull def mask_missing(arr, values_to_mask): diff --git a/pandas/core/nanops.py b/pandas/core/nanops.py index 6ec94e69740a2..5ce302967de24 100644 --- a/pandas/core/nanops.py +++ b/pandas/core/nanops.py @@ -11,17 +11,18 @@ from pandas import compat from pandas._libs import tslib, algos, lib -from pandas.types.common import (_get_dtype, - is_float, is_scalar, - is_integer, is_complex, is_float_dtype, - is_complex_dtype, is_integer_dtype, - is_bool_dtype, is_object_dtype, - is_numeric_dtype, - is_datetime64_dtype, is_timedelta64_dtype, - is_datetime_or_timedelta_dtype, - is_int_or_datetime_dtype, is_any_int_dtype) -from pandas.types.cast import _int64_max, maybe_upcast_putmask -from pandas.types.missing import isnull, notnull +from pandas.core.dtypes.common import ( + _get_dtype, + is_float, is_scalar, + is_integer, is_complex, is_float_dtype, + is_complex_dtype, is_integer_dtype, + is_bool_dtype, is_object_dtype, + is_numeric_dtype, + is_datetime64_dtype, is_timedelta64_dtype, + is_datetime_or_timedelta_dtype, + is_int_or_datetime_dtype, is_any_int_dtype) +from pandas.core.dtypes.cast import _int64_max, maybe_upcast_putmask +from pandas.core.dtypes.missing import isnull, notnull from pandas.core.common import _values_from_object diff --git a/pandas/core/ops.py b/pandas/core/ops.py index 9e777fd94de66..50815498f40df 100644 --- a/pandas/core/ops.py +++ b/pandas/core/ops.py @@ -16,25 +16,26 @@ from pandas import compat from pandas.util.decorators import Appender -import pandas.computation.expressions as expressions +import pandas.core.computation.expressions as expressions from pandas.compat import bind_method import pandas.core.missing as missing from pandas.errors import PerformanceWarning from pandas.core.common import _values_from_object, _maybe_match_name -from pandas.types.missing import notnull, isnull -from pandas.types.common import (needs_i8_conversion, - is_datetimelike_v_numeric, - is_integer_dtype, is_categorical_dtype, - is_object_dtype, is_timedelta64_dtype, - is_datetime64_dtype, is_datetime64tz_dtype, - is_bool_dtype, is_datetimetz, - is_list_like, - is_scalar, - _ensure_object) -from pandas.types.cast import maybe_upcast_putmask, find_common_type -from pandas.types.generic import ABCSeries, ABCIndex, ABCPeriodIndex +from pandas.core.dtypes.missing import notnull, isnull +from pandas.core.dtypes.common import ( + needs_i8_conversion, + is_datetimelike_v_numeric, + is_integer_dtype, is_categorical_dtype, + is_object_dtype, is_timedelta64_dtype, + is_datetime64_dtype, is_datetime64tz_dtype, + is_bool_dtype, is_datetimetz, + is_list_like, + is_scalar, + _ensure_object) +from pandas.core.dtypes.cast import maybe_upcast_putmask, find_common_type +from pandas.core.dtypes.generic import ABCSeries, ABCIndex, ABCPeriodIndex # ----------------------------------------------------------------------------- # Functions that add arithmetic methods to objects, given arithmetic factory diff --git a/pandas/core/panel.py b/pandas/core/panel.py index 24f4d219fb9ca..76053b3bdb83d 100644 --- a/pandas/core/panel.py +++ b/pandas/core/panel.py @@ -6,13 +6,15 @@ import numpy as np import warnings -from pandas.types.cast import (infer_dtype_from_scalar, - maybe_cast_item) -from pandas.types.common import (is_integer, is_list_like, - is_string_like, is_scalar) -from pandas.types.missing import notnull - -import pandas.computation.expressions as expressions +from pandas.core.dtypes.cast import ( + infer_dtype_from_scalar, + maybe_cast_item) +from pandas.core.dtypes.common import ( + is_integer, is_list_like, + is_string_like, is_scalar) +from pandas.core.dtypes.missing import notnull + +import pandas.core.computation.expressions as expressions import pandas.core.common as com import pandas.core.ops as ops import pandas.core.missing as missing diff --git a/pandas/core/reshape.py b/pandas/core/reshape.py index b03c3d77928c7..b3a06d85967f2 100644 --- a/pandas/core/reshape.py +++ b/pandas/core/reshape.py @@ -7,19 +7,20 @@ import numpy as np -from pandas.types.common import (_ensure_platform_int, - is_list_like, is_bool_dtype, - needs_i8_conversion) -from pandas.types.cast import maybe_promote -from pandas.types.missing import notnull -import pandas.types.concat as _concat +from pandas.core.dtypes.common import ( + _ensure_platform_int, + is_list_like, is_bool_dtype, + needs_i8_conversion) +from pandas.core.dtypes.cast import maybe_promote +from pandas.core.dtypes.missing import notnull +import pandas.core.dtypes.concat as _concat from pandas.core.series import Series from pandas.core.frame import DataFrame -from pandas.core.sparse import SparseDataFrame, SparseSeries -from pandas.sparse.array import SparseArray -from pandas.sparse.libsparse import IntIndex +from pandas.core.sparse.api import SparseDataFrame, SparseSeries +from pandas.core.sparse.array import SparseArray +from pandas.core.sparse.libsparse import IntIndex from pandas.core.categorical import Categorical, _factorize_from_iterable from pandas.core.sorting import (get_group_index, get_compressed_ids, diff --git a/pandas/core/series.py b/pandas/core/series.py index 1cf537cf3c315..596dae4345cb3 100644 --- a/pandas/core/series.py +++ b/pandas/core/series.py @@ -13,26 +13,28 @@ import numpy as np import numpy.ma as ma -from pandas.types.common import (_coerce_to_dtype, is_categorical_dtype, - is_bool, - is_integer, is_integer_dtype, - is_float_dtype, - is_extension_type, is_datetimetz, - is_datetimelike, - is_datetime64tz_dtype, - is_timedelta64_dtype, - is_list_like, - is_hashable, - is_iterator, - is_dict_like, - is_scalar, - _is_unorderable_exception, - _ensure_platform_int) -from pandas.types.generic import ABCSparseArray, ABCDataFrame -from pandas.types.cast import (maybe_upcast, infer_dtype_from_scalar, - maybe_convert_platform, - maybe_cast_to_datetime, maybe_castable) -from pandas.types.missing import isnull, notnull +from pandas.core.dtypes.common import ( + _coerce_to_dtype, is_categorical_dtype, + is_bool, + is_integer, is_integer_dtype, + is_float_dtype, + is_extension_type, is_datetimetz, + is_datetimelike, + is_datetime64tz_dtype, + is_timedelta64_dtype, + is_list_like, + is_hashable, + is_iterator, + is_dict_like, + is_scalar, + _is_unorderable_exception, + _ensure_platform_int) +from pandas.core.dtypes.generic import ABCSparseArray, ABCDataFrame +from pandas.core.dtypes.cast import ( + maybe_upcast, infer_dtype_from_scalar, + maybe_convert_platform, + maybe_cast_to_datetime, maybe_castable) +from pandas.core.dtypes.missing import isnull, notnull from pandas.core.common import (is_bool_indexer, _default_index, @@ -255,7 +257,7 @@ def from_array(cls, arr, index=None, name=None, dtype=None, copy=False, fastpath=False): # return a sparse series here if isinstance(arr, ABCSparseArray): - from pandas.sparse.series import SparseSeries + from pandas.core.sparse.series import SparseSeries cls = SparseSeries return cls(arr, index=index, name=name, dtype=dtype, copy=copy, @@ -1130,7 +1132,7 @@ def to_sparse(self, kind='block', fill_value=None): ------- sp : SparseSeries """ - from pandas.core.sparse import SparseSeries + from pandas.core.sparse.series import SparseSeries return SparseSeries(self, kind=kind, fill_value=fill_value).__finalize__(self) @@ -2867,8 +2869,6 @@ def _sanitize_index(data, index, copy=False): data = data.asobject elif isinstance(data, DatetimeIndex): data = data._to_embed(keep_tz=True) - if copy: - data = data.copy() elif isinstance(data, np.ndarray): # coerce datetimelike types diff --git a/pandas/core/sorting.py b/pandas/core/sorting.py index e56a4f50de134..69b427df981b7 100644 --- a/pandas/core/sorting.py +++ b/pandas/core/sorting.py @@ -3,10 +3,11 @@ import numpy as np from pandas.compat import long from pandas.core.categorical import Categorical -from pandas.types.common import (_ensure_platform_int, - _ensure_int64, - is_categorical_dtype) -from pandas.types.missing import isnull +from pandas.core.dtypes.common import ( + _ensure_platform_int, + _ensure_int64, + is_categorical_dtype) +from pandas.core.dtypes.missing import isnull import pandas.core.algorithms as algorithms from pandas._libs import lib, algos, hashtable from pandas._libs.hashtable import unique_label_indices diff --git a/pandas/core/sparse.py b/pandas/core/sparse.py deleted file mode 100644 index 4fc329844d616..0000000000000 --- a/pandas/core/sparse.py +++ /dev/null @@ -1,10 +0,0 @@ -""" -Data structures for sparse float data. Life is made simpler by dealing only -with float64 data -""" - -# pylint: disable=W0611 -# flake8: noqa - -from pandas.sparse.series import SparseSeries -from pandas.sparse.frame import SparseDataFrame diff --git a/pandas/tests/computation/__init__.py b/pandas/core/sparse/__init__.py similarity index 100% rename from pandas/tests/computation/__init__.py rename to pandas/core/sparse/__init__.py diff --git a/pandas/core/sparse/api.py b/pandas/core/sparse/api.py new file mode 100644 index 0000000000000..f79bb4886da4b --- /dev/null +++ b/pandas/core/sparse/api.py @@ -0,0 +1,6 @@ +# pylint: disable=W0611 +# flake8: noqa +from pandas.core.sparse.array import SparseArray +from pandas.core.sparse.list import SparseList +from pandas.core.sparse.series import SparseSeries +from pandas.core.sparse.frame import SparseDataFrame diff --git a/pandas/sparse/array.py b/pandas/core/sparse/array.py similarity index 97% rename from pandas/sparse/array.py rename to pandas/core/sparse/array.py index f149e724c19c3..74e9be54ae6df 100644 --- a/pandas/sparse/array.py +++ b/pandas/core/sparse/array.py @@ -14,20 +14,23 @@ from pandas.compat import range from pandas.compat.numpy import function as nv -from pandas.types.generic import ABCSparseArray, ABCSparseSeries -from pandas.types.common import (_ensure_platform_int, - is_float, is_integer, - is_integer_dtype, - is_bool_dtype, - is_list_like, - is_string_dtype, - is_scalar, is_dtype_equal) -from pandas.types.cast import (maybe_convert_platform, maybe_promote, - astype_nansafe, find_common_type) -from pandas.types.missing import isnull, notnull, na_value_for_dtype - -from pandas.sparse import libsparse as splib -from pandas.sparse.libsparse import SparseIndex, BlockIndex, IntIndex +from pandas.core.dtypes.generic import ( + ABCSparseArray, ABCSparseSeries) +from pandas.core.dtypes.common import ( + _ensure_platform_int, + is_float, is_integer, + is_integer_dtype, + is_bool_dtype, + is_list_like, + is_string_dtype, + is_scalar, is_dtype_equal) +from pandas.core.dtypes.cast import ( + maybe_convert_platform, maybe_promote, + astype_nansafe, find_common_type) +from pandas.core.dtypes.missing import isnull, notnull, na_value_for_dtype + +from pandas.core.sparse import libsparse as splib +from pandas.core.sparse.libsparse import SparseIndex, BlockIndex, IntIndex from pandas._libs import index as libindex import pandas.core.algorithms as algos import pandas.core.ops as ops diff --git a/pandas/sparse/frame.py b/pandas/core/sparse/frame.py similarity index 99% rename from pandas/sparse/frame.py rename to pandas/core/sparse/frame.py index 455d120cca640..05c97fac4b53a 100644 --- a/pandas/sparse/frame.py +++ b/pandas/core/sparse/frame.py @@ -10,9 +10,9 @@ from pandas import compat import numpy as np -from pandas.types.missing import isnull, notnull -from pandas.types.cast import maybe_upcast, find_common_type -from pandas.types.common import _ensure_platform_int, is_scipy_sparse +from pandas.core.dtypes.missing import isnull, notnull +from pandas.core.dtypes.cast import maybe_upcast, find_common_type +from pandas.core.dtypes.common import _ensure_platform_int, is_scipy_sparse from pandas.core.common import _try_sort from pandas.compat.numpy import function as nv @@ -24,8 +24,8 @@ from pandas.core.internals import (BlockManager, create_block_manager_from_arrays) import pandas.core.generic as generic -from pandas.sparse.series import SparseSeries, SparseArray -from pandas.sparse.libsparse import BlockIndex, get_blocks +from pandas.core.sparse.series import SparseSeries, SparseArray +from pandas.core.sparse.libsparse import BlockIndex, get_blocks from pandas.util.decorators import Appender import pandas.core.ops as ops diff --git a/pandas/sparse/list.py b/pandas/core/sparse/list.py similarity index 96% rename from pandas/sparse/list.py rename to pandas/core/sparse/list.py index 54ebf5e51045d..381a811ac828b 100644 --- a/pandas/sparse/list.py +++ b/pandas/core/sparse/list.py @@ -3,10 +3,10 @@ from pandas.core.base import PandasObject from pandas.formats.printing import pprint_thing -from pandas.types.common import is_scalar -from pandas.sparse.array import SparseArray +from pandas.core.dtypes.common import is_scalar +from pandas.core.sparse.array import SparseArray from pandas.util.validators import validate_bool_kwarg -import pandas.sparse.libsparse as splib +from pandas.core.sparse import libsparse as splib class SparseList(PandasObject): diff --git a/pandas/sparse/scipy_sparse.py b/pandas/core/sparse/scipy_sparse.py similarity index 100% rename from pandas/sparse/scipy_sparse.py rename to pandas/core/sparse/scipy_sparse.py diff --git a/pandas/sparse/series.py b/pandas/core/sparse/series.py similarity index 98% rename from pandas/sparse/series.py rename to pandas/core/sparse/series.py index 7ec42f02c3998..a77bce8f06783 100644 --- a/pandas/sparse/series.py +++ b/pandas/core/sparse/series.py @@ -8,8 +8,8 @@ import numpy as np import warnings -from pandas.types.missing import isnull, notnull -from pandas.types.common import is_scalar +from pandas.core.dtypes.missing import isnull, notnull +from pandas.core.dtypes.common import is_scalar from pandas.core.common import _values_from_object, _maybe_match_name from pandas.compat.numpy import function as nv @@ -23,13 +23,15 @@ import pandas._libs.index as _index from pandas.util.decorators import Appender -from pandas.sparse.array import (make_sparse, _sparse_array_op, SparseArray, - _make_index) -from pandas.sparse.libsparse import BlockIndex, IntIndex -import pandas.sparse.libsparse as splib +from pandas.core.sparse.array import ( + make_sparse, _sparse_array_op, SparseArray, + _make_index) +from pandas.core.sparse.libsparse import BlockIndex, IntIndex +import pandas.core.sparse.libsparse as splib -from pandas.sparse.scipy_sparse import (_sparse_series_to_coo, - _coo_to_sparse_series) +from pandas.core.sparse.scipy_sparse import ( + _sparse_series_to_coo, + _coo_to_sparse_series) _shared_doc_kwargs = dict(axes='index', klass='SparseSeries', @@ -264,7 +266,7 @@ def _constructor(self): @property def _constructor_expanddim(self): - from pandas.sparse.api import SparseDataFrame + from pandas.core.sparse.api import SparseDataFrame return SparseDataFrame @property diff --git a/pandas/sparse/sparse.pyx b/pandas/core/sparse/sparse.pyx similarity index 100% rename from pandas/sparse/sparse.pyx rename to pandas/core/sparse/sparse.pyx diff --git a/pandas/sparse/sparse_op_helper.pxi.in b/pandas/core/sparse/sparse_op_helper.pxi.in similarity index 100% rename from pandas/sparse/sparse_op_helper.pxi.in rename to pandas/core/sparse/sparse_op_helper.pxi.in diff --git a/pandas/core/strings.py b/pandas/core/strings.py index 504d3dd47cc21..5082ac7f80fbf 100644 --- a/pandas/core/strings.py +++ b/pandas/core/strings.py @@ -1,16 +1,17 @@ import numpy as np from pandas.compat import zip -from pandas.types.generic import ABCSeries, ABCIndex -from pandas.types.missing import isnull, notnull -from pandas.types.common import (is_bool_dtype, - is_categorical_dtype, - is_object_dtype, - is_string_like, - is_list_like, - is_scalar, - is_integer, - is_re) +from pandas.core.dtypes.generic import ABCSeries, ABCIndex +from pandas.core.dtypes.missing import isnull, notnull +from pandas.core.dtypes.common import ( + is_bool_dtype, + is_categorical_dtype, + is_object_dtype, + is_string_like, + is_list_like, + is_scalar, + is_integer, + is_re) from pandas.core.common import _values_from_object from pandas.core.algorithms import take_1d diff --git a/pandas/core/window.py b/pandas/core/window.py index 5b84b075ce81a..6fdc05a13b773 100644 --- a/pandas/core/window.py +++ b/pandas/core/window.py @@ -12,20 +12,22 @@ from collections import defaultdict from datetime import timedelta -from pandas.types.generic import (ABCSeries, - ABCDataFrame, - ABCDatetimeIndex, - ABCTimedeltaIndex, - ABCPeriodIndex) -from pandas.types.common import (is_integer, - is_bool, - is_float_dtype, - is_integer_dtype, - needs_i8_conversion, - is_timedelta64_dtype, - is_list_like, - _ensure_float64, - is_scalar) +from pandas.core.dtypes.generic import ( + ABCSeries, + ABCDataFrame, + ABCDatetimeIndex, + ABCTimedeltaIndex, + ABCPeriodIndex) +from pandas.core.dtypes.common import ( + is_integer, + is_bool, + is_float_dtype, + is_integer_dtype, + needs_i8_conversion, + is_timedelta64_dtype, + is_list_like, + _ensure_float64, + is_scalar) import pandas as pd from pandas.core.base import (PandasObject, SelectionMixin, diff --git a/pandas/formats/format.py b/pandas/formats/format.py index 907198d98cf5b..aad6c182416f6 100644 --- a/pandas/formats/format.py +++ b/pandas/formats/format.py @@ -10,20 +10,21 @@ import sys -from pandas.types.missing import isnull, notnull -from pandas.types.common import (is_categorical_dtype, - is_float_dtype, - is_period_arraylike, - is_integer_dtype, - is_interval_dtype, - is_datetimetz, - is_integer, - is_float, - is_numeric_dtype, - is_datetime64_dtype, - is_timedelta64_dtype, - is_list_like) -from pandas.types.generic import ABCSparseArray +from pandas.core.dtypes.missing import isnull, notnull +from pandas.core.dtypes.common import ( + is_categorical_dtype, + is_float_dtype, + is_period_arraylike, + is_integer_dtype, + is_interval_dtype, + is_datetimetz, + is_integer, + is_float, + is_numeric_dtype, + is_datetime64_dtype, + is_timedelta64_dtype, + is_list_like) +from pandas.core.dtypes.generic import ABCSparseArray from pandas.core.base import PandasObject from pandas.core.index import Index, MultiIndex, _ensure_index from pandas import compat diff --git a/pandas/formats/printing.py b/pandas/formats/printing.py index 37bd4b63d6f7a..5ea47df2c817f 100644 --- a/pandas/formats/printing.py +++ b/pandas/formats/printing.py @@ -2,7 +2,7 @@ printing tools """ -from pandas.types.inference import is_sequence +from pandas.core.dtypes.inference import is_sequence from pandas import compat from pandas.compat import u from pandas.core.config import get_option diff --git a/pandas/formats/style.py b/pandas/formats/style.py index af02077bd5b41..3ca1d8259729d 100644 --- a/pandas/formats/style.py +++ b/pandas/formats/style.py @@ -19,7 +19,7 @@ "or `pip install Jinja2`" raise ImportError(msg) -from pandas.types.common import is_float, is_string_like +from pandas.core.dtypes.common import is_float, is_string_like import numpy as np import pandas as pd diff --git a/pandas/indexes/base.py b/pandas/indexes/base.py index 00ad4ca71cb9d..b0439e122ea9e 100644 --- a/pandas/indexes/base.py +++ b/pandas/indexes/base.py @@ -13,27 +13,28 @@ from pandas import compat -from pandas.types.generic import ABCSeries, ABCMultiIndex, ABCPeriodIndex -from pandas.types.missing import isnull, array_equivalent -from pandas.types.common import (_ensure_int64, - _ensure_object, - _ensure_categorical, - _ensure_platform_int, - is_integer, - is_float, - is_dtype_equal, - is_object_dtype, - is_categorical_dtype, - is_interval_dtype, - is_bool_dtype, - is_signed_integer_dtype, - is_unsigned_integer_dtype, - is_integer_dtype, is_float_dtype, - is_datetime64_any_dtype, - is_timedelta64_dtype, - needs_i8_conversion, - is_iterator, is_list_like, - is_scalar) +from pandas.core.dtypes.generic import ABCSeries, ABCMultiIndex, ABCPeriodIndex +from pandas.core.dtypes.missing import isnull, array_equivalent +from pandas.core.dtypes.common import ( + _ensure_int64, + _ensure_object, + _ensure_categorical, + _ensure_platform_int, + is_integer, + is_float, + is_dtype_equal, + is_object_dtype, + is_categorical_dtype, + is_interval_dtype, + is_bool_dtype, + is_signed_integer_dtype, + is_unsigned_integer_dtype, + is_integer_dtype, is_float_dtype, + is_datetime64_any_dtype, + is_timedelta64_dtype, + needs_i8_conversion, + is_iterator, is_list_like, + is_scalar) from pandas.core.common import (is_bool_indexer, _values_from_object, _asarray_tuplesafe) @@ -44,7 +45,7 @@ deprecate, deprecate_kwarg) from pandas.indexes.frozen import FrozenList import pandas.core.common as com -import pandas.types.concat as _concat +import pandas.core.dtypes.concat as _concat import pandas.core.missing as missing import pandas.core.algorithms as algos from pandas.formats.printing import pprint_thing diff --git a/pandas/indexes/category.py b/pandas/indexes/category.py index 6c57b2ed83705..5f9d106189767 100644 --- a/pandas/indexes/category.py +++ b/pandas/indexes/category.py @@ -3,14 +3,15 @@ from pandas import compat from pandas.compat.numpy import function as nv -from pandas.types.generic import ABCCategorical, ABCSeries -from pandas.types.common import (is_categorical_dtype, - _ensure_platform_int, - is_list_like, - is_interval_dtype, - is_scalar) +from pandas.core.dtypes.generic import ABCCategorical, ABCSeries +from pandas.core.dtypes.common import ( + is_categorical_dtype, + _ensure_platform_int, + is_list_like, + is_interval_dtype, + is_scalar) from pandas.core.common import _asarray_tuplesafe -from pandas.types.missing import array_equivalent +from pandas.core.dtypes.missing import array_equivalent from pandas.util.decorators import Appender, cache_readonly diff --git a/pandas/indexes/frozen.py b/pandas/indexes/frozen.py index ab1228c008ca8..19b04319b37f9 100644 --- a/pandas/indexes/frozen.py +++ b/pandas/indexes/frozen.py @@ -10,7 +10,7 @@ import numpy as np from pandas.core.base import PandasObject -from pandas.types.cast import coerce_indexer_dtype +from pandas.core.dtypes.cast import coerce_indexer_dtype from pandas.formats.printing import pprint_thing diff --git a/pandas/indexes/interval.py b/pandas/indexes/interval.py index 63315ef861d12..88a2b0ff9595b 100644 --- a/pandas/indexes/interval.py +++ b/pandas/indexes/interval.py @@ -2,19 +2,20 @@ import numpy as np -from pandas.types.missing import notnull, isnull -from pandas.types.generic import ABCPeriodIndex -from pandas.types.dtypes import IntervalDtype -from pandas.types.common import (_ensure_platform_int, - is_list_like, - is_datetime_or_timedelta_dtype, - is_integer_dtype, - is_object_dtype, - is_categorical_dtype, - is_float_dtype, - is_interval_dtype, - is_scalar, - is_integer) +from pandas.core.dtypes.missing import notnull, isnull +from pandas.core.dtypes.generic import ABCPeriodIndex +from pandas.core.dtypes.dtypes import IntervalDtype +from pandas.core.dtypes.common import ( + _ensure_platform_int, + is_list_like, + is_datetime_or_timedelta_dtype, + is_integer_dtype, + is_object_dtype, + is_categorical_dtype, + is_float_dtype, + is_interval_dtype, + is_scalar, + is_integer) from pandas.indexes.base import (Index, _ensure_index, default_pprint, _index_shared_docs) diff --git a/pandas/indexes/multi.py b/pandas/indexes/multi.py index d1c8e0ba1cc4e..f410dbddb4428 100644 --- a/pandas/indexes/multi.py +++ b/pandas/indexes/multi.py @@ -12,13 +12,14 @@ from pandas.compat.numpy import function as nv from pandas import compat -from pandas.types.common import (_ensure_int64, - _ensure_platform_int, - is_object_dtype, - is_iterator, - is_list_like, - is_scalar) -from pandas.types.missing import isnull, array_equivalent +from pandas.core.dtypes.common import ( + _ensure_int64, + _ensure_platform_int, + is_object_dtype, + is_iterator, + is_list_like, + is_scalar) +from pandas.core.dtypes.missing import isnull, array_equivalent from pandas.errors import PerformanceWarning, UnsortedIndexError from pandas.core.common import (_values_from_object, is_bool_indexer, diff --git a/pandas/indexes/numeric.py b/pandas/indexes/numeric.py index 31258c785d9e8..2f68101520229 100644 --- a/pandas/indexes/numeric.py +++ b/pandas/indexes/numeric.py @@ -1,9 +1,10 @@ import numpy as np from pandas._libs import (index as libindex, algos as libalgos, join as libjoin) -from pandas.types.common import (is_dtype_equal, pandas_dtype, - is_float_dtype, is_object_dtype, - is_integer_dtype, is_scalar) +from pandas.core.dtypes.common import ( + is_dtype_equal, pandas_dtype, + is_float_dtype, is_object_dtype, + is_integer_dtype, is_scalar) from pandas.core.common import _asarray_tuplesafe, _values_from_object from pandas import compat diff --git a/pandas/indexes/range.py b/pandas/indexes/range.py index be68c97fb7890..1eedfcc619aec 100644 --- a/pandas/indexes/range.py +++ b/pandas/indexes/range.py @@ -4,9 +4,10 @@ import numpy as np from pandas._libs import index as libindex -from pandas.types.common import (is_integer, - is_scalar, - is_int64_dtype) +from pandas.core.dtypes.common import ( + is_integer, + is_scalar, + is_int64_dtype) from pandas import compat from pandas.compat import lrange, range diff --git a/pandas/io/common.py b/pandas/io/common.py index 8ee6ded67f790..5cd5a9cd3e8dc 100644 --- a/pandas/io/common.py +++ b/pandas/io/common.py @@ -10,7 +10,7 @@ from pandas import compat from pandas.formats.printing import pprint_thing from pandas.core.common import AbstractMethodError -from pandas.types.common import is_number, is_file_like +from pandas.core.dtypes.common import is_number, is_file_like # compat from pandas.errors import (ParserError, DtypeWarning, # noqa diff --git a/pandas/io/excel.py b/pandas/io/excel.py index 7f2f0cf4943b8..b19837973a94a 100644 --- a/pandas/io/excel.py +++ b/pandas/io/excel.py @@ -10,8 +10,9 @@ import abc import numpy as np -from pandas.types.common import (is_integer, is_float, - is_bool, is_list_like) +from pandas.core.dtypes.common import ( + is_integer, is_float, + is_bool, is_list_like) from pandas.core.frame import DataFrame from pandas.io.parsers import TextParser diff --git a/pandas/io/html.py b/pandas/io/html.py index 7b58e612de2df..8e5b8def1ea91 100644 --- a/pandas/io/html.py +++ b/pandas/io/html.py @@ -12,7 +12,7 @@ import numpy as np -from pandas.types.common import is_list_like +from pandas.core.dtypes.common import is_list_like from pandas.errors import EmptyDataError from pandas.io.common import (_is_url, urlopen, parse_url, _validate_header_arg) diff --git a/pandas/io/json/json.py b/pandas/io/json/json.py index 114ec4bb2723e..19e84c04b7ddb 100644 --- a/pandas/io/json/json.py +++ b/pandas/io/json/json.py @@ -12,7 +12,7 @@ from pandas.formats.printing import pprint_thing from .normalize import _convert_to_line_delimits from .table_schema import build_table_schema -from pandas.types.common import is_period_dtype +from pandas.core.dtypes.common import is_period_dtype loads = libjson.loads dumps = libjson.dumps diff --git a/pandas/io/json/table_schema.py b/pandas/io/json/table_schema.py index 48f92d28baf61..d8ef3afc9591f 100644 --- a/pandas/io/json/table_schema.py +++ b/pandas/io/json/table_schema.py @@ -3,7 +3,7 @@ http://specs.frictionlessdata.io/json-table-schema/ """ -from pandas.types.common import ( +from pandas.core.dtypes.common import ( is_integer_dtype, is_timedelta64_dtype, is_numeric_dtype, is_bool_dtype, is_datetime64_dtype, is_datetime64tz_dtype, is_categorical_dtype, is_period_dtype, is_string_dtype diff --git a/pandas/io/packers.py b/pandas/io/packers.py index ca5a27ee5b68e..a4b454eda7472 100644 --- a/pandas/io/packers.py +++ b/pandas/io/packers.py @@ -48,16 +48,17 @@ from pandas import compat from pandas.compat import u, u_safe -from pandas.types.common import (is_categorical_dtype, is_object_dtype, - needs_i8_conversion, pandas_dtype) +from pandas.core.dtypes.common import ( + is_categorical_dtype, is_object_dtype, + needs_i8_conversion, pandas_dtype) from pandas import (Timestamp, Period, Series, DataFrame, # noqa Index, MultiIndex, Float64Index, Int64Index, Panel, RangeIndex, PeriodIndex, DatetimeIndex, NaT, Categorical, CategoricalIndex) from pandas._libs.tslib import NaTType -from pandas.sparse.api import SparseSeries, SparseDataFrame -from pandas.sparse.array import BlockIndex, IntIndex +from pandas.core.sparse.api import SparseSeries, SparseDataFrame +from pandas.core.sparse.array import BlockIndex, IntIndex from pandas.core.generic import NDFrame from pandas.errors import PerformanceWarning from pandas.io.common import get_filepath_or_buffer diff --git a/pandas/io/parsers.py b/pandas/io/parsers.py index efbf6d64404c0..f2449e3064867 100755 --- a/pandas/io/parsers.py +++ b/pandas/io/parsers.py @@ -15,13 +15,14 @@ from pandas import compat from pandas.compat import (range, lrange, StringIO, lzip, zip, string_types, map, u) -from pandas.types.common import (is_integer, _ensure_object, - is_list_like, is_integer_dtype, - is_float, is_dtype_equal, - is_object_dtype, is_string_dtype, - is_scalar, is_categorical_dtype) -from pandas.types.missing import isnull -from pandas.types.cast import astype_nansafe +from pandas.core.dtypes.common import ( + is_integer, _ensure_object, + is_list_like, is_integer_dtype, + is_float, is_dtype_equal, + is_object_dtype, is_string_dtype, + is_scalar, is_categorical_dtype) +from pandas.core.dtypes.missing import isnull +from pandas.core.dtypes.cast import astype_nansafe from pandas.core.index import Index, MultiIndex, RangeIndex from pandas.core.series import Series from pandas.core.frame import DataFrame diff --git a/pandas/io/parsers.pyx b/pandas/io/parsers.pyx index 4053e726d0a04..2def4dc9dcf24 100644 --- a/pandas/io/parsers.pyx +++ b/pandas/io/parsers.pyx @@ -39,14 +39,15 @@ cimport util import pandas._libs.lib as lib import pandas.compat as compat -from pandas.types.common import (is_categorical_dtype, CategoricalDtype, - is_integer_dtype, is_float_dtype, - is_bool_dtype, is_object_dtype, - is_string_dtype, is_datetime64_dtype, - pandas_dtype) +from pandas.core.dtypes.common import ( + is_categorical_dtype, CategoricalDtype, + is_integer_dtype, is_float_dtype, + is_bool_dtype, is_object_dtype, + is_string_dtype, is_datetime64_dtype, + pandas_dtype) from pandas.core.categorical import Categorical from pandas.core.algorithms import take_1d -from pandas.types.concat import union_categoricals +from pandas.core.dtypes.concat import union_categoricals from pandas import Index import time diff --git a/pandas/io/pickle.py b/pandas/io/pickle.py index 969a2a51cb15d..0f91c407766fb 100644 --- a/pandas/io/pickle.py +++ b/pandas/io/pickle.py @@ -3,7 +3,7 @@ import numpy as np from numpy.lib.format import read_array, write_array from pandas.compat import BytesIO, cPickle as pkl, pickle_compat as pc, PY3 -from pandas.types.common import is_datetime64_dtype, _NS_DTYPE +from pandas.core.dtypes.common import is_datetime64_dtype, _NS_DTYPE from pandas.io.common import _get_handle, _infer_compression diff --git a/pandas/io/pytables.py b/pandas/io/pytables.py index 802f460ecba07..4771134f3fe5c 100644 --- a/pandas/io/pytables.py +++ b/pandas/io/pytables.py @@ -12,15 +12,16 @@ import warnings import os -from pandas.types.common import (is_list_like, - is_categorical_dtype, - is_timedelta64_dtype, - is_datetime64tz_dtype, - is_datetime64_dtype, - _ensure_object, - _ensure_int64, - _ensure_platform_int) -from pandas.types.missing import array_equivalent +from pandas.core.dtypes.common import ( + is_list_like, + is_categorical_dtype, + is_timedelta64_dtype, + is_datetime64tz_dtype, + is_datetime64_dtype, + _ensure_object, + _ensure_int64, + _ensure_platform_int) +from pandas.core.dtypes.missing import array_equivalent import numpy as np from pandas import (Series, DataFrame, Panel, Panel4D, Index, @@ -29,7 +30,7 @@ DatetimeIndex, TimedeltaIndex) from pandas.core import config from pandas.io.common import _stringify_path -from pandas.sparse.array import BlockIndex, IntIndex +from pandas.core.sparse.array import BlockIndex, IntIndex from pandas.core.base import StringMixin from pandas.formats.printing import adjoin, pprint_thing from pandas.errors import PerformanceWarning @@ -43,7 +44,7 @@ from pandas import compat from pandas.compat import u_safe as u, PY3, range, lrange, string_types, filter from pandas.core.config import get_option -from pandas.computation.pytables import Expr, maybe_expression +from pandas.core.computation.pytables import Expr, maybe_expression from pandas._libs import tslib, algos, lib diff --git a/pandas/io/sql.py b/pandas/io/sql.py index b210baedaaf6d..de47a8ad5401f 100644 --- a/pandas/io/sql.py +++ b/pandas/io/sql.py @@ -12,10 +12,11 @@ import numpy as np import pandas._libs.lib as lib -from pandas.types.missing import isnull -from pandas.types.dtypes import DatetimeTZDtype -from pandas.types.common import (is_list_like, is_dict_like, - is_datetime64tz_dtype) +from pandas.core.dtypes.missing import isnull +from pandas.core.dtypes.dtypes import DatetimeTZDtype +from pandas.core.dtypes.common import ( + is_list_like, is_dict_like, + is_datetime64tz_dtype) from pandas.compat import (map, zip, raise_with_traceback, string_types, text_type) diff --git a/pandas/io/stata.py b/pandas/io/stata.py index 1d2951da68086..691582629251a 100644 --- a/pandas/io/stata.py +++ b/pandas/io/stata.py @@ -15,8 +15,9 @@ import struct from dateutil.relativedelta import relativedelta -from pandas.types.common import (is_categorical_dtype, is_datetime64_dtype, - _ensure_object) +from pandas.core.dtypes.common import ( + is_categorical_dtype, is_datetime64_dtype, + _ensure_object) from pandas.core.base import StringMixin from pandas.core.categorical import Categorical diff --git a/pandas/plotting/_converter.py b/pandas/plotting/_converter.py index 0aa8cc31646c5..0e51e95057be2 100644 --- a/pandas/plotting/_converter.py +++ b/pandas/plotting/_converter.py @@ -11,12 +11,12 @@ from matplotlib.transforms import nonsingular -from pandas.types.common import (is_float, is_integer, - is_integer_dtype, - is_float_dtype, - is_datetime64_ns_dtype, - is_period_arraylike, - ) +from pandas.core.dtypes.common import ( + is_float, is_integer, + is_integer_dtype, + is_float_dtype, + is_datetime64_ns_dtype, + is_period_arraylike) from pandas.compat import lrange import pandas.compat as compat diff --git a/pandas/plotting/_core.py b/pandas/plotting/_core.py index 3980f5e7f2f61..02f2df4949189 100644 --- a/pandas/plotting/_core.py +++ b/pandas/plotting/_core.py @@ -11,11 +11,12 @@ from pandas.util.decorators import cache_readonly from pandas.core.base import PandasObject -from pandas.types.common import (is_list_like, - is_integer, - is_number, - is_hashable, - is_iterator) +from pandas.core.dtypes.common import ( + is_list_like, + is_integer, + is_number, + is_hashable, + is_iterator) from pandas.core.common import AbstractMethodError, isnull, _try_sort from pandas.core.generic import _shared_docs, _shared_doc_kwargs from pandas.core.index import Index, MultiIndex diff --git a/pandas/plotting/_misc.py b/pandas/plotting/_misc.py index 2c32a532dd2e2..f09bcef82b45d 100644 --- a/pandas/plotting/_misc.py +++ b/pandas/plotting/_misc.py @@ -5,7 +5,7 @@ import numpy as np from pandas.util.decorators import deprecate_kwarg -from pandas.types.missing import notnull +from pandas.core.dtypes.missing import notnull from pandas.compat import range, lrange, lmap, zip from pandas.formats.printing import pprint_thing diff --git a/pandas/plotting/_style.py b/pandas/plotting/_style.py index 5d6dc7cbcdfc6..8cb4e30e0d91c 100644 --- a/pandas/plotting/_style.py +++ b/pandas/plotting/_style.py @@ -8,7 +8,7 @@ import numpy as np -from pandas.types.common import is_list_like +from pandas.core.dtypes.common import is_list_like from pandas.compat import range, lrange, lmap import pandas.compat as compat from pandas.plotting._compat import _mpl_ge_2_0_0 diff --git a/pandas/plotting/_tools.py b/pandas/plotting/_tools.py index 720f776279869..0c2314087525c 100644 --- a/pandas/plotting/_tools.py +++ b/pandas/plotting/_tools.py @@ -7,7 +7,7 @@ import numpy as np -from pandas.types.common import is_list_like +from pandas.core.dtypes.common import is_list_like from pandas.core.index import Index from pandas.core.series import Series from pandas.compat import range diff --git a/pandas/sparse/api.py b/pandas/sparse/api.py deleted file mode 100644 index 90be0a216535f..0000000000000 --- a/pandas/sparse/api.py +++ /dev/null @@ -1,6 +0,0 @@ -# pylint: disable=W0611 -# flake8: noqa -from pandas.sparse.array import SparseArray -from pandas.sparse.list import SparseList -from pandas.sparse.series import SparseSeries -from pandas.sparse.frame import SparseDataFrame diff --git a/pandas/stats/moments.py b/pandas/stats/moments.py index 914c4c08863a2..f98ffa26e0c2b 100644 --- a/pandas/stats/moments.py +++ b/pandas/stats/moments.py @@ -6,7 +6,7 @@ import warnings import numpy as np -from pandas.types.common import is_scalar +from pandas.core.dtypes.common import is_scalar from pandas.core.api import DataFrame, Series from pandas.util.decorators import Substitution, Appender diff --git a/pandas/tests/api/test_api.py b/pandas/tests/api/test_api.py index 02734189ca340..221458e629055 100644 --- a/pandas/tests/api/test_api.py +++ b/pandas/tests/api/test_api.py @@ -30,10 +30,10 @@ class TestPDApi(Base, tm.TestCase): ignored = ['tests', 'locale', 'conftest'] # top-level sub-packages - lib = ['api', 'compat', 'computation', 'core', - 'indexes', 'formats', 'errors', 'pandas', 'plotting', - 'test', 'tools', 'tseries', 'sparse', - 'types', 'util', 'options', 'io'] + lib = ['api', 'compat', 'core', + 'indexes', 'formats', 'errors', 'pandas', + 'plotting', 'test', 'tools', 'tseries', + 'util', 'options', 'io'] # these are already deprecated; awaiting removal deprecated_modules = ['stats', 'datetools', 'parser', diff --git a/pandas/tests/api/test_lib.py b/pandas/tests/api/test_lib.py deleted file mode 100644 index db2c68c6197d7..0000000000000 --- a/pandas/tests/api/test_lib.py +++ /dev/null @@ -1,10 +0,0 @@ -# -*- coding: utf-8 -*- - -from warnings import catch_warnings -import pandas # noqa - - -def test_moved_infer_dtype(): - with catch_warnings(record=True): - e = pandas.lib.infer_dtype('foo') - assert e is not None diff --git a/pandas/tests/api/test_types.py b/pandas/tests/api/test_types.py index 1d05eda88e265..e0267d2990085 100644 --- a/pandas/tests/api/test_types.py +++ b/pandas/tests/api/test_types.py @@ -1,7 +1,9 @@ # -*- coding: utf-8 -*- +from warnings import catch_warnings import numpy as np +import pandas from pandas.core import common as com from pandas.api import types from pandas.util import testing as tm @@ -28,7 +30,7 @@ class TestTypes(Base, tm.TestCase): 'is_dict_like', 'is_iterator', 'is_file_like', 'is_list_like', 'is_hashable', 'is_named_tuple', 'is_sequence', - 'pandas_dtype'] + 'pandas_dtype', 'union_categoricals'] def test_types(self): @@ -61,7 +63,7 @@ def test_deprecation_core_common_array_equivalent(self): def test_deprecation_core_common_moved(self): - # these are in pandas.types.common + # these are in pandas.core.dtypes.common l = ['is_datetime_arraylike', 'is_datetime_or_timedelta_dtype', 'is_datetimelike', @@ -73,7 +75,7 @@ def test_deprecation_core_common_moved(self): 'is_string_like', 'is_string_like_dtype'] - from pandas.types import common as c + from pandas.core.dtypes import common as c for t in l: self.check_deprecation(getattr(com, t), getattr(c, t)) @@ -82,3 +84,10 @@ def test_removed_from_core_common(self): for t in ['is_null_datelike_scalar', 'ensure_float']: self.assertRaises(AttributeError, lambda: getattr(com, t)) + + +def test_moved_infer_dtype(): + + with catch_warnings(record=True): + e = pandas.lib.infer_dtype('foo') + assert e is not None diff --git a/pandas/tests/sparse/__init__.py b/pandas/tests/core/__init__.py similarity index 100% rename from pandas/tests/sparse/__init__.py rename to pandas/tests/core/__init__.py diff --git a/pandas/tests/types/__init__.py b/pandas/tests/core/computation/__init__.py similarity index 100% rename from pandas/tests/types/__init__.py rename to pandas/tests/core/computation/__init__.py diff --git a/pandas/tests/computation/test_compat.py b/pandas/tests/core/computation/test_compat.py similarity index 84% rename from pandas/tests/computation/test_compat.py rename to pandas/tests/core/computation/test_compat.py index 56a7cab730f1f..7b6c0f9c4c9aa 100644 --- a/pandas/tests/computation/test_compat.py +++ b/pandas/tests/core/computation/test_compat.py @@ -4,15 +4,15 @@ import pandas as pd from pandas.util import testing as tm -from pandas.computation.engines import _engines -import pandas.computation.expr as expr -from pandas.computation import _MIN_NUMEXPR_VERSION +from pandas.core.computation.engines import _engines +import pandas.core.computation.expr as expr +from pandas.core.computation import _MIN_NUMEXPR_VERSION def test_compat(): # test we have compat with our version of nu - from pandas.computation import _NUMEXPR_INSTALLED + from pandas.core.computation import _NUMEXPR_INSTALLED try: import numexpr as ne ver = ne.__version__ diff --git a/pandas/tests/computation/test_eval.py b/pandas/tests/core/computation/test_eval.py similarity index 99% rename from pandas/tests/computation/test_eval.py rename to pandas/tests/core/computation/test_eval.py index 78aad90cacf94..1f519174ce210 100644 --- a/pandas/tests/computation/test_eval.py +++ b/pandas/tests/core/computation/test_eval.py @@ -8,23 +8,25 @@ from numpy.random import randn, rand, randint import numpy as np -from pandas.types.common import is_list_like, is_scalar +from pandas.core.dtypes.common import is_list_like, is_scalar import pandas as pd from pandas.core import common as com from pandas.errors import PerformanceWarning from pandas import DataFrame, Series, Panel, date_range from pandas.util.testing import makeCustomDataframe as mkdf -from pandas.computation import pytables -from pandas.computation.engines import _engines, NumExprClobberingError -from pandas.computation.expr import PythonExprVisitor, PandasExprVisitor -from pandas.computation.expressions import _USE_NUMEXPR, _NUMEXPR_INSTALLED -from pandas.computation.ops import (_binary_ops_dict, - _special_case_arith_ops_syms, - _arith_ops_syms, _bool_ops_syms, - _unary_math_ops, _binary_math_ops) - -import pandas.computation.expr as expr +from pandas.core.computation import pytables +from pandas.core.computation.engines import _engines, NumExprClobberingError +from pandas.core.computation.expr import PythonExprVisitor, PandasExprVisitor +from pandas.core.computation.expressions import ( + _USE_NUMEXPR, _NUMEXPR_INSTALLED) +from pandas.core.computation.ops import ( + _binary_ops_dict, + _special_case_arith_ops_syms, + _arith_ops_syms, _bool_ops_syms, + _unary_math_ops, _binary_math_ops) + +import pandas.core.computation.expr as expr import pandas.util.testing as tm from pandas.util.testing import (assert_frame_equal, randbool, assertRaisesRegexp, assert_numpy_array_equal, diff --git a/pandas/types/__init__.py b/pandas/tests/core/dtypes/__init__.py similarity index 100% rename from pandas/types/__init__.py rename to pandas/tests/core/dtypes/__init__.py diff --git a/pandas/tests/types/test_cast.py b/pandas/tests/core/dtypes/test_cast.py similarity index 95% rename from pandas/tests/types/test_cast.py rename to pandas/tests/core/dtypes/test_cast.py index de6ef7af9d7f9..a1490426ebf9d 100644 --- a/pandas/tests/types/test_cast.py +++ b/pandas/tests/core/dtypes/test_cast.py @@ -10,15 +10,18 @@ import numpy as np from pandas import Timedelta, Timestamp, DatetimeIndex -from pandas.types.cast import (maybe_downcast_to_dtype, - maybe_convert_objects, - infer_dtype_from_scalar, - infer_dtype_from_array, - maybe_convert_string_to_object, - maybe_convert_scalar, - find_common_type) -from pandas.types.dtypes import (CategoricalDtype, - DatetimeTZDtype, PeriodDtype) +from pandas.core.dtypes.cast import ( + maybe_downcast_to_dtype, + maybe_convert_objects, + infer_dtype_from_scalar, + infer_dtype_from_array, + maybe_convert_string_to_object, + maybe_convert_scalar, + find_common_type) +from pandas.core.dtypes.dtypes import ( + CategoricalDtype, + DatetimeTZDtype, + PeriodDtype) from pandas.util import testing as tm diff --git a/pandas/tests/types/test_common.py b/pandas/tests/core/dtypes/test_common.py similarity index 92% rename from pandas/tests/types/test_common.py rename to pandas/tests/core/dtypes/test_common.py index 21772bab44d01..1017f93b8241c 100644 --- a/pandas/tests/types/test_common.py +++ b/pandas/tests/core/dtypes/test_common.py @@ -3,8 +3,10 @@ import pytest import numpy as np -from pandas.types.dtypes import DatetimeTZDtype, PeriodDtype, CategoricalDtype -from pandas.types.common import pandas_dtype, is_dtype_equal +from pandas.core.dtypes.dtypes import ( + DatetimeTZDtype, PeriodDtype, CategoricalDtype) +from pandas.core.dtypes.common import ( + pandas_dtype, is_dtype_equal) import pandas.util.testing as tm @@ -87,11 +89,11 @@ def test_dtype_equal_strict(): def get_is_dtype_funcs(): """ - Get all functions in pandas.types.common that + Get all functions in pandas.core.dtypes.common that begin with 'is_' and end with 'dtype' """ - import pandas.types.common as com + import pandas.core.dtypes.common as com fnames = [f for f in dir(com) if (f.startswith('is_') and f.endswith('dtype'))] diff --git a/pandas/tests/types/test_concat.py b/pandas/tests/core/dtypes/test_concat.py similarity index 98% rename from pandas/tests/types/test_concat.py rename to pandas/tests/core/dtypes/test_concat.py index f4faab45f4ba2..e8eb042d78f30 100644 --- a/pandas/tests/types/test_concat.py +++ b/pandas/tests/core/dtypes/test_concat.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import pandas as pd -import pandas.types.concat as _concat +import pandas.core.dtypes.concat as _concat import pandas.util.testing as tm diff --git a/pandas/tests/types/test_dtypes.py b/pandas/tests/core/dtypes/test_dtypes.py similarity index 96% rename from pandas/tests/types/test_dtypes.py rename to pandas/tests/core/dtypes/test_dtypes.py index 79d9fd84396e7..ec9876df14e3b 100644 --- a/pandas/tests/types/test_dtypes.py +++ b/pandas/tests/core/dtypes/test_dtypes.py @@ -5,15 +5,17 @@ import pandas as pd from pandas import Series, Categorical, IntervalIndex, date_range -from pandas.types.dtypes import (DatetimeTZDtype, PeriodDtype, - IntervalDtype, CategoricalDtype) -from pandas.types.common import (is_categorical_dtype, is_categorical, - is_datetime64tz_dtype, is_datetimetz, - is_period_dtype, is_period, - is_dtype_equal, is_datetime64_ns_dtype, - is_datetime64_dtype, is_interval_dtype, - is_datetime64_any_dtype, is_string_dtype, - _coerce_to_dtype) +from pandas.core.dtypes.dtypes import ( + DatetimeTZDtype, PeriodDtype, + IntervalDtype, CategoricalDtype) +from pandas.core.dtypes.common import ( + is_categorical_dtype, is_categorical, + is_datetime64tz_dtype, is_datetimetz, + is_period_dtype, is_period, + is_dtype_equal, is_datetime64_ns_dtype, + is_datetime64_dtype, is_interval_dtype, + is_datetime64_any_dtype, is_string_dtype, + _coerce_to_dtype) import pandas.util.testing as tm diff --git a/pandas/tests/types/test_generic.py b/pandas/tests/core/dtypes/test_generic.py similarity index 97% rename from pandas/tests/types/test_generic.py rename to pandas/tests/core/dtypes/test_generic.py index 7994aa77bb220..d550b5535cea3 100644 --- a/pandas/tests/types/test_generic.py +++ b/pandas/tests/core/dtypes/test_generic.py @@ -4,7 +4,7 @@ import numpy as np import pandas as pd import pandas.util.testing as tm -from pandas.types import generic as gt +from pandas.core.dtypes import generic as gt class TestABCClasses(tm.TestCase): diff --git a/pandas/tests/types/test_inference.py b/pandas/tests/core/dtypes/test_inference.py similarity index 97% rename from pandas/tests/types/test_inference.py rename to pandas/tests/core/dtypes/test_inference.py index ec61903d3f20c..94d1d21d59d88 100644 --- a/pandas/tests/types/test_inference.py +++ b/pandas/tests/core/dtypes/test_inference.py @@ -18,26 +18,25 @@ DatetimeIndex, TimedeltaIndex, Timestamp, Panel, Period, Categorical) from pandas.compat import u, PY2, PY3, StringIO, lrange -from pandas.types import inference -from pandas.types.common import (is_timedelta64_dtype, - is_timedelta64_ns_dtype, - is_datetime64_dtype, - is_datetime64_ns_dtype, - is_datetime64_any_dtype, - is_datetime64tz_dtype, - is_number, - is_integer, - is_float, - is_bool, - is_scalar, - is_scipy_sparse, - _ensure_int32, - _ensure_categorical) -from pandas.types.missing import isnull +from pandas.core.dtypes import inference +from pandas.core.dtypes.common import ( + is_timedelta64_dtype, + is_timedelta64_ns_dtype, + is_datetime64_dtype, + is_datetime64_ns_dtype, + is_datetime64_any_dtype, + is_datetime64tz_dtype, + is_number, + is_integer, + is_float, + is_bool, + is_scalar, + is_scipy_sparse, + _ensure_int32, + _ensure_categorical) +from pandas.core.dtypes.missing import isnull from pandas.util import testing as tm -from pandas.tests.sparse.test_frame import spmatrix # noqa: F401 - def test_is_sequence(): is_seq = inference.is_sequence diff --git a/pandas/tests/types/test_io.py b/pandas/tests/core/dtypes/test_io.py similarity index 100% rename from pandas/tests/types/test_io.py rename to pandas/tests/core/dtypes/test_io.py diff --git a/pandas/tests/types/test_missing.py b/pandas/tests/core/dtypes/test_missing.py similarity index 98% rename from pandas/tests/types/test_missing.py rename to pandas/tests/core/dtypes/test_missing.py index 31bf2817c8bab..52dec66fe73eb 100644 --- a/pandas/tests/types/test_missing.py +++ b/pandas/tests/core/dtypes/test_missing.py @@ -11,9 +11,10 @@ from pandas._libs.tslib import iNaT from pandas import (NaT, Float64Index, Series, DatetimeIndex, TimedeltaIndex, date_range) -from pandas.types.dtypes import DatetimeTZDtype -from pandas.types.missing import (array_equivalent, isnull, notnull, - na_value_for_dtype) +from pandas.core.dtypes.dtypes import DatetimeTZDtype +from pandas.core.dtypes.missing import ( + array_equivalent, isnull, notnull, + na_value_for_dtype) def test_notnull(): diff --git a/pandas/tests/core/sparse/__init__.py b/pandas/tests/core/sparse/__init__.py new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/pandas/tests/core/sparse/common.py b/pandas/tests/core/sparse/common.py new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/pandas/tests/sparse/test_arithmetics.py b/pandas/tests/core/sparse/test_arithmetics.py similarity index 100% rename from pandas/tests/sparse/test_arithmetics.py rename to pandas/tests/core/sparse/test_arithmetics.py diff --git a/pandas/tests/sparse/test_array.py b/pandas/tests/core/sparse/test_array.py similarity index 99% rename from pandas/tests/sparse/test_array.py rename to pandas/tests/core/sparse/test_array.py index 15531cecfe79b..b7b664e7bfb8a 100644 --- a/pandas/tests/sparse/test_array.py +++ b/pandas/tests/core/sparse/test_array.py @@ -7,8 +7,8 @@ import numpy as np from pandas import _np_version_under1p8 -from pandas.sparse.api import SparseArray, SparseSeries -from pandas.sparse.libsparse import IntIndex +from pandas.core.sparse.api import SparseArray, SparseSeries +from pandas.core.sparse.libsparse import IntIndex from pandas.util.testing import assert_almost_equal, assertRaisesRegexp import pandas.util.testing as tm diff --git a/pandas/tests/sparse/test_combine_concat.py b/pandas/tests/core/sparse/test_combine_concat.py similarity index 100% rename from pandas/tests/sparse/test_combine_concat.py rename to pandas/tests/core/sparse/test_combine_concat.py diff --git a/pandas/tests/sparse/test_format.py b/pandas/tests/core/sparse/test_format.py similarity index 100% rename from pandas/tests/sparse/test_format.py rename to pandas/tests/core/sparse/test_format.py diff --git a/pandas/tests/sparse/test_frame.py b/pandas/tests/core/sparse/test_frame.py similarity index 99% rename from pandas/tests/sparse/test_frame.py rename to pandas/tests/core/sparse/test_frame.py index 075d5efcefbe0..adb813a27e7e9 100644 --- a/pandas/tests/sparse/test_frame.py +++ b/pandas/tests/core/sparse/test_frame.py @@ -9,23 +9,22 @@ import pandas as pd from pandas import Series, DataFrame, bdate_range, Panel -from pandas.types.common import (is_bool_dtype, - is_float_dtype, - is_object_dtype, - is_float) +from pandas.core.dtypes.common import ( + is_bool_dtype, + is_float_dtype, + is_object_dtype, + is_float) from pandas.tseries.index import DatetimeIndex from pandas.tseries.offsets import BDay -import pandas.util.testing as tm +from pandas.util import testing as tm from pandas.compat import lrange from pandas import compat -import pandas.sparse.frame as spf +from pandas.core.sparse import frame as spf -from pandas.sparse.libsparse import BlockIndex, IntIndex -from pandas.sparse.api import SparseSeries, SparseDataFrame, SparseArray +from pandas.core.sparse.libsparse import BlockIndex, IntIndex +from pandas.core.sparse.api import SparseSeries, SparseDataFrame, SparseArray from pandas.tests.frame.test_api import SharedWithSparse -from pandas.tests.sparse.common import spmatrix # noqa: F401 - class TestSparseDataFrame(tm.TestCase, SharedWithSparse): klass = SparseDataFrame diff --git a/pandas/tests/sparse/test_groupby.py b/pandas/tests/core/sparse/test_groupby.py similarity index 100% rename from pandas/tests/sparse/test_groupby.py rename to pandas/tests/core/sparse/test_groupby.py diff --git a/pandas/tests/sparse/test_indexing.py b/pandas/tests/core/sparse/test_indexing.py similarity index 100% rename from pandas/tests/sparse/test_indexing.py rename to pandas/tests/core/sparse/test_indexing.py diff --git a/pandas/tests/sparse/test_libsparse.py b/pandas/tests/core/sparse/test_libsparse.py similarity index 99% rename from pandas/tests/sparse/test_libsparse.py rename to pandas/tests/core/sparse/test_libsparse.py index 696d2cf47f4c0..e4c3d6d3050cb 100644 --- a/pandas/tests/sparse/test_libsparse.py +++ b/pandas/tests/core/sparse/test_libsparse.py @@ -7,8 +7,8 @@ from pandas import compat -from pandas.sparse.array import IntIndex, BlockIndex, _make_index -import pandas.sparse.libsparse as splib +from pandas.core.sparse.array import IntIndex, BlockIndex, _make_index +import pandas.core.sparse.libsparse as splib TEST_LENGTH = 20 diff --git a/pandas/tests/sparse/test_list.py b/pandas/tests/core/sparse/test_list.py similarity index 98% rename from pandas/tests/sparse/test_list.py rename to pandas/tests/core/sparse/test_list.py index 8511cd5997368..9f91d73a8228a 100644 --- a/pandas/tests/sparse/test_list.py +++ b/pandas/tests/core/sparse/test_list.py @@ -4,7 +4,7 @@ from numpy import nan import numpy as np -from pandas.sparse.api import SparseList, SparseArray +from pandas.core.sparse.api import SparseList, SparseArray import pandas.util.testing as tm diff --git a/pandas/tests/sparse/test_pivot.py b/pandas/tests/core/sparse/test_pivot.py similarity index 100% rename from pandas/tests/sparse/test_pivot.py rename to pandas/tests/core/sparse/test_pivot.py diff --git a/pandas/tests/sparse/test_series.py b/pandas/tests/core/sparse/test_series.py similarity index 99% rename from pandas/tests/sparse/test_series.py rename to pandas/tests/core/sparse/test_series.py index 83f0237841dbd..0b71dffe1782b 100644 --- a/pandas/tests/sparse/test_series.py +++ b/pandas/tests/core/sparse/test_series.py @@ -14,10 +14,10 @@ from pandas import compat from pandas.tools.util import cartesian_product -import pandas.sparse.frame as spf +import pandas.core.sparse.frame as spf -from pandas.sparse.libsparse import BlockIndex, IntIndex -from pandas.sparse.api import SparseSeries +from pandas.core.sparse.libsparse import BlockIndex, IntIndex +from pandas.core.sparse.api import SparseSeries from pandas.tests.series.test_api import SharedWithSparse diff --git a/pandas/tests/formats/test_format.py b/pandas/tests/formats/test_format.py index 83458c82a3d7c..92f6a600a9e2a 100644 --- a/pandas/tests/formats/test_format.py +++ b/pandas/tests/formats/test_format.py @@ -1420,20 +1420,23 @@ def test_repr_html_wide_multiindex_cols(self): assert '...' in wide_repr def test_repr_html_long(self): - max_rows = get_option('display.max_rows') - h = max_rows - 1 - df = DataFrame({'A': np.arange(1, 1 + h), 'B': np.arange(41, 41 + h)}) - reg_repr = df._repr_html_() - assert '..' not in reg_repr - assert str(41 + max_rows // 2) in reg_repr + with option_context('display.max_rows', 60): + max_rows = get_option('display.max_rows') + h = max_rows - 1 + df = DataFrame({'A': np.arange(1, 1 + h), + 'B': np.arange(41, 41 + h)}) + reg_repr = df._repr_html_() + assert '..' not in reg_repr + assert str(41 + max_rows // 2) in reg_repr - h = max_rows + 1 - df = DataFrame({'A': np.arange(1, 1 + h), 'B': np.arange(41, 41 + h)}) - long_repr = df._repr_html_() - assert '..' in long_repr - assert str(41 + max_rows // 2) not in long_repr - assert u('%d rows ') % h in long_repr - assert u('2 columns') in long_repr + h = max_rows + 1 + df = DataFrame({'A': np.arange(1, 1 + h), + 'B': np.arange(41, 41 + h)}) + long_repr = df._repr_html_() + assert '..' in long_repr + assert str(41 + max_rows // 2) not in long_repr + assert u('%d rows ') % h in long_repr + assert u('2 columns') in long_repr def test_repr_html_float(self): with option_context('display.max_rows', 60): diff --git a/pandas/tests/frame/test_alter_axes.py b/pandas/tests/frame/test_alter_axes.py index f05b6fdd6bc23..9add944d2293e 100644 --- a/pandas/tests/frame/test_alter_axes.py +++ b/pandas/tests/frame/test_alter_axes.py @@ -9,9 +9,10 @@ from pandas.compat import lrange from pandas import (DataFrame, Series, Index, MultiIndex, RangeIndex, date_range, IntervalIndex) -from pandas.types.common import (is_object_dtype, - is_categorical_dtype, - is_interval_dtype) +from pandas.core.dtypes.common import ( + is_object_dtype, + is_categorical_dtype, + is_interval_dtype) import pandas as pd from pandas.util.testing import (assert_series_equal, diff --git a/pandas/tests/frame/test_apply.py b/pandas/tests/frame/test_apply.py index 157cd1cdf1b22..1afb048ad825a 100644 --- a/pandas/tests/frame/test_apply.py +++ b/pandas/tests/frame/test_apply.py @@ -10,7 +10,7 @@ from pandas import (notnull, DataFrame, Series, MultiIndex, date_range, Timestamp, compat) import pandas as pd -from pandas.types.dtypes import CategoricalDtype +from pandas.core.dtypes.dtypes import CategoricalDtype from pandas.util.testing import (assert_series_equal, assert_frame_equal) import pandas.util.testing as tm diff --git a/pandas/tests/frame/test_constructors.py b/pandas/tests/frame/test_constructors.py index 6d28d3b4dfcd5..508053a6367fa 100644 --- a/pandas/tests/frame/test_constructors.py +++ b/pandas/tests/frame/test_constructors.py @@ -13,7 +13,7 @@ import numpy.ma as ma import numpy.ma.mrecords as mrecords -from pandas.types.common import is_integer_dtype +from pandas.core.dtypes.common import is_integer_dtype from pandas.compat import (lmap, long, zip, range, lrange, lzip, OrderedDict, is_platform_little_endian) from pandas import compat diff --git a/pandas/tests/frame/test_dtypes.py b/pandas/tests/frame/test_dtypes.py index f7d2c1a654cd5..14334dfbeddb3 100644 --- a/pandas/tests/frame/test_dtypes.py +++ b/pandas/tests/frame/test_dtypes.py @@ -7,7 +7,7 @@ from pandas import (DataFrame, Series, date_range, Timedelta, Timestamp, compat, concat, option_context) from pandas.compat import u -from pandas.types.dtypes import DatetimeTZDtype +from pandas.core.dtypes.dtypes import DatetimeTZDtype from pandas.tests.frame.common import TestData from pandas.util.testing import (assert_series_equal, assert_frame_equal, diff --git a/pandas/tests/frame/test_indexing.py b/pandas/tests/frame/test_indexing.py index f0dfc4553886b..b624657ca4b4b 100644 --- a/pandas/tests/frame/test_indexing.py +++ b/pandas/tests/frame/test_indexing.py @@ -20,9 +20,10 @@ from pandas._libs.tslib import iNaT from pandas.tseries.offsets import BDay -from pandas.types.common import (is_float_dtype, - is_integer, - is_scalar) +from pandas.core.dtypes.common import ( + is_float_dtype, + is_integer, + is_scalar) from pandas.util.testing import (assert_almost_equal, assert_numpy_array_equal, assert_series_equal, @@ -1866,7 +1867,7 @@ def test_iloc_duplicates(self): assert_frame_equal(result, expected) def test_iloc_sparse_propegate_fill_value(self): - from pandas.sparse.api import SparseDataFrame + from pandas.core.sparse.api import SparseDataFrame df = SparseDataFrame({'A': [999, 1]}, default_fill_value=999) self.assertTrue(len(df['A'].sp_values) == len(df.iloc[:, 0].sp_values)) diff --git a/pandas/tests/frame/test_query_eval.py b/pandas/tests/frame/test_query_eval.py index f90b37b66d200..a531b86699e90 100644 --- a/pandas/tests/frame/test_query_eval.py +++ b/pandas/tests/frame/test_query_eval.py @@ -19,7 +19,7 @@ makeCustomDataframe as mkdf) import pandas.util.testing as tm -from pandas.computation import _NUMEXPR_INSTALLED +from pandas.core.computation import _NUMEXPR_INSTALLED from pandas.tests.frame.common import TestData @@ -511,7 +511,7 @@ def test_query_syntax_error(self): df.query('i - +', engine=engine, parser=parser) def test_query_scope(self): - from pandas.computation.ops import UndefinedVariableError + from pandas.core.computation.ops import UndefinedVariableError engine, parser = self.engine, self.parser skip_if_no_pandas_parser(parser) @@ -535,7 +535,7 @@ def test_query_scope(self): df.query('@a > b > c', engine=engine, parser=parser) def test_query_doesnt_pickup_local(self): - from pandas.computation.ops import UndefinedVariableError + from pandas.core.computation.ops import UndefinedVariableError engine, parser = self.engine, self.parser n = m = 10 @@ -546,7 +546,7 @@ def test_query_doesnt_pickup_local(self): df.query('sin > 5', engine=engine, parser=parser) def test_query_builtin(self): - from pandas.computation.engines import NumExprClobberingError + from pandas.core.computation.engines import NumExprClobberingError engine, parser = self.engine, self.parser n = m = 10 @@ -624,7 +624,7 @@ def test_nested_scope(self): assert_frame_equal(result, expected) def test_nested_raises_on_local_self_reference(self): - from pandas.computation.ops import UndefinedVariableError + from pandas.core.computation.ops import UndefinedVariableError df = DataFrame(np.random.randn(5, 3)) @@ -683,7 +683,7 @@ def test_at_inside_string(self): assert_frame_equal(result, expected) def test_query_undefined_local(self): - from pandas.computation.ops import UndefinedVariableError + from pandas.core.computation.ops import UndefinedVariableError engine, parser = self.engine, self.parser skip_if_no_pandas_parser(parser) df = DataFrame(np.random.rand(10, 2), columns=list('ab')) @@ -803,7 +803,7 @@ def test_date_index_query_with_NaT_duplicates(self): df.query('index < 20130101 < dates3', engine=engine, parser=parser) def test_nested_scope(self): - from pandas.computation.ops import UndefinedVariableError + from pandas.core.computation.ops import UndefinedVariableError engine = self.engine parser = self.parser # smoke test diff --git a/pandas/tests/groupby/test_bin_groupby.py b/pandas/tests/groupby/test_bin_groupby.py index 02c7933e020ea..289723ed5667a 100644 --- a/pandas/tests/groupby/test_bin_groupby.py +++ b/pandas/tests/groupby/test_bin_groupby.py @@ -3,7 +3,7 @@ from numpy import nan import numpy as np -from pandas.types.common import _ensure_int64 +from pandas.core.dtypes.common import _ensure_int64 from pandas import Index, isnull from pandas.util.testing import assert_almost_equal import pandas.util.testing as tm diff --git a/pandas/tests/groupby/test_transform.py b/pandas/tests/groupby/test_transform.py index 3b85fadda6cfe..541f5d28be421 100644 --- a/pandas/tests/groupby/test_transform.py +++ b/pandas/tests/groupby/test_transform.py @@ -4,7 +4,8 @@ import pandas as pd from pandas.util import testing as tm from pandas import Series, DataFrame, Timestamp, MultiIndex, concat, date_range -from pandas.types.common import _ensure_platform_int, is_timedelta64_dtype +from pandas.core.dtypes.common import ( + _ensure_platform_int, is_timedelta64_dtype) from pandas.compat import StringIO from pandas._libs import groupby from .common import MixIn, assert_fp_equal diff --git a/pandas/tests/indexes/common.py b/pandas/tests/indexes/common.py index 54d47d02c5e8e..25214e6b170b5 100644 --- a/pandas/tests/indexes/common.py +++ b/pandas/tests/indexes/common.py @@ -9,7 +9,7 @@ RangeIndex, MultiIndex, CategoricalIndex, DatetimeIndex, TimedeltaIndex, PeriodIndex, IntervalIndex, notnull, isnull) -from pandas.types.common import needs_i8_conversion +from pandas.core.dtypes.common import needs_i8_conversion from pandas.util.testing import assertRaisesRegexp from pandas._libs.tslib import iNaT diff --git a/pandas/tests/indexes/datetimes/test_construction.py b/pandas/tests/indexes/datetimes/test_construction.py index 16881de6e8c39..d4e672d0584cf 100644 --- a/pandas/tests/indexes/datetimes/test_construction.py +++ b/pandas/tests/indexes/datetimes/test_construction.py @@ -12,21 +12,36 @@ class TestDatetimeIndex(tm.TestCase): + def test_construction_caching(self): + + df = pd.DataFrame({'dt': pd.date_range('20130101', periods=3), + 'dttz': pd.date_range('20130101', periods=3, + tz='US/Eastern'), + 'dt_with_null': [pd.Timestamp('20130101'), pd.NaT, + pd.Timestamp('20130103')], + 'dtns': pd.date_range('20130101', periods=3, + freq='ns')}) + assert df.dttz.dtype.tz.zone == 'US/Eastern' + def test_construction_with_alt(self): i = pd.date_range('20130101', periods=5, freq='H', tz='US/Eastern') i2 = DatetimeIndex(i, dtype=i.dtype) self.assert_index_equal(i, i2) + assert i.tz.zone == 'US/Eastern' i2 = DatetimeIndex(i.tz_localize(None).asi8, tz=i.dtype.tz) self.assert_index_equal(i, i2) + assert i.tz.zone == 'US/Eastern' i2 = DatetimeIndex(i.tz_localize(None).asi8, dtype=i.dtype) self.assert_index_equal(i, i2) + assert i.tz.zone == 'US/Eastern' i2 = DatetimeIndex( i.tz_localize(None).asi8, dtype=i.dtype, tz=i.dtype.tz) self.assert_index_equal(i, i2) + assert i.tz.zone == 'US/Eastern' # localize into the provided tz i2 = DatetimeIndex(i.tz_localize(None).asi8, tz='UTC') diff --git a/pandas/tests/indexes/datetimes/test_tools.py b/pandas/tests/indexes/datetimes/test_tools.py index 1260ee4e5ab07..28fbce43bf983 100644 --- a/pandas/tests/indexes/datetimes/test_tools.py +++ b/pandas/tests/indexes/datetimes/test_tools.py @@ -14,7 +14,7 @@ from pandas.tseries.tools import normalize_date from pandas.compat import lmap from pandas.compat.numpy import np_array_datetime64_compat -from pandas.types.common import is_datetime64_ns_dtype +from pandas.core.dtypes.common import is_datetime64_ns_dtype from pandas.util import testing as tm from pandas.util.testing import assert_series_equal, _skip_if_has_locale from pandas import (isnull, to_datetime, Timestamp, Series, DataFrame, diff --git a/pandas/tests/indexing/common.py b/pandas/tests/indexing/common.py index 0f8a9573a233b..51c0889a6f091 100644 --- a/pandas/tests/indexing/common.py +++ b/pandas/tests/indexing/common.py @@ -5,7 +5,7 @@ import numpy as np from pandas.compat import lrange -from pandas.types.common import is_scalar +from pandas.core.dtypes.common import is_scalar from pandas import Series, DataFrame, Panel, date_range, UInt64Index from pandas.util import testing as tm from pandas.formats.printing import pprint_thing diff --git a/pandas/tests/indexing/test_indexing.py b/pandas/tests/indexing/test_indexing.py index 0d6ca383a1be1..53812feaa8da7 100644 --- a/pandas/tests/indexing/test_indexing.py +++ b/pandas/tests/indexing/test_indexing.py @@ -6,8 +6,9 @@ from warnings import catch_warnings from datetime import datetime -from pandas.types.common import (is_integer_dtype, - is_float_dtype) +from pandas.core.dtypes.common import ( + is_integer_dtype, + is_float_dtype) from pandas.compat import range, lrange, lzip, StringIO import numpy as np diff --git a/pandas/tests/indexing/test_ix.py b/pandas/tests/indexing/test_ix.py index b12d1eb97f88b..6eda8b2b6f631 100644 --- a/pandas/tests/indexing/test_ix.py +++ b/pandas/tests/indexing/test_ix.py @@ -5,7 +5,7 @@ import numpy as np import pandas as pd -from pandas.types.common import is_scalar +from pandas.core.dtypes.common import is_scalar from pandas.compat import lrange from pandas import Series, DataFrame, option_context, MultiIndex from pandas.util import testing as tm diff --git a/pandas/tests/io/json/test_json_table_schema.py b/pandas/tests/io/json/test_json_table_schema.py index d1795f2816817..2a785375acaea 100644 --- a/pandas/tests/io/json/test_json_table_schema.py +++ b/pandas/tests/io/json/test_json_table_schema.py @@ -7,11 +7,14 @@ import pytest from pandas import DataFrame -from pandas.types.dtypes import PeriodDtype, CategoricalDtype, DatetimeTZDtype +from pandas.core.dtypes.dtypes import ( + PeriodDtype, CategoricalDtype, DatetimeTZDtype) import pandas.util.testing as tm from pandas.io.json.table_schema import ( - as_json_table_type, build_table_schema, make_field, set_default_names -) + as_json_table_type, + build_table_schema, + make_field, + set_default_names) class TestBuildSchema(tm.TestCase): diff --git a/pandas/tests/io/parser/dtypes.py b/pandas/tests/io/parser/dtypes.py index 8066718363803..50c9a1bc724fc 100644 --- a/pandas/tests/io/parser/dtypes.py +++ b/pandas/tests/io/parser/dtypes.py @@ -11,7 +11,7 @@ from pandas import DataFrame, Series, Index, MultiIndex, Categorical from pandas.compat import StringIO -from pandas.types.dtypes import CategoricalDtype +from pandas.core.dtypes.dtypes import CategoricalDtype from pandas.errors import ParserWarning diff --git a/pandas/tests/io/test_feather.py b/pandas/tests/io/test_feather.py index 3fad2637ef057..232bb126d9d67 100644 --- a/pandas/tests/io/test_feather.py +++ b/pandas/tests/io/test_feather.py @@ -11,6 +11,7 @@ from pandas.util.testing import assert_frame_equal, ensure_clean +@pytest.mark.single class TestFeather(object): def check_error_on_write(self, df, exc): @@ -52,6 +53,7 @@ def test_basic(self): 'dtns': pd.date_range('20130101', periods=3, freq='ns')}) + assert df.dttz.dtype.tz.zone == 'US/Eastern' self.check_round_trip(df) def test_strided_data_issues(self): diff --git a/pandas/tests/io/test_sql.py b/pandas/tests/io/test_sql.py index b4e8d6a3b972c..ce411bb4d5c4e 100644 --- a/pandas/tests/io/test_sql.py +++ b/pandas/tests/io/test_sql.py @@ -31,8 +31,9 @@ from datetime import datetime, date, time -from pandas.types.common import (is_object_dtype, is_datetime64_dtype, - is_datetime64tz_dtype) +from pandas.core.dtypes.common import ( + is_object_dtype, is_datetime64_dtype, + is_datetime64tz_dtype) from pandas import DataFrame, Series, Index, MultiIndex, isnull, concat from pandas import date_range, to_datetime, to_timedelta, Timestamp import pandas.compat as compat diff --git a/pandas/tests/io/test_stata.py b/pandas/tests/io/test_stata.py index db594889c91ee..50d3342c56522 100644 --- a/pandas/tests/io/test_stata.py +++ b/pandas/tests/io/test_stata.py @@ -20,7 +20,7 @@ from pandas.io.stata import (read_stata, StataReader, InvalidColumnName, PossiblePrecisionLoss, StataMissingValue) from pandas._libs.tslib import NaT -from pandas.types.common import is_categorical_dtype +from pandas.core.dtypes.common import is_categorical_dtype class TestStata(tm.TestCase): diff --git a/pandas/tests/plotting/common.py b/pandas/tests/plotting/common.py index d81f73e73ae69..0ffd53b149d7a 100644 --- a/pandas/tests/plotting/common.py +++ b/pandas/tests/plotting/common.py @@ -8,7 +8,7 @@ from pandas import DataFrame, Series from pandas.compat import zip, iteritems from pandas.util.decorators import cache_readonly -from pandas.types.api import is_list_like +from pandas.core.dtypes.api import is_list_like import pandas.util.testing as tm from pandas.util.testing import (ensure_clean, assert_is_valid_plot_return_object) diff --git a/pandas/tests/plotting/test_frame.py b/pandas/tests/plotting/test_frame.py index 404752b567f63..fe07f5b9f193e 100644 --- a/pandas/tests/plotting/test_frame.py +++ b/pandas/tests/plotting/test_frame.py @@ -11,7 +11,7 @@ import pandas as pd from pandas import (Series, DataFrame, MultiIndex, PeriodIndex, date_range, bdate_range) -from pandas.types.api import is_list_like +from pandas.core.dtypes.api import is_list_like from pandas.compat import range, lrange, lmap, lzip, u, zip, PY3 from pandas.formats.printing import pprint_thing import pandas.util.testing as tm diff --git a/pandas/tests/series/test_constructors.py b/pandas/tests/series/test_constructors.py index f4297208b2e26..24b2a12d70709 100644 --- a/pandas/tests/series/test_constructors.py +++ b/pandas/tests/series/test_constructors.py @@ -8,7 +8,9 @@ import numpy.ma as ma import pandas as pd -from pandas.types.common import is_categorical_dtype, is_datetime64tz_dtype +from pandas.core.dtypes.common import ( + is_categorical_dtype, + is_datetime64tz_dtype) from pandas import (Index, Series, isnull, date_range, NaT, period_range, MultiIndex, IntervalIndex) from pandas.tseries.index import Timestamp, DatetimeIndex diff --git a/pandas/tests/series/test_datetime_values.py b/pandas/tests/series/test_datetime_values.py index 89f972a33a630..8825ba5607a20 100644 --- a/pandas/tests/series/test_datetime_values.py +++ b/pandas/tests/series/test_datetime_values.py @@ -6,7 +6,7 @@ import numpy as np import pandas as pd -from pandas.types.common import is_integer_dtype, is_list_like +from pandas.core.dtypes.common import is_integer_dtype, is_list_like from pandas import (Index, Series, DataFrame, bdate_range, date_range, period_range, timedelta_range, PeriodIndex, Timestamp, DatetimeIndex, TimedeltaIndex) diff --git a/pandas/tests/series/test_indexing.py b/pandas/tests/series/test_indexing.py index 48410c1c73479..6c1d77acd70d5 100644 --- a/pandas/tests/series/test_indexing.py +++ b/pandas/tests/series/test_indexing.py @@ -8,7 +8,7 @@ import pandas as pd import pandas._libs.index as _index -from pandas.types.common import is_integer, is_scalar +from pandas.core.dtypes.common import is_integer, is_scalar from pandas import (Index, Series, DataFrame, isnull, date_range, NaT, MultiIndex, Timestamp, DatetimeIndex, Timedelta) diff --git a/pandas/tests/series/test_quantile.py b/pandas/tests/series/test_quantile.py index 5aca34fb86576..339d871b63049 100644 --- a/pandas/tests/series/test_quantile.py +++ b/pandas/tests/series/test_quantile.py @@ -7,7 +7,7 @@ from pandas import (Index, Series, _np_version_under1p9) from pandas.tseries.index import Timestamp -from pandas.types.common import is_integer +from pandas.core.dtypes.common import is_integer import pandas.util.testing as tm from .common import TestData diff --git a/pandas/tests/sparse/common.py b/pandas/tests/sparse/common.py deleted file mode 100644 index 3aeef8d436e1a..0000000000000 --- a/pandas/tests/sparse/common.py +++ /dev/null @@ -1,10 +0,0 @@ -import pytest - -import pandas.util.testing as tm - - -@pytest.fixture(params=['bsr', 'coo', 'csc', 'csr', 'dia', 'dok', 'lil']) -def spmatrix(request): - tm._skip_if_no_scipy() - from scipy import sparse - return getattr(sparse, request.param + '_matrix') diff --git a/pandas/tests/test_base.py b/pandas/tests/test_base.py index 4a1cf6314aaed..91c06a2c30e50 100644 --- a/pandas/tests/test_base.py +++ b/pandas/tests/test_base.py @@ -9,8 +9,9 @@ import pandas as pd import pandas.compat as compat -from pandas.types.common import (is_object_dtype, is_datetimetz, - needs_i8_conversion) +from pandas.core.dtypes.common import ( + is_object_dtype, is_datetimetz, + needs_i8_conversion) import pandas.util.testing as tm from pandas import (Series, Index, DatetimeIndex, TimedeltaIndex, PeriodIndex, Timedelta, IntervalIndex, Interval) diff --git a/pandas/tests/test_categorical.py b/pandas/tests/test_categorical.py index dd370f0a20c2e..3296673e96316 100644 --- a/pandas/tests/test_categorical.py +++ b/pandas/tests/test_categorical.py @@ -9,10 +9,11 @@ import numpy as np -from pandas.types.dtypes import CategoricalDtype -from pandas.types.common import (is_categorical_dtype, - is_float_dtype, - is_integer_dtype) +from pandas.core.dtypes.dtypes import CategoricalDtype +from pandas.core.dtypes.common import ( + is_categorical_dtype, + is_float_dtype, + is_integer_dtype) import pandas as pd import pandas.compat as compat diff --git a/pandas/tests/test_expressions.py b/pandas/tests/test_expressions.py index dc4787176a0b5..b353f73f4004d 100644 --- a/pandas/tests/test_expressions.py +++ b/pandas/tests/test_expressions.py @@ -12,7 +12,7 @@ import numpy as np from pandas.core.api import DataFrame, Panel -from pandas.computation import expressions as expr +from pandas.core.computation import expressions as expr from pandas import compat, _np_version_under1p11 from pandas.util.testing import (assert_almost_equal, assert_series_equal, assert_frame_equal, assert_panel_equal, diff --git a/pandas/tests/test_generic.py b/pandas/tests/test_generic.py index 118039d1f354c..80059277407c3 100644 --- a/pandas/tests/test_generic.py +++ b/pandas/tests/test_generic.py @@ -11,7 +11,7 @@ import pandas as pd from distutils.version import LooseVersion -from pandas.types.common import is_scalar +from pandas.core.dtypes.common import is_scalar from pandas import (Index, Series, DataFrame, Panel, isnull, date_range, period_range, Panel4D) from pandas.core.index import MultiIndex diff --git a/pandas/tests/test_internals.py b/pandas/tests/test_internals.py index af7c584249416..b18214bbef926 100644 --- a/pandas/tests/test_internals.py +++ b/pandas/tests/test_internals.py @@ -12,7 +12,7 @@ from pandas import (Index, MultiIndex, DataFrame, DatetimeIndex, Series, Categorical) from pandas.compat import OrderedDict, lrange -from pandas.sparse.array import SparseArray +from pandas.core.sparse.array import SparseArray from pandas.core.internals import (BlockPlacement, SingleBlockManager, make_block, BlockManager) import pandas.core.algorithms as algos diff --git a/pandas/tests/test_multilevel.py b/pandas/tests/test_multilevel.py index e3193cddbaaab..648a3b98b245a 100755 --- a/pandas/tests/test_multilevel.py +++ b/pandas/tests/test_multilevel.py @@ -12,7 +12,7 @@ from pandas import Panel, DataFrame, Series, notnull, isnull, Timestamp from pandas.core.common import UnsortedIndexError -from pandas.types.common import is_float_dtype, is_integer_dtype +from pandas.core.dtypes.common import is_float_dtype, is_integer_dtype import pandas.core.common as com import pandas.util.testing as tm from pandas.compat import (range, lrange, StringIO, lzip, u, product as diff --git a/pandas/tests/test_nanops.py b/pandas/tests/test_nanops.py index 54de8c1e34031..20a9238310ccf 100644 --- a/pandas/tests/test_nanops.py +++ b/pandas/tests/test_nanops.py @@ -6,7 +6,7 @@ import warnings import numpy as np from pandas import Series, isnull, _np_version_under1p9 -from pandas.types.common import is_integer_dtype +from pandas.core.dtypes.common import is_integer_dtype import pandas.core.nanops as nanops import pandas.util.testing as tm diff --git a/pandas/tests/test_panel.py b/pandas/tests/test_panel.py index bc7bb8a4dfec1..f0e53046e3552 100644 --- a/pandas/tests/test_panel.py +++ b/pandas/tests/test_panel.py @@ -9,7 +9,7 @@ import numpy as np import pandas as pd -from pandas.types.common import is_float_dtype +from pandas.core.dtypes.common import is_float_dtype from pandas import (Series, DataFrame, Index, date_range, isnull, notnull, pivot, MultiIndex) from pandas.core.nanops import nanall, nanany diff --git a/pandas/tests/test_panel4d.py b/pandas/tests/test_panel4d.py index c0511581cd299..3af47a2b408bc 100644 --- a/pandas/tests/test_panel4d.py +++ b/pandas/tests/test_panel4d.py @@ -6,7 +6,7 @@ from warnings import catch_warnings import numpy as np -from pandas.types.common import is_float_dtype +from pandas.core.dtypes.common import is_float_dtype from pandas import Series, Index, isnull, notnull from pandas.core.panel import Panel from pandas.core.panel4d import Panel4D diff --git a/pandas/tests/tools/test_merge.py b/pandas/tests/tools/test_merge.py index 8011bc4a1cfc2..cc4a97df33801 100644 --- a/pandas/tests/tools/test_merge.py +++ b/pandas/tests/tools/test_merge.py @@ -12,8 +12,8 @@ from pandas.tools.concat import concat from pandas.tools.merge import merge, MergeError from pandas.util.testing import assert_frame_equal, assert_series_equal -from pandas.types.dtypes import CategoricalDtype -from pandas.types.common import is_categorical_dtype, is_object_dtype +from pandas.core.dtypes.dtypes import CategoricalDtype +from pandas.core.dtypes.common import is_categorical_dtype, is_object_dtype from pandas import DataFrame, Index, MultiIndex, Series, Categorical import pandas.util.testing as tm diff --git a/pandas/tests/tools/test_union_categoricals.py b/pandas/tests/tools/test_union_categoricals.py index 299b60f2a00b0..f9224d0126f6c 100644 --- a/pandas/tests/tools/test_union_categoricals.py +++ b/pandas/tests/tools/test_union_categoricals.py @@ -1,7 +1,7 @@ import numpy as np import pandas as pd from pandas import Categorical, Series, CategoricalIndex -from pandas.types.concat import union_categoricals +from pandas.core.dtypes.concat import union_categoricals from pandas.util import testing as tm diff --git a/pandas/tests/tseries/test_resample.py b/pandas/tests/tseries/test_resample.py index 98664c1ec118c..e81dfd8649e8e 100755 --- a/pandas/tests/tseries/test_resample.py +++ b/pandas/tests/tseries/test_resample.py @@ -12,7 +12,7 @@ from pandas import (Series, DataFrame, Panel, Index, isnull, notnull, Timestamp) -from pandas.types.generic import ABCSeries, ABCDataFrame +from pandas.core.dtypes.generic import ABCSeries, ABCDataFrame from pandas.compat import range, lrange, zip, product, OrderedDict from pandas.core.base import SpecificationError from pandas.errors import UnsupportedFunctionCall diff --git a/pandas/tests/tseries/test_timezones.py b/pandas/tests/tseries/test_timezones.py index 3e1b29f4c282c..125e031b5e3a2 100644 --- a/pandas/tests/tseries/test_timezones.py +++ b/pandas/tests/tseries/test_timezones.py @@ -11,7 +11,7 @@ import pandas.tseries.offsets as offsets from pandas.compat import lrange, zip from pandas.tseries.index import bdate_range, date_range -from pandas.types.dtypes import DatetimeTZDtype +from pandas.core.dtypes.dtypes import DatetimeTZDtype from pandas._libs import tslib from pandas import (Index, Series, DataFrame, isnull, Timestamp, NaT, DatetimeIndex, to_datetime) diff --git a/pandas/tools/concat.py b/pandas/tools/concat.py index 5df9a5abb78b2..af2eb734a02f6 100644 --- a/pandas/tools/concat.py +++ b/pandas/tools/concat.py @@ -12,7 +12,7 @@ from pandas.core.internals import concatenate_block_managers from pandas.core import common as com from pandas.core.generic import NDFrame -import pandas.types.concat as _concat +import pandas.core.dtypes.concat as _concat # --------------------------------------------------------------------- # Concatenate DataFrame objects diff --git a/pandas/tools/hashing.py b/pandas/tools/hashing.py index 85ceb439435ee..275c1c87ea57a 100644 --- a/pandas/tools/hashing.py +++ b/pandas/tools/hashing.py @@ -7,10 +7,14 @@ from pandas import Series, factorize, Categorical, Index, MultiIndex from pandas.tools import libhashing as _hash from pandas._libs.lib import is_bool_array -from pandas.types.generic import ABCIndexClass, ABCSeries, ABCDataFrame -from pandas.types.common import (is_categorical_dtype, is_numeric_dtype, - is_datetime64_dtype, is_timedelta64_dtype, - is_list_like) +from pandas.core.dtypes.generic import ( + ABCIndexClass, + ABCSeries, + ABCDataFrame) +from pandas.core.dtypes.common import ( + is_categorical_dtype, is_numeric_dtype, + is_datetime64_dtype, is_timedelta64_dtype, + is_list_like) # 16 byte long hashing key _default_hash_key = '0123456789123456' diff --git a/pandas/tools/merge.py b/pandas/tools/merge.py index 7de2549cadfc7..53208fbdd5529 100644 --- a/pandas/tools/merge.py +++ b/pandas/tools/merge.py @@ -14,24 +14,25 @@ from pandas import (Categorical, Series, DataFrame, Index, MultiIndex, Timedelta) from pandas.core.frame import _merge_doc -from pandas.types.common import (is_datetime64tz_dtype, - is_datetime64_dtype, - needs_i8_conversion, - is_int64_dtype, - is_categorical_dtype, - is_integer_dtype, - is_float_dtype, - is_numeric_dtype, - is_integer, - is_int_or_datetime_dtype, - is_dtype_equal, - is_bool, - is_list_like, - _ensure_int64, - _ensure_float64, - _ensure_object, - _get_dtype) -from pandas.types.missing import na_value_for_dtype +from pandas.core.dtypes.common import ( + is_datetime64tz_dtype, + is_datetime64_dtype, + needs_i8_conversion, + is_int64_dtype, + is_categorical_dtype, + is_integer_dtype, + is_float_dtype, + is_numeric_dtype, + is_integer, + is_int_or_datetime_dtype, + is_dtype_equal, + is_bool, + is_list_like, + _ensure_int64, + _ensure_float64, + _ensure_object, + _get_dtype) +from pandas.core.dtypes.missing import na_value_for_dtype from pandas.core.internals import (items_overlap_with_suffix, concatenate_block_managers) from pandas.util.decorators import Appender, Substitution diff --git a/pandas/tools/pivot.py b/pandas/tools/pivot.py index e23beb8332fd4..11ca2e548f171 100644 --- a/pandas/tools/pivot.py +++ b/pandas/tools/pivot.py @@ -1,7 +1,7 @@ # pylint: disable=E1103 -from pandas.types.common import is_list_like, is_scalar +from pandas.core.dtypes.common import is_list_like, is_scalar from pandas import Series, DataFrame, MultiIndex, Index, concat from pandas.core.groupby import Grouper from pandas.tools.util import cartesian_product diff --git a/pandas/tools/tile.py b/pandas/tools/tile.py index 2a258d4a7b7e5..746742f47f2aa 100644 --- a/pandas/tools/tile.py +++ b/pandas/tools/tile.py @@ -2,13 +2,14 @@ Quantilization functions and related stuff """ -from pandas.types.missing import isnull -from pandas.types.common import (is_integer, - is_scalar, - is_categorical_dtype, - is_datetime64_dtype, - is_timedelta64_dtype, - _ensure_int64) +from pandas.core.dtypes.missing import isnull +from pandas.core.dtypes.common import ( + is_integer, + is_scalar, + is_categorical_dtype, + is_datetime64_dtype, + is_timedelta64_dtype, + _ensure_int64) import pandas.core.algorithms as algos import pandas.core.nanops as nanops diff --git a/pandas/tools/util.py b/pandas/tools/util.py index 263d2f16a4216..baf968440858d 100644 --- a/pandas/tools/util.py +++ b/pandas/tools/util.py @@ -1,15 +1,16 @@ import numpy as np import pandas._libs.lib as lib -from pandas.types.common import (is_number, - is_numeric_dtype, - is_datetime_or_timedelta_dtype, - is_list_like, - _ensure_object, - is_decimal, - is_scalar as isscalar) - -from pandas.types.cast import maybe_downcast_to_dtype +from pandas.core.dtypes.common import ( + is_number, + is_numeric_dtype, + is_datetime_or_timedelta_dtype, + is_list_like, + _ensure_object, + is_decimal, + is_scalar as isscalar) + +from pandas.core.dtypes.cast import maybe_downcast_to_dtype import pandas as pd from pandas.compat import reduce diff --git a/pandas/tseries/base.py b/pandas/tseries/base.py index 48d236177b474..cf79cadef78dd 100644 --- a/pandas/tseries/base.py +++ b/pandas/tseries/base.py @@ -9,13 +9,15 @@ from pandas.compat.numpy import function as nv import numpy as np -from pandas.types.common import (is_integer, is_float, - is_bool_dtype, _ensure_int64, - is_scalar, is_dtype_equal, - is_list_like) -from pandas.types.generic import (ABCIndex, ABCSeries, - ABCPeriodIndex, ABCIndexClass) -from pandas.types.missing import isnull +from pandas.core.dtypes.common import ( + is_integer, is_float, + is_bool_dtype, _ensure_int64, + is_scalar, is_dtype_equal, + is_list_like) +from pandas.core.dtypes.generic import ( + ABCIndex, ABCSeries, + ABCPeriodIndex, ABCIndexClass) +from pandas.core.dtypes.missing import isnull from pandas.core import common as com, algorithms from pandas.core.algorithms import checked_add_with_arr from pandas.core.common import AbstractMethodError @@ -28,7 +30,7 @@ from pandas.core.index import Index from pandas.indexes.base import _index_shared_docs from pandas.util.decorators import Appender, cache_readonly -import pandas.types.concat as _concat +import pandas.core.dtypes.concat as _concat import pandas.tseries.frequencies as frequencies import pandas.indexes.base as ibase diff --git a/pandas/tseries/common.py b/pandas/tseries/common.py index 955edce2591e6..2154cfd4b2857 100644 --- a/pandas/tseries/common.py +++ b/pandas/tseries/common.py @@ -4,11 +4,12 @@ import numpy as np -from pandas.types.common import (is_period_arraylike, - is_datetime_arraylike, is_integer_dtype, - is_datetime64_dtype, is_datetime64tz_dtype, - is_timedelta64_dtype, is_categorical_dtype, - is_list_like) +from pandas.core.dtypes.common import ( + is_period_arraylike, + is_datetime_arraylike, is_integer_dtype, + is_datetime64_dtype, is_datetime64tz_dtype, + is_timedelta64_dtype, is_categorical_dtype, + is_list_like) from pandas.core.base import PandasDelegate, NoNewAttributesMixin from pandas.tseries.index import DatetimeIndex diff --git a/pandas/tseries/frequencies.py b/pandas/tseries/frequencies.py index 8013947babc5a..06d70f1456518 100644 --- a/pandas/tseries/frequencies.py +++ b/pandas/tseries/frequencies.py @@ -6,11 +6,12 @@ import numpy as np -from pandas.types.generic import ABCSeries -from pandas.types.common import (is_integer, - is_period_arraylike, - is_timedelta64_dtype, - is_datetime64_dtype) +from pandas.core.dtypes.generic import ABCSeries +from pandas.core.dtypes.common import ( + is_integer, + is_period_arraylike, + is_timedelta64_dtype, + is_datetime64_dtype) import pandas.core.algorithms as algos from pandas.core.algorithms import unique diff --git a/pandas/tseries/index.py b/pandas/tseries/index.py index 2c14d4f8ea79e..95594652e3943 100644 --- a/pandas/tseries/index.py +++ b/pandas/tseries/index.py @@ -7,24 +7,25 @@ import numpy as np from pandas.core.base import _shared_docs -from pandas.types.common import (_NS_DTYPE, _INT64_DTYPE, - is_object_dtype, is_datetime64_dtype, - is_datetimetz, is_dtype_equal, - is_integer, is_float, - is_integer_dtype, - is_datetime64_ns_dtype, - is_period_dtype, - is_bool_dtype, - is_string_dtype, - is_list_like, - is_scalar, - pandas_dtype, - _ensure_int64) -from pandas.types.generic import ABCSeries -from pandas.types.dtypes import DatetimeTZDtype -from pandas.types.missing import isnull - -import pandas.types.concat as _concat +from pandas.core.dtypes.common import ( + _NS_DTYPE, _INT64_DTYPE, + is_object_dtype, is_datetime64_dtype, + is_datetimetz, is_dtype_equal, + is_integer, is_float, + is_integer_dtype, + is_datetime64_ns_dtype, + is_period_dtype, + is_bool_dtype, + is_string_dtype, + is_list_like, + is_scalar, + pandas_dtype, + _ensure_int64) +from pandas.core.dtypes.generic import ABCSeries +from pandas.core.dtypes.dtypes import DatetimeTZDtype +from pandas.core.dtypes.missing import isnull + +import pandas.core.dtypes.concat as _concat from pandas.errors import PerformanceWarning from pandas.core.common import _values_from_object, _maybe_box diff --git a/pandas/tseries/offsets.py b/pandas/tseries/offsets.py index 2b6a684fc39dd..a097c56a0ffd3 100644 --- a/pandas/tseries/offsets.py +++ b/pandas/tseries/offsets.py @@ -3,7 +3,7 @@ from pandas import compat import numpy as np -from pandas.types.generic import ABCSeries, ABCDatetimeIndex, ABCPeriod +from pandas.core.dtypes.generic import ABCSeries, ABCDatetimeIndex, ABCPeriod from pandas.tseries.tools import to_datetime, normalize_date from pandas.core.common import AbstractMethodError diff --git a/pandas/tseries/period.py b/pandas/tseries/period.py index 7f7b3286fd4f8..66275925ff355 100644 --- a/pandas/tseries/period.py +++ b/pandas/tseries/period.py @@ -5,21 +5,22 @@ from pandas.core import common as com -from pandas.types.common import (is_integer, - is_float, - is_object_dtype, - is_integer_dtype, - is_float_dtype, - is_scalar, - is_datetime64_dtype, - is_datetime64tz_dtype, - is_timedelta64_dtype, - is_period_dtype, - is_bool_dtype, - pandas_dtype, - _ensure_object) -from pandas.types.dtypes import PeriodDtype -from pandas.types.generic import ABCSeries +from pandas.core.dtypes.common import ( + is_integer, + is_float, + is_object_dtype, + is_integer_dtype, + is_float_dtype, + is_scalar, + is_datetime64_dtype, + is_datetime64tz_dtype, + is_timedelta64_dtype, + is_period_dtype, + is_bool_dtype, + pandas_dtype, + _ensure_object) +from pandas.core.dtypes.dtypes import PeriodDtype +from pandas.core.dtypes.generic import ABCSeries import pandas.tseries.frequencies as frequencies from pandas.tseries.frequencies import get_freq_code as _gfc diff --git a/pandas/tseries/tdi.py b/pandas/tseries/tdi.py index d0f373fcc5a45..c26f023ea942a 100644 --- a/pandas/tseries/tdi.py +++ b/pandas/tseries/tdi.py @@ -2,18 +2,19 @@ from datetime import timedelta import numpy as np -from pandas.types.common import (_TD_DTYPE, - is_integer, is_float, - is_bool_dtype, - is_list_like, - is_scalar, - is_integer_dtype, - is_object_dtype, - is_timedelta64_dtype, - is_timedelta64_ns_dtype, - _ensure_int64) -from pandas.types.missing import isnull -from pandas.types.generic import ABCSeries +from pandas.core.dtypes.common import ( + _TD_DTYPE, + is_integer, is_float, + is_bool_dtype, + is_list_like, + is_scalar, + is_integer_dtype, + is_object_dtype, + is_timedelta64_dtype, + is_timedelta64_ns_dtype, + _ensure_int64) +from pandas.core.dtypes.missing import isnull +from pandas.core.dtypes.generic import ABCSeries from pandas.core.common import _maybe_box, _values_from_object, is_bool_indexer from pandas.core.index import Index, Int64Index @@ -24,7 +25,7 @@ from pandas.core.base import _shared_docs from pandas.indexes.base import _index_shared_docs import pandas.core.common as com -import pandas.types.concat as _concat +import pandas.core.dtypes.concat as _concat from pandas.util.decorators import Appender, Substitution, deprecate_kwarg from pandas.tseries.base import TimelikeOps, DatetimeIndexOpsMixin from pandas.tseries.timedeltas import (to_timedelta, diff --git a/pandas/tseries/timedeltas.py b/pandas/tseries/timedeltas.py index ead602ee80e32..fe03f89fdb2c5 100644 --- a/pandas/tseries/timedeltas.py +++ b/pandas/tseries/timedeltas.py @@ -6,11 +6,12 @@ import pandas as pd import pandas._libs.tslib as tslib -from pandas.types.common import (_ensure_object, - is_integer_dtype, - is_timedelta64_dtype, - is_list_like) -from pandas.types.generic import ABCSeries, ABCIndexClass +from pandas.core.dtypes.common import ( + _ensure_object, + is_integer_dtype, + is_timedelta64_dtype, + is_list_like) +from pandas.core.dtypes.generic import ABCSeries, ABCIndexClass def to_timedelta(arg, unit='ns', box=True, errors='raise'): diff --git a/pandas/tseries/tools.py b/pandas/tseries/tools.py index 9d5821d859187..db7aa5974e562 100644 --- a/pandas/tseries/tools.py +++ b/pandas/tseries/tools.py @@ -4,19 +4,21 @@ from pandas._libs import lib, tslib -from pandas.types.common import (_ensure_object, - is_datetime64_ns_dtype, - is_datetime64_dtype, - is_datetime64tz_dtype, - is_integer_dtype, - is_integer, - is_float, - is_list_like, - is_scalar, - is_numeric_dtype) -from pandas.types.generic import (ABCIndexClass, ABCSeries, - ABCDataFrame) -from pandas.types.missing import notnull +from pandas.core.dtypes.common import ( + _ensure_object, + is_datetime64_ns_dtype, + is_datetime64_dtype, + is_datetime64tz_dtype, + is_integer_dtype, + is_integer, + is_float, + is_list_like, + is_scalar, + is_numeric_dtype) +from pandas.core.dtypes.generic import ( + ABCIndexClass, ABCSeries, + ABCDataFrame) +from pandas.core.dtypes.missing import notnull from pandas.core import algorithms import pandas.compat as compat diff --git a/pandas/tseries/util.py b/pandas/tseries/util.py index da3bb075dd02c..5934f5843736c 100644 --- a/pandas/tseries/util.py +++ b/pandas/tseries/util.py @@ -2,7 +2,7 @@ from pandas.compat import lrange import numpy as np -from pandas.types.common import _ensure_platform_int +from pandas.core.dtypes.common import _ensure_platform_int from pandas.core.frame import DataFrame import pandas.core.algorithms as algorithms diff --git a/pandas/util/testing.py b/pandas/util/testing.py index c73cca56f975a..638a190d810a5 100644 --- a/pandas/util/testing.py +++ b/pandas/util/testing.py @@ -23,15 +23,16 @@ import numpy as np import pandas as pd -from pandas.types.missing import array_equivalent -from pandas.types.common import (is_datetimelike_v_numeric, - is_datetimelike_v_object, - is_number, is_bool, - needs_i8_conversion, - is_categorical_dtype, - is_interval_dtype, - is_sequence, - is_list_like) +from pandas.core.dtypes.missing import array_equivalent +from pandas.core.dtypes.common import ( + is_datetimelike_v_numeric, + is_datetimelike_v_object, + is_number, is_bool, + needs_i8_conversion, + is_categorical_dtype, + is_interval_dtype, + is_sequence, + is_list_like) from pandas.formats.printing import pprint_thing from pandas.core.algorithms import take_1d @@ -42,7 +43,7 @@ StringIO, PY3 ) -from pandas.computation import expressions as expr +from pandas.core.computation import expressions as expr from pandas import (bdate_range, CategoricalIndex, Categorical, IntervalIndex, DatetimeIndex, TimedeltaIndex, PeriodIndex, RangeIndex, @@ -401,8 +402,9 @@ def _incompat_bottleneck_version(method): def skip_if_no_ne(engine='numexpr'): - from pandas.computation.expressions import (_USE_NUMEXPR, - _NUMEXPR_INSTALLED) + from pandas.core.computation.expressions import ( + _USE_NUMEXPR, + _NUMEXPR_INSTALLED) if engine == 'numexpr': if not _USE_NUMEXPR: @@ -1539,10 +1541,10 @@ def assert_sp_array_equal(left, right, check_dtype=True): check_dtype=check_dtype) # SparseIndex comparison - assertIsInstance(left.sp_index, - pd.sparse.libsparse.SparseIndex, '[SparseIndex]') - assertIsInstance(right.sp_index, - pd.sparse.libsparse.SparseIndex, '[SparseIndex]') + assertIsInstance( + left.sp_index, pd.core.sparse.libsparse.SparseIndex, '[SparseIndex]') + assertIsInstance( + right.sp_index, pd.core.sparse.libsparse.SparseIndex, '[SparseIndex]') if not left.sp_index.equals(right.sp_index): raise_assert_detail('SparseArray.index', 'index are not equal', diff --git a/pandas/util/testing.pyx b/pandas/util/testing.pyx index cda21ba9c4ce1..9495af87f5c31 100644 --- a/pandas/util/testing.pyx +++ b/pandas/util/testing.pyx @@ -1,8 +1,8 @@ import numpy as np from pandas import compat -from pandas.types.missing import isnull, array_equivalent -from pandas.types.common import is_dtype_equal +from pandas.core.dtypes.missing import isnull, array_equivalent +from pandas.core.dtypes.common import is_dtype_equal cdef NUMERIC_TYPES = ( bool, diff --git a/pandas/util/validators.py b/pandas/util/validators.py index f22412a2bcd17..6b19904f4a665 100644 --- a/pandas/util/validators.py +++ b/pandas/util/validators.py @@ -3,7 +3,7 @@ for validating data or function arguments """ -from pandas.types.common import is_bool +from pandas.core.dtypes.common import is_bool def _check_arg_length(fname, args, max_fname_arg_count, compat_args): diff --git a/setup.py b/setup.py index d76c6fa508008..b7c4581c4ecfe 100755 --- a/setup.py +++ b/setup.py @@ -118,7 +118,7 @@ def is_platform_mac(): 'hashtable': ['_libs/hashtable_class_helper.pxi.in', '_libs/hashtable_func_helper.pxi.in'], 'index': ['_libs/index_class_helper.pxi.in'], - 'sparse': ['sparse/sparse_op_helper.pxi.in'], + 'sparse': ['core/sparse/sparse_op_helper.pxi.in'], 'interval': ['_libs/intervaltree.pxi.in'] } @@ -338,7 +338,7 @@ class CheckSDist(sdist_class): 'pandas/_libs/join.pyx', 'pandas/_libs/interval.pyx', 'pandas/core/window.pyx', - 'pandas/sparse/sparse.pyx', + 'pandas/core/sparse/sparse.pyx', 'pandas/util/testing.pyx', 'pandas/tools/hash.pyx', 'pandas/io/parsers.pyx', @@ -523,8 +523,8 @@ def pxd(name): 'pandas/_libs/src/numpy_helper.h'], 'sources': ['pandas/_libs/src/parser/tokenizer.c', 'pandas/_libs/src/parser/io.c']}, - 'sparse.libsparse': {'pyxfile': 'sparse/sparse', - 'depends': (['pandas/sparse/sparse.pyx'] + + 'core.sparse.libsparse': {'pyxfile': 'core/sparse/sparse', + 'depends': (['pandas/core/sparse/sparse.pyx'] + _pxi_dep['sparse'])}, 'util.libtesting': {'pyxfile': 'util/testing', 'depends': ['pandas/util/testing.pyx']}, @@ -636,11 +636,12 @@ def pxd(name): packages=['pandas', 'pandas.api', 'pandas.api.types', - 'pandas.api.lib', 'pandas.compat', 'pandas.compat.numpy', - 'pandas.computation', 'pandas.core', + 'pandas.core.dtypes', + 'pandas.core.computation', + 'pandas.core.sparse', 'pandas.indexes', 'pandas.errors', 'pandas.io', @@ -650,12 +651,13 @@ def pxd(name): 'pandas._libs', 'pandas.formats', 'pandas.plotting', - 'pandas.sparse', 'pandas.stats', 'pandas.util', 'pandas.tests', 'pandas.tests.api', - 'pandas.tests.computation', + 'pandas.tests.core.dtypes', + 'pandas.tests.core.computation', + 'pandas.tests.core.sparse', 'pandas.tests.frame', 'pandas.tests.indexes', 'pandas.tests.indexes.datetimes', @@ -670,14 +672,11 @@ def pxd(name): 'pandas.tests.series', 'pandas.tests.formats', 'pandas.tests.scalar', - 'pandas.tests.sparse', 'pandas.tests.tseries', 'pandas.tests.tools', - 'pandas.tests.types', 'pandas.tests.plotting', 'pandas.tools', 'pandas.tseries', - 'pandas.types', 'pandas.util.clipboard' ], package_data={'pandas.tests': ['data/*.csv'], diff --git a/vb_suite/binary_ops.py b/vb_suite/binary_ops.py index 7c821374a83ab..edc29bf3eec37 100644 --- a/vb_suite/binary_ops.py +++ b/vb_suite/binary_ops.py @@ -21,7 +21,7 @@ start_date=datetime(2012, 1, 1)) setup = common_setup + """ -import pandas.computation.expressions as expr +import pandas.core.computation.expressions as expr df = DataFrame(np.random.randn(20000, 100)) df2 = DataFrame(np.random.randn(20000, 100)) expr.set_numexpr_threads(1) @@ -32,7 +32,7 @@ start_date=datetime(2013, 2, 26)) setup = common_setup + """ -import pandas.computation.expressions as expr +import pandas.core.computation.expressions as expr df = DataFrame(np.random.randn(20000, 100)) df2 = DataFrame(np.random.randn(20000, 100)) expr.set_use_numexpr(False) @@ -53,7 +53,7 @@ start_date=datetime(2012, 1, 1)) setup = common_setup + """ -import pandas.computation.expressions as expr +import pandas.core.computation.expressions as expr df = DataFrame(np.random.randn(20000, 100)) df2 = DataFrame(np.random.randn(20000, 100)) expr.set_numexpr_threads(1) @@ -63,7 +63,7 @@ start_date=datetime(2013, 2, 26)) setup = common_setup + """ -import pandas.computation.expressions as expr +import pandas.core.computation.expressions as expr df = DataFrame(np.random.randn(20000, 100)) df2 = DataFrame(np.random.randn(20000, 100)) expr.set_use_numexpr(False) @@ -129,7 +129,7 @@ start_date=datetime(2012, 1, 1)) setup = common_setup + """ -import pandas.computation.expressions as expr +import pandas.core.computation.expressions as expr df = DataFrame(np.random.randn(20000, 100)) df2 = DataFrame(np.random.randn(20000, 100)) expr.set_numexpr_threads(1) @@ -139,7 +139,7 @@ start_date=datetime(2013, 2, 26)) setup = common_setup + """ -import pandas.computation.expressions as expr +import pandas.core.computation.expressions as expr df = DataFrame(np.random.randn(20000, 100)) df2 = DataFrame(np.random.randn(20000, 100)) expr.set_use_numexpr(False) diff --git a/vb_suite/eval.py b/vb_suite/eval.py index bf80aad956184..011669256a9bc 100644 --- a/vb_suite/eval.py +++ b/vb_suite/eval.py @@ -10,7 +10,7 @@ """ setup = common_setup + """ -import pandas.computation.expressions as expr +import pandas.core.computation.expressions as expr expr.set_numexpr_threads(1) """ diff --git a/vb_suite/indexing.py b/vb_suite/indexing.py index 3d95d52dccd71..ff634bf2a8fc7 100644 --- a/vb_suite/indexing.py +++ b/vb_suite/indexing.py @@ -141,7 +141,7 @@ setup = common_setup + """ try: - import pandas.computation.expressions as expr + import pandas.core.computation.expressions as expr except: expr = None @@ -159,7 +159,7 @@ setup = common_setup + """ try: - import pandas.computation.expressions as expr + import pandas.core.computation.expressions as expr except: expr = None diff --git a/vb_suite/sparse.py b/vb_suite/sparse.py index 53e2778ee0865..b1c1a2f24e41d 100644 --- a/vb_suite/sparse.py +++ b/vb_suite/sparse.py @@ -55,11 +55,11 @@ setup = common_setup + """ import scipy.sparse -import pandas.sparse.series +import pandas.core.sparse.series A = scipy.sparse.coo_matrix(([3.0, 1.0, 2.0], ([1, 0, 0], [0, 2, 3])), shape=(100, 100)) """ -stmt = "ss = pandas.sparse.series.SparseSeries.from_coo(A)" +stmt = "ss = pandas.core.sparse.series.SparseSeries.from_coo(A)" sparse_series_from_coo = Benchmark(stmt, setup, name="sparse_series_from_coo", start_date=datetime(2015, 1, 3))