Skip to content

Commit

Permalink
Use declarative setuptools configuration and PyPI build tools
Browse files Browse the repository at this point in the history
  • Loading branch information
mwtoews committed Apr 13, 2022
1 parent ed8d4c2 commit 7678798
Show file tree
Hide file tree
Showing 6 changed files with 62 additions and 65 deletions.
5 changes: 5 additions & 0 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,8 @@ jobs:
- name: Run mypy
run: |
mypy --install-types --non-interactive --ignore-missing-imports .
- name: Build and check packages
run: |
pip install --upgrade build twine
python -m build
twine check --strict dist/*
16 changes: 10 additions & 6 deletions guide-to-publish.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# How to publish to PyPi
# How to publish to PyPI

1) If present remove build and dist folder

Expand All @@ -8,17 +8,21 @@ On powershell you can do this with
rm -r *.egg-info
```

3) If not done yet, install twine via
3) If not done yet, install build and twine via
```
pip install twine
pip install build twine
```
4) Update the version number in the setup.py file.
4) Update the version number in `xmipy/__init__.py`.

5) Re-create the wheels:
```
python setup.py sdist bdist_wheel
python -m build
```
6) Re-upload the new files:
6) Check the package files:
```
twine check dist/*
```
7) Re-upload the new files:
```
twine upload dist/*
```
4 changes: 4 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
[build-system]
requires = ["setuptools", "wheel"]
build-backend = "setuptools.build_meta"

[tool.isort]
profile = "black"
multi_line_output = 3
41 changes: 41 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
[metadata]
name = xmipy
version = attr: xmipy.__version__
description = xmipy is an extension to the bmipy Python package
long_description = file: README.md
long_description_content_type = text/markdown
author = Martijn Russcher, Julian Hofer, Joseph D. Hughes
author_email = Martijn.Russcher@deltares.nl, Julian.Hofer@deltares.nl, jdhughes@usgs.gov
license = CC0
license_files = LICENSE
platform = Windows, Mac OS-X, Linux
keywords = MODFLOW, groundwater, hydrogeology
classifiers =
Intended Audience :: Science/Research
License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
Topic :: Scientific/Engineering :: Hydrology
url = https://github.com/Deltares/xmipy
download_url = https://pypi.org/project/xmipy/

[options]
zip_safe = False
packages = find:
python_requires = >=3.7
install_requires =
bmipy
numpy

[options.extras_require]
tests =
pytest
pytest-cov
requests
mfpymake
flopy
lint =
mypy
black
isort

[options.package_data]
xmipy = py.typed
61 changes: 2 additions & 59 deletions setup.py
Original file line number Diff line number Diff line change
@@ -1,60 +1,3 @@
import codecs
import os.path
import sys
from setuptools import setup

from setuptools import find_namespace_packages, setup

# edit author dictionary as necessary
author_dict = {
"Martijn Russcher": "Martijn.Russcher@deltares.nl",
"Julian Hofer": "Julian.Hofer@deltares.nl",
"Joseph D. Hughes": "jdhughes@usgs.gov",
}
__author__ = ", ".join(author_dict.keys())
__author_email__ = ", ".join(s for _, s in author_dict.items())


def read(rel_path):
here = os.path.abspath(os.path.dirname(__file__))
with codecs.open(os.path.join(here, rel_path), "r") as fp:
return fp.read()


def get_version(rel_path):
for line in read(rel_path).splitlines():
if line.startswith("__version__"):
delim = '"' if '"' in line else "'"
return line.split(delim)[1]
else:
raise RuntimeError("Unable to find version string.")


long_description = read("README.md")


setup(
name="xmipy",
description="xmipy is an extension to the bmipy Python package.",
long_description=long_description,
long_description_content_type="text/markdown",
author=__author__,
author_email=__author_email__,
url="https://github.com/Deltares/xmipy.git",
license="CC0",
platforms="Windows, Mac OS-X, Linux",
install_requires=["bmipy", "numpy"],
extras_require={
"tests": ["pytest", "pytest-cov", "requests", "mfpymake", "flopy"],
"lint": [
"mypy",
"black",
"isort",
],
},
python_requires=">=3.7",
packages=find_namespace_packages(exclude=("tests", "examples")),
package_data={"xmipy": ["py.typed"]},
version=get_version("xmipy/__init__.py"),
classifiers=["Topic :: Scientific/Engineering :: Hydrology"],
zip_safe=False,
)
setup()
Empty file added xmipy/timers/__init__.py
Empty file.

0 comments on commit 7678798

Please sign in to comment.