From 2dc542bd24e69cfd6a018c3f896e09e218d0f048 Mon Sep 17 00:00:00 2001 From: rohanpm Date: Wed, 5 Oct 2022 00:43:06 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20release-?= =?UTF-8?q?engineering/repo-autoindex@caeb3abc389e55c5b5344a3b558641afeb7b?= =?UTF-8?q?1e32=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _static/doctools.js | 130 +++----------------------------- _static/pygments.css | 1 + _static/searchtools.js | 74 +++++++++++++----- _static/sphinx_highlight.js | 144 ++++++++++++++++++++++++++++++++++++ genindex.html | 3 +- index.html | 3 +- py-modindex.html | 3 +- search.html | 3 +- searchindex.js | 2 +- 9 files changed, 220 insertions(+), 143 deletions(-) create mode 100644 _static/sphinx_highlight.js diff --git a/_static/doctools.js b/_static/doctools.js index c3db08d..527b876 100644 --- a/_static/doctools.js +++ b/_static/doctools.js @@ -10,6 +10,13 @@ */ "use strict"; +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + const _ready = (callback) => { if (document.readyState !== "loading") { callback(); @@ -18,73 +25,11 @@ const _ready = (callback) => { } }; -/** - * highlight a given string on a node by wrapping it in - * span elements with the given class name. - */ -const _highlight = (node, addItems, text, className) => { - if (node.nodeType === Node.TEXT_NODE) { - const val = node.nodeValue; - const parent = node.parentNode; - const pos = val.toLowerCase().indexOf(text); - if ( - pos >= 0 && - !parent.classList.contains(className) && - !parent.classList.contains("nohighlight") - ) { - let span; - - const closestNode = parent.closest("body, svg, foreignObject"); - const isInSVG = closestNode && closestNode.matches("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.classList.add(className); - } - - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - parent.insertBefore( - span, - parent.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling - ) - ); - node.nodeValue = val.substr(0, pos); - - if (isInSVG) { - const rect = document.createElementNS( - "http://www.w3.org/2000/svg", - "rect" - ); - const bbox = parent.getBBox(); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute("class", className); - addItems.push({ parent: parent, target: rect }); - } - } - } else if (node.matches && !node.matches("button, select, textarea")) { - node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); - } -}; -const _highlightText = (thisNode, text, className) => { - let addItems = []; - _highlight(thisNode, addItems, text, className); - addItems.forEach((obj) => - obj.parent.insertAdjacentElement("beforebegin", obj.target) - ); -}; - /** * Small JavaScript module for the documentation. */ const Documentation = { init: () => { - Documentation.highlightSearchWords(); Documentation.initDomainIndexTable(); Documentation.initOnKeyListeners(); }, @@ -126,51 +71,6 @@ const Documentation = { Documentation.LOCALE = catalog.locale; }, - /** - * highlight the search words provided in the url in the text - */ - highlightSearchWords: () => { - const highlight = - new URLSearchParams(window.location.search).get("highlight") || ""; - const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); - if (terms.length === 0) return; // nothing to do - - // There should never be more than one element matching "div.body" - const divBody = document.querySelectorAll("div.body"); - const body = divBody.length ? divBody[0] : document.querySelector("body"); - window.setTimeout(() => { - terms.forEach((term) => _highlightText(body, term, "highlighted")); - }, 10); - - const searchBox = document.getElementById("searchbox"); - if (searchBox === null) return; - searchBox.appendChild( - document - .createRange() - .createContextualFragment( - '" - ) - ); - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords: () => { - document - .querySelectorAll("#searchbox .highlight-link") - .forEach((el) => el.remove()); - document - .querySelectorAll("span.highlighted") - .forEach((el) => el.classList.remove("highlighted")); - const url = new URL(window.location); - url.searchParams.delete("highlight"); - window.history.replaceState({}, "", url); - }, - /** * helper function to focus on search bar */ @@ -210,15 +110,11 @@ const Documentation = { ) return; - const blacklistedElements = new Set([ - "TEXTAREA", - "INPUT", - "SELECT", - "BUTTON", - ]); document.addEventListener("keydown", (event) => { - if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements - if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; if (!event.shiftKey) { switch (event.key) { @@ -240,10 +136,6 @@ const Documentation = { event.preventDefault(); } break; - case "Escape": - if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; - Documentation.hideSearchWords(); - event.preventDefault(); } } diff --git a/_static/pygments.css b/_static/pygments.css index 87f8bd1..9abe04b 100644 --- a/_static/pygments.css +++ b/_static/pygments.css @@ -54,6 +54,7 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: .highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #000000 } /* Name.Variable */ .highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */ +.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ .highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */ .highlight .mb { color: #990000 } /* Literal.Number.Bin */ .highlight .mf { color: #990000 } /* Literal.Number.Float */ diff --git a/_static/searchtools.js b/_static/searchtools.js index f2fb7d5..e89e34d 100644 --- a/_static/searchtools.js +++ b/_static/searchtools.js @@ -57,14 +57,14 @@ const _removeChildren = (element) => { const _escapeRegExp = (string) => string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string -const _displayItem = (item, highlightTerms, searchTerms) => { +const _displayItem = (item, searchTerms) => { const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; - const [docName, title, anchor, descr] = item; + const [docName, title, anchor, descr, score, _filename] = item; let listItem = document.createElement("li"); let requestUrl; @@ -82,10 +82,9 @@ const _displayItem = (item, highlightTerms, searchTerms) => { requestUrl = docUrlRoot + docName + docFileSuffix; linkUrl = docName + docLinkSuffix; } - const params = new URLSearchParams(); - params.set("highlight", [...highlightTerms].join(" ")); let linkEl = listItem.appendChild(document.createElement("a")); - linkEl.href = linkUrl + "?" + params.toString() + anchor; + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; linkEl.innerHTML = title; if (descr) listItem.appendChild(document.createElement("span")).innerHTML = @@ -96,7 +95,7 @@ const _displayItem = (item, highlightTerms, searchTerms) => { .then((data) => { if (data) listItem.appendChild( - Search.makeSearchSummary(data, searchTerms, highlightTerms) + Search.makeSearchSummary(data, searchTerms) ); }); Search.output.appendChild(listItem); @@ -116,15 +115,14 @@ const _finishSearch = (resultCount) => { const _displayNextItem = ( results, resultCount, - highlightTerms, searchTerms ) => { // results left, load the summary and display it // this is intended to be dynamic (don't sub resultsCount) if (results.length) { - _displayItem(results.pop(), highlightTerms, searchTerms); + _displayItem(results.pop(), searchTerms); setTimeout( - () => _displayNextItem(results, resultCount, highlightTerms, searchTerms), + () => _displayNextItem(results, resultCount, searchTerms), 5 ); } @@ -237,6 +235,12 @@ const Search = { * execute search (requires search index to be loaded) */ query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + // stem the search terms and add them to the correct list const stemmer = new Stemmer(); const searchTerms = new Set(); @@ -264,6 +268,10 @@ const Search = { } }); + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + // console.debug("SEARCH: searching for:"); // console.info("required: ", [...searchTerms]); // console.info("excluded: ", [...excludedTerms]); @@ -272,6 +280,40 @@ const Search = { let results = []; _removeChildren(document.getElementById("search-progress")); + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + // lookup as object objectTerms.forEach((term) => results.push(...Search.performObjectSearch(term, objectTerms)) @@ -318,7 +360,7 @@ const Search = { // console.info("search results:", Search.lastresults); // print the results - _displayNextItem(results, results.length, highlightTerms, searchTerms); + _displayNextItem(results, results.length, searchTerms); }, /** @@ -399,8 +441,8 @@ const Search = { // prepare search const terms = Search._index.terms; const titleTerms = Search._index.titleterms; - const docNames = Search._index.docnames; const filenames = Search._index.filenames; + const docNames = Search._index.docnames; const titles = Search._index.titles; const scoreMap = new Map(); @@ -497,11 +539,9 @@ const Search = { /** * helper function to return a node containing the * search summary for a given text. keywords is a list - * of stemmed words, highlightWords is the list of normal, unstemmed - * words. the first one is used to find the occurrence, the - * latter for highlighting it. + * of stemmed words. */ - makeSearchSummary: (htmlText, keywords, highlightWords) => { + makeSearchSummary: (htmlText, keywords) => { const text = Search.htmlToText(htmlText); if (text === "") return null; @@ -519,10 +559,6 @@ const Search = { summary.classList.add("context"); summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; - highlightWords.forEach((highlightWord) => - _highlightText(summary, highlightWord, "highlighted") - ); - return summary; }, }; diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 0000000..aae669d --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,144 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + parent.insertBefore( + span, + parent.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(SphinxHighlight.highlightSearchWords); +_ready(SphinxHighlight.initEscapeListener); diff --git a/genindex.html b/genindex.html index 54a1383..87cebcd 100644 --- a/genindex.html +++ b/genindex.html @@ -13,6 +13,7 @@ + @@ -110,7 +111,7 @@ ©2022, Red Hat. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.2.3 & Alabaster 0.7.12 diff --git a/index.html b/index.html index d06bdbd..23807b1 100644 --- a/index.html +++ b/index.html @@ -14,6 +14,7 @@ + @@ -232,7 +233,7 @@ of any supported type.

©2022, Red Hat. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.2.3 & Alabaster 0.7.12 | diff --git a/py-modindex.html b/py-modindex.html index 148b713..f1f33d2 100644 --- a/py-modindex.html +++ b/py-modindex.html @@ -13,6 +13,7 @@ + @@ -65,7 +66,7 @@ ©2022, Red Hat. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.2.3 & Alabaster 0.7.12 diff --git a/search.html b/search.html index 3804439..7ac4572 100644 --- a/search.html +++ b/search.html @@ -14,6 +14,7 @@ + @@ -76,7 +77,7 @@ ©2022, Red Hat. | - Powered by Sphinx 5.1.1 + Powered by Sphinx 5.2.3 & Alabaster 0.7.12 diff --git a/searchindex.js b/searchindex.js index 1417881..56fab3d 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["index"], "filenames": ["index.rst"], "titles": ["repo-autoindex"], "terms": {"minim": 0, "gener": 0, "html": 0, "index": 0, "repositori": 0, "i": 0, "python": 0, "librari": 0, "static": 0, "variou": 0, "type": 0, "It": 0, "support": 0, "yum": 0, "repodata": 0, "repomd": 0, "xml": 0, "pulp": 0, "file": 0, "pulp_manifest": 0, "provid": 0, "similar": 0, "function": 0, "tradit": 0, "server": 0, "directori": 0, "httpd": 0, "": 0, "mod_autoindex": 0, "few": 0, "kei": 0, "differ": 0, "The": 0, "ar": 0, "intention": 0, "limit": 0, "show": 0, "onli": 0, "present": 0, "metadata": 0, "rather": 0, "than": 0, "all": 0, "within": 0, "method": 0, "obtain": 0, "can": 0, "custom": 0, "allow": 0, "integr": 0, "exot": 0, "scenario": 0, "demand": 0, "store": 0, "filesystem": 0, "access": 0, "via": 0, "http": 0, "usag": 0, "h": 0, "filenam": 0, "debug": 0, "url": 0, "base": 0, "basenam": 0, "output": 0, "default": 0, "enabl": 0, "verbos": 0, "log": 0, "fals": 0, "In": 0, "follow": 0, "we": 0, "singl": 0, "fedora": 0, "note": 0, "command": 0, "multipl": 0, "reproduc": 0, "structur": 0, "found": 0, "repo_url": 0, "curl": 0, "mirror": 0, "fedoraproject": 0, "org": 0, "mirrorlist": 0, "updat": 0, "releas": 0, "f36": 0, "arch": 0, "x86_64": 0, "egrep": 0, "head": 0, "n1": 0, "fetch": 0, "digitalpacif": 0, "com": 0, "au": 0, "linux": 0, "36": 0, "everyth": 0, "32cf6191e4ef86045c9f34589d98f6378069359746b50def80a66e15fe5a906f": 0, "primari": 0, "gz": 0, "wrote": 0, "packag": 0, "z": 0, "y": 0, "x": 0, "w": 0, "v": 0, "u": 0, "t": 0, "r": 0, "q": 0, "p": 0, "o": 0, "n": 0, "m": 0, "l": 0, "k": 0, "j": 0, "g": 0, "f": 0, "e": 0, "d": 0, "c": 0, "b": 0, "3": 0, "except": 0, "repo_autoindex": 0, "contenterror": 0, "an": 0, "error": 0, "rais": 0, "when": 0, "appear": 0, "invalid": 0, "thi": 0, "abl": 0, "successfulli": 0, "retriev": 0, "determin": 0, "fail": 0, "pars": 0, "For": 0, "corrupt": 0, "mai": 0, "caus": 0, "class": 0, "generatedindex": 0, "str": 0, "relative_dir": 0, "A": 0, "page": 0, "document": 0, "rel": 0, "root": 0, "async": 0, "fetcher": 0, "option": 0, "callabl": 0, "await": 0, "none": 0, "index_href_suffix": 0, "asyncgener": 0, "paramet": 0, "probe": 0, "omit": 0, "us": 0, "basic": 0, "valid": 0, "implement": 0, "must": 0, "satisfi": 0, "contract": 0, "call": 0, "absolut": 0, "which": 0, "exist": 0, "some": 0, "without": 0, "request": 0, "doe": 0, "return": 0, "entir": 0, "given": 0, "impli": 0, "decompress": 0, "compress": 0, "respons": 0, "encount": 0, "propag": 0, "suffix": 0, "ad": 0, "onto": 0, "ani": 0, "link": 0, "between": 0, "one": 0, "anoth": 0, "caller": 0, "intend": 0, "save": 0, "each": 0, "should": 0, "pass": 0, "so": 0, "correct": 0, "On": 0, "other": 0, "hand": 0, "serv": 0, "them": 0, "web": 0, "automat": 0, "left": 0, "blank": 0, "produc": 0, "zero": 0, "more": 0, "instanc": 0, "doesn": 0, "repres": 0, "ha": 0, "failur": 0}, "objects": {"": [[0, 0, 0, "-", "repo_autoindex"]], "repo_autoindex": [[0, 1, 1, "", "ContentError"], [0, 2, 1, "", "GeneratedIndex"], [0, 4, 1, "", "autoindex"]], "repo_autoindex.GeneratedIndex": [[0, 3, 1, "", "content"], [0, 3, 1, "", "relative_dir"]]}, "objtypes": {"0": "py:module", "1": "py:exception", "2": "py:class", "3": "py:attribute", "4": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "exception", "Python exception"], "2": ["py", "class", "Python class"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"]}, "titleterms": {"repo": 0, "autoindex": 0, "content": 0, "overview": 0, "refer": 0, "cli": 0, "posit": 0, "argument": 0, "name": 0, "exampl": 0, "api": 0}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 56}}) \ No newline at end of file +Search.setIndex({"docnames": ["index"], "filenames": ["index.rst"], "titles": ["repo-autoindex"], "terms": {"minim": 0, "gener": 0, "html": 0, "index": 0, "repositori": 0, "i": 0, "python": 0, "librari": 0, "static": 0, "variou": 0, "type": 0, "It": 0, "support": 0, "yum": 0, "repodata": 0, "repomd": 0, "xml": 0, "pulp": 0, "file": 0, "pulp_manifest": 0, "provid": 0, "similar": 0, "function": 0, "tradit": 0, "server": 0, "directori": 0, "httpd": 0, "": 0, "mod_autoindex": 0, "few": 0, "kei": 0, "differ": 0, "The": 0, "ar": 0, "intention": 0, "limit": 0, "show": 0, "onli": 0, "present": 0, "metadata": 0, "rather": 0, "than": 0, "all": 0, "within": 0, "method": 0, "obtain": 0, "can": 0, "custom": 0, "allow": 0, "integr": 0, "exot": 0, "scenario": 0, "demand": 0, "store": 0, "filesystem": 0, "access": 0, "via": 0, "http": 0, "usag": 0, "h": 0, "filenam": 0, "debug": 0, "url": 0, "base": 0, "basenam": 0, "output": 0, "default": 0, "enabl": 0, "verbos": 0, "log": 0, "fals": 0, "In": 0, "follow": 0, "we": 0, "singl": 0, "fedora": 0, "note": 0, "command": 0, "multipl": 0, "reproduc": 0, "structur": 0, "found": 0, "repo_url": 0, "curl": 0, "mirror": 0, "fedoraproject": 0, "org": 0, "mirrorlist": 0, "updat": 0, "releas": 0, "f36": 0, "arch": 0, "x86_64": 0, "egrep": 0, "head": 0, "n1": 0, "fetch": 0, "digitalpacif": 0, "com": 0, "au": 0, "linux": 0, "36": 0, "everyth": 0, "32cf6191e4ef86045c9f34589d98f6378069359746b50def80a66e15fe5a906f": 0, "primari": 0, "gz": 0, "wrote": 0, "packag": 0, "z": 0, "y": 0, "x": 0, "w": 0, "v": 0, "u": 0, "t": 0, "r": 0, "q": 0, "p": 0, "o": 0, "n": 0, "m": 0, "l": 0, "k": 0, "j": 0, "g": 0, "f": 0, "e": 0, "d": 0, "c": 0, "b": 0, "3": 0, "except": 0, "repo_autoindex": 0, "contenterror": 0, "an": 0, "error": 0, "rais": 0, "when": 0, "appear": 0, "invalid": 0, "thi": 0, "abl": 0, "successfulli": 0, "retriev": 0, "determin": 0, "fail": 0, "pars": 0, "For": 0, "corrupt": 0, "mai": 0, "caus": 0, "class": 0, "generatedindex": 0, "str": 0, "relative_dir": 0, "A": 0, "page": 0, "document": 0, "rel": 0, "root": 0, "async": 0, "fetcher": 0, "option": 0, "callabl": 0, "await": 0, "none": 0, "index_href_suffix": 0, "asyncgener": 0, "paramet": 0, "probe": 0, "omit": 0, "us": 0, "basic": 0, "valid": 0, "implement": 0, "must": 0, "satisfi": 0, "contract": 0, "call": 0, "absolut": 0, "which": 0, "exist": 0, "some": 0, "without": 0, "request": 0, "doe": 0, "return": 0, "entir": 0, "given": 0, "impli": 0, "decompress": 0, "compress": 0, "respons": 0, "encount": 0, "propag": 0, "suffix": 0, "ad": 0, "onto": 0, "ani": 0, "link": 0, "between": 0, "one": 0, "anoth": 0, "caller": 0, "intend": 0, "save": 0, "each": 0, "should": 0, "pass": 0, "so": 0, "correct": 0, "On": 0, "other": 0, "hand": 0, "serv": 0, "them": 0, "web": 0, "automat": 0, "left": 0, "blank": 0, "produc": 0, "zero": 0, "more": 0, "instanc": 0, "doesn": 0, "repres": 0, "ha": 0, "failur": 0}, "objects": {"": [[0, 0, 0, "-", "repo_autoindex"]], "repo_autoindex": [[0, 1, 1, "", "ContentError"], [0, 2, 1, "", "GeneratedIndex"], [0, 4, 1, "", "autoindex"]], "repo_autoindex.GeneratedIndex": [[0, 3, 1, "", "content"], [0, 3, 1, "", "relative_dir"]]}, "objtypes": {"0": "py:module", "1": "py:exception", "2": "py:class", "3": "py:attribute", "4": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "exception", "Python exception"], "2": ["py", "class", "Python class"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "function", "Python function"]}, "titleterms": {"repo": 0, "autoindex": 0, "content": 0, "overview": 0, "refer": 0, "cli": 0, "posit": 0, "argument": 0, "name": 0, "exampl": 0, "api": 0}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx": 57}, "alltitles": {"repo-autoindex": [[0, "repo-autoindex"]], "Contents": [[0, "contents"]], "Overview": [[0, "overview"]], "Reference: CLI": [[0, "reference-cli"]], "Positional Arguments": [[0, "Positional Arguments"]], "Named Arguments": [[0, "Named Arguments"]], "Example": [[0, "example"]], "Reference: API": [[0, "module-repo_autoindex"]]}, "indexentries": {"contenterror": [[0, "repo_autoindex.ContentError"]], "generatedindex (class in repo_autoindex)": [[0, "repo_autoindex.GeneratedIndex"]], "autoindex() (in module repo_autoindex)": [[0, "repo_autoindex.autoindex"]], "content (repo_autoindex.generatedindex attribute)": [[0, "repo_autoindex.GeneratedIndex.content"]], "module": [[0, "module-repo_autoindex"]], "relative_dir (repo_autoindex.generatedindex attribute)": [[0, "repo_autoindex.GeneratedIndex.relative_dir"]], "repo_autoindex": [[0, "module-repo_autoindex"]]}}) \ No newline at end of file