summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Mayer <entroP@gmail.com>2022-08-01 15:42:37 +0200
committerGitHub <noreply@github.com>2022-08-01 15:42:37 +0200
commit1bcd6c5f56f1e43377ab452c9a33b06a7424b0e8 (patch)
tree2e145be1863e5dbbf11f332bcb0ff6b0a29847a7
parent84dfbcf3dc7bcfd56a8bd8989ef3655ca31ac296 (diff)
parent21e855a29f7c01640e400ce021b8e5f640e033e2 (diff)
downloadpelican-1bcd6c5f56f1e43377ab452c9a33b06a7424b0e8.tar.gz
Merge pull request #3023 from getpelican/furo-sphinx-theme
Use Furo as Sphinx documentation theme
-rw-r--r--docs/_static/pelican-logo.svg1
-rw-r--r--docs/_templates/page.html199
-rw-r--r--docs/conf.py27
-rwxr-xr-xpelican/tools/pelican_import.py2
-rw-r--r--pyproject.toml17
-rw-r--r--requirements/docs.pip4
-rw-r--r--requirements/style.pip2
-rw-r--r--requirements/test.pip2
8 files changed, 224 insertions, 30 deletions
diff --git a/docs/_static/pelican-logo.svg b/docs/_static/pelican-logo.svg
new file mode 100644
index 00000000..95b947bf
--- /dev/null
+++ b/docs/_static/pelican-logo.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg id="svg33" width="64" height="64" style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.4142" version="1.1" viewBox="0 0 64 64" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><g id="g864" transform="matrix(.10228 0 0 .10228 2.441 6.0098e-5)"><g id="g4" transform="matrix(4.1667 0 0 4.1667 -301.27 -2392.2)"><path id="path2" d="m210.35 607.22c-.34-2.106-.842-4.303-1.491-6.591-1.537-5.441-4.918-10.074-9.506-13.854-1.205-1.001-2.503-1.946-3.88-2.823-5.293-3.381-11.692-5.851-18.522-7.32-4.588-.99-9.367-1.525-14.139-1.593-34.662-.774-56.234.387-90.373-.911.012.023.012.046.022.068 1.56 1.264 3.154 2.471 4.782 3.643 3.573 2.584 7.297 4.952 11.155 7.127 7.184 4.04 14.845 7.342 22.859 9.801.956.295 1.912.58 2.87.842 5.6.603 10.631 1.206 14.648 3.074 1.015.455 1.959 1.001 2.835 1.639 2.87 2.106 6.057 6.124 8.152 8.936 4.497 5.999 3.551 10.928 8.88 13.887.557.308 1.182.604 1.889.866 1.696.638 4.119 1.491 5.225-.91.16-.342.283-.764.387-1.264-.446-1.434-1.981-2.675-2.905-3.29-1.638-1.07-2.287-1.719-3.47-2.937-2.186-2.243-2.333-6.056-3.871-8.708 1.935-.82 12.146-2.186 14.287-1.89 4.576.204 8.185.557 10.939 3.392 1.08.854 1.672 1.594 2.652 2.334.069.057.125.114.194.159 4.338 3.153 8.343 4.28 11.894 5.362.936.284 1.822.558 2.69.876 1.332.478 2.582 1.048 3.754 1.81 1.39.922 3.748 3.336 3.849 5.419-3.496-1.116-1.185.296-6.342-.102-2.515-.285-5.087-.456-7.671-.638-4.018-.284-8.038-.581-11.805-1.297-.627-.115-1.254-.251-1.867-.399-.479-.102-.946-.227-1.401-.353-.011.193-.021.376-.021.546-.104 3.939 2.674 5.908-3.678 13.399-.057.08-.137.159-.205.25-1.686 1.97-10.449 5.715-13.182 6.432-11.634 2.334-20.502-5.237-34.515-1.423-4.929 1.833-8.549 9.824-10.815 15.8-3.016 7.936-5.406 17.576-8.139 27.06 5.329-.797 10.53-1.936 15.585-3.427 11.167-3.279 21.651-8.185 31.168-14.445.911-1.231 1.912-2.29 2.994-3.108.284-.217.58-.422.877-.603.215-.137.956-.286 2.127-.502 10.861-1.924 58.5-8.377 61.597-42.962.319-3.494.172-7.285-.513-11.372zm-106.94 18.59c-6.375-1.924-8.003-2.243-12.055-5.385.067.33.17.695.307 1.081 10.779 6.068 22.608 10.462 35.141 12.842-3.893-9.051-8.502-7.445-23.393-8.538zm29.518-4.099c-2.779-6.738-10.313-10.575-16.813-12.464-8.721-3.12-15.061-.125-33.458-8.811.147.239.284.467.432.694 3.575 2.584 7.297 4.963 11.157 7.126 7.184 4.041 14.844 7.343 22.857 9.802 4.167.489 8.175 1.184 11.863 2.96 1.639.773 3.21 1.764 4.702 3.039-.183-.82-.434-1.605-.74-2.346z" style="fill-rule:nonzero;fill:url(#_Linear1)"/></g><g id="g8" transform="matrix(4.1667 0 0 4.1667 -301.27 -2392.2)"><path id="path6" d="m114.13 595.61c-.958-.262-1.914-.547-2.87-.842-8.014-2.459-15.675-5.761-22.859-9.801-3.858-2.175-7.582-4.543-11.155-7.127-1.628-1.172-3.222-2.379-4.782-3.643 2.14 6.603 11.634 13.57 18.078 16.313 8.218 3.495 16.381 4.303 23.588 5.1z" style="fill:#90d4d1"/></g><g id="g12" transform="matrix(4.1667 0 0 4.1667 -301.27 -2392.2)"><path id="path10" d="m94.253 608.25c-3.86-2.163-7.582-4.542-11.157-7.126 10.006 15.823 22.575 15.584 34.014 16.928-8.013-2.459-15.673-5.761-22.857-9.802z" style="fill:#90d4d1"/></g><g id="g16" transform="matrix(4.1667 0 0 4.1667 -301.27 -2392.2)"><path id="path14" d="m126.81 634.34c-12.533-2.38-24.362-6.774-35.141-12.842 1.376 3.973 6.351 10.257 12.943 11.658 2.858 1.024 2.094.762 6.967.614 7.137-.364 10.552-.592 15.608 1.469-.126-.308-.251-.604-.377-.899z" style="fill:#90d4d1"/></g><g id="g20" transform="matrix(4.1667 0 0 4.1667 -301.27 -2392.2)"><path id="path18" d="m143.27 665.76c-.081.101-.159.204-.239.318-13.844 14.093-31.179 24.69-50.59 30.393 1.492-4.132 2.824-8.468 4.076-12.839 5.329-.797 10.53-1.936 15.585-3.427 11.167-3.279 21.651-8.185 31.168-14.445z" style="fill:#90d4d1"/></g><g id="g24" transform="matrix(4.1667 0 0 4.1667 -301.27 -2392.2)"><path id="path22" d="m143.03 666.08c-6.046 8.287-9.118 24.122-12.659 33.274-5.144 13.342-12.294 22.95-27.958 24.317-3.928.351-27.582 1.24-30.11-.035.159-1.344 4.098-2.961 5.123-3.747 6.852-4.847 11.416-13.5 15.014-23.416 19.411-5.703 36.746-16.3 50.59-30.393z" style="fill:#14a0c4"/></g></g><defs id="defs31"><linearGradient id="_Linear1" x2="1" gradientTransform="matrix(138.58 0 0 138.58 72.442 628.88)" gradientUnits="userSpaceOnUse"><stop id="stop26" style="stop-color:rgb(84,196,198)" offset="0"/><stop id="stop28" style="stop-color:rgb(18,186,213)" offset="1"/></linearGradient></defs></svg> \ No newline at end of file
diff --git a/docs/_templates/page.html b/docs/_templates/page.html
new file mode 100644
index 00000000..c238b54c
--- /dev/null
+++ b/docs/_templates/page.html
@@ -0,0 +1,199 @@
+{% extends "base.html" %}
+
+{% block body -%}
+{{ super() }}
+{% include "partials/icons.html" %}
+
+<input type="checkbox" class="sidebar-toggle" name="__navigation" id="__navigation">
+<input type="checkbox" class="sidebar-toggle" name="__toc" id="__toc">
+<label class="overlay sidebar-overlay" for="__navigation">
+ <div class="visually-hidden">Hide navigation sidebar</div>
+</label>
+<label class="overlay toc-overlay" for="__toc">
+ <div class="visually-hidden">Hide table of contents sidebar</div>
+</label>
+
+{% if theme_announcement -%}
+<div class="announcement">
+ <aside class="announcement-content">
+ {% block announcement %} {{ theme_announcement }} {% endblock announcement %}
+ </aside>
+</div>
+{%- endif %}
+
+<div class="page">
+ <header class="mobile-header">
+ <div class="header-left">
+ <label class="nav-overlay-icon" for="__navigation">
+ <div class="visually-hidden">Toggle site navigation sidebar</div>
+ <i class="icon"><svg><use href="#svg-menu"></use></svg></i>
+ </label>
+ </div>
+ <div class="header-center">
+ <a href="{{ pathto(master_doc) }}"><div class="brand">{{ docstitle if docstitle else project }}</div></a>
+ </div>
+ <div class="header-right">
+ <div class="theme-toggle-container theme-toggle-header">
+ <button class="theme-toggle">
+ <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
+ <svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg>
+ <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
+ <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
+ </button>
+ </div>
+ <label class="toc-overlay-icon toc-header-icon{% if furo_hide_toc %} no-toc{% endif %}" for="__toc">
+ <div class="visually-hidden">Toggle table of contents sidebar</div>
+ <i class="icon"><svg><use href="#svg-toc"></use></svg></i>
+ </label>
+ </div>
+ </header>
+ <aside class="sidebar-drawer">
+ <div class="sidebar-container">
+ {% block left_sidebar %}
+ <div class="sidebar-sticky">
+ {%- for sidebar_section in sidebars %}
+ {%- include sidebar_section %}
+ {%- endfor %}
+ </div>
+ {% endblock left_sidebar %}
+ </div>
+ </aside>
+ <div class="main">
+ <div class="content">
+ <div class="article-container">
+ <a href="#" class="back-to-top muted-link">
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"></path>
+ </svg>
+ <span>{% trans %}Back to top{% endtrans %}</span>
+ </a>
+ <div class="content-icon-container">
+ {% if theme_top_of_page_button == "edit" -%}
+ {%- include "components/edit-this-page.html" with context -%}
+ {%- elif theme_top_of_page_button != None -%}
+ {{ warning("Got an unsupported value for 'top_of_page_button'") }}
+ {%- endif -%}
+ {#- Theme toggle -#}
+ <div class="theme-toggle-container theme-toggle-content">
+ <button class="theme-toggle">
+ <div class="visually-hidden">Toggle Light / Dark / Auto color theme</div>
+ <svg class="theme-icon-when-auto"><use href="#svg-sun-half"></use></svg>
+ <svg class="theme-icon-when-dark"><use href="#svg-moon"></use></svg>
+ <svg class="theme-icon-when-light"><use href="#svg-sun"></use></svg>
+ </button>
+ </div>
+ <label class="toc-overlay-icon toc-content-icon{% if furo_hide_toc %} no-toc{% endif %}" for="__toc">
+ <div class="visually-hidden">Toggle table of contents sidebar</div>
+ <i class="icon"><svg><use href="#svg-toc"></use></svg></i>
+ </label>
+ </div>
+ <article role="main">
+ {% block content %}{{ body }}{% endblock %}
+ </article>
+ </div>
+ <footer>
+ {% block footer %}
+ <div class="related-pages">
+ {% if next -%}
+ <a class="next-page" href="{{ next.link }}">
+ <div class="page-info">
+ <div class="context">
+ <span>{{ _("Next") }}</span>
+ </div>
+ <div class="title">{{ next.title }}</div>
+ </div>
+ <svg><use href="#svg-arrow-right"></use></svg>
+ </a>
+ {%- endif %}
+ {% if prev -%}
+ <a class="prev-page" href="{{ prev.link }}">
+ <svg><use href="#svg-arrow-right"></use></svg>
+ <div class="page-info">
+ <div class="context">
+ <span>{{ _("Previous") }}</span>
+ </div>
+ {% if prev.link == pathto(master_doc) %}
+ <div class="title">{{ _("Home") }}</div>
+ {% else %}
+ <div class="title">{{ prev.title }}</div>
+ {% endif %}
+ </div>
+ </a>
+ {%- endif %}
+ </div>
+ <div class="bottom-of-page">
+ <div class="left-details">
+ {%- if show_copyright %}
+ <div class="copyright">
+ {%- if hasdoc('copyright') %}
+ {% trans path=pathto('copyright'), copyright=copyright|e -%}
+ <a href="{{ path }}">Copyright</a> &#169; {{ copyright }}
+ {%- endtrans %}
+ {%- else %}
+ {% trans copyright=copyright|e -%}
+ Copyright &#169; {{ copyright }}, <a href="https://justinmayer.com">Justin Mayer</a>, Alexis Metaireau, and contributors
+ {%- endtrans %}
+ {%- endif %}
+ </div>
+ {%- endif %}
+ {%- if last_updated -%}
+ <div class="last-updated">
+ {% trans last_updated=last_updated|e -%}
+ Last updated on {{ last_updated }}
+ {%- endtrans -%}
+ </div>
+ {%- endif %}
+ </div>
+ <div class="right-details">
+ <div class="icons">
+ {% if theme_footer_icons -%}
+ {% for icon_dict in theme_footer_icons -%}
+ <a class="muted-link {{ icon_dict.class }}" href="{{ icon_dict.url }}" aria-label="{{ icon_dict.name }}">
+ {{- icon_dict.html -}}
+ </a>
+ {% endfor %}
+ {%- else -%}
+ {#- Show Read the Docs project -#}
+ {%- if READTHEDOCS and slug -%}
+ <a class="muted-link" href="https://readthedocs.org/projects/{{ slug }}" aria-label="On Read the Docs">
+ <svg x="0px" y="0px" viewBox="-125 217 360 360" xml:space="preserve">
+ <path fill="currentColor" d="M39.2,391.3c-4.2,0.6-7.1,4.4-6.5,8.5c0.4,3,2.6,5.5,5.5,6.3 c0,0,18.5,6.1,50,8.7c25.3,2.1,54-1.8,54-1.8c4.2-0.1,7.5-3.6,7.4-7.8c-0.1-4.2-3.6-7.5-7.8-7.4c-0.5,0-1,0.1-1.5,0.2 c0,0-28.1,3.5-50.9,1.6c-30.1-2.4-46.5-7.9-46.5-7.9C41.7,391.3,40.4,391.1,39.2,391.3z M39.2,353.6c-4.2,0.6-7.1,4.4-6.5,8.5 c0.4,3,2.6,5.5,5.5,6.3c0,0,18.5,6.1,50,8.7c25.3,2.1,54-1.8,54-1.8c4.2-0.1,7.5-3.6,7.4-7.8c-0.1-4.2-3.6-7.5-7.8-7.4 c-0.5,0-1,0.1-1.5,0.2c0,0-28.1,3.5-50.9,1.6c-30.1-2.4-46.5-7.9-46.5-7.9C41.7,353.6,40.4,353.4,39.2,353.6z M39.2,315.9 c-4.2,0.6-7.1,4.4-6.5,8.5c0.4,3,2.6,5.5,5.5,6.3c0,0,18.5,6.1,50,8.7c25.3,2.1,54-1.8,54-1.8c4.2-0.1,7.5-3.6,7.4-7.8 c-0.1-4.2-3.6-7.5-7.8-7.4c-0.5,0-1,0.1-1.5,0.2c0,0-28.1,3.5-50.9,1.6c-30.1-2.4-46.5-7.9-46.5-7.9 C41.7,315.9,40.4,315.8,39.2,315.9z M39.2,278.3c-4.2,0.6-7.1,4.4-6.5,8.5c0.4,3,2.6,5.5,5.5,6.3c0,0,18.5,6.1,50,8.7 c25.3,2.1,54-1.8,54-1.8c4.2-0.1,7.5-3.6,7.4-7.8c-0.1-4.2-3.6-7.5-7.8-7.4c-0.5,0-1,0.1-1.5,0.2c0,0-28.1,3.5-50.9,1.6 c-30.1-2.4-46.5-7.9-46.5-7.9C41.7,278.2,40.4,278.1,39.2,278.3z M-13.6,238.5c-39.6,0.3-54.3,12.5-54.3,12.5v295.7 c0,0,14.4-12.4,60.8-10.5s55.9,18.2,112.9,19.3s71.3-8.8,71.3-8.8l0.8-301.4c0,0-25.6,7.3-75.6,7.7c-49.9,0.4-61.9-12.7-107.7-14.2 C-8.2,238.6-10.9,238.5-13.6,238.5z M19.5,257.8c0,0,24,7.9,68.3,10.1c37.5,1.9,75-3.7,75-3.7v267.9c0,0-19,10-66.5,6.6 C59.5,536.1,19,522.1,19,522.1L19.5,257.8z M-3.6,264.8c4.2,0,7.7,3.4,7.7,7.7c0,4.2-3.4,7.7-7.7,7.7c0,0-12.4,0.1-20,0.8 c-12.7,1.3-21.4,5.9-21.4,5.9c-3.7,2-8.4,0.5-10.3-3.2c-2-3.7-0.5-8.4,3.2-10.3c0,0,0,0,0,0c0,0,11.3-6,27-7.5 C-16,264.9-3.6,264.8-3.6,264.8z M-11,302.6c4.2-0.1,7.4,0,7.4,0c4.2,0.5,7.2,4.3,6.7,8.5c-0.4,3.5-3.2,6.3-6.7,6.7 c0,0-12.4,0.1-20,0.8c-12.7,1.3-21.4,5.9-21.4,5.9c-3.7,2-8.4,0.5-10.3-3.2c-2-3.7-0.5-8.4,3.2-10.3c0,0,11.3-6,27-7.5 C-20.5,302.9-15.2,302.7-11,302.6z M-3.6,340.2c4.2,0,7.7,3.4,7.7,7.7s-3.4,7.7-7.7,7.7c0,0-12.4-0.1-20,0.7 c-12.7,1.3-21.4,5.9-21.4,5.9c-3.7,2-8.4,0.5-10.3-3.2c-2-3.7-0.5-8.4,3.2-10.3c0,0,11.3-6,27-7.5C-16,340.1-3.6,340.2-3.6,340.2z" />
+ </svg>
+ </a>
+ {%- endif -%}
+ {#- Show GitHub repository home -#}
+ {%- if READTHEDOCS and display_github and github_user != "None" and github_repo != "None" -%}
+ <a class="muted-link" href="https://github.com/{{ github_user }}/{{ github_repo }}" aria-label="On GitHub">
+ <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 16 16">
+ <path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"></path>
+ </svg>
+ </a>
+ {%- endif -%}
+ {%- endif %}
+ </div>
+ </div>
+ </div>
+ {% endblock footer %}
+ </footer>
+ </div>
+ <aside class="toc-drawer{% if furo_hide_toc %} no-toc{% endif %}">
+ {% block right_sidebar %}
+ {% if not furo_hide_toc %}
+ <div class="toc-sticky toc-scroll">
+ <div class="toc-title-container">
+ <span class="toc-title">
+ {{ _("Contents") }}
+ </span>
+ </div>
+ <div class="toc-tree-container">
+ <div class="toc-tree">
+ {{ toc }}
+ </div>
+ </div>
+ </div>
+ {% endif %}
+ {% endblock right_sidebar %}
+ </aside>
+ </div>
+</div>
+{%- endblock %}
diff --git a/docs/conf.py b/docs/conf.py
index fc49975a..0211c71a 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -1,10 +1,9 @@
+import datetime
import os
import sys
from pelican import __version__
-on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
-
sys.path.append(os.path.abspath(os.pardir))
# -- General configuration ----------------------------------------------------
@@ -15,7 +14,8 @@ extensions = ['sphinx.ext.autodoc',
source_suffix = '.rst'
master_doc = 'index'
project = 'Pelican'
-copyright = '2010 – present, Justin Mayer, Alexis Metaireau, and contributors'
+year = datetime.datetime.now().date().year
+copyright = f'2010–{year}'
exclude_patterns = ['_build']
release = __version__
version = '.'.join(release.split('.')[:1])
@@ -24,25 +24,20 @@ rst_prolog = '''
.. |last_stable| replace:: :pelican-doc:`{}`
'''.format(last_stable)
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
extlinks = {
- 'pelican-doc': ('https://docs.getpelican.com/%s/', '')
+ 'pelican-doc': ('https://docs.getpelican.com/%s/', '%s')
}
# -- Options for HTML output --------------------------------------------------
-html_theme = 'default'
-if not on_rtd:
- try:
- import sphinx_rtd_theme
- html_theme = 'sphinx_rtd_theme'
- html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
- except ImportError:
- pass
-
+html_theme = 'furo'
+html_title = f'<strong>{project}</strong> <i>{release}</i>'
html_static_path = ['_static']
+html_theme_options = {
+ 'light_logo': 'pelican-logo.svg',
+ 'dark_logo': 'pelican-logo.svg',
+ 'navigation_with_keys': True,
+}
# Output file base name for HTML help builder.
htmlhelp_basename = 'Pelicandoc'
diff --git a/pelican/tools/pelican_import.py b/pelican/tools/pelican_import.py
index b74da750..5b08b6b5 100755
--- a/pelican/tools/pelican_import.py
+++ b/pelican/tools/pelican_import.py
@@ -350,7 +350,7 @@ def dc2fields(file):
else:
i = 1
j = 1
- while(i <= int(tag[:1])):
+ while (i <= int(tag[:1])):
newtag = tag.split('"')[j].replace('\\', '')
tags.append(
BeautifulSoup(
diff --git a/pyproject.toml b/pyproject.toml
index afcae0fb..4c41abec 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -30,7 +30,7 @@ classifiers = [
"Tracker" = "https://github.com/getpelican/pelican/issues"
[tool.poetry.dependencies]
-python = "^3.6"
+python = ">=3.7,<4.0"
blinker = ">=1.4"
docutils = ">=0.16"
feedgenerator = ">=1.9"
@@ -44,19 +44,18 @@ markdown = {version = ">=3.1", optional = true}
[tool.poetry.dev-dependencies]
BeautifulSoup4 = "^4.9"
-jinja2 = "~2.11"
+jinja2 = "~3.1.2"
lxml = "^4.3"
-markdown = "~3.3.4"
+markdown = "~3.3.7"
typogrify = "^2.0"
-sphinx = "<4.4.0"
-sphinx_rtd_theme = "^0.5"
+sphinx = "^5.1"
+furo = "2022.06.21"
livereload = "^2.6"
psutil = {version = "^5.7", optional = true}
pygments = "~2.8"
-pytest = "^6.0"
-pytest-cov = "^2.8"
-pytest-pythonpath = "^0.7.3"
-pytest-sugar = "^0.9.4"
+pytest = "^7.1"
+pytest-cov = "^3.0"
+pytest-sugar = "^0.9.5"
pytest-xdist = "^2.0"
tox = {version = "^3.13", optional = true}
flake8 = "^3.8"
diff --git a/requirements/docs.pip b/requirements/docs.pip
index a5a184ef..dda53a56 100644
--- a/requirements/docs.pip
+++ b/requirements/docs.pip
@@ -1,3 +1,3 @@
-sphinx<4.4.0
-sphinx_rtd_theme
+sphinx<6.0
+furo
livereload
diff --git a/requirements/style.pip b/requirements/style.pip
index 90225d01..fe4c25c4 100644
--- a/requirements/style.pip
+++ b/requirements/style.pip
@@ -1,2 +1,2 @@
-flake8
+flake8<4.0
flake8-import-order
diff --git a/requirements/test.pip b/requirements/test.pip
index 2d666b25..5873bb2b 100644
--- a/requirements/test.pip
+++ b/requirements/test.pip
@@ -5,7 +5,7 @@ pytest-cov
pytest-xdist[psutil]
# Optional Packages
-Markdown==3.3.4
+Markdown==3.3.7
BeautifulSoup4
lxml
typogrify