Skip to content

Commit

Permalink
Merge b2ab2b4 into 3427e10
Browse files Browse the repository at this point in the history
  • Loading branch information
philippjfr committed Feb 3, 2019
2 parents 3427e10 + b2ab2b4 commit 680ad16
Show file tree
Hide file tree
Showing 8 changed files with 294 additions and 107 deletions.
21 changes: 12 additions & 9 deletions .appveyor.yml
@@ -1,4 +1,6 @@
environment:
global:
CHANS_DEV: "-c pyviz/label/dev -c conda-forge"
matrix:
- PY: "2.7"
CONDA: "C:\\Miniconda-x64"
Expand All @@ -15,20 +17,21 @@ init:
- cmd: echo %path%

install:
- "conda config --set always_yes yes"
- "conda update -q conda"
- "conda info -a"
- "conda create -n holoviews python=%PY%"
- "conda env update -n holoviews -f environment.yml"
- "activate holoviews"
- "python setup.py develop"
- "conda install -y -c pyviz pyctdev && doit ecosystem_setup"
- "conda install -y conda<4.6"
- "doit env_create %CHANS_DEV% --name=test --python=%PY%"
- "activate test"
- "doit develop_install %CHANS_DEV% -o unit_tests"
- "doit env_capture"

build: false
skip_branch_with_pr: true # only do one run per commit
clone_depth: 5
skip_tags: true

before_test:
- cmd: for /f %%i in ('python -c "import matplotlib; print(matplotlib.matplotlib_fname())"') do set matplotlibrc=%%i
- cmd: 'echo backend : Agg > %matplotlibrc%'

test_script:
- "flake8 --ignore=E,W,F999,F405 holoviews"
- "nosetests --with-doctest --with-coverage --cover-package=holoviews"
- "doit test_all_recommended"
237 changes: 160 additions & 77 deletions .travis.yml
@@ -1,84 +1,167 @@
language: python

# We deliberately don't use travis's language=python option because
# we install miniconda and use conda to get python. Additionally,
# Travis's auto-install of python doesn't work on osx images (see
# https://github.com/travis-ci/travis-ci/issues/4729).
language: generic
sudo: false
os:
- linux

cache:
timeout: 300
directories:
- $HOME/miniconda

python:
- "2.7"
- "3.6"
before_cache:
- rm -rf $HOME/miniconda/pkgs
- rm -rf $HOME/miniconda/conda-bld
- rm -rf $HOME/miniconda/envs/*/conda-bld

notifications:
email:
on_failure: change # [always|never|change] default: always

install:
- SITE_PACKAGES=`pip --version | cut -d ' ' -f 4`
- if [[ "$TRAVIS_PYTHON_VERSION" == "2.7" ]]; then
wget https://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh;
else
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh;
fi
- bash miniconda.sh -b -p $HOME/miniconda
- export PATH="$HOME/miniconda/bin:$PATH"
- hash -r
- conda config --set always_yes yes --set changeps1 no
- conda update -q conda

# Useful for debugging any issues with conda
- conda create -n holoviews -q python=$TRAVIS_PYTHON_VERSION
- travis_wait conda env update -n holoviews -q -f environment.yml
- source activate holoviews
- python setup.py develop
- conda info -a; conda list; conda env export
- if [ "$TRAVIS_PULL_REQUEST" == 'false' ]; then
echo "Attempting to find any associated pull request";
CURRENT_BUILD=$(curl -s -X GET "https://api.travis-ci.org/repos/ioam/holoviews/builds?number=$TRAVIS_BUILD_NUMBER");
NEXT_BUILD=$(curl -s -X GET "https://api.travis-ci.org/repos/ioam/holoviews/builds?number=$((TRAVIS_BUILD_NUMBER + 1))");
MSG1=$(echo $CURRENT_BUILD | jq '.[].message' );
MSG2=$(echo $NEXT_BUILD | jq '.[].message' );
if [ "$MSG1" == "$MSG2" ] ; then
BUILD_ID=$(echo $NEXT_BUILD | jq .[].id);
TRAVIS_PULL_REQUEST=$(curl -s -X GET "https://api.travis-ci.org/repos/ioam/holoviews/builds/$BUILD_ID" | jq .compare_url | cut -d '/' -f7 | cut -d \" -f1);
echo "Associated pull request found - PR $TRAVIS_PULL_REQUEST";
fi
fi
- REF_DATA_BRANCH=${TRAVIS_PULL_REQUEST//false/reference_data}
- git clone https://github.com/ioam/holoviews-data.git -b reference_data ./doc/reference_data
- cd ./doc/reference_data
- echo "Attempting to checkout $REF_DATA_BRANCH branch"
- if [ $(git branch -a --list *origin/$REF_DATA_BRANCH | wc -l) -eq 1 ] ; then
git checkout origin/$REF_DATA_BRANCH;
else
echo "Using the master branch reference data";
fi
- cd ../..

script:
- export MPLBACKEND="Agg"
- export HOLOVIEWSRC=`pwd`'/holoviews.rc'
- echo 'import holoviews as hv;hv.config(style_17=True);hv.config.warn_options_call=True' > holoviews.rc
- flake8 --ignore=E,W,F999,F405 holoviews
- nosetests --with-doctest --with-coverage --cover-package=holoviews
- cd doc/nbpublisher; chmod +x test_notebooks.py; QT_QPA_PLATFORM='offscreen' BOKEH_DEV=True ./test_notebooks.py
- chmod +x concat_html.py; ./concat_html.py ../test_data ../test_html
- cd ../../; mv doc/Tutorials/.coverage ./.coverage.notebooks
- coverage combine --append

after_script:
- shopt -s expand_aliases
- alias decode="tr '[N-ZA-Mn-za-m]' '[A-Za-z]'"
- export AWS_SECRET_ACCESS_KEY=`echo udgGztmYyyKZ5iP2PVe+ROGZo/TI0M2QcoafOJGD | decode`
- export AWS_ACCESS_KEY_ID=`echo NXVNVUCXF3UPHSKNG7ND | decode`
- if [ "$TRAVIS_BRANCH" == 'master' ]; then
cd doc/test_data;
zip -r test_data.zip *;
aws s3 cp --region eu-west-1 ./test_data.zip "s3://preview.holoviews.org/$TRAVIS_BUILD_NUMBER/test_data_py${TRAVIS_PYTHON_VERSION:0:1}.zip";
cd -;
fi
- aws s3 cp --recursive --region eu-west-1 ./doc/test_html "s3://travis.holoviews.org/build_$TRAVIS_BUILD_NUMBER"
- curl -s -X GET "https://kq5y73i0xe.execute-api.eu-west-1.amazonaws.com/dev/travis-holoviews-index"
- echo insecure >> ~/.curlrc
- if [ "$TRAVIS_PULL_REQUEST" != 'false' ]; then
curl -X POST -d "$TRAVIS_BUILD_NUMBER" "https://kq5y73i0xe.execute-api.eu-west-1.amazonaws.com/dev/pr-status";
fi

after_success: coveralls
env:
global:
- PYENV_VERSION=3.6
- PKG_TEST_PYTHON="--test-python=py36 --test-python=py27"
- CHANS_DEV="-c pyviz/label/dev -c conda-forge"
- CHANS="-c pyviz"
- MPLBACKEND="Agg"

stages:
- test
- name: extra_tests
if: type = cron
- name: conda_dev_package
if: tag =~ ^v(\d+|\.)*[a-z]\d*$
- name: pip_dev_package
if: tag =~ ^v(\d+|\.)*[a-z]\d*$
- name: conda_package
if: tag =~ ^v(\d+|\.)*[^a-z]\d*$
- name: pip_package
if: tag =~ ^v(\d+|\.)*[^a-z]\d*$

jobs:
include:
########## Test Stage ##########

- &default
stage: test
env: DESC="Python 3.6 tests" HV_REQUIREMENTS="unit_tests"
before_install:
- pip install pyctdev && doit miniconda_install && pip uninstall -y doit pyctdev
- export PATH="$HOME/miniconda/bin:$PATH" && hash -r
- conda config --set always_yes True
- conda install -c pyviz "pyctdev>=0.5" && doit ecosystem_setup
install:
- doit env_create $CHANS_DEV --python=$PYENV_VERSION
- source activate test-environment
- doit develop_install $CHANS_DEV -o $HV_REQUIREMENTS
- doit env_capture
script:
- doit test_all_recommended
after_success: coveralls
after_failure: sleep 10

- <<: *default
env: DESC="Python 2.7 tests" PYENV_VERSION=2.7 HV_REQUIREMENTS="unit_tests"

- &regression_test
<<: *default
env: DESC="Python 3.6 regression tests" HV_REQUIREMENTS="nbtests"
before_script:
- if [ "$TRAVIS_PULL_REQUEST" == 'false' ]; then
echo "Attempting to find any associated pull request";
CURRENT_BUILD=$(curl -s -X GET "https://api.travis-ci.org/repos/ioam/holoviews/builds?number=$TRAVIS_BUILD_NUMBER");
NEXT_BUILD=$(curl -s -X GET "https://api.travis-ci.org/repos/ioam/holoviews/builds?number=$((TRAVIS_BUILD_NUMBER + 1))");
MSG1=$(echo $CURRENT_BUILD | jq '.[].message' );
MSG2=$(echo $NEXT_BUILD | jq '.[].message' );
if [ "$MSG1" == "$MSG2" ] ; then
BUILD_ID=$(echo $NEXT_BUILD | jq .[].id);
TRAVIS_PULL_REQUEST=$(curl -s -X GET "https://api.travis-ci.org/repos/ioam/holoviews/builds/$BUILD_ID" | jq .compare_url | cut -d '/' -f7 | cut -d \" -f1);
echo "Associated pull request found - PR $TRAVIS_PULL_REQUEST";
fi
fi
- REF_DATA_BRANCH=${TRAVIS_PULL_REQUEST//false/reference_data}
- git clone https://github.com/ioam/holoviews-data.git -b reference_data ./doc/reference_data
- pushd ./doc/reference_data
- echo "Attempting to checkout $REF_DATA_BRANCH branch"
- if [ $(git branch -a --list *origin/$REF_DATA_BRANCH | wc -l) -eq 1 ] ; then
git checkout origin/$REF_DATA_BRANCH;
else
echo "Using the master branch reference data";
fi
- popd
- export HOLOVIEWSRC=`pwd`'/holoviews.rc'
- echo 'import holoviews as hv;hv.config(style_17=True);hv.config.warn_options_call=True' > holoviews.rc
- pushd ./doc/nbpublisher
script:
- QT_QPA_PLATFORM='offscreen' BOKEH_DEV=True python ./test_notebooks.py
after_script:
- popd
- mv doc/Tutorials/.coverage ./.coverage
- python ./doc/nbpublisher/concat_html.py ./doc/test_data ./doc/test_html
- if [ "$TRAVIS_BRANCH" == 'master' ]; then
cd doc/test_data;
zip -r test_data.zip *;
aws s3 cp --region eu-west-1 ./test_data.zip "s3://preview.holoviews.org/$TRAVIS_BUILD_NUMBER/test_data_py${PYENV_VERSION}.zip";
cd -;
fi
- aws s3 cp --recursive --region eu-west-1 ./doc/test_html "s3://travis.holoviews.org/build_$TRAVIS_BUILD_NUMBER"
- curl -s -X GET "https://kq5y73i0xe.execute-api.eu-west-1.amazonaws.com/dev/travis-holoviews-index"
- echo insecure >> ~/.curlrc
- if [ "$TRAVIS_PULL_REQUEST" != 'false' ]; then
curl -X POST -d "$TRAVIS_BUILD_NUMBER" "https://kq5y73i0xe.execute-api.eu-west-1.amazonaws.com/dev/pr-status";
fi

- <<: *regression_test
env: DESC="Python 2.7 regression tests" PYENV_VERSION=2.7 HV_REQUIREMENTS="nbtests"

- &basic_deps
<<: *default
stage: extra_tests
env: DESC="Basic dependencies" HV_REQUIREMENTS="basic_tests"
after_success: echo "Success"

########## END-USER PACKAGES ##########

### CONDA ####

- &conda_pkg
<<: *default
stage: conda_dev_package
env: DESC="" TRAVIS_NOCACHE=$TRAVIS_JOB_ID
install:
- doit package_build $CHANS_DEV --no-pkg-tests
script:
- doit package_upload --token=$CONDA_UPLOAD_TOKEN --label=dev

- <<: *conda_pkg
stage: conda_package
env: DESC="" TRAVIS_NOCACHE=$TRAVIS_JOB_ID
install:
- doit package_build $CHANS_DEV --no-pkg-tests
script:
- doit package_upload --token=$CONDA_UPLOAD_TOKEN --label=dev --label=main

### PyPI ###

- &pip_pkg
<<: *default
stage: pip_dev_package
env: PYPI="https://test.pypi.org/legacy/" TRAVIS_NOCACHE=$TRAVIS_JOB_ID
install:
- doit develop_install $CHANS_DEV -o unit_tests && pip uninstall -y holoviews
- doit pip_on_conda
- doit ecosystem=pip package_build
script: doit ecosystem=pip package_upload -u $TPPU -p $TPPP -r ${PYPI}

- <<: *pip_pkg
stage: pip_package
env: PYPI="https://upload.pypi.org/legacy/" TRAVIS_NOCACHE=$TRAVIS_JOB_ID
install:
- doit develop_install $CHANS_DEV -o unit_tests && pip uninstall -y holoviews
- doit pip_on_conda
- doit ecosystem=pip package_build
script: doit ecosystem=pip package_upload -u $PPU -p $PPP -r ${PYPI}
5 changes: 4 additions & 1 deletion conda.recipe/meta.yaml
Expand Up @@ -27,13 +27,16 @@ requirements:
- numpy
- matplotlib>=2.1
- bokeh >=1.0.0,<1.1.0
- jupyter
- notebook
- ipython >=5.4.0,<=7.1.1 # <=7.1.1 due to tab completion regression

test:
requires:
- nose
imports:
- holoviews
commands:
- nosetests holoviews.tests --with-doctest

about:
home: www.holoviews.org
Expand Down
17 changes: 17 additions & 0 deletions dodo.py
@@ -0,0 +1,17 @@
import os
if "PYCTDEV_ECOSYSTEM" not in os.environ:
os.environ["PYCTDEV_ECOSYSTEM"] = "conda"

from pyctdev import * # noqa: api


def task_pip_on_conda():
"""Experimental: provide pip build env via conda"""
return {'actions':[
# some ecosystem=pip build tools must be installed with conda when using conda...
'conda install -y pip twine wheel',
# ..and some are only available via conda-forge
'conda install -y -c conda-forge tox virtualenv',
# this interferes with pip-installed nose
'conda remove -y --force nose'
]}
2 changes: 1 addition & 1 deletion holoviews/core/data/grid.py
Expand Up @@ -655,7 +655,7 @@ def iloc(cls, dataset, index):

if scalar:
da = dask_array_module()
if new_data and isinstance(new_data[0], da.Array):
if new_data and (da and isinstance(new_data[0], da.Array)):
return new_data[0].compute()[0]
return new_data[0][0]
return tuple(new_data)
Expand Down
5 changes: 4 additions & 1 deletion holoviews/tests/plotting/bokeh/testrenderer.py
Expand Up @@ -81,7 +81,10 @@ def test_get_size_tables_in_layout(self):
def test_render_to_png(self):
curve = Curve([])
renderer = BokehRenderer.instance(fig='png')
png, info = renderer(curve)
try:
png, info = renderer(curve)
except RuntimeError:
raise SkipTest("Test requires selenium")
self.assertIsInstance(png, bytes)
self.assertEqual(info['file-ext'], 'png')

Expand Down

0 comments on commit 680ad16

Please sign in to comment.