diff --git a/.github/workflows/check_github_pages_docs_for_feature_branch.yaml b/.github/workflows/check_documentation_build.yaml similarity index 60% rename from .github/workflows/check_github_pages_docs_for_feature_branch.yaml rename to .github/workflows/check_documentation_build.yaml index 1c438f31..5133e132 100644 --- a/.github/workflows/check_github_pages_docs_for_feature_branch.yaml +++ b/.github/workflows/check_documentation_build.yaml @@ -1,10 +1,12 @@ -name: Check documentation build and deployment for feature branch +name: Check the documentation build, publish if on main on: push: + # Only trigger if branches get pushed (ignored pushed a tag) + tags-ignore: + - '**' branches-ignore: - - main - - github-pages/* + - github-pages/* jobs: create_github_pages_docs: @@ -27,12 +29,12 @@ jobs: poetry-version: 1.1.11 - name: Poetry install run: poetry install - - name: Test documentation deployment for current feature branch + - name: Deploy documentation to github-pages branch run: | git config --local user.email "opensource@exasol.com" git config --local user.name "GitHub Action" git fetch - SOURCE_BRANCH="$(git rev-parse --abbrev-ref HEAD)" - TARGET_BRANCH="$(doc/get_target_branch_name.sh "$SOURCE_BRANCH")" - poetry run poe push-html-doc-to-github-pages-current || echo - git push origin --delete "$TARGET_BRANCH" + poetry run python -m nox -s push-pages-current + - name: Cleanup delete target branch + if: ${{ !contains(github.ref, 'main') }} + run: git push -d origin "github-pages/"$(git branch --show-current)"" diff --git a/.github/workflows/deploy_github_pages_docs_for_main.yaml b/.github/workflows/create_release_docu.yaml similarity index 61% rename from .github/workflows/deploy_github_pages_docs_for_main.yaml rename to .github/workflows/create_release_docu.yaml index 1b56d258..65f50729 100644 --- a/.github/workflows/deploy_github_pages_docs_for_main.yaml +++ b/.github/workflows/create_release_docu.yaml @@ -1,33 +1,34 @@ -name: Build and push documentation for main branch +name: Generate release documentation on: - push: - branches: - - main + release: + types: [published] jobs: - create_github_pages_docs: + + publish-release-documentation: strategy: fail-fast: false - matrix: - python-version: [3.8] runs-on: ubuntu-latest + environment: publish + steps: - name: Checkout uses: actions/checkout@v2 - name: Install python uses: actions/setup-python@v2 with: - python-version: ${{ matrix.python-version }} + python-version: 3.8 - name: Install poetry uses: abatilo/actions-poetry@v2.1.4 with: poetry-version: 1.1.11 - name: Poetry install run: poetry install - - name: Deploy documentation to github-pages-main branch + - name: Deploy release documentation to github-pages branch run: | git config --local user.email "opensource@exasol.com" git config --local user.name "GitHub Action" git fetch - poetry run poe push-html-doc-to-github-pages-main + poetry run python -m nox -s push-pages-release + diff --git a/.gitignore b/.gitignore index d5fffc9e..d3b38246 100644 --- a/.gitignore +++ b/.gitignore @@ -136,6 +136,7 @@ poetry.lock # Sphinx doc/_build +doc/.build-docu doc/api # Language container diff --git a/README.rst b/README.rst index 2f9bfe0f..95dc82ef 100644 --- a/README.rst +++ b/README.rst @@ -31,7 +31,8 @@ Or install the wheel directly via:: Documentation ------------- -`Documentation for the latest release `_ is hosted on the Github Pages of this project. +`Documentation for the current main branch `_ is hosted on the Github Pages of this project. +`Here `_ is a list of documentations for previous releases. Features ======== diff --git a/doc/Makefile b/doc/Makefile deleted file mode 100644 index 2fc37c4c..00000000 --- a/doc/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line, and also -# from the environment for the first two. -SPHINXOPTS ?= -SPHINXBUILD ?= sphinx-build -SPHINXAPIDOC ?= sphinx-apidoc -SOURCEDIR = . -BUILDDIR = _build -MODULES_PATH = ../exasol_bucketfs_utils_python -APIDOC_OUTPUT = api - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -api-doc: - @$(SPHINXAPIDOC) -T -d 1 --separate -o "$(APIDOC_OUTPUT)" "$(MODULES_PATH)" - -clean-build: - [ ! -e "$(BUILDDIR)" ] || rm -r "$(BUILDDIR)" - [ ! -e "$(APIDOC_OUTPUT)" ] || rm -r "$(APIDOC_OUTPUT)" - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile api-doc - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/doc/changes/changes_0.3.0.md b/doc/changes/changes_0.3.0.md index 80e6b506..5f3b5d51 100644 --- a/doc/changes/changes_0.3.0.md +++ b/doc/changes/changes_0.3.0.md @@ -15,6 +15,7 @@ ## Refactoring - #53: Upgraded Python version to >=3.8, removed numpy from source again + - #38: Replaced old bash scripts for building documentation with Sphinx_Github-Pages-generator, migrated to Nox ## Security diff --git a/doc/conf.py b/doc/conf.py index 55c2a7d7..4bc5954a 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -10,9 +10,10 @@ # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # -# import os -# import sys +import os +import sys # sys.path.insert(0, os.path.abspath('.')) +sys.path.insert(0, os.path.abspath('../')) # -- Project information ----------------------------------------------------- @@ -52,7 +53,7 @@ # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store', '.build-docu'] # -- Options for HTML output ------------------------------------------------- @@ -60,7 +61,7 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -html_theme = 'alabaster' +html_theme = 'furo' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, diff --git a/doc/deploy-to-github-pages-current.sh b/doc/deploy-to-github-pages-current.sh deleted file mode 100755 index 605df1b2..00000000 --- a/doc/deploy-to-github-pages-current.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -set -euo pipefail - -PUSH_ENABLED="$1" - -SCRIPT_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" - -SCRIPT_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" -SOURCE_BRANCH="$(git rev-parse --abbrev-ref HEAD)" -if [ "$SOURCE_BRANCH" != "main" ]; then - if [ -n "$SOURCE_BRANCH" ]; then - TARGET_BRANCH="$("$SCRIPT_DIR/get_target_branch_name.sh" "$SOURCE_BRANCH")" - bash "$SCRIPT_DIR/deploy-to-github-pages.sh" "$TARGET_BRANCH" origin "$PUSH_ENABLED" "$SOURCE_BRANCH" - else - echo "ERROR: Could not acquire your current checked out branch. Please check the state of your " - fi -else - echo "ERROR: Source branch is 'main'." -fi diff --git a/doc/deploy-to-github-pages-main.sh b/doc/deploy-to-github-pages-main.sh deleted file mode 100755 index 347a3fc6..00000000 --- a/doc/deploy-to-github-pages-main.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -PUSH_ENABLED="$1" - -set -euo pipefail - -SCRIPT_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" -SOURCE_BRANCH="$(git rev-parse --abbrev-ref HEAD)" -if [ "$SOURCE_BRANCH" == "main" ]; then - TARGET_BRANCH="$("$SCRIPT_DIR/get_target_branch_name.sh" "main")" - bash "$SCRIPT_DIR/deploy-to-github-pages.sh" "$TARGET_BRANCH" origin "$PUSH_ENABLED" "$SOURCE_BRANCH" -else - echo "Abort. Source branch is not 'main', you are at branch '$SOURCE_BRANCH'" -fi diff --git a/doc/deploy-to-github-pages.sh b/doc/deploy-to-github-pages.sh deleted file mode 100755 index df9ed81f..00000000 --- a/doc/deploy-to-github-pages.sh +++ /dev/null @@ -1,144 +0,0 @@ -#!/bin/bash -set -x - -PUSH_ORIGIN="$2" -PUSH_ENABLED="$3" -SOURCE_BRANCH="$4" - -set -euo pipefail - -detect_or_verify_source_branch() { - CURRENT_BRANCH="$(git rev-parse --abbrev-ref HEAD)" - if [ -z "$SOURCE_BRANCH" ]; then - if [ -z "$CURRENT_BRANCH" ]; then - echo "Abort. Could not detect current branch and no source branch given." - exit 1 - fi - SOURCE_BRANCH="$CURRENT_BRANCH" - fi - if [ "$SOURCE_BRANCH" != "$CURRENT_BRANCH" ]; then - echo "Abort. Specified Source Branch doesn't correspond to the currently checked out branch $CURRENT_BRANCH." - exit 1 - fi - echo "Detected current branch $CURRENT_BRANCH" -} - -cleanup_trap() { - if [ -e "$WORKTREE" ]; then - echo "Cleanup git worktree $WORKTREE" - git worktree remove --force "$WORKTREE" || echo "Removing worktree $WORKTREE failed" - fi - echo "Cleanup temporary directory $TMP" - rm -rf "$TMP" -} - -checkout_target_branch_as_worktree() { - TARGET_BRANCH_EXISTS="$(git show-branch "remotes/origin/$TARGET_BRANCH" || echo)" - if [ -n "$TARGET_BRANCH_EXISTS" ]; then - echo "Create worktree from existing branch $TARGET_BRANCH" - git worktree add "$WORKTREE" "$TARGET_BRANCH" - else - echo "Create worktree from new branch $TARGET_BRANCH" - # We need to create the worktree directly with the TARGET_BRANCH, - # because every other branch could be already checked out - git branch "$TARGET_BRANCH" - git worktree add "$WORKTREE" "$TARGET_BRANCH" - pushd "$WORKTREE" - # We need to set the TARGET_BRANCH to the default branch - # The default branch from github for pages is gh-pages, but you can change that. - # Not using the default branch actually has benefits, because the branch gh-pages enforces some things. - # We use github-pages/main with separate history for Github Pages, - # because automated commits to the main branch can cause problems and - # we don't want to mix the generated documentation with sources. - # Furthermore, Github Pages expects a certain directory structure in the repository - # which we only can provide with a separate history. - GH_PAGES_ROOT_BRANCH=github-pages/root # is needed to temporarly create a new root commit - GH_PAGES_MAIN_BRANCH=github-pages/main - GH_PAGES_MAIN_BRANCH_EXISTS="$(git show-ref "refs/heads/$PUSH_ORIGIN/$GH_PAGES_MAIN_BRANCH" || echo)" - if [ -n "$GH_PAGES_MAIN_BRANCH_EXISTS" ] - then - git reset --hard "$PUSH_ORIGIN/$GH_PAGES_MAIN_BRANCH" - else - echo "Creating a new empty root commit for the Github Pages in root branch $GH_PAGES_ROOT_BRANCH." - git checkout --orphan "$GH_PAGES_ROOT_BRANCH" - git reset --hard - git commit --no-verify --allow-empty -m 'Initial empty commit for Github Pages' - echo "Reset target branch $TARGET_BRANCH to root branch $GH_PAGES_ROOT_BRANCH" - git checkout "$TARGET_BRANCH" - git reset --hard "$GH_PAGES_ROOT_BRANCH" - echo "Delete root branch $GH_PAGES_ROOT_BRANCH" - git branch -D "$GH_PAGES_ROOT_BRANCH" - fi - popd - fi -} - -build_and_copy_documentation() { - echo "Build api-doc" - sphinx-apidoc -T -d 1 --separate -o "$SCRIPT_DIR/api" "$SCRIPT_DIR/../exasol_bucketfs_utils_python" - - echo "Build with sphinx" - sphinx-build -M html "$SCRIPT_DIR" "$BUILD_DIR" -W - - echo "Generated HTML Output" - HTML_OUTPUT_DIR="$BUILD_DIR/html/" - echo "Using HTML_OUTPUT_DIR=$HTML_OUTPUT_DIR" - ls -la "$HTML_OUTPUT_DIR" - - OUTPUT_DIR="${WORKTREE:?}/${SOURCE_BRANCH:?}" - echo "Using OUTPUT_DIR=$OUTPUT_DIR" - if [ -e "${OUTPUT_DIR}" ]; then - echo "Removing existing output directory $OUTPUT_DIR" - rm -rf "${OUTPUT_DIR}" - fi - echo "Creating output directory $OUTPUT_DIR" - mkdir -p "$OUTPUT_DIR" - echo "Copying HTML output $HTML_OUTPUT_DIR to the output directory $OUTPUT_DIR" - find "$HTML_OUTPUT_DIR" -mindepth 1 -maxdepth 1 -exec mv -t "$OUTPUT_DIR" -- {} + - echo "Content of output directory $OUTPUT_DIR" - touch "$WORKTREE/.nojekyll" - ls -la "$OUTPUT_DIR" -} - -git_commit_and_push() { - pushd "$WORKTREE" - echo "Current directory before commit and push $PWD" - echo "Git commit" - echo "BRANCH=$SOURCE_BRANCH" >.source - echo "COMMIT_ID=$CURRENT_COMMIT_ID" >>.source - git add . - git diff-index --quiet HEAD || git commit --no-verify -m "Update documentation from source branch '$SOURCE_BRANCH' with commit id '$CURRENT_COMMIT_ID'" - if [ -n "$PUSH_ORIGIN" ] && [ "$PUSH_ENABLED" == "push" ]; then - echo "Git push $PUSH_ORIGIN $TARGET_BRANCH" - git push "$PUSH_ORIGIN" "$TARGET_BRANCH" - fi - popd -} - -SCRIPT_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" - -TMP="$(mktemp -d)" -WORKTREE="$TMP/worktree" -BUILD_DIR="$TMP/build" -trap 'cleanup_trap' EXIT - -TARGET_BRANCH="$1" -CURRENT_COMMIT_ID="$(git rev-parse HEAD)" - -echo "Commandline parameter" -echo "TARGET_BRANCH=$TARGET_BRANCH" -echo "PUSH_ORIGIN=$PUSH_ORIGIN" -echo "PUSH_ENABLED=$PUSH_ENABLED" -echo "SOURCE_BRANCH=$SOURCE_BRANCH" -echo -echo "Using following Directories:" -echo "TMP=$TMP" -echo "TMP=$TMP" -echo "WORKTREE=$WORKTREE" -echo "BUILD_DIR=$BUILD_DIR" -echo "CURRENT_COMMIT_ID=$CURRENT_COMMIT_ID" -echo -detect_or_verify_source_branch -checkout_target_branch_as_worktree -build_and_copy_documentation -git_commit_and_push diff --git a/doc/developer_guide/building_documentation.rst b/doc/developer_guide/building_documentation.rst index 564a305b..d923644d 100644 --- a/doc/developer_guide/building_documentation.rst +++ b/doc/developer_guide/building_documentation.rst @@ -2,26 +2,28 @@ Building the Documentation ************************** -We are using Sphinx for generating the documentation of this project, -because it is the default documentation tool for Python projects. -Sphinx supports API documentation generation for Python and with plugins also for other languages. -Furthermore, it supports reStructuredText with proper cross-document references. -We using the MyST-Parser to also integrate markdown files into the documentation. +We are using the `Sphinx-GitHub_Pages_Generator `_ +for generating the documentation of this project. It uses Sphinx and Git to make automation of building and providing +the documentation easier. Sphinx is the default documentation tool for Python projects, +and supports reStructuredText with proper cross-document references. + + ###################################################### -Building the Documentation interactivily during coding +Building the Documentation interactively during coding ###################################################### -We defined several commands in the project.toml in poethepoet +We defined several nox commands in the noxfile.py which allow you to build and view the documentation during coding:: - poetry run poe build-html-doc # Builds the documentation - poetry run poe open-html-doc # Opens the currently build documentation in the browser - poetry run poe build-and-open-html-doc # Builds and opens the documentation +.. code:: bash -All three build commands use the generated documentation located in /doc/_build/ -which is excluded in gitignore. If you want to build the documentation for other formats than HTML, -you find a Makefile in /doc which allows you to run the sphinx build with other goals. + nox -s build-html-doc # Builds the documentation + nox -s open-html-doc # Opens the currently build documentation in the browser + nox -s build-and-open-html-doc # Builds and opens the documentation + +All three build commands generate the documentation into /doc/.build-docu +which is excluded in gitignore. #################################### Building the Documentation in the CI @@ -31,30 +33,28 @@ Building the documentation in the CI is a bit different to the steps you can use because it also contains the preparations for publishing. At the moment, we publish the documentation on Github Pages. -To publish it there, we need to build the HTML from the documentation source and commit it. -However, Github Pages expects a specific directory structure to find the HTML. -Our usual directory structure doesn't fit these requirements, so we decided to create -a new Git root commit and initially set github-pages/main branch to this commit. -We then add new commits to this branch to update existing or add new versions of the documentation. +To publish it there, we need to build the HTML from the documentation source and commit it, as well as make sure we +adhere to the file structure expected by GitHub Pages.This is done using the +`Sphinx-GitHub_Pages_Generator `_ This has the additional benefit, that we don't have automatic commits to the source branch. -For each branch or tag for which we build the documentation in the CI -we add a directory to the root directory of the github-pages/main branch. +For each branch or tag for which we build the documentation in the CI, a directory is added to the root +directory of the github-pages/main branch. With each merge into the main branch the CI updates the documentation for the main branch in github-pages/main. -For feature branches the CI checks this deployment process by creating a branch github-pages/. -but it removes the branch directly after pushing it. However, you can run this also locally for testing purposes or -checking the branch with Github Pages in a fork of the main repostory. -The scripts which are responsible for the deployment are:: - - deploy-to-github-pages-current # creates or updates github-pages/ - deploy-to-github-pages-main.sh # only applicable for the main branch and creates or updates github-pages/main +For feature branches the CI checks this deployment process by creating a branch github-pages/, +but it removes the branch directly after pushing it. +On tag creation, the documentation is also build, and saved in the "tag-name" directory. This is helpfully for releases. +You can run these tasks manually for testing purposes or +checking the branch with Github Pages in a fork of the main repository. +For this purpose, we also provide a few shortcuts defined in our noxfile.py:: -We also provide a few shortcuts defined in our project.toml for poethepoet:: +.. code:: bash - poetry run poe commit-html-doc-to-github-pages-main # creates or updates github-pages/main locally - poetry run poe push-html-doc-to-github-pages-main # creates or updates github-pages/main and pushes it to origin - poetry run poe commit-html-doc-to-github-pages-current # creates or updates github-pages/ locally - poetry run poe push-html-doc-to-github-pages-current # creates or updates github-pages/ and pushes it to origin + nox -s commit-pages-main # creates or updates github-pages/main locally + nox -s push-pages-main # creates or updates github-pages/main and pushes it to origin + nox -s commit-pages-current # creates or updates github-pages/ locally + nox -s push-pages-current # creates or updates github-pages/ and pushes it to origin + nox -s push-pages-release # creates or updates github-pages/ and pushes it to origin diff --git a/doc/get_target_branch_name.sh b/doc/get_target_branch_name.sh deleted file mode 100755 index eff883c2..00000000 --- a/doc/get_target_branch_name.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -set -euo pipefail - -BRANCH=$1 -echo "github-pages/$BRANCH" \ No newline at end of file diff --git a/noxfile.py b/noxfile.py new file mode 100644 index 00000000..de1469d4 --- /dev/null +++ b/noxfile.py @@ -0,0 +1,129 @@ +import webbrowser +from pathlib import Path + +import nox + +ROOT = Path(__file__).parent +LOCAL_DOC = ROOT / "doc" + +nox.options.sessions = [] + + +def _build_html_doc(session: nox.Session): + session.run("sphinx-apidoc", "-T", "-e", "-o", "api", "../exasol_bucketfs_utils_python") + session.run("sphinx-build", "-b", "html", "-W", ".", ".build-docu") + + +def _open_docs_in_browser(session: nox.Session): + index_file_path = Path(".build-docu/index.html").resolve() + webbrowser.open_new_tab(index_file_path.as_uri()) + + +@nox.session(name="build-html-doc", python=False) +def build_html_doc(session: nox.Session): + """Build the documentation for current checkout""" + with session.chdir(LOCAL_DOC): + _build_html_doc(session) + + +@nox.session(name="open-html-doc", python=False) +def open_html_doc(session: nox.Session): + """Open the documentation for current checkout in the browser""" + with session.chdir(LOCAL_DOC): + _open_docs_in_browser(session) + + +@nox.session(name="build-and-open-html-doc", python=False) +def build_and_open_html_doc(session: nox.Session): + """Build and open the documentation for current checkout in browser""" + with session.chdir(LOCAL_DOC): + _build_html_doc(session) + _open_docs_in_browser(session) + + +@nox.session(name="commit-pages-main", python=False) +def commit_pages_main(session: nox.Session): + """ + Generate the GitHub pages documentation for the main branch and + commit it to the branch github-pages/main + """ + with session.chdir(ROOT): + session.run("sgpg", + "--target_branch", "github-pages/main", + "--push_origin", "origin", + "--push_enabled", "commit", + "--source_branch", "main", + "--module_path", "${StringArray[@]}", + env={"StringArray": ("../exasol-bucketfs-utils-python")}) + + +@nox.session(name="commit-pages-current", python=False) +def commit_pages_current(session: nox.Session): + """ + Generate the GitHub pages documentation for the current branch and + commit it to the branch github-pages/ + """ + branch = session.run("git", "branch", "--show-current", silent=True) + with session.chdir(ROOT): + session.run("sgpg", + "--target_branch", "github-pages/" + branch[:-1], + "--push_origin", "origin", + "--push_enabled", "commit", + "--module_path", "${StringArray[@]}", + env={"StringArray": ("../exasol-bucketfs-utils-python")}) + + +@nox.session(name="push-pages-main", python=False) +def push_pages_main(session: nox.Session): + """ + Generate the GitHub pages documentation for the main branch and + pushes it to the remote branch github-pages/main + """ + with session.chdir(ROOT): + session.run("sgpg", + "--target_branch", "github-pages/main", + "--push_origin", "origin", + "--push_enabled", "push", + "--source_branch", "main", + "--module_path", "${StringArray[@]}", + env={"StringArray": ("../exasol-bucketfs-utils-python")}) + + +@nox.session(name="push-pages-current", python=False) +def push_pages_current(session: nox.Session): + """ + Generate the GitHub pages documentation for the current branch and + pushes it to the remote branch github-pages/ + """ + branch = session.run("git", "branch", "--show-current", silent=True) + with session.chdir(ROOT): + session.run("sgpg", + "--target_branch", "github-pages/" + branch[:-1], + "--push_origin", "origin", + "--push_enabled", "push", + "--module_path", "${StringArray[@]}", + env={"StringArray": ("../exasol-bucketfs-utils-python")}) + + +@nox.session(name="push-pages-release", python=False) +def push_pages_release(session: nox.Session): + """Generate the GitHub pages documentation for the release and pushes it to the remote branch github-pages/main""" + tags = session.run("git", "tag", "--sort=committerdate", silent=True) + # get the latest tag. last element in list is empty string, so choose second to last + tag = tags.split("\n")[-2] + with session.chdir(ROOT): + session.run("sgpg", + "--target_branch", "github-pages/main", + "--push_origin", "origin", + "--push_enabled", "push", + "--source_branch", tag, + "--source_origin", "tags", + "--module_path", "${StringArray[@]}", + env={"StringArray": ("../exasol-bucketfs-utils-python")}) + + +@nox.session(name="run-tests", python=False) +def run_tests(session: nox.Session): + """Run the tests in the poetry environment""" + with session.chdir(ROOT): + session.run("pytest", "tests") diff --git a/poetry.lock b/poetry.lock index c5fc2649..9e91a5e3 100644 --- a/poetry.lock +++ b/poetry.lock @@ -6,6 +6,17 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "argcomplete" +version = "1.12.3" +description = "Bash tab completion for argparse" +category = "dev" +optional = false +python-versions = "*" + +[package.extras] +test = ["coverage", "flake8", "pexpect", "wheel"] + [[package]] name = "atomicwrites" version = "1.4.0" @@ -30,7 +41,7 @@ tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (> [[package]] name = "babel" -version = "2.10.1" +version = "2.10.3" description = "Internationalization utilities" category = "dev" optional = false @@ -39,13 +50,28 @@ python-versions = ">=3.6" [package.dependencies] pytz = ">=2015.7" +[[package]] +name = "beautifulsoup4" +version = "4.11.1" +description = "Screen-scraping library" +category = "dev" +optional = false +python-versions = ">=3.6.0" + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +html5lib = ["html5lib"] +lxml = ["lxml"] + [[package]] name = "certifi" -version = "2021.10.8" +version = "2022.6.15" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" [[package]] name = "cffi" @@ -71,22 +97,36 @@ unicode_backport = ["unicodedata2"] [[package]] name = "colorama" -version = "0.4.4" +version = "0.4.5" description = "Cross-platform colored terminal text." category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "colorlog" +version = "6.6.0" +description = "Add colours to the output of Python's logging module." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +colorama = {version = "*", markers = "sys_platform == \"win32\""} + +[package.extras] +development = ["black", "flake8", "mypy", "pytest", "types-colorama"] + [[package]] name = "coverage" -version = "6.3.2" +version = "6.4.1" description = "Code coverage measurement for Python" category = "dev" optional = false python-versions = ">=3.7" [package.dependencies] -tomli = {version = "*", optional = true, markers = "extra == \"toml\""} +tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} [package.extras] toml = ["tomli"] @@ -112,15 +152,23 @@ test = ["pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", [[package]] name = "dill" -version = "0.3.4" +version = "0.3.5.1" description = "serialize all of python" category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*" +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" [package.extras] graph = ["objgraph (>=1.7.2)"] +[[package]] +name = "distlib" +version = "0.3.4" +description = "Distribution utilities" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "docutils" version = "0.17.1" @@ -129,6 +177,29 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "exasol-sphinx-github-pages-generator" +version = "0.1.0" +description = "Generates Sphinx GitHub pages for a given Git Repository" +category = "dev" +optional = false +python-versions = ">=3.8,<4.0" +develop = false + +[package.dependencies] +furo = "^2022.02.14.1" +importlib_resources = "^1.3" +Jinja2 = "^3.0.3" +myst-parser = "^0.17.0" +poethepoet = "^0.13.0" +Sphinx = "^4.5" + +[package.source] +type = "git" +url = "https://github.com/exasol/sphinx-github-pages-generator.git" +reference = "0.1.0" +resolved_reference = "463e4a8e47f084d383939e6825e7476369d96c53" + [[package]] name = "exasol-udf-mock-python" version = "0.1.0" @@ -147,7 +218,33 @@ pandas = "^1.4" type = "git" url = "https://github.com/exasol/udf-mock-python.git" reference = "master" -resolved_reference = "903595f1bc8ef31813fc397742cede8c63563e47" +resolved_reference = "cc05efc1ce0f3e7a300f5d410d948024b1c70dac" + +[[package]] +name = "filelock" +version = "3.7.1" +description = "A platform independent file lock." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"] +testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"] + +[[package]] +name = "furo" +version = "2022.6.4.1" +description = "A clean customisable Sphinx documentation theme." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +beautifulsoup4 = "*" +pygments = "*" +sphinx = ">=4.0,<6.0" +sphinx-basic-ng = "*" [[package]] name = "gitdb" @@ -189,7 +286,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "importlib-metadata" -version = "4.11.3" +version = "4.11.4" description = "Read metadata from Python packages" category = "dev" optional = false @@ -203,6 +300,17 @@ docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] perf = ["ipython"] testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] +[[package]] +name = "importlib-resources" +version = "1.5.0" +description = "Read resources from Python packages" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[package.extras] +docs = ["sphinx", "rst.linker", "jaraco.packaging"] + [[package]] name = "iniconfig" version = "1.1.1" @@ -309,9 +417,27 @@ linkify = ["linkify-it-py (>=1.0,<2.0)"] rtd = ["ipython", "sphinx-book-theme", "sphinx-panels", "sphinxcontrib-bibtex (>=2.4,<3.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)", "sphinxcontrib.mermaid (>=0.7.1,<0.8.0)", "sphinxext-opengraph (>=0.6.3,<0.7.0)"] testing = ["beautifulsoup4", "coverage", "docutils (>=0.17.0,<0.18.0)", "pytest (>=6,<7)", "pytest-cov", "pytest-regressions", "pytest-param-files (>=0.3.4,<0.4.0)"] +[[package]] +name = "nox" +version = "2022.1.7" +description = "Flexible test automation." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +argcomplete = ">=1.9.4,<2.0" +colorlog = ">=2.6.1,<7.0.0" +packaging = ">=20.9" +py = ">=1.4.0,<2.0.0" +virtualenv = ">=14.0.0" + +[package.extras] +tox_to_nox = ["jinja2", "tox"] + [[package]] name = "numpy" -version = "1.22.3" +version = "1.22.4" description = "NumPy is the fundamental package for array computing with Python." category = "dev" optional = false @@ -357,6 +483,18 @@ category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +[[package]] +name = "platformdirs" +version = "2.5.2" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"] +test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"] + [[package]] name = "pluggy" version = "1.0.0" @@ -453,7 +591,7 @@ test = ["flaky", "pretend", "pytest (>=3.0.1)"] [[package]] name = "pyparsing" -version = "3.0.8" +version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" category = "dev" optional = false @@ -527,20 +665,20 @@ python-versions = ">=3.6" [[package]] name = "requests" -version = "2.27.1" +version = "2.28.0" description = "Python HTTP for Humans." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +python-versions = ">=3.7, <4" [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} -idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +charset-normalizer = ">=2.0.0,<2.1.0" +idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" [package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] [[package]] @@ -578,6 +716,14 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "soupsieve" +version = "2.3.2.post1" +description = "A modern CSS selector implementation for Beautiful Soup." +category = "dev" +optional = false +python-versions = ">=3.6" + [[package]] name = "sphinx" version = "4.5.0" @@ -610,6 +756,20 @@ docs = ["sphinxcontrib-websupport"] lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.931)", "docutils-stubs", "types-typed-ast", "types-requests"] test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"] +[[package]] +name = "sphinx-basic-ng" +version = "0.0.1a11" +description = "A modern skeleton for Sphinx themes." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +sphinx = ">=4.0,<6.0" + +[package.extras] +docs = ["furo", "myst-parser", "sphinx-copybutton", "sphinx-inline-tabs", "ipython"] + [[package]] name = "sphinxcontrib-applehelp" version = "1.0.2" @@ -730,6 +890,24 @@ brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +[[package]] +name = "virtualenv" +version = "20.14.1" +description = "Virtual Python Environment builder" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[package.dependencies] +distlib = ">=0.3.1,<1" +filelock = ">=3.2,<4" +platformdirs = ">=2,<3" +six = ">=1.9.0,<2" + +[package.extras] +docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"] +testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"] + [[package]] name = "websocket-client" version = "1.3.2" @@ -758,13 +936,17 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [metadata] lock-version = "1.1" python-versions = ">=3.8,<4.0" -content-hash = "7b0a1be9adb21c1194d0c66f3f306728f89d4668b33d6a952aec02063469cf24" +content-hash = "8d6c897f6f81eeb68e68773e133d0dfce97c021c781e7e23d0187980cf5e41a3" [metadata.files] alabaster = [ {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, ] +argcomplete = [ + {file = "argcomplete-1.12.3-py2.py3-none-any.whl", hash = "sha256:291f0beca7fd49ce285d2f10e4c1c77e9460cf823eef2de54df0c0fec88b0d81"}, + {file = "argcomplete-1.12.3.tar.gz", hash = "sha256:2c7dbffd8c045ea534921e63b0be6fe65e88599990d8dc408ac8c542b72a5445"}, +] atomicwrites = [ {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, @@ -774,12 +956,16 @@ attrs = [ {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, ] babel = [ - {file = "Babel-2.10.1-py3-none-any.whl", hash = "sha256:3f349e85ad3154559ac4930c3918247d319f21910d5ce4b25d439ed8693b98d2"}, - {file = "Babel-2.10.1.tar.gz", hash = "sha256:98aeaca086133efb3e1e2aad0396987490c8425929ddbcfe0550184fdc54cd13"}, + {file = "Babel-2.10.3-py3-none-any.whl", hash = "sha256:ff56f4892c1c4bf0d814575ea23471c230d544203c7748e8c68f0089478d48eb"}, + {file = "Babel-2.10.3.tar.gz", hash = "sha256:7614553711ee97490f732126dc077f8d0ae084ebc6a96e23db1482afabdb2c51"}, +] +beautifulsoup4 = [ + {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"}, + {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, ] certifi = [ - {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, - {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, + {file = "certifi-2022.6.15-py3-none-any.whl", hash = "sha256:fe86415d55e84719d75f8b69414f6438ac3547d2078ab91b67e779ef69378412"}, + {file = "certifi-2022.6.15.tar.gz", hash = "sha256:84c85a9078b11105f04f3036a9482ae10e4621616db313fe045dd24743a0820d"}, ] cffi = [ {file = "cffi-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c2502a1a03b6312837279c8c1bd3ebedf6c12c4228ddbad40912d671ccc8a962"}, @@ -838,51 +1024,55 @@ charset-normalizer = [ {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, ] colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, + {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, + {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, +] +colorlog = [ + {file = "colorlog-6.6.0-py2.py3-none-any.whl", hash = "sha256:351c51e866c86c3217f08e4b067a7974a678be78f07f85fc2d55b8babde6d94e"}, + {file = "colorlog-6.6.0.tar.gz", hash = "sha256:344f73204009e4c83c5b6beb00b3c45dc70fcdae3c80db919e0a4171d006fde8"}, ] coverage = [ - {file = "coverage-6.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9b27d894748475fa858f9597c0ee1d4829f44683f3813633aaf94b19cb5453cf"}, - {file = "coverage-6.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:37d1141ad6b2466a7b53a22e08fe76994c2d35a5b6b469590424a9953155afac"}, - {file = "coverage-6.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9987b0354b06d4df0f4d3e0ec1ae76d7ce7cbca9a2f98c25041eb79eec766f1"}, - {file = "coverage-6.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:26e2deacd414fc2f97dd9f7676ee3eaecd299ca751412d89f40bc01557a6b1b4"}, - {file = "coverage-6.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dd8bafa458b5c7d061540f1ee9f18025a68e2d8471b3e858a9dad47c8d41903"}, - {file = "coverage-6.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:46191097ebc381fbf89bdce207a6c107ac4ec0890d8d20f3360345ff5976155c"}, - {file = "coverage-6.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6f89d05e028d274ce4fa1a86887b071ae1755082ef94a6740238cd7a8178804f"}, - {file = "coverage-6.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:58303469e9a272b4abdb9e302a780072c0633cdcc0165db7eec0f9e32f901e05"}, - {file = "coverage-6.3.2-cp310-cp310-win32.whl", hash = "sha256:2fea046bfb455510e05be95e879f0e768d45c10c11509e20e06d8fcaa31d9e39"}, - {file = "coverage-6.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:a2a8b8bcc399edb4347a5ca8b9b87e7524c0967b335fbb08a83c8421489ddee1"}, - {file = "coverage-6.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f1555ea6d6da108e1999b2463ea1003fe03f29213e459145e70edbaf3e004aaa"}, - {file = "coverage-6.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5f4e1edcf57ce94e5475fe09e5afa3e3145081318e5fd1a43a6b4539a97e518"}, - {file = "coverage-6.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a15dc0a14008f1da3d1ebd44bdda3e357dbabdf5a0b5034d38fcde0b5c234b7"}, - {file = "coverage-6.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21b7745788866028adeb1e0eca3bf1101109e2dc58456cb49d2d9b99a8c516e6"}, - {file = "coverage-6.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8ce257cac556cb03be4a248d92ed36904a59a4a5ff55a994e92214cde15c5bad"}, - {file = "coverage-6.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b0be84e5a6209858a1d3e8d1806c46214e867ce1b0fd32e4ea03f4bd8b2e3359"}, - {file = "coverage-6.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:acf53bc2cf7282ab9b8ba346746afe703474004d9e566ad164c91a7a59f188a4"}, - {file = "coverage-6.3.2-cp37-cp37m-win32.whl", hash = "sha256:8bdde1177f2311ee552f47ae6e5aa7750c0e3291ca6b75f71f7ffe1f1dab3dca"}, - {file = "coverage-6.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b31651d018b23ec463e95cf10070d0b2c548aa950a03d0b559eaa11c7e5a6fa3"}, - {file = "coverage-6.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07e6db90cd9686c767dcc593dff16c8c09f9814f5e9c51034066cad3373b914d"}, - {file = "coverage-6.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2c6dbb42f3ad25760010c45191e9757e7dce981cbfb90e42feef301d71540059"}, - {file = "coverage-6.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c76aeef1b95aff3905fb2ae2d96e319caca5b76fa41d3470b19d4e4a3a313512"}, - {file = "coverage-6.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cf5cfcb1521dc3255d845d9dca3ff204b3229401994ef8d1984b32746bb45ca"}, - {file = "coverage-6.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8fbbdc8d55990eac1b0919ca69eb5a988a802b854488c34b8f37f3e2025fa90d"}, - {file = "coverage-6.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ec6bc7fe73a938933d4178c9b23c4e0568e43e220aef9472c4f6044bfc6dd0f0"}, - {file = "coverage-6.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9baff2a45ae1f17c8078452e9e5962e518eab705e50a0aa8083733ea7d45f3a6"}, - {file = "coverage-6.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fd9e830e9d8d89b20ab1e5af09b32d33e1a08ef4c4e14411e559556fd788e6b2"}, - {file = "coverage-6.3.2-cp38-cp38-win32.whl", hash = "sha256:f7331dbf301b7289013175087636bbaf5b2405e57259dd2c42fdcc9fcc47325e"}, - {file = "coverage-6.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:68353fe7cdf91f109fc7d474461b46e7f1f14e533e911a2a2cbb8b0fc8613cf1"}, - {file = "coverage-6.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b78e5afb39941572209f71866aa0b206c12f0109835aa0d601e41552f9b3e620"}, - {file = "coverage-6.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4e21876082ed887baed0146fe222f861b5815455ada3b33b890f4105d806128d"}, - {file = "coverage-6.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:34626a7eee2a3da12af0507780bb51eb52dca0e1751fd1471d0810539cefb536"}, - {file = "coverage-6.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ebf730d2381158ecf3dfd4453fbca0613e16eaa547b4170e2450c9707665ce7"}, - {file = "coverage-6.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd6fe30bd519694b356cbfcaca9bd5c1737cddd20778c6a581ae20dc8c04def2"}, - {file = "coverage-6.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:96f8a1cb43ca1422f36492bebe63312d396491a9165ed3b9231e778d43a7fca4"}, - {file = "coverage-6.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:dd035edafefee4d573140a76fdc785dc38829fe5a455c4bb12bac8c20cfc3d69"}, - {file = "coverage-6.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5ca5aeb4344b30d0bec47481536b8ba1181d50dbe783b0e4ad03c95dc1296684"}, - {file = "coverage-6.3.2-cp39-cp39-win32.whl", hash = "sha256:f5fa5803f47e095d7ad8443d28b01d48c0359484fec1b9d8606d0e3282084bc4"}, - {file = "coverage-6.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:9548f10d8be799551eb3a9c74bbf2b4934ddb330e08a73320123c07f95cc2d92"}, - {file = "coverage-6.3.2-pp36.pp37.pp38-none-any.whl", hash = "sha256:18d520c6860515a771708937d2f78f63cc47ab3b80cb78e86573b0a760161faf"}, - {file = "coverage-6.3.2.tar.gz", hash = "sha256:03e2a7826086b91ef345ff18742ee9fc47a6839ccd517061ef8fa1976e652ce9"}, + {file = "coverage-6.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f1d5aa2703e1dab4ae6cf416eb0095304f49d004c39e9db1d86f57924f43006b"}, + {file = "coverage-6.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4ce1b258493cbf8aec43e9b50d89982346b98e9ffdfaae8ae5793bc112fb0068"}, + {file = "coverage-6.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83c4e737f60c6936460c5be330d296dd5b48b3963f48634c53b3f7deb0f34ec4"}, + {file = "coverage-6.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84e65ef149028516c6d64461b95a8dbcfce95cfd5b9eb634320596173332ea84"}, + {file = "coverage-6.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f69718750eaae75efe506406c490d6fc5a6161d047206cc63ce25527e8a3adad"}, + {file = "coverage-6.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e57816f8ffe46b1df8f12e1b348f06d164fd5219beba7d9433ba79608ef011cc"}, + {file = "coverage-6.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:01c5615d13f3dd3aa8543afc069e5319cfa0c7d712f6e04b920431e5c564a749"}, + {file = "coverage-6.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:75ab269400706fab15981fd4bd5080c56bd5cc07c3bccb86aab5e1d5a88dc8f4"}, + {file = "coverage-6.4.1-cp310-cp310-win32.whl", hash = "sha256:a7f3049243783df2e6cc6deafc49ea123522b59f464831476d3d1448e30d72df"}, + {file = "coverage-6.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:ee2ddcac99b2d2aec413e36d7a429ae9ebcadf912946b13ffa88e7d4c9b712d6"}, + {file = "coverage-6.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fb73e0011b8793c053bfa85e53129ba5f0250fdc0392c1591fd35d915ec75c46"}, + {file = "coverage-6.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106c16dfe494de3193ec55cac9640dd039b66e196e4641fa8ac396181578b982"}, + {file = "coverage-6.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87f4f3df85aa39da00fd3ec4b5abeb7407e82b68c7c5ad181308b0e2526da5d4"}, + {file = "coverage-6.4.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:961e2fb0680b4f5ad63234e0bf55dfb90d302740ae9c7ed0120677a94a1590cb"}, + {file = "coverage-6.4.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:cec3a0f75c8f1031825e19cd86ee787e87cf03e4fd2865c79c057092e69e3a3b"}, + {file = "coverage-6.4.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:129cd05ba6f0d08a766d942a9ed4b29283aff7b2cccf5b7ce279d50796860bb3"}, + {file = "coverage-6.4.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:bf5601c33213d3cb19d17a796f8a14a9eaa5e87629a53979a5981e3e3ae166f6"}, + {file = "coverage-6.4.1-cp37-cp37m-win32.whl", hash = "sha256:269eaa2c20a13a5bf17558d4dc91a8d078c4fa1872f25303dddcbba3a813085e"}, + {file = "coverage-6.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f02cbbf8119db68455b9d763f2f8737bb7db7e43720afa07d8eb1604e5c5ae28"}, + {file = "coverage-6.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ffa9297c3a453fba4717d06df579af42ab9a28022444cae7fa605af4df612d54"}, + {file = "coverage-6.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:145f296d00441ca703a659e8f3eb48ae39fb083baba2d7ce4482fb2723e050d9"}, + {file = "coverage-6.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d44996140af8b84284e5e7d398e589574b376fb4de8ccd28d82ad8e3bea13"}, + {file = "coverage-6.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2bd9a6fc18aab8d2e18f89b7ff91c0f34ff4d5e0ba0b33e989b3cd4194c81fd9"}, + {file = "coverage-6.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3384f2a3652cef289e38100f2d037956194a837221edd520a7ee5b42d00cc605"}, + {file = "coverage-6.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9b3e07152b4563722be523e8cd0b209e0d1a373022cfbde395ebb6575bf6790d"}, + {file = "coverage-6.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1480ff858b4113db2718848d7b2d1b75bc79895a9c22e76a221b9d8d62496428"}, + {file = "coverage-6.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:865d69ae811a392f4d06bde506d531f6a28a00af36f5c8649684a9e5e4a85c83"}, + {file = "coverage-6.4.1-cp38-cp38-win32.whl", hash = "sha256:664a47ce62fe4bef9e2d2c430306e1428ecea207ffd68649e3b942fa8ea83b0b"}, + {file = "coverage-6.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:26dff09fb0d82693ba9e6231248641d60ba606150d02ed45110f9ec26404ed1c"}, + {file = "coverage-6.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d9c80df769f5ec05ad21ea34be7458d1dc51ff1fb4b2219e77fe24edf462d6df"}, + {file = "coverage-6.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:39ee53946bf009788108b4dd2894bf1349b4e0ca18c2016ffa7d26ce46b8f10d"}, + {file = "coverage-6.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5b66caa62922531059bc5ac04f836860412f7f88d38a476eda0a6f11d4724f4"}, + {file = "coverage-6.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd180ed867e289964404051a958f7cccabdeed423f91a899829264bb7974d3d3"}, + {file = "coverage-6.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84631e81dd053e8a0d4967cedab6db94345f1c36107c71698f746cb2636c63e3"}, + {file = "coverage-6.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8c08da0bd238f2970230c2a0d28ff0e99961598cb2e810245d7fc5afcf1254e8"}, + {file = "coverage-6.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d42c549a8f41dc103a8004b9f0c433e2086add8a719da00e246e17cbe4056f72"}, + {file = "coverage-6.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:309ce4a522ed5fca432af4ebe0f32b21d6d7ccbb0f5fcc99290e71feba67c264"}, + {file = "coverage-6.4.1-cp39-cp39-win32.whl", hash = "sha256:fdb6f7bd51c2d1714cea40718f6149ad9be6a2ee7d93b19e9f00934c0f2a74d9"}, + {file = "coverage-6.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:342d4aefd1c3e7f620a13f4fe563154d808b69cccef415415aece4c786665397"}, + {file = "coverage-6.4.1-pp36.pp37.pp38-none-any.whl", hash = "sha256:4803e7ccf93230accb928f3a68f00ffa80a88213af98ed338a57ad021ef06815"}, + {file = "coverage-6.4.1.tar.gz", hash = "sha256:4321f075095a096e70aff1d002030ee612b65a205a0a0f5b815280d5dc58100c"}, ] cryptography = [ {file = "cryptography-37.0.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:ef15c2df7656763b4ff20a9bc4381d8352e6640cfeb95c2972c38ef508e75181"}, @@ -909,14 +1099,27 @@ cryptography = [ {file = "cryptography-37.0.2.tar.gz", hash = "sha256:f224ad253cc9cea7568f49077007d2263efa57396a2f2f78114066fd54b5c68e"}, ] dill = [ - {file = "dill-0.3.4-py2.py3-none-any.whl", hash = "sha256:7e40e4a70304fd9ceab3535d36e58791d9c4a776b38ec7f7ec9afc8d3dca4d4f"}, - {file = "dill-0.3.4.zip", hash = "sha256:9f9734205146b2b353ab3fec9af0070237b6ddae78452af83d2fca84d739e675"}, + {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, + {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, +] +distlib = [ + {file = "distlib-0.3.4-py2.py3-none-any.whl", hash = "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b"}, + {file = "distlib-0.3.4.zip", hash = "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579"}, ] docutils = [ {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, ] +exasol-sphinx-github-pages-generator = [] exasol-udf-mock-python = [] +filelock = [ + {file = "filelock-3.7.1-py3-none-any.whl", hash = "sha256:37def7b658813cda163b56fc564cdc75e86d338246458c4c28ae84cabefa2404"}, + {file = "filelock-3.7.1.tar.gz", hash = "sha256:3a0fd85166ad9dbab54c9aec96737b744106dc5f15c0b09a6744a445299fcf04"}, +] +furo = [ + {file = "furo-2022.6.4.1-py3-none-any.whl", hash = "sha256:79f2d3a61e3d971c0acd59f53d3202e7336789cd893f7bdc3cc7bc37d6ef252c"}, + {file = "furo-2022.6.4.1.tar.gz", hash = "sha256:c927848edf3292030d0719ebdab9e16d56f1b91c68562b9be316aa5b843775ab"}, +] gitdb = [ {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, @@ -934,8 +1137,12 @@ imagesize = [ {file = "imagesize-1.3.0.tar.gz", hash = "sha256:cd1750d452385ca327479d45b64d9c7729ecf0b3969a58148298c77092261f9d"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.11.3-py3-none-any.whl", hash = "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6"}, - {file = "importlib_metadata-4.11.3.tar.gz", hash = "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539"}, + {file = "importlib_metadata-4.11.4-py3-none-any.whl", hash = "sha256:c58c8eb8a762858f49e18436ff552e83914778e50e9d2f1660535ffb364552ec"}, + {file = "importlib_metadata-4.11.4.tar.gz", hash = "sha256:5d26852efe48c0a32b0509ffbc583fda1a2266545a78d104a6f4aff3db17d700"}, +] +importlib-resources = [ + {file = "importlib_resources-1.5.0-py2.py3-none-any.whl", hash = "sha256:85dc0b9b325ff78c8bef2e4ff42616094e16b98ebd5e3b50fe7e2f0bbcdcde49"}, + {file = "importlib_resources-1.5.0.tar.gz", hash = "sha256:6f87df66833e1942667108628ec48900e02a4ab4ad850e25fbf07cb17cf734ca"}, ] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, @@ -1007,27 +1214,33 @@ myst-parser = [ {file = "myst-parser-0.17.2.tar.gz", hash = "sha256:4c076d649e066f9f5c7c661bae2658be1ca06e76b002bb97f02a09398707686c"}, {file = "myst_parser-0.17.2-py3-none-any.whl", hash = "sha256:1635ce3c18965a528d6de980f989ff64d6a1effb482e1f611b1bfb79e38f3d98"}, ] +nox = [ + {file = "nox-2022.1.7-py3-none-any.whl", hash = "sha256:efee12f02d39405b16d68f60e7a06fe1fc450ae58669d6cdda8c7f48e3bae9e3"}, + {file = "nox-2022.1.7.tar.gz", hash = "sha256:b375238cebb0b9df2fab74b8d0ce1a50cd80df60ca2e13f38f539454fcd97d7e"}, +] numpy = [ - {file = "numpy-1.22.3-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:92bfa69cfbdf7dfc3040978ad09a48091143cffb778ec3b03fa170c494118d75"}, - {file = "numpy-1.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8251ed96f38b47b4295b1ae51631de7ffa8260b5b087808ef09a39a9d66c97ab"}, - {file = "numpy-1.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48a3aecd3b997bf452a2dedb11f4e79bc5bfd21a1d4cc760e703c31d57c84b3e"}, - {file = "numpy-1.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3bae1a2ed00e90b3ba5f7bd0a7c7999b55d609e0c54ceb2b076a25e345fa9f4"}, - {file = "numpy-1.22.3-cp310-cp310-win32.whl", hash = "sha256:f950f8845b480cffe522913d35567e29dd381b0dc7e4ce6a4a9f9156417d2430"}, - {file = "numpy-1.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:08d9b008d0156c70dc392bb3ab3abb6e7a711383c3247b410b39962263576cd4"}, - {file = "numpy-1.22.3-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:201b4d0552831f7250a08d3b38de0d989d6f6e4658b709a02a73c524ccc6ffce"}, - {file = "numpy-1.22.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8c1f39caad2c896bc0018f699882b345b2a63708008be29b1f355ebf6f933fe"}, - {file = "numpy-1.22.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:568dfd16224abddafb1cbcce2ff14f522abe037268514dd7e42c6776a1c3f8e5"}, - {file = "numpy-1.22.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ca688e1b9b95d80250bca34b11a05e389b1420d00e87a0d12dc45f131f704a1"}, - {file = "numpy-1.22.3-cp38-cp38-win32.whl", hash = "sha256:e7927a589df200c5e23c57970bafbd0cd322459aa7b1ff73b7c2e84d6e3eae62"}, - {file = "numpy-1.22.3-cp38-cp38-win_amd64.whl", hash = "sha256:07a8c89a04997625236c5ecb7afe35a02af3896c8aa01890a849913a2309c676"}, - {file = "numpy-1.22.3-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:2c10a93606e0b4b95c9b04b77dc349b398fdfbda382d2a39ba5a822f669a0123"}, - {file = "numpy-1.22.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fade0d4f4d292b6f39951b6836d7a3c7ef5b2347f3c420cd9820a1d90d794802"}, - {file = "numpy-1.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bfb1bb598e8229c2d5d48db1860bcf4311337864ea3efdbe1171fb0c5da515d"}, - {file = "numpy-1.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97098b95aa4e418529099c26558eeb8486e66bd1e53a6b606d684d0c3616b168"}, - {file = "numpy-1.22.3-cp39-cp39-win32.whl", hash = "sha256:fdf3c08bce27132395d3c3ba1503cac12e17282358cb4bddc25cc46b0aca07aa"}, - {file = "numpy-1.22.3-cp39-cp39-win_amd64.whl", hash = "sha256:639b54cdf6aa4f82fe37ebf70401bbb74b8508fddcf4797f9fe59615b8c5813a"}, - {file = "numpy-1.22.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c34ea7e9d13a70bf2ab64a2532fe149a9aced424cd05a2c4ba662fd989e3e45f"}, - {file = "numpy-1.22.3.zip", hash = "sha256:dbc7601a3b7472d559dc7b933b18b4b66f9aa7452c120e87dfb33d02008c8a18"}, + {file = "numpy-1.22.4-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:ba9ead61dfb5d971d77b6c131a9dbee62294a932bf6a356e48c75ae684e635b3"}, + {file = "numpy-1.22.4-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:1ce7ab2053e36c0a71e7a13a7475bd3b1f54750b4b433adc96313e127b870887"}, + {file = "numpy-1.22.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7228ad13744f63575b3a972d7ee4fd61815b2879998e70930d4ccf9ec721dce0"}, + {file = "numpy-1.22.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43a8ca7391b626b4c4fe20aefe79fec683279e31e7c79716863b4b25021e0e74"}, + {file = "numpy-1.22.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a911e317e8c826ea632205e63ed8507e0dc877dcdc49744584dfc363df9ca08c"}, + {file = "numpy-1.22.4-cp310-cp310-win32.whl", hash = "sha256:9ce7df0abeabe7fbd8ccbf343dc0db72f68549856b863ae3dd580255d009648e"}, + {file = "numpy-1.22.4-cp310-cp310-win_amd64.whl", hash = "sha256:3e1ffa4748168e1cc8d3cde93f006fe92b5421396221a02f2274aab6ac83b077"}, + {file = "numpy-1.22.4-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:59d55e634968b8f77d3fd674a3cf0b96e85147cd6556ec64ade018f27e9479e1"}, + {file = "numpy-1.22.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c1d937820db6e43bec43e8d016b9b3165dcb42892ea9f106c70fb13d430ffe72"}, + {file = "numpy-1.22.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4c5d5eb2ec8da0b4f50c9a843393971f31f1d60be87e0fb0917a49133d257d6"}, + {file = "numpy-1.22.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64f56fc53a2d18b1924abd15745e30d82a5782b2cab3429aceecc6875bd5add0"}, + {file = "numpy-1.22.4-cp38-cp38-win32.whl", hash = "sha256:fb7a980c81dd932381f8228a426df8aeb70d59bbcda2af075b627bbc50207cba"}, + {file = "numpy-1.22.4-cp38-cp38-win_amd64.whl", hash = "sha256:e96d7f3096a36c8754207ab89d4b3282ba7b49ea140e4973591852c77d09eb76"}, + {file = "numpy-1.22.4-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:4c6036521f11a731ce0648f10c18ae66d7143865f19f7299943c985cdc95afb5"}, + {file = "numpy-1.22.4-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:b89bf9b94b3d624e7bb480344e91f68c1c6c75f026ed6755955117de00917a7c"}, + {file = "numpy-1.22.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2d487e06ecbf1dc2f18e7efce82ded4f705f4bd0cd02677ffccfb39e5c284c7e"}, + {file = "numpy-1.22.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3eb268dbd5cfaffd9448113539e44e2dd1c5ca9ce25576f7c04a5453edc26fa"}, + {file = "numpy-1.22.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37431a77ceb9307c28382c9773da9f306435135fae6b80b62a11c53cfedd8802"}, + {file = "numpy-1.22.4-cp39-cp39-win32.whl", hash = "sha256:cc7f00008eb7d3f2489fca6f334ec19ca63e31371be28fd5dad955b16ec285bd"}, + {file = "numpy-1.22.4-cp39-cp39-win_amd64.whl", hash = "sha256:f0725df166cf4785c0bc4cbfb320203182b1ecd30fee6e541c8752a92df6aa32"}, + {file = "numpy-1.22.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0791fbd1e43bf74b3502133207e378901272f3c156c4df4954cad833b1380207"}, + {file = "numpy-1.22.4.zip", hash = "sha256:425b390e4619f58d8526b3dcf656dde069133ae5c240229821f01b5f44ea07af"}, ] packaging = [ {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, @@ -1060,6 +1273,10 @@ pastel = [ {file = "pastel-0.2.1-py2.py3-none-any.whl", hash = "sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364"}, {file = "pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d"}, ] +platformdirs = [ + {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, + {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, +] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, @@ -1104,8 +1321,8 @@ pyopenssl = [ {file = "pyOpenSSL-22.0.0.tar.gz", hash = "sha256:660b1b1425aac4a1bea1d94168a85d99f0b3144c869dd4390d27629d0087f1bf"}, ] pyparsing = [ - {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"}, - {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] pytest = [ {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"}, @@ -1159,8 +1376,8 @@ pyyaml = [ {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, ] requests = [ - {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, - {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, + {file = "requests-2.28.0-py3-none-any.whl", hash = "sha256:bc7861137fbce630f17b03d3ad02ad0bf978c844f3536d0edda6499dafce2b6f"}, + {file = "requests-2.28.0.tar.gz", hash = "sha256:d568723a7ebd25875d8d1eaf5dfa068cd2fc8194b2e483d7b1f7c81918dbec6b"}, ] rsa = [ {file = "rsa-4.8-py3-none-any.whl", hash = "sha256:95c5d300c4e879ee69708c428ba566c59478fd653cc3a22243eeb8ed846950bb"}, @@ -1178,10 +1395,18 @@ snowballstemmer = [ {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, ] +soupsieve = [ + {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"}, + {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"}, +] sphinx = [ {file = "Sphinx-4.5.0-py3-none-any.whl", hash = "sha256:ebf612653238bcc8f4359627a9b7ce44ede6fdd75d9d30f68255c7383d3a6226"}, {file = "Sphinx-4.5.0.tar.gz", hash = "sha256:7bf8ca9637a4ee15af412d1a1d9689fec70523a68ca9bb9127c2f3eeb344e2e6"}, ] +sphinx-basic-ng = [ + {file = "sphinx_basic_ng-0.0.1a11-py3-none-any.whl", hash = "sha256:9aecb5345816998789ef76658a83e3c0a12aafa14b17d40e28cd4aaeb94d1517"}, + {file = "sphinx_basic_ng-0.0.1a11.tar.gz", hash = "sha256:bf9a8fda0379c7d2ab51c9543f2b18e014b77fb295b49d64f3c1a910c863b34f"}, +] sphinxcontrib-applehelp = [ {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, @@ -1226,6 +1451,10 @@ urllib3 = [ {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, ] +virtualenv = [ + {file = "virtualenv-20.14.1-py2.py3-none-any.whl", hash = "sha256:e617f16e25b42eb4f6e74096b9c9e37713cf10bf30168fb4a739f3fa8f898a3a"}, + {file = "virtualenv-20.14.1.tar.gz", hash = "sha256:ef589a79795589aada0c1c5b319486797c03b67ac3984c48c669c0e4f50df3a5"}, +] websocket-client = [ {file = "websocket-client-1.3.2.tar.gz", hash = "sha256:50b21db0058f7a953d67cc0445be4b948d7fc196ecbeb8083d68d94628e4abf6"}, {file = "websocket_client-1.3.2-py3-none-any.whl", hash = "sha256:722b171be00f2b90e1d4fb2f2b53146a536ca38db1da8ff49c972a4e1365d0ef"}, diff --git a/pyproject.toml b/pyproject.toml index 608c1120..ca51db35 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,27 +28,12 @@ typeguard = ">=2.11.1" pytest = "^7.1.2" pytest-cov = "^3.0.0" Sphinx = "^4.5" -poethepoet = "^0.13.0" myst-parser = "^0.17.0" pyexasol = "^0.24.0" dill = "^0.3.4" exasol-udf-mock-python = { git = "https://github.com/exasol/udf-mock-python.git", branch = "master" } +exasol-sphinx-github-pages-generator = { git = "https://github.com/exasol/sphinx-github-pages-generator.git", tag = "0.1.0"} gitpython = ">=2.1.0" toml = ">=0.10.2" +nox = "^2022.1.7" -[tool.poe.tasks] -build-html-doc = {shell = """ - cd "$(git rev-parse --show-toplevel)/doc"; - make clean-build; make html - """ } -open-html-doc = { shell = """ - cd "$(git rev-parse --show-toplevel)/doc"; - xdg-open _build/html/index.html""" } -build-and-open-html-doc = [ "build-html-doc", "open-html-doc" ] - -commit-html-doc-to-github-pages-main = { shell = "cd $(git rev-parse --show-toplevel)/doc; bash deploy-to-github-pages-main.sh commit" } -push-html-doc-to-github-pages-main = { shell = "cd $(git rev-parse --show-toplevel)/doc; bash deploy-to-github-pages-main.sh push" } -commit-html-doc-to-github-pages-current = { shell = "cd $(git rev-parse --show-toplevel)/doc; bash deploy-to-github-pages-current.sh commit" } -push-html-doc-to-github-pages-current = { shell = "cd $(git rev-parse --show-toplevel)/doc; bash deploy-to-github-pages-current.sh push" } - -test = "pytest tests" diff --git a/setup.py b/setup.py index 441fbd0e..1d9938ed 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ 'name': 'exasol-bucketfs-utils-python', 'version': '0.3.0', 'description': 'BucketFS utilities for the Python programming language', - 'long_description': '#####################\nBucketFS Utils Python\n#####################\n\n********\nOverview\n********\n\nThis project provides a python library for accessing the Exasol BucketFS system.\nIt provides functions to upload and download files to and from the BucketFS.\n\nIn a Nutshell\n=============\n\nPrerequisites\n-------------\n\n- Python 3.8+\n\nInstallation\n-------------\n\nInstall the package from Github via `pip`::\n\n pip install -e git+https://github.com/exasol/bucketfs-utils-python.git@{tag name}#egg=exasol-bucketfs-utils-python\n\nOr install the wheel directly via::\n\n pip install https://github.com/exasol/bucketfs-utils-python/releases/download/{tag name}/exasol_bucketfs_utils_python-{tag name}-py3-none-any.whl\n\nDocumentation\n-------------\n\n`Documentation for the latest release `_ is hosted on the Github Pages of this project.\n\nFeatures\n========\n\n* Download or upload files from/to the Exasol BucketFS\n* Supported sources and targets for the uploads and downloads:\n\n * Files on the local Filesystem\n * Python file objects\n * Python Strings\n * Python objects ((De-)Serialization with `Joblib `_)\n\n* Loading an artefact from a public Github Release into the BucketFS\n', + 'long_description': '#####################\nBucketFS Utils Python\n#####################\n\n********\nOverview\n********\n\nThis project provides a python library for accessing the Exasol BucketFS system.\nIt provides functions to upload and download files to and from the BucketFS.\n\nIn a Nutshell\n=============\n\nPrerequisites\n-------------\n\n- Python 3.8+\n\nInstallation\n-------------\n\nInstall the package from Github via `pip`::\n\n pip install -e git+https://github.com/exasol/bucketfs-utils-python.git@{tag name}#egg=exasol-bucketfs-utils-python\n\nOr install the wheel directly via::\n\n pip install https://github.com/exasol/bucketfs-utils-python/releases/download/{tag name}/exasol_bucketfs_utils_python-{tag name}-py3-none-any.whl\n\nDocumentation\n-------------\n\n`Documentation for the current main branch `_ is hosted on the Github Pages of this project.\n`Here `_ is a list of documentations for previous releases.\n\nFeatures\n========\n\n* Download or upload files from/to the Exasol BucketFS\n* Supported sources and targets for the uploads and downloads:\n\n * Files on the local Filesystem\n * Python file objects\n * Python Strings\n * Python objects ((De-)Serialization with `Joblib `_)\n\n* Loading an artefact from a public Github Release into the BucketFS\n', 'author': 'Torsten Kilias', 'author_email': 'torsten.kilias@exasol.com', 'maintainer': None,