Metadata-Version: 2.1
Name: ppsetuptools
Version: 0.9.0
Summary: Drop in replacement for setuptools that uses pyproject.toml files
Home-page: https://github.com/TheCleric/ppsetuptools
Author: Adam Weeden
Author-email: adamweeden@gmail.com
License: LGPL v3
Keywords: setuptools pyproject setup.py pyproject.toml replacement
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Description-Content-Type: text/markdown
Requires-Dist: setuptools
Requires-Dist: toml
Provides-Extra: test
Requires-Dist: pytest ; extra == 'test'
Requires-Dist: pytest-cov ; extra == 'test'

# ppsetuptools => pyproject setuptools

A drop in replacement for python setuptools that uses pyproject.toml files
for python 3.5+ projects

## Usage

Place your project settings in the `[project]` table of your pyproject.toml.
Replace setuptools import in your project with an import of ppsetuptools.
ppsetuptools exposes all functions from setuptools, and in addition will map
your `pyproject.toml` data to the call to `setuptools.setup` for you.

### Example `pyproject.toml`

```toml
[project]
name = 'my_package'
project_name = 'my_package'
version = '1.0.0'
long_description = 'file: README.md'
install_requires = [
    'setuptools',
    'toml'
]
include_package_data = true

[build-system]
requires = [
    'setuptools >= 40.8.0',
    'wheel >= 0.35.1',
    'toml >= 0.10.1'
]
build-backend = 'setuptools.build_meta'
```

### Example `setup.py`

```python
from ppsetuptools import setup

setup()
```

### File references

ppsetuptools will attempt to replace any strings beginning with "file:" with the
file's contents. For the long_description entry, ppsetuptools will also attempt
to fill long_description_content_type for you based on the filename.

### File locations

As of now, the library attempts to find a `pyproject.toml` file in the same
directory as the python file that called it. So if calling directly from
`setup.py`, ensure that your `pyproject.toml` file is in the same directory.

As well any file references will attempt to be followed from this location.
E.g., if including a `file: README.md` reference, ppsetuptools will look for
`README.md` in the same directory as the file that called it.

### Function support

As of now, ppsetuptools does not support calculated values within the
`pyproject.toml` file. If calculated values are needed, ppsetuptools
will combine the args passed to the `setup` call with the values in the
`pyproject.toml` file, so you may call setup like so, and it will still use your
`pyproject.toml` values in addition to the passed values.

```python
from ppsetuptools import setup, find_packages

setup(
    find_packages(exclude=['tests'])
)
```

## PEP 621

NOTE: This is not currently PEP 621 as that PEP is still in draft status. This
project will be made PEP 621 compliant in the future if the PEP is accepted.


