Skip to content

Make flasgger dep optional (#26)#32

Closed
AdamWill wants to merge 1 commit into
psf:mainfrom
AdamWill:flasgger-optional
Closed

Make flasgger dep optional (#26)#32
AdamWill wants to merge 1 commit into
psf:mainfrom
AdamWill:flasgger-optional

Conversation

@AdamWill

Copy link
Copy Markdown

As discussed in the ticket, the flasgger dep is a pretty heavy one which is not needed when using httpbin as a library. It's only really needed to produce the fancy homepage and API docs for httpbin.org.

This makes the dependency optional, and falls back to the old static HTML page for / if flasgger is not available. The flasgger dependency is moved from the main set of dependencies to the 'mainapp' extras (to ensure we do get the shiny new homepage when we want it).

@AdamWill AdamWill mentioned this pull request Oct 18, 2023
@AdamWill

Copy link
Copy Markdown
Author

I tested this by disabling the flasgger dep in pyproject.toml and building a container locally; it works as expected (falls back to the old static page as the front page).

@AdamWill

Copy link
Copy Markdown
Author

Rebased.

@AdamWill

Copy link
Copy Markdown
Author

ping? it would be nice not to have to carry this patch downstream any more...

As discussed in the ticket, the flasgger dep is a pretty heavy
one which is not needed when using httpbin as a library. It's
only really needed to produce the fancy homepage and API docs
for httpbin.org.

This makes the dependency optional, and falls back to the old
static HTML page for / if flasgger is not available. The flasgger
dependency is moved from the main set of dependencies to the
'mainapp' extras (to ensure we *do* get the shiny new homepage
when we want it).

Signed-off-by: Adam Williamson <awilliam@redhat.com>
@AdamWill AdamWill force-pushed the flasgger-optional branch from 0cd31e5 to 87ad6da Compare March 22, 2024 16:53
@ml31415

ml31415 commented Apr 10, 2024

Copy link
Copy Markdown

LGTM!

@kevin1024

Copy link
Copy Markdown

Thanks for this, @AdamWill — and apologies for the long delay. I've taken this approach forward in #65: your patch applied cleanly to current main, plus the missing-flasgger warning from #44 and a regression test for the static-page fallback. It keeps flasgger in the mainapp extra so the published Docker image keeps its homepage. You're credited as co-author there.

Closing in favor of #65.

@kevin1024 kevin1024 closed this Jun 16, 2026
pull Bot pushed a commit to sysfce2/httpbin that referenced this pull request Jun 16, 2026
flasgger is only needed to render the Swagger UI homepage and /spec.json on
httpbin.org; it's dead weight (and an extra dependency tree, including an
indirect Rust build dep) for the common case of using httpbin as a test
library. It also blocks packaging httpbin for distros that can't ship
flasgger's bundled, pre-minified JS (e.g. Fedora).

Move flasgger from the hard dependencies to the existing "mainapp" extra
(so the published Docker image, built with --extra mainapp, keeps the fancy
homepage) and guard all the Swagger setup behind its availability. When
flasgger is absent, the static legacy landing page is served at / and a
warning is logged.

Adds a subprocess-based regression test that blocks flasgger and asserts /
falls back to the static page with a 200 instead of erroring.

Closes psf#26. Supersedes psf#32 and psf#44.

Co-Authored-By: Adam Williamson <awilliam@redhat.com>
Co-Authored-By: Michał Górny <mgorny@gentoo.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants