Metadata-Version: 2.1
Name: ppsetuptools
Version: 2.0.2
Summary: Drop in replacement for setuptools that uses pyproject.toml files
Home-page: UNKNOWN
Author-email: Adam Weeden <adamweeden@gmail.com>
License: UNKNOWN
Project-URL: repository, https://github.com/TheCleric/ppsetuptools
Keywords: setuptools,pyproject,setup.py,pyproject.toml,replacement,pep621,pep-621
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: setuptools (>=38.6.0)
Requires-Dist: toml
Provides-Extra: dev
Requires-Dist: autopep8 ; extra == 'dev'
Requires-Dist: isort ; extra == 'dev'
Requires-Dist: pre-commit ; extra == 'dev'
Requires-Dist: setuptools ; extra == 'dev'
Requires-Dist: twine ; extra == 'dev'
Requires-Dist: upgrade-ensurepip ; extra == 'dev'
Requires-Dist: wheel ; extra == 'dev'
Provides-Extra: test
Requires-Dist: mypy ; extra == 'test'
Requires-Dist: pydantic ; extra == 'test'
Requires-Dist: pylint ; 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.6+ projects

## Usage

To install run `pip install ppsetuptools` in your project.

Place your project settings in the `[project]` table of your pyproject.toml.
Also ensure that `ppsetuptools` is included in your `[build-system]` table
in the `requires` list.

Replace setuptools import in your `setup.py` 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 (via
PEP-621 compliant entries).

### Example `pyproject.toml`

```toml
[project]
name = 'my_package'
project_name = 'my_package'
version = '1.0.0'
readme = '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 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 (such as the `readme`) will attempt to be followed
from this location.

E.g., if including a `redme = 'README.md'` value, 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'])
)
```


