{"id":13491996,"url":"https://github.com/ryan-roemer/sphinx-bootstrap-theme","last_synced_at":"2026-07-10T14:26:44.314Z","repository":{"id":1022220,"uuid":"2933159","full_name":"ryan-roemer/sphinx-bootstrap-theme","owner":"ryan-roemer","description":"Sphinx Bootstrap Theme","archived":false,"fork":false,"pushed_at":"2022-02-28T16:14:56.000Z","size":4693,"stargazers_count":586,"open_issues_count":57,"forks_count":202,"subscribers_count":23,"default_branch":"master","last_synced_at":"2026-06-11T06:05:23.417Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://ryan-roemer.github.io/sphinx-bootstrap-theme/README.html","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ryan-roemer.png","metadata":{"files":{"readme":"README.rst","changelog":"HISTORY.rst","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-12-07T14:53:00.000Z","updated_at":"2026-05-31T08:59:30.000Z","dependencies_parsed_at":"2022-08-03T08:15:47.784Z","dependency_job_id":null,"html_url":"https://github.com/ryan-roemer/sphinx-bootstrap-theme","commit_stats":null,"previous_names":[],"tags_count":60,"template":false,"template_full_name":null,"purl":"pkg:github/ryan-roemer/sphinx-bootstrap-theme","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryan-roemer%2Fsphinx-bootstrap-theme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryan-roemer%2Fsphinx-bootstrap-theme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryan-roemer%2Fsphinx-bootstrap-theme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryan-roemer%2Fsphinx-bootstrap-theme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ryan-roemer","download_url":"https://codeload.github.com/ryan-roemer/sphinx-bootstrap-theme/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryan-roemer%2Fsphinx-bootstrap-theme/sbom","scorecard":{"id":791652,"data":{"date":"2025-08-11","repo":{"name":"github.com/ryan-roemer/sphinx-bootstrap-theme","commit":"ebf24f849c5ee0c5219009cdb1637b052e2588d7"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.8,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":4,"reason":"Found 14/30 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/github_pages.yaml:1","Warn: no topLevel permission defined: .github/workflows/package.yaml:1","Warn: no topLevel permission defined: .github/workflows/tests.yaml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/github_pages.yaml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/ryan-roemer/sphinx-bootstrap-theme/github_pages.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/github_pages.yaml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/ryan-roemer/sphinx-bootstrap-theme/github_pages.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/package.yaml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/ryan-roemer/sphinx-bootstrap-theme/package.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/package.yaml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/ryan-roemer/sphinx-bootstrap-theme/package.yaml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/package.yaml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/ryan-roemer/sphinx-bootstrap-theme/package.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yaml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/ryan-roemer/sphinx-bootstrap-theme/tests.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yaml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/ryan-roemer/sphinx-bootstrap-theme/tests.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yaml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/ryan-roemer/sphinx-bootstrap-theme/tests.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yaml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/ryan-roemer/sphinx-bootstrap-theme/tests.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yaml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/ryan-roemer/sphinx-bootstrap-theme/tests.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yaml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/ryan-roemer/sphinx-bootstrap-theme/tests.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yaml:53: update your workflow using https://app.stepsecurity.io/secureworkflow/ryan-roemer/sphinx-bootstrap-theme/tests.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yaml:55: update your workflow using https://app.stepsecurity.io/secureworkflow/ryan-roemer/sphinx-bootstrap-theme/tests.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yaml:70: update your workflow using https://app.stepsecurity.io/secureworkflow/ryan-roemer/sphinx-bootstrap-theme/tests.yaml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tests.yaml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/ryan-roemer/sphinx-bootstrap-theme/tests.yaml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/github_pages.yaml:19","Warn: pipCommand not pinned by hash: .github/workflows/package.yaml:20","Warn: pipCommand not pinned by hash: .github/workflows/tests.yaml:47","Warn: pipCommand not pinned by hash: .github/workflows/tests.yaml:60","Warn: pipCommand not pinned by hash: .github/workflows/tests.yaml:77","Warn: pipCommand not pinned by hash: .github/workflows/tests.yaml:21","Warn: pipCommand not pinned by hash: .github/workflows/tests.yaml:34","Info:   0 out of  14 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   7 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: MIT License: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 15 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T07:43:26.219Z","repository_id":1022220,"created_at":"2025-08-23T07:43:26.219Z","updated_at":"2025-08-23T07:43:26.219Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34779665,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T19:01:02.222Z","updated_at":"2026-07-10T14:26:44.293Z","avatar_url":"https://github.com/ryan-roemer.png","language":"HTML","funding_links":[],"categories":["HTML"],"sub_categories":[],"readme":"========================\n Sphinx Bootstrap Theme\n========================\n\nThis Sphinx_ theme_ integrates the Bootstrap_ CSS / JavaScript\nframework with various layout options, hierarchical menu navigation,\nand mobile-friendly responsive design. It is configurable, extensible,\nand can use any number of different Bootswatch_ CSS themes.\n\n.. _Bootstrap: http://getbootstrap.com/\n.. _Sphinx: http://sphinx-doc.org/\n.. _theme: http://sphinx-doc.org/theming.html\n.. _PyPI: http://pypi.python.org/pypi/sphinx-bootstrap-theme/\n.. _GitHub repository: https://github.com/ryan-roemer/sphinx-bootstrap-theme\n\n\nIntroduction and Demos\n======================\nThe theme is introduced and discussed in the following posts:\n\n* 12/09/2011 - `Twitter Bootstrap Theme for Sphinx \u003chttp://loose-bits.com/2011/12/09/sphinx-twitter-bootstrap-theme.html\u003e`_\n* 11/19/2012 - `Sphinx Bootstrap Theme Updates - Mobile, Dropdowns, and More \u003chttp://loose-bits.com/2012/11/19/sphinx-bootstrap-theme-updates.html\u003e`_\n* 2/12/2013 - `Sphinx Bootstrap Theme 0.1.6 - Bootstrap and Other Updates \u003chttp://loose-bits.com/2013/02/12/sphinx-bootstrap-theme-updates.html\u003e`_\n* 4/10/2013 - `Sphinx Bootstrap Theme 0.2.0 - Now with Bootswatch! \u003chttp://loose-bits.com/2013/04/10/sphinx-bootstrap-theme-bootswatch.html\u003e`_\n* 9/8/2013 - `Sphinx Bootstrap Theme 0.3.0 - Bootstrap v3 and more! \u003chttp://loose-bits.com/2013/09/08/sphinx-bootstrap-theme-bootstrap-3.html\u003e`_\n\nExamples of the theme in use for some public projects:\n\n* `Sphinx Bootstrap Theme`_: This project, with the theme option\n  ``'bootswatch_theme': \"sandstone\"`` to use the \"Sandstone_\" Bootswatch_ theme.\n* `Django Cloud Browser`_: A Django reusable app for browsing cloud\n  datastores (e.g., Amazon Web Services S3).\n* `seaborn`_: A statistical data visualization library.\n\nThe theme demo website also includes an `examples page`_ for some useful\nillustrations of getting Sphinx to play nicely with Bootstrap (also take a\nlook at the `examples source`_ for the underlying reStructuredText).\n\n.. _Bootswatch: http://bootswatch.com\n.. _United: http://bootswatch.com/united\n.. _Flatly: http://bootswatch.com/flatly\n.. _Sandstone: http://bootswatch.com/sandstone\n.. _Sphinx Bootstrap Theme: https://ryan-roemer.github.io/sphinx-bootstrap-theme\n.. _examples page: https://ryan-roemer.github.io/sphinx-bootstrap-theme/examples.html\n.. _examples source: https://ryan-roemer.github.io/sphinx-bootstrap-theme/_sources/examples.rst.txt\n.. _Django Cloud Browser: https://ryan-roemer.github.io/django-cloud-browser\n.. _seaborn: http://seaborn.pydata.org\n\n\nInstallation\n============\nInstallation from PyPI_ is fairly straightforward:\n\n1. Install the package::\n\n      $ pip install sphinx_bootstrap_theme\n\n2. Edit the \"conf.py\" configuration file to point to the bootstrap theme::\n\n      # At the top.\n      import sphinx_bootstrap_theme\n\n      # ...\n\n      # Activate the theme.\n      html_theme = 'bootstrap'\n      html_theme_path = sphinx_bootstrap_theme.get_html_theme_path()\n\n\nCustomization\n=============\nThe theme can be customized in varying ways (some a little more work than others).\n\nTheme Options\n-------------\nThe theme provides many built-in options that can be configured by editing\nyour \"conf.py\" file::\n\n    # (Optional) Logo. Should be small enough to fit the navbar (ideally 24x24).\n    # Path should be relative to the ``_static`` files directory.\n    html_logo = \"my_logo.png\"\n\n    # Theme options are theme-specific and customize the look and feel of a\n    # theme further.\n    html_theme_options = {\n        # Navigation bar title. (Default: ``project`` value)\n        'navbar_title': \"Demo\",\n\n        # Tab name for entire site. (Default: \"Site\")\n        'navbar_site_name': \"Site\",\n\n        # A list of tuples containing pages or urls to link to.\n        # Valid tuples should be in the following forms:\n        #    (name, page)                 # a link to a page\n        #    (name, \"/aa/bb\", 1)          # a link to an arbitrary relative url\n        #    (name, \"http://example.com\", True) # arbitrary absolute url\n        # Note the \"1\" or \"True\" value above as the third argument to indicate\n        # an arbitrary url.\n        'navbar_links': [\n            (\"Examples\", \"examples\"),\n            (\"Link\", \"http://example.com\", True),\n        ],\n\n        # Render the next and previous page links in navbar. (Default: true)\n        'navbar_sidebarrel': True,\n\n        # Render the current pages TOC in the navbar. (Default: true)\n        'navbar_pagenav': True,\n\n        # Tab name for the current pages TOC. (Default: \"Page\")\n        'navbar_pagenav_name': \"Page\",\n\n        # Global TOC depth for \"site\" navbar tab. (Default: 1)\n        # Switching to -1 shows all levels.\n        'globaltoc_depth': 2,\n\n        # Include hidden TOCs in Site navbar?\n        #\n        # Note: If this is \"false\", you cannot have mixed ``:hidden:`` and\n        # non-hidden ``toctree`` directives in the same page, or else the build\n        # will break.\n        #\n        # Values: \"true\" (default) or \"false\"\n        'globaltoc_includehidden': \"true\",\n\n        # HTML navbar class (Default: \"navbar\") to attach to \u003cdiv\u003e element.\n        # For black navbar, do \"navbar navbar-inverse\"\n        'navbar_class': \"navbar navbar-inverse\",\n\n        # Fix navigation bar to top of page?\n        # Values: \"true\" (default) or \"false\"\n        'navbar_fixed_top': \"true\",\n\n        # Location of link to source.\n        # Options are \"nav\" (default), \"footer\" or anything else to exclude.\n        'source_link_position': \"nav\",\n\n        # Bootswatch (http://bootswatch.com/) theme.\n        #\n        # Options are nothing (default) or the name of a valid theme\n        # such as \"cosmo\" or \"sandstone\".\n        #\n        # The set of valid themes depend on the version of Bootstrap\n        # that's used (the next config option).\n        #\n        # Currently, the supported themes are:\n        # - Bootstrap 2: https://bootswatch.com/2\n        # - Bootstrap 3: https://bootswatch.com/3\n        'bootswatch_theme': \"united\",\n\n        # Choose Bootstrap version.\n        # Values: \"3\" (default) or \"2\" (in quotes)\n        'bootstrap_version': \"3\",\n    }\n\nNote for the navigation bar title that if you don't specify a theme option of\n``navbar_title`` that the \"conf.py\" ``project`` string will be used. We don't\nuse the ``html_title`` or ``html_short_title`` values because by default those\nboth contain version strings, which the navigation bar treats differently.\n\nBootstrap Versions\n------------------\nThe theme supports Bootstrap ``v2.3.2`` and ``v3.3.7`` via the\n``bootstrap_version`` theme option (of ``\"2\"`` or ``\"3\"``). Some notes\nregarding version differences:\n\n* Bootstrap 3 has dropped support for `sub-menus`_, so while supported by this\n  theme, they will not show up in site or page menus.\n* Internally, \"navbar.html\" is the Sphinx template used for Bootstrap v3 and\n  \"navbar-2.html\" is the template used for v2.\n* If you are unsure what to choose, choose Bootstrap **3**.  If you experience some\n  form of compatibility issues, then try and use Bootstrap 2.\n\n.. _`sub-menus`: http://stackoverflow.com/questions/18023493\n\nExtending \"layout.html\"\n-----------------------\nAs a more \"hands on\" approach to customization, you can override any template\nin this Sphinx theme or any others. A good candidate for changes is\n\"layout.html\", which provides most of the look and feel. First, take a look\nat the \"layout.html\" file that the theme provides, and figure out\nwhat you need to override. As a side note, we have some theme-specific\nenhancements, such as the ``navbarextra`` template block for additional\ncontent in the navbar.\n\nThen, create your own \"_templates\" directory and \"layout.html\" file (assuming\nyou build from a \"source\" directory)::\n\n    $ mkdir source/_templates\n    $ touch source/_templates/layout.html\n\nThen, configure your \"conf.py\"::\n\n    templates_path = ['_templates']\n\nFinally, edit your override file \"source/_templates/layout.html\"::\n\n    {# Import the theme's layout. #}\n    {% extends \"!layout.html\" %}\n\n    {# Add some extra stuff before and use existing with 'super()' call. #}\n    {% block footer %}\n      \u003ch2\u003eMy footer of awesomeness.\u003c/h2\u003e\n      {{ super() }}\n    {% endblock %}\n\n\nAdding Custom CSS\n-----------------\nAlternately, you could add your own custom static media directory with a CSS\nfile to override a style, which in the demo would be something like::\n\n    $ mkdir source/_static\n    $ touch source/_static/my-styles.css\n\nIn the new file \"source/_static/my-styles.css\", add any appropriate styling,\ne.g. a bold background color::\n\n    footer {\n      background-color: red;\n    }\n\nThen, in \"conf.py\", edit this line::\n\n    html_static_path = [\"_static\"]\n\nFrom there it depends on which version of Sphinx you are using:\n\n**Sphinx \u003c= 1.5**\n\nYou will need the override template \"source/_templates/layout.html\" file\nconfigured as above, but with the following code::\n\n    {# Import the theme's layout. #}\n    {% extends \"!layout.html\" %}\n\n    {# Custom CSS overrides #}\n    {% set css_files = css_files + ['_static/my-styles.css'] %}\n\n.. note::\n\n   See `Issue #159 \u003chttps://github.com/ryan-roemer/sphinx-bootstrap-theme/pull/159\u003e`_\n   for more information.\n\n**Sphinx \u003e= 1.6.1**\n\nAdd a ``setup`` function in \"conf.py\" with stylesheet paths added relative to the\nstatic path::\n\n    def setup(app):\n        app.add_stylesheet(\"my-styles.css\") # also can be a full URL\n        # app.add_stylesheet(\"ANOTHER.css\")\n        # app.add_stylesheet(\"AND_ANOTHER.css\")\n\n.. tip::\n\n   Sphinx automatically calls your ``setup`` function defined in \"conf.py\" during\n   the build process for you.  There is no need to, nor should you, call this\n   function directly in your code.\n\nTheme Notes\n===========\nSphinx\n------\nThe theme places the global TOC, local TOC, navigation (prev, next) and\nsource links all in the top Bootstrap navigation bar, along with the Sphinx\nsearch bar on the left side.\n\nThe global (site-wide) table of contents is the \"Site\" navigation dropdown,\nwhich is a configurable level rendering of the ``toctree`` for the entire site.\nThe local (page-level) table of contents is the \"Page\" navigation dropdown,\nwhich is a multi-level rendering of the current page's ``toc``.\n\n\nBootstrap\n---------\nThe theme offers Bootstrap v2.x and v3.x, both of which rely on\njQuery v.1.9.x. As the jQuery that Bootstrap wants can radically depart from\nthe jQuery Sphinx internal libraries use, the library from this theme is\nintegrated via ``noConflict()`` as ``$jqTheme``.\n\nYou can override any static JS/CSS files by dropping different versions in your\nSphinx \"_static\" directory.\n\n\nContributing\n============\nContributions to this project are most welcome. Please make sure that the demo\nsite builds cleanly, and looks like what you want. This project uses `tox\n\u003chttps://tox.readthedocs.io/en/latest/\u003e`_ for development, once you have ``tox``\ninstalled (e.g., ``pip install tox``), change directories to the\n``sphinx-bootstrap-theme`` top-level directory.\n\n- Building documentation: ``tox -e docs``\n- Validate html links in documentation: ``tox -e linkcheck``\n- Validate the code style: ``tox -e lint``\n\nThe encouraged way to develop with this package is to use a development server.\nChanges made to files local in the repository will require rebuilding the\ndemo website, and using the development server will automate this process.\n\n1. In your terminal, execute ``tox -e server`` from the top level directory.\n   By default, this runs on port ``8000``.  If this port is in use, a\n   pass-through argument to the underlying `sphinx-autobuild\n   \u003chttps://github.com/executablebooks/sphinx-autobuild\u003e`_ tool is required\n   such as ``tox -e server -- -p 8080``.  The ``--`` between ``server`` and\n   ``-p`` are required, that signals the end of the arguments to ``tox`` and\n   everything after gets fed to ``sphinx-autobuild``.\n\n2. Open your browser of choice and visit `http://127.0.0.1:8000/\n   \u003chttp://127.0.0.1:8000/\u003e`_ to see the server.\n\n3. Make any intended edits to the files in this repository.  After the server\n   finishes rebuilding you can refresh your browser to see the updates.\n\n4. When finished, make sure to end the server from your terminal you ran\n   ``tox -e server`` with by issuing ``ctrl+c``.\n\nPackaging\n=========\n\nWhen a tag is pushed of the form ``vX.Y.Z`` (with the starting ``v``), it will\nbuild the distribution using ``tox -e dist`` and upload to PyPI automatically.\nBefore pushing a tag, using Test PyPI should be done.  In addition to ``tox``,\ninstall `twine \u003chttps://twine.readthedocs.io/en/latest/\u003e`_\n(``pip install twine``).\n\n.. code-block:: console\n\n    # Build the distribution locally.\n    $ tox -e dist\n\n    # Attempt uploading to Test PyPI\n    $ twine upload -r testpypi dist/*\n\n.. note::\n\n    The file ``sphinx_bootstrap_theme/__init__.py`` has the version number that\n    will be created.  **Make sure it matches the tag you are creating**, once\n    an upload goes up it cannot be overwritten.  If in preparing a release you\n    find an error and need to rebuild, simply increase the ``dev`` version\n    in ``__init__.py`` and then rebuild and reupload.  For example:\n\n    .. code-block:: diff\n\n        --- a/sphinx_bootstrap_theme/__init__.py\n        +++ b/sphinx_bootstrap_theme/__init__.py\n        @@ -1,7 +1,7 @@\n         \"\"\"Sphinx bootstrap theme.\"\"\"\n         import os\n\n        -__version__ = \"0.8.0.dev0\"\n        +__version__ = \"0.8.0.dev1\"\n\nAfter verifying that `everything appears as desired on Test PyPI\n\u003chttps://test.pypi.org/project/sphinx-bootstrap-theme/\u003e`_ at the project\nURL, one can also test the installation if desired: ``pip install\n--index-url https://test.pypi.org/simple/ sphinx-bootstrap-theme``\n\nNow that everything is validated, we are ready for release.\n\n1. Set the version number in ``sphinx_bootstrap_theme/__init__.py`` correctly.\n   E.g., for release ``0.8.0``, set ``__version__ = \"0.8.0\"`` without the\n   trailing ``dev`` qualifier.\n\n2. If desired, rebuild and upload to Test PyPI.  Commit and push the changed\n   version number.  Tag this commit ``git tag v0.8.0`` (note the leading ``v``\n   is required for the CI/CD), and ``git push --tags``.  This should initiate\n   the official release and upload it to PyPI (see the files\n   ``.github/workflows/{package,github_pages}.yaml`` for more).\n\n3. Now that the release is out, update the version number so that any users\n   installing from source do not believe they have an official release.  E.g.,\n   set ``__version__ = \"0.8.1.dev0\"``, commit and push this \"dev version bump\"\n   online.\n\n\nLicenses\n========\nSphinx Bootstrap Theme is licensed under the MIT_ license.\n\n`Bootstrap v2`_ is licensed under the Apache license 2.0.\n\n`Bootstrap v3.1.0+`_ is licensed under the MIT license.\n\n.. _`MIT`: https://github.com/ryan-roemer/sphinx-bootstrap-theme/blob/master/LICENSE.txt\n.. _`Bootstrap v2`: https://github.com/twbs/bootstrap/blob/v2.3.2/LICENSE\n.. _`Bootstrap v3.1.0+`: https://github.com/twbs/bootstrap/blob/master/LICENSE\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryan-roemer%2Fsphinx-bootstrap-theme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fryan-roemer%2Fsphinx-bootstrap-theme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fryan-roemer%2Fsphinx-bootstrap-theme/lists"}