diff --git a/ci/environment-dev.yaml b/ci/environment-dev.yaml
index 57748fef1a2e5..c72abd0c19516 100644
--- a/ci/environment-dev.yaml
+++ b/ci/environment-dev.yaml
@@ -10,5 +10,5 @@ dependencies:
- python-dateutil>=2.5.0
- python=3
- pytz
- - setuptools
+ - setuptools>=3.3
- sphinx
diff --git a/ci/requirements_dev.txt b/ci/requirements_dev.txt
index e9840388203b1..82f8de277c57b 100644
--- a/ci/requirements_dev.txt
+++ b/ci/requirements_dev.txt
@@ -6,5 +6,5 @@ moto
pytest>=3.1
python-dateutil>=2.5.0
pytz
-setuptools
-sphinx
\ No newline at end of file
+setuptools>=3.3
+sphinx
diff --git a/conda.recipe/meta.yaml b/conda.recipe/meta.yaml
index 8152af84228b8..0b54980d2bc87 100644
--- a/conda.recipe/meta.yaml
+++ b/conda.recipe/meta.yaml
@@ -15,7 +15,7 @@ requirements:
- python
- cython
- numpy x.x
- - setuptools
+ - setuptools >=3.3
run:
- python
diff --git a/doc/source/install.rst b/doc/source/install.rst
index 105135fd2c454..979d5afd0a04f 100644
--- a/doc/source/install.rst
+++ b/doc/source/install.rst
@@ -194,7 +194,7 @@ installed), make sure you have `pytest
Dependencies
------------
-* `setuptools `__
+* `setuptools `__: 3.3.0 or higher
* `NumPy `__: 1.9.0 or higher
* `python-dateutil /https://dateutil.readthedocs.io/en/stable/>`__: 2.5.0 or higher
* `pytz `__
diff --git a/doc/source/whatsnew/v0.22.0.txt b/doc/source/whatsnew/v0.22.0.txt
index 832bba056ada1..db3a1dc4d39e8 100644
--- a/doc/source/whatsnew/v0.22.0.txt
+++ b/doc/source/whatsnew/v0.22.0.txt
@@ -186,6 +186,7 @@ Other API Changes
- :func:`Series.fillna` now raises a ``TypeError`` instead of a ``ValueError`` when passed a list, tuple or DataFrame as a ``value`` (:issue:`18293`)
- :func:`pandas.DataFrame.merge` no longer casts a ``float`` column to ``object`` when merging on ``int`` and ``float`` columns (:issue:`16572`)
- The default NA value for :class:`UInt64Index` has changed from 0 to ``NaN``, which impacts methods that mask with NA, such as ``UInt64Index.where()`` (:issue:`18398`)
+- Refactored ``setup.py`` to use ``find_packages`` instead of explicitly listing out all subpackages (:issue:`18535`)
.. _whatsnew_0220.deprecations:
diff --git a/setup.py b/setup.py
index 19818b07162cf..515e1660fa6de 100755
--- a/setup.py
+++ b/setup.py
@@ -13,7 +13,7 @@
import sys
import shutil
from distutils.version import LooseVersion
-from setuptools import setup, Command
+from setuptools import setup, Command, find_packages
# versioning
import versioneer
@@ -716,100 +716,12 @@ def pxd(name):
setup(name=DISTNAME,
maintainer=AUTHOR,
version=versioneer.get_version(),
- packages=['pandas',
- 'pandas.api',
- 'pandas.api.types',
- 'pandas.compat',
- 'pandas.compat.numpy',
- 'pandas.core',
- 'pandas.core.dtypes',
- 'pandas.core.indexes',
- 'pandas.core.computation',
- 'pandas.core.reshape',
- 'pandas.core.sparse',
- 'pandas.core.tools',
- 'pandas.core.util',
- 'pandas.computation',
- 'pandas.errors',
- 'pandas.formats',
- 'pandas.io',
- 'pandas.io.json',
- 'pandas.io.sas',
- 'pandas.io.msgpack',
- 'pandas.io.formats',
- 'pandas.io.clipboard',
- 'pandas._libs',
- 'pandas._libs.tslibs',
- 'pandas.plotting',
- 'pandas.stats',
- 'pandas.types',
- 'pandas.util',
- 'pandas.tests',
- 'pandas.tests.api',
- 'pandas.tests.dtypes',
- 'pandas.tests.categorical',
- 'pandas.tests.computation',
- 'pandas.tests.sparse',
- 'pandas.tests.frame',
- 'pandas.tests.generic',
- 'pandas.tests.indexing',
- 'pandas.tests.indexes',
- 'pandas.tests.indexes.datetimes',
- 'pandas.tests.indexes.timedeltas',
- 'pandas.tests.indexes.period',
- 'pandas.tests.internals',
- 'pandas.tests.io',
- 'pandas.tests.io.json',
- 'pandas.tests.io.parser',
- 'pandas.tests.io.sas',
- 'pandas.tests.io.msgpack',
- 'pandas.tests.io.formats',
- 'pandas.tests.groupby',
- 'pandas.tests.reshape',
- 'pandas.tests.reshape.merge',
- 'pandas.tests.series',
- 'pandas.tests.scalar',
- 'pandas.tests.tseries',
- 'pandas.tests.tseries.offsets',
- 'pandas.tests.plotting',
- 'pandas.tests.tools',
- 'pandas.tests.util',
- 'pandas.tools',
- 'pandas.tseries',
- ],
- package_data={'pandas.tests': ['data/*.csv'],
- 'pandas.tests.indexes': ['data/*.pickle'],
+ packages=find_packages(include=['pandas', 'pandas.*']),
+ package_data={'': ['data/*', 'templates/*'],
'pandas.tests.io': ['data/legacy_hdf/*.h5',
'data/legacy_pickle/*/*.pickle',
'data/legacy_msgpack/*/*.msgpack',
- 'data/*.csv*',
- 'data/*.dta',
- 'data/*.pickle',
- 'data/*.txt',
- 'data/*.xls',
- 'data/*.xlsx',
- 'data/*.xlsm',
- 'data/*.table',
- 'parser/data/*.csv',
- 'parser/data/*.gz',
- 'parser/data/*.bz2',
- 'parser/data/*.txt',
- 'parser/data/*.tar',
- 'parser/data/*.zip',
- 'parser/data/*.tar.gz',
- 'sas/data/*.csv',
- 'sas/data/*.xpt',
- 'sas/data/*.sas7bdat',
- 'data/*.html',
- 'data/html_encoding/*.html',
- 'json/data/*.json*'],
- 'pandas.tests.io.formats': ['data/*.csv'],
- 'pandas.tests.io.msgpack': ['data/*.mp'],
- 'pandas.tests.reshape': ['data/*.csv'],
- 'pandas.tests.reshape.merge': ['data/*.csv'],
- 'pandas.tests.tseries.offsets': ['data/*.pickle'],
- 'pandas.io.formats': ['templates/*.tpl']
- },
+ 'data/html_encoding/*.html']},
ext_modules=extensions,
maintainer_email=EMAIL,
description=DESCRIPTION,