Skip to content

Commit

Permalink
Merge pull request #63 from JGCRI/feature/contributing
Browse files Browse the repository at this point in the history
Add contributing docs
  • Loading branch information
crvernon authored Feb 21, 2024
2 parents e0befc5 + 95e35ba commit 079350c
Show file tree
Hide file tree
Showing 12 changed files with 97 additions and 19 deletions.
14 changes: 9 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
---
name: build

on:
on: # yamllint disable-line rule:truthy
push:
branches:
- dev
- main
branches-ignore:
- 'false'
pull_request:
branches-ignore:
- 'false'

jobs:
build:
Expand All @@ -30,7 +33,8 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python setup.py install
pip install click-default-group
pip install .
- name: Test and generate coverage report on Linux
run: |
Expand Down
10 changes: 7 additions & 3 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
---
name: "docs"
on:

on: # yamllint disable-line rule:truthy
push:
branches:
- dev
- main
- 'main'
pull_request:
branches:
- 'main'

jobs:
docs:
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
example.py

# vs code
.vscode

# OS-specific files
.DS_Store

Expand Down
37 changes: 37 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# How to contribute

We welcome third-party patches, which are essential for advancing the science and architecture of Tethys.
But there are a few guidelines that we ask contributors to follow, guidelines that ease the maintainers' organizational and logistical duties, while encouraging development by others.

## Getting Started

* Make sure you have a [GitHub account](https://github.com/signup/free).
* **Open an issue** describing your proposed change or work (after making sure one does not already exist).
* Clearly describe the issue including steps to reproduce when it is a bug.
* Discuss how your change will affect Tethys, and thus whether it's MAJOR, MINOR, or a PATCH.
* Interact with the project maintainers to refine/change/prioritize your issue and identify what branch will be targeted (see below).
* Trivial changes to comments or documentation do not require creating a new issue.

## Making Changes

* **Start your work on the correct branch**.
* All active devleopment will start off of the `dev` branch. This represents our next version to be released. All feature and bug fix branches are to made off of `dev`.
* If your change is a PATCH, it will typically be based on the current dev branch; if MINOR, the next minor release branch; if MAJOR, the next major release branch. For example, as of this writing there are branches `dev`, `rc1.2` and `rc2.0`, corresponding to the PATCH-MINOR-MAJOR start points respectively.
* We will never accept pull requests to the `main` branch.
* Make sure your commit messages are descriptive but succinct, describing what was changed and why, and **reference the relevant issue number**. Make commits of logical units.
* Make sure you have added the necessary tests for your changes. Tests should be included in the root `tests` directory and are facilitated using `pytest` which is installed with the development version of Tethys. See more info on using `pytest` here: https://docs.pytest.org/en/7.4.x/contents.html
* Run _all_ the tests to assure nothing else was accidentally broken.

## Submitting Changes

* Submit a pull request.
* **Your pull request should include one of the following two statements**:
* You hereby grant PNNL unlimited license to use your code in this version or any future version of Tethys.
* Somebody else owns the copyright on the code being contributed (e.g., your employer because you did it as part of your work for them); you are authorized by that owner to grant PNNL an unlimited license to use this code in this version or any future version of Tethys, and you hereby do so. All other rights to the code are reserved by the copyright owner.
* The core team looks at Pull Requests on a regular basis, and will respond as soon as possible.


# Additional Resources

* [General GitHub documentation](http://help.github.com/)
* [GitHub pull request documentation](http://help.github.com/send-pull-requests/)
18 changes: 15 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,21 @@
[![docs](https://github.com/JGCRI/tethys/actions/workflows/docs.yml/badge.svg)](https://github.com/JGCRI/tethys/actions/workflows/docs.yml)
[![DOI](https://zenodo.org/badge/104476654.svg)](https://zenodo.org/badge/latestdoi/104476654)

# Summary
Demand for water is often modeled as part of integrated human-Earth systems models, such as GCAM, which operate at coarse spatiotemporal scales in order to model long-term global economic linkages. Tethys was designed to downscale projections from such models, producing high-resolution water demand data consistent with global dynamics. This allows coupling with gridded hydrology models, which represent physical processes on much finer scales.
# Tethys

# Documentation
Demand for water is often modeled as part of integrated human-Earth systems models, such as GCAM, which operate at coarse spatiotemporal scales in order to model long-term global economic linkages. `tethys` was designed to downscale projections from such models, producing high-resolution water demand data consistent with global dynamics. This allows coupling with gridded hydrology models, which represent physical processes on much finer scales.

## Documentation
Check out [Getting Started](https://jgcri.github.io/tethys/getting_started.html) for installation and basic usage.
Details on methodology and advanced usage are available on the [User Guide](https://jgcri.github.io/tethys/user_guide.html).

## Installation

Install `tethys` using pip:

`pip install tethys-downscale`


## Contributing to Tethys

Whether you find a typo in the documentation, find a bug, or want to develop functionality that you think will make Tethys more robust, you are welcome to contribute! See the full contribution guidelines in our [online documentation](https://jgcri.github.io/tethys/contributing.html).
2 changes: 1 addition & 1 deletion docs/source/getting_started.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ As a prerequisite, you'll need to have `Python <https://www.python.org/downloads

**tethys** can be installed from GitHub using pip::

pip install git+https://github.com/JGCRI/tethys
pip install tethys-downscale

This will automatically install the dependencies. In order to avoid package version conflicts, consider using a virtual environment.

Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ pandas>=1.2.4
netCDF4>=1.6
dask>=2022.12.1
xarray>=2022.09.0
rioxarray>=0.12.4
rioxarray>=0.12.4
3 changes: 2 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ def get_requirements():
'sphinx-panels~=0.6.0',
'sphinx-rtd-theme~=0.5.2',
'sphinx-mathjax-offline~=0.0.1',
'twine~=3.4.1'
'twine~=3.4.1',
'click-default-group>=1.2.4'
]
}
)
18 changes: 16 additions & 2 deletions tests/test_easy_query.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import difflib
import unittest

import tethys.datareader.easy_query as easy_query
Expand All @@ -12,8 +13,21 @@ class TestEasyQuery(unittest.TestCase):
</dummyQuery>"""

def test_easy_query(self):
query = easy_query.easy_query('demand-physical', sector=['Beef', 'Dairy'], technology='!water_td_*',
input=['*_water withdrawals', 'water_td_*_W'])
query = easy_query.easy_query(
'demand-physical',
sector=['Beef', 'Dairy'],
technology='!water_td_*',
input=['*_water withdrawals', 'water_td_*_W']
)

# identify error location
if query.querystr != TestEasyQuery.COMP_QUERY_STRING:
for i,s in enumerate(difflib.ndiff(TestEasyQuery.COMP_QUERY_STRING, query.querystr)):
if s[0]==' ': continue
elif s[0]=='-':
print(u'Delete "{}" from position {}'.format(s[-1], i))
elif s[0]=='+':
print(u'Add "{}" to position {}'.format(s[-1], i))

self.assertEqual(query.querystr, TestEasyQuery.COMP_QUERY_STRING)

Expand Down
3 changes: 3 additions & 0 deletions tests/test_regional.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ def test_elec_sector_rename(self):

def test_load_region_data(self):
gcamdb = os.path.join(os.path.dirname(__file__), 'data/testdb')
print(gcamdb)


df = regional.load_region_data(gcamdb, sectors=['municipal water'])

expected = pd.read_csv(os.path.join(os.path.dirname(__file__), 'data/testdb.csv'))
Expand Down
2 changes: 1 addition & 1 deletion tethys/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from .model import *
from .utils.install_supplement import get_example_data, default_download_dir

__version__ = "2.0.0"
__version__ = "2.0.1"
4 changes: 2 additions & 2 deletions tethys/datareader/easy_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ def easy_query(variable, year_axis=None, **kwargs):
year_axis = get_year_axis(variable)

# query template
querystr = f"""<aQuery><dummyQuery title="">
querystr = f"""<dummyQuery title="">
<axis1 name="axis">axis</axis1>
<axis2 name="year">{variable}[@{year_axis}]</axis2>
<xPath>{xpath}</xPath>
</dummyQuery></aQuery>"""
</dummyQuery>"""

return gcamreader.Query(querystr)

Expand Down

0 comments on commit 079350c

Please sign in to comment.