From 55294ca9aa6b89ed20f8b656fed8646df58e73e2 Mon Sep 17 00:00:00 2001 From: Tom Augspurger Date: Tue, 10 Sep 2019 13:12:54 -0500 Subject: [PATCH 01/15] BLD: Stop shipping cythonized files in sdist * Adds pyproject.toml to support this. * Bumps minimum Cython version to the version supporting Python 3.8. Closes https://github.com/pandas-dev/pandas/issues/28341 --- MANIFEST.in | 10 +++++++--- pyproject.toml | 13 +++++++++++++ setup.py | 6 ++++-- 3 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 pyproject.toml diff --git a/MANIFEST.in b/MANIFEST.in index b417b8890fa24..a9704315453d3 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -3,14 +3,18 @@ include LICENSE include RELEASE.md include README.md include setup.py +include pyproject.toml graft doc -prune doc/build - graft LICENSES - graft pandas +prune doc/build +prune asv_bench +prune ci +prune conda.recipe +prune scripts + global-exclude *.bz2 global-exclude *.csv global-exclude *.dta diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000000..a3dea7702cc52 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,13 @@ +[build-system] +# Minimum requirements for the build system to execute. +requires = [ + "setuptools", + "wheel", + "Cython>=0.29.13", # Note: sync with setup.py + "numpy==1.13.3; python_version=='3.5' and platform_system!='AIX'", + "numpy==1.13.3; python_version=='3.6' and platform_system!='AIX'", + "numpy==1.14.5; python_version>='3.7' and platform_system!='AIX'", + "numpy==1.16.0; python_version=='3.5' and platform_system=='AIX'", + "numpy==1.16.0; python_version=='3.6' and platform_system=='AIX'", + "numpy==1.16.0; python_version>='3.7' and platform_system=='AIX'", +] diff --git a/setup.py b/setup.py index 05e5f5250e250..8cb0afa9822ed 100755 --- a/setup.py +++ b/setup.py @@ -43,7 +43,7 @@ def is_platform_mac(): } -min_cython_ver = "0.28.2" +min_cython_ver = "0.29.13" # Note: sync with pyproject.toml try: import Cython @@ -367,7 +367,7 @@ def initialize_options(self): def run(self): if "cython" in cmdclass: self.run_command("cython") - else: + elif "sdist" not in sys.argv: # If we are not running cython then # compile the extensions correctly pyx_files = [(self._pyxfiles, "c"), (self._cpp_pyxfiles, "cpp")] @@ -532,6 +532,8 @@ def maybe_cythonize(extensions, *args, **kwargs): # https://github.com/pandas-dev/pandas/issues/25193 # TODO: See if this can be removed after pyproject.toml added. return extensions + elif "sdist" in sys.argv: + return extensions numpy_incl = pkg_resources.resource_filename("numpy", "core/include") # TODO: Is this really necessary here? From eaa0b82c1271386a640b9f5c72bbbda28e4d2df6 Mon Sep 17 00:00:00 2001 From: Tom Augspurger Date: Wed, 11 Sep 2019 06:01:49 -0500 Subject: [PATCH 02/15] update install in ci --- ci/incremental/build.cmd | 8 ++++---- ci/setup_env.sh | 8 +++++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/ci/incremental/build.cmd b/ci/incremental/build.cmd index 2cce38c03f406..ea59e81d66b68 100644 --- a/ci/incremental/build.cmd +++ b/ci/incremental/build.cmd @@ -1,9 +1,9 @@ @rem https://github.com/numba/numba/blob/master/buildscripts/incremental/build.cmd -@rem Build numba extensions without silencing compile errors -python setup.py build_ext -q --inplace +@rem Build wheel +python setup.py bdist_wheel -d wheelhouse -@rem Install pandas locally -python -m pip install -e . +@rem Install wheel +python -m pip install --no-deps wheelhouse/*.whl if %errorlevel% neq 0 exit /b %errorlevel% diff --git a/ci/setup_env.sh b/ci/setup_env.sh index 88742e0483c7e..512778234b50c 100755 --- a/ci/setup_env.sh +++ b/ci/setup_env.sh @@ -115,9 +115,11 @@ conda list pandas # Make sure any error below is reported as such -echo "Build extensions and install pandas" -python setup.py build_ext -q --inplace -python -m pip install -e . +echo "Building wheel" +python setup.py bdsist_wheel -d wheelhouse + +echo "Installing wheel" +python -m pip install --no-deps wheelhouse/*.whl echo echo "conda list" From 439da487b15b978e1b2267b16279d36880dc042c Mon Sep 17 00:00:00 2001 From: Tom Augspurger Date: Wed, 11 Sep 2019 06:02:56 -0500 Subject: [PATCH 03/15] revert setup.py --- .../pandas.dist-info/AUTHORS.md | 57 +++++++++++ pip-wheel-metadata/pandas.dist-info/LICENSE | 29 ++++++ pip-wheel-metadata/pandas.dist-info/METADATA | 96 +++++++++++++++++++ .../pandas.dist-info/entry_points.txt | 3 + .../pandas.dist-info/top_level.txt | 1 + setup.py | 6 +- 6 files changed, 188 insertions(+), 4 deletions(-) create mode 100644 pip-wheel-metadata/pandas.dist-info/AUTHORS.md create mode 100644 pip-wheel-metadata/pandas.dist-info/LICENSE create mode 100644 pip-wheel-metadata/pandas.dist-info/METADATA create mode 100644 pip-wheel-metadata/pandas.dist-info/entry_points.txt create mode 100644 pip-wheel-metadata/pandas.dist-info/top_level.txt diff --git a/pip-wheel-metadata/pandas.dist-info/AUTHORS.md b/pip-wheel-metadata/pandas.dist-info/AUTHORS.md new file mode 100644 index 0000000000000..dcaaea101f4c8 --- /dev/null +++ b/pip-wheel-metadata/pandas.dist-info/AUTHORS.md @@ -0,0 +1,57 @@ +About the Copyright Holders +=========================== + +* Copyright (c) 2008-2011 AQR Capital Management, LLC + + AQR Capital Management began pandas development in 2008. Development was + led by Wes McKinney. AQR released the source under this license in 2009. +* Copyright (c) 2011-2012, Lambda Foundry, Inc. + + Wes is now an employee of Lambda Foundry, and remains the pandas project + lead. +* Copyright (c) 2011-2012, PyData Development Team + + The PyData Development Team is the collection of developers of the PyData + project. This includes all of the PyData sub-projects, including pandas. The + core team that coordinates development on GitHub can be found here: + http://github.com/pydata. + +Full credits for pandas contributors can be found in the documentation. + +Our Copyright Policy +==================== + +PyData uses a shared copyright model. Each contributor maintains copyright +over their contributions to PyData. However, it is important to note that +these contributions are typically only changes to the repositories. Thus, +the PyData source code, in its entirety, is not the copyright of any single +person or institution. Instead, it is the collective copyright of the +entire PyData Development Team. If individual contributors want to maintain +a record of what changes/contributions they have specific copyright on, +they should indicate their copyright in the commit message of the change +when they commit the change to one of the PyData repositories. + +With this in mind, the following banner should be used in any source code +file to indicate the copyright and license terms: + +``` +#----------------------------------------------------------------------------- +# Copyright (c) 2012, PyData Development Team +# All rights reserved. +# +# Distributed under the terms of the BSD Simplified License. +# +# The full license is in the LICENSE file, distributed with this software. +#----------------------------------------------------------------------------- +``` + +Other licenses can be found in the LICENSES directory. + +License +======= + +pandas is distributed under a 3-clause ("Simplified" or "New") BSD +license. Parts of NumPy, SciPy, numpydoc, bottleneck, which all have +BSD-compatible licenses, are included. Their licenses follow the pandas +license. + diff --git a/pip-wheel-metadata/pandas.dist-info/LICENSE b/pip-wheel-metadata/pandas.dist-info/LICENSE new file mode 100644 index 0000000000000..924de26253bf4 --- /dev/null +++ b/pip-wheel-metadata/pandas.dist-info/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2008-2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/pip-wheel-metadata/pandas.dist-info/METADATA b/pip-wheel-metadata/pandas.dist-info/METADATA new file mode 100644 index 0000000000000..910e9a5132063 --- /dev/null +++ b/pip-wheel-metadata/pandas.dist-info/METADATA @@ -0,0 +1,96 @@ +Metadata-Version: 2.1 +Name: pandas +Version: 0.25.0+323.g55294ca9a +Summary: Powerful data structures for data analysis, time series, and statistics +Home-page: http://pandas.pydata.org +Maintainer: The PyData Development Team +Maintainer-email: pydata@googlegroups.com +License: BSD +Project-URL: Bug Tracker, https://github.com/pandas-dev/pandas/issues +Project-URL: Documentation, http://pandas.pydata.org/pandas-docs/stable/ +Project-URL: Source Code, https://github.com/pandas-dev/pandas +Platform: any +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Console +Classifier: Operating System :: OS Independent +Classifier: Intended Audience :: Science/Research +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Cython +Classifier: Topic :: Scientific/Engineering +Requires-Python: >=3.5.3 +Requires-Dist: python-dateutil (>=2.6.1) +Requires-Dist: pytz (>=2017.2) +Requires-Dist: numpy (>=1.13.3) +Provides-Extra: test +Requires-Dist: pytest (>=4.0.2) ; extra == 'test' +Requires-Dist: pytest-xdist ; extra == 'test' +Requires-Dist: hypothesis (>=3.58) ; extra == 'test' + + +**pandas** is a Python package providing fast, flexible, and expressive data +structures designed to make working with structured (tabular, multidimensional, +potentially heterogeneous) and time series data both easy and intuitive. It +aims to be the fundamental high-level building block for doing practical, +**real world** data analysis in Python. Additionally, it has the broader goal +of becoming **the most powerful and flexible open source data analysis / +manipulation tool available in any language**. It is already well on its way +toward this goal. + +pandas is well suited for many different kinds of data: + + - Tabular data with heterogeneously-typed columns, as in an SQL table or + Excel spreadsheet + - Ordered and unordered (not necessarily fixed-frequency) time series data. + - Arbitrary matrix data (homogeneously typed or heterogeneous) with row and + column labels + - Any other form of observational / statistical data sets. The data actually + need not be labeled at all to be placed into a pandas data structure + +The two primary data structures of pandas, Series (1-dimensional) and DataFrame +(2-dimensional), handle the vast majority of typical use cases in finance, +statistics, social science, and many areas of engineering. For R users, +DataFrame provides everything that R's ``data.frame`` provides and much +more. pandas is built on top of `NumPy `__ and is +intended to integrate well within a scientific computing environment with many +other 3rd party libraries. + +Here are just a few of the things that pandas does well: + + - Easy handling of **missing data** (represented as NaN) in floating point as + well as non-floating point data + - Size mutability: columns can be **inserted and deleted** from DataFrame and + higher dimensional objects + - Automatic and explicit **data alignment**: objects can be explicitly + aligned to a set of labels, or the user can simply ignore the labels and + let `Series`, `DataFrame`, etc. automatically align the data for you in + computations + - Powerful, flexible **group by** functionality to perform + split-apply-combine operations on data sets, for both aggregating and + transforming data + - Make it **easy to convert** ragged, differently-indexed data in other + Python and NumPy data structures into DataFrame objects + - Intelligent label-based **slicing**, **fancy indexing**, and **subsetting** + of large data sets + - Intuitive **merging** and **joining** data sets + - Flexible **reshaping** and pivoting of data sets + - **Hierarchical** labeling of axes (possible to have multiple labels per + tick) + - Robust IO tools for loading data from **flat files** (CSV and delimited), + Excel files, databases, and saving / loading data from the ultrafast **HDF5 + format** + - **Time series**-specific functionality: date range generation and frequency + conversion, moving window statistics, moving window linear regressions, + date shifting and lagging, etc. + +Many of these principles are here to address the shortcomings frequently +experienced using other languages / scientific research environments. For data +scientists, working with data is typically divided into multiple stages: +munging and cleaning data, analyzing / modeling it, then organizing the results +of the analysis into a form suitable for plotting or tabular display. pandas is +the ideal tool for all of these tasks. + + diff --git a/pip-wheel-metadata/pandas.dist-info/entry_points.txt b/pip-wheel-metadata/pandas.dist-info/entry_points.txt new file mode 100644 index 0000000000000..3c1b523d70758 --- /dev/null +++ b/pip-wheel-metadata/pandas.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[pandas_plotting_backends] +matplotlib = pandas:plotting._matplotlib + diff --git a/pip-wheel-metadata/pandas.dist-info/top_level.txt b/pip-wheel-metadata/pandas.dist-info/top_level.txt new file mode 100644 index 0000000000000..fb6c7ed7ec60d --- /dev/null +++ b/pip-wheel-metadata/pandas.dist-info/top_level.txt @@ -0,0 +1 @@ +pandas diff --git a/setup.py b/setup.py index 8cb0afa9822ed..05e5f5250e250 100755 --- a/setup.py +++ b/setup.py @@ -43,7 +43,7 @@ def is_platform_mac(): } -min_cython_ver = "0.29.13" # Note: sync with pyproject.toml +min_cython_ver = "0.28.2" try: import Cython @@ -367,7 +367,7 @@ def initialize_options(self): def run(self): if "cython" in cmdclass: self.run_command("cython") - elif "sdist" not in sys.argv: + else: # If we are not running cython then # compile the extensions correctly pyx_files = [(self._pyxfiles, "c"), (self._cpp_pyxfiles, "cpp")] @@ -532,8 +532,6 @@ def maybe_cythonize(extensions, *args, **kwargs): # https://github.com/pandas-dev/pandas/issues/25193 # TODO: See if this can be removed after pyproject.toml added. return extensions - elif "sdist" in sys.argv: - return extensions numpy_incl = pkg_resources.resource_filename("numpy", "core/include") # TODO: Is this really necessary here? From f8b90cfe69500716398e21d1c25626c188af23ce Mon Sep 17 00:00:00 2001 From: Tom Augspurger Date: Wed, 11 Sep 2019 06:03:27 -0500 Subject: [PATCH 04/15] add to manifest --- .gitignore | 1 + MANIFEST.in | 9 +- .../pandas.dist-info/AUTHORS.md | 57 ----------- pip-wheel-metadata/pandas.dist-info/LICENSE | 29 ------ pip-wheel-metadata/pandas.dist-info/METADATA | 96 ------------------- .../pandas.dist-info/entry_points.txt | 3 - .../pandas.dist-info/top_level.txt | 1 - 7 files changed, 4 insertions(+), 192 deletions(-) delete mode 100644 pip-wheel-metadata/pandas.dist-info/AUTHORS.md delete mode 100644 pip-wheel-metadata/pandas.dist-info/LICENSE delete mode 100644 pip-wheel-metadata/pandas.dist-info/METADATA delete mode 100644 pip-wheel-metadata/pandas.dist-info/entry_points.txt delete mode 100644 pip-wheel-metadata/pandas.dist-info/top_level.txt diff --git a/.gitignore b/.gitignore index e85da9c9b976b..6c3c275c48fb7 100644 --- a/.gitignore +++ b/.gitignore @@ -57,6 +57,7 @@ dist # wheel files *.whl **/wheelhouse/* +pip-wheel-metadata # coverage .coverage coverage.xml diff --git a/MANIFEST.in b/MANIFEST.in index a9704315453d3..d82e64d0a68b8 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -6,14 +6,11 @@ include setup.py include pyproject.toml graft doc +prune doc/build + graft LICENSES -graft pandas -prune doc/build -prune asv_bench -prune ci -prune conda.recipe -prune scripts +graft pandas global-exclude *.bz2 global-exclude *.csv diff --git a/pip-wheel-metadata/pandas.dist-info/AUTHORS.md b/pip-wheel-metadata/pandas.dist-info/AUTHORS.md deleted file mode 100644 index dcaaea101f4c8..0000000000000 --- a/pip-wheel-metadata/pandas.dist-info/AUTHORS.md +++ /dev/null @@ -1,57 +0,0 @@ -About the Copyright Holders -=========================== - -* Copyright (c) 2008-2011 AQR Capital Management, LLC - - AQR Capital Management began pandas development in 2008. Development was - led by Wes McKinney. AQR released the source under this license in 2009. -* Copyright (c) 2011-2012, Lambda Foundry, Inc. - - Wes is now an employee of Lambda Foundry, and remains the pandas project - lead. -* Copyright (c) 2011-2012, PyData Development Team - - The PyData Development Team is the collection of developers of the PyData - project. This includes all of the PyData sub-projects, including pandas. The - core team that coordinates development on GitHub can be found here: - http://github.com/pydata. - -Full credits for pandas contributors can be found in the documentation. - -Our Copyright Policy -==================== - -PyData uses a shared copyright model. Each contributor maintains copyright -over their contributions to PyData. However, it is important to note that -these contributions are typically only changes to the repositories. Thus, -the PyData source code, in its entirety, is not the copyright of any single -person or institution. Instead, it is the collective copyright of the -entire PyData Development Team. If individual contributors want to maintain -a record of what changes/contributions they have specific copyright on, -they should indicate their copyright in the commit message of the change -when they commit the change to one of the PyData repositories. - -With this in mind, the following banner should be used in any source code -file to indicate the copyright and license terms: - -``` -#----------------------------------------------------------------------------- -# Copyright (c) 2012, PyData Development Team -# All rights reserved. -# -# Distributed under the terms of the BSD Simplified License. -# -# The full license is in the LICENSE file, distributed with this software. -#----------------------------------------------------------------------------- -``` - -Other licenses can be found in the LICENSES directory. - -License -======= - -pandas is distributed under a 3-clause ("Simplified" or "New") BSD -license. Parts of NumPy, SciPy, numpydoc, bottleneck, which all have -BSD-compatible licenses, are included. Their licenses follow the pandas -license. - diff --git a/pip-wheel-metadata/pandas.dist-info/LICENSE b/pip-wheel-metadata/pandas.dist-info/LICENSE deleted file mode 100644 index 924de26253bf4..0000000000000 --- a/pip-wheel-metadata/pandas.dist-info/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2008-2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/pip-wheel-metadata/pandas.dist-info/METADATA b/pip-wheel-metadata/pandas.dist-info/METADATA deleted file mode 100644 index 910e9a5132063..0000000000000 --- a/pip-wheel-metadata/pandas.dist-info/METADATA +++ /dev/null @@ -1,96 +0,0 @@ -Metadata-Version: 2.1 -Name: pandas -Version: 0.25.0+323.g55294ca9a -Summary: Powerful data structures for data analysis, time series, and statistics -Home-page: http://pandas.pydata.org -Maintainer: The PyData Development Team -Maintainer-email: pydata@googlegroups.com -License: BSD -Project-URL: Bug Tracker, https://github.com/pandas-dev/pandas/issues -Project-URL: Documentation, http://pandas.pydata.org/pandas-docs/stable/ -Project-URL: Source Code, https://github.com/pandas-dev/pandas -Platform: any -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Console -Classifier: Operating System :: OS Independent -Classifier: Intended Audience :: Science/Research -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Cython -Classifier: Topic :: Scientific/Engineering -Requires-Python: >=3.5.3 -Requires-Dist: python-dateutil (>=2.6.1) -Requires-Dist: pytz (>=2017.2) -Requires-Dist: numpy (>=1.13.3) -Provides-Extra: test -Requires-Dist: pytest (>=4.0.2) ; extra == 'test' -Requires-Dist: pytest-xdist ; extra == 'test' -Requires-Dist: hypothesis (>=3.58) ; extra == 'test' - - -**pandas** is a Python package providing fast, flexible, and expressive data -structures designed to make working with structured (tabular, multidimensional, -potentially heterogeneous) and time series data both easy and intuitive. It -aims to be the fundamental high-level building block for doing practical, -**real world** data analysis in Python. Additionally, it has the broader goal -of becoming **the most powerful and flexible open source data analysis / -manipulation tool available in any language**. It is already well on its way -toward this goal. - -pandas is well suited for many different kinds of data: - - - Tabular data with heterogeneously-typed columns, as in an SQL table or - Excel spreadsheet - - Ordered and unordered (not necessarily fixed-frequency) time series data. - - Arbitrary matrix data (homogeneously typed or heterogeneous) with row and - column labels - - Any other form of observational / statistical data sets. The data actually - need not be labeled at all to be placed into a pandas data structure - -The two primary data structures of pandas, Series (1-dimensional) and DataFrame -(2-dimensional), handle the vast majority of typical use cases in finance, -statistics, social science, and many areas of engineering. For R users, -DataFrame provides everything that R's ``data.frame`` provides and much -more. pandas is built on top of `NumPy `__ and is -intended to integrate well within a scientific computing environment with many -other 3rd party libraries. - -Here are just a few of the things that pandas does well: - - - Easy handling of **missing data** (represented as NaN) in floating point as - well as non-floating point data - - Size mutability: columns can be **inserted and deleted** from DataFrame and - higher dimensional objects - - Automatic and explicit **data alignment**: objects can be explicitly - aligned to a set of labels, or the user can simply ignore the labels and - let `Series`, `DataFrame`, etc. automatically align the data for you in - computations - - Powerful, flexible **group by** functionality to perform - split-apply-combine operations on data sets, for both aggregating and - transforming data - - Make it **easy to convert** ragged, differently-indexed data in other - Python and NumPy data structures into DataFrame objects - - Intelligent label-based **slicing**, **fancy indexing**, and **subsetting** - of large data sets - - Intuitive **merging** and **joining** data sets - - Flexible **reshaping** and pivoting of data sets - - **Hierarchical** labeling of axes (possible to have multiple labels per - tick) - - Robust IO tools for loading data from **flat files** (CSV and delimited), - Excel files, databases, and saving / loading data from the ultrafast **HDF5 - format** - - **Time series**-specific functionality: date range generation and frequency - conversion, moving window statistics, moving window linear regressions, - date shifting and lagging, etc. - -Many of these principles are here to address the shortcomings frequently -experienced using other languages / scientific research environments. For data -scientists, working with data is typically divided into multiple stages: -munging and cleaning data, analyzing / modeling it, then organizing the results -of the analysis into a form suitable for plotting or tabular display. pandas is -the ideal tool for all of these tasks. - - diff --git a/pip-wheel-metadata/pandas.dist-info/entry_points.txt b/pip-wheel-metadata/pandas.dist-info/entry_points.txt deleted file mode 100644 index 3c1b523d70758..0000000000000 --- a/pip-wheel-metadata/pandas.dist-info/entry_points.txt +++ /dev/null @@ -1,3 +0,0 @@ -[pandas_plotting_backends] -matplotlib = pandas:plotting._matplotlib - diff --git a/pip-wheel-metadata/pandas.dist-info/top_level.txt b/pip-wheel-metadata/pandas.dist-info/top_level.txt deleted file mode 100644 index fb6c7ed7ec60d..0000000000000 --- a/pip-wheel-metadata/pandas.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -pandas From 13d9949a267ffd2425c45421ff9dce9ab5a26bf2 Mon Sep 17 00:00:00 2001 From: Tom Augspurger Date: Wed, 11 Sep 2019 06:11:13 -0500 Subject: [PATCH 05/15] update docs --- README.md | 8 -------- ci/incremental/build.cmd | 2 +- ci/setup_env.sh | 2 +- doc/source/development/contributing.rst | 4 ++-- 4 files changed, 4 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 3cde98d3145f2..adbd0eaa1993f 100644 --- a/README.md +++ b/README.md @@ -192,14 +192,6 @@ or for installing in [development mode](https://pip.pypa.io/en/latest/reference/ python setup.py develop ``` -Alternatively, you can use `pip` if you want all the dependencies pulled -in automatically (the `-e` option is for installing it in [development -mode](https://pip.pypa.io/en/latest/reference/pip_install.html#editable-installs)): - -```sh -pip install -e . -``` - See the full instructions for [installing from source](https://pandas.pydata.org/pandas-docs/stable/install.html#installing-from-source). ## License diff --git a/ci/incremental/build.cmd b/ci/incremental/build.cmd index ea59e81d66b68..6202edac8a469 100644 --- a/ci/incremental/build.cmd +++ b/ci/incremental/build.cmd @@ -4,6 +4,6 @@ python setup.py bdist_wheel -d wheelhouse @rem Install wheel -python -m pip install --no-deps wheelhouse/*.whl +python -m pip install --no-deps wheelhouse/pandas*.whl if %errorlevel% neq 0 exit /b %errorlevel% diff --git a/ci/setup_env.sh b/ci/setup_env.sh index 512778234b50c..7bb0bd1de9229 100755 --- a/ci/setup_env.sh +++ b/ci/setup_env.sh @@ -119,7 +119,7 @@ echo "Building wheel" python setup.py bdsist_wheel -d wheelhouse echo "Installing wheel" -python -m pip install --no-deps wheelhouse/*.whl +python -m pip install --no-deps wheelhouse/pandas*.whl echo echo "conda list" diff --git a/doc/source/development/contributing.rst b/doc/source/development/contributing.rst index 21fb1baf7db34..02b491dcf37ae 100644 --- a/doc/source/development/contributing.rst +++ b/doc/source/development/contributing.rst @@ -208,7 +208,7 @@ We'll now kick off a three-step process: # Build and install pandas python setup.py build_ext --inplace -j 4 - python -m pip install -e . + python -m pip install -e --no-use-pep517 --no-build-isolation . At this point you should be able to import pandas from your locally built version:: @@ -252,7 +252,7 @@ You'll need to have at least python3.5 installed on your system. # Build and install pandas python setup.py build_ext --inplace -j 4 - python -m pip install -e . + python -m pip install -e --no-use-pep517 --no-build-isolation . Creating a branch ----------------- From e7c0732bd932de92b93f7d47bbfa2a3542d8b123 Mon Sep 17 00:00:00 2001 From: Tom Augspurger Date: Wed, 11 Sep 2019 06:13:12 -0500 Subject: [PATCH 06/15] note on aix --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index a3dea7702cc52..2ec4739c2f7f8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,6 @@ [build-system] # Minimum requirements for the build system to execute. +# See https://github.com/scipy/scipy/pull/10431 for the AIX issue. requires = [ "setuptools", "wheel", From f842f489f05a33c28abacff72fc98d680a0eb01c Mon Sep 17 00:00:00 2001 From: Tom Augspurger Date: Wed, 11 Sep 2019 06:27:36 -0500 Subject: [PATCH 07/15] typo --- ci/setup_env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/setup_env.sh b/ci/setup_env.sh index 7bb0bd1de9229..599ab5474b763 100755 --- a/ci/setup_env.sh +++ b/ci/setup_env.sh @@ -116,7 +116,7 @@ conda list pandas # Make sure any error below is reported as such echo "Building wheel" -python setup.py bdsist_wheel -d wheelhouse +python setup.py bdist_wheel -d wheelhouse echo "Installing wheel" python -m pip install --no-deps wheelhouse/pandas*.whl From de5da03b6126205d2c7704c000249f48f5480113 Mon Sep 17 00:00:00 2001 From: Tom Augspurger Date: Wed, 11 Sep 2019 06:31:44 -0500 Subject: [PATCH 08/15] cmd --- ci/incremental/build.cmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/incremental/build.cmd b/ci/incremental/build.cmd index 6202edac8a469..0728890468c9e 100644 --- a/ci/incremental/build.cmd +++ b/ci/incremental/build.cmd @@ -4,6 +4,6 @@ python setup.py bdist_wheel -d wheelhouse @rem Install wheel -python -m pip install --no-deps wheelhouse/pandas*.whl +FOR /F "Tokens=*" %A IN ('DIR "wheelhouse\*.whl"') DO @( python -m pip install --no-deps %~nxA ) if %errorlevel% neq 0 exit /b %errorlevel% From 8d326e52a81aa6a64ad1111966958d3806b04c6a Mon Sep 17 00:00:00 2001 From: Tom Augspurger Date: Wed, 11 Sep 2019 09:06:56 -0500 Subject: [PATCH 09/15] fixups --- Makefile | 2 +- README.md | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9e69eb7922925..cc634c4e033a9 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ black: black . --exclude '(asv_bench/env|\.egg|\.git|\.hg|\.mypy_cache|\.nox|\.tox|\.venv|_build|buck-out|build|dist|setup.py)' develop: build - python setup.py develop + python -m pip install --no-use-pep517 --no-build-isolation -e . doc: -rm -rf doc/build doc/source/generated diff --git a/README.md b/README.md index adbd0eaa1993f..69f7993d2247d 100644 --- a/README.md +++ b/README.md @@ -188,6 +188,15 @@ python setup.py install or for installing in [development mode](https://pip.pypa.io/en/latest/reference/pip_install.html#editable-installs): + +```sh +python -m pip install --no-use-pep517 --no-build-isolation -e . +``` + +If you have make, you can also use `make develop` to run the same command. + +or alternatively + ```sh python setup.py develop ``` From e2a6e3cff7cb387231e4174578fa64eea3ac9e64 Mon Sep 17 00:00:00 2001 From: Tom Augspurger Date: Wed, 11 Sep 2019 09:14:39 -0500 Subject: [PATCH 10/15] revert install changes --- README.md | 2 +- ci/incremental/build.cmd | 8 ++++---- ci/setup_env.sh | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 69f7993d2247d..74fafa3b343ec 100644 --- a/README.md +++ b/README.md @@ -193,7 +193,7 @@ or for installing in [development mode](https://pip.pypa.io/en/latest/reference/ python -m pip install --no-use-pep517 --no-build-isolation -e . ``` -If you have make, you can also use `make develop` to run the same command. +If you have `make`, you can also use `make develop` to run the same command. or alternatively diff --git a/ci/incremental/build.cmd b/ci/incremental/build.cmd index 0728890468c9e..0881e8cf84126 100644 --- a/ci/incremental/build.cmd +++ b/ci/incremental/build.cmd @@ -1,9 +1,9 @@ @rem https://github.com/numba/numba/blob/master/buildscripts/incremental/build.cmd -@rem Build wheel -python setup.py bdist_wheel -d wheelhouse +@rem Build extensions +python setup.py build_ext -q -i -@rem Install wheel -FOR /F "Tokens=*" %A IN ('DIR "wheelhouse\*.whl"') DO @( python -m pip install --no-deps %~nxA ) +@rem Install pandas +python -m pip install --no-use-pep517 --no-build-isolation -e . if %errorlevel% neq 0 exit /b %errorlevel% diff --git a/ci/setup_env.sh b/ci/setup_env.sh index 599ab5474b763..993f1c1f4dc73 100755 --- a/ci/setup_env.sh +++ b/ci/setup_env.sh @@ -115,11 +115,11 @@ conda list pandas # Make sure any error below is reported as such -echo "Building wheel" -python setup.py bdist_wheel -d wheelhouse +echo "[Build extensions]" +python setup.py build_ext -q -i -echo "Installing wheel" -python -m pip install --no-deps wheelhouse/pandas*.whl +echo "[Install pandas]" +python -m pip install --no-use-pep517 --no-build-isolation -e . echo echo "conda list" From bb59373d0df2192080f144d2baa8695e056a9f4a Mon Sep 17 00:00:00 2001 From: Tom Augspurger Date: Wed, 11 Sep 2019 10:21:35 -0500 Subject: [PATCH 11/15] update pip --- ci/setup_env.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ci/setup_env.sh b/ci/setup_env.sh index 993f1c1f4dc73..247e0a2a22877 100755 --- a/ci/setup_env.sh +++ b/ci/setup_env.sh @@ -118,6 +118,15 @@ conda list pandas echo "[Build extensions]" python setup.py build_ext -q -i +# XXX: Some of our environments end up with old verisons of pip (10.x) +# Adding a new enough verison of pip to the requirements explodes the +# solve time. Just using pip to update itself. +# - py35_macos +# - py35_compat +# - py36_32bit +echo "[Updating pip]" +python -m pip install --no-deps -U pip wheel setuptools + echo "[Install pandas]" python -m pip install --no-use-pep517 --no-build-isolation -e . From debbbf8d05933ed00258877c2bf410ee7fb5cff9 Mon Sep 17 00:00:00 2001 From: Tom Augspurger Date: Thu, 12 Sep 2019 14:24:18 -0500 Subject: [PATCH 12/15] remove old workaround --- setup.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/setup.py b/setup.py index d85e5ee3bbc71..b83a8cb82810f 100755 --- a/setup.py +++ b/setup.py @@ -528,11 +528,6 @@ def maybe_cythonize(extensions, *args, **kwargs): # Avoid running cythonize on `python setup.py clean` # See https://github.com/cython/cython/issues/1495 return extensions - if not cython: - # Avoid trying to look up numpy when installing from sdist - # https://github.com/pandas-dev/pandas/issues/25193 - # TODO: See if this can be removed after pyproject.toml added. - return extensions elif "sdist" in sys.argv: return extensions From bedbc51d943c65dcd6234323e5a2d727fbb2dd43 Mon Sep 17 00:00:00 2001 From: Tom Augspurger Date: Thu, 12 Sep 2019 14:24:53 -0500 Subject: [PATCH 13/15] revert manifest --- MANIFEST.in | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index a9704315453d3..d82e64d0a68b8 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -6,14 +6,11 @@ include setup.py include pyproject.toml graft doc +prune doc/build + graft LICENSES -graft pandas -prune doc/build -prune asv_bench -prune ci -prune conda.recipe -prune scripts +graft pandas global-exclude *.bz2 global-exclude *.csv From 8b50fe13761afac4acc4c61d93434d5b357738fd Mon Sep 17 00:00:00 2001 From: Tom Augspurger Date: Thu, 12 Sep 2019 14:29:23 -0500 Subject: [PATCH 14/15] note --- doc/source/whatsnew/v1.0.0.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/source/whatsnew/v1.0.0.rst b/doc/source/whatsnew/v1.0.0.rst index 9998a9a847643..ac2fc523ca064 100644 --- a/doc/source/whatsnew/v1.0.0.rst +++ b/doc/source/whatsnew/v1.0.0.rst @@ -222,6 +222,7 @@ Sparse Build Changes ^^^^^^^^^^^^^ - Fixed pyqt development dependency issue because of different pyqt package name in conda and PyPI (:issue:`26838`) +- Added a `pyproject.toml `_ file (:issue:`20775`) ExtensionArray From 2aa2e9c4a9512904457d6c5e377a160d87cea1b4 Mon Sep 17 00:00:00 2001 From: Tom Augspurger Date: Fri, 13 Sep 2019 09:09:19 -0500 Subject: [PATCH 15/15] remove pep517 --- Makefile | 2 +- README.md | 2 +- ci/incremental/build.cmd | 2 +- ci/setup_env.sh | 2 +- doc/source/development/contributing.rst | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index cc634c4e033a9..27a2c3682de9c 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ black: black . --exclude '(asv_bench/env|\.egg|\.git|\.hg|\.mypy_cache|\.nox|\.tox|\.venv|_build|buck-out|build|dist|setup.py)' develop: build - python -m pip install --no-use-pep517 --no-build-isolation -e . + python -m pip install --no-build-isolation -e . doc: -rm -rf doc/build doc/source/generated diff --git a/README.md b/README.md index 74fafa3b343ec..d5e71fc4740cf 100644 --- a/README.md +++ b/README.md @@ -190,7 +190,7 @@ or for installing in [development mode](https://pip.pypa.io/en/latest/reference/ ```sh -python -m pip install --no-use-pep517 --no-build-isolation -e . +python -m pip install --no-build-isolation -e . ``` If you have `make`, you can also use `make develop` to run the same command. diff --git a/ci/incremental/build.cmd b/ci/incremental/build.cmd index 0881e8cf84126..b61b59e287299 100644 --- a/ci/incremental/build.cmd +++ b/ci/incremental/build.cmd @@ -4,6 +4,6 @@ python setup.py build_ext -q -i @rem Install pandas -python -m pip install --no-use-pep517 --no-build-isolation -e . +python -m pip install --no-build-isolation -e . if %errorlevel% neq 0 exit /b %errorlevel% diff --git a/ci/setup_env.sh b/ci/setup_env.sh index 247e0a2a22877..382491a947488 100755 --- a/ci/setup_env.sh +++ b/ci/setup_env.sh @@ -128,7 +128,7 @@ echo "[Updating pip]" python -m pip install --no-deps -U pip wheel setuptools echo "[Install pandas]" -python -m pip install --no-use-pep517 --no-build-isolation -e . +python -m pip install --no-build-isolation -e . echo echo "conda list" diff --git a/doc/source/development/contributing.rst b/doc/source/development/contributing.rst index 02b491dcf37ae..c66ae5e4bc36f 100644 --- a/doc/source/development/contributing.rst +++ b/doc/source/development/contributing.rst @@ -208,7 +208,7 @@ We'll now kick off a three-step process: # Build and install pandas python setup.py build_ext --inplace -j 4 - python -m pip install -e --no-use-pep517 --no-build-isolation . + python -m pip install -e --no-build-isolation . At this point you should be able to import pandas from your locally built version:: @@ -252,7 +252,7 @@ You'll need to have at least python3.5 installed on your system. # Build and install pandas python setup.py build_ext --inplace -j 4 - python -m pip install -e --no-use-pep517 --no-build-isolation . + python -m pip install -e --no-build-isolation . Creating a branch -----------------