It is part of Sigil's standard python library. Back when plugin support was first added, it was clear that plugins would need xhtml/html5 parsing support. So we forked the original bs4 that was still python 2 only, and created our own version that would support both python2 and python3 and we added in routines to support xhtml parsing and pretty printing among other things.
It lives inside the Sigil tree here:
https://github.com/Sigil-Ebook/Sigil...thon/sigil_bs4
And it is available for every plugin to use by just importing sigil_bs4 just like the remainder of the built-in tools and modules we make available for plugins in every version of Sigil:
pip3 install six
pip3 install html5lib
pip3 install lxml
pip3 install Pillow
pip3 install regex
pip3 install css-parser
pip3 install cssselect
pip3 install chardet
pip3 install certifi
pip3 install urllib3
pip3 install dulwich
There is also support for hunspll spellchecking for plugins, a version of our fast forked gumbo parser, quickparser, opf parser, etc. And of course all of the Qt Gui elements from PySide6 (including a full QtWebEngine).
All of these should be available to every Sigil plugin, but some silly linux distributions call them "extras" and do not include them but they have no concept about what Sigil really is and how plugin support is done. We really wish they would stop doing that (breaking our standard toolset for installed plugins).