diff --git a/.github/workflows/unit.yaml b/.github/workflows/unit.yaml new file mode 100644 index 0000000..680e8c7 --- /dev/null +++ b/.github/workflows/unit.yaml @@ -0,0 +1,28 @@ +name: Build +# To test with act: gh act --secret-file $ENV_FILE --workflows .github/workflows/unit.yml +on: + push: + branches: + - main + pull_request: + +env: + EARTHENGINE_TOKEN: ${{ secrets.EARTHENGINE_TOKEN }} + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python "3.10" + uses: actions/setup-python@v4 + with: + python-version: "3.10" + - name: Install sepal_ui + run: python -m pip install "git+https://github.com/12rambau/sepal_ui.git@sepal_pre_release" + - name: Build with sepal_ui venv + run: module_venv + - name: Install nox + run: python -m pip install nox + - name: set entry point and run tests + run: nox -s test_ui diff --git a/.gitignore b/.gitignore index 57a9bbc..e738b2f 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,8 @@ __pycache__/ *Untitled* # C extensions *.so - +*nox_ui.ipynb +*Untitled* # Distribution / packaging .Python build/ diff --git a/noxfile.py b/noxfile.py new file mode 100644 index 0000000..08bf258 --- /dev/null +++ b/noxfile.py @@ -0,0 +1,77 @@ +"""All the process that can be run using nox. + +The nox run are build in isolated environment that will be stored in .nox. to force the venv update, remove the .nox/xxx folder. +""" + +from pathlib import Path +import nbformat +from nbconvert.preprocessors import ExecutePreprocessor +from jupyter_client.kernelspec import KernelSpecManager +import nox + + +@nox.session(reuse_venv=True) +def lint(session): + """Apply the pre-commits.""" + session.install("pre-commit") + session.run("pre-commit", "run", "--a", *session.posargs) + + +@nox.session(reuse_venv=True) +def app(session): + """Run the application.""" + + entry_point = str(Path("ui.ipynb")) + + # Duplicate the entry point file + session.run("cp", entry_point, "nox_ui.ipynb") + + # change the kernel name in the entry point + session.run("entry_point", "--test", "nox_ui.ipynb") + + session.run("jupyter", "trust", entry_point) + session.run( + "voila", "--show_tracebacks=True", "--template=sepal-ui-base", "nox_ui.ipynb" + ) + + +@nox.session() +def test_ui(session): + """Run the application.""" + + ksm = KernelSpecManager() + kernel_names = list(ksm.get_all_specs()) + print(kernel_names) + + # get the current path + root_folder = Path(__file__).parent + repo_name = root_folder.name + + # Copy the ui.ipynb to test_ui.ipynb + session.run("cp", root_folder / "ui.ipynb", root_folder / "nox_ui.ipynb") + + session.run("entry_point", "--test", root_folder / "nox_ui.ipynb") + + test_notebooks = [root_folder / "nox_ui.ipynb"] + + for notebook in test_notebooks: + with open(notebook) as ff: + nb_in = nbformat.read(ff, nbformat.NO_CONVERT) + + print("Running notebook", notebook) + + try: + ep = ExecutePreprocessor(timeout=600, kernel_name=f"test-{repo_name}") + + nb_out = ep.preprocess(nb_in) + except Exception as e: + print("########### Error running notebook", notebook) + raise e + + +@nox.session(reuse_venv=True) +def jupyter(session): + """Run the application.""" + session.install("-r", "requirements.txt") + session.run("jupyter", "trust", "no_ui.ipynb") + session.run("jupyter", "notebook", "no_ui.ipynb") diff --git a/requirements.txt b/requirements.txt index 1579176..ca7e9f2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,4 +12,7 @@ shapely # by setting numpy as requirement, it will be installed before gdal, avoiding # the gdal_array import error. check #42 and https://github.com/OSGeo/gdal/pull/2281 -GDAL[numpy]==3.8.3 \ No newline at end of file +GDAL[numpy]==3.8.3 + + +# trigger build diff --git a/ui.ipynb b/ui.ipynb index e5d2ec7..ab01320 100644 --- a/ui.ipynb +++ b/ui.ipynb @@ -1,5 +1,15 @@ { "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sepal_ui.scripts.utils import init_ee\n", + "init_ee()" + ] + }, { "cell_type": "code", "execution_count": null, @@ -96,7 +106,8 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" - } + }, + "title": "SMFM Biota module" }, "nbformat": 4, "nbformat_minor": 4