From 330ec3700bd03c248e88acb556f228f8a6a0b5c4 Mon Sep 17 00:00:00 2001 From: Gabriel Stefanini Vicente Date: Mon, 26 Feb 2024 11:48:29 -0500 Subject: [PATCH] Setup GitHub actions (#12) * Update pyproject.toml * Add dependabot * Add GitHub Actions --- .github/dependabot.yml | 6 +++ .github/workflows/gh-pages.yml | 29 +++++++++++++ .github/workflows/release.yml | 52 +++++++++++++++++++++++ README.md | 4 +- docs/conf.py | 78 ++++++++++++++++++++++++++++++++++ pyproject.toml | 6 ++- 6 files changed, 172 insertions(+), 3 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/gh-pages.yml create mode 100644 .github/workflows/release.yml create mode 100644 docs/conf.py diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..55dbe85 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "pip" + directory: "/" + schedule: + interval: "monthly" diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml new file mode 100644 index 0000000..8246c69 --- /dev/null +++ b/.github/workflows/gh-pages.yml @@ -0,0 +1,29 @@ +name: docs +on: + push: + branches: + - main + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + cache: "pip" + - name: Dependencies + run: | + if [ -f pyproject.toml ]; then pip install ".[docs]"; fi + - name: Build Sphinx Documentation + run: | + sphinx-build docs _build/html -b html + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + if: job.status == 'success' + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./_build/html + enable_jekyll: false diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..04eae75 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,52 @@ +name: Publish Python 🐍 distribution 📦 to PyPI + +on: + release: + types: [published] + +jobs: + build: + name: Build distribution 📦 + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.x" + - name: Install pypa/build + run: >- + python3 -m + pip install + build + --user + - name: Build a binary wheel and a source tarball + run: python3 -m build + - name: Store the distribution packages + uses: actions/upload-artifact@v3 + with: + name: python-package-distributions + path: dist/ + + publish-to-pypi: + name: >- + Publish Python 🐍 distribution 📦 to PyPI + if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes + needs: + - build + runs-on: ubuntu-latest + environment: + name: pypi + url: https://pypi.org/p/blackmarblepy + permissions: + id-token: write # IMPORTANT: mandatory for trusted publishing + + steps: + - name: Download all the dists + uses: actions/download-artifact@v3 + with: + name: python-package-distributions + path: dist/ + - name: Publish distribution 📦 to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 diff --git a/README.md b/README.md index ea3c7b9..9c929b6 100644 --- a/README.md +++ b/README.md @@ -4,11 +4,11 @@ Urbanization is a foundational aspect of understanding the human condition, and has been a focus of economic, social, and development study for many years. This code repository is meant to centralize many of the urban analytics performed by the World Bank's Global Operational Support Team (GOST) in support of World Bank Group operations. There are numerous code examples in the [notebooks](https://github.com/worldbank/GOST_Urban/tree/main/notebooks) folder including both tutorials and records of project implementations. -This repo includes a [Documentation](https://worldbank.github.io/GOST_Urban/intro.html) and a [Wiki](https://github.com/worldbank/GOST_Urban/wiki) for the documentation. +This repo includes a [GitHub Pages](https://worldbank.github.io/GOST_Urban/intro.html) and a [Wiki](https://github.com/worldbank/GOST_Urban/wiki) for the documentation. ## Installation -**GOSTurbna** is available on [PyPI](https://pypi.org) and can installed using `pip`: +**GOSTurban** is available on [PyPI](https://pypi.org) and can installed using `pip`: ### From PyPI diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000..43a5651 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,78 @@ +############################################################################### +# Auto-generated by `jupyter-book config` +# If you wish to continue using _config.yml, make edits to that file and +# re-generate this one. +############################################################################### +apidoc_module_dir = "../src" +author = "Benjamin P. Stewart" +bibtex_bibfiles = ["references.bib"] +comments_config = {"hypothesis": False, "utterances": False} +copyright = "2024" +exclude_patterns = ["**.ipynb_checkpoints", ".DS_Store", "Thumbs.db", "_build"] +extensions = [ + "sphinx_togglebutton", + "sphinx_copybutton", + "myst_nb", + "jupyter_book", + "sphinx_thebe", + "sphinx_comments", + "sphinx_external_toc", + "sphinx.ext.intersphinx", + "sphinx_design", + "sphinx_book_theme", + "sphinxcontrib.bibtex", + "sphinx_jupyterbook_latex", + "sphinx.ext.napoleon", + "sphinxcontrib.apidoc", +] +external_toc_exclude_missing = True +external_toc_path = "_toc.yml" +extra_extensions = ["sphinxcontrib.apidoc"] +html_baseurl = "https://worldbank.github.io/GOSTurban" +html_favicon = "images/favicon.ico" +html_last_updated_fmt = "%b %d, %Y" +html_logo = "images/logo.png" +html_show_copyright = False +html_sourcelink_suffix = "" +html_theme = "sphinx_book_theme" +html_theme_options = { + "search_bar_text": "Search this book...", + "launch_buttons": { + "notebook_interface": "classic", + "binderhub_url": "", + "jupyterhub_url": "", + "thebe": False, + "colab_url": "", + }, + "path_to_docs": "", + "repository_url": "https://github.com/worldbank/GOSTurban", + "repository_branch": "main", + "extra_footer": "", + "home_page_in_toc": True, + "announcement": "", + "use_repository_button": True, + "use_edit_page_button": True, + "use_issues_button": True, +} +html_title = "" +latex_engine = "pdflatex" +myst_enable_extensions = [ + "colon_fence", + "dollarmath", + "linkify", + "substitution", + "tasklist", +] +myst_url_schemes = ["mailto", "http", "https"] +nb_execution_allow_errors = False +nb_execution_cache_path = "" +nb_execution_excludepatterns = [] +nb_execution_in_temp = False +nb_execution_mode = "off" +nb_execution_timeout = 30 +nb_output_stderr = "show" +numfig = True +pygments_style = "sphinx" +suppress_warnings = ["myst.domains"] +use_jupyterbook_latex = True +use_multitoc_numbering = True diff --git a/pyproject.toml b/pyproject.toml index 5e4207b..82beae1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,7 +35,11 @@ dependencies = [ [project.optional-dependencies] dev = ["pytest", "pytest-cov"] -docs = ["docutils==0.17.1", "jupyter-book>=1,<2"] +docs = [ + "docutils==0.17.1", + "jupyter-book>=1,<2", + "sphinxcontrib-apidoc>=0.4.0,<1", +] [project.urls] "Homepage" = "https://github.com/worldbank/GOSTurban"