Skip to content

Commit

Permalink
Github actions and horizon OSX fix (#10)
Browse files Browse the repository at this point in the history
* gh action template yml

* fix flake8 call

* install topocalc to build C code

* try with tox

* install tox

* tox env

* run setup.py test

* os matrix

* cleanup

* coverage

* coverage try 2

* coverage try 3

* cibuildwheel for linux osx

* seperate build wheels workflow

* wrong directory

* fixing build-wheels

* fixing build-wheels

* wheel dependancy on unittest

* cap numpy

* cc env

* cython capy

* cython 0.28.X doesn't work

* gcc version print

* specify gcc alias

* testing with ubuntu

* cc testing

* updating setup.py for cc overwrite

* full test

* moved all actions to one file

* moved all actions to one file

* restructuring

* fixing

* removing O3 flag

* gcc version

* removed slopef/b functions and was more explicit

* updated setup.py for cython language directive and simplified topo_core.pyx

* dist in slope int to double more explicit

* viewf test more verbose

* up nangles for viewf test

* viewf test for osx

* upping osx tolerance

* updating setup.py to be like smrf's

* move cython to dev requirement and see if osx will use c code instead

* pyx bool to bint

* viewf test assert all close

* double declaration

* wrong c type

* debugging and cleanupy

* c typingy

* relaxed osx viewf test

* hypot

* zeros

* gcc

* refactor c code a bit

* add linux

* more print

* just horizon

* hor1f was going 1 index too far

* remove debug

* cleanup

* delete travis.yml

* action on

* updated action on

* updating README
  • Loading branch information
Scott Havens authored Apr 14, 2021
1 parent 63bccf6 commit 3e58341
Show file tree
Hide file tree
Showing 14 changed files with 419 additions and 470 deletions.
153 changes: 153 additions & 0 deletions .github/workflows/python-package.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
# 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, coverage

# Run action on pull requests
# Run on a published release and push to Pypi
on:
pull_request:
branches: [ main ]
release:
types: [published]

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 topocalc
coverage:
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 coverage coveralls PyYAML
python3 -m pip install -r requirements.txt
- name: Run coverage
run: |
make coveralls
unittest:
needs: [flake8, coverage]
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 dependencies
run: |
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
- name: Run unittests
run: |
python3 setup.py test
build_wheels:
needs: unittest
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-20.04, macos-10.15]

steps:
- uses: actions/checkout@v2

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

- name: Build wheels
uses: joerick/[email protected]
env:
CIBW_SOME_OPTION: value
CIBW_TEST_REQUIRES: nose
CIBW_TEST_COMMAND: "nosetests -vv --exe topocalc"
CIBW_BUILD: "cp3*-manylinux_x86_64 cp3*-macosx_x86_64"
CIBW_SKIP: "?p27* pp* ?p35"
CIBW_BUILD_VERBOSITY: 3
CIBW_BEFORE_BUILD: "pip install -r requirements.txt"

- uses: actions/upload-artifact@v2
with:
path: ./wheelhouse/*.whl

build_sdist:
needs: unittest
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
python3 -m pip install -r requirements.txt
- name: Build sdist
run: python setup.py sdist --formats=gztar

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

upload_pypi:
needs: [build_wheels, build_sdist]
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/
97 changes: 0 additions & 97 deletions .travis.yml

This file was deleted.

3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# topocalc

[![Pypi version](https://img.shields.io/pypi/v/topocalc.svg)](https://pypi.python.org/pypi/topocalc)
[![Build Status](https://travis-ci.com/USDA-ARS-NWRC/topocalc.svg?branch=main)](https://travis-ci.com/USDA-ARS-NWRC/topocalc)
[![Coverage Status](https://coveralls.io/repos/github/USDA-ARS-NWRC/topocalc/badge.svg?branch=main)](https://coveralls.io/github/USDA-ARS-NWRC/topocalc?branch=main)
[![Maintainability](https://api.codeclimate.com/v1/badges/20930fef2e7b7fe91dd3/maintainability)](https://codeclimate.com/github/USDA-ARS-NWRC/topocalc/maintainability)

Expand Down Expand Up @@ -55,7 +54,7 @@ The sky view factor (`svf`) is the amount of the sky that is visible to a partic

## Installation

> **NOTE**: `topocalc` has only been tested for Python 3.5 to 3.8 on Linux and MacOSX environments.
> **NOTE**: `topocalc` has only been tested for Python 3.6 to 3.9 on Linux and MacOSX environments. If building from source, topocalc must be compiled with `gcc`, `clang` will not work if on MacOS.
To install:

Expand Down
97 changes: 16 additions & 81 deletions notebooks/viewf_theory.ipynb

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
numpy>=1.15
Click>=7.0
Cython>=0.28.4
spatialnc>=0.2.12
setuptools_scm<4.2
2 changes: 1 addition & 1 deletion requirements_dev.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
-r requirements.txt
Cython>=0.29
netCDF4>=1.2.9
wheel==0.33.6
watchdog==0.9.0
flake8==3.7.8
tox==3.14.0
coverage
Sphinx==1.8.5
twine==1.14.0
Expand Down
41 changes: 25 additions & 16 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,39 @@
import os

import numpy
from Cython.Distutils import build_ext
from setuptools import Extension, find_packages, setup
from setuptools.command.build_ext import build_ext as _build_ext

# Test if compiling with cython or using the C source
try:
from Cython.Distutils import build_ext as _build_ext
except ImportError:
USE_CYTHON = False
else:
USE_CYTHON = True

print('Using Cython {}'.format(USE_CYTHON))
ext = '.pyx' if USE_CYTHON else '.c'


class build_ext(_build_ext):
def finalize_options(self):
_build_ext.finalize_options(self)


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

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

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

setup_requirements = ['setuptools_scm']

test_requirements = []

# force the compiler to use gcc
os.environ["CC"] = "gcc"
# Give user option to specify their local compiler name
if "CC" not in os.environ:
os.environ["CC"] = "gcc"

cmdclass = {'build_ext': build_ext}
ext_modules = []
Expand All @@ -36,25 +51,23 @@
"hor1d.c",
]],
include_dirs=[numpy.get_include()],
extra_compile_args=['-O3'],
extra_link_args=['-O3'],
),
]

setup(
author="Scott Havens",
author_email='scott.havens@ars.usda.gov',
python_requires='>=3.5',
author="USDA ARS NWRC",
author_email='snow@ars.usda.gov',
python_requires='>=3.6',
classifiers=[
'Development Status :: 2 - Pre-Alpha',
'Intended Audience :: Developers',
'License :: OSI Approved :: MIT License',
'Natural Language :: English',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9'
],
description="Topo calculations like gradient and sky view",
entry_points={
Expand All @@ -67,9 +80,6 @@
long_description=readme,
long_description_content_type="text/markdown",
include_package_data=True,
# package_data={
# 'topocalc': ['*.pyx', '*.pxd', '*.c', '*.h'],
# },
keywords='topocalc',
name='topocalc',
packages=find_packages(include=['topocalc', 'topocalc.*']),
Expand All @@ -79,7 +89,6 @@
cmdclass=cmdclass,
ext_modules=ext_modules,
url='https://github.com/USDA-ARS-NWRC/topocalc',
# version='0.1.0',
use_scm_version={
"local_scheme": "no-local-version"
},
Expand Down
Loading

0 comments on commit 3e58341

Please sign in to comment.