627 lines
20 KiB
HTML
627 lines
20 KiB
HTML
<!DOCTYPE html>
|
|
|
|
<html lang="en" data-content_root="./">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>Python Module Index — warehouse 0.0.1 documentation</title>
|
|
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=5ecbeea2" />
|
|
<link rel="stylesheet" type="text/css" href="_static/basic.css?v=b08954a9" />
|
|
<link rel="stylesheet" type="text/css" href="_static/alabaster.css?v=27fed22d" />
|
|
<script src="_static/documentation_options.js?v=d45e8c67"></script>
|
|
<script src="_static/doctools.js?v=fd6eb6e6"></script>
|
|
<script src="_static/sphinx_highlight.js?v=6ffebe34"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/d3@7.9.0/dist/d3.min.js"></script>
|
|
<script type="module">import mermaid from "https://cdn.jsdelivr.net/npm/mermaid@11.12.1/dist/mermaid.esm.min.mjs";
|
|
|
|
|
|
|
|
|
|
|
|
const initStyles = () => {
|
|
const defaultStyle = document.createElement('style');
|
|
defaultStyle.textContent = `pre.mermaid {
|
|
/* Same as .mermaid-container > pre */
|
|
display: block;
|
|
width: 100%;
|
|
}
|
|
|
|
pre.mermaid > svg {
|
|
/* Same as .mermaid-container > pre > svg */
|
|
height: 500px;
|
|
width: 100%;
|
|
max-width: 100% !important;
|
|
}`;
|
|
document.head.appendChild(defaultStyle);
|
|
|
|
const fullscreenStyle = document.createElement('style');
|
|
fullscreenStyle.textContent = `.mermaid-container {
|
|
display: flex;
|
|
flex-direction: row;
|
|
width: 100%;
|
|
}
|
|
|
|
.mermaid-container > pre {
|
|
display: block;
|
|
width: 100%;
|
|
}
|
|
|
|
.mermaid-container > pre > svg {
|
|
height: 500px;
|
|
width: 100%;
|
|
max-width: 100% !important;
|
|
}
|
|
|
|
.mermaid-fullscreen-btn {
|
|
width: 28px;
|
|
height: 28px;
|
|
background: rgba(255, 255, 255, 0.95);
|
|
border: 1px solid rgba(0, 0, 0, 0.3);
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
transition: all 0.2s;
|
|
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
|
|
font-size: 14px;
|
|
line-height: 1;
|
|
padding: 0;
|
|
color: #333;
|
|
}
|
|
|
|
.mermaid-fullscreen-btn:hover {
|
|
opacity: 100% !important;
|
|
background: rgba(255, 255, 255, 1);
|
|
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.3);
|
|
transform: scale(1.1);
|
|
}
|
|
|
|
.mermaid-fullscreen-btn.dark-theme {
|
|
background: rgba(50, 50, 50, 0.95);
|
|
border: 1px solid rgba(255, 255, 255, 0.3);
|
|
color: #e0e0e0;
|
|
}
|
|
|
|
.mermaid-fullscreen-btn.dark-theme:hover {
|
|
background: rgba(60, 60, 60, 1);
|
|
box-shadow: 0 3px 10px rgba(255, 255, 255, 0.2);
|
|
}
|
|
|
|
.mermaid-fullscreen-modal {
|
|
display: none;
|
|
position: fixed !important;
|
|
top: 0 !important;
|
|
left: 0 !important;
|
|
width: 95vw;
|
|
height: 100vh;
|
|
background: rgba(255, 255, 255, 0.98);
|
|
z-index: 9999;
|
|
padding: 20px;
|
|
overflow: auto;
|
|
}
|
|
|
|
.mermaid-fullscreen-modal.dark-theme {
|
|
background: rgba(0, 0, 0, 0.98);
|
|
}
|
|
|
|
.mermaid-fullscreen-modal.active {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.mermaid-container-fullscreen {
|
|
position: relative;
|
|
width: 95vw;
|
|
height: 90vh;
|
|
max-width: 95vw;
|
|
max-height: 90vh;
|
|
background: white;
|
|
border-radius: 8px;
|
|
padding: 20px;
|
|
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
|
|
overflow: auto;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.mermaid-container-fullscreen.dark-theme {
|
|
background: #1a1a1a;
|
|
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.8);
|
|
}
|
|
|
|
.mermaid-container-fullscreen pre.mermaid {
|
|
width: 100%;
|
|
height: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.mermaid-container-fullscreen .mermaid svg {
|
|
height: 100% !important;
|
|
width: 100% !important;
|
|
cursor: grab;
|
|
}
|
|
|
|
.mermaid-fullscreen-close {
|
|
position: fixed !important;
|
|
top: 20px !important;
|
|
right: 20px !important;
|
|
width: 40px;
|
|
height: 40px;
|
|
background: rgba(255, 255, 255, 0.95);
|
|
border: 1px solid rgba(0, 0, 0, 0.2);
|
|
border-radius: 50%;
|
|
cursor: pointer;
|
|
z-index: 10000;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
|
|
transition: all 0.2s;
|
|
font-size: 24px;
|
|
line-height: 1;
|
|
color: #333;
|
|
}
|
|
|
|
.mermaid-fullscreen-close:hover {
|
|
background: white;
|
|
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4);
|
|
transform: scale(1.1);
|
|
}
|
|
|
|
.mermaid-fullscreen-close.dark-theme {
|
|
background: rgba(50, 50, 50, 0.95);
|
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
color: #e0e0e0;
|
|
}
|
|
|
|
.mermaid-fullscreen-close.dark-theme:hover {
|
|
background: rgba(60, 60, 60, 1);
|
|
box-shadow: 0 6px 16px rgba(255, 255, 255, 0.2);
|
|
}
|
|
|
|
.mermaid-fullscreen-modal .mermaid-fullscreen-btn {
|
|
display: none !important;
|
|
}`;
|
|
document.head.appendChild(fullscreenStyle);
|
|
}
|
|
|
|
// Detect if page has dark background
|
|
const isDarkTheme = () => {
|
|
// We use a set of heuristics:
|
|
// 1. Check for common dark mode classes or attributes
|
|
// 2. Check computed background color brightness
|
|
if (document.documentElement.classList.contains('dark') ||
|
|
document.documentElement.getAttribute('data-theme') === 'dark' ||
|
|
document.body.classList.contains('dark') ||
|
|
document.body.getAttribute('data-theme') === 'dark') {
|
|
// console.log("Dark theme detected via class/attribute");
|
|
return true;
|
|
}
|
|
if (document.documentElement.classList.contains('light') ||
|
|
document.documentElement.getAttribute('data-theme') === 'light' ||
|
|
document.body.classList.contains('light') ||
|
|
document.body.getAttribute('data-theme') === 'light') {
|
|
// console.log("Light theme detected via class/attribute");
|
|
return false;
|
|
}
|
|
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
|
// console.log("Dark theme detected via prefers-color-scheme");
|
|
return true;
|
|
}
|
|
const bgColor = window.getComputedStyle(document.body).backgroundColor;
|
|
const match = bgColor.match(/rgb\((\d+),\s*(\d+),\s*(\d+)/);
|
|
if (match) {
|
|
const r = parseInt(match[1]);
|
|
const g = parseInt(match[2]);
|
|
const b = parseInt(match[3]);
|
|
const brightness = (r * 299 + g * 587 + b * 114) / 1000;
|
|
// console.log("Background color brightness:", brightness);
|
|
return brightness < 128;
|
|
}
|
|
// console.log("No dark or light theme detected, defaulting to light theme");
|
|
return false;
|
|
};
|
|
|
|
let darkTheme = isDarkTheme();
|
|
let modal = null;
|
|
let modalContent = null;
|
|
let previousScrollOffset = [window.scrollX, window.scrollY];
|
|
|
|
const runMermaid = async (rerun) => {
|
|
console.log("Running mermaid diagrams, rerun =", rerun);
|
|
// clear all existing mermaid charts
|
|
let all_mermaids = document.querySelectorAll(".mermaid");
|
|
|
|
if (rerun) {
|
|
all_mermaids.forEach((el) => {
|
|
if(!el.hasAttribute("data-original-code")) {
|
|
// store original code
|
|
// console.log(`Storing original code for first run: `, el.innerHTML);
|
|
el.setAttribute('data-original-code', el.innerHTML);
|
|
}
|
|
if(el.getAttribute("data-processed") === "true") {
|
|
// remove and restore original
|
|
el.removeAttribute("data-processed");
|
|
// console.log(`Restoring original code for re-run: `, el.getAttribute('data-original-code'));
|
|
el.innerHTML = el.getAttribute('data-original-code');
|
|
} else {
|
|
// store original code
|
|
// console.log(`Storing original code for re-run: `, el.innerHTML);
|
|
el.setAttribute('data-original-code', el.innerHTML);
|
|
}
|
|
});
|
|
await mermaid.run();
|
|
}
|
|
|
|
all_mermaids = document.querySelectorAll(".mermaid");
|
|
const mermaids_processed = document.querySelectorAll(".mermaid[data-processed='true']");
|
|
|
|
if ("False" === "True") {
|
|
const mermaids_to_add_zoom = -1 === -1 ? all_mermaids.length : -1;
|
|
if(mermaids_to_add_zoom > 0) {
|
|
var svgs = d3.selectAll("");
|
|
if(all_mermaids.length !== mermaids_processed.length) {
|
|
setTimeout(() => runMermaid(false), 200);
|
|
return;
|
|
} else if(svgs.size() !== mermaids_to_add_zoom) {
|
|
setTimeout(() => runMermaid(false), 200);
|
|
return;
|
|
} else {
|
|
svgs.each(function() {
|
|
var svg = d3.select(this);
|
|
svg.html("<g class='wrapper'>" + svg.html() + "</g>");
|
|
var inner = svg.select("g");
|
|
var zoom = d3.zoom().on("zoom", function(event) {
|
|
inner.attr("transform", event.transform);
|
|
});
|
|
svg.call(zoom);
|
|
});
|
|
}
|
|
}
|
|
} else if(all_mermaids.length !== mermaids_processed.length) {
|
|
// Wait for mermaid to process all diagrams
|
|
setTimeout(() => runMermaid(false), 200);
|
|
return;
|
|
}
|
|
|
|
// Stop here if not adding fullscreen capability
|
|
if ("True" !== "True") return;
|
|
|
|
if (modal !== null ) {
|
|
// Destroy existing modal
|
|
modal.remove();
|
|
modal = null;
|
|
modalContent = null;
|
|
}
|
|
|
|
modal = document.createElement('div');
|
|
modal.className = 'mermaid-fullscreen-modal' + (darkTheme ? ' dark-theme' : '');
|
|
modal.setAttribute('role', 'dialog');
|
|
modal.setAttribute('aria-modal', 'true');
|
|
modal.setAttribute('aria-label', 'Fullscreen diagram viewer');
|
|
modal.innerHTML = `
|
|
<button class="mermaid-fullscreen-close${darkTheme ? ' dark-theme' : ''}" aria-label="Close fullscreen">✕</button>
|
|
<div class="mermaid-container-fullscreen${darkTheme ? ' dark-theme' : ''}"></div>
|
|
`;
|
|
document.body.appendChild(modal);
|
|
|
|
modalContent = modal.querySelector('.mermaid-container-fullscreen');
|
|
const closeBtn = modal.querySelector('.mermaid-fullscreen-close');
|
|
|
|
const closeModal = () => {
|
|
modal.classList.remove('active');
|
|
modalContent.innerHTML = '';
|
|
document.body.style.overflow = ''
|
|
window.scrollTo({left: previousScrollOffset[0], top: previousScrollOffset[1], behavior: 'instant'});
|
|
};
|
|
|
|
closeBtn.addEventListener('click', closeModal);
|
|
modal.addEventListener('click', (e) => {
|
|
if (e.target === modal) closeModal();
|
|
});
|
|
document.addEventListener('keydown', (e) => {
|
|
if (e.key === 'Escape' && modal.classList.contains('active')) {
|
|
closeModal();
|
|
}
|
|
});
|
|
|
|
document.querySelectorAll('.mermaid').forEach((mermaidDiv) => {
|
|
if (mermaidDiv.parentNode.classList.contains('mermaid-container') ||
|
|
mermaidDiv.closest('.mermaid-fullscreen-modal')) {
|
|
// Already processed, adjust button class if needed
|
|
const existingBtn = mermaidDiv.parentNode.querySelector('.mermaid-fullscreen-btn');
|
|
if (existingBtn) {
|
|
existingBtn.className = 'mermaid-fullscreen-btn' + (darkTheme ? ' dark-theme' : '');
|
|
}
|
|
return;
|
|
}
|
|
|
|
const container = document.createElement('div');
|
|
container.className = 'mermaid-container';
|
|
mermaidDiv.parentNode.insertBefore(container, mermaidDiv);
|
|
container.appendChild(mermaidDiv);
|
|
|
|
const fullscreenBtn = document.createElement('button');
|
|
fullscreenBtn.className = 'mermaid-fullscreen-btn' + (darkTheme ? ' dark-theme' : '');
|
|
fullscreenBtn.setAttribute('aria-label', 'View diagram in fullscreen');
|
|
fullscreenBtn.textContent = '⛶';
|
|
fullscreenBtn.style.opacity = '50%';
|
|
|
|
// Calculate dynamic position based on diagram's margin and padding
|
|
const diagramStyle = window.getComputedStyle(mermaidDiv);
|
|
const marginTop = parseFloat(diagramStyle.marginTop) || 0;
|
|
const marginRight = parseFloat(diagramStyle.marginRight) || 0;
|
|
const paddingTop = parseFloat(diagramStyle.paddingTop) || 0;
|
|
const paddingRight = parseFloat(diagramStyle.paddingRight) || 0;
|
|
fullscreenBtn.style.top = `${marginTop + paddingTop + 4}px`;
|
|
fullscreenBtn.style.right = `${marginRight + paddingRight + 4}px`;
|
|
|
|
fullscreenBtn.addEventListener('click', () => {
|
|
previousScrollOffset = [window.scroll, window.scrollY];
|
|
const clone = mermaidDiv.cloneNode(true);
|
|
modalContent.innerHTML = '';
|
|
modalContent.appendChild(clone);
|
|
|
|
const svg = clone.querySelector('svg');
|
|
if (svg) {
|
|
svg.removeAttribute('width');
|
|
svg.removeAttribute('height');
|
|
svg.style.width = '100%';
|
|
svg.style.height = 'auto';
|
|
svg.style.maxWidth = '100%';
|
|
svg.style.sdisplay = 'block';
|
|
|
|
if ("False" === "True") {
|
|
setTimeout(() => {
|
|
const g = svg.querySelector('g');
|
|
if (g) {
|
|
var svgD3 = d3.select(svg);
|
|
svgD3.html("<g class='wrapper'>" + svgD3.html() + "</g>");
|
|
var inner = svgD3.select("g");
|
|
var zoom = d3.zoom().on("zoom", function(event) {
|
|
inner.attr("transform", event.transform);
|
|
});
|
|
svgD3.call(zoom);
|
|
}
|
|
}, 100);
|
|
}
|
|
}
|
|
|
|
modal.classList.add('active');
|
|
document.body.style.overflow = 'hidden';
|
|
});
|
|
container.appendChild(fullscreenBtn);
|
|
});
|
|
};
|
|
|
|
const load = async () => {
|
|
initStyles();
|
|
|
|
await runMermaid(true);
|
|
|
|
const reRunIfThemeChanges = async () => {
|
|
const newDarkTheme = isDarkTheme();
|
|
if (newDarkTheme !== darkTheme) {
|
|
darkTheme = newDarkTheme;
|
|
console.log("Theme change detected, re-running mermaid with", darkTheme ? "dark" : "default", "theme");
|
|
await mermaid.initialize(
|
|
{...JSON.parse(
|
|
`{"startOnLoad": false}`
|
|
),
|
|
...{ darkMode: darkTheme, theme: darkTheme ? 'dark' : 'default' },
|
|
}
|
|
);
|
|
await runMermaid(true);
|
|
}
|
|
};
|
|
|
|
// Update theme classes when theme changes
|
|
const themeObserver = new MutationObserver(reRunIfThemeChanges);
|
|
themeObserver.observe(document.documentElement, {
|
|
attributes: true,
|
|
attributeFilter: ['class', 'style', 'data-theme']
|
|
});
|
|
themeObserver.observe(document.body, {
|
|
attributes: true,
|
|
attributeFilter: ['class', 'style', 'data-theme']
|
|
});
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
console.log("Initializing mermaid with", darkTheme ? "dark" : "default", "theme");
|
|
mermaid.initialize(
|
|
{...JSON.parse(
|
|
`{"startOnLoad": false}`
|
|
),
|
|
...{ darkMode: darkTheme, theme: darkTheme ? 'dark' : 'default' },
|
|
}
|
|
);
|
|
|
|
window.addEventListener("load", load);
|
|
window.runMermaid = runMermaid;</script>
|
|
<link rel="index" title="Index" href="genindex.html" />
|
|
<link rel="search" title="Search" href="search.html" />
|
|
|
|
|
|
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
DOCUMENTATION_OPTIONS.COLLAPSE_INDEX = true;
|
|
</script>
|
|
|
|
|
|
</head><body>
|
|
|
|
|
|
<div class="document">
|
|
<div class="documentwrapper">
|
|
<div class="bodywrapper">
|
|
|
|
|
|
<div class="body" role="main">
|
|
|
|
|
|
<h1>Python Module Index</h1>
|
|
|
|
<div class="modindex-jumpbox">
|
|
<a href="#cap-a"><strong>a</strong></a> |
|
|
<a href="#cap-g"><strong>g</strong></a> |
|
|
<a href="#cap-l"><strong>l</strong></a> |
|
|
<a href="#cap-m"><strong>m</strong></a> |
|
|
<a href="#cap-p"><strong>p</strong></a> |
|
|
<a href="#cap-r"><strong>r</strong></a> |
|
|
<a href="#cap-s"><strong>s</strong></a> |
|
|
<a href="#cap-v"><strong>v</strong></a>
|
|
</div>
|
|
|
|
<table class="indextable modindextable">
|
|
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
|
<tr class="cap" id="cap-a"><td></td><td>
|
|
<strong>a</strong></td><td></td></tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>
|
|
<a href="api_reference.html#module-async_msssql_query"><code class="xref">async_msssql_query</code></a></td><td>
|
|
<em></em></td></tr>
|
|
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
|
<tr class="cap" id="cap-g"><td></td><td>
|
|
<strong>g</strong></td><td></td></tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>
|
|
<a href="api_reference.html#module-gestione_aree_frame_async"><code class="xref">gestione_aree_frame_async</code></a></td><td>
|
|
<em></em></td></tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>
|
|
<a href="api_reference.html#module-gestione_pickinglist"><code class="xref">gestione_pickinglist</code></a></td><td>
|
|
<em></em></td></tr>
|
|
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
|
<tr class="cap" id="cap-l"><td></td><td>
|
|
<strong>l</strong></td><td></td></tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>
|
|
<a href="api_reference.html#module-layout_window"><code class="xref">layout_window</code></a></td><td>
|
|
<em></em></td></tr>
|
|
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
|
<tr class="cap" id="cap-m"><td></td><td>
|
|
<strong>m</strong></td><td></td></tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>
|
|
<a href="api_reference.html#module-main"><code class="xref">main</code></a></td><td>
|
|
<em></em></td></tr>
|
|
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
|
<tr class="cap" id="cap-p"><td></td><td>
|
|
<strong>p</strong></td><td></td></tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>
|
|
<a href="api_reference.html#module-prenota_sprenota_sql"><code class="xref">prenota_sprenota_sql</code></a></td><td>
|
|
<em></em></td></tr>
|
|
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
|
<tr class="cap" id="cap-r"><td></td><td>
|
|
<strong>r</strong></td><td></td></tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>
|
|
<a href="api_reference.html#module-reset_corsie"><code class="xref">reset_corsie</code></a></td><td>
|
|
<em></em></td></tr>
|
|
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
|
<tr class="cap" id="cap-s"><td></td><td>
|
|
<strong>s</strong></td><td></td></tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>
|
|
<a href="api_reference.html#module-search_pallets"><code class="xref">search_pallets</code></a></td><td>
|
|
<em></em></td></tr>
|
|
<tr class="pcap"><td></td><td> </td><td></td></tr>
|
|
<tr class="cap" id="cap-v"><td></td><td>
|
|
<strong>v</strong></td><td></td></tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>
|
|
<a href="api_reference.html#module-view_celle_multiple"><code class="xref">view_celle_multiple</code></a></td><td>
|
|
<em></em></td></tr>
|
|
</table>
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="sphinxsidebar" role="navigation" aria-label="Main">
|
|
<div class="sphinxsidebarwrapper">
|
|
<h1 class="logo"><a href="index.html">warehouse</a></h1>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<search id="searchbox" style="display: none" role="search">
|
|
<div class="searchformwrapper">
|
|
<form class="search" action="search.html" method="get">
|
|
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" placeholder="Search"/>
|
|
<input type="submit" value="Go" />
|
|
</form>
|
|
</div>
|
|
</search>
|
|
<script>document.getElementById('searchbox').style.display = "block"</script><h3>Navigation</h3>
|
|
<p class="caption" role="heading"><span class="caption-text">Contenuti</span></p>
|
|
<ul>
|
|
<li class="toctree-l1"><a class="reference internal" href="architecture.html">Architettura Complessiva</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="api_reference.html">Riferimento API</a></li>
|
|
<li class="toctree-l1"><a class="reference internal" href="flows/index.html">Flow Diagrams</a></li>
|
|
</ul>
|
|
|
|
<div class="relations">
|
|
<h3>Related Topics</h3>
|
|
<ul>
|
|
<li><a href="index.html">Documentation overview</a><ul>
|
|
</ul></li>
|
|
</ul>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
</div>
|
|
<div class="clearer"></div>
|
|
</div>
|
|
<div class="footer">
|
|
©.
|
|
|
|
|
|
|
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 9.1.0</a>
|
|
& <a href="https://alabaster.readthedocs.io">Alabaster 1.0.0</a>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</body>
|
|
</html> |