diff --git a/docs/conf.py b/docs/conf.py
index f00ed3c2d..8d8078a27 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -2,48 +2,58 @@
import os
import sys
-from pelican import __version__
+if sys.version_info >= (3, 11):
+ import tomllib
+else:
+ import tomli as tomllib
+
sys.path.append(os.path.abspath(os.pardir))
+
+with open("../pyproject.toml", "rb") as f:
+ project_data = tomllib.load(f).get("project")
+ if project_data is None:
+ raise KeyError("project data is not found")
+
+
# -- General configuration ----------------------------------------------------
-templates_path = ['_templates']
+templates_path = ["_templates"]
extensions = [
"sphinx.ext.autodoc",
"sphinx.ext.ifconfig",
"sphinx.ext.extlinks",
"sphinxext.opengraph",
]
-source_suffix = '.rst'
-master_doc = 'index'
-project = 'Pelican'
+source_suffix = ".rst"
+master_doc = "index"
+project = project_data.get("name").upper()
year = datetime.datetime.now().date().year
-copyright = f'2010–{year}'
-exclude_patterns = ['_build']
-release = __version__
-version = '.'.join(release.split('.')[:1])
-last_stable = __version__
-rst_prolog = '''
-.. |last_stable| replace:: :pelican-doc:`{}`
-'''.format(last_stable)
-
-extlinks = {
- 'pelican-doc': ('https://docs.getpelican.com/en/latest/%s.html', '%s')
-}
+copyright = f"2010–{year}"
+exclude_patterns = ["_build"]
+release = project_data.get("version")
+version = ".".join(release.split(".")[:1])
+last_stable = project_data.get("version")
+rst_prolog = f"""
+.. |last_stable| replace:: :pelican-doc:`{last_stable}`
+.. |min_python| replace:: {project_data.get('requires-python').split(",")[0]}
+"""
+
+extlinks = {"pelican-doc": ("https://docs.getpelican.com/en/latest/%s.html", "%s")}
# -- Options for HTML output --------------------------------------------------
-html_theme = 'furo'
-html_title = f'{project} {release}'
-html_static_path = ['_static']
+html_theme = "furo"
+html_title = f"{project} {release}"
+html_static_path = ["_static"]
html_theme_options = {
- 'light_logo': 'pelican-logo.svg',
- 'dark_logo': 'pelican-logo.svg',
- 'navigation_with_keys': True,
+ "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'
+htmlhelp_basename = "Pelicandoc"
html_use_smartypants = True
@@ -59,21 +69,29 @@
def setup(app):
# overrides for wide tables in RTD theme
- app.add_css_file('theme_overrides.css') # path relative to _static
+ app.add_css_file("theme_overrides.css") # path relative to _static
# -- Options for LaTeX output -------------------------------------------------
latex_documents = [
- ('index', 'Pelican.tex', 'Pelican Documentation', 'Justin Mayer',
- 'manual'),
+ ("index", "Pelican.tex", "Pelican Documentation", "Justin Mayer", "manual"),
]
# -- Options for manual page output -------------------------------------------
man_pages = [
- ('index', 'pelican', 'pelican documentation',
- ['Justin Mayer'], 1),
- ('pelican-themes', 'pelican-themes', 'A theme manager for Pelican',
- ['Mickaël Raybaud'], 1),
- ('themes', 'pelican-theming', 'How to create themes for Pelican',
- ['The Pelican contributors'], 1)
+ ("index", "pelican", "pelican documentation", ["Justin Mayer"], 1),
+ (
+ "pelican-themes",
+ "pelican-themes",
+ "A theme manager for Pelican",
+ ["Mickaël Raybaud"],
+ 1,
+ ),
+ (
+ "themes",
+ "pelican-theming",
+ "How to create themes for Pelican",
+ ["The Pelican contributors"],
+ 1,
+ ),
]
diff --git a/docs/contribute.rst b/docs/contribute.rst
index cfbfe351e..a5292dd56 100644
--- a/docs/contribute.rst
+++ b/docs/contribute.rst
@@ -15,16 +15,16 @@ Setting up the development environment
======================================
While there are many ways to set up one's development environment, the following
-instructions will utilize Pip_ and Poetry_. These tools facilitate managing
+instructions will utilize Pip_ and pdm_. These tools facilitate managing
virtual environments for separate Python projects that are isolated from one
another, so you can use different packages (and package versions) for each.
-Please note that Python 3.7+ is required for Pelican development.
+Please note that Python |min_python| is required for Pelican development.
-*(Optional)* If you prefer to `install Poetry `_ once for use with multiple projects,
+*(Optional)* If you prefer to `install pdm `_ once for use with multiple projects,
you can install it via::
- curl -sSL https://install.python-poetry.org | python3 -
+ curl -sSL https://pdm.fming.dev/install-pdm.py | python3 -
Point your web browser to the `Pelican repository`_ and tap the **Fork** button
at top-right. Then clone the source for your fork and add the upstream project
@@ -35,7 +35,7 @@ as a Git remote::
cd ~/projects/pelican
git remote add upstream https://github.com/getpelican/pelican.git
-While Poetry can dynamically create and manage virtual environments, we're going
+While pdm can dynamically create and manage virtual environments, we're going
to manually create and activate a virtual environment::
mkdir ~/virtualenvs && cd ~/virtualenvs
@@ -51,7 +51,7 @@ Install the needed dependencies and set up the project::
Your local environment should now be ready to go!
.. _Pip: https://pip.pypa.io/
-.. _Poetry: https://python-poetry.org/
+.. _pdm: https://pdm.fming.dev/latest/
.. _Pelican repository: https://github.com/getpelican/pelican
Development
diff --git a/docs/install.rst b/docs/install.rst
index ea47311f8..aa3c92d08 100644
--- a/docs/install.rst
+++ b/docs/install.rst
@@ -1,7 +1,7 @@
Installing Pelican
##################
-Pelican currently runs best on 3.7+; earlier versions of Python are not supported.
+Pelican currently runs best on |min_python|; earlier versions of Python are not supported.
You can install Pelican via several different methods. The simplest is via Pip_::
diff --git a/docs/quickstart.rst b/docs/quickstart.rst
index f1198b947..686b822f0 100644
--- a/docs/quickstart.rst
+++ b/docs/quickstart.rst
@@ -8,7 +8,7 @@ Installation
------------
Install Pelican (and optionally Markdown if you intend to use it) on Python
-3.7+ by running the following command in your preferred terminal, prefixing
+|min_python| by running the following command in your preferred terminal, prefixing
with ``sudo`` if permissions warrant::
python -m pip install "pelican[markdown]"
diff --git a/pyproject.toml b/pyproject.toml
index 84c0b5b45..517add882 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -65,7 +65,6 @@ git-email = "52496925+botpub@users.noreply.github.com"
changelog-file = "docs/changelog.rst"
changelog-header = "###############"
version-header = "="
-version-strings = ["pyproject.toml"]
[tool.pdm]
@@ -97,6 +96,7 @@ dev = [
"isort<6.0,>=5.2",
"black<20.0,>=19.10b0",
"ruff>=0.1.3,<1.0.0",
+ "tomli;python_version<'3.11'",
]
[build-system]
diff --git a/requirements/docs.pip b/requirements/docs.pip
index 6db7c6c8f..961a64739 100644
--- a/requirements/docs.pip
+++ b/requirements/docs.pip
@@ -2,3 +2,4 @@ sphinx<6.0
sphinxext-opengraph
furo
livereload
+tomli;python_version<"3.11"
diff --git a/tasks.py b/tasks.py
index e9f65db3c..564616799 100644
--- a/tasks.py
+++ b/tasks.py
@@ -15,8 +15,8 @@
VENV = str(VENV_PATH.expanduser())
VENV_BIN = Path(VENV) / Path(BIN_DIR)
-TOOLS = ["poetry", "pre-commit", "psutil"]
-POETRY = which("poetry") or VENV_BIN / "poetry"
+TOOLS = ["pdm", "pre-commit", "psutil"]
+PDM = which("pdm") or VENV_BIN / "pdm"
PRECOMMIT = which("pre-commit") or VENV_BIN / "pre-commit"
@@ -107,7 +107,7 @@ def precommit(c):
def setup(c):
c.run(f"{VENV_BIN}/python -m pip install -U pip", pty=PTY)
tools(c)
- c.run(f"{POETRY} install", pty=PTY)
+ c.run(f"{PDM} install", pty=PTY)
precommit(c)