diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index d720fcd75..b9d593afa 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -48,13 +48,41 @@ jobs: - 'infrastructure/blueprints/prevent_privilege_escalation.py' - 'infrastructure/blueprints/test_runner_boundary.py' - 'infrastructure/test-alt/common/**' + info: + name: Output useful information + runs-on: ubuntu-latest + outputs: + is-actor-bot: ${{ steps.gh-context.outputs.is-actor-bot }} # if the actor (user) is a bot + is-fork: ${{ steps.gh-context.outputs.is-fork }} # if the action is running in or from (PR) a fork + repo-head: ${{ steps.gh-context.outputs.repo-head }} # repo where change occurred + repo-origin: ${{ steps.gh-context.outputs.repo-origin }} # origin of codebase + steps: + - name: Output GitHub Context + id: gh-context + run: | + export _REPO_ORIGIN="onicagroup/runway"; + echo "repo-origin=${_REPO_ORIGIN}" >> "${GITHUB_OUTPUT}"; + export _REPO_HEAD="${{ github.event.pull_request.head.repo.full_name || github.repository }}"; + echo "repo-head=${_REPO_HEAD}" >> "${GITHUB_OUTPUT}"; + if [[ "${_REPO_HEAD}" == "${_REPO_ORIGIN}" ]]; then + echo "is-fork=false" >> "${GITHUB_OUTPUT}"; + else + echo "is-fork=true" >> "${GITHUB_OUTPUT}"; + fi; + if [[ ${{ github.actor }} == *"[bot]" ]]; then + echo "is-actor-bot=true" >> "${GITHUB_OUTPUT}"; + else + echo "is-actor-bot=false" >> "${GITHUB_OUTPUT}"; + fi; deploy-test-infrastructure: name: Deploy Test Infrastructure environment: test concurrency: test-infrastructure - needs: changes + needs: + - changes + - info if: | - github.repository == 'onicagroup/runway' && + needs.info.outputs.is-fork == 'false' && (needs.changes.outputs.infra-test == 'true' || needs.changes.outputs.infra-test-alt == 'true') runs-on: ubuntu-latest steps: @@ -73,7 +101,7 @@ jobs: - name: Ensure Cache Is Healthy if: runner.os != 'Windows' && steps.cache.outputs.cache-hit == 'true' run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv - - run: poetry install --extras docs -vv + - run: poetry install -vv - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 with: @@ -115,7 +143,7 @@ jobs: - name: Ensure Cache Is Healthy if: runner.os != 'Windows' && steps.cache.outputs.cache-hit == 'true' run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv - - run: poetry install --extras docs -vv + - run: poetry install -vv - name: Install Node Dependencies run: make npm-ci - name: Run Linters @@ -141,16 +169,17 @@ jobs: - name: Ensure Cache Is Healthy if: runner.os != 'Windows' && steps.cache.outputs.cache-hit == 'true' run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv - - run: poetry install --extras docs -vv + - run: poetry install -vv - uses: pre-commit/action@v3.0.1 test-functional: name: Functional Tests - needs: deploy-test-infrastructure - # will fail if run from forks + needs: + - deploy-test-infrastructure + - info if: | always() && - github.repository == 'onicagroup/runway' && - github.actor != 'dependabot[bot]' && + needs.info.outputs.is-fork == 'false' && + needs.info.outputs.is-actor-bot == 'false' && (needs.deploy-test-infrastructure.result == 'success' || needs.deploy-test-infrastructure.result == 'skipped') runs-on: ubuntu-latest steps: @@ -172,7 +201,7 @@ jobs: - name: Ensure Cache Is Healthy if: runner.os != 'Windows' && steps.cache.outputs.cache-hit == 'true' run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv - - run: poetry install --extras docs -vv + - run: poetry install -vv - name: Install Ubuntu Dependencies run: | sudo apt update -y @@ -218,7 +247,7 @@ jobs: - name: Ensure Cache Is Healthy if: steps.cache.outputs.cache-hit == 'true' run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv - - run: poetry install --extras docs -vv + - run: poetry install -vv - name: Install Node Dependencies run: make npm-install - name: Configure Pagefile # avoid MemoryError during tests @@ -266,7 +295,7 @@ jobs: - name: Ensure Cache Is Healthy if: runner.os != 'Windows' && steps.cache.outputs.cache-hit == 'true' run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv - - run: poetry install --extras docs -vv + - run: poetry install -vv - name: Run Build run: make build - name: Upload Distribution Artifact diff --git a/.github/workflows/on-push-pyinstaller.yml b/.github/workflows/on-push-pyinstaller.yml index b4737aeea..eb6f50d73 100644 --- a/.github/workflows/on-push-pyinstaller.yml +++ b/.github/workflows/on-push-pyinstaller.yml @@ -60,7 +60,7 @@ jobs: - name: Ensure Cache Is Healthy if: runner.os != 'Windows' && steps.cache.outputs.cache-hit == 'true' run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv - - run: poetry install --extras docs -vv + - run: poetry install -vv - name: Run Build run: make build-pyinstaller-file - name: Upload Artifacts @@ -110,7 +110,7 @@ jobs: - name: Ensure Cache Is Healthy if: runner.os != 'Windows' && steps.cache.outputs.cache-hit == 'true' run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv - - run: poetry install --extras docs -vv + - run: poetry install -vv - name: Run Build run: make build-pyinstaller-folder - name: Upload Artifacts @@ -171,7 +171,7 @@ jobs: - name: Ensure Cache Is Healthy if: runner.os != 'Windows' && steps.cache.outputs.cache-hit == 'true' run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv - - run: poetry install --extras docs -vv + - run: poetry install -vv - name: Download Artifacts (macOS) if: steps.check_distance.outcome == 'success' uses: actions/download-artifact@v4 diff --git a/.github/workflows/publish-on-release.yml b/.github/workflows/publish-on-release.yml index 66780ad6f..b259dfeb4 100644 --- a/.github/workflows/publish-on-release.yml +++ b/.github/workflows/publish-on-release.yml @@ -54,7 +54,7 @@ jobs: - name: Ensure Cache Is Healthy if: runner.os != 'Windows' && steps.cache.outputs.cache-hit == 'true' run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv - - run: poetry install --extras docs -vv + - run: poetry install -vv - name: Run Build run: make build-pyinstaller-file - name: Upload Artifacts @@ -105,7 +105,7 @@ jobs: - name: Ensure Cache Is Healthy if: runner.os != 'Windows' && steps.cache.outputs.cache-hit == 'true' run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv - - run: poetry install --extras docs -vv + - run: poetry install -vv - name: Run Build run: make build-pyinstaller-folder - name: Upload Artifacts @@ -158,7 +158,7 @@ jobs: - name: Ensure Cache Is Healthy if: runner.os != 'Windows' && steps.cache.outputs.cache-hit == 'true' run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv - - run: poetry install --extras docs -vv + - run: poetry install -vv - name: Download Artifacts (macOS) uses: actions/download-artifact@v4 with: @@ -246,7 +246,7 @@ jobs: - name: Ensure Cache Is Healthy if: runner.os != 'Windows' && steps.cache.outputs.cache-hit == 'true' run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv - - run: poetry install --extras docs -vv + - run: poetry install -vv - name: Run Build run: make build - name: Upload Distribution Artifact @@ -282,7 +282,7 @@ jobs: - name: Ensure Cache Is Healthy if: steps.cache.outputs.cache-hit == 'true' run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv - - run: poetry install --extras docs -vv + - run: poetry install -vv - run: make version - name: Publish Distribution 📦 to PyPI env: @@ -349,7 +349,7 @@ jobs: - name: Ensure Cache Is Healthy if: runner.os != 'Windows' && steps.cache.outputs.cache-hit == 'true' run: poetry run pip --version >/dev/null 2>&1 || rm -rf .venv - - run: poetry install --extras docs -vv + - run: poetry install -vv - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@v4 with: diff --git a/.github/workflows/spell-check.yml b/.github/workflows/spell-check.yml index bbd61513c..4bfbf9370 100644 --- a/.github/workflows/spell-check.yml +++ b/.github/workflows/spell-check.yml @@ -3,13 +3,15 @@ name: Spell Check # There is an official action published by cSpell. # v1.1.1 was tested but did not function as desired so we are using the CLI. -on: push - +on: + pull_request: # any pull request + push: + branches: + - master env: NODE_VERSION: '18' - jobs: spell-check: runs-on: ubuntu-latest diff --git a/.readthedocs.yml b/.readthedocs.yml index 0bf0d15c1..bf2eee012 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -7,9 +7,20 @@ version: 2 # Set the version of Python and other tools you might need build: + jobs: + post_create_environment: + # Install poetry + # https://python-poetry.org/docs/#installing-manually + - pip install poetry + post_install: + # Install dependencies with 'docs' dependency group + # https://python-poetry.org/docs/managing-dependencies/#dependency-groups + # VIRTUAL_ENV needs to be set manually for now. + # See https://github.com/readthedocs/readthedocs.org/pull/11152/ + - VIRTUAL_ENV=$READTHEDOCS_VIRTUALENV_PATH poetry install --with docs,types os: ubuntu-22.04 tools: - python: '3.9' + python: '3.12' # Optionally build your docs in additional formats such as PDF and ePub formats: all diff --git a/.vscode/settings.json b/.vscode/settings.json index 17b28d451..0fb3e52a8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -14,6 +14,8 @@ "restructuredtext" ], "cSpell.enabled": true, + "esbonio.sphinx.buildDir": "${workspaceRoot}/docs/build", + "esbonio.sphinx.confDir": "${workspaceFolder}/docs/source", "explorerExclude.backup": null, "files.exclude": { "**/*.egg-info": true, diff --git a/Makefile b/Makefile index 51a406db8..0b977b583 100644 --- a/Makefile +++ b/Makefile @@ -124,9 +124,7 @@ setup: setup-poetry setup-pre-commit setup-npm ## setup development environment setup-npm: npm-ci ## install node dependencies with npm setup-poetry: ## setup python virtual environment - @poetry install \ - --extras docs \ - --sync + @poetry install --sync setup-pre-commit: ## install pre-commit git hooks @poetry run pre-commit install diff --git a/poetry.lock b/poetry.lock index 5a4c1a4fd..3ac27cdfc 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,10 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. [[package]] name = "alabaster" version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" -optional = true +optional = false python-versions = ">=3.6" files = [ {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, @@ -94,7 +94,7 @@ dev = ["black (==23.3.0)", "boto3 (>=1.23,<2)", "boto3-stubs[appconfig,serverles name = "babel" version = "2.12.1" description = "Internationalization utilities" -optional = true +optional = false python-versions = ">=3.7" files = [ {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, @@ -1387,7 +1387,7 @@ test = ["black", "codecov", "coloredlogs", "coverage", "flake8", "mypy", "pytest name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" -optional = true +optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, @@ -1546,7 +1546,7 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- name = "jsx-lexer" version = "1.0.0" description = "A JSX lexer for Pygments" -optional = true +optional = false python-versions = "*" files = [ {file = "jsx-lexer-1.0.0.tar.gz", hash = "sha256:b5f5270cad47b065417fd7bdb780199d5166bd4a88a2a0fd7412e90e7a59b5cc"}, @@ -3018,7 +3018,7 @@ files = [ name = "sphinx" version = "4.5.0" description = "Python documentation generator" -optional = true +optional = false python-versions = ">=3.6" files = [ {file = "Sphinx-4.5.0-py3-none-any.whl", hash = "sha256:ebf612653238bcc8f4359627a9b7ce44ede6fdd75d9d30f68255c7383d3a6226"}, @@ -3053,7 +3053,7 @@ test = ["cython", "html5lib", "pytest", "pytest-cov", "typed-ast"] name = "sphinx-github-changelog" version = "1.3.0" description = "Build a sphinx changelog from GitHub Releases" -optional = true +optional = false python-versions = ">=3.8,<4.0" files = [ {file = "sphinx_github_changelog-1.3.0-py3-none-any.whl", hash = "sha256:eb5424d590ae7866e77b8db7eecf283678cba76b74d90b17bc4f3872976407eb"}, @@ -3069,7 +3069,7 @@ Sphinx = "*" name = "sphinx-rtd-theme" version = "1.3.0" description = "Read the Docs theme for Sphinx" -optional = true +optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ {file = "sphinx_rtd_theme-1.3.0-py2.py3-none-any.whl", hash = "sha256:46ddef89cc2416a81ecfbeaceab1881948c014b1b6e4450b815311a89fb977b0"}, @@ -3088,7 +3088,7 @@ dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] name = "sphinx-tabs" version = "3.4.5" description = "Tabbed views for Sphinx" -optional = true +optional = false python-versions = "~=3.7" files = [ {file = "sphinx-tabs-3.4.5.tar.gz", hash = "sha256:ba9d0c1e3e37aaadd4b5678449eb08176770e0fc227e769b6ce747df3ceea531"}, @@ -3108,7 +3108,7 @@ testing = ["bs4", "coverage", "pygments", "pytest (>=7.1,<8)", "pytest-cov", "py name = "sphinxcontrib-apidoc" version = "0.3.0" description = "A Sphinx extension for running 'sphinx-apidoc' on each build" -optional = true +optional = false python-versions = "*" files = [ {file = "sphinxcontrib-apidoc-0.3.0.tar.gz", hash = "sha256:729bf592cf7b7dd57c4c05794f732dc026127275d785c2a5494521fdde773fb9"}, @@ -3123,7 +3123,7 @@ Sphinx = ">=1.6.0" name = "sphinxcontrib-applehelp" version = "1.0.4" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" -optional = true +optional = false python-versions = ">=3.8" files = [ {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, @@ -3138,7 +3138,7 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." -optional = true +optional = false python-versions = ">=3.5" files = [ {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, @@ -3153,7 +3153,7 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.0.1" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -optional = true +optional = false python-versions = ">=3.8" files = [ {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, @@ -3168,7 +3168,7 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jquery" version = "4.1" description = "Extension to include jQuery on newer Sphinx releases" -optional = true +optional = false python-versions = ">=2.7" files = [ {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, @@ -3182,7 +3182,7 @@ Sphinx = ">=1.8" name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" -optional = true +optional = false python-versions = ">=3.5" files = [ {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, @@ -3196,7 +3196,7 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-programoutput" version = "0.17" description = "Sphinx extension to include program output" -optional = true +optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" files = [ {file = "sphinxcontrib-programoutput-0.17.tar.gz", hash = "sha256:300ee9b8caee8355d25cc74b4d1c7efd12e608d2ad165e3141d31e6fbc152b7f"}, @@ -3210,7 +3210,7 @@ Sphinx = ">=1.7.0" name = "sphinxcontrib-qthelp" version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." -optional = true +optional = false python-versions = ">=3.5" files = [ {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, @@ -3225,7 +3225,7 @@ test = ["pytest"] name = "sphinxcontrib-serializinghtml" version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." -optional = true +optional = false python-versions = ">=3.5" files = [ {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, @@ -3629,10 +3629,7 @@ files = [ docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] 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] -docs = ["dunamai", "jsx-lexer", "sphinx", "sphinx-github-changelog", "sphinx-rtd-theme", "sphinx-tabs", "sphinxcontrib-apidoc", "sphinxcontrib-programoutput"] - [metadata] lock-version = "2.0" python-versions = ">=3.9, <3.13" -content-hash = "fc4e8571665297c53c83669cb3da0c1151a5250f70153c03290511b431c5923d" +content-hash = "0c57981b4583118568443d4438c10a1bac20399d10faac78989c209b16fc904f" diff --git a/pyproject.toml b/pyproject.toml index 883490e87..a241026b0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,11 +32,6 @@ packages = [ [tool.poetry.dependencies] python = ">=3.9, <3.13" -# dependencies needed for building docs are included here. -# they are marked as "optional" and are installed as the extra "docs". -# this is a workaround for ReadTheDocs to work with poetry until fill support -# is added or poetry dependency groups are added. - "backports.cached_property" = { version = "*", python = "<3.8" } awacs = "*" boto3 = "^1.16" @@ -45,13 +40,11 @@ cfn_flip = "^1.2" # only used in runway._cli.commands._gen_sample.utils click = "^8.0" coloredlogs = "*, !=15.0.1" docker = ">=3.0.0" # used in runway.cfngin.hooks -dunamai = { version = "^1.5", optional = true } # docs formic2 = "*" # only used in runway.cfngin.hooks.aws_lambda gitpython = "*" igittigitt = ">=2.0.5" importlib-metadata = { version = "*", python = "<3.8" } jinja2 = ">=2.7" # used in runway.cfngin.blueprints.raw -jsx-lexer = { version = "^1.0", optional = true } # docs packaging = "*" # component of setuptools needed for version compare pyOpenSSL = "*" # For embedded hook & associated script usage pydantic = "^1.4" @@ -60,12 +53,6 @@ python-hcl2 = ">=3.0.0" pyyaml = ">5.4" requests = "*" send2trash = "*" -sphinx = { version = "^4.3", optional = true } # docs -sphinx-github-changelog = { version = "^1.1", optional = true } # docs -sphinx-rtd-theme = { version = "^1.0", optional = true } # docs -sphinx-tabs = { version = "^3.2", optional = true } # docs -sphinxcontrib-apidoc = { version = "^0.3", optional = true } # docs -sphinxcontrib-programoutput = { version = "^0.17", optional = true } # docs tomli = ">=1.2.2" troposphere = ">=2.4, <5" typing_extensions = "*" # only really needed for < 3.8 but can still be used in >= 3.8 @@ -77,7 +64,7 @@ testfixtures = "^7.0.3" wheel = "^0.42.0" pyinstaller = "^6.2.0" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] black = ">=22.1" coverage = { version = ">=6.3", extras = ["toml"] } doc8 = ">=0.10" # for linting with vscode rst extension @@ -91,7 +78,6 @@ flake8-use-fstring = ">=1.3" # flake8 plugin isort = ">=5.12" mock = ">=4.0" moto = { version = ">=3.0", extras = ["ec2", "ecs", "iam", "s3", "ssm"] } -mypy-boto3 = "^1.16" # importable boto3 type annotations pep8-naming = ">=0.12.1" # flake8 plugin pipenv = "^2022.1.8" # only used in tests pre-commit = ">=2.14" @@ -108,7 +94,20 @@ semver = "^2.13" # only used in .github/scripts/urlshortener testfixtures = "^7.0.3" # TODO remove use of this dependency - was inherited tomli-w = ">=1.0" -[tool.poetry.dev-dependencies.boto3-stubs] +[tool.poetry.group.docs.dependencies] +dunamai = "^1.5" +jsx-lexer = "^1.0" +sphinx = "^4.3" +sphinx-github-changelog = "^1.1" +sphinx-rtd-theme = "^1.0" +sphinx-tabs = "^3.2" +sphinxcontrib-apidoc = "^0.3" +sphinxcontrib-programoutput = "^0.17" + +[tool.poetry.group.types.dependencies] +mypy-boto3 = "^1.16" # importable boto3 type annotations + +[tool.poetry.group.types.dependencies.boto3-stubs] extras = [ "acm", "awslambda", @@ -129,18 +128,6 @@ extras = [ ] version = "^1.16" -[tool.poetry.extras] -docs = [ - "dunamai", - "jsx-lexer", - "sphinx", - "sphinx-github-changelog", - "sphinx-rtd-theme", - "sphinx-tabs", - "sphinxcontrib-apidoc", - "sphinxcontrib-programoutput", -] - [tool.poetry.scripts] runway = "runway._cli.main:cli"