Files
hustoj/web/python-docs/c-api/contextvars.html
2025-03-09 17:10:56 +08:00

396 lines
25 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_CN">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>上下文变量对象 &#8212; Python 3.8.20 文档</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<script src="../_static/translations.js"></script>
<script src="../_static/sidebar.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="在 Python 3.8.20 文档 中搜索"
href="../_static/opensearch.xml"/>
<link rel="author" title="关于这些文档" href="../about.html" />
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="copyright" title="版权所有" href="../copyright.html" />
<link rel="next" title="DateTime 对象" href="datetime.html" />
<link rel="prev" title="协程对象" href="coro.html" />
<link rel="canonical" href="https://docs.python.org/3/c-api/contextvars.html" />
<style>
@media only screen {
table.full-width-table {
width: 100%;
}
}
</style>
<link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
<script type="text/javascript" src="../_static/copybutton.js"></script>
<script type="text/javascript" src="../_static/menu.js"></script>
</head>
<body>
<div class="mobile-nav">
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
<label for="menuToggler" class="toggler__label">
<span></span>
</label>
<nav class="nav-content" role="navigation">
<a href="https://www.python.org/" class="nav-logo">
<img src="../_static/py.svg" alt="Logo"/>
</a>
<div class="version_switcher_placeholder"></div>
<form role="search" class="search" action="../search.html" method="get">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
<path fill-rule="nonzero"
d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" fill="#444"></path>
</svg>
<input type="text" name="q" aria-label="快速搜索"/>
<input type="submit" value="转向"/>
</form>
</nav>
<div class="menu-wrapper">
<nav class="menu" role="navigation" aria-label="main navigation">
<div class="language_switcher_placeholder"></div>
<h4>上一个主题</h4>
<p class="topless"><a href="coro.html"
title="上一章">协程对象</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="datetime.html"
title="下一章">DateTime 对象</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/c-api/contextvars.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</nav>
</div>
</div>
<div id="outdated-warning" style="padding: .5em; text-align: center; background-color: #FFBABA; color: #6A0E0E;">
这个文档所针对的是一个已不再受支持的 Python 旧版本。
你应当升级版本,并阅读
<a href="/3/c-api/contextvars.html"> Python 当前稳定版本的文档</a>.
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
accesskey="I">索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="datetime.html" title="DateTime 对象"
accesskey="N">下一页</a> |</li>
<li class="right" >
<a href="coro.html" title="协程对象"
accesskey="P">上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python/C API 参考手册</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="concrete.html" accesskey="U">具体的对象层</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="context-variables-objects">
<span id="contextvarsobjects"></span><h1>上下文变量对象<a class="headerlink" href="#context-variables-objects" title="永久链接至标题"></a></h1>
<div class="versionchanged" id="contextvarsobjects-pointertype-change">
<div class="admonition note">
<p class="admonition-title">注解</p>
<span class="versionmodified changed">在 3.7.1 版更改: </span><p>在 Python 3.7.1 中,所有上下文变量 C API 的签名被 <strong>更改</strong> 为使用 <a class="reference internal" href="structures.html#c.PyObject" title="PyObject"><code class="xref c c-type docutils literal notranslate"><span class="pre">PyObject</span></code></a> 指针而不是 <a class="reference internal" href="#c.PyContext" title="PyContext"><code class="xref c c-type docutils literal notranslate"><span class="pre">PyContext</span></code></a>, <a class="reference internal" href="#c.PyContextVar" title="PyContextVar"><code class="xref c c-type docutils literal notranslate"><span class="pre">PyContextVar</span></code></a> 以及 <a class="reference internal" href="#c.PyContextToken" title="PyContextToken"><code class="xref c c-type docutils literal notranslate"><span class="pre">PyContextToken</span></code></a>,例如:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="c1">// in 3.7.0:</span>
<span class="n">PyContext</span><span class="w"> </span><span class="o">*</span><span class="nf">PyContext_New</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
<span class="c1">// in 3.7.1+:</span>
<span class="n">PyObject</span><span class="w"> </span><span class="o">*</span><span class="nf">PyContext_New</span><span class="p">(</span><span class="kt">void</span><span class="p">);</span>
</pre></div>
</div>
<p>详情请参阅:issue: ' 34762 '。</p>
</div>
</div>
<div class="versionadded">
<p><span class="versionmodified added">3.7 新版功能.</span></p>
</div>
<p>本节深入介绍了 <a class="reference internal" href="../library/contextvars.html#module-contextvars" title="contextvars: Context Variables"><code class="xref py py-mod docutils literal notranslate"><span class="pre">contextvars</span></code></a> 模块的公用 C API。</p>
<dl class="type">
<dt id="c.PyContext">
<code class="sig-name descname">PyContext</code><a class="headerlink" href="#c.PyContext" title="永久链接至目标"></a></dt>
<dd><p>用于表示 <a class="reference internal" href="../library/contextvars.html#contextvars.Context" title="contextvars.Context"><code class="xref py py-class docutils literal notranslate"><span class="pre">contextvars.Context</span></code></a> 对象的 C 结构体。</p>
</dd></dl>
<dl class="type">
<dt id="c.PyContextVar">
<code class="sig-name descname">PyContextVar</code><a class="headerlink" href="#c.PyContextVar" title="永久链接至目标"></a></dt>
<dd><p>用于表示 <a class="reference internal" href="../library/contextvars.html#contextvars.ContextVar" title="contextvars.ContextVar"><code class="xref py py-class docutils literal notranslate"><span class="pre">contextvars.ContextVar</span></code></a> 对象的 C 结构体。</p>
</dd></dl>
<dl class="type">
<dt id="c.PyContextToken">
<code class="sig-name descname">PyContextToken</code><a class="headerlink" href="#c.PyContextToken" title="永久链接至目标"></a></dt>
<dd><p>用于表示 <a class="reference internal" href="../library/contextvars.html#contextvars.Token" title="contextvars.Token"><code class="xref py py-class docutils literal notranslate"><span class="pre">contextvars.Token</span></code></a> 对象的 C 结构体。</p>
</dd></dl>
<dl class="var">
<dt id="c.PyContext_Type">
<a class="reference internal" href="type.html#c.PyTypeObject" title="PyTypeObject">PyTypeObject</a> <code class="sig-name descname">PyContext_Type</code><a class="headerlink" href="#c.PyContext_Type" title="永久链接至目标"></a></dt>
<dd><p>表示 <em>context</em> 类型的类型对象。</p>
</dd></dl>
<dl class="var">
<dt id="c.PyContextVar_Type">
<a class="reference internal" href="type.html#c.PyTypeObject" title="PyTypeObject">PyTypeObject</a> <code class="sig-name descname">PyContextVar_Type</code><a class="headerlink" href="#c.PyContextVar_Type" title="永久链接至目标"></a></dt>
<dd><p>表示 <em>context variable</em> 类型的类型对象。</p>
</dd></dl>
<dl class="var">
<dt id="c.PyContextToken_Type">
<a class="reference internal" href="type.html#c.PyTypeObject" title="PyTypeObject">PyTypeObject</a> <code class="sig-name descname">PyContextToken_Type</code><a class="headerlink" href="#c.PyContextToken_Type" title="永久链接至目标"></a></dt>
<dd><p>表示 <em>context variable token</em> 类型的类型对象。</p>
</dd></dl>
<p>类型检查宏:</p>
<dl class="function">
<dt id="c.PyContext_CheckExact">
int <code class="sig-name descname">PyContext_CheckExact</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *o</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyContext_CheckExact" title="永久链接至目标"></a></dt>
<dd><p>如果 <em>o</em> 的类型为 <a class="reference internal" href="#c.PyContext_Type" title="PyContext_Type"><code class="xref c c-data docutils literal notranslate"><span class="pre">PyContext_Type</span></code></a> 则返回真值。 <em>o</em> 必须不为 <code class="docutils literal notranslate"><span class="pre">NULL</span></code>。 此函数总是会成功执行。</p>
</dd></dl>
<dl class="function">
<dt id="c.PyContextVar_CheckExact">
int <code class="sig-name descname">PyContextVar_CheckExact</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *o</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyContextVar_CheckExact" title="永久链接至目标"></a></dt>
<dd><p>如果 <em>o</em> 的类型为 <a class="reference internal" href="#c.PyContextVar_Type" title="PyContextVar_Type"><code class="xref c c-data docutils literal notranslate"><span class="pre">PyContextVar_Type</span></code></a> 则返回真值。 <em>o</em> 必须不为 <code class="docutils literal notranslate"><span class="pre">NULL</span></code>。 此函数总是会成功执行。</p>
</dd></dl>
<dl class="function">
<dt id="c.PyContextToken_CheckExact">
int <code class="sig-name descname">PyContextToken_CheckExact</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *o</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyContextToken_CheckExact" title="永久链接至目标"></a></dt>
<dd><p>如果 <em>o</em> 的类型为 <a class="reference internal" href="#c.PyContextToken_Type" title="PyContextToken_Type"><code class="xref c c-data docutils literal notranslate"><span class="pre">PyContextToken_Type</span></code></a> 则返回真值。 <em>o</em> 必须不为 <code class="docutils literal notranslate"><span class="pre">NULL</span></code>。 此函数总是会成功执行。</p>
</dd></dl>
<p>上下文对象管理函数:</p>
<dl class="function">
<dt id="c.PyContext_New">
<a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a> *<code class="sig-name descname">PyContext_New</code><span class="sig-paren">(</span>void<span class="sig-paren">)</span><a class="headerlink" href="#c.PyContext_New" title="永久链接至目标"></a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>创建一个新的空上下文对象。 如果发生错误则返回 <code class="docutils literal notranslate"><span class="pre">NULL</span></code></p>
</dd></dl>
<dl class="function">
<dt id="c.PyContext_Copy">
<a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a> *<code class="sig-name descname">PyContext_Copy</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *ctx</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyContext_Copy" title="永久链接至目标"></a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>创建所传入的 <em>ctx</em> 上下文对象的浅拷贝。 如果发生错误则返回 <code class="docutils literal notranslate"><span class="pre">NULL</span></code></p>
</dd></dl>
<dl class="function">
<dt id="c.PyContext_CopyCurrent">
<a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a> *<code class="sig-name descname">PyContext_CopyCurrent</code><span class="sig-paren">(</span>void<span class="sig-paren">)</span><a class="headerlink" href="#c.PyContext_CopyCurrent" title="永久链接至目标"></a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>创建当前线程上下文的浅拷贝。 如果发生错误则返回 <code class="docutils literal notranslate"><span class="pre">NULL</span></code></p>
</dd></dl>
<dl class="function">
<dt id="c.PyContext_Enter">
int <code class="sig-name descname">PyContext_Enter</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *ctx</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyContext_Enter" title="永久链接至目标"></a></dt>
<dd><p><em>ctx</em> 设为当前线程的当前上下文。 成功时返回 <code class="docutils literal notranslate"><span class="pre">0</span></code>,出错时返回 <code class="docutils literal notranslate"><span class="pre">-1</span></code></p>
</dd></dl>
<dl class="function">
<dt id="c.PyContext_Exit">
int <code class="sig-name descname">PyContext_Exit</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *ctx</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyContext_Exit" title="永久链接至目标"></a></dt>
<dd><p>取消激活 <em>ctx</em> 上下文并将之前的上下文恢复为当前线程的当前上下文。 成功时返回 <code class="docutils literal notranslate"><span class="pre">0</span></code>,出错时返回 <code class="docutils literal notranslate"><span class="pre">-1</span></code></p>
</dd></dl>
<dl class="function">
<dt id="c.PyContext_ClearFreeList">
int <code class="sig-name descname">PyContext_ClearFreeList</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#c.PyContext_ClearFreeList" title="永久链接至目标"></a></dt>
<dd><p>清空上下文变量释放列表。 返回所释放的条目总数。 此函数总是会成功执行。</p>
</dd></dl>
<p>上下文变量函数:</p>
<dl class="function">
<dt id="c.PyContextVar_New">
<a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a> *<code class="sig-name descname">PyContextVar_New</code><span class="sig-paren">(</span>const char<em> *name</em>, <a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *def</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyContextVar_New" title="永久链接至目标"></a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>创建一个新的 <code class="docutils literal notranslate"><span class="pre">ContextVar</span></code> 对象。 形参 <em>name</em> 用于自我检查和调试目的。 形参 <em>def</em> 为上下文变量指定默认值,或为 <code class="docutils literal notranslate"><span class="pre">NULL</span></code> 表示无默认值。 如果发生错误,这个函数会返回 <code class="docutils literal notranslate"><span class="pre">NULL</span></code></p>
</dd></dl>
<dl class="function">
<dt id="c.PyContextVar_Get">
int <code class="sig-name descname">PyContextVar_Get</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *var</em>, <a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *default_value</em>, <a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> **value</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyContextVar_Get" title="永久链接至目标"></a></dt>
<dd><p>获取上下文变量的值。如果在查找过程中发生错误,返回' ' -1 ' ',如果没有发生错误,无论是否找到值,都返回' ' 0 ' '</p>
<p>如果找到上下文变量,<em>value</em> 将是指向它的指针。 如果上下文变量 <em>没有</em> 找到,<em>value</em> 将指向:</p>
<ul class="simple">
<li><p><em>default_value</em>,如果非``NULL``;</p></li>
<li><p><em>var</em> 的默认值,如果不是 <code class="docutils literal notranslate"><span class="pre">NULL</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">NULL</span></code></p></li>
</ul>
<p>除了返回 <code class="docutils literal notranslate"><span class="pre">NULL</span></code>,这个函数会返回一个新的引用。</p>
</dd></dl>
<dl class="function">
<dt id="c.PyContextVar_Set">
<a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a> *<code class="sig-name descname">PyContextVar_Set</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *var</em>, <a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *value</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyContextVar_Set" title="永久链接至目标"></a></dt>
<dd><em class="refcount">Return value: New reference.</em><p>在当前上下文中将 <em>var</em> 设为 <em>value</em>。 返回针对此修改的新凭据对象,或者如果发生错误则返回 <code class="docutils literal notranslate"><span class="pre">NULL</span></code></p>
</dd></dl>
<dl class="function">
<dt id="c.PyContextVar_Reset">
int <code class="sig-name descname">PyContextVar_Reset</code><span class="sig-paren">(</span><a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *var</em>, <a class="reference internal" href="structures.html#c.PyObject" title="PyObject">PyObject</a><em> *token</em><span class="sig-paren">)</span><a class="headerlink" href="#c.PyContextVar_Reset" title="永久链接至目标"></a></dt>
<dd><p>将上下文变量 <em>var</em> 的状态重置为它在返回 <em>token</em><a class="reference internal" href="#c.PyContextVar_Set" title="PyContextVar_Set"><code class="xref c c-func docutils literal notranslate"><span class="pre">PyContextVar_Set()</span></code></a> 被调用之前的状态。 此函数成功时返回 <code class="docutils literal notranslate"><span class="pre">0</span></code>,出错时返回 <code class="docutils literal notranslate"><span class="pre">-1</span></code></p>
</dd></dl>
</section>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h4>上一个主题</h4>
<p class="topless"><a href="coro.html"
title="上一章">协程对象</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="datetime.html"
title="下一章">DateTime 对象</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/c-api/contextvars.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
>索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="datetime.html" title="DateTime 对象"
>下一页</a> |</li>
<li class="right" >
<a href="coro.html" title="协程对象"
>上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python/C API 参考手册</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="concrete.html" >具体的对象层</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="footer">
&copy; <a href="../copyright.html">版权所有</a> 2001-2024, Python Software Foundation.
<br />
This page is licensed under the Python Software Foundation License Version 2.
<br />
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
<br />
<br />
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br />
<br />
最后更新于 12月 09, 2024.
<a href="https://docs.python.org/3/bugs.html">Found a bug</a>?
<br />
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 2.4.4.
</div>
</body>
</html>