diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 49612498..f580f616 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -22,7 +22,7 @@ jobs: bash scripts/install-poetry.sh poetry install - name: run tests - run: python -m pytest --cov=queenbee tests/ + run: poetry run pytest --cov=queenbee tests/ - name: run test coverage run: | echo "Coveralls is no longer supported" @@ -51,7 +51,7 @@ jobs: - name: install semantic-release run: npm install @semantic-release/exec - name: generate queenbee schemas - run: python scripts/gen_schemas.py + run: poetry run python3 scripts/gen_schemas.py - name: run semantic release id: new_release run: | @@ -82,9 +82,9 @@ jobs: poetry install --extras cli - name: build docs run: | - python gen_schemas.py --version ${{needs.deploy.outputs.tag}} - sphinx-apidoc -f -e -d 4 -o ./docs/modules ./queenbee - sphinx-build -b html ./docs ./docs/_build + poetry run python3 scripts/gen_schemas.py --version ${{needs.deploy.outputs.tag}} + poetry run sphinx-apidoc -f -e -d 4 -o ./docs/modules ./queenbee + poetry run sphinx-build -b html ./docs ./docs/_build - name: deploy to github pages uses: peaceiris/actions-gh-pages@v3 with: diff --git a/.releaserc.json b/.releaserc.json index 558f049b..e40f6437 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -24,7 +24,7 @@ [ "@semantic-release/exec", { - "prepareCmd": "python scripts/gen_schemas.py --version ${nextRelease.version}", + "prepareCmd": "poetry run python3 scripts/gen_schemas.py --version ${nextRelease.version}", "publishCmd": "bash scripts/deploy.sh" } ] diff --git a/poetry.lock b/poetry.lock index a42e55f6..a6fb51a0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -175,6 +175,23 @@ files = [ colorama = {version = "*", markers = "platform_system == \"Windows\""} importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} +[[package]] +name = "click-plugins" +version = "1.1.1" +description = "An extension module for click to enable registering CLI commands via setuptools entry-points." +optional = false +python-versions = "*" +files = [ + {file = "click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b"}, + {file = "click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8"}, +] + +[package.dependencies] +click = ">=4.0" + +[package.extras] +dev = ["coveralls", "pytest (>=3.6)", "pytest-cov", "wheel"] + [[package]] name = "colorama" version = "0.4.6" @@ -720,7 +737,6 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, - {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -728,16 +744,8 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, - {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, - {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, - {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, - {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, - {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, - {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -754,7 +762,6 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, - {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -762,7 +769,6 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, - {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -1066,9 +1072,9 @@ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [extras] -cli = [] +cli = ["click"] [metadata] lock-version = "2.0" python-versions = "^3.7" -content-hash = "c9f9aa247f787f130383acb2fa913d8f488c61a81bf5d40cbb087effab951f9a" +content-hash = "2e5c126e48e8003821e8b06be616b4737231f64c3ba642a1c71d078534e574e8" diff --git a/pyproject.toml b/pyproject.toml index adec4eeb..e61cfba2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,12 +21,13 @@ packages = [ [tool.poetry.scripts] queenbee = 'queenbee.cli:main' - [tool.poetry.dependencies] python = "^3.7" pydantic = "<2.0" pyyaml = ">=6.0" jsonschema = ">=4.17.3" +click = "^8.1.7" +click-plugins = "^1.1.1" [tool.poetry.extras] cli = ["click", "click_plugins"] diff --git a/scripts/gen_schemas.py b/scripts/gen_schemas.py index 23495c5a..ee4610e3 100644 --- a/scripts/gen_schemas.py +++ b/scripts/gen_schemas.py @@ -1,27 +1,27 @@ """A module to generate OpenAPI and JSONSchemas.""" +import argparse import json import os -import argparse from pkg_resources import get_distribution - from pydantic_openapi_helper.core import get_openapi from pydantic_openapi_helper.inheritance import class_mapper -from queenbee.repository import RepositoryIndex from queenbee.job import Job, JobStatus, RunStatus -from queenbee.recipe import Recipe, RecipeInterface from queenbee.plugin import Plugin +from queenbee.recipe import Recipe, RecipeInterface +from queenbee.repository import RepositoryIndex -folder = os.path.join(os.path.dirname(__file__), 'docs/_static/schemas') +folder = os.path.join(os.path.dirname(__file__), '../docs/_static/schemas') if not os.path.isdir(folder): os.mkdir(folder) parser = argparse.ArgumentParser(description='Generate OpenAPI JSON schemas') -parser.add_argument('--version', help='Set the version of the new OpenAPI Schema') +parser.add_argument( + '--version', help='Set the version of the new OpenAPI Schema') args = parser.parse_args() @@ -52,7 +52,8 @@ with open(os.path.join(folder, 'job-openapi.json'), 'w') as out_file: json.dump( get_openapi( - base_object=[Job, JobStatus, RunStatus], title='Queenbee Job Schema', + base_object=[Job, JobStatus, + RunStatus], title='Queenbee Job Schema', description='Schema documentation for Queenbee Jobs', version=VERSION ), @@ -95,10 +96,13 @@ with open(os.path.join(folder, 'job-schemas-combined.json'), 'w') as out_file: + from typing import List, Union + from pydantic import BaseModel + from queenbee.io.inputs.step import StepInputs from queenbee.io.outputs.step import StepOutputs - from typing import List, Union + class JobSchemas(BaseModel): job: Job job_status: JobStatus @@ -132,7 +136,8 @@ class JobSchemas(BaseModel): "url": "./queenbee_inheritance.json" } -models = [Recipe, Plugin, Job, RepositoryIndex, RecipeInterface, JobStatus, RunStatus] +models = [Recipe, Plugin, Job, RepositoryIndex, + RecipeInterface, JobStatus, RunStatus] openapi = get_openapi( models, title='Queenbee Schema',