Skip to content

Commit 413eeef

Browse files
author
github-actions
committed
Docs build 2025-10-21
1 parent 59b6d13 commit 413eeef

File tree

314 files changed

+4608
-1682
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

314 files changed

+4608
-1682
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
pyinfra.api.metadata module
2+
===========================
3+
4+
.. automodule:: pyinfra.api.metadata
5+
:members:
6+
:show-inheritance:
7+
:undoc-members:

en/latest/_sources/connectors.rst.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
Connectors Index
22
================
33

4+
.. raw:: html
5+
6+
<nav class="under-title-tabs">
7+
See also:
8+
<a href="operations.html">Operations Index</a>
9+
<a href="facts.html">Facts Index</a>
10+
</nav>
11+
412
Connectors enable pyinfra to integrate with other tools out of the box. Connectors can do one of three things:
513

614
+ Implement how commands are executed (``@ssh``, ``@local``)

en/latest/_sources/facts.rst.txt

Lines changed: 57 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
Facts Index
22
===========
33

4+
.. raw:: html
5+
6+
<nav class="under-title-tabs">
7+
See also:
8+
<a href="operations.html">Operations Index</a>
9+
<a href="connectors.html">Connectors Index</a>
10+
</nav>
11+
412
pyinfra uses **facts** to determine the existing state of a remote server. Operations use this information to generate commands which alter the state. Facts are read-only and are populated at the beginning of the deploy.
513

614
Facts can be executed/tested via the command line:
@@ -35,26 +43,60 @@ You can leverage facts within :doc:`operations <using-operations>` like this:
3543
3644
**Want a new fact?** Check out :doc:`the writing facts guide <./api/operations>`.
3745

38-
Facts, like :doc:`operations <operations>`, are namespaced as different modules - shortcuts to each of these can be found in the sidebar.
39-
4046
.. raw:: html
4147

42-
<style type="text/css">
43-
#facts-index .toctree-wrapper > ul {
44-
padding: 0;
45-
}
46-
#facts-index .toctree-wrapper > ul > li {
47-
padding: 0;
48-
list-style: none;
49-
margin: 20px 0;
50-
}
51-
#facts-index .toctree-wrapper > ul > li > ul > li {
52-
display: inline-block;
53-
}
54-
</style>
48+
<div class="container my-4">
49+
<!-- Dropdown Filter -->
50+
<div class="mb-4">
51+
<label for="tag-dropdown" class="form-label">Filter by Tag:</label>
52+
<select class="form-select" id="tag-dropdown">
53+
<option value="All">All</option>
54+
{% for tag in tags %}
55+
<option value="{{ tag.title_case }}">{{ tag.title_case }}</option>
56+
{% endfor %}
57+
</select>
58+
</div>
59+
60+
<!-- Cards Grid -->
61+
<div class="row" id="card-container">
62+
{% for plugin in fact_plugins %}
63+
<div class="col-md-4 mb-4 card-item">
64+
<div class="card h-100">
65+
<div class="card-body">
66+
<h5 class="card-title">
67+
<a href="./facts/{{ plugin.name }}.html">
68+
{{ plugin.name }}
69+
</a>
70+
<p class="card-text">{{ plugin.description }}</p>
71+
{% for tag in plugin.tags %}
72+
<span class="badge bg-secondary">{{ tag.title_case }}</span>
73+
{% endfor %}
74+
</div>
75+
</div>
76+
</div>
77+
{% endfor %}
78+
</div>
79+
</div>
80+
<script>
81+
document.getElementById('tag-dropdown').addEventListener('change', function () {
82+
const selectedTag = this.value;
83+
const cards = document.querySelectorAll('.card-item');
84+
85+
cards.forEach(card => {
86+
const tags = Array.from(card.querySelectorAll('.badge')).map(badge => badge.textContent.trim());
87+
88+
if (selectedTag === 'All' || tags.includes(selectedTag)) {
89+
card.style.display = 'block';
90+
} else {
91+
card.style.display = 'none';
92+
}
93+
});
94+
});
95+
</script>
5596

5697
.. toctree::
5798
:maxdepth: 2
5899
:glob:
100+
:hidden:
59101

60102
facts/*
Lines changed: 57 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,73 @@
11
Operations Index
22
================
33

4-
Operations are used to describe changes to make to systems in the inventory. Use them to define state and pyinfra will make any necessary changes to reach that state. All operations accept a set of :doc:`global arguments <arguments>` and are grouped as Python modules.
5-
6-
**Want a new operation?** Check out :doc:`the writing operations guide <./api/operations>`.
7-
84
.. raw:: html
95

10-
<h3>Popular operations by category</h3>
11-
12-
.. admonition:: Basics
13-
:class: note inline
14-
15-
:doc:`operations/files`, :doc:`operations/server`, :doc:`operations/git`, :doc:`operations/systemd`
16-
17-
.. admonition:: System Packages
18-
:class: note inline
19-
20-
:doc:`operations/apt`, :doc:`operations/apk`, :doc:`operations/brew`, :doc:`operations/dnf`, :doc:`operations/yum`
6+
<nav class="under-title-tabs">
7+
See also:
8+
<a href="facts.html">Facts Index</a>
9+
<a href="connectors.html">Connectors Index</a>
10+
</nav>
2111

22-
.. admonition:: Language Packages
23-
:class: note inline
24-
25-
:doc:`operations/gem`, :doc:`operations/npm`, :doc:`operations/pip`
26-
27-
.. admonition:: Databases
28-
:class: note inline
29-
30-
:doc:`operations/postgresql`, :doc:`operations/mysql`
31-
32-
.. raw:: html
12+
Operations are used to describe changes to make to systems in the inventory. Use them to define state and pyinfra will make any necessary changes to reach that state. All operations accept a set of :doc:`global arguments <arguments>` and are grouped as Python modules.
3313

34-
<h3>All operations alphabetically</h3>
14+
**Want a new operation?** Check out :doc:`the writing operations guide <./api/operations>`.
3515

3616
.. raw:: html
3717

38-
<style type="text/css">
39-
#operations-index .toctree-wrapper > ul {
40-
padding: 0;
41-
}
42-
#operations-index .toctree-wrapper > ul > li {
43-
padding: 0;
44-
list-style: none;
45-
margin: 20px 0;
46-
}
47-
#operations-index .toctree-wrapper > ul > li > ul > li {
48-
display: inline-block;
49-
}
50-
</style>
18+
<div class="container my-4">
19+
<!-- Dropdown Filter -->
20+
<div class="mb-4">
21+
<label for="tag-dropdown" class="form-label">Filter by Tag:</label>
22+
<select class="form-select" id="tag-dropdown">
23+
<option value="All">All</option>
24+
{% for tag in tags %}
25+
<option value="{{ tag.title_case }}">{{ tag.title_case }}</option>
26+
{% endfor %}
27+
</select>
28+
</div>
29+
30+
<!-- Cards Grid -->
31+
<div class="row" id="card-container">
32+
{% for plugin in operation_plugins %}
33+
<div class="col-md-4 mb-4 card-item">
34+
<div class="card h-100">
35+
<div class="card-body">
36+
<h5 class="card-title">
37+
<a href="./operations/{{ plugin.name }}.html">
38+
{{ plugin.name }}
39+
</a>
40+
</h5>
41+
<p class="card-text">{{ plugin.description }}</p>
42+
{% for tag in plugin.tags %}
43+
<span class="badge bg-secondary">{{ tag.title_case }}</span>
44+
{% endfor %}
45+
</div>
46+
</div>
47+
</div>
48+
{% endfor %}
49+
</div>
50+
</div>
51+
<script>
52+
document.getElementById('tag-dropdown').addEventListener('change', function () {
53+
const selectedTag = this.value;
54+
const cards = document.querySelectorAll('.card-item');
55+
56+
cards.forEach(card => {
57+
const tags = Array.from(card.querySelectorAll('.badge')).map(badge => badge.textContent.trim());
58+
59+
if (selectedTag === 'All' || tags.includes(selectedTag)) {
60+
card.style.display = 'block';
61+
} else {
62+
card.style.display = 'none';
63+
}
64+
});
65+
});
66+
</script>
5167

5268
.. toctree::
5369
:maxdepth: 2
5470
:glob:
71+
:hidden:
5572

5673
operations/*

en/latest/_static/guzzle.css

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1275,4 +1275,21 @@ span.eqno {
12751275

12761276
.algolia-autocomplete.algolia-autocomplete-left .ds-dropdown-menu::before {
12771277
left: 15px !important;
1278+
}
1279+
1280+
1281+
/* Under title/header tab links (inter-index links)
1282+
--------------------------------------------------*/
1283+
nav.under-title-tabs {
1284+
margin: -20px 0 20px 0;
1285+
1286+
a {
1287+
margin-left: 10px;
1288+
display: inline-block;
1289+
padding: 4px 0;
1290+
1291+
&.active {
1292+
color: #959077;
1293+
}
1294+
}
12781295
}

en/latest/api/connectors.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
2020
<link rel="stylesheet" href="../_static/guzzle.css" type="text/css" />
2121
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=5349f25f" />
22-
<link rel="stylesheet" type="text/css" href="../_static/guzzle.css?v=1c50d839" />
22+
<link rel="stylesheet" type="text/css" href="../_static/guzzle.css?v=fb44425a" />
2323
<script src="../_static/documentation_options.js?v=5929fcd5"></script>
2424
<script src="../_static/doctools.js?v=9bcbadda"></script>
2525
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>

en/latest/api/deploys.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
2020
<link rel="stylesheet" href="../_static/guzzle.css" type="text/css" />
2121
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=5349f25f" />
22-
<link rel="stylesheet" type="text/css" href="../_static/guzzle.css?v=1c50d839" />
22+
<link rel="stylesheet" type="text/css" href="../_static/guzzle.css?v=fb44425a" />
2323
<script src="../_static/documentation_options.js?v=5929fcd5"></script>
2424
<script src="../_static/doctools.js?v=9bcbadda"></script>
2525
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>

en/latest/api/facts.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
2020
<link rel="stylesheet" href="../_static/guzzle.css" type="text/css" />
2121
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=5349f25f" />
22-
<link rel="stylesheet" type="text/css" href="../_static/guzzle.css?v=1c50d839" />
22+
<link rel="stylesheet" type="text/css" href="../_static/guzzle.css?v=fb44425a" />
2323
<script src="../_static/documentation_options.js?v=5929fcd5"></script>
2424
<script src="../_static/doctools.js?v=9bcbadda"></script>
2525
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>

en/latest/api/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
2020
<link rel="stylesheet" href="../_static/guzzle.css" type="text/css" />
2121
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=5349f25f" />
22-
<link rel="stylesheet" type="text/css" href="../_static/guzzle.css?v=1c50d839" />
22+
<link rel="stylesheet" type="text/css" href="../_static/guzzle.css?v=fb44425a" />
2323
<script src="../_static/documentation_options.js?v=5929fcd5"></script>
2424
<script src="../_static/doctools.js?v=9bcbadda"></script>
2525
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>

en/latest/api/operations.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
2020
<link rel="stylesheet" href="../_static/guzzle.css" type="text/css" />
2121
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=5349f25f" />
22-
<link rel="stylesheet" type="text/css" href="../_static/guzzle.css?v=1c50d839" />
22+
<link rel="stylesheet" type="text/css" href="../_static/guzzle.css?v=fb44425a" />
2323
<script src="../_static/documentation_options.js?v=5929fcd5"></script>
2424
<script src="../_static/doctools.js?v=9bcbadda"></script>
2525
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>

0 commit comments

Comments
 (0)