-
Notifications
You must be signed in to change notification settings - Fork 40
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor: modernize build with
pyproject.toml
(#322)
- Loading branch information
1 parent
6988bdc
commit e6d8f4b
Showing
10 changed files
with
106 additions
and
171 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,103 @@ | ||
[build-system] | ||
requires = ["setuptools", "setuptools_scm"] | ||
requires = ["setuptools>=64", "setuptools_scm>=8"] | ||
build-backend = "setuptools.build_meta" | ||
|
||
[project] | ||
name = "pyTMD" | ||
description = "Tide Model Driver to read OTIS, ATLAS, GOT and FES formatted tidal solutions and make tidal predictions" | ||
keywords = [ | ||
"Ocean Tides", | ||
"Load Tides", | ||
"Pole Tides", | ||
"Solid Earth Tides", | ||
"Tidal Prediction", | ||
] | ||
authors = [ | ||
{name = "Tyler Sutterley"}, | ||
{name = "Karen Alley"}, | ||
{name = "Kelly Brunt"}, | ||
{name = "Susan Howard"}, | ||
{name = "Laurie Padman"}, | ||
{name = "Matt Siegfried"}, | ||
{email = "[email protected]"} | ||
] | ||
maintainers = [{ name = "pyTMD contributors" }] | ||
license = {file = "LICENSE"} | ||
readme = "README.rst" | ||
|
||
requires-python = "~=3.6" | ||
dependencies = [ | ||
"lxml", | ||
"netCDF4", | ||
"numpy", | ||
"pyproj", | ||
"python-dateutil", | ||
"scipy>=1.10.1", | ||
"setuptools_scm", | ||
"timescale>=0.0.3", | ||
] | ||
|
||
dynamic = ["version"] | ||
|
||
classifiers=[ | ||
"Development Status :: 3 - Alpha", | ||
"Intended Audience :: Science/Research", | ||
"License :: OSI Approved :: MIT License", | ||
"Operating System :: OS Independent", | ||
"Programming Language :: Python :: 3", | ||
"Programming Language :: Python :: 3.6", | ||
"Programming Language :: Python :: 3.7", | ||
"Programming Language :: Python :: 3.8", | ||
"Programming Language :: Python :: 3.9", | ||
"Programming Language :: Python :: 3.10", | ||
"Programming Language :: Python :: 3.11", | ||
"Programming Language :: Python :: 3.12", | ||
"Topic :: Scientific/Engineering :: Physics", | ||
] | ||
|
||
[project.urls] | ||
Homepage = "https://pyTMD.readthedocs.io" | ||
Documentation = "https://pyTMD.readthedocs.io" | ||
Repository = "https://github.com/tsutterley/pyTMD" | ||
Issues = "https://github.com/tsutterley/pyTMD/issues" | ||
|
||
[project.optional-dependencies] | ||
doc = ["docutils", "fontconfig", "freetype", "graphviz", "numpydoc", "sphinx", "sphinx-argparse>=0.4", "sphinx_rtd_theme"] | ||
all = ["cartopy", "gdal", "h5py", "ipyleaflet", "ipywidgets", "jplephem", "matplotlib", "mpi4py", "notebook", "pandas", "pyyaml"] | ||
dev = ["flake8", "pytest>=4.6", "pytest-cov", "oct2py", "boto3"] | ||
|
||
[tool.setuptools.packages.find] | ||
exclude = ["test*", "run*"] | ||
|
||
[tool.pytest.ini_options] | ||
minversion = "6.0" | ||
norecursedirs = ".git" | ||
python_files = [ | ||
"test*.py" | ||
] | ||
testpaths = [ | ||
"test" | ||
] | ||
|
||
[tool.coverage.run] | ||
branch = true | ||
source = [ | ||
"pyTMD", | ||
"test", | ||
] | ||
omit = [ | ||
"setup.py", | ||
"conf.py", | ||
"scripts/*", | ||
"pyTMD/calc_astrol_longitudes.py", | ||
"pyTMD/compute_tide_corrections.py", | ||
"pyTMD/convert_crs.py", | ||
"pyTMD/convert_ll_xy.py", | ||
"pyTMD/load_constituent.py", | ||
"pyTMD/load_nodal_corrections.py", | ||
"test/def_to_json.py", | ||
] | ||
|
||
[tool.coverage.report] | ||
show_missing = true | ||
precision = 2 |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,5 @@ | ||
import os | ||
import sys | ||
import logging | ||
import subprocess | ||
from setuptools import setup, find_packages | ||
|
||
logging.basicConfig(stream=sys.stderr, level=logging.INFO) | ||
log = logging.getLogger() | ||
|
||
# package description and keywords | ||
description = ('Tide Model Driver to read OTIS, ATLAS, GOT and FES ' | ||
'formatted tidal solutions and make tidal predictions') | ||
keywords = 'Ocean Tides, Load Tides, Pole Tides, Tidal Prediction, OTIS, GOT, FES' | ||
# get long_description from README.rst | ||
with open('README.rst', mode='r', encoding='utf8') as fh: | ||
long_description = fh.read() | ||
long_description_content_type = "text/x-rst" | ||
|
||
# install requirements and dependencies | ||
on_rtd = os.environ.get('READTHEDOCS') == 'True' | ||
if on_rtd: | ||
install_requires = [] | ||
else: | ||
# get install requirements | ||
with open('requirements.txt', mode='r', encoding='utf8') as fh: | ||
install_requires = [line.split().pop(0) for line in fh.read().splitlines()] | ||
from setuptools import setup | ||
|
||
# get version | ||
with open('version.txt', mode='r', encoding='utf8') as fh: | ||
|
@@ -32,45 +8,6 @@ | |
# list of all scripts to be included with package | ||
scripts=[os.path.join('scripts',f) for f in os.listdir('scripts') if f.endswith('.py')] | ||
|
||
# run cmd from the command line | ||
def check_output(cmd): | ||
return subprocess.check_output(cmd).decode('utf') | ||
|
||
# check if GDAL is installed | ||
gdal_output = [None] * 4 | ||
try: | ||
for i, flag in enumerate(("--cflags", "--libs", "--datadir", "--version")): | ||
gdal_output[i] = check_output(['gdal-config', flag]).strip() | ||
except Exception as exc: | ||
log.warning('Failed to get options via gdal-config') | ||
else: | ||
log.info(f"GDAL version from via gdal-config: {gdal_output[3]}") | ||
# if setting GDAL version from via gdal-config | ||
if gdal_output[3] and ('gdal' in install_requires): | ||
# add version information to gdal in install_requires | ||
gdal_index = install_requires.index('gdal') | ||
install_requires[gdal_index] = f'gdal=={gdal_output[3]}' | ||
elif any(install_requires) and ('gdal' in install_requires): | ||
# gdal version not found | ||
gdal_index = install_requires.index('gdal') | ||
install_requires.pop(gdal_index) | ||
|
||
# check if HDF5 is installed | ||
hdf5_output = [None] * 2 | ||
try: | ||
for i, cmd in enumerate((["h5cc","-showconfig"], ["h5dump","--version"])): | ||
hdf5_output[i] = check_output(cmd).strip() | ||
# parse HDF5 version from h5dump | ||
hdf5_version = hdf5_output[1].split().pop(2) | ||
except Exception as exc: | ||
log.warning('Failed to get HDF5 options') | ||
else: | ||
log.info(f"HDF5 version from via h5dump: {hdf5_version}") | ||
# if the HDF5 version not found | ||
if not any(hdf5_output) and ('h5py' in install_requires): | ||
hdf5_index = install_requires.index('h5py') | ||
install_requires.pop(hdf5_index) | ||
|
||
# semantic version configuration for setuptools-scm | ||
setup_requires = ["setuptools_scm"] | ||
use_scm_version = { | ||
|
@@ -82,30 +19,6 @@ def check_output(cmd): | |
|
||
setup( | ||
name='pyTMD', | ||
description=description, | ||
long_description=long_description, | ||
long_description_content_type=long_description_content_type, | ||
url='https://github.com/tsutterley/pyTMD', | ||
author='Tyler Sutterley', | ||
author_email='[email protected]', | ||
license='MIT', | ||
classifiers=[ | ||
'Development Status :: 3 - Alpha', | ||
'Intended Audience :: Science/Research', | ||
'Topic :: Scientific/Engineering :: Physics', | ||
'License :: OSI Approved :: MIT License', | ||
'Programming Language :: Python :: 3', | ||
'Programming Language :: Python :: 3.6', | ||
'Programming Language :: Python :: 3.7', | ||
'Programming Language :: Python :: 3.8', | ||
'Programming Language :: Python :: 3.9', | ||
'Programming Language :: Python :: 3.10', | ||
], | ||
keywords=keywords, | ||
packages=find_packages(), | ||
install_requires=install_requires, | ||
setup_requires=setup_requires, | ||
use_scm_version=use_scm_version, | ||
scripts=scripts, | ||
include_package_data=True, | ||
) |