Skip to content

Commit

Permalink
Merge pull request #31 from USDA-ARS-NWRC/gh_actions
Browse files Browse the repository at this point in the history
Github actions
  • Loading branch information
Scott Havens committed Apr 27, 2021
2 parents 949df46 + 5c7a0b7 commit d811cd2
Show file tree
Hide file tree
Showing 14 changed files with 170 additions and 46 deletions.
56 changes: 56 additions & 0 deletions .github/workflows/new_pypi_release.yml
@@ -0,0 +1,56 @@
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Release to Pypi

# Run on a published release and push to Pypi
on:
release:
types: [published]

jobs:

build_dist:
name: Build source distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- uses: actions/setup-python@v2
name: Install Python
with:
python-version: '3.8'

- name: Install dependencies
run: |
python3 -m pip install --upgrade pip wheel
python3 -m pip install -r requirements.txt
- name: Build dist
run: python setup.py sdist --formats=gztar

- name: Build wheel
run: python3 setup.py bdist_wheel

- uses: actions/upload-artifact@v2
with:
path: dist/*.tar.gz

upload_pypi:
needs: [build_dist]
runs-on: ubuntu-latest
# upload to PyPI on every tag starting with 'v'
# if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/v')
# alternatively, to publish when a GitHub Release is created, use the following rule:
if: github.event_name == 'release' && github.event.action == 'published'
steps:
- uses: actions/download-artifact@v2
with:
name: artifact
path: dist

- uses: pypa/gh-action-pypi-publish@master
with:
user: __token__
password: ${{ secrets.pypi_password }}
# To test: repository_url: https://test.pypi.org/legacy/
70 changes: 70 additions & 0 deletions .github/workflows/unittest.yml
@@ -0,0 +1,70 @@
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Unittest, flake8

# Run action on pull requests
on:
pull_request:
branches: [ main ]

jobs:

flake8:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

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

- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
python3 -m pip install flake8
- name: Lint with flake8
run: |
flake8 weather_forecast_retrieval
unittest:
needs: flake8
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
python-version: [3.6, 3.7, 3.8, 3.9]
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v2

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

- name: Install eccodes
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
sudo apt-get install -y libeccodes-tools
elif [ "$RUNNER_OS" == "macOS" ]; then
brew install eccodes
else
echo "$RUNNER_OS not supported"
exit 1
fi
shell: bash

- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
python3 -m pip install .[tests]
- name: Run unittests
env:
WFR_SKIP_EXTERNAL_REQUEST_TEST: please_skip
WFR_SKIP_ON_GITHUB_ACTIONS: also_skip
run: python3 -m unittest -v
16 changes: 0 additions & 16 deletions .travis.yml

This file was deleted.

1 change: 1 addition & 0 deletions requirements.txt
Expand Up @@ -9,3 +9,4 @@ cfgrib>=0.9.7.1
beautifulsoup4
pandas
numpy
setuptools_scm<4.2
32 changes: 14 additions & 18 deletions setup.py
@@ -1,31 +1,13 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""The setup script."""

# # from setuptools import setup, find_packages
from setuptools import setup

with open('README.md') as readme_file:
readme = readme_file.read()

# with open('HISTORY.rst') as history_file:
# history = history_file.read()

with open('requirements.txt') as req_file:
requirements = req_file.read()

# setup_requirements = [
# # TODO(scotthavens): put setup requirements (distutils extensions, etc.) here
# ]

# test_requirements = [
# # TODO: put package test requirements here
# ]

setup(
name='weather_forecast_retrieval',
version='0.6.14',
description="Weather forecast retrieval gathers relevant gridded weather "
"forecasts to ingest into physically based models for water "
"supply forecasts",
Expand All @@ -50,10 +32,24 @@
'Development Status :: 4 - Beta',
'Intended Audience :: Developers',
'Natural Language :: English',
'License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
],
test_suite='tests',
extras_require={
'tests': [
'mock',
],
},
use_scm_version={
'local_scheme': 'node-and-date',
},
setup_requires=[
'setuptools_scm'
],
scripts=[
'scripts/run_hrrr_retrieval',
'scripts/run_hrrr_retrieval_dates',
Expand Down
1 change: 1 addition & 0 deletions tests/data/hrrr/test_config_file.py
Expand Up @@ -2,6 +2,7 @@
import unittest

import pandas as pd

import tests.helpers
from weather_forecast_retrieval.data.hrrr.config_file import ConfigFile

Expand Down
3 changes: 2 additions & 1 deletion tests/data/hrrr/test_file_loader.py
Expand Up @@ -2,8 +2,9 @@
import unittest

import mock
import tests.helpers
import xarray

import tests.helpers
from tests.RME import RMETestCase
from weather_forecast_retrieval.data.hrrr.file_loader import FileLoader
from weather_forecast_retrieval.data.hrrr.grib_file import GribFile
Expand Down
2 changes: 1 addition & 1 deletion tests/data/hrrr/test_http_retrieval.py
Expand Up @@ -3,8 +3,8 @@

import pandas as pd

from tests.RME import RMETestCase
from tests.helpers import skip_external_http_request
from tests.RME import RMETestCase
from weather_forecast_retrieval.data.hrrr import HttpRetrieval


Expand Down
4 changes: 4 additions & 0 deletions tests/helpers.py
Expand Up @@ -9,3 +9,7 @@

def skip_external_http_request():
return 'WFR_SKIP_EXTERNAL_REQUEST_TEST' in os.environ


def skip_on_github_actions():
return 'WFR_SKIP_ON_GITHUB_ACTIONS' in os.environ
5 changes: 5 additions & 0 deletions tests/test_grib2nc.py
@@ -1,12 +1,17 @@
import os
import unittest

from tests.helpers import skip_on_github_actions
from tests.RME import RMETestCase
from weather_forecast_retrieval.grib2nc import grib2nc


class TestGrib2nc(RMETestCase):
"""Tests for `weather_forecast_retrieval` package."""

@unittest.skipIf(
skip_on_github_actions(), 'On Github Actions, skipping'
)
def testGrib2nc(self):
"""
Convert test data to netcdf
Expand Down
2 changes: 1 addition & 1 deletion tests/test_hrrr_archive.py
Expand Up @@ -7,8 +7,8 @@
import numpy as np
import pandas as pd

from tests.RME import RMETestCase
from tests.helpers import skip_external_http_request
from tests.RME import RMETestCase
from weather_forecast_retrieval import hrrr_archive


Expand Down
12 changes: 9 additions & 3 deletions tests/test_hrrr_preprocessor.py
@@ -1,10 +1,16 @@
import unittest

import pandas as pd

from tests.helpers import skip_on_github_actions
from tests.RME import RMETestCase
from weather_forecast_retrieval.data.hrrr import FileLoader
from weather_forecast_retrieval.hrrr_preprocessor import HRRRPreprocessor


@unittest.skipIf(
skip_on_github_actions(), 'On Github Actions, skipping'
)
class TestHRRRPreprocessor(RMETestCase):
"""
Test cropping HRRR files
Expand All @@ -16,9 +22,9 @@ class TestHRRRPreprocessor(RMETestCase):
start_date = '2018-07-22 01:00'
end_date = '2018-07-22 02:00'
output_files = [
'hrrr.20180722/hrrr.t01z.wrfsfcf01.grib2',
'hrrr.20180722/hrrr.t02z.wrfsfcf01.grib2',
]
'hrrr.20180722/hrrr.t01z.wrfsfcf01.grib2',
'hrrr.20180722/hrrr.t02z.wrfsfcf01.grib2',
]

def setUp(self):
super().setUp()
Expand Down
11 changes: 5 additions & 6 deletions weather_forecast_retrieval/__init__.py
@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
from pkg_resources import DistributionNotFound, get_distribution

"""Top-level package for Weather Forecast Retrieval."""

__author__ = """Scott Havens"""
__email__ = 'scott.havens@ars.usda.gov'
__version__ = '0.6.14'
try:
__version__ = get_distribution(__name__).version
except DistributionNotFound:
__version__ = 'unknown'
1 change: 1 addition & 0 deletions weather_forecast_retrieval/hrrr_archive.py
Expand Up @@ -92,6 +92,7 @@ def download_url(fname, OUTDIR, logger, file_day, model='hrrr', field='sfc'):
check_this = requests.head(URL)
file_size = int(check_this.headers['content-length'])

success = False
try:
if file_size > 10000:
logger.info("Downloading: {}".format(URL))
Expand Down

0 comments on commit d811cd2

Please sign in to comment.