From a107eac319dbf80ddf3d7779fab5e7191688a1f8 Mon Sep 17 00:00:00 2001 From: Illviljan <14371165+Illviljan@users.noreply.github.com> Date: Mon, 19 Sep 2022 17:28:51 +0200 Subject: [PATCH] Add ci additional (#143) --- .github/workflows/ci-additional.yaml | 118 +++++++++++++++++++++++++++ ci/environment.yml | 1 + flox/xarray.py | 20 +++++ 3 files changed, 139 insertions(+) create mode 100644 .github/workflows/ci-additional.yaml diff --git a/.github/workflows/ci-additional.yaml b/.github/workflows/ci-additional.yaml new file mode 100644 index 000000000..65b790d96 --- /dev/null +++ b/.github/workflows/ci-additional.yaml @@ -0,0 +1,118 @@ +name: CI Additional +on: + push: + branches: + - "*" + pull_request: + branches: + - "*" + workflow_dispatch: # allows you to trigger manually + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + detect-ci-trigger: + name: detect ci trigger + runs-on: ubuntu-latest + if: | + github.repository == 'xarray-contrib/flox' + && (github.event_name == 'push' || github.event_name == 'pull_request') + outputs: + triggered: ${{ steps.detect-trigger.outputs.trigger-found }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 2 + - uses: xarray-contrib/ci-trigger@v1.1 + id: detect-trigger + with: + keyword: "[skip-ci]" + + doctest: + name: Doctests + runs-on: "ubuntu-latest" + needs: detect-ci-trigger + if: needs.detect-ci-trigger.outputs.triggered == 'false' + defaults: + run: + shell: bash -l {0} + + env: + CONDA_ENV_FILE: ci/environment.yml + PYTHON_VERSION: "3.10" + + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 # Fetch all history for all branches and tags. + + - name: set environment variables + run: | + echo "TODAY=$(date +'%Y-%m-%d')" >> $GITHUB_ENV + + - name: Setup micromamba + uses: mamba-org/provision-with-micromamba@34071ca7df4983ccd272ed0d3625818b27b70dcc + with: + environment-file: ${{env.CONDA_ENV_FILE}} + environment-name: flox-tests + extra-specs: | + python=${{env.PYTHON_VERSION}} + cache-env: true + cache-env-key: "${{runner.os}}-${{runner.arch}}-py${{env.PYTHON_VERSION}}-${{env.TODAY}}-${{hashFiles(env.CONDA_ENV_FILE)}}" + + - name: Install flox + run: | + python -m pip install --no-deps -e . + - name: Version info + run: | + conda info -a + conda list + - name: Run doctests + run: | + python -m pytest --doctest-modules flox --ignore flox/tests + + # mypy: + # name: Mypy + # runs-on: "ubuntu-latest" + # needs: detect-ci-trigger + # if: needs.detect-ci-trigger.outputs.triggered == 'false' + # defaults: + # run: + # shell: bash -l {0} + # env: + # CONDA_ENV_FILE: ci/environment.yml + # PYTHON_VERSION: "3.10" + + # steps: + # - uses: actions/checkout@v3 + # with: + # fetch-depth: 0 # Fetch all history for all branches and tags. + + # - name: set environment variables + # run: | + # echo "TODAY=$(date +'%Y-%m-%d')" >> $GITHUB_ENV + # - name: Setup micromamba + # uses: mamba-org/provision-with-micromamba@34071ca7df4983ccd272ed0d3625818b27b70dcc + # with: + # environment-file: ${{env.CONDA_ENV_FILE}} + # environment-name: xarray-tests + # extra-specs: | + # python=${{env.PYTHON_VERSION}} + # cache-env: true + # cache-env-key: "${{runner.os}}-${{runner.arch}}-py${{env.PYTHON_VERSION}}-${{env.TODAY}}-${{hashFiles(env.CONDA_ENV_FILE)}}" + # - name: Install xarray + # run: | + # python -m pip install --no-deps -e . + # - name: Version info + # run: | + # conda info -a + # conda list + # - name: Install mypy + # run: | + # python -m pip install mypy + + # - name: Run mypy + # run: | + # python -m mypy --install-types --non-interactive diff --git a/ci/environment.yml b/ci/environment.yml index a752bef55..d83bd3b9c 100644 --- a/ci/environment.yml +++ b/ci/environment.yml @@ -9,6 +9,7 @@ dependencies: - netcdf4 - pandas - numpy>=1.20 + - matplotlib - pip - pytest - pytest-cov diff --git a/flox/xarray.py b/flox/xarray.py index 7234f8826..e06723e77 100644 --- a/flox/xarray.py +++ b/flox/xarray.py @@ -161,6 +161,26 @@ def xarray_reduce( DataArray or Dataset Reduced object + Examples + -------- + >>> import xarray as xr + >>> from flox.xarray import xarray_reduce + + >>> # Create a group index: + >>> labels = xr.DataArray( + ... [1, 2, 3, 1, 2, 3, 0, 0, 0], + ... dims="x", + ... name="label", + ... ) + >>> # Create a DataArray to apply the group index on: + >>> da = da = xr.ones_like(labels) + >>> # Sum all values in da that matches the elements in the group index: + >>> xarray_reduce(da, labels, func="sum") + + array([3, 2, 2, 2]) + Coordinates: + * label (label) int64 0 1 2 3 + See Also -------- flox.core.groupby_reduce