fix: declare the dependencies the shipped Sphinx extension imports - #39
Open
blaipr wants to merge 1 commit into
Open
fix: declare the dependencies the shipped Sphinx extension imports#39blaipr wants to merge 1 commit into
blaipr wants to merge 1 commit into
Conversation
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
cigamit
previously approved these changes
Sep 13, 2026
`ascenderkit/cli/sphinx.py` ships inside the package and imports `docutils` and
`sphinxcontrib.autoprogram`, neither of which is a declared dependency or an
extra. Installing the package and importing that module fails:
File ".../ascenderkit/cli/sphinx.py", line 3, in <module>
from docutils.nodes import Text, paragraph
ModuleNotFoundError: No module named 'docutils'
The requirement was recorded in prose instead. `ascenderkit/cli/docs/README.md`
told you to `pip install sphinx sphinxcontrib-autoprogram` by hand, which works
until the list changes and the sentence does not.
Adds a `docs` extra with `sphinx`, `sphinxcontrib-autoprogram` and `docutils`,
and points the README at `pip install -e ".[docs]"`. `docutils` is listed
explicitly even though sphinx pulls it in, for the same reason `urllib3` is
listed among the dependencies: the code imports it by name, so it should not
depend on arriving as somebody else's transitive.
Checked both directions: `import ascenderkit.cli.sphinx` raises
`ModuleNotFoundError` from a clean install of the wheel, and after
`pip install ".[docs]"` it gets past every import and reaches its own runtime
requirement, "Please specify a valid CONTROLLER_HOST for a real (running)
installation", which is the extension asking for a live server rather than a
missing module.
The extra goes in `[project.optional-dependencies]` rather than setup.py's
`extras_require`, since ctrliq#37 moved the others across and landed first.
blaipr
force-pushed
the
fix/declare-docs-extra
branch
from
September 13, 2026 09:03
9a1c416 to
ffef844
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ascenderkit/cli/sphinx.pyships inside the package and importsdocutilsandsphinxcontrib.autoprogram, neither of which is a declared dependency or an extra. Installing the package and importing that module fails:The requirement was recorded in prose instead.
ascenderkit/cli/docs/README.mdtold you topip install sphinx sphinxcontrib-autoprogramby hand, which works until the list changes and the sentence does not.Adds a
docsextra withsphinx,sphinxcontrib-autoprogramanddocutils, and points the README atpip install -e ".[docs]".docutilsis listed explicitly even though sphinx pulls it in, for the same reasonurllib3is listed ininstall_requires: the code imports it by name, so it should not depend on arriving as somebody else's transitive.Checked both directions:
import ascenderkit.cli.sphinxraisesModuleNotFoundErrorfrom a clean install of the wheel, and afterpip install ".[docs]"it gets past every import and reaches its own runtime requirement, "Please specify a valid CONTROLLER_HOST for a real (running) installation", which is the extension asking for a live server rather than a missing module.Note for whoever merges: #37 moves
extras_requireinto[project.optional- dependencies]inpyproject.toml, so whichever lands second needs this extra moved across with it.