Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor setup and modernize package structure as well as CI #287

Merged
merged 34 commits into from Jul 15, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
4c694f3
Setuptools: move config to new pyproject.toml; use setuptools_scm for…
MuellerSeb Jun 30, 2022
042ce94
setuptools_scm: better regex to find version from non semver conform …
MuellerSeb Jun 30, 2022
f09f828
move tutorials to separate folder
MuellerSeb Jun 30, 2022
a1448f5
tests: cli_cmf_lumped.py not existing
MuellerSeb Jun 30, 2022
f4e574d
move to src/ based package structure
MuellerSeb Jun 30, 2022
fdd8b8c
remove version file
MuellerSeb Jun 30, 2022
4a4920e
re-include .csv files
MuellerSeb Jun 30, 2022
bd28c6e
setup: add back setup.py for editable install until setuptools implem…
MuellerSeb Jun 30, 2022
232bda9
test: fix tests
MuellerSeb Jun 30, 2022
8875aba
rework CI
MuellerSeb Jun 30, 2022
75b210b
tests: add missing dependencies
MuellerSeb Jun 30, 2022
17276a8
CI: only use black and isort for information and don't fail
MuellerSeb Jun 30, 2022
781fb06
test: add more missing dependencies
MuellerSeb Jun 30, 2022
fc88808
CI: skip coverage submit for now
MuellerSeb Jun 30, 2022
573be98
python 2 is dead; we require py3.7 at least now
MuellerSeb Jun 30, 2022
e42243f
remove unicode hack
MuellerSeb Jul 1, 2022
6a2a6bb
deprecation warning: replace np aliases for int and float
MuellerSeb Jul 1, 2022
bcdb719
tests: cleanup to really test what should be tested - a installed ver…
MuellerSeb Jul 1, 2022
99d377e
tests: remove unused imports
MuellerSeb Jul 1, 2022
488f6f5
Introduce the missing Tokens
thouska Jul 6, 2022
2a2b103
MANIFEST: include tutorials in sdist
MuellerSeb Jul 8, 2022
6ac208a
apply isort
MuellerSeb Jul 8, 2022
e16b22c
apply black to tutorials
MuellerSeb Jul 8, 2022
1eea795
apply black to tests
MuellerSeb Jul 8, 2022
e9b7ab9
apply black to src
MuellerSeb Jul 8, 2022
363715d
pyproject: remove 'wheel' as build dep (will be installed by setuptools)
MuellerSeb Jul 8, 2022
dc4ad19
CI: re-enable isort and black checks
MuellerSeb Jul 13, 2022
bf25421
MANIFEST: fix missing tutorials; exclude cache files
MuellerSeb Jul 13, 2022
b1ef055
MANIFEST: add missing test files; simplify manifest
MuellerSeb Jul 13, 2022
a6ba6b9
CI: prepare for merge to master
MuellerSeb Jul 13, 2022
d4b7aa4
CI: add gihub token for coveralls
MuellerSeb Jul 13, 2022
f493535
Add me as author
MuellerSeb Jul 13, 2022
f8ebafd
Cov: remove redundant omits
MuellerSeb Jul 13, 2022
4e0becb
Update to new code style guidelines
thouska Jul 15, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
11 changes: 0 additions & 11 deletions .coveragerc

This file was deleted.

115 changes: 115 additions & 0 deletions .github/workflows/main.yml
@@ -0,0 +1,115 @@
name: Continuous Integration

on:
push:
branches:
- "master"
tags:
- "*"
pull_request:
branches:
- "master"
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

env:
# needed by coveralls
GITHUB_TOKEN: ${{ secrets.COVERALLS_TOKEN }}

jobs:
source_check:
name: source check
runs-on: ubuntu-latest
strategy:
fail-fast: false

steps:
- uses: actions/checkout@v2

- name: Set up Python 3.8
uses: actions/setup-python@v2
with:
python-version: 3.8

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install black 'isort[colors]<6'
pip install --editable .

- name: black check
run: |
python -m black --check --diff --color .

- name: isort check
run: |
python -m isort --check --diff --color .

build_sdist:
name: sdist on ${{ matrix.os }} with py ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
python-version: ['3.7', '3.8', '3.9', '3.10']

steps:
- uses: actions/checkout@v2
with:
fetch-depth: '0'

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install build coveralls>=3.0.0
pip install --editable .[test]

- name: Run tests
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
python -m pytest --cov spotpy --cov-report term-missing -v tests/
python -m coveralls --service=github

- name: Build sdist
run: |
python -m build

- uses: actions/upload-artifact@v2
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.9'
with:
path: dist

upload_to_pypi:
needs: [build_sdist]
runs-on: ubuntu-latest

steps:
- uses: actions/download-artifact@v2
with:
name: artifact
path: dist

- name: Publish to Test PyPI
# only if working on master
if: github.ref == 'refs/heads/master'
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_TEST_TOKEN }}
repository_url: https://test.pypi.org/legacy/
skip_existing: true

- name: Publish to PyPI
# only if tagged
if: startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_TOKEN }}
39 changes: 0 additions & 39 deletions .github/workflows/python-app.yml

This file was deleted.

39 changes: 0 additions & 39 deletions .github/workflows/python-publish.yml

This file was deleted.

16 changes: 11 additions & 5 deletions .gitignore
Expand Up @@ -9,7 +9,8 @@ __pycache__/
#other files
*.out
*.png
*.csv
test_DDS.csv
./*.csv
site/*
#mkdocs.yml

Expand All @@ -32,6 +33,9 @@ wheels/
.installed.cfg
*.egg

# generated version file
src/spotpy/_version.py

# Python Unittest tool `py.test`
.pytest_cache/*

Expand Down Expand Up @@ -98,6 +102,8 @@ ENV/
.spyderproject
# PyCharm
.idea/
# VSCode
.vscode/

# Rope project settings
.ropeproject
Expand All @@ -108,12 +114,12 @@ ENV/
.settings/

# hymod example
spotpy/examples/hymod/*
src/spotpy/examples/hymod/*

# Test Cases
spotpy/hymod/testHymod/*
spotpy/hymod/RunsWithNewHymod/*
spotpy/hymod/likelihood_test/*
src/spotpy/hymod/testHymod/*
src/spotpy/hymod/RunsWithNewHymod/*
src/spotpy/hymod/likelihood_test/*

# a doc folder for some notices
_doc
Expand Down
59 changes: 0 additions & 59 deletions .travis.yml

This file was deleted.

8 changes: 4 additions & 4 deletions CONTRIBUTING.md
Expand Up @@ -6,7 +6,7 @@ There are 4 main ways of contributing to the SPOTPY project (in descending order

* Adding new or improved functionality to the existing codebase
* Fixing outstanding issues (bugs) with the existing codebase. They range from low-level software bugs to higher-level design problems.
* Contributing or improving the documentation (`docs`) or examples (`spotpy/examples`)
* Contributing or improving the documentation (`docs`) or examples (`src/spotpy/examples`)
* Submitting issues related to bugs or desired enhancements

# Opening issues
Expand Down Expand Up @@ -76,7 +76,7 @@ We recommended that your contribution complies with the following guidelines bef

* Please prefix the title of incomplete contributions with `[WIP]` (to indicate a work in progress). WIPs may be useful to (1) indicate you are working on something to avoid duplicated work, (2) request broad review of functionality or API, or (3) seek collaborators.

* When adding additional functionality, you may want to provide at least one example script in the ``spotpy/examples/`` folder. Have a look at other examples for reference. Examples should demonstrate why the new functionality is useful in practice and, if possible, compare it to other methods available in SPOTPY.
* When adding additional functionality, you may want to provide at least one example script in the ``src/spotpy/examples/`` folder. Have a look at other examples for reference. Examples should demonstrate why the new functionality is useful in practice and, if possible, compare it to other methods available in SPOTPY.

You can also check for common programming errors with the following
tools:
Expand Down Expand Up @@ -111,7 +111,7 @@ tools:

## Style guide

Follow [TensorFlow's style guide](https://www.tensorflow.org/versions/master/how_tos/style_guide.html) or the [Google style guide](https://google.github.io/styleguide/pyguide.html) for writing code, which more or less follows PEP 8.
Try to make sure to follow the [Black style guide](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html) and [isort](https://pypi.org/project/isort/) for code submissions.


#### This guide was derived from the [scikit-learn guide to contributing](https://github.com/scikit-learn/scikit-learn/blob/master/CONTRIBUTING.md)
#### This guide was derived from the [scikit-learn guide to contributing](https://github.com/scikit-learn/scikit-learn/blob/master/CONTRIBUTING.md) and adopted to SPOTPY.
15 changes: 6 additions & 9 deletions MANIFEST.in
@@ -1,9 +1,6 @@
include README.md
include MANIFEST.in
include setup.py
include setup.cfg
recursive-include spotpy/examples/cmf_data *
recursive-include spotpy/examples/hymod_exe *
recursive-include spotpy/examples/hymod_unix *
recursive-include spotpy/examples/hymod_python *
include LICENSE
prune **
graft src/spotpy
graft tests
graft tutorials
include LICENSE README.md pyproject.toml setup.py
global-exclude __pycache__ *.py[co]