PKG: Added pyproject.toml for PEP 518
State: closed

Declaring build-time requirements: https://www.python.org/dev/peps/pep-0518/

Labels:
name: Build
description: Library building on various platforms

Comments:
I tested this by

1. creating a clean virtualenv
2. installing pip master (10.0 dev)
3. removing the `setup_requires` lines from `setup.py`
4. running `pip wheel .` from the top-level directory.

And the wheel successfully built, and afterwards my `pip list` was just

```
Package    Version
---------- -----------
pip        10.0.0.dev0
setuptools 36.0.1
wheel      0.29.0
```

which I think means it worked correctly.
Oh, and I don't really think this needs a release note, but I added one just to encourage other projects to adopt pep 518.
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/16745?src=pr&el=h1) Report
> Merging [#16745](https://codecov.io/gh/pandas-dev/pandas/pull/16745?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/0d676a3ccf1d7aa986416a7488b941496f936d98?src=pr&el=desc) will **increase** coverage by `<.01%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/16745/graphs/tree.svg?width=650&token=eZ4WkYLtcO&height=150&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/16745?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #16745      +/-   ##
==========================================
+ Coverage   91.01%   91.02%   +<.01%     
==========================================
  Files         163      163              
  Lines       49567    49567              
==========================================
+ Hits        45113    45116       +3     
+ Misses       4454     4451       -3
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `88.8% <ø> (+0.02%)` | :arrow_up: |
| #single | `40.25% <ø> (-0.07%)` | :arrow_down: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/16745?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/io/gbq.py](https://codecov.io/gh/pandas-dev/pandas/pull/16745?src=pr&el=tree#diff-cGFuZGFzL2lvL2dicS5weQ==) | `25% <0%> (-58.34%)` | :arrow_down: |
| [pandas/core/frame.py](https://codecov.io/gh/pandas-dev/pandas/pull/16745?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZnJhbWUucHk=) | `97.72% <0%> (-0.1%)` | :arrow_down: |
| [pandas/plotting/\_converter.py](https://codecov.io/gh/pandas-dev/pandas/pull/16745?src=pr&el=tree#diff-cGFuZGFzL3Bsb3R0aW5nL19jb252ZXJ0ZXIucHk=) | `65.05% <0%> (+1.81%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/16745?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/16745?src=pr&el=footer). Last update [0d676a3...5c40e1b](https://codecov.io/gh/pandas-dev/pandas/pull/16745?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

From https://github.com/pandas-dev/pandas/issues/16715#issuecomment-310227035

> I am not sure PEP518 is going to change anything about this, because the problem still remains that at the moment you build the pandas wheel (with specification of numpy>0.17 from the pyproject.toml, which will download the latest 1.13) it does not seem to know about the exact numpy version that is installed at the same time (and can thus be older than the one used in the wheel building step)
>
> Should we actually pin the numpy version to the oldest supported one in the build-system requires? (what we in practice do when building wheels to distribute?) Since this is done in an isolated environment, it shouldn't influence your actual environment

I think you're right. I need to do some research on which versions of numpy actually work together. Let's wait before merging this.
lgtm. In theory you could have the 2.7_BUILD_TEST try to 'build' using this?
@TomAugspurger : merge conflict for this PR.  Otherwise, it should be good to merge.
Gonna wait till I can talk to some other projects about how they're using it to make sure things are correct.
Here's SciPy's https://github.com/scipy/scipy/pull/7309, https://github.com/scipy/scipy/blob/master/pyproject.toml
lgtm.