From 90e4297289ed461283e2cb7623446649766186c4 Mon Sep 17 00:00:00 2001 From: Najib Ishaq Date: Tue, 30 Jan 2024 14:35:00 -0500 Subject: [PATCH 1/5] ci: updated workflows with separate docker steps --- .github/workflows/docker.yml | 59 ----------------- .github/workflows/package-filter.yml | 7 +- .github/workflows/package-release.yml | 65 ++++++++++++------- .../{tests.yml => package-tests.yml} | 50 +++++++------- .github/workflows/test-github-app.yml | 41 ------------ 5 files changed, 75 insertions(+), 147 deletions(-) delete mode 100644 .github/workflows/docker.yml rename .github/workflows/{tests.yml => package-tests.yml} (53%) delete mode 100644 .github/workflows/test-github-app.yml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index cf9bfa35f..000000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,59 +0,0 @@ -name: Docker Build and Push - -on: - workflow_call: - inputs: - matrix: - description: 'JSON-encoded matrix' - required: true - type: string - push: - description: 'Whether to push the image to Docker Hub' - required: true - type: boolean - secrets: - DOCKER_USERNAME: - description: 'Docker Hub username' - required: true - DOCKER_TOKEN: - description: 'Docker Hub password' - required: true - -permissions: - contents: read - -jobs: - docker: - name: Docker "${{ matrix.package_name }}" - strategy: - matrix: ${{fromJson(inputs.matrix)}} - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Get | Docker Tag - id: docker_tag - run: | - package_dir="${{ matrix.package_dir }}" - version=$(cat ${package_dir}/VERSION) - tag=polusai/${{ matrix.package_name }}:${version} - echo "tag=${tag}" >> $GITHUB_OUTPUT - - name: Setup | Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Login | DockerHub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_TOKEN }} - - name: Check | Image exists - run: | - tag=${{ steps.docker_tag.outputs.tag }} - docker pull ${tag} > /dev/null \ - && $(echo "::error::${tag} already exists on DockerHub" && exit 1) \ - || echo "success" - - name: Publish | Docker Image - uses: docker/build-push-action@v5 - with: - context: "{{defaultContext}}:${{ matrix.package_dir }}" - push: ${{ inputs.push }} - tags: ${{ steps.docker_tag.outputs.tag }} diff --git a/.github/workflows/package-filter.yml b/.github/workflows/package-filter.yml index 427bc9b8e..8eed2a121 100644 --- a/.github/workflows/package-filter.yml +++ b/.github/workflows/package-filter.yml @@ -8,6 +8,11 @@ on: required: true default: 0 type: number + ignore-missing-dev: + description: "If true, the action will ignore packages that do not have a dev version. Otherwise, the action will fail if any package does not have a dev version." + required: true + default: false + type: boolean outputs: matrix: description: "The directories containing the updated packages" @@ -79,7 +84,7 @@ jobs: done # Check that the version is a dev version - if [[ "$(cat ${pkg_dir}/VERSION)" != *"dev"* ]] + if [[ "$(cat ${pkg_dir}/VERSION)" != *"dev"* ]] || [[ ${{ inputs.ignore-missing-dev }} ]] then echo "::error::${pkg_dir} does not have a dev version" && exit 1 fi diff --git a/.github/workflows/package-release.yml b/.github/workflows/package-release.yml index 9ee5bc802..5e51cdf18 100644 --- a/.github/workflows/package-release.yml +++ b/.github/workflows/package-release.yml @@ -12,6 +12,11 @@ on: required: true default: 1 type: number + ignore-missing-dev: + description: "If true, the action will ignore packages that do not have a dev version. Otherwise, the action will fail if any package does not have a dev version." + required: true + default: true + type: boolean repo_name: description: 'Name of the base repository. The user can ignore this input if the action is triggered from the base repository.' required: true @@ -41,19 +46,20 @@ permissions: jobs: package-filter: - name: Filter for updated package + name: Filter for updated packages if: github.repository == 'polusai/${{ github.event.inputs.repo_name }}' uses: ./.github/workflows/package-filter.yml with: num-commits: ${{ fromJson(github.event.inputs.num-commits) }} + ignore-missing-dev: ${{ fromJson(github.event.inputs.ignore-missing-dev) }} package-release: - name: Release "${{ matrix.package_name }}" + name: Release | ${{ matrix.package_name }} if: github.repository == 'polusai/${{ github.event.inputs.repo_name }}' needs: package-filter strategy: fail-fast: false - matrix: ${{fromJson(needs.package-filter.outputs.matrix)}} + matrix: ${{ fromJson(needs.package-filter.outputs.matrix) }} runs-on: ubuntu-latest steps: - name: Checkout @@ -62,30 +68,30 @@ jobs: fetch-depth: 0 ref: ${{ github.event.inputs.branch }} persist-credentials: false - - name: Generate a token + - name: Token | Generate id: generate_token uses: actions/create-github-app-token@v1 with: app-id: ${{ secrets.APP_ID }} private-key: ${{ secrets.APP_PRIVATE_KEY }} - - name: Use the token + - name: Token | Use the token env: GH_TOKEN: ${{ steps.generate_token.outputs.token }} run: | gh api octocat - - name: Set up Python + - name: Python | Setup uses: actions/setup-python@v5 with: python-version: '3.9' - - name: Install bump2version + - name: Python | Install bump2version run: | python -m pip install --upgrade pip pip install bump2version - - name: Bump Version + - name: Python | Bump Version Release run: | cd "${{ matrix.package_dir }}" bump2version release --no-commit - - name: Commit all changed files + - name: Git | Commit env: CI_COMMIT_AUTHOR: polusai-auth-helper[bot] CI_COMMIT_EMAIL: ${{ secrets.APP_ID }}+polusai-auth-helper[bot]@users.noreply.github.com @@ -93,20 +99,35 @@ jobs: git config --global user.name "${{ env.CI_COMMIT_AUTHOR }}" git config --global user.email "${{ env.CI_COMMIT_EMAIL }}" git commit -a -m "build: Bumped release version for ${{ matrix.package_name }}" - - name: Push changes + - name: Git | Push uses: ad-m/github-push-action@master with: force: true github_token: ${{ steps.generate_token.outputs.token }} - - docker: - name: Build Docker images - if: github.repository == 'polusai/${{ github.event.inputs.repo_name }}' - needs: [package-filter, package-release] - uses: ./.github/workflows/docker.yml - with: - matrix: ${{ needs.package-filter.outputs.matrix }} - push: true - secrets: - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }} + - name: Docker | Tag + id: docker_tag + run: | + package_dir="${{ matrix.package_dir }}" + cp .gitignore ${package_dir}/.dockerignore + version=$(cat ${package_dir}/VERSION) + tag=polusai/${{ matrix.package_name }}:${version} + echo "tag=${tag}" >> $GITHUB_OUTPUT + - name: Docker | Setup Buildx + uses: docker/setup-buildx-action@v3 + - name: Docker | Login DockerHub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_TOKEN }} + - name: Docker | Check if Image exists + run: | + tag=${{ steps.docker_tag.outputs.tag }} + docker pull ${tag} > /dev/null \ + && $(echo "::error::${tag} already exists on DockerHub" && exit 1) \ + || echo "success" + - name: Docekr | Push Image + uses: docker/build-push-action@v5 + with: + context: "{{defaultContext}}:${{ matrix.package_dir }}" + push: true + tags: ${{ steps.docker_tag.outputs.tag }} diff --git a/.github/workflows/tests.yml b/.github/workflows/package-tests.yml similarity index 53% rename from .github/workflows/tests.yml rename to .github/workflows/package-tests.yml index d0505ba28..48e202d30 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/package-tests.yml @@ -1,9 +1,5 @@ name: Package tests -env: - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }} - on: pull_request: branches: @@ -16,13 +12,6 @@ on: - master - dev workflow_call: - secrets: - DOCKER_USERNAME: - description: 'Docker Hub username' - required: true - DOCKER_TOKEN: - description: 'Docker Hub password' - required: true permissions: contents: read @@ -33,13 +22,14 @@ jobs: uses: ./.github/workflows/package-filter.yml with: num-commits: 0 + ignore-missing-dev: false tests: - name: Test "${{ matrix.package_name }}" + name: Test | ${{ matrix.package_name }} needs: package-filter strategy: fail-fast: false - matrix: ${{fromJson(needs.package-filter.outputs.matrix)}} + matrix: ${{ fromJson(needs.package-filter.outputs.matrix) }} runs-on: ubuntu-latest steps: - name: Checkout @@ -69,14 +59,26 @@ jobs: poetry install poetry run pytest -v - - docker: - name: Build Docker images - needs: [package-filter, tests] - uses: ./.github/workflows/docker.yml - with: - matrix: ${{ needs.package-filter.outputs.matrix }} - push: false - secrets: - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }} + - name: Docker | Tag + id: docker_tag + run: | + package_dir="${{ matrix.package_dir }}" + version=$(cat ${package_dir}/VERSION) + tag=polusai/${{ matrix.package_name }}:${version} + echo "tag will be ${tag}" + echo "tag=${tag}" >> $GITHUB_OUTPUT + - name: Docker | Setup Buildx + uses: docker/setup-buildx-action@v3 + - name: Docker | Check if Image exists + run: | + tag=${{ steps.docker_tag.outputs.tag }} + docker pull ${tag} > /dev/null \ + && $(echo "::error::${tag} already exists on DockerHub" && exit 1) \ + || echo "success" + - name: Docker | Build Image + run: | + cp .gitignore ${{ matrix.package_dir }}/.dockerignore + cd "${{ matrix.package_dir }}" + tag=${{ steps.docker_tag.outputs.tag }} + docker build . -t ${tag} + # docker buildx build --platform linux/amd64,linux/arm64 -t ${tag} --push . diff --git a/.github/workflows/test-github-app.yml b/.github/workflows/test-github-app.yml deleted file mode 100644 index 5e1904d9a..000000000 --- a/.github/workflows/test-github-app.yml +++ /dev/null @@ -1,41 +0,0 @@ - -name: Test Github App -on: - workflow_dispatch: - -jobs: - auto_publish_job: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - ref: ${{ github.head_ref }} - fetch-depth: 0 - persist-credentials : false - - name: Generate a token - id: generate_token - uses: actions/create-github-app-token@v1 - with: - app-id: ${{ secrets.APP_ID }} - private-key: ${{ secrets.APP_PRIVATE_KEY }} - - - name: Use the token - env: - GH_TOKEN: ${{ steps.generate_token.outputs.token }} - run: | - gh api octocat - - name: Add test file - run: | - touch test.txt - - name: Commit files - run: | - git add . - git config --local user.email ${{ secrets.APP_ID }}+polusai-auth-helper[bot]@users.noreply.github.com - git config --local user.name "polusai-auth-helper[bot]" - git commit -a -m "Adding test file" - - name: Push changes - uses: ad-m/github-push-action@master - with: - force: true - github_token: ${{ steps.generate_token.outputs.token }} \ No newline at end of file From 088e6638252bdba14b9581724b41e5abf506a145 Mon Sep 17 00:00:00 2001 From: Najib Ishaq Date: Tue, 30 Jan 2024 14:57:44 -0500 Subject: [PATCH 2/5] ci: selectively ignoring missing dev versions --- .github/workflows/package-filter.yml | 5 +++-- .github/workflows/package-release.yml | 29 +++++++++++++++++++++------ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/.github/workflows/package-filter.yml b/.github/workflows/package-filter.yml index 8eed2a121..1eb543541 100644 --- a/.github/workflows/package-filter.yml +++ b/.github/workflows/package-filter.yml @@ -84,9 +84,10 @@ jobs: done # Check that the version is a dev version - if [[ "$(cat ${pkg_dir}/VERSION)" != *"dev"* ]] || [[ ${{ inputs.ignore-missing-dev }} ]] + if [[ "$(cat ${pkg_dir}/VERSION)" != *"dev"* ]] then - echo "::error::${pkg_dir} does not have a dev version" && exit 1 + msg="${pkg_dir} does not have a dev version" + ${{ inputs.ignore-missing-dev }} && echo "::warning::${msg}" || $(echo "::error::${msg}" && exit 1) fi PACKAGE_DIRS="$PACKAGE_DIRS ${pkg_dir}" diff --git a/.github/workflows/package-release.yml b/.github/workflows/package-release.yml index 5e51cdf18..6bc886412 100644 --- a/.github/workflows/package-release.yml +++ b/.github/workflows/package-release.yml @@ -24,15 +24,20 @@ on: default: 'image-tools' workflow_call: inputs: - repo_name: - description: 'Name of the base repository' - required: true - type: string num-commits: description: "The of commits to check for updated packages. If 0, the action will check all commits on the master branch. For any larger value, the action will check the last n commits for any updated packages." required: true default: 1 type: number + ignore-missing-dev: + description: "If true, the action will ignore packages that do not have a dev version. Otherwise, the action will fail if any package does not have a dev version." + required: true + default: true + type: boolean + repo_name: + description: 'Name of the base repository' + required: true + type: string secrets: DOCKER_USERNAME: description: 'Docker Hub username' @@ -88,10 +93,21 @@ jobs: python -m pip install --upgrade pip pip install bump2version - name: Python | Bump Version Release + id: bump_version run: | - cd "${{ matrix.package_dir }}" - bump2version release --no-commit + pkg_dir=${{ matrix.package_dir }} + cd "${pkg_dir}" + # check if the package has a dev version + if [[ "$(cat VERSION)" != *dev* ]] + then + msg="${pkg_dir} does not have a dev version" + ${{ github.event.inputs.ignore-missing-dev }} && echo "::warning::${msg}" || $(echo "::error::${msg}" && exit 1) + else + bump2version release --no-commit + fi + echo "released=$(git status --porcelain)" >> $GITHUB_output - name: Git | Commit + if: steps.bump_version.outputs.released == 'true' env: CI_COMMIT_AUTHOR: polusai-auth-helper[bot] CI_COMMIT_EMAIL: ${{ secrets.APP_ID }}+polusai-auth-helper[bot]@users.noreply.github.com @@ -100,6 +116,7 @@ jobs: git config --global user.email "${{ env.CI_COMMIT_EMAIL }}" git commit -a -m "build: Bumped release version for ${{ matrix.package_name }}" - name: Git | Push + if: steps.bump_version.outputs.released == 'true' uses: ad-m/github-push-action@master with: force: true From aca09527e9b27739b7291a5fbe311a873761ccec Mon Sep 17 00:00:00 2001 From: Najib Ishaq Date: Fri, 26 Jan 2024 10:59:51 -0500 Subject: [PATCH 3/5] fix: pre-commit hooks on tests --- .../tests/test_plugin.py | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/regression/basic-flatfield-estimation-plugin/tests/test_plugin.py b/regression/basic-flatfield-estimation-plugin/tests/test_plugin.py index 46cc60bb3..04a9bc1c9 100644 --- a/regression/basic-flatfield-estimation-plugin/tests/test_plugin.py +++ b/regression/basic-flatfield-estimation-plugin/tests/test_plugin.py @@ -9,6 +9,7 @@ import pathlib import shutil import tempfile +import typing import bfio import numpy @@ -43,7 +44,7 @@ def _make_random_image( @pytest.fixture(params=fixture_params) def gen_images( request: pytest.FixtureRequest, -) -> tuple[str, pathlib.Path, pathlib.Path]: +) -> typing.Generator[tuple[str, pathlib.Path, pathlib.Path], None, None]: """Generate a set of random images for testing.""" pattern: str variables: list[int] @@ -74,7 +75,6 @@ def gen_images( def test_estimate(gen_images: tuple[str, pathlib.Path, pathlib.Path]) -> None: """Test the `estimate` function.""" - _, inp_dir, out_dir = gen_images # type: ignore[misc] paths = list(filter(lambda p: p.name.endswith(".ome.tif"), inp_dir.iterdir())) @@ -86,12 +86,8 @@ def test_estimate(gen_images: tuple[str, pathlib.Path, pathlib.Path]) -> None: darkfield_out = base_output.replace(suffix, "_darkfield.ome.tif") out_names = [p.name for p in out_dir.iterdir()] - assert ( - flatfield_out in out_names - ), f"{flatfield_out} not in {out_names}" # noqa: S101 - assert ( - darkfield_out in out_names - ), f"{darkfield_out} not in {out_names}" # noqa: S101 + assert flatfield_out in out_names, f"{flatfield_out} not in {out_names}" + assert darkfield_out in out_names, f"{darkfield_out} not in {out_names}" def test_cli(gen_images: tuple[str, pathlib.Path, pathlib.Path]) -> None: @@ -115,7 +111,7 @@ def test_cli(gen_images: tuple[str, pathlib.Path, pathlib.Path]) -> None: ], ) - assert result.exit_code == 0 # noqa: S101 + assert result.exit_code == 0 paths = list(filter(lambda p: p.name.endswith(".ome.tif"), inp_dir.iterdir())) base_output = utils.get_output_path(paths) @@ -124,9 +120,5 @@ def test_cli(gen_images: tuple[str, pathlib.Path, pathlib.Path]) -> None: darkfield_out = base_output.replace(suffix, "_darkfield.ome.tif") out_names = [p.name for p in out_dir.iterdir()] - assert ( - flatfield_out in out_names - ), f"{flatfield_out} not in {out_names}" # noqa: S101 - assert ( - darkfield_out in out_names - ), f"{darkfield_out} not in {out_names}" # noqa: S101 + assert flatfield_out in out_names, f"{flatfield_out} not in {out_names}" + assert darkfield_out in out_names, f"{darkfield_out} not in {out_names}" From 577e820aac6c82cb50859dade516d96df38df93b Mon Sep 17 00:00:00 2001 From: Najib Ishaq Date: Fri, 26 Jan 2024 11:00:45 -0500 Subject: [PATCH 4/5] build: b2v automatically commits --- regression/basic-flatfield-estimation-plugin/.bumpversion.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regression/basic-flatfield-estimation-plugin/.bumpversion.cfg b/regression/basic-flatfield-estimation-plugin/.bumpversion.cfg index dd3212609..a0333e5e9 100644 --- a/regression/basic-flatfield-estimation-plugin/.bumpversion.cfg +++ b/regression/basic-flatfield-estimation-plugin/.bumpversion.cfg @@ -1,6 +1,6 @@ [bumpversion] current_version = 2.1.0 -commit = False +commit = True tag = False parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+)(?P\d+))? serialize = From 4af66dfa5ff4ab37f97581501b734f0e7d82d0ba Mon Sep 17 00:00:00 2001 From: Najib Ishaq Date: Fri, 26 Jan 2024 11:00:47 -0500 Subject: [PATCH 5/5] =?UTF-8?q?Bump=20version:=202.1.0=20=E2=86=92=202.1.1?= =?UTF-8?q?-dev0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- regression/basic-flatfield-estimation-plugin/.bumpversion.cfg | 2 +- regression/basic-flatfield-estimation-plugin/README.md | 2 +- regression/basic-flatfield-estimation-plugin/VERSION | 2 +- regression/basic-flatfield-estimation-plugin/plugin.json | 4 ++-- regression/basic-flatfield-estimation-plugin/pyproject.toml | 2 +- .../plugins/regression/basic_flatfield_estimation/__init__.py | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/regression/basic-flatfield-estimation-plugin/.bumpversion.cfg b/regression/basic-flatfield-estimation-plugin/.bumpversion.cfg index a0333e5e9..f80b005ff 100644 --- a/regression/basic-flatfield-estimation-plugin/.bumpversion.cfg +++ b/regression/basic-flatfield-estimation-plugin/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 2.1.0 +current_version = 2.1.1-dev0 commit = True tag = False parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+)(?P\d+))? diff --git a/regression/basic-flatfield-estimation-plugin/README.md b/regression/basic-flatfield-estimation-plugin/README.md index 9bf5eee14..6374097a1 100644 --- a/regression/basic-flatfield-estimation-plugin/README.md +++ b/regression/basic-flatfield-estimation-plugin/README.md @@ -1,4 +1,4 @@ -# BaSiC Flatfield Correction (v2.1.0) +# BaSiC Flatfield Correction (v2.1.1-dev0) This WIPP plugin will take a collection of images and use the BaSiC flatfield correction algorithm to generate a flatfield image, a darkfield image, and a diff --git a/regression/basic-flatfield-estimation-plugin/VERSION b/regression/basic-flatfield-estimation-plugin/VERSION index 7ec1d6db4..b114215cf 100644 --- a/regression/basic-flatfield-estimation-plugin/VERSION +++ b/regression/basic-flatfield-estimation-plugin/VERSION @@ -1 +1 @@ -2.1.0 +2.1.1-dev0 diff --git a/regression/basic-flatfield-estimation-plugin/plugin.json b/regression/basic-flatfield-estimation-plugin/plugin.json index 7d5e5b85f..3077a24f5 100644 --- a/regression/basic-flatfield-estimation-plugin/plugin.json +++ b/regression/basic-flatfield-estimation-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "BaSiC Flatfield Estimation", - "version": "2.1.0", + "version": "2.1.1-dev0", "title": "Flatfield Estimation using BaSiC algorithm.", "description": "Generates images used for flatfield correction using the BaSiC algorithm.", "author": "Nick Schaub (nick.schaub@nih.gov), Najib Ishaq (najib.ishaq@nih.gov)", @@ -8,7 +8,7 @@ "repository": "https://github.com/polusai/polus-plugins", "website": "https://ncats.nih.gov/preclinical/core/informatics", "citation": "Peng et al. \"A BaSiC tool for background and shading correction of optical microscopy images\" Nature Communications (2017)", - "containerId": "polusai/basic-flatfield-estimation-plugin:2.1.0", + "containerId": "polusai/basic-flatfield-estimation-plugin:2.1.1-dev0", "baseCommand": [ "python3", "-m", diff --git a/regression/basic-flatfield-estimation-plugin/pyproject.toml b/regression/basic-flatfield-estimation-plugin/pyproject.toml index d4c5c3970..f8161a8a9 100644 --- a/regression/basic-flatfield-estimation-plugin/pyproject.toml +++ b/regression/basic-flatfield-estimation-plugin/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "polus-plugins-regression-basic-flatfield-estimation" -version = "2.1.0" +version = "2.1.1-dev0" description = "" authors = [ "Nick Schaub ", diff --git a/regression/basic-flatfield-estimation-plugin/src/polus/plugins/regression/basic_flatfield_estimation/__init__.py b/regression/basic-flatfield-estimation-plugin/src/polus/plugins/regression/basic_flatfield_estimation/__init__.py index 318f1034e..3984e04b5 100644 --- a/regression/basic-flatfield-estimation-plugin/src/polus/plugins/regression/basic_flatfield_estimation/__init__.py +++ b/regression/basic-flatfield-estimation-plugin/src/polus/plugins/regression/basic_flatfield_estimation/__init__.py @@ -10,7 +10,7 @@ __all__ = ["estimate", "__version__"] -__version__ = "2.1.0" +__version__ = "2.1.1-dev0" # Set the basicpy logger to warning logging.getLogger("basicpy.basicpy").setLevel(logging.WARNING)