Repository: bird-house/finch (language: python)

Issue:
What kind of bird is Finch?
README: "_Finch is a bird..._"

This has been bothering me for years. We need some metaphor / definition.


Discussion / hints:
"Finch is a bird that can adapt to many different climates and ecological niches" ?
Well. Might be true for the finch bird, but I'm not sure it correctly applies to this repo :sweat: !
I just figured that there's a connection to climate (xclim) and the finch bird. I'm just spitballing here!

Fix patch:
diff --git a/.cruft.json b/.cruft.json
index b857281a..e7338f57 100644
--- a/.cruft.json
+++ b/.cruft.json
@@ -1,6 +1,6 @@
 {
   "template": "https://github.com/bird-house/cookiecutter-birdhouse",
-  "commit": "b6969697401008114c8e25846ae5801e7e65224d",
+  "commit": "bc8a389e02a3e55e55dad7657671d91e2f238ed9",
   "skip": [
     "finch/processes/wps_say_hello.py",
     "tests/test_wps_hello.py",
@@ -25,10 +25,13 @@
       "version": "0.11.3",
       "open_source_license": "Apache Software License 2.0",
       "http_port": "5000",
+      "use_pytest": "y",
+      "create_author_file": "y",
       "_copy_without_render": [
         "{{cookiecutter.project_slug}}/templates/*.cfg"
       ],
       "_template": "https://github.com/bird-house/cookiecutter-birdhouse"
     }
-  }
+  },
+  "checkout": null
 }
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
deleted file mode 100644
index 509835c5..00000000
--- a/.github/CONTRIBUTING.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Contributing
-
-Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.
-
-Please read the Birdhouse [Developer Guide](https://birdhouse.readthedocs.io/en/latest/guide_dev.html)
-and the [Finch Documentation](https://finch.readthedocs.io/en/latest/) to get started.
diff --git a/.gitignore b/.gitignore
index cda50164..507bbf58 100644
--- a/.gitignore
+++ b/.gitignore
@@ -77,6 +77,9 @@ docs/doctrees/
 docs/html/
 docs/build/
 docs/source/output-sanitize.cfg
+docs/finch.rst
+docs/finch.*.rst
+docs/modules.rst
 
 # External Sources
 #src/external
@@ -98,3 +101,19 @@ testdata.json
 
 # Merge conflict
 *.orig
+
+# Spyder project settings
+.spyderproject
+.spyproject
+
+# Rope project settings
+.ropeproject
+
+# mkdocs documentation
+/site
+
+# mypy
+.mypy_cache/
+
+# IDE settings
+.vscode/
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
new file mode 100644
index 00000000..1b6fd638
--- /dev/null
+++ b/CONTRIBUTING.rst
@@ -0,0 +1,121 @@
+.. highlight:: shell
+
+============
+Contributing
+============
+
+Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.
+
+Please read the Birdhouse [Developer Guide](https://birdhouse.readthedocs.io/en/latest/guide_dev.html)
+and the [Finch Documentation](https://finch.readthedocs.io/en/latest/) to get started.
+
+You can contribute in many ways:
+
+Types of Contributions
+----------------------
+
+Report Bugs
+~~~~~~~~~~~
+
+Report bugs at https://github.com/bird-house/finch/issues.
+
+If you are reporting a bug, please include:
+
+* Your operating system name and version.
+* Any details about your local setup that might be helpful in troubleshooting.
+* Detailed steps to reproduce the bug.
+
+Fix Bugs
+~~~~~~~~
+
+Look through the GitHub issues for bugs. Anything tagged with "bug" and "help wanted" is open to whoever wants to implement it.
+
+Implement Features
+~~~~~~~~~~~~~~~~~~
+
+Look through the GitHub issues for features. Anything tagged with "enhancement" and "help wanted" is open to whoever wants to implement it.
+
+Write Documentation
+~~~~~~~~~~~~~~~~~~~
+
+Finch could always use more documentation, whether as part of the official Finch docs, in docstrings, or even on the web in blog posts, articles, and such.
+
+Submit Feedback
+~~~~~~~~~~~~~~~
+
+The best way to send feedback is to file an issue at https://github.com/bird-house/finch/issues.
+
+If you are proposing a feature:
+
+* Explain in detail how it would work.
+* Keep the scope as narrow as possible, to make it easier to implement.
+* Remember that this is a volunteer-driven project, and that contributions
+  are welcome :)
+
+Get Started!
+------------
+
+Ready to contribute? Here's how to set up `finch` for local development.
+
+1. Fork the `finch` repo on GitHub.
+2. Clone your fork locally::
+
+    $ git clone git@github.com:your_name_here/finch.git
+
+3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper installed, this is how you set up your fork for local development::
+
+    $ mkvirtualenv finch
+    $ cd finch/
+    $ python setup.py develop
+
+4. Create a branch for local development::
+
+    $ git checkout -b name-of-your-bugfix-or-feature
+
+   Now you can make your changes locally.
+
+5. When you're done making changes, check that your changes pass flake8 and the
+   tests, including testing other Python versions with tox::
+
+    $ flake8 finch tests
+    $ python setup.py test or pytest
+    $ tox
+
+   To get flake8 and tox, just pip install them into your virtualenv.
+
+6. Commit your changes and push your branch to GitHub::
+
+    $ git add .
+    $ git commit -m "Your detailed description of your changes."
+    $ git push origin name-of-your-bugfix-or-feature
+
+7. Submit a pull request through the GitHub website.
+
+Pull Request Guidelines
+-----------------------
+
+Before you submit a pull request, check that it meets these guidelines:
+
+1. The pull request should include tests.
+2. If the pull request adds functionality, the docs should be updated. Put your new functionality into a function with a docstring, and add the feature to the list in README.rst.
+3. The pull request should work for Python 3.8, 3.9, 3.10 and 3.11. Check https://travis-ci.com/bird-house/finch/pull_requests and make sure that the tests pass for all supported Python versions.
+
+Tips
+----
+
+To run a subset of tests::
+
+$ pytest tests.test_finch
+
+Deploying
+---------
+
+A reminder for the maintainers on how to deploy.
+Make sure all your changes are committed (including an entry in HISTORY.rst).
+Then run::
+
+$ bump2version patch # possible: major / minor / patch
+$ git push
+$ git push --tags
+
+Travis will then deploy to PyPI if tests pass.
diff --git a/LICENSE.txt b/LICENSE
similarity index 94%
rename from LICENSE.txt
rename to LICENSE
index 12a6beb5..5d5cc861 100644
--- a/LICENSE.txt
+++ b/LICENSE
@@ -1,4 +1,20 @@
-Apache License
+Apache Software License 2.0
+
+Copyright (c) 2023, David Huard
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+                                 Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
 
diff --git a/MANIFEST.in b/MANIFEST.in
index e673778d..feebea1a 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,3 +1,4 @@
+include LICENSE
 include Makefile
 include *.txt
 include *.rst
diff --git a/README.rst b/README.rst
index d543bce2..d5ac1dd1 100644
--- a/README.rst
+++ b/README.rst
@@ -1,36 +1,19 @@
 Finch
-===============================
-
-.. image:: https://img.shields.io/badge/docs-latest-brightgreen.svg
-   :target: http://finch.readthedocs.io/en/latest/?badge=latest
-   :alt: Documentation Status
-
-.. image:: https://github.com/bird-house/finch/actions/workflows/main.yml/badge.svg
-   :target: https://github.com/bird-house/finch/actions/workflows/main.yml
-   :alt: GitHub CI
-
-.. image:: https://img.shields.io/github/license/bird-house/finch.svg
-    :target: https://github.com/bird-house/finch/blob/master/LICENSE.txt
-    :alt: GitHub license
-
-.. image:: https://badges.gitter.im/bird-house/birdhouse.svg
-    :target: https://gitter.im/bird-house/birdhouse?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
-    :alt: Join the chat at https://gitter.im/bird-house/birdhouse
+=====
 
+|docs| |pypi| |ci| |license| |gitter|
 
 Finch (the bird)
-  *Finch is a bird ...*
+  *Finch is a bird that can adapt to many different climates and ecological niches*
 
 A Web Processing Service for Climate Indicators.
 
 Documentation
 -------------
 
-Learn more about Finch in its official documentation at
-https://finch.readthedocs.io.
+Learn more about Finch in its official documentation at: https://pavics-sdi.readthedocs.io/projects/finch
 
-Submit bug reports, questions and feature requests at
-https://github.com/bird-house/finch/issues
+Submit bug reports, questions and feature requests at: https://github.com/bird-house/finch/issues
 
 Contributing
 ------------
@@ -42,7 +25,7 @@ Please use bumpversion_ to release a new version.
 License
 -------
 
-Free software: Apache Software License 2.0
+* Free software: Apache Software License 2.0
 
 Credits
 -------
@@ -51,5 +34,24 @@ This package was created with Cookiecutter_ and the `bird-house/cookiecutter-bir
 
 .. _Cookiecutter: https://github.com/audreyr/cookiecutter
 .. _`bird-house/cookiecutter-birdhouse`: https://github.com/bird-house/cookiecutter-birdhouse
-.. _`Developer Guide`: https://finch.readthedocs.io/en/latest/dev_guide.html
+.. _`Developer Guide`: https://pavics-sdi.readthedocs.io/projects/finch/en/latest/dev_guide.html
 .. _bumpversion: https://finch.readthedocs.io/en/latest/dev_guide.html#bump-a-new-version
+
+.. |docs| image:: https://readthedocs.org/projects/finch/badge/?version=latest
+    :target: https://pavics-sdi.readthedocs.io/projects/finch/en/latest/?badge=latest
+    :alt: Documentation Status
+
+.. |pypi| image:: https://img.shields.io/pypi/v/birdhouse-finch.svg
+        :target: https://pypi.python.org/pypi/birdhouse-finch
+
+.. |ci| image:: https://github.com/bird-house/finch/actions/workflows/main.yml/badge.svg
+   :target: https://github.com/bird-house/finch/actions/workflows/main.yml
+   :alt: GitHub CI
+
+.. |license| image:: https://img.shields.io/github/license/bird-house/finch.svg
+    :target: https://github.com/bird-house/finch/blob/master/LICENSE.txt
+    :alt: GitHub license
+
+.. |gitter| image:: https://badges.gitter.im/bird-house/birdhouse.svg
+    :target: https://gitter.im/bird-house/birdhouse?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
+    :alt: Join the chat at https://gitter.im/bird-house/birdhouse
diff --git a/docs/source/.gitignore b/docs/source/.gitignore
deleted file mode 100644
index 7996a8fd..00000000
--- a/docs/source/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/finch.rst
-/finch.*.rst
-/modules.rst
diff --git a/docs/source/authors.rst b/docs/source/authors.rst
new file mode 100644
index 00000000..7739272f
--- /dev/null
+++ b/docs/source/authors.rst
@@ -0,0 +1,1 @@
+.. include:: ../../AUTHORS.rst
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 609abf11..e1387207 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -1,17 +1,11 @@
 #!/usr/bin/env python
 # noqa: D100
 #
-# finch documentation build configuration file, created by
-# sphinx-quickstart on Fri Jun  9 13:47:02 2017.
+# finch documentation build configuration file, created by sphinx-quickstart on Fri Jun 9 13:47:02 2017.
 #
-# This file is execfile()d with the current directory set to its
-# containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
+# This file is execfile()d with the current directory set to its containing dir.
+# Note that not all possible configuration values are present in this autogenerated file.
+# All configuration values have a default; values that are commented out serve to show the default.
 
 import os
 import sys
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 3e34f0af..318de0cf 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -9,6 +9,7 @@
    notebooks/index
    dev_guide
    processes
+   authors
    changes
 
 Indices and tables
diff --git a/environment.yml b/environment.yml
index d0a36f17..68adee0c 100644
--- a/environment.yml
+++ b/environment.yml
@@ -9,7 +9,7 @@ dependencies:
   - clisops >=0.9.3
   - dask
   - distributed
-  - geopandas!=0.13.1
+  - geopandas !=0.13.1
   - h5netcdf
   - netcdf4
   - numpy
diff --git a/requirements_dev.txt b/requirements_dev.txt
index b28a6987..6b3d87ac 100644
--- a/requirements_dev.txt
+++ b/requirements_dev.txt
@@ -1,21 +1,24 @@
-pytest
+pytest>=6.0
+pytest-cov
 flake8
 pytest-flake8
 ipython
 pytest-notebook
 nbsphinx
-nbval
+nbval>=0.9.6
 nbconvert
-sphinx>=1.7
-bumpversion
+sphinx>=1.8.5
+bump2version
 twine
 cruft
 jupyter_client
 # Changing dependencies above this comment will create merge conflicts when updating the cookiecutter template with cruft. Add extra requirements below this line.
 birdhouse-birdy>=0.8.1
 geojson
+jupyter-server>=2.7.2 # not directly required, pinned by Snyk to avoid a vulnerability
+lxml
 matplotlib
+owslib
+pillow>=10.0.1 # not directly required, pinned by Snyk to avoid a vulnerability
 pre-commit
 tornado>=6.3.3 # not directly required, pinned by Snyk to avoid a vulnerability
-jupyter-server>=2.7.2 # not directly required, pinned by Snyk to avoid a vulnerability
-pillow>=10.0.1 # not directly required, pinned by Snyk to avoid a vulnerability
diff --git a/requirements_docs.txt b/requirements_docs.txt
index e6f53344..5b4340f6 100644
--- a/requirements_docs.txt
+++ b/requirements_docs.txt
@@ -2,12 +2,12 @@ birdhouse-birdy>=0.8.1
 ipython
 matplotlib
 nbsphinx
+pillow>=10.0.1 # not directly required, pinned by Snyk to avoid a vulnerability
 pywps>=4.5.1
+setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability
 sphinx>=4.0
 sphinxcontrib-bibtex
 unidecode
 xclim==0.43
-pillow>=10.0.1 # not directly required, pinned by Snyk to avoid a vulnerability
-setuptools>=65.5.1 # not directly required, pinned by Snyk to avoid a vulnerability
 werkzeug>=3.0.1 # not directly required, pinned by Snyk to avoid a vulnerability
 tornado>=6.3.3 # not directly required, pinned by Snyk to avoid a vulnerability
diff --git a/setup.cfg b/setup.cfg
index 46f4214e..b61a21e1 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -23,18 +23,19 @@ replace = "version": "{new_version}",
 universal = 1
 
 [tool:pytest]
-addopts = 
+addopts =
+	--color=yes
 	--strict
 	--tb=native
 python_files = test_*.py
-markers = 
+markers =
 	online: mark test to need internet connection
 	slow: mark test to be slow
 
 [flake8]
 ignore = F401,E402,E203,W503
 max-line-length = 120
-exclude = 
+exclude =
 	.git
 	__pycache__
 	docs/source/conf.py
@@ -42,10 +43,10 @@ exclude =
 	dist
 	src
 	tests
-rst-directives = 
+rst-directives =
 	bibliography
 	autolink-skip
-rst-roles = 
+rst-roles =
 	doc
 	mod
 	py:attr
@@ -64,7 +65,7 @@ rst-roles =
 	cite:p
 	cite:t
 	cite:ts
-extend-ignore = 
+extend-ignore =
 	RST399
 	RST201
 	RST203
@@ -75,7 +76,7 @@ extend-ignore =
 [pycodestyle]
 count = False
 exclude = docs/source/conf.py
-ignore = 
+ignore =
 	E226
 	E402
 	E501
diff --git a/setup.py b/setup.py
index 809bb19e..013f60ae 100644
--- a/setup.py
+++ b/setup.py
@@ -28,20 +28,21 @@
 dev_reqs = [line.strip() for line in open("requirements_dev.txt")]
 
 classifiers = [
-    "Development Status :: 3 - Alpha",
+    "Development Status :: 4 - Beta",
     "Intended Audience :: Developers",
     "Intended Audience :: Science/Research",
-    "Operating System :: MacOS :: MacOS X",
-    "Operating System :: POSIX",
-    "Programming Language :: Python",
+    "License :: OSI Approved :: Apache Software License",
+    "Natural Language :: English",
     "Natural Language :: English",
+    "Operating System :: MacOS :: MacOS X",
+    "Operating System :: POSIX :: Linux",
     "Programming Language :: Python :: 3",
     "Programming Language :: Python :: 3.8",
     "Programming Language :: Python :: 3.9",
     "Programming Language :: Python :: 3.10",
     "Programming Language :: Python :: 3.11",
+    "Programming Language :: Python",
     "Topic :: Scientific/Engineering :: Atmospheric Science",
-    "License :: OSI Approved :: Apache Software License",
 ]
 
 setup(
@@ -56,12 +57,13 @@
     python_requires=REQUIRES_PYTHON,
     classifiers=classifiers,
     license="Apache Software License 2.0",
-    license_files=["LICENSE.txt"],
+    license_files=["LICENSE"],
     keywords="wps pywps birdhouse finch",
     packages=find_namespace_packages(".", include=["finch*"]),
     include_package_data=True,
     package_data={"finch": ["*.yml"]},
     install_requires=requirements,
+    test_suite="tests",
     extras_require={
         "dev": dev_reqs,  # pip install ".[dev]"
     },


Test patch:
diff --git a/tests/_common.py b/tests/_common.py
index 52e947cb..d9e99af8 100644
--- a/tests/_common.py
+++ b/tests/_common.py
@@ -1,6 +1,7 @@
 # noqa: D100
 from pathlib import Path
 
+import lxml.etree
 from pywps import get_ElementMakerForVersion
 from pywps.app.basic import get_xpath_ns
 from pywps.tests import WpsClient, WpsTestResponse
@@ -49,7 +50,7 @@ def get_output(doc):  # noqa: D103
     return output
 
 
-def get_metalinks(doc):
+def get_metalinks(doc: lxml.etree.Element):
     """Return a dictionary of metaurls found in metalink XML, keyed by their file name.
 
     Parameters