fix docs generation

This commit is contained in:
2026-07-14 15:00:57 +03:00
parent 4119a3a36c
commit 6862d9b9e1
7 changed files with 112 additions and 65 deletions
+9 -16
View File
@@ -1,6 +1,15 @@
ahriman.application.handlers package
====================================
Subpackages
-----------
.. toctree::
:maxdepth: 4
ahriman.application.handlers.triggers_support
ahriman.application.handlers.web
Submodules
----------
@@ -268,14 +277,6 @@ ahriman.application.handlers.triggers module
:no-undoc-members:
:show-inheritance:
ahriman.application.handlers.triggers\_support module
-----------------------------------------------------
.. automodule:: ahriman.application.handlers.triggers_support
:members:
:no-undoc-members:
:show-inheritance:
ahriman.application.handlers.unsafe\_commands module
----------------------------------------------------
@@ -316,14 +317,6 @@ ahriman.application.handlers.versions module
:no-undoc-members:
:show-inheritance:
ahriman.application.handlers.web module
---------------------------------------
.. automodule:: ahriman.application.handlers.web
:members:
:no-undoc-members:
:show-inheritance:
Module contents
---------------
@@ -0,0 +1,21 @@
ahriman.application.handlers.triggers\_support package
======================================================
Submodules
----------
ahriman.application.handlers.triggers\_support.triggers\_support module
-----------------------------------------------------------------------
.. automodule:: ahriman.application.handlers.triggers_support.triggers_support
:members:
:no-undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: ahriman.application.handlers.triggers_support
:members:
:no-undoc-members:
:show-inheritance:
+21
View File
@@ -0,0 +1,21 @@
ahriman.application.handlers.web package
========================================
Submodules
----------
ahriman.application.handlers.web.web module
-------------------------------------------
.. automodule:: ahriman.application.handlers.web.web
:members:
:no-undoc-members:
:show-inheritance:
Module contents
---------------
.. automodule:: ahriman.application.handlers.web
:members:
:no-undoc-members:
:show-inheritance:
+22 -17
View File
@@ -1,19 +1,19 @@
# This file was autogenerated by uv via the following command:
# uv pip compile --group pyproject.toml:docs --extra s3 --extra validator --extra web --output-file docs/requirements.txt pyproject.toml
# uv pip compile --group pyproject.toml:docs --no-emit-package ahriman-core --no-emit-package ahriman-triggers --no-emit-package ahriman-web --output-file docs/requirements.txt pyproject.toml
aiohappyeyeballs==2.6.1
# via aiohttp
aiohttp==3.11.18
# via
# ahriman (pyproject.toml)
# ahriman-web
# aiohttp-cors
# aiohttp-jinja2
# aiohttp-sse
aiohttp-cors==0.8.1
# via ahriman (pyproject.toml)
# via ahriman-web
aiohttp-jinja2==1.6
# via ahriman (pyproject.toml)
# via ahriman-web
aiohttp-sse==2.2.0
# via ahriman (pyproject.toml)
# via ahriman-web
aiosignal==1.3.2
# via aiohttp
alabaster==1.0.0
@@ -25,15 +25,15 @@ attrs==25.3.0
babel==2.17.0
# via sphinx
bcrypt==4.3.0
# via ahriman (pyproject.toml)
boto3==1.38.11
# via ahriman (pyproject.toml)
botocore==1.38.11
# via ahriman-core
boto3==1.43.47
# via ahriman-core
botocore==1.43.47
# via
# boto3
# s3transfer
cerberus==1.3.7
# via ahriman (pyproject.toml)
cerberus==1.3.8
# via ahriman-core
certifi==2025.4.26
# via requests
charset-normalizer==3.4.2
@@ -44,7 +44,7 @@ docutils==0.21.2
# sphinx-argparse
# sphinx-rtd-theme
filelock==3.24.0
# via ahriman (pyproject.toml)
# via ahriman-core
frozenlist==1.6.0
# via
# aiohttp
@@ -56,12 +56,12 @@ idna==3.10
imagesize==1.4.1
# via sphinx
inflection==0.5.1
# via ahriman (pyproject.toml)
# via ahriman-core
jinja2==3.1.6
# via
# aiohttp-jinja2
# sphinx
jmespath==1.0.1
jmespath==1.1.0
# via
# boto3
# botocore
@@ -80,18 +80,18 @@ propcache==0.3.1
pydeps==3.0.1
# via ahriman (pyproject.toml:docs)
pyelftools==0.32
# via ahriman (pyproject.toml)
# via ahriman-core
pygments==2.19.1
# via sphinx
python-dateutil==2.9.0.post0
# via botocore
requests==2.32.3
# via
# ahriman (pyproject.toml)
# ahriman-core
# sphinx
roman-numerals-py==3.1.0
# via sphinx
s3transfer==0.12.0
s3transfer==0.19.1
# via boto3
shtab==1.7.2
# via ahriman (pyproject.toml:docs)
@@ -131,3 +131,8 @@ urllib3==2.4.0
# requests
yarl==1.20.0
# via aiohttp
# The following packages were excluded from the output:
# ahriman-core
# ahriman-triggers
# ahriman-web
+13
View File
@@ -36,6 +36,7 @@ check = [
"pylint",
]
docs = [
"ahriman-core[s3,validator]",
"Sphinx",
"argparse-manpage",
"pydeps",
@@ -81,3 +82,15 @@ workspace.members = [
[tool.hatch.version]
path = "ahriman-core/src/ahriman/__init__.py"
[tool.uv.sources]
ahriman-core = {workspace = true}
ahriman-triggers = {workspace = true}
ahriman-web = {workspace = true}
[tool.uv.workspace]
members = [
"ahriman-core",
"ahriman-triggers",
"ahriman-web",
]
+6 -9
View File
@@ -160,9 +160,8 @@ deps = [
{ replace = "ref", of = ["project", "extras"], extend = true },
"uv",
]
dynamic_version = "{[project]name}.__version__"
dynamic_version = "{[project]name}"
pip_pre = true
set_env.PYTHONPATH = "ahriman-core/src:ahriman-triggers/src:ahriman-web/src"
set_env.SPHINX_APIDOC_OPTIONS = "members,no-undoc-members,show-inheritance"
commands = [
[
@@ -190,16 +189,14 @@ commands = [
"--dot-output", "{tox_root}/docs/_static/architecture.dot",
"--no-output",
"--show-dot",
"ahriman-core/src/ahriman",
"{envsitepackagesdir}/{[project]name}",
],
[
"sphinx-apidoc",
"--force",
"--no-toc",
"--output-dir", "docs",
"ahriman-core/src",
"ahriman-triggers/src",
"ahriman-web/src",
"{envsitepackagesdir}/{[project]name}",
],
# compile list of dependencies for rtd.io
[
@@ -207,9 +204,9 @@ commands = [
"pip",
"compile",
"--group", "pyproject.toml:docs",
"--extra", "s3",
"--extra", "validator",
"--extra", "web",
"--no-emit-package", "ahriman-core",
"--no-emit-package", "ahriman-triggers",
"--no-emit-package", "ahriman-web",
"--output-file", "docs/requirements.txt",
"--quiet",
"pyproject.toml",
+20 -23
View File
@@ -17,8 +17,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
import importlib
import sys
from importlib.metadata import Distribution, PackageNotFoundError
from tox.config.sets import EnvConfigSet
from tox.plugin import impl
@@ -26,32 +25,34 @@ from tox.session.state import State
from tox.tox_env.api import ToxEnv
def _extract_version(env_conf: EnvConfigSet, python_path: str | None = None) -> dict[str, str]:
def _extract_version(tox_env: ToxEnv) -> dict[str, str]:
"""
extract version dynamically and set VERSION environment variable
Args:
env_conf(EnvConfigSet): the core configuration object
python_path(str | None): python path variable if available
tox_env(ToxEnv): tox environment containing the installed package
Returns:
dict[str, str]: environment variables which must be inserted
Raises:
PackageNotFoundError: no installed distribution has been found
"""
import_path = env_conf["dynamic_version"]
if not import_path:
distribution = tox_env.conf["dynamic_version"]
if not distribution:
return {}
if python_path is not None:
sys.path.append(python_path)
installed = next(
(
package for package in Distribution.discover(path=[str(tox_env.env_site_package_dir())])
if package.name == distribution
),
None,
)
if installed is None:
raise PackageNotFoundError(distribution)
module_name, variable_name = import_path.rsplit(".", maxsplit=1)
module = importlib.import_module(module_name)
version = getattr(module, variable_name)
# reset import paths
sys.path.pop()
return {"VERSION": version}
return {"VERSION": installed.version}
@impl
@@ -70,7 +71,7 @@ def tox_add_env_config(env_conf: EnvConfigSet, state: State) -> None:
keys=["dynamic_version"],
of_type=str,
default="",
desc="import path for the version variable",
desc="distribution name used to populate the VERSION environment variable",
)
@@ -82,8 +83,4 @@ def tox_before_run_commands(tox_env: ToxEnv) -> None:
Args:
tox_env(ToxEnv): the tox environment being executed
"""
env_conf = tox_env.conf
set_env = env_conf["set_env"]
python_path = set_env.load("PYTHONPATH") if "PYTHONPATH" in set_env else None
set_env.update(_extract_version(env_conf, python_path))
tox_env.conf["set_env"].update(_extract_version(tox_env))