diff --git a/code/backend b/code/backend new file mode 120000 index 0000000..dc41427 --- /dev/null +++ b/code/backend @@ -0,0 +1 @@ +../nest_backend \ No newline at end of file diff --git a/code/crawler b/code/crawler new file mode 120000 index 0000000..278e8a9 --- /dev/null +++ b/code/crawler @@ -0,0 +1 @@ +../nest_crawler \ No newline at end of file diff --git a/code/frontend b/code/frontend new file mode 120000 index 0000000..69a7948 --- /dev/null +++ b/code/frontend @@ -0,0 +1 @@ +../nest_frontend \ No newline at end of file diff --git a/doc b/doc new file mode 120000 index 0000000..ffcee85 --- /dev/null +++ b/doc @@ -0,0 +1 @@ +./docs \ No newline at end of file diff --git a/docs/build/latex/1-backlog.png b/docs/build/latex/1-backlog.png new file mode 100644 index 0000000..832fb72 Binary files /dev/null and b/docs/build/latex/1-backlog.png differ diff --git a/docs/build/latex/1-burndown.png b/docs/build/latex/1-burndown.png new file mode 100644 index 0000000..17c6009 Binary files /dev/null and b/docs/build/latex/1-burndown.png differ diff --git a/docs/build/latex/1-tasks.png b/docs/build/latex/1-tasks.png new file mode 100644 index 0000000..e558894 Binary files /dev/null and b/docs/build/latex/1-tasks.png differ diff --git a/docs/build/latex/2-backlog.png b/docs/build/latex/2-backlog.png new file mode 100644 index 0000000..6d0a0f1 Binary files /dev/null and b/docs/build/latex/2-backlog.png differ diff --git a/docs/build/latex/2-burndown.png b/docs/build/latex/2-burndown.png new file mode 100644 index 0000000..42012bf Binary files /dev/null and b/docs/build/latex/2-burndown.png differ diff --git a/docs/build/latex/2-tasks.png b/docs/build/latex/2-tasks.png new file mode 100644 index 0000000..2a014ed Binary files /dev/null and b/docs/build/latex/2-tasks.png differ diff --git a/docs/build/latex/3-backlog.png b/docs/build/latex/3-backlog.png new file mode 100644 index 0000000..e52a13c Binary files /dev/null and b/docs/build/latex/3-backlog.png differ diff --git a/docs/build/latex/3-tasks.png b/docs/build/latex/3-tasks.png new file mode 100644 index 0000000..ae657ba Binary files /dev/null and b/docs/build/latex/3-tasks.png differ diff --git a/docs/build/latex/Backlog1.PNG b/docs/build/latex/Backlog1.PNG new file mode 100644 index 0000000..92bb0d5 Binary files /dev/null and b/docs/build/latex/Backlog1.PNG differ diff --git a/docs/build/latex/Backlog2.PNG b/docs/build/latex/Backlog2.PNG new file mode 100644 index 0000000..a8a990a Binary files /dev/null and b/docs/build/latex/Backlog2.PNG differ diff --git a/docs/build/latex/Backlog3.PNG b/docs/build/latex/Backlog3.PNG new file mode 100644 index 0000000..cc82c9b Binary files /dev/null and b/docs/build/latex/Backlog3.PNG differ diff --git a/docs/build/latex/Backlog4.PNG b/docs/build/latex/Backlog4.PNG new file mode 100644 index 0000000..4092a71 Binary files /dev/null and b/docs/build/latex/Backlog4.PNG differ diff --git a/docs/build/latex/Backlog5.PNG b/docs/build/latex/Backlog5.PNG new file mode 100644 index 0000000..0397503 Binary files /dev/null and b/docs/build/latex/Backlog5.PNG differ diff --git a/docs/build/latex/Burndown4.png b/docs/build/latex/Burndown4.png new file mode 100644 index 0000000..3f89778 Binary files /dev/null and b/docs/build/latex/Burndown4.png differ diff --git a/docs/build/latex/CasiUso1.PNG b/docs/build/latex/CasiUso1.PNG new file mode 100644 index 0000000..f52b9c0 Binary files /dev/null and b/docs/build/latex/CasiUso1.PNG differ diff --git a/docs/build/latex/CasiUso2.PNG b/docs/build/latex/CasiUso2.PNG new file mode 100644 index 0000000..ed7b388 Binary files /dev/null and b/docs/build/latex/CasiUso2.PNG differ diff --git a/docs/build/latex/CasiUso3.PNG b/docs/build/latex/CasiUso3.PNG new file mode 100644 index 0000000..54a9a8b Binary files /dev/null and b/docs/build/latex/CasiUso3.PNG differ diff --git a/docs/build/latex/CasiUso4.PNG b/docs/build/latex/CasiUso4.PNG new file mode 100644 index 0000000..86ea489 Binary files /dev/null and b/docs/build/latex/CasiUso4.PNG differ diff --git a/docs/build/latex/CasiUso5.PNG b/docs/build/latex/CasiUso5.PNG new file mode 100644 index 0000000..adc9683 Binary files /dev/null and b/docs/build/latex/CasiUso5.PNG differ diff --git a/docs/build/latex/CasiUso6.PNG b/docs/build/latex/CasiUso6.PNG new file mode 100644 index 0000000..7d70857 Binary files /dev/null and b/docs/build/latex/CasiUso6.PNG differ diff --git a/docs/build/latex/LICRcyr2utf8.xdy b/docs/build/latex/LICRcyr2utf8.xdy new file mode 100644 index 0000000..a9ca1c8 --- /dev/null +++ b/docs/build/latex/LICRcyr2utf8.xdy @@ -0,0 +1,101 @@ +;; -*- coding: utf-8; mode: Lisp; -*- +;; style file for xindy +;; filename: LICRcyr2utf8.xdy +;; description: style file for xindy which maps back LaTeX Internal +;; Character Representation of Cyrillic to utf-8 +;; usage: for use with pdflatex produced .idx files. +;; Contributed by the Sphinx team, July 2018. +(merge-rule "\IeC {\'\CYRG }" "Ѓ" :string) +(merge-rule "\IeC {\'\CYRK }" "Ќ" :string) +(merge-rule "\IeC {\'\cyrg }" "ѓ" :string) +(merge-rule "\IeC {\'\cyrk }" "ќ" :string) +(merge-rule "\IeC {\CYRA }" "А" :string) +(merge-rule "\IeC {\CYRB }" "Б" :string) +(merge-rule "\IeC {\CYRC }" "Ц" :string) +(merge-rule "\IeC {\CYRCH }" "Ч" :string) +(merge-rule "\IeC {\CYRD }" "Д" :string) +(merge-rule "\IeC {\CYRDJE }" "Ђ" :string) +(merge-rule "\IeC {\CYRDZE }" "Ѕ" :string) +(merge-rule "\IeC {\CYRDZHE }" "Џ" :string) +(merge-rule "\IeC {\CYRE }" "Е" :string) +(merge-rule "\IeC {\CYREREV }" "Э" :string) +(merge-rule "\IeC {\CYRERY }" "Ы" :string) +(merge-rule "\IeC {\CYRF }" "Ф" :string) +(merge-rule "\IeC {\CYRG }" "Г" :string) +(merge-rule "\IeC {\CYRGUP }" "Ґ" :string) +(merge-rule "\IeC {\CYRH }" "Х" :string) +(merge-rule "\IeC {\CYRHRDSN }" "Ъ" :string) +(merge-rule "\IeC {\CYRI }" "И" :string) +(merge-rule "\IeC {\CYRIE }" "Є" :string) +(merge-rule "\IeC {\CYRII }" "І" :string) +(merge-rule "\IeC {\CYRISHRT }" "Й" :string) +(merge-rule "\IeC {\CYRJE }" "Ј" :string) +(merge-rule "\IeC {\CYRK }" "К" :string) +(merge-rule "\IeC {\CYRL }" "Л" :string) +(merge-rule "\IeC {\CYRLJE }" "Љ" :string) +(merge-rule "\IeC {\CYRM }" "М" :string) +(merge-rule "\IeC {\CYRN }" "Н" :string) +(merge-rule "\IeC {\CYRNJE }" "Њ" :string) +(merge-rule "\IeC {\CYRO }" "О" :string) +(merge-rule "\IeC {\CYRP }" "П" :string) +(merge-rule "\IeC {\CYRR }" "Р" :string) +(merge-rule "\IeC {\CYRS }" "С" :string) +(merge-rule "\IeC {\CYRSFTSN }" "Ь" :string) +(merge-rule "\IeC {\CYRSH }" "Ш" :string) +(merge-rule "\IeC {\CYRSHCH }" "Щ" :string) +(merge-rule "\IeC {\CYRT }" "Т" :string) +(merge-rule "\IeC {\CYRTSHE }" "Ћ" :string) +(merge-rule "\IeC {\CYRU }" "У" :string) +(merge-rule "\IeC {\CYRUSHRT }" "Ў" :string) +(merge-rule "\IeC {\CYRV }" "В" :string) +(merge-rule "\IeC {\CYRYA }" "Я" :string) +(merge-rule "\IeC {\CYRYI }" "Ї" :string) +(merge-rule "\IeC {\CYRYO }" "Ё" :string) +(merge-rule "\IeC {\CYRYU }" "Ю" :string) +(merge-rule "\IeC {\CYRZ }" "З" :string) +(merge-rule "\IeC {\CYRZH }" "Ж" :string) +(merge-rule "\IeC {\cyra }" "а" :string) +(merge-rule "\IeC {\cyrb }" "б" :string) +(merge-rule "\IeC {\cyrc }" "ц" :string) +(merge-rule "\IeC {\cyrch }" "ч" :string) +(merge-rule "\IeC {\cyrd }" "д" :string) +(merge-rule "\IeC {\cyrdje }" "ђ" :string) +(merge-rule "\IeC {\cyrdze }" "ѕ" :string) +(merge-rule "\IeC {\cyrdzhe }" "џ" :string) +(merge-rule "\IeC {\cyre }" "е" :string) +(merge-rule "\IeC {\cyrerev }" "э" :string) +(merge-rule "\IeC {\cyrery }" "ы" :string) +(merge-rule "\IeC {\cyrf }" "ф" :string) +(merge-rule "\IeC {\cyrg }" "г" :string) +(merge-rule "\IeC {\cyrgup }" "ґ" :string) +(merge-rule "\IeC {\cyrh }" "х" :string) +(merge-rule "\IeC {\cyrhrdsn }" "ъ" :string) +(merge-rule "\IeC {\cyri }" "и" :string) +(merge-rule "\IeC {\cyrie }" "є" :string) +(merge-rule "\IeC {\cyrii }" "і" :string) +(merge-rule "\IeC {\cyrishrt }" "й" :string) +(merge-rule "\IeC {\cyrje }" "ј" :string) +(merge-rule "\IeC {\cyrk }" "к" :string) +(merge-rule "\IeC {\cyrl }" "л" :string) +(merge-rule "\IeC {\cyrlje }" "љ" :string) +(merge-rule "\IeC {\cyrm }" "м" :string) +(merge-rule "\IeC {\cyrn }" "н" :string) +(merge-rule "\IeC {\cyrnje }" "њ" :string) +(merge-rule "\IeC {\cyro }" "о" :string) +(merge-rule "\IeC {\cyrp }" "п" :string) +(merge-rule "\IeC {\cyrr }" "р" :string) +(merge-rule "\IeC {\cyrs }" "с" :string) +(merge-rule "\IeC {\cyrsftsn }" "ь" :string) +(merge-rule "\IeC {\cyrsh }" "ш" :string) +(merge-rule "\IeC {\cyrshch }" "щ" :string) +(merge-rule "\IeC {\cyrt }" "т" :string) +(merge-rule "\IeC {\cyrtshe }" "ћ" :string) +(merge-rule "\IeC {\cyru }" "у" :string) +(merge-rule "\IeC {\cyrushrt }" "ў" :string) +(merge-rule "\IeC {\cyrv }" "в" :string) +(merge-rule "\IeC {\cyrya }" "я" :string) +(merge-rule "\IeC {\cyryi }" "ї" :string) +(merge-rule "\IeC {\cyryo }" "ё" :string) +(merge-rule "\IeC {\cyryu }" "ю" :string) +(merge-rule "\IeC {\cyrz }" "з" :string) +(merge-rule "\IeC {\cyrzh }" "ж" :string) diff --git a/docs/build/latex/LICRlatin2utf8.xdy b/docs/build/latex/LICRlatin2utf8.xdy new file mode 100644 index 0000000..31c80f9 --- /dev/null +++ b/docs/build/latex/LICRlatin2utf8.xdy @@ -0,0 +1,239 @@ +;; style file for xindy +;; filename: LICRlatin2utf8.xdy +;; description: style file for xindy which maps back LaTeX Internal +;; Character Representation of letters (as arising in .idx index +;; file) to UTF-8 encoding for correct sorting by xindy. +;; usage: for use with the pdflatex engine, +;; *not* for use with xelatex or lualatex. +;; +;; This is based upon xindy's distributed file tex/inputenc/utf8.xdy. +;; The modifications include: +;; +;; - Updates for compatibility with current LaTeX macro encoding. +;; +;; - Systematic usage of the \IeC {...} mark-up, because mark-up in +;; tex/inputenc/utf8.xdy was using it on seemingly random basis, and +;; Sphinx coercing of xindy usability for both Latin and Cyrillic scripts +;; with pdflatex requires its systematic presence here. +;; +;; - Support for some extra letters: Ÿ, Ŋ, ŋ, Œ, œ, IJ, ij, ȷ and ẞ. +;; +;; Indeed Sphinx needs to support for pdflatex engine all Unicode letters +;; available in TeX T1 font encoding. The above letters are found in +;; that encoding but not in the Latin1, 2, 3 charsets which are those +;; covered by original tex/inputenc/utf8.xdy. +;; +;; - There is a problem that ȷ is not supported out-of-the box by LaTeX +;; with inputenc, one must add explicitely +;; \DeclareUnicodeCharacter{0237}{\j} +;; to preamble of LaTeX document. However this character is not supported +;; by the TeX "times" font used by default by Sphinx for pdflatex engine. +;; +;; **Update**: since LaTeX 2018/12/01, the \j as well as \SS, \k{} and +;; \.{} need no extra user declaration anymore. +;; +;; - ẞ needs \DeclareUnicodeCharacter{1E9E}{\SS} (but ß needs no extra set-up). +;; +;; - U+02DB (˛) and U+02D9 (˙) are also not supported by inputenc +;; out of the box and require +;; \DeclareUnicodeCharacter{02DB}{\k{}} +;; \DeclareUnicodeCharacter{02D9}{\.{}} +;; to be added to preamble. +;; +;; - U+0127 ħ and U+0126 Ħ are absent from TeX T1+TS1 font encodings. +;; +;; - Characters Ŋ and ŋ are not supported by TeX font "times" used by +;; default by Sphinx for pdflatex engine but they are supported by +;; some TeX fonts, in particular by the default LaTeX font for T1 +;; encoding. +;; +;; - " and ~ must be escaped as ~" and resp. ~~ in xindy merge rules. +;; +;; Contributed by the Sphinx team, July 2018. +;; +;; See sphinx.xdy for superior figures, as they are escaped by LaTeX writer. +(merge-rule "\IeC {\textonesuperior }" "¹" :string) +(merge-rule "\IeC {\texttwosuperior }" "²" :string) +(merge-rule "\IeC {\textthreesuperior }" "³" :string) +(merge-rule "\IeC {\'a}" "á" :string) +(merge-rule "\IeC {\'A}" "Á" :string) +(merge-rule "\IeC {\`a}" "à" :string) +(merge-rule "\IeC {\`A}" "À" :string) +(merge-rule "\IeC {\^a}" "â" :string) +(merge-rule "\IeC {\^A}" "Â" :string) +(merge-rule "\IeC {\~"a}" "ä" :string) +(merge-rule "\IeC {\~"A}" "Ä" :string) +(merge-rule "\IeC {\~~a}" "ã" :string) +(merge-rule "\IeC {\~~A}" "Ã" :string) +(merge-rule "\IeC {\c c}" "ç" :string) +(merge-rule "\IeC {\c C}" "Ç" :string) +(merge-rule "\IeC {\'c}" "ć" :string) +(merge-rule "\IeC {\'C}" "Ć" :string) +(merge-rule "\IeC {\^c}" "ĉ" :string) +(merge-rule "\IeC {\^C}" "Ĉ" :string) +(merge-rule "\IeC {\.c}" "ċ" :string) +(merge-rule "\IeC {\.C}" "Ċ" :string) +(merge-rule "\IeC {\c s}" "ş" :string) +(merge-rule "\IeC {\c S}" "Ş" :string) +(merge-rule "\IeC {\c t}" "ţ" :string) +(merge-rule "\IeC {\c T}" "Ţ" :string) +(merge-rule "\IeC {\-}" "­" :string); soft hyphen +(merge-rule "\IeC {\textdiv }" "÷" :string) +(merge-rule "\IeC {\'e}" "é" :string) +(merge-rule "\IeC {\'E}" "É" :string) +(merge-rule "\IeC {\`e}" "è" :string) +(merge-rule "\IeC {\`E}" "È" :string) +(merge-rule "\IeC {\^e}" "ê" :string) +(merge-rule "\IeC {\^E}" "Ê" :string) +(merge-rule "\IeC {\~"e}" "ë" :string) +(merge-rule "\IeC {\~"E}" "Ë" :string) +(merge-rule "\IeC {\^g}" "ĝ" :string) +(merge-rule "\IeC {\^G}" "Ĝ" :string) +(merge-rule "\IeC {\.g}" "ġ" :string) +(merge-rule "\IeC {\.G}" "Ġ" :string) +(merge-rule "\IeC {\^h}" "ĥ" :string) +(merge-rule "\IeC {\^H}" "Ĥ" :string) +(merge-rule "\IeC {\H o}" "ő" :string) +(merge-rule "\IeC {\H O}" "Ő" :string) +(merge-rule "\IeC {\textacutedbl }" "˝" :string) +(merge-rule "\IeC {\H u}" "ű" :string) +(merge-rule "\IeC {\H U}" "Ű" :string) +(merge-rule "\IeC {\ae }" "æ" :string) +(merge-rule "\IeC {\AE }" "Æ" :string) +(merge-rule "\IeC {\textcopyright }" "©" :string) +(merge-rule "\IeC {\c \ }" "¸" :string) +(merge-rule "\IeC {\dh }" "ð" :string) +(merge-rule "\IeC {\DH }" "Ð" :string) +(merge-rule "\IeC {\dj }" "đ" :string) +(merge-rule "\IeC {\DJ }" "Đ" :string) +(merge-rule "\IeC {\guillemotleft }" "«" :string) +(merge-rule "\IeC {\guillemotright }" "»" :string) +(merge-rule "\IeC {\'\i }" "í" :string) +(merge-rule "\IeC {\`\i }" "ì" :string) +(merge-rule "\IeC {\^\i }" "î" :string) +(merge-rule "\IeC {\~"\i }" "ï" :string) +(merge-rule "\IeC {\i }" "ı" :string) +(merge-rule "\IeC {\^\j }" "ĵ" :string) +(merge-rule "\IeC {\k {}}" "˛" :string) +(merge-rule "\IeC {\l }" "ł" :string) +(merge-rule "\IeC {\L }" "Ł" :string) +(merge-rule "\IeC {\nobreakspace }" " " :string) +(merge-rule "\IeC {\o }" "ø" :string) +(merge-rule "\IeC {\O }" "Ø" :string) +(merge-rule "\IeC {\textsterling }" "£" :string) +(merge-rule "\IeC {\textparagraph }" "¶" :string) +(merge-rule "\IeC {\ss }" "ß" :string) +(merge-rule "\IeC {\textsection }" "§" :string) +(merge-rule "\IeC {\textbrokenbar }" "¦" :string) +(merge-rule "\IeC {\textcent }" "¢" :string) +(merge-rule "\IeC {\textcurrency }" "¤" :string) +(merge-rule "\IeC {\textdegree }" "°" :string) +(merge-rule "\IeC {\textexclamdown }" "¡" :string) +(merge-rule "\IeC {\texthbar }" "ħ" :string) +(merge-rule "\IeC {\textHbar }" "Ħ" :string) +(merge-rule "\IeC {\textonehalf }" "½" :string) +(merge-rule "\IeC {\textonequarter }" "¼" :string) +(merge-rule "\IeC {\textordfeminine }" "ª" :string) +(merge-rule "\IeC {\textordmasculine }" "º" :string) +(merge-rule "\IeC {\textperiodcentered }" "·" :string) +(merge-rule "\IeC {\textquestiondown }" "¿" :string) +(merge-rule "\IeC {\textregistered }" "®" :string) +(merge-rule "\IeC {\textthreequarters }" "¾" :string) +(merge-rule "\IeC {\textyen }" "¥" :string) +(merge-rule "\IeC {\th }" "þ" :string) +(merge-rule "\IeC {\TH }" "Þ" :string) +(merge-rule "\IeC {\'I}" "Í" :string) +(merge-rule "\IeC {\`I}" "Ì" :string) +(merge-rule "\IeC {\^I}" "Î" :string) +(merge-rule "\IeC {\~"I}" "Ï" :string) +(merge-rule "\IeC {\.I}" "İ" :string) +(merge-rule "\IeC {\^J}" "Ĵ" :string) +(merge-rule "\IeC {\k a}" "ą" :string) +(merge-rule "\IeC {\k A}" "Ą" :string) +(merge-rule "\IeC {\k e}" "ę" :string) +(merge-rule "\IeC {\k E}" "Ę" :string) +(merge-rule "\IeC {\'l}" "ĺ" :string) +(merge-rule "\IeC {\'L}" "Ĺ" :string) +(merge-rule "\IeC {\textlnot }" "¬" :string) +(merge-rule "\IeC {\textmu }" "µ" :string) +(merge-rule "\IeC {\'n}" "ń" :string) +(merge-rule "\IeC {\'N}" "Ń" :string) +(merge-rule "\IeC {\~~n}" "ñ" :string) +(merge-rule "\IeC {\~~N}" "Ñ" :string) +(merge-rule "\IeC {\'o}" "ó" :string) +(merge-rule "\IeC {\'O}" "Ó" :string) +(merge-rule "\IeC {\`o}" "ò" :string) +(merge-rule "\IeC {\`O}" "Ò" :string) +(merge-rule "\IeC {\^o}" "ô" :string) +(merge-rule "\IeC {\^O}" "Ô" :string) +(merge-rule "\IeC {\~"o}" "ö" :string) +(merge-rule "\IeC {\~"O}" "Ö" :string) +(merge-rule "\IeC {\~~o}" "õ" :string) +(merge-rule "\IeC {\~~O}" "Õ" :string) +(merge-rule "\IeC {\textpm }" "±" :string) +(merge-rule "\IeC {\r a}" "å" :string) +(merge-rule "\IeC {\r A}" "Å" :string) +(merge-rule "\IeC {\'r}" "ŕ" :string) +(merge-rule "\IeC {\'R}" "Ŕ" :string) +(merge-rule "\IeC {\r u}" "ů" :string) +(merge-rule "\IeC {\r U}" "Ů" :string) +(merge-rule "\IeC {\'s}" "ś" :string) +(merge-rule "\IeC {\'S}" "Ś" :string) +(merge-rule "\IeC {\^s}" "ŝ" :string) +(merge-rule "\IeC {\^S}" "Ŝ" :string) +(merge-rule "\IeC {\textasciidieresis }" "¨" :string) +(merge-rule "\IeC {\textasciimacron }" "¯" :string) +(merge-rule "\IeC {\.{}}" "˙" :string) +(merge-rule "\IeC {\textasciiacute }" "´" :string) +(merge-rule "\IeC {\texttimes }" "×" :string) +(merge-rule "\IeC {\u a}" "ă" :string) +(merge-rule "\IeC {\u A}" "Ă" :string) +(merge-rule "\IeC {\u g}" "ğ" :string) +(merge-rule "\IeC {\u G}" "Ğ" :string) +(merge-rule "\IeC {\textasciibreve }" "˘" :string) +(merge-rule "\IeC {\'u}" "ú" :string) +(merge-rule "\IeC {\'U}" "Ú" :string) +(merge-rule "\IeC {\`u}" "ù" :string) +(merge-rule "\IeC {\`U}" "Ù" :string) +(merge-rule "\IeC {\^u}" "û" :string) +(merge-rule "\IeC {\^U}" "Û" :string) +(merge-rule "\IeC {\~"u}" "ü" :string) +(merge-rule "\IeC {\~"U}" "Ü" :string) +(merge-rule "\IeC {\u u}" "ŭ" :string) +(merge-rule "\IeC {\u U}" "Ŭ" :string) +(merge-rule "\IeC {\v c}" "č" :string) +(merge-rule "\IeC {\v C}" "Č" :string) +(merge-rule "\IeC {\v d}" "ď" :string) +(merge-rule "\IeC {\v D}" "Ď" :string) +(merge-rule "\IeC {\v e}" "ě" :string) +(merge-rule "\IeC {\v E}" "Ě" :string) +(merge-rule "\IeC {\v l}" "ľ" :string) +(merge-rule "\IeC {\v L}" "Ľ" :string) +(merge-rule "\IeC {\v n}" "ň" :string) +(merge-rule "\IeC {\v N}" "Ň" :string) +(merge-rule "\IeC {\v r}" "ř" :string) +(merge-rule "\IeC {\v R}" "Ř" :string) +(merge-rule "\IeC {\v s}" "š" :string) +(merge-rule "\IeC {\v S}" "Š" :string) +(merge-rule "\IeC {\textasciicaron }" "ˇ" :string) +(merge-rule "\IeC {\v t}" "ť" :string) +(merge-rule "\IeC {\v T}" "Ť" :string) +(merge-rule "\IeC {\v z}" "ž" :string) +(merge-rule "\IeC {\v Z}" "Ž" :string) +(merge-rule "\IeC {\'y}" "ý" :string) +(merge-rule "\IeC {\'Y}" "Ý" :string) +(merge-rule "\IeC {\~"y}" "ÿ" :string) +(merge-rule "\IeC {\'z}" "ź" :string) +(merge-rule "\IeC {\'Z}" "Ź" :string) +(merge-rule "\IeC {\.z}" "ż" :string) +(merge-rule "\IeC {\.Z}" "Ż" :string) +;; letters not in Latin1, 2, 3 but available in TeX T1 font encoding +(merge-rule "\IeC {\~"Y}" "Ÿ" :string) +(merge-rule "\IeC {\NG }" "Ŋ" :string) +(merge-rule "\IeC {\ng }" "ŋ" :string) +(merge-rule "\IeC {\OE }" "Œ" :string) +(merge-rule "\IeC {\oe }" "œ" :string) +(merge-rule "\IeC {\IJ }" "IJ" :string) +(merge-rule "\IeC {\ij }" "ij" :string) +(merge-rule "\IeC {\j }" "ȷ" :string) +(merge-rule "\IeC {\SS }" "ẞ" :string) diff --git a/docs/build/latex/LatinRules.xdy b/docs/build/latex/LatinRules.xdy new file mode 100644 index 0000000..99f14a2 --- /dev/null +++ b/docs/build/latex/LatinRules.xdy @@ -0,0 +1,607 @@ +;; style file for xindy +;; filename: LatinRules.xdy +;; +;; It is based upon xindy's files lang/general/utf8.xdy and +;; lang/general/utf8-lang.xdy which implement +;; "a general sorting order for Western European languages" +;; +;; The aim for Sphinx is to be able to index in a Cyrillic document +;; also terms using the Latin alphabets, inclusive of letters +;; with diacritics. To this effect the xindy rules from lang/general +;; got manually re-coded to avoid collisions with the encoding +;; done by xindy for sorting words in Cyrillic languages, which was +;; observed not to use bytes with octal encoding 0o266 or higher. +;; +;; So here we use only 0o266 or higher bytes. +;; (Ŋ, ŋ, IJ, and ij are absent from +;; lang/general/utf8.xdy and not included here) +;; Contributed by the Sphinx team, 2018. + +(define-letter-group "A" :prefixes ("")) +(define-letter-group "B" :after "A" :prefixes ("")) +(define-letter-group "C" :after "B" :prefixes ("")) +(define-letter-group "D" :after "C" :prefixes ("")) +(define-letter-group "E" :after "D" :prefixes ("")) +(define-letter-group "F" :after "E" :prefixes ("")) +(define-letter-group "G" :after "F" :prefixes ("")) +(define-letter-group "H" :after "G" :prefixes ("")) +(define-letter-group "I" :after "H" :prefixes ("")) +(define-letter-group "J" :after "I" :prefixes ("")) +(define-letter-group "K" :after "J" :prefixes ("")) +(define-letter-group "L" :after "K" :prefixes ("")) +(define-letter-group "M" :after "L" :prefixes ("")) +(define-letter-group "N" :after "M" :prefixes ("")) +(define-letter-group "O" :after "N" :prefixes ("")) +(define-letter-group "P" :after "O" :prefixes ("")) +(define-letter-group "Q" :after "P" :prefixes ("")) +(define-letter-group "R" :after "Q" :prefixes ("")) +(define-letter-group "S" :after "R" :prefixes ("")) +(define-letter-group "T" :after "S" :prefixes ("")) +(define-letter-group "U" :after "T" :prefixes ("")) +(define-letter-group "V" :after "U" :prefixes ("")) +(define-letter-group "W" :after "V" :prefixes ("")) +(define-letter-group "X" :after "W" :prefixes ("")) +(define-letter-group "Y" :after "X" :prefixes ("")) +(define-letter-group "Z" :after "Y" :prefixes ("")) + +(define-rule-set "sphinx-xy-alphabetize" + + :rules (("À" "" :string) + ("Ă" "" :string) + ("â" "" :string) + ("Ä" "" :string) + ("à" "" :string) + ("Å" "" :string) + ("Ã" "" :string) + ("Á" "" :string) + ("á" "" :string) + ("ã" "" :string) + ("Â" "" :string) + ("ă" "" :string) + ("å" "" :string) + ("ą" "" :string) + ("ä" "" :string) + ("Ą" "" :string) + ("æ" "" :string) + ("Æ" "" :string) + ("ć" "" :string) + ("ĉ" "" :string) + ("ç" "" :string) + ("Č" "" :string) + ("č" "" :string) + ("Ĉ" "" :string) + ("Ç" "" :string) + ("Ć" "" :string) + ("ď" "" :string) + ("Đ" "" :string) + ("Ď" "" :string) + ("đ" "" :string) + ("ê" "" :string) + ("Ę" "" :string) + ("Ě" "" :string) + ("ë" "" :string) + ("ě" "" :string) + ("é" "" :string) + ("È" "" :string) + ("Ë" "" :string) + ("É" "" :string) + ("è" "" :string) + ("Ê" "" :string) + ("ę" "" :string) + ("ĝ" "" :string) + ("ğ" "" :string) + ("Ğ" "" :string) + ("Ĝ" "" :string) + ("ĥ" "" :string) + ("Ĥ" "" :string) + ("Ï" "" :string) + ("Í" "" :string) + ("ï" "" :string) + ("Î" "" :string) + ("î" "" :string) + ("ı" "" :string) + ("İ" "" :string) + ("í" "" :string) + ("Ì" "" :string) + ("ì" "" :string) + ("Ĵ" "" :string) + ("ĵ" "" :string) + ("ł" "" :string) + ("Ł" "" :string) + ("ľ" "" :string) + ("Ľ" "" :string) + ("ń" "" :string) + ("Ń" "" :string) + ("ñ" "" :string) + ("ň" "" :string) + ("Ñ" "" :string) + ("Ň" "" :string) + ("Õ" "" :string) + ("Ő" "" :string) + ("ó" "" :string) + ("ö" "" :string) + ("ô" "" :string) + ("ő" "" :string) + ("Ø" "" :string) + ("Ö" "" :string) + ("õ" "" :string) + ("Ô" "" :string) + ("ø" "" :string) + ("Ó" "" :string) + ("Ò" "" :string) + ("ò" "" :string) + ("œ" "ĺ" :string) + ("Œ" "ĺ" :string) + ("Ř" "" :string) + ("ř" "" :string) + ("Ŕ" "" :string) + ("ŕ" "" :string) + ("ŝ" "" :string) + ("Ś" "" :string) + ("ș" "" :string) + ("ş" "" :string) + ("Ŝ" "" :string) + ("ś" "" :string) + ("Ș" "" :string) + ("š" "" :string) + ("Ş" "" :string) + ("Š" "" :string) + ("ß" "" :string) + ("Ț" "" :string) + ("Ť" "" :string) + ("ț" "" :string) + ("ť" "" :string) + ("û" "" :string) + ("ŭ" "" :string) + ("ů" "" :string) + ("ű" "" :string) + ("ù" "" :string) + ("Ŭ" "" :string) + ("Ù" "" :string) + ("Ű" "" :string) + ("Ü" "" :string) + ("Ů" "" :string) + ("ú" "" :string) + ("Ú" "" :string) + ("Û" "" :string) + ("ü" "" :string) + ("ÿ" "" :string) + ("Ý" "" :string) + ("Ÿ" "" :string) + ("ý" "" :string) + ("Ż" "" :string) + ("Ž" "" :string) + ("Ź" "" :string) + ("ž" "" :string) + ("ż" "" :string) + ("ź" "" :string) + ("a" "" :string) + ("A" "" :string) + ("b" "" :string) + ("B" "" :string) + ("c" "" :string) + ("C" "" :string) + ("d" "" :string) + ("D" "" :string) + ("e" "" :string) + ("E" "" :string) + ("F" "" :string) + ("f" "" :string) + ("G" "" :string) + ("g" "" :string) + ("H" "" :string) + ("h" "" :string) + ("i" "" :string) + ("I" "" :string) + ("J" "" :string) + ("j" "" :string) + ("K" "" :string) + ("k" "" :string) + ("L" "" :string) + ("l" "" :string) + ("M" "" :string) + ("m" "" :string) + ("n" "" :string) + ("N" "" :string) + ("O" "" :string) + ("o" "" :string) + ("p" "" :string) + ("P" "" :string) + ("Q" "" :string) + ("q" "" :string) + ("r" "" :string) + ("R" "" :string) + ("S" "" :string) + ("s" "" :string) + ("t" "" :string) + ("T" "" :string) + ("u" "" :string) + ("U" "" :string) + ("v" "" :string) + ("V" "" :string) + ("W" "" :string) + ("w" "" :string) + ("x" "" :string) + ("X" "" :string) + ("Y" "" :string) + ("y" "" :string) + ("z" "" :string) + ("Z" "" :string) + )) + +(define-rule-set "sphinx-xy-resolve-diacritics" + + :rules (("Ĥ" "" :string) + ("ó" "" :string) + ("ľ" "" :string) + ("Ř" "" :string) + ("ĝ" "" :string) + ("ď" "" :string) + ("Ě" "" :string) + ("ĥ" "" :string) + ("Č" "" :string) + ("Ĵ" "" :string) + ("ě" "" :string) + ("ž" "" :string) + ("Ď" "" :string) + ("ř" "" :string) + ("Ž" "" :string) + ("ı" "" :string) + ("Ť" "" :string) + ("á" "" :string) + ("č" "" :string) + ("Á" "" :string) + ("ň" "" :string) + ("Š" "" :string) + ("Ň" "" :string) + ("ĵ" "" :string) + ("ť" "" :string) + ("Ó" "" :string) + ("ý" "" :string) + ("Ĝ" "" :string) + ("Ú" "" :string) + ("Ľ" "" :string) + ("š" "" :string) + ("Ý" "" :string) + ("ú" "" :string) + ("Ś" "" :string) + ("ć" "" :string) + ("Ł" "" :string) + ("ł" "" :string) + ("ń" "" :string) + ("À" "" :string) + ("Ź" "" :string) + ("à" "" :string) + ("Ń" "" :string) + ("Đ" "" :string) + ("ÿ" "" :string) + ("ś" "" :string) + ("Ğ" "" :string) + ("ğ" "" :string) + ("Ù" "" :string) + ("İ" "" :string) + ("đ" "" :string) + ("ù" "" :string) + ("Ț" "" :string) + ("é" "" :string) + ("ŕ" "" :string) + ("Ć" "" :string) + ("ț" "" :string) + ("ò" "" :string) + ("ź" "" :string) + ("Ò" "" :string) + ("Ÿ" "" :string) + ("Ŕ" "" :string) + ("É" "" :string) + ("ĉ" "" :string) + ("ô" "" :string) + ("Í" "" :string) + ("ŝ" "" :string) + ("Ż" "" :string) + ("Ă" "" :string) + ("Ŝ" "" :string) + ("ñ" "" :string) + ("ŭ" "" :string) + ("í" "" :string) + ("È" "" :string) + ("Ô" "" :string) + ("Ŭ" "" :string) + ("ż" "" :string) + ("Ñ" "" :string) + ("è" "" :string) + ("Ĉ" "" :string) + ("ă" "" :string) + ("â" "" :string) + ("û" "" :string) + ("ê" "" :string) + ("Õ" "" :string) + ("õ" "" :string) + ("ș" "" :string) + ("ç" "" :string) + ("Â" "" :string) + ("Ê" "" :string) + ("Û" "" :string) + ("Ç" "" :string) + ("ì" "" :string) + ("Ì" "" :string) + ("Ș" "" :string) + ("ö" "" :string) + ("Ö" "" :string) + ("ş" "" :string) + ("ů" "" :string) + ("ë" "" :string) + ("ã" "" :string) + ("î" "" :string) + ("Î" "" :string) + ("Ã" "" :string) + ("Ş" "" :string) + ("Ů" "" :string) + ("Ë" "" :string) + ("ï" "" :string) + ("Ő" "" :string) + ("Ï" "" :string) + ("Ę" "" :string) + ("ő" "" :string) + ("Ü" "" :string) + ("Å" "" :string) + ("ü" "" :string) + ("ę" "" :string) + ("å" "" :string) + ("Ä" "" :string) + ("ű" "" :string) + ("Ø" "" :string) + ("ø" "" :string) + ("Ű" "" :string) + ("ä" "" :string) + ("Ą" "" :string) + ("ą" "" :string) + ("œ" "" :string) + ("ß" "" :string) + ("Æ" "" :string) + ("Œ" "" :string) + ("æ" "" :string) + ("e" "" :string) + ("t" "" :string) + ("L" "" :string) + ("Y" "" :string) + ("J" "" :string) + ("a" "" :string) + ("p" "" :string) + ("u" "" :string) + ("j" "" :string) + ("b" "" :string) + ("G" "" :string) + ("U" "" :string) + ("F" "" :string) + ("H" "" :string) + ("i" "" :string) + ("z" "" :string) + ("c" "" :string) + ("l" "" :string) + ("A" "" :string) + ("Q" "" :string) + ("w" "" :string) + ("D" "" :string) + ("R" "" :string) + ("d" "" :string) + ("s" "" :string) + ("r" "" :string) + ("k" "" :string) + ("v" "" :string) + ("m" "" :string) + ("P" "" :string) + ("y" "" :string) + ("K" "" :string) + ("q" "" :string) + ("S" "" :string) + ("I" "" :string) + ("C" "" :string) + ("M" "" :string) + ("Z" "" :string) + ("T" "" :string) + ("W" "" :string) + ("B" "" :string) + ("h" "" :string) + ("x" "" :string) + ("X" "" :string) + ("f" "" :string) + ("E" "" :string) + ("V" "" :string) + ("N" "" :string) + ("O" "" :string) + ("o" "" :string) + ("g" "" :string) + ("n" "" :string) + )) + +(define-rule-set "sphinx-xy-resolve-case" + + :rules (("Ú" "8" :string) + ("Ÿ" "8" :string) + ("Ç" "8" :string) + ("Ĉ" "8" :string) + ("Ŕ" "8" :string) + ("Ľ" "8" :string) + ("Ů" "8" :string) + ("Ý" "8" :string) + ("É" "8" :string) + ("Ë" "8" :string) + ("Ș" "8" :string) + ("Ì" "8" :string) + ("Ê" "8" :string) + ("Ň" "8" :string) + ("Ą" "8" :string) + ("Š" "8" :string) + ("Û" "8" :string) + ("Ş" "8" :string) + ("Ć" "8" :string) + ("Ò" "8" :string) + ("Ĝ" "8" :string) + ("Ñ" "8" :string) + ("Ó" "8" :string) + ("Î" "8" :string) + ("Á" "8" :string) + ("Ã" "8" :string) + ("Ț" "8" :string) + ("Å" "8" :string) + ("Ğ" "8" :string) + ("Ü" "8" :string) + ("È" "8" :string) + ("Ô" "8" :string) + ("İ" "8" :string) + ("Ű" "8" :string) + ("Ù" "8" :string) + ("Ŭ" "8" :string) + ("Â" "8" :string) + ("Ť" "8" :string) + ("Ń" "8" :string) + ("Ď" "8" :string) + ("Ź" "8" :string) + ("Ž" "8" :string) + ("Đ" "8" :string) + ("Ŝ" "8" :string) + ("Č" "8" :string) + ("Ĵ" "8" :string) + ("Ö" "8" :string) + ("Ø" "8" :string) + ("Ż" "8" :string) + ("Ł" "8" :string) + ("Ă" "8" :string) + ("Ě" "8" :string) + ("Ő" "8" :string) + ("Õ" "8" :string) + ("Ę" "8" :string) + ("Ï" "8" :string) + ("À" "8" :string) + ("Ĥ" "8" :string) + ("Ä" "8" :string) + ("Ś" "8" :string) + ("Ř" "8" :string) + ("Í" "8" :string) + ("Œ" "89" :string) + ("Æ" "89" :string) + ("ì" "9" :string) + ("è" "9" :string) + ("ą" "9" :string) + ("š" "9" :string) + ("ú" "9" :string) + ("å" "9" :string) + ("ă" "9" :string) + ("ę" "9" :string) + ("ü" "9" :string) + ("ź" "9" :string) + ("ò" "9" :string) + ("ť" "9" :string) + ("ț" "9" :string) + ("ĵ" "9" :string) + ("ŕ" "9" :string) + ("ż" "9" :string) + ("ä" "9" :string) + ("ý" "9" :string) + ("ù" "9" :string) + ("á" "9" :string) + ("é" "9" :string) + ("č" "9" :string) + ("ň" "9" :string) + ("ś" "9" :string) + ("ø" "9" :string) + ("í" "9" :string) + ("đ" "9" :string) + ("ı" "9" :string) + ("ğ" "9" :string) + ("î" "9" :string) + ("ã" "9" :string) + ("à" "9" :string) + ("ř" "9" :string) + ("ő" "9" :string) + ("ů" "9" :string) + ("ș" "9" :string) + ("ÿ" "9" :string) + ("ë" "9" :string) + ("ŭ" "9" :string) + ("ç" "9" :string) + ("ű" "9" :string) + ("ñ" "9" :string) + ("õ" "9" :string) + ("ě" "9" :string) + ("ş" "9" :string) + ("ž" "9" :string) + ("ĝ" "9" :string) + ("ŝ" "9" :string) + ("ń" "9" :string) + ("û" "9" :string) + ("ł" "9" :string) + ("ď" "9" :string) + ("ĥ" "9" :string) + ("ê" "9" :string) + ("ô" "9" :string) + ("ĉ" "9" :string) + ("â" "9" :string) + ("ć" "9" :string) + ("ï" "9" :string) + ("ö" "9" :string) + ("ľ" "9" :string) + ("ó" "9" :string) + ("æ" "99" :string) + ("ß" "99" :string) + ("œ" "99" :string) + ("N" "8" :string) + ("V" "8" :string) + ("O" "8" :string) + ("X" "8" :string) + ("E" "8" :string) + ("P" "8" :string) + ("K" "8" :string) + ("T" "8" :string) + ("Z" "8" :string) + ("M" "8" :string) + ("C" "8" :string) + ("I" "8" :string) + ("S" "8" :string) + ("B" "8" :string) + ("W" "8" :string) + ("D" "8" :string) + ("R" "8" :string) + ("H" "8" :string) + ("F" "8" :string) + ("Q" "8" :string) + ("A" "8" :string) + ("G" "8" :string) + ("U" "8" :string) + ("J" "8" :string) + ("Y" "8" :string) + ("L" "8" :string) + ("o" "9" :string) + ("n" "9" :string) + ("g" "9" :string) + ("x" "9" :string) + ("f" "9" :string) + ("y" "9" :string) + ("q" "9" :string) + ("h" "9" :string) + ("w" "9" :string) + ("s" "9" :string) + ("d" "9" :string) + ("v" "9" :string) + ("k" "9" :string) + ("r" "9" :string) + ("m" "9" :string) + ("z" "9" :string) + ("c" "9" :string) + ("i" "9" :string) + ("l" "9" :string) + ("b" "9" :string) + ("j" "9" :string) + ("a" "9" :string) + ("p" "9" :string) + ("u" "9" :string) + ("t" "9" :string) + ("e" "9" :string) + )) + +(use-rule-set :run 0 + :rule-set ("sphinx-xy-alphabetize")) +(use-rule-set :run 1 + :rule-set ("sphinx-xy-resolve-diacritics")) +(use-rule-set :run 2 + :rule-set ("sphinx-xy-resolve-case")) diff --git a/docs/build/latex/Makefile b/docs/build/latex/Makefile new file mode 100644 index 0000000..e4653f2 --- /dev/null +++ b/docs/build/latex/Makefile @@ -0,0 +1,64 @@ +# Makefile for Sphinx LaTeX output + +ALLDOCS = $(basename $(wildcard *.tex)) +ALLPDF = $(addsuffix .pdf,$(ALLDOCS)) +ALLDVI = $(addsuffix .dvi,$(ALLDOCS)) +ALLXDV = +ALLPS = $(addsuffix .ps,$(ALLDOCS)) + +# Prefix for archive names +ARCHIVEPREFIX = +# Additional LaTeX options (passed via variables in latexmkrc/latexmkjarc file) +export LATEXOPTS ?= +# Additional latexmk options +LATEXMKOPTS ?= +# format: pdf or dvi (used only by archive targets) +FMT = pdf + +LATEX = latexmk -dvi +PDFLATEX = latexmk -pdf -dvi- -ps- + + +%.dvi: %.tex FORCE_MAKE + $(LATEX) $(LATEXMKOPTS) '$<' + +%.ps: %.dvi + dvips '$<' + +%.pdf: %.tex FORCE_MAKE + $(PDFLATEX) $(LATEXMKOPTS) '$<' + +all: $(ALLPDF) + +all-dvi: $(ALLDVI) + +all-ps: $(ALLPS) + +all-pdf: $(ALLPDF) + +zip: all-$(FMT) + mkdir $(ARCHIVEPREFIX)docs-$(FMT) + cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT) + zip -q -r -9 $(ARCHIVEPREFIX)docs-$(FMT).zip $(ARCHIVEPREFIX)docs-$(FMT) + rm -r $(ARCHIVEPREFIX)docs-$(FMT) + +tar: all-$(FMT) + mkdir $(ARCHIVEPREFIX)docs-$(FMT) + cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT) + tar cf $(ARCHIVEPREFIX)docs-$(FMT).tar $(ARCHIVEPREFIX)docs-$(FMT) + rm -r $(ARCHIVEPREFIX)docs-$(FMT) + +gz: tar + gzip -9 < $(ARCHIVEPREFIX)docs-$(FMT).tar > $(ARCHIVEPREFIX)docs-$(FMT).tar.gz + +bz2: tar + bzip2 -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar + +xz: tar + xz -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar + +clean: + rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz $(ALLPDF) $(ALLDVI) $(ALLXDV) *.fls *.fdb_latexmk + +.PHONY: all all-pdf all-dvi all-ps clean zip tar gz bz2 xz +.PHONY: FORCE_MAKE \ No newline at end of file diff --git a/docs/build/latex/Utenti.png b/docs/build/latex/Utenti.png new file mode 100644 index 0000000..732c162 Binary files /dev/null and b/docs/build/latex/Utenti.png differ diff --git a/docs/build/latex/docsRunConfig.png b/docs/build/latex/docsRunConfig.png new file mode 100644 index 0000000..9380620 Binary files /dev/null and b/docs/build/latex/docsRunConfig.png differ diff --git a/docs/build/latex/footnotehyper-sphinx.sty b/docs/build/latex/footnotehyper-sphinx.sty new file mode 100644 index 0000000..3bba385 --- /dev/null +++ b/docs/build/latex/footnotehyper-sphinx.sty @@ -0,0 +1,390 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{footnotehyper-sphinx}% + [2021/02/04 v1.1d hyperref aware footnote.sty for sphinx (JFB)] +%% +%% Package: footnotehyper-sphinx +%% Version: based on footnotehyper.sty 2021/02/04 v1.1d +%% as available at https://www.ctan.org/pkg/footnotehyper +%% License: the one applying to Sphinx +%% +%% Refer to the PDF documentation at https://www.ctan.org/pkg/footnotehyper for +%% the code comments. +%% +%% Differences: +%% 1. a partial tabulary compatibility layer added (enough for Sphinx mark-up), +%% 2. use of \spx@opt@BeforeFootnote from sphinx.sty, +%% 3. use of \sphinxunactivateextrasandspace from sphinx.sty, +%% 4. macro definition \sphinxfootnotemark, +%% 5. macro definition \sphinxlongtablepatch +%% 6. replaced some \undefined by \@undefined +\newif\iffootnotehyperparse\footnotehyperparsetrue +\DeclareOption*{\PackageWarning{footnotehyper-sphinx}{Option `\CurrentOption' is unknown}}% +\ProcessOptions\relax +\newbox\FNH@notes +\newtoks\FNH@toks % 1.1c +\newdimen\FNH@width +\let\FNH@colwidth\columnwidth +\newif\ifFNH@savingnotes +\AtBeginDocument {% + \let\FNH@latex@footnote \footnote + \let\FNH@latex@footnotetext\footnotetext + \let\FNH@H@@footnotetext \@footnotetext + \let\FNH@H@@mpfootnotetext \@mpfootnotetext + \newenvironment{savenotes} + {\FNH@savenotes\ignorespaces}{\FNH@spewnotes\ignorespacesafterend}% + \let\spewnotes \FNH@spewnotes + \let\footnote \FNH@footnote + \let\footnotetext \FNH@footnotetext + \let\endfootnote \FNH@endfntext + \let\endfootnotetext\FNH@endfntext + \@ifpackageloaded{hyperref} + {\ifHy@hyperfootnotes + \let\FNH@H@@footnotetext\H@@footnotetext + \let\FNH@H@@mpfootnotetext\H@@mpfootnotetext + \else + \let\FNH@hyper@fntext\FNH@nohyp@fntext + \fi}% + {\let\FNH@hyper@fntext\FNH@nohyp@fntext}% +}% +\def\FNH@hyper@fntext{\FNH@fntext\FNH@hyper@fntext@i}% +\def\FNH@nohyp@fntext{\FNH@fntext\FNH@nohyp@fntext@i}% +\def\FNH@fntext #1{% + \ifx\ifmeasuring@\@undefined + \expandafter\@secondoftwo\else\expandafter\@firstofone\fi +% these two lines modified for Sphinx (tabulary compatibility): + {\ifmeasuring@\expandafter\@gobbletwo\else\expandafter\@firstofone\fi}% + {\ifx\equation$\expandafter\@gobbletwo\fi #1}%$ +}% +\long\def\FNH@hyper@fntext@i#1{% + \global\setbox\FNH@notes\vbox + {\unvbox\FNH@notes + \FNH@startnote + \@makefntext + {\rule\z@\footnotesep\ignorespaces + \ifHy@nesting\expandafter\ltx@firstoftwo + \else\expandafter\ltx@secondoftwo + \fi + {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}{#1}}% + {\Hy@raisedlink + {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}% + {\relax}}% + \let\@currentHref\Hy@footnote@currentHref + \let\@currentlabelname\@empty + #1}% + \@finalstrut\strutbox + }% + \FNH@endnote + }% +}% +\long\def\FNH@nohyp@fntext@i#1{% + \global\setbox\FNH@notes\vbox + {\unvbox\FNH@notes + \FNH@startnote + \@makefntext{\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \FNH@endnote + }% +}% +\def\FNH@startnote{% + \hsize\FNH@colwidth + \interlinepenalty\interfootnotelinepenalty + \reset@font\footnotesize + \floatingpenalty\@MM + \@parboxrestore + \protected@edef\@currentlabel{\csname p@\@mpfn\endcsname\@thefnmark}% + \color@begingroup +}% +\def\FNH@endnote{\color@endgroup}% +\def\FNH@savenotes{% + \begingroup + \ifFNH@savingnotes\else + \FNH@savingnotestrue + \let\@footnotetext \FNH@hyper@fntext + \let\@mpfootnotetext \FNH@hyper@fntext + \let\H@@mpfootnotetext\FNH@nohyp@fntext + \FNH@width\columnwidth + \let\FNH@colwidth\FNH@width + \global\setbox\FNH@notes\box\voidb@x + \let\FNH@thempfn\thempfn + \let\FNH@mpfn\@mpfn + \ifx\@minipagerestore\relax\let\@minipagerestore\@empty\fi + \expandafter\def\expandafter\@minipagerestore\expandafter{% + \@minipagerestore + \let\thempfn\FNH@thempfn + \let\@mpfn\FNH@mpfn + }% + \fi +}% +\def\FNH@spewnotes {% + \if@endpe\ifx\par\@@par\FNH@toks{}\else + \FNH@toks\expandafter{\expandafter + \def\expandafter\par\expandafter{\par}\@endpetrue}% + \expandafter\expandafter\expandafter + \FNH@toks + \expandafter\expandafter\expandafter + {\expandafter\the\expandafter\FNH@toks + \expandafter\def\expandafter\@par\expandafter{\@par}}% + \expandafter\expandafter\expandafter + \FNH@toks + \expandafter\expandafter\expandafter + {\expandafter\the\expandafter\FNH@toks + \expandafter\everypar\expandafter{\the\everypar}}\fi + \else\FNH@toks{}\fi + \expandafter + \endgroup\the\FNH@toks + \ifFNH@savingnotes\else + \ifvoid\FNH@notes\else + \begingroup + \let\@makefntext\@empty + \let\@finalstrut\@gobble + \let\rule\@gobbletwo + \ifx\@footnotetext\@mpfootnotetext + \expandafter\FNH@H@@mpfootnotetext + \else + \expandafter\FNH@H@@footnotetext + \fi{\unvbox\FNH@notes}% + \endgroup + \fi + \fi +}% +\def\FNH@footnote@envname {footnote}% +\def\FNH@footnotetext@envname{footnotetext}% +\def\FNH@footnote{% +% this line added for Sphinx: + \spx@opt@BeforeFootnote + \ifx\@currenvir\FNH@footnote@envname + \expandafter\FNH@footnoteenv + \else + \expandafter\FNH@latex@footnote + \fi +}% +\def\FNH@footnoteenv{% +% this line added for Sphinx (footnotes in parsed literal blocks): + \catcode13=5 \sphinxunactivateextrasandspace + \@ifnextchar[% + \FNH@footnoteenv@i %] + {\stepcounter\@mpfn + \protected@xdef\@thefnmark{\thempfn}% + \@footnotemark + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext}% +}% +\def\FNH@footnoteenv@i[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \@footnotemark + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext +}% +\def\FNH@footnotetext{% + \ifx\@currenvir\FNH@footnotetext@envname + \expandafter\FNH@footnotetextenv + \else + \expandafter\FNH@latex@footnotetext + \fi +}% +\def\FNH@footnotetextenv{% + \@ifnextchar[% + \FNH@footnotetextenv@i %] + {\protected@xdef\@thefnmark{\thempfn}% + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext}% +}% +\def\FNH@footnotetextenv@i[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \ifFNH@savingnotes + \def\FNH@endfntext@fntext{\FNH@nohyp@fntext}% + \else + \def\FNH@endfntext@fntext{\FNH@H@@footnotetext}% + \fi + \FNH@startfntext +}% +\def\FNH@startfntext{% + \setbox\z@\vbox\bgroup + \FNH@startnote + \FNH@prefntext + \rule\z@\footnotesep\ignorespaces +}% +\def\FNH@endfntext {% + \@finalstrut\strutbox + \FNH@postfntext + \FNH@endnote + \egroup + \begingroup + \let\@makefntext\@empty\let\@finalstrut\@gobble\let\rule\@gobbletwo + \FNH@endfntext@fntext {\unvbox\z@}% + \endgroup +}% +\let\FNH@prefntext\@empty +\let\FNH@postfntext\@empty +\AtBeginDocument{\iffootnotehyperparse\expandafter\FNH@check\fi}% +\def\FNH@safeif#1{% + \iftrue\csname if#1\endcsname\csname fi\endcsname\expandafter\@firstoftwo + \else\csname fi\endcsname\expandafter\@secondoftwo + \fi +}% +\def\FNH@check{% + \ifx\@makefntextFB\@undefined\expandafter\FNH@check@ + \else\expandafter\FNH@frenchb@ + \fi +}% +\def\FNH@frenchb@{% + \def\FNH@prefntext{% + \localleftbox{}% + \let\FBeverypar@save\FBeverypar@quote + \let\FBeverypar@quote\relax + \FNH@safeif{FB@koma}% + {\FNH@safeif{FBFrenchFootnotes}% + {\ifx\footnote\thanks + \let\@@makefnmark\@@makefnmarkTH + \@makefntextTH{} % space as in french.ldf + \else + \let\@@makefnmark\@@makefnmarkFB + \@makefntextFB{} % space as in french.ldf + \fi + }{\let\@@makefnmark\@@makefnmarkORI + \@makefntextORI{}% no space as in french.ldf + }% + }% + {\FNH@safeif{FBFrenchFootnotes}% + {\@makefntextFB{}}% + {\@makefntextORI{}}% + }% + }% + \def\FNH@postfntext{% + \let\FBeverypar@quote\FBeverypar@save + \localleftbox{\FBeveryline@quote}% + }% +}% +\def\FNH@check@{% + \expandafter\FNH@check@a\@makefntext{1.2!3?4,}% + \FNH@@@1.2!3?4,\FNH@@@\relax +}% +\long\def\FNH@check@a #11.2!3?4,#2\FNH@@@#3{% + \ifx\relax#3\expandafter\FNH@checkagain@ + \else + \def\FNH@prefntext{#1}\def\FNH@postfntext{#2}% + \expandafter\FNH@check@b + \fi +}% +\def\FNH@checkagain@{% + \expandafter\FNH@checkagain@a + \detokenize\expandafter{\@makefntext{1.2!3?4,}}\relax\FNH@@@ +}% +\edef\FNH@temp{\noexpand\FNH@checkagain@a ##1\string{1.2!3?4,\string}}% +\expandafter\def\FNH@temp#2#3\FNH@@@{% + \ifx\relax#2% + \def\FNH@prefntext{\@makefntext{}}% + \else\FNH@bad@makefntext@alert + \fi +}% +\def\FNH@check@b #1\relax{% + \expandafter\expandafter\expandafter\FNH@check@c + \expandafter\meaning\expandafter\FNH@prefntext + \meaning\FNH@postfntext1.2!3?4,\FNH@check@c\relax +}% +\def\FNH@check@c #11.2!3?4,#2#3\relax{% + \ifx\FNH@check@c#2\else\FNH@bad@makefntext@alert\fi +}% +% slight reformulation for Sphinx +\def\FNH@bad@makefntext@alert{% + \PackageWarningNoLine{footnotehyper-sphinx}% + {Footnotes will be sub-optimal, sorry. This is due to the document class or^^J + some package modifying macro \string\@makefntext.^^J + You can try to report this incompatibility at^^J + https://github.com/sphinx-doc/sphinx with this info:}% + \typeout{\meaning\@makefntext}% + \let\FNH@prefntext\@empty\let\FNH@postfntext\@empty +}% +% this macro from original footnote.sty is not used anymore by Sphinx +% but for simplicity sake let's just keep it as is +\def\makesavenoteenv{\@ifnextchar[\FNH@msne@ii\FNH@msne@i}%] +\def\FNH@msne@i #1{% + \expandafter\let\csname FNH$#1\expandafter\endcsname %$ + \csname #1\endcsname + \expandafter\let\csname endFNH$#1\expandafter\endcsname %$ + \csname end#1\endcsname + \FNH@msne@ii[#1]{FNH$#1}%$ +}% +\def\FNH@msne@ii[#1]#2{% + \expandafter\edef\csname#1\endcsname{% + \noexpand\savenotes + \expandafter\noexpand\csname#2\endcsname + }% + \expandafter\edef\csname end#1\endcsname{% + \expandafter\noexpand\csname end#2\endcsname + \noexpand\expandafter + \noexpand\spewnotes + \noexpand\if@endpe\noexpand\@endpetrue\noexpand\fi + }% +}% +% some extras for Sphinx : +% \sphinxfootnotemark: usable in section titles and silently removed from TOCs. +\def\sphinxfootnotemark [#1]% + {\ifx\thepage\relax\else\sphinxfootref{#1}\fi}% +% \sphinxfootref: +% - \spx@opt@BeforeFootnote is from BeforeFootnote sphinxsetup option +% - \ref: +% the latex.py writer inserts a \phantomsection\label{.} +% whenever +% - the footnote was explicitly numbered in sources, +% - or it was in restrained context and is rendered using footnotetext +% +% These are the two types of footnotes that \sphinxfootnotemark must +% handle. But for explicitly numbered footnotes the same number +% can be found in document. So a secondary part in is updated +% at each novel such footnote to know what is the target from then on +% for \sphinxfootnotemark and already encountered [1], or [2],... +% +% LaTeX package varioref is not supported by hyperref (from its doc: "There +% are too many problems with varioref. Nobody has time to sort them out. +% Therefore this package is now unsupported.") So we will simply use our own +% macros to access the page number of footnote text and decide whether to print +% it. \pagename is internationalized by latex-babel. +\def\spx@thefnmark#1#2{% + % #1=label for reference, #2=page where footnote was printed + \ifx\spx@tempa\spx@tempb + % same page + #1% + \else + \sphinxthefootnotemark{#1}{#2}% + \fi +}% +\def\sphinxfootref@get #1#2#3#4#5\relax{% + \def\sphinxfootref@label{#1}% + \def\sphinxfootref@page {#2}% + \def\sphinxfootref@Href {#4}% +}% +\protected\def\sphinxfootref#1{% #1 always explicit number in Sphinx usage + \spx@opt@BeforeFootnote + \ltx@ifundefined{r@\thesphinxscope.#1}% + {\gdef\@thefnmark{?}\H@@footnotemark}% + {\expandafter\expandafter\expandafter\sphinxfootref@get + \csname r@\thesphinxscope.#1\endcsname\relax + \edef\spx@tempa{\thepage}\edef\spx@tempb{\sphinxfootref@page}% + \protected@xdef\@thefnmark{\spx@thefnmark{\sphinxfootref@label}{\sphinxfootref@page}}% + \let\spx@@makefnmark\@makefnmark + \def\@makefnmark{% + \hyper@linkstart{link}{\sphinxfootref@Href}% + \spx@@makefnmark + \hyper@linkend + }% + \H@@footnotemark + \let\@makefnmark\spx@@makefnmark + }% +}% +\AtBeginDocument{% + % let hyperref less complain + \pdfstringdefDisableCommands{\def\sphinxfootnotemark [#1]{}}% + % to obtain hyperlinked footnotes in longtable environment we must replace + % hyperref's patch of longtable's patch of \@footnotetext by our own + \let\LT@p@ftntext\FNH@hyper@fntext + % this *requires* longtable to be used always wrapped in savenotes environment +}% +\endinput +%% +%% End of file `footnotehyper-sphinx.sty'. diff --git a/docs/build/latex/frontendAlertCreate.png b/docs/build/latex/frontendAlertCreate.png new file mode 100644 index 0000000..94e0e18 Binary files /dev/null and b/docs/build/latex/frontendAlertCreate.png differ diff --git a/docs/build/latex/frontendAnalysis.png b/docs/build/latex/frontendAnalysis.png new file mode 100644 index 0000000..b8de2ae Binary files /dev/null and b/docs/build/latex/frontendAnalysis.png differ diff --git a/docs/build/latex/frontendDashboard.png b/docs/build/latex/frontendDashboard.png new file mode 100644 index 0000000..969ff3a Binary files /dev/null and b/docs/build/latex/frontendDashboard.png differ diff --git a/docs/build/latex/frontendRepositoryCreate.png b/docs/build/latex/frontendRepositoryCreate.png new file mode 100644 index 0000000..2ae3c39 Binary files /dev/null and b/docs/build/latex/frontendRepositoryCreate.png differ diff --git a/docs/build/latex/frontendRepositoryShare.png b/docs/build/latex/frontendRepositoryShare.png new file mode 100644 index 0000000..14ed9c0 Binary files /dev/null and b/docs/build/latex/frontendRepositoryShare.png differ diff --git a/docs/build/latex/latexmkjarc b/docs/build/latex/latexmkjarc new file mode 100644 index 0000000..6e36b19 --- /dev/null +++ b/docs/build/latex/latexmkjarc @@ -0,0 +1,22 @@ +$latex = 'pdflatex ' . $ENV{'LATEXOPTS'} . ' -kanji=utf8 %O %S'; +$dvipdf = 'dvipdfmx %O -o %D %S'; +$makeindex = 'internal mendex %S %B %D'; +sub mendex { + my ($source, $basename, $destination) = @_; + my $dictfile = $basename . ".dic"; + unlink($destination); + system("mendex", "-U", "-f", "-d", $dictfile, "-s", "python.ist", $source); + if ($? > 0) { + print("mendex exited with error code $? (ignored)\n"); + } + if (!-e $destination) { + # create an empty .ind file if nothing + open(FH, ">" . $destination); + close(FH); + } + return 0; +} +add_cus_dep( "glo", "gls", 0, "makeglo" ); +sub makeglo { + return system( "mendex -J -f -s gglo.ist -o '$_[0].gls' '$_[0].glo'" ); +} \ No newline at end of file diff --git a/docs/build/latex/latexmkrc b/docs/build/latex/latexmkrc new file mode 100644 index 0000000..bba17fa --- /dev/null +++ b/docs/build/latex/latexmkrc @@ -0,0 +1,9 @@ +$latex = 'latex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$pdflatex = 'pdflatex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$lualatex = 'lualatex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$xelatex = 'xelatex --no-pdf ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$makeindex = 'makeindex -s python.ist %O -o %D %S'; +add_cus_dep( "glo", "gls", 0, "makeglo" ); +sub makeglo { + return system( "makeindex -s gglo.ist -o '$_[0].gls' '$_[0].glo'" ); +} \ No newline at end of file diff --git a/docs/build/latex/make.bat b/docs/build/latex/make.bat new file mode 100644 index 0000000..94bda21 --- /dev/null +++ b/docs/build/latex/make.bat @@ -0,0 +1,31 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +pushd %~dp0 + +set PDFLATEX=latexmk -pdf -dvi- -ps- + +set "LATEXOPTS= " + +if "%1" == "" goto all-pdf + +if "%1" == "all-pdf" ( + :all-pdf + for %%i in (*.tex) do ( + %PDFLATEX% %LATEXMKOPTS% %%i + ) + goto end +) + +if "%1" == "all-pdf-ja" ( + goto all-pdf +) + +if "%1" == "clean" ( + del /q /s *.dvi *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz *.fls *.fdb_latexmk + goto end +) + +:end +popd \ No newline at end of file diff --git a/docs/build/latex/nest.aux b/docs/build/latex/nest.aux new file mode 100644 index 0000000..703eb54 --- /dev/null +++ b/docs/build/latex/nest.aux @@ -0,0 +1,534 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\babel@aux[2]{} +\@nameuse{bbl@beforestart} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\babel@aux{italian}{} +\babel@aux{italian}{} +\newlabel{index::doc}{{}{1}{}{section*.2}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {1}Il progetto in breve}{3}{chapter.1}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{guide/about:il-progetto-in-breve}{{1}{3}{Il progetto in breve}{chapter.1}{}} +\newlabel{guide/about::doc}{{1}{3}{Il progetto in breve}{chapter.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1.1}Suddivisione in moduli}{3}{section.1.1}\protected@file@percent } +\newlabel{guide/about:suddivisione-in-moduli}{{1.1}{3}{Suddivisione in moduli}{section.1.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {1.2}Screenshots}{4}{section.1.2}\protected@file@percent } +\newlabel{guide/about:screenshots}{{1.2}{4}{Screenshots}{section.1.2}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {2}Installazione}{7}{chapter.2}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{guide/installation:installazione}{{2}{7}{Installazione}{chapter.2}{}} +\newlabel{guide/installation::doc}{{2}{7}{Installazione}{chapter.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.1}Prerequisiti}{7}{section.2.1}\protected@file@percent } +\newlabel{guide/installation:prerequisiti}{{2.1}{7}{Prerequisiti}{section.2.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.2}Creare un nuovo utente}{8}{section.2.2}\protected@file@percent } +\newlabel{guide/installation:creare-un-nuovo-utente}{{2.2}{8}{Creare un nuovo utente}{section.2.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.3}Scaricare il codice sorgente}{8}{section.2.3}\protected@file@percent } +\newlabel{guide/installation:scaricare-il-codice-sorgente}{{2.3}{8}{Scaricare il codice sorgente}{section.2.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.4}Creare il database}{8}{section.2.4}\protected@file@percent } +\newlabel{guide/installation:creare-il-database}{{2.4}{8}{Creare il database}{section.2.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.5}Creare un file di configurazione per il backend}{8}{section.2.5}\protected@file@percent } +\newlabel{guide/installation:creare-un-file-di-configurazione-per-il-backend}{{2.5}{8}{Creare un file di configurazione per il backend}{section.2.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.6}Installare le dipendenze Python}{9}{section.2.6}\protected@file@percent } +\newlabel{guide/installation:installare-le-dipendenze-python}{{2.6}{9}{Installare le dipendenze Python}{section.2.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.7}Installare le dipendenze NodeJS}{9}{section.2.7}\protected@file@percent } +\newlabel{guide/installation:installare-le-dipendenze-nodejs}{{2.7}{9}{Installare le dipendenze NodeJS}{section.2.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.8}Creare un servizio SystemD per il backend}{9}{section.2.8}\protected@file@percent } +\newlabel{guide/installation:creare-un-servizio-systemd-per-il-backend}{{2.8}{9}{Creare un servizio SystemD per il backend}{section.2.8}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.9}Compilare il frontend}{10}{section.2.9}\protected@file@percent } +\newlabel{guide/installation:compilare-il-frontend}{{2.9}{10}{Compilare il frontend}{section.2.9}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.10}Creare un servizio SystemD per il frontend}{10}{section.2.10}\protected@file@percent } +\newlabel{guide/installation:creare-un-servizio-systemd-per-il-frontend}{{2.10}{10}{Creare un servizio SystemD per il frontend}{section.2.10}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.11}Creare un servizio SystemD per il crawler}{12}{section.2.11}\protected@file@percent } +\newlabel{guide/installation:creare-un-servizio-systemd-per-il-crawler}{{2.11}{12}{Creare un servizio SystemD per il crawler}{section.2.11}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.12}Configurare il crawler}{12}{section.2.12}\protected@file@percent } +\newlabel{guide/installation:configurare-il-crawler}{{2.12}{12}{Configurare il crawler}{section.2.12}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.13}Creare un timer SystemD per il crawler}{13}{section.2.13}\protected@file@percent } +\newlabel{guide/installation:creare-un-timer-systemd-per-il-crawler}{{2.13}{13}{Creare un timer SystemD per il crawler}{section.2.13}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.14}Configurare Apache come reverse proxy}{14}{section.2.14}\protected@file@percent } +\newlabel{guide/installation:configurare-apache-come-reverse-proxy}{{2.14}{14}{Configurare Apache come reverse proxy}{section.2.14}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {3}Aggiornamento}{15}{chapter.3}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{guide/updating:aggiornamento}{{3}{15}{Aggiornamento}{chapter.3}{}} +\newlabel{guide/updating::doc}{{3}{15}{Aggiornamento}{chapter.3}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {4}Introduzione}{17}{chapter.4}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{development/goals:introduzione}{{4}{17}{Introduzione}{chapter.4}{}} +\newlabel{development/goals::doc}{{4}{17}{Introduzione}{chapter.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.1}Obiettivo}{17}{section.4.1}\protected@file@percent } +\newlabel{development/goals:obiettivo}{{4.1}{17}{Obiettivo}{section.4.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.2}Campo di applicazione}{17}{section.4.2}\protected@file@percent } +\newlabel{development/goals:campo-di-applicazione}{{4.2}{17}{Campo di applicazione}{section.4.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.3}Caratteristiche degli utenti}{17}{section.4.3}\protected@file@percent } +\newlabel{development/goals:caratteristiche-degli-utenti}{{4.3}{17}{Caratteristiche degli utenti}{section.4.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.4}Glossario}{18}{section.4.4}\protected@file@percent } +\newlabel{development/goals:glossario}{{4.4}{18}{Glossario}{section.4.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.5}Macro\sphinxhyphen {}funzionalità}{18}{section.4.5}\protected@file@percent } +\newlabel{development/goals:macro-funzionalita}{{4.5}{18}{Macro\sphinxhyphen {}funzionalità}{section.4.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.6}Casi d\textquotesingle {}uso}{18}{section.4.6}\protected@file@percent } +\newlabel{development/goals:casi-d-uso}{{4.6}{18}{Casi d\textquotesingle {}uso}{section.4.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.7}Backlog generale}{23}{section.4.7}\protected@file@percent } +\newlabel{development/goals:backlog-generale}{{4.7}{23}{Backlog generale}{section.4.7}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {5}Strumenti utilizzati}{27}{chapter.5}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{development/tools:strumenti-utilizzati}{{5}{27}{Strumenti utilizzati}{chapter.5}{}} +\newlabel{development/tools::doc}{{5}{27}{Strumenti utilizzati}{chapter.5}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {6}Processo di sviluppo}{29}{chapter.6}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{development/process:processo-di-sviluppo}{{6}{29}{Processo di sviluppo}{chapter.6}{}} +\newlabel{development/process::doc}{{6}{29}{Processo di sviluppo}{chapter.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.1}Ruoli}{29}{section.6.1}\protected@file@percent } +\newlabel{development/process:ruoli}{{6.1}{29}{Ruoli}{section.6.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.2}Sprint}{29}{section.6.2}\protected@file@percent } +\newlabel{development/process:sprint}{{6.2}{29}{Sprint}{section.6.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.1}Sprint 0: 04 Apr \sphinxhyphen {} 18 Apr}{30}{subsection.6.2.1}\protected@file@percent } +\newlabel{development/sprint0/index:sprint-0-04-apr-18-apr}{{6.2.1}{30}{Sprint 0: 04 Apr \sphinxhyphen {} 18 Apr}{subsection.6.2.1}{}} +\newlabel{development/sprint0/index::doc}{{6.2.1}{30}{Sprint 0: 04 Apr \sphinxhyphen {} 18 Apr}{subsection.6.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.1.1}Consegna}{30}{subsubsection.6.2.1.1}\protected@file@percent } +\newlabel{development/sprint0/index:consegna}{{6.2.1.1}{30}{Consegna}{subsubsection.6.2.1.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.1.2}Definition of Ready}{30}{subsubsection.6.2.1.2}\protected@file@percent } +\newlabel{development/sprint0/index:definition-of-ready}{{6.2.1.2}{30}{Definition of Ready}{subsubsection.6.2.1.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.1.3}Definition of Done}{30}{subsubsection.6.2.1.3}\protected@file@percent } +\newlabel{development/sprint0/index:definition-of-done}{{6.2.1.3}{30}{Definition of Done}{subsubsection.6.2.1.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.1.4}Statistiche}{30}{subsubsection.6.2.1.4}\protected@file@percent } +\newlabel{development/sprint0/index:statistiche}{{6.2.1.4}{30}{Statistiche}{subsubsection.6.2.1.4}{}} +\@writefile{toc}{\contentsline {paragraph}{Gitinspector}{30}{paragraph*.3}\protected@file@percent } +\newlabel{development/sprint0/index:gitinspector}{{6.2.1.4}{30}{Gitinspector}{paragraph*.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.1.5}Sprint Retrospective}{30}{subsubsection.6.2.1.5}\protected@file@percent } +\newlabel{development/sprint0/index:sprint-retrospective}{{6.2.1.5}{30}{Sprint Retrospective}{subsubsection.6.2.1.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.1.6}Sprint Review}{31}{subsubsection.6.2.1.6}\protected@file@percent } +\newlabel{development/sprint0/index:sprint-review}{{6.2.1.6}{31}{Sprint Review}{subsubsection.6.2.1.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.1.7}Artefatti}{31}{subsubsection.6.2.1.7}\protected@file@percent } +\newlabel{development/sprint0/index:artefatti}{{6.2.1.7}{31}{Artefatti}{subsubsection.6.2.1.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.1.8}Registro attività}{31}{subsubsection.6.2.1.8}\protected@file@percent } +\newlabel{development/sprint0/index:registro-attivita}{{6.2.1.8}{31}{Registro attività}{subsubsection.6.2.1.8}{}} +\@writefile{toc}{\contentsline {paragraph}{Riunioni collettive}{31}{paragraph*.4}\protected@file@percent } +\newlabel{development/sprint0/index:riunioni-collettive}{{6.2.1.8}{31}{Riunioni collettive}{paragraph*.4}{}} +\@writefile{toc}{\contentsline {paragraph}{Attività individuali}{31}{paragraph*.5}\protected@file@percent } +\newlabel{development/sprint0/index:attivita-individuali}{{6.2.1.8}{31}{Attività individuali}{paragraph*.5}{}} +\@writefile{toc}{\contentsline {subparagraph}{Stefano Goldoni}{31}{subparagraph*.6}\protected@file@percent } +\newlabel{development/sprint0/index:stefano-goldoni}{{6.2.1.8}{31}{Stefano Goldoni}{subparagraph*.6}{}} +\@writefile{toc}{\contentsline {subparagraph}{Flavia Cocca}{32}{subparagraph*.7}\protected@file@percent } +\newlabel{development/sprint0/index:flavia-cocca}{{6.2.1.8}{32}{Flavia Cocca}{subparagraph*.7}{}} +\@writefile{toc}{\contentsline {subparagraph}{Chiara Calzolari}{32}{subparagraph*.8}\protected@file@percent } +\newlabel{development/sprint0/index:chiara-calzolari}{{6.2.1.8}{32}{Chiara Calzolari}{subparagraph*.8}{}} +\@writefile{toc}{\contentsline {subparagraph}{Stefano Pigozzi}{32}{subparagraph*.9}\protected@file@percent } +\newlabel{development/sprint0/index:stefano-pigozzi}{{6.2.1.8}{32}{Stefano Pigozzi}{subparagraph*.9}{}} +\@writefile{toc}{\contentsline {subparagraph}{Giovanni Anniballi}{33}{subparagraph*.10}\protected@file@percent } +\newlabel{development/sprint0/index:giovanni-anniballi}{{6.2.1.8}{33}{Giovanni Anniballi}{subparagraph*.10}{}} +\@writefile{toc}{\contentsline {subparagraph}{Giorgio Minoccari}{33}{subparagraph*.11}\protected@file@percent } +\newlabel{development/sprint0/index:giorgio-minoccari}{{6.2.1.8}{33}{Giorgio Minoccari}{subparagraph*.11}{}} +\@writefile{toc}{\contentsline {subparagraph}{Lorenzo Balugani}{33}{subparagraph*.12}\protected@file@percent } +\newlabel{development/sprint0/index:lorenzo-balugani}{{6.2.1.8}{33}{Lorenzo Balugani}{subparagraph*.12}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.1.9}Risultati della partita di Scrumble}{33}{subsubsection.6.2.1.9}\protected@file@percent } +\newlabel{development/sprint0/index:risultati-della-partita-di-scrumble}{{6.2.1.9}{33}{Risultati della partita di Scrumble}{subsubsection.6.2.1.9}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.2}Sprint 1: 19 Apr \sphinxhyphen {} 02 Mag}{38}{subsection.6.2.2}\protected@file@percent } +\newlabel{development/sprint1/index:sprint-1-19-apr-02-mag}{{6.2.2}{38}{Sprint 1: 19 Apr \sphinxhyphen {} 02 Mag}{subsection.6.2.2}{}} +\newlabel{development/sprint1/index::doc}{{6.2.2}{38}{Sprint 1: 19 Apr \sphinxhyphen {} 02 Mag}{subsection.6.2.2}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.2.1}Consegna}{38}{subsubsection.6.2.2.1}\protected@file@percent } +\newlabel{development/sprint1/index:consegna}{{6.2.2.1}{38}{Consegna}{subsubsection.6.2.2.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.2.2}Goal}{38}{subsubsection.6.2.2.2}\protected@file@percent } +\newlabel{development/sprint1/index:goal}{{6.2.2.2}{38}{Goal}{subsubsection.6.2.2.2}{}} +\@writefile{toc}{\contentsline {paragraph}{Backlog}{39}{paragraph*.13}\protected@file@percent } +\newlabel{development/sprint1/index:backlog}{{6.2.2.2}{39}{Backlog}{paragraph*.13}{}} +\@writefile{toc}{\contentsline {paragraph}{Task completati}{40}{paragraph*.14}\protected@file@percent } +\newlabel{development/sprint1/index:task-completati}{{6.2.2.2}{40}{Task completati}{paragraph*.14}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.2.3}Definition of Ready}{40}{subsubsection.6.2.2.3}\protected@file@percent } +\newlabel{development/sprint1/index:definition-of-ready}{{6.2.2.3}{40}{Definition of Ready}{subsubsection.6.2.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.2.4}Definition of Done}{40}{subsubsection.6.2.2.4}\protected@file@percent } +\newlabel{development/sprint1/index:definition-of-done}{{6.2.2.4}{40}{Definition of Done}{subsubsection.6.2.2.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.2.5}Statistiche}{40}{subsubsection.6.2.2.5}\protected@file@percent } +\newlabel{development/sprint1/index:statistiche}{{6.2.2.5}{40}{Statistiche}{subsubsection.6.2.2.5}{}} +\@writefile{toc}{\contentsline {paragraph}{Burndown chart}{40}{paragraph*.15}\protected@file@percent } +\newlabel{development/sprint1/index:burndown-chart}{{6.2.2.5}{40}{Burndown chart}{paragraph*.15}{}} +\@writefile{toc}{\contentsline {paragraph}{Gitinspector}{41}{paragraph*.16}\protected@file@percent } +\newlabel{development/sprint1/index:gitinspector}{{6.2.2.5}{41}{Gitinspector}{paragraph*.16}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.2.6}Sprint Retrospective}{41}{subsubsection.6.2.2.6}\protected@file@percent } +\newlabel{development/sprint1/index:sprint-retrospective}{{6.2.2.6}{41}{Sprint Retrospective}{subsubsection.6.2.2.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.2.7}Sprint Review}{41}{subsubsection.6.2.2.7}\protected@file@percent } +\newlabel{development/sprint1/index:sprint-review}{{6.2.2.7}{41}{Sprint Review}{subsubsection.6.2.2.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.2.8}Valutazione sul debito tecnico}{41}{subsubsection.6.2.2.8}\protected@file@percent } +\newlabel{development/sprint1/index:valutazione-sul-debito-tecnico}{{6.2.2.8}{41}{Valutazione sul debito tecnico}{subsubsection.6.2.2.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.2.9}Valutazione sulle User Stories}{42}{subsubsection.6.2.2.9}\protected@file@percent } +\newlabel{development/sprint1/index:valutazione-sulle-user-stories}{{6.2.2.9}{42}{Valutazione sulle User Stories}{subsubsection.6.2.2.9}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.2.10}Registro attività}{42}{subsubsection.6.2.2.10}\protected@file@percent } +\newlabel{development/sprint1/index:registro-attivita}{{6.2.2.10}{42}{Registro attività}{subsubsection.6.2.2.10}{}} +\@writefile{toc}{\contentsline {paragraph}{Riunioni collettive}{42}{paragraph*.17}\protected@file@percent } +\newlabel{development/sprint1/index:riunioni-collettive}{{6.2.2.10}{42}{Riunioni collettive}{paragraph*.17}{}} +\@writefile{toc}{\contentsline {paragraph}{Attività individuali}{42}{paragraph*.18}\protected@file@percent } +\newlabel{development/sprint1/index:attivita-individuali}{{6.2.2.10}{42}{Attività individuali}{paragraph*.18}{}} +\@writefile{toc}{\contentsline {subparagraph}{Stefano Goldoni}{43}{subparagraph*.19}\protected@file@percent } +\newlabel{development/sprint1/index:stefano-goldoni}{{6.2.2.10}{43}{Stefano Goldoni}{subparagraph*.19}{}} +\@writefile{toc}{\contentsline {subparagraph}{Flavia Cocca}{43}{subparagraph*.20}\protected@file@percent } +\newlabel{development/sprint1/index:flavia-cocca}{{6.2.2.10}{43}{Flavia Cocca}{subparagraph*.20}{}} +\@writefile{toc}{\contentsline {subparagraph}{Chiara Calzolari}{43}{subparagraph*.21}\protected@file@percent } +\newlabel{development/sprint1/index:chiara-calzolari}{{6.2.2.10}{43}{Chiara Calzolari}{subparagraph*.21}{}} +\gdef \LT@i {\LT@entry + {5}{59.45992pt}\LT@entry + {5}{42.6799pt}\LT@entry + {5}{130.71878pt}} +\@writefile{toc}{\contentsline {subparagraph}{Stefano Pigozzi}{44}{subparagraph*.22}\protected@file@percent } +\newlabel{development/sprint1/index:stefano-pigozzi}{{6.2.2.10}{44}{Stefano Pigozzi}{subparagraph*.22}{}} +\@writefile{toc}{\contentsline {subparagraph}{Giovanni Anniballi}{45}{subparagraph*.23}\protected@file@percent } +\newlabel{development/sprint1/index:giovanni-anniballi}{{6.2.2.10}{45}{Giovanni Anniballi}{subparagraph*.23}{}} +\@writefile{toc}{\contentsline {subparagraph}{Giorgio Minoccari}{46}{subparagraph*.24}\protected@file@percent } +\newlabel{development/sprint1/index:giorgio-minoccari}{{6.2.2.10}{46}{Giorgio Minoccari}{subparagraph*.24}{}} +\@writefile{toc}{\contentsline {subparagraph}{Lorenzo Balugani}{46}{subparagraph*.25}\protected@file@percent } +\newlabel{development/sprint1/index:lorenzo-balugani}{{6.2.2.10}{46}{Lorenzo Balugani}{subparagraph*.25}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.3}Sprint 2: 03 Mag \sphinxhyphen {} 16 Mag}{47}{subsection.6.2.3}\protected@file@percent } +\newlabel{development/sprint2/index:sprint-2-03-mag-16-mag}{{6.2.3}{47}{Sprint 2: 03 Mag \sphinxhyphen {} 16 Mag}{subsection.6.2.3}{}} +\newlabel{development/sprint2/index::doc}{{6.2.3}{47}{Sprint 2: 03 Mag \sphinxhyphen {} 16 Mag}{subsection.6.2.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.1}Consegna}{47}{subsubsection.6.2.3.1}\protected@file@percent } +\newlabel{development/sprint2/index:consegna}{{6.2.3.1}{47}{Consegna}{subsubsection.6.2.3.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.2}Goal}{47}{subsubsection.6.2.3.2}\protected@file@percent } +\newlabel{development/sprint2/index:goal}{{6.2.3.2}{47}{Goal}{subsubsection.6.2.3.2}{}} +\@writefile{toc}{\contentsline {paragraph}{Backlog}{48}{paragraph*.26}\protected@file@percent } +\newlabel{development/sprint2/index:backlog}{{6.2.3.2}{48}{Backlog}{paragraph*.26}{}} +\@writefile{toc}{\contentsline {paragraph}{Task completati}{49}{paragraph*.27}\protected@file@percent } +\newlabel{development/sprint2/index:task-completati}{{6.2.3.2}{49}{Task completati}{paragraph*.27}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.3}Definition of Ready}{50}{subsubsection.6.2.3.3}\protected@file@percent } +\newlabel{development/sprint2/index:definition-of-ready}{{6.2.3.3}{50}{Definition of Ready}{subsubsection.6.2.3.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.4}Definition of Done}{50}{subsubsection.6.2.3.4}\protected@file@percent } +\newlabel{development/sprint2/index:definition-of-done}{{6.2.3.4}{50}{Definition of Done}{subsubsection.6.2.3.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.5}Statistiche}{50}{subsubsection.6.2.3.5}\protected@file@percent } +\newlabel{development/sprint2/index:statistiche}{{6.2.3.5}{50}{Statistiche}{subsubsection.6.2.3.5}{}} +\@writefile{toc}{\contentsline {paragraph}{Burndown chart}{50}{paragraph*.28}\protected@file@percent } +\newlabel{development/sprint2/index:burndown-chart}{{6.2.3.5}{50}{Burndown chart}{paragraph*.28}{}} +\@writefile{toc}{\contentsline {paragraph}{Gitinspector}{50}{paragraph*.29}\protected@file@percent } +\newlabel{development/sprint2/index:gitinspector}{{6.2.3.5}{50}{Gitinspector}{paragraph*.29}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.6}Sprint Retrospective}{51}{subsubsection.6.2.3.6}\protected@file@percent } +\newlabel{development/sprint2/index:sprint-retrospective}{{6.2.3.6}{51}{Sprint Retrospective}{subsubsection.6.2.3.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.7}Sprint Review}{51}{subsubsection.6.2.3.7}\protected@file@percent } +\newlabel{development/sprint2/index:sprint-review}{{6.2.3.7}{51}{Sprint Review}{subsubsection.6.2.3.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.3.8}Registro attività}{51}{subsubsection.6.2.3.8}\protected@file@percent } +\newlabel{development/sprint2/index:registro-attivita}{{6.2.3.8}{51}{Registro attività}{subsubsection.6.2.3.8}{}} +\@writefile{toc}{\contentsline {paragraph}{Riunioni collettive}{51}{paragraph*.30}\protected@file@percent } +\newlabel{development/sprint2/index:riunioni-collettive}{{6.2.3.8}{51}{Riunioni collettive}{paragraph*.30}{}} +\@writefile{toc}{\contentsline {paragraph}{Attività individuali}{51}{paragraph*.31}\protected@file@percent } +\newlabel{development/sprint2/index:attivita-individuali}{{6.2.3.8}{51}{Attività individuali}{paragraph*.31}{}} +\@writefile{toc}{\contentsline {subparagraph}{Stefano Goldoni}{51}{subparagraph*.32}\protected@file@percent } +\newlabel{development/sprint2/index:stefano-goldoni}{{6.2.3.8}{51}{Stefano Goldoni}{subparagraph*.32}{}} +\gdef \LT@ii {\LT@entry + {5}{59.45992pt}\LT@entry + {1}{51.30954pt}\LT@entry + {5}{104.88922pt}} +\@writefile{toc}{\contentsline {subparagraph}{Flavia Cocca}{52}{subparagraph*.33}\protected@file@percent } +\newlabel{development/sprint2/index:flavia-cocca}{{6.2.3.8}{52}{Flavia Cocca}{subparagraph*.33}{}} +\@writefile{toc}{\contentsline {subparagraph}{Stefano Pigozzi}{52}{subparagraph*.34}\protected@file@percent } +\newlabel{development/sprint2/index:stefano-pigozzi}{{6.2.3.8}{52}{Stefano Pigozzi}{subparagraph*.34}{}} +\@writefile{toc}{\contentsline {subparagraph}{Chiara Calzolari}{53}{subparagraph*.35}\protected@file@percent } +\newlabel{development/sprint2/index:chiara-calzolari}{{6.2.3.8}{53}{Chiara Calzolari}{subparagraph*.35}{}} +\@writefile{toc}{\contentsline {subparagraph}{Giovanni Anniballi}{53}{subparagraph*.36}\protected@file@percent } +\newlabel{development/sprint2/index:giovanni-anniballi}{{6.2.3.8}{53}{Giovanni Anniballi}{subparagraph*.36}{}} +\@writefile{toc}{\contentsline {subparagraph}{Giorgio Minoccari}{54}{subparagraph*.37}\protected@file@percent } +\newlabel{development/sprint2/index:giorgio-minoccari}{{6.2.3.8}{54}{Giorgio Minoccari}{subparagraph*.37}{}} +\@writefile{toc}{\contentsline {subparagraph}{Lorenzo Balugani}{54}{subparagraph*.38}\protected@file@percent } +\newlabel{development/sprint2/index:lorenzo-balugani}{{6.2.3.8}{54}{Lorenzo Balugani}{subparagraph*.38}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2.4}Sprint 3: 17 Mag \sphinxhyphen {} 30 Mag}{54}{subsection.6.2.4}\protected@file@percent } +\newlabel{development/sprint3/index:sprint-3-17-mag-30-mag}{{6.2.4}{54}{Sprint 3: 17 Mag \sphinxhyphen {} 30 Mag}{subsection.6.2.4}{}} +\newlabel{development/sprint3/index::doc}{{6.2.4}{54}{Sprint 3: 17 Mag \sphinxhyphen {} 30 Mag}{subsection.6.2.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.4.1}Consegna}{54}{subsubsection.6.2.4.1}\protected@file@percent } +\newlabel{development/sprint3/index:consegna}{{6.2.4.1}{54}{Consegna}{subsubsection.6.2.4.1}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.4.2}Goal}{54}{subsubsection.6.2.4.2}\protected@file@percent } +\newlabel{development/sprint3/index:goal}{{6.2.4.2}{54}{Goal}{subsubsection.6.2.4.2}{}} +\@writefile{toc}{\contentsline {paragraph}{Backlog}{55}{paragraph*.39}\protected@file@percent } +\newlabel{development/sprint3/index:backlog}{{6.2.4.2}{55}{Backlog}{paragraph*.39}{}} +\@writefile{toc}{\contentsline {paragraph}{Task completati}{56}{paragraph*.40}\protected@file@percent } +\newlabel{development/sprint3/index:task-completati}{{6.2.4.2}{56}{Task completati}{paragraph*.40}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.4.3}Grooming session}{56}{subsubsection.6.2.4.3}\protected@file@percent } +\newlabel{development/sprint3/index:grooming-session}{{6.2.4.3}{56}{Grooming session}{subsubsection.6.2.4.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.4.4}Definition of Ready}{57}{subsubsection.6.2.4.4}\protected@file@percent } +\newlabel{development/sprint3/index:definition-of-ready}{{6.2.4.4}{57}{Definition of Ready}{subsubsection.6.2.4.4}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.4.5}Definition of Done}{57}{subsubsection.6.2.4.5}\protected@file@percent } +\newlabel{development/sprint3/index:definition-of-done}{{6.2.4.5}{57}{Definition of Done}{subsubsection.6.2.4.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.4.6}Statistiche}{57}{subsubsection.6.2.4.6}\protected@file@percent } +\newlabel{development/sprint3/index:statistiche}{{6.2.4.6}{57}{Statistiche}{subsubsection.6.2.4.6}{}} +\@writefile{toc}{\contentsline {paragraph}{Gitinspector}{57}{paragraph*.41}\protected@file@percent } +\newlabel{development/sprint3/index:gitinspector}{{6.2.4.6}{57}{Gitinspector}{paragraph*.41}{}} +\@writefile{toc}{\contentsline {paragraph}{Schermata finale di SonarQube}{57}{paragraph*.42}\protected@file@percent } +\newlabel{development/sprint3/index:schermata-finale-di-sonarqube}{{6.2.4.6}{57}{Schermata finale di SonarQube}{paragraph*.42}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.4.7}Final Retrospective}{57}{subsubsection.6.2.4.7}\protected@file@percent } +\newlabel{development/sprint3/index:final-retrospective}{{6.2.4.7}{57}{Final Retrospective}{subsubsection.6.2.4.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.4.8}Demo}{58}{subsubsection.6.2.4.8}\protected@file@percent } +\newlabel{development/sprint3/index:demo}{{6.2.4.8}{58}{Demo}{subsubsection.6.2.4.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{\numberline {6.2.4.9}Registro attività}{58}{subsubsection.6.2.4.9}\protected@file@percent } +\newlabel{development/sprint3/index:registro-attivita}{{6.2.4.9}{58}{Registro attività}{subsubsection.6.2.4.9}{}} +\@writefile{toc}{\contentsline {paragraph}{Riunioni collettive}{58}{paragraph*.43}\protected@file@percent } +\newlabel{development/sprint3/index:riunioni-collettive}{{6.2.4.9}{58}{Riunioni collettive}{paragraph*.43}{}} +\@writefile{toc}{\contentsline {paragraph}{Attività individuali}{58}{paragraph*.44}\protected@file@percent } +\newlabel{development/sprint3/index:attivita-individuali}{{6.2.4.9}{58}{Attività individuali}{paragraph*.44}{}} +\@writefile{toc}{\contentsline {subparagraph}{Stefano Goldoni}{58}{subparagraph*.45}\protected@file@percent } +\newlabel{development/sprint3/index:stefano-goldoni}{{6.2.4.9}{58}{Stefano Goldoni}{subparagraph*.45}{}} +\@writefile{toc}{\contentsline {subparagraph}{Flavia Cocca}{58}{subparagraph*.46}\protected@file@percent } +\newlabel{development/sprint3/index:flavia-cocca}{{6.2.4.9}{58}{Flavia Cocca}{subparagraph*.46}{}} +\@writefile{toc}{\contentsline {subparagraph}{Chiara Calzolari}{59}{subparagraph*.47}\protected@file@percent } +\newlabel{development/sprint3/index:chiara-calzolari}{{6.2.4.9}{59}{Chiara Calzolari}{subparagraph*.47}{}} +\@writefile{toc}{\contentsline {subparagraph}{Stefano Pigozzi}{59}{subparagraph*.48}\protected@file@percent } +\newlabel{development/sprint3/index:stefano-pigozzi}{{6.2.4.9}{59}{Stefano Pigozzi}{subparagraph*.48}{}} +\gdef \LT@iii {\LT@entry + {5}{59.45992pt}\LT@entry + {1}{51.30954pt}\LT@entry + {5}{104.88922pt}} +\@writefile{toc}{\contentsline {subparagraph}{Giovanni Anniballi}{60}{subparagraph*.49}\protected@file@percent } +\newlabel{development/sprint3/index:giovanni-anniballi}{{6.2.4.9}{60}{Giovanni Anniballi}{subparagraph*.49}{}} +\@writefile{toc}{\contentsline {subparagraph}{Giorgio Minoccari}{60}{subparagraph*.50}\protected@file@percent } +\newlabel{development/sprint3/index:giorgio-minoccari}{{6.2.4.9}{60}{Giorgio Minoccari}{subparagraph*.50}{}} +\@writefile{toc}{\contentsline {subparagraph}{Lorenzo Balugani}{61}{subparagraph*.51}\protected@file@percent } +\newlabel{development/sprint3/index:lorenzo-balugani}{{6.2.4.9}{61}{Lorenzo Balugani}{subparagraph*.51}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.3}Burndown chart complessiva}{61}{section.6.3}\protected@file@percent } +\newlabel{development/process:burndown-chart-complessiva}{{6.3}{61}{Burndown chart complessiva}{section.6.3}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {7}Artefatti}{63}{chapter.7}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{development/artifacts:artefatti}{{7}{63}{Artefatti}{chapter.7}{}} +\newlabel{development/artifacts::doc}{{7}{63}{Artefatti}{chapter.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {7.1}Diagrammi UML}{63}{section.7.1}\protected@file@percent } +\newlabel{development/artifacts:diagrammi-uml}{{7.1}{63}{Diagrammi UML}{section.7.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {7.2}Demo}{63}{section.7.2}\protected@file@percent } +\newlabel{development/artifacts:demo}{{7.2}{63}{Demo}{section.7.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {7.2.1}Video}{63}{subsection.7.2.1}\protected@file@percent } +\newlabel{development/artifacts:video}{{7.2.1}{63}{Video}{subsection.7.2.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {7.2.2}Interattiva}{64}{subsection.7.2.2}\protected@file@percent } +\newlabel{development/artifacts:interattiva}{{7.2.2}{64}{Interattiva}{subsection.7.2.2}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {8}Conclusioni}{65}{chapter.8}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{development/conclusions:conclusioni}{{8}{65}{Conclusioni}{chapter.8}{}} +\newlabel{development/conclusions::doc}{{8}{65}{Conclusioni}{chapter.8}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {9}Suggerimenti relativi al corso}{67}{chapter.9}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{development/suggestions:suggerimenti-relativi-al-corso}{{9}{67}{Suggerimenti relativi al corso}{chapter.9}{}} +\newlabel{development/suggestions::doc}{{9}{67}{Suggerimenti relativi al corso}{chapter.9}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {10}Meta\sphinxhyphen {}documentazione}{69}{chapter.10}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{code/meta/index:meta-documentazione}{{10}{69}{Meta\sphinxhyphen {}documentazione}{chapter.10}{}} +\newlabel{code/meta/index::doc}{{10}{69}{Meta\sphinxhyphen {}documentazione}{chapter.10}{}} +\@writefile{toc}{\contentsline {section}{\numberline {10.1}Compilazione con IntelliJ IDEA}{69}{section.10.1}\protected@file@percent } +\newlabel{code/meta/index:compilazione-con-intellij-idea}{{10.1}{69}{Compilazione con IntelliJ IDEA}{section.10.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {10.2}Compilazione con GNU Make}{69}{section.10.2}\protected@file@percent } +\newlabel{code/meta/index:compilazione-con-gnu-make}{{10.2}{69}{Compilazione con GNU Make}{section.10.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {10.3}Compilazione con Windows Powershell}{70}{section.10.3}\protected@file@percent } +\newlabel{code/meta/index:compilazione-con-windows-powershell}{{10.3}{70}{Compilazione con Windows Powershell}{section.10.3}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {11}Struttura del database}{71}{chapter.11}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{code/database/index:struttura-del-database}{{11}{71}{Struttura del database}{chapter.11}{}} +\newlabel{code/database/index::doc}{{11}{71}{Struttura del database}{chapter.11}{}} +\newlabel{code/database/index:Alert}{{11}{71}{Struttura del database}{section*.52}{}} +\newlabel{code/database/index:Authorization}{{11}{71}{Struttura del database}{section*.53}{}} +\newlabel{code/database/index:Composed}{{11}{71}{Struttura del database}{section*.54}{}} +\newlabel{code/database/index:Condition}{{11}{72}{Struttura del database}{section*.55}{}} +\newlabel{code/database/index:Contains}{{11}{72}{Struttura del database}{section*.56}{}} +\newlabel{code/database/index:MadeOf}{{11}{72}{Struttura del database}{section*.57}{}} +\newlabel{code/database/index:Notification}{{11}{72}{Struttura del database}{section*.58}{}} +\newlabel{code/database/index:Repository}{{11}{72}{Struttura del database}{section*.59}{}} +\newlabel{code/database/index:Tweet}{{11}{73}{Struttura del database}{section*.60}{}} +\newlabel{code/database/index:User}{{11}{73}{Struttura del database}{section*.61}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {12}\sphinxstyleliteralintitle {\sphinxupquote {nest\_backend}} \sphinxhyphen {} Web API in Python}{75}{chapter.12}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{code/backend/index:module-nest_backend}{{12}{75}{\sphinxstyleliteralintitle {\sphinxupquote {nest\_backend}} \sphinxhyphen {} Web API in Python}{chapter.12}{}} +\newlabel{code/backend/index:nest-backend-web-api-in-python}{{12}{75}{\sphinxstyleliteralintitle {\sphinxupquote {nest\_backend}} \sphinxhyphen {} Web API in Python}{chapter.12}{}} +\newlabel{code/backend/index::doc}{{12}{75}{\sphinxstyleliteralintitle {\sphinxupquote {nest\_backend}} \sphinxhyphen {} Web API in Python}{chapter.12}{}} +\@writefile{toc}{\contentsline {section}{\numberline {12.1}\sphinxstyleliteralintitle {\sphinxupquote {.gestione}} \sphinxhyphen {} Metodi di utility}{75}{section.12.1}\protected@file@percent } +\newlabel{code/backend/index:module-nest_backend.gestione}{{12.1}{75}{\sphinxstyleliteralintitle {\sphinxupquote {.gestione}} \sphinxhyphen {} Metodi di utility}{section.12.1}{}} +\newlabel{code/backend/index:gestione-metodi-di-utility}{{12.1}{75}{\sphinxstyleliteralintitle {\sphinxupquote {.gestione}} \sphinxhyphen {} Metodi di utility}{section.12.1}{}} +\newlabel{code/backend/index:nest_backend.gestione.authenticate}{{12.1}{75}{\sphinxstyleliteralintitle {\sphinxupquote {.gestione}} \sphinxhyphen {} Metodi di utility}{section*.62}{}} +\newlabel{code/backend/index:nest_backend.gestione.identity}{{12.1}{75}{\sphinxstyleliteralintitle {\sphinxupquote {.gestione}} \sphinxhyphen {} Metodi di utility}{section*.63}{}} +\newlabel{code/backend/index:nest_backend.gestione.gen_password}{{12.1}{75}{\sphinxstyleliteralintitle {\sphinxupquote {.gestione}} \sphinxhyphen {} Metodi di utility}{section*.64}{}} +\newlabel{code/backend/index:nest_backend.gestione.find_user}{{12.1}{75}{\sphinxstyleliteralintitle {\sphinxupquote {.gestione}} \sphinxhyphen {} Metodi di utility}{section*.65}{}} +\newlabel{code/backend/index:nest_backend.gestione.admin_or_403}{{12.1}{75}{\sphinxstyleliteralintitle {\sphinxupquote {.gestione}} \sphinxhyphen {} Metodi di utility}{section*.66}{}} +\newlabel{code/backend/index:nest_backend.gestione.repository_auth}{{12.1}{75}{\sphinxstyleliteralintitle {\sphinxupquote {.gestione}} \sphinxhyphen {} Metodi di utility}{section*.67}{}} +\newlabel{code/backend/index:nest_backend.gestione.json_request_authorizer}{{12.1}{75}{\sphinxstyleliteralintitle {\sphinxupquote {.gestione}} \sphinxhyphen {} Metodi di utility}{section*.68}{}} +\newlabel{code/backend/index:nest_backend.gestione.json_error}{{12.1}{75}{\sphinxstyleliteralintitle {\sphinxupquote {.gestione}} \sphinxhyphen {} Metodi di utility}{section*.69}{}} +\newlabel{code/backend/index:nest_backend.gestione.json_success}{{12.1}{75}{\sphinxstyleliteralintitle {\sphinxupquote {.gestione}} \sphinxhyphen {} Metodi di utility}{section*.70}{}} +\newlabel{code/backend/index:nest_backend.gestione.error_handler}{{12.1}{75}{\sphinxstyleliteralintitle {\sphinxupquote {.gestione}} \sphinxhyphen {} Metodi di utility}{section*.71}{}} +\newlabel{code/backend/index:nest_backend.gestione.hashtag_validator}{{12.1}{75}{\sphinxstyleliteralintitle {\sphinxupquote {.gestione}} \sphinxhyphen {} Metodi di utility}{section*.72}{}} +\@writefile{toc}{\contentsline {section}{\numberline {12.2}\sphinxstyleliteralintitle {\sphinxupquote {.database}} \sphinxhyphen {} Database}{76}{section.12.2}\protected@file@percent } +\newlabel{code/backend/index:module-nest_backend.database}{{12.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.database}} \sphinxhyphen {} Database}{section.12.2}{}} +\newlabel{code/backend/index:database-database}{{12.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.database}} \sphinxhyphen {} Database}{section.12.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {12.2.1}\sphinxstyleliteralintitle {\sphinxupquote {.base}} \sphinxhyphen {} Estensione flask}{76}{subsection.12.2.1}\protected@file@percent } +\newlabel{code/backend/index:module-nest_backend.database.base}{{12.2.1}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.base}} \sphinxhyphen {} Estensione flask}{subsection.12.2.1}{}} +\newlabel{code/backend/index:base-estensione-flask}{{12.2.1}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.base}} \sphinxhyphen {} Estensione flask}{subsection.12.2.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {12.2.2}\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{76}{subsection.12.2.2}\protected@file@percent } +\newlabel{code/backend/index:module-nest_backend.database.tables}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{subsection.12.2.2}{}} +\newlabel{code/backend/index:tables-tabelle}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{subsection.12.2.2}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Alert}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.73}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Alert.id}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.74}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Alert.name}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.75}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Alert.limit}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.76}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Alert.window_size}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.77}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Alert.evaluation_mode}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.78}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Alert.repository_id}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.79}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Alert.repository}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.80}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Alert.notifications}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.81}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Alert.conditions}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.82}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Alert.to_json}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.83}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Alert.__init__}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.84}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Authorization}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.85}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Authorization.rid}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.86}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Authorization.email}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.87}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Authorization.repository}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.88}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Authorization.user}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.89}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Authorization.to_json}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.90}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Authorization.__init__}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.91}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Composed}{{12.2.2}{76}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.92}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Composed.rid}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.93}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Composed.snowflake}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.94}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Composed.repository}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.95}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Composed.tweet}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.96}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Composed.__init__}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.97}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Condition}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.98}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Condition.id}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.99}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Condition.type}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.100}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Condition.content}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.101}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Condition.repository_id}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.102}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Condition.repository}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.103}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Condition.tweets}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.104}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Condition.alerts}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.105}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Condition.to_json}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.106}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Condition.__init__}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.107}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Contains}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.108}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Contains.cid}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.109}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Contains.snowflake}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.110}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Contains.condition}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.111}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Contains.tweet}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.112}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Contains.__init__}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.113}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Notification}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.114}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Notification.id}{{12.2.2}{77}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.115}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Notification.ora}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.116}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Notification.alert_id}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.117}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Notification.alert}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.118}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Notification.to_json}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.119}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Notification.__init__}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.120}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.121}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository.id}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.122}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository.name}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.123}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository.start}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.124}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository.end}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.125}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository.is_active}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.126}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository.is_deleted}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.127}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository.evaluation_mode}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.128}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository.owner_id}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.129}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository.owner}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.130}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository.authorizations}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.131}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository.tweets}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.132}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository.alerts}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.133}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository.conditions}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.134}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository.to_json}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.135}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Repository.__init__}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.136}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Tweet}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.137}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Tweet.snowflake}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.138}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Tweet.content}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.139}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Tweet.location}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.140}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Tweet.place}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.141}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Tweet.poster}{{12.2.2}{78}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.142}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Tweet.insert_time}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.143}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Tweet.post_time}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.144}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Tweet.image_url}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.145}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Tweet.repositories}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.146}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Tweet.conditions}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.147}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Tweet.to_json}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.148}{}} +\newlabel{code/backend/index:nest_backend.database.tables.Tweet.__init__}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.149}{}} +\newlabel{code/backend/index:nest_backend.database.tables.User}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.150}{}} +\newlabel{code/backend/index:nest_backend.database.tables.User.email}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.151}{}} +\newlabel{code/backend/index:nest_backend.database.tables.User.username}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.152}{}} +\newlabel{code/backend/index:nest_backend.database.tables.User.password}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.153}{}} +\newlabel{code/backend/index:nest_backend.database.tables.User.isAdmin}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.154}{}} +\newlabel{code/backend/index:nest_backend.database.tables.User.owner_of}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.155}{}} +\newlabel{code/backend/index:nest_backend.database.tables.User.authorizations}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.156}{}} +\newlabel{code/backend/index:nest_backend.database.tables.User.to_json}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.157}{}} +\newlabel{code/backend/index:nest_backend.database.tables.User.__init__}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.158}{}} +\newlabel{code/backend/index:nest_backend.database.tables.MadeOf}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.159}{}} +\newlabel{code/backend/index:nest_backend.database.tables.MadeOf.aid}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.160}{}} +\newlabel{code/backend/index:nest_backend.database.tables.MadeOf.cid}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.161}{}} +\newlabel{code/backend/index:nest_backend.database.tables.MadeOf.alert}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.162}{}} +\newlabel{code/backend/index:nest_backend.database.tables.MadeOf.condition}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.163}{}} +\newlabel{code/backend/index:nest_backend.database.tables.MadeOf.__init__}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.164}{}} +\newlabel{code/backend/index:nest_backend.database.tables.ConditionType}{{12.2.2}{79}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.165}{}} +\newlabel{code/backend/index:nest_backend.database.tables.ConditionType.hashtag}{{12.2.2}{80}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.166}{}} +\newlabel{code/backend/index:nest_backend.database.tables.ConditionType.location}{{12.2.2}{80}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.167}{}} +\newlabel{code/backend/index:nest_backend.database.tables.ConditionType.time}{{12.2.2}{80}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.168}{}} +\newlabel{code/backend/index:nest_backend.database.tables.ConditionType.coordinates}{{12.2.2}{80}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.169}{}} +\newlabel{code/backend/index:nest_backend.database.tables.ConditionType.place}{{12.2.2}{80}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.170}{}} +\newlabel{code/backend/index:nest_backend.database.tables.ConditionType.user}{{12.2.2}{80}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.171}{}} +\newlabel{code/backend/index:nest_backend.database.tables.OperationType}{{12.2.2}{80}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.172}{}} +\newlabel{code/backend/index:nest_backend.database.tables.OperationType.assign}{{12.2.2}{80}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.173}{}} +\newlabel{code/backend/index:nest_backend.database.tables.ConditionMode}{{12.2.2}{80}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.174}{}} +\newlabel{code/backend/index:nest_backend.database.tables.ConditionMode.all_or}{{12.2.2}{80}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.175}{}} +\newlabel{code/backend/index:nest_backend.database.tables.ConditionMode.all_and}{{12.2.2}{80}{\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{section*.176}{}} +\@writefile{toc}{\contentsline {section}{\numberline {12.3}\sphinxstyleliteralintitle {\sphinxupquote {.routes}} \sphinxhyphen {} Percorsi API}{80}{section.12.3}\protected@file@percent } +\newlabel{code/backend/index:routes-percorsi-api}{{12.3}{80}{\sphinxstyleliteralintitle {\sphinxupquote {.routes}} \sphinxhyphen {} Percorsi API}{section.12.3}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {13}\sphinxstyleliteralintitle {\sphinxupquote {nest\_crawler}} \sphinxhyphen {} Crawler in Python}{81}{chapter.13}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{code/crawler/index:module-nest_crawler}{{13}{81}{\sphinxstyleliteralintitle {\sphinxupquote {nest\_crawler}} \sphinxhyphen {} Crawler in Python}{chapter.13}{}} +\newlabel{code/crawler/index:nest-crawler-crawler-in-python}{{13}{81}{\sphinxstyleliteralintitle {\sphinxupquote {nest\_crawler}} \sphinxhyphen {} Crawler in Python}{chapter.13}{}} +\newlabel{code/crawler/index::doc}{{13}{81}{\sphinxstyleliteralintitle {\sphinxupquote {nest\_crawler}} \sphinxhyphen {} Crawler in Python}{chapter.13}{}} +\newlabel{code/crawler/index:nest_crawler.associate_condition_tweet}{{13}{81}{\sphinxstyleliteralintitle {\sphinxupquote {nest\_crawler}} \sphinxhyphen {} Crawler in Python}{section*.177}{}} +\newlabel{code/crawler/index:nest_crawler.authenticate}{{13}{81}{\sphinxstyleliteralintitle {\sphinxupquote {nest\_crawler}} \sphinxhyphen {} Crawler in Python}{section*.178}{}} +\newlabel{code/crawler/index:nest_crawler.is_coordinate_inside_bounding_box}{{13}{81}{\sphinxstyleliteralintitle {\sphinxupquote {nest\_crawler}} \sphinxhyphen {} Crawler in Python}{section*.179}{}} +\newlabel{code/crawler/index:nest_crawler.is_repo_alert_triggered}{{13}{81}{\sphinxstyleliteralintitle {\sphinxupquote {nest\_crawler}} \sphinxhyphen {} Crawler in Python}{section*.180}{}} +\newlabel{code/crawler/index:nest_crawler.search_repo_conditions}{{13}{81}{\sphinxstyleliteralintitle {\sphinxupquote {nest\_crawler}} \sphinxhyphen {} Crawler in Python}{section*.181}{}} +\newlabel{code/crawler/index:nest_crawler.send_notification_email}{{13}{81}{\sphinxstyleliteralintitle {\sphinxupquote {nest\_crawler}} \sphinxhyphen {} Crawler in Python}{section*.182}{}} +\newlabel{code/crawler/index:nest_crawler.send_notification_tweet}{{13}{81}{\sphinxstyleliteralintitle {\sphinxupquote {nest\_crawler}} \sphinxhyphen {} Crawler in Python}{section*.183}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {14}\sphinxstyleliteralintitle {\sphinxupquote {nest\_frontend}} \sphinxhyphen {} Interfaccia utente in React}{83}{chapter.14}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{code/frontend/index:nest-frontend-interfaccia-utente-in-react}{{14}{83}{\sphinxstyleliteralintitle {\sphinxupquote {nest\_frontend}} \sphinxhyphen {} Interfaccia utente in React}{chapter.14}{}} +\newlabel{code/frontend/index::doc}{{14}{83}{\sphinxstyleliteralintitle {\sphinxupquote {nest\_frontend}} \sphinxhyphen {} Interfaccia utente in React}{chapter.14}{}} +\@writefile{toc}{\contentsline {section}{\numberline {14.1}\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{83}{section.14.1}\protected@file@percent } +\newlabel{code/frontend/index:objects-oggetti-vari-di-utility}{{14.1}{83}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section.14.1}{}} +\newlabel{code/frontend/index:Condition}{{14.1}{83}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.184}{}} +\newlabel{code/frontend/index:ConditionHashtag}{{14.1}{83}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.185}{}} +\newlabel{code/frontend/index:ConditionUser}{{14.1}{83}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.186}{}} +\newlabel{code/frontend/index:ConditionTime}{{14.1}{83}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.187}{}} +\newlabel{code/frontend/index:ConditionLocation}{{14.1}{83}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.188}{}} +\newlabel{code/frontend/index:NotImplementedError}{{14.1}{83}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.189}{}} +\newlabel{code/frontend/index:BackendCommunicationError}{{14.1}{83}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.190}{}} +\newlabel{code/frontend/index:ViewNotAllowedError}{{14.1}{83}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.191}{}} +\newlabel{code/frontend/index:ServerNotConfiguredError}{{14.1}{83}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.192}{}} +\newlabel{code/frontend/index:FetchAlreadyRunningError}{{14.1}{84}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.193}{}} +\newlabel{code/frontend/index:FetchError}{{14.1}{84}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.194}{}} +\newlabel{code/frontend/index:DecodeError}{{14.1}{84}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.195}{}} +\newlabel{code/frontend/index:ResultError}{{14.1}{84}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.196}{}} +\newlabel{code/frontend/index:SerializationError}{{14.1}{84}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.197}{}} +\newlabel{code/frontend/index:Filter}{{14.1}{84}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.198}{}} +\newlabel{code/frontend/index:FilterContains}{{14.1}{84}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.199}{}} +\newlabel{code/frontend/index:FilterHashtag}{{14.1}{84}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.200}{}} +\newlabel{code/frontend/index:FilterPoster}{{14.1}{84}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.201}{}} +\newlabel{code/frontend/index:FilterWithLocation}{{14.1}{84}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.202}{}} +\newlabel{code/frontend/index:FilterWithPlace}{{14.1}{84}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.203}{}} +\newlabel{code/frontend/index:FilterInsideMapArea}{{14.1}{84}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.204}{}} +\newlabel{code/frontend/index:FilterInsideTimeRay}{{14.1}{84}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.205}{}} +\newlabel{code/frontend/index:FilterWithImage}{{14.1}{84}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.206}{}} +\newlabel{code/frontend/index:FilterIsRetweet}{{14.1}{84}{\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{section*.207}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {15}Altri collegamenti}{85}{chapter.15}\protected@file@percent } +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{index:altri-collegamenti}{{15}{85}{Altri collegamenti}{chapter.15}{}} +\@writefile{toc}{\contentsline {chapter}{Indice del modulo Python}{87}{section*.208}\protected@file@percent } +\@writefile{toc}{\contentsline {chapter}{Indice}{89}{section*.209}\protected@file@percent } +\gdef \@abspage@last{98} diff --git a/docs/build/latex/nest.fdb_latexmk b/docs/build/latex/nest.fdb_latexmk new file mode 100644 index 0000000..e7cb8fb --- /dev/null +++ b/docs/build/latex/nest.fdb_latexmk @@ -0,0 +1,227 @@ +# Fdb version 3 +["makeindex nest.idx"] 1622377820 "nest.idx" "nest.ind" "nest" 1622377828 + "nest.idx" 1622377827 24836 717e79aa2ecbf6ab6cdd48b990586982 "pdflatex" + (generated) + "nest.ilg" + "nest.ind" +["pdflatex"] 1622377824 "nest.tex" "nest.pdf" "nest" 1622377828 + "/usr/share/texmf-dist/fonts/enc/dvips/base/8r.enc" 1617738065 4850 80dc9bab7f31fb78a000ccfed0e27cab "" + "/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.enc" 1617738065 2900 1537cc8184ad1792082cd229ecc269f4 "" + "/usr/share/texmf-dist/fonts/map/fontname/texfonts.map" 1617738065 3524 cb3e574dea2d1052e39280babc910dc8 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm" 1617738065 1292 3059476c50a24578715759f22652f3d0 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm" 1617738065 1384 87406e4336af44af883a035f17f319d9 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrbo8r.tfm" 1617738065 1544 e7504aaba5d44e00849386a40c8540ea "" + "/usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrbo8t.tfm" 1617738065 1632 1978a20d856e271f6e6621cbc3da466a "" + "/usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrr8c.tfm" 1617738065 1268 8bd405dc5751cfed76cb6fb2db78cb50 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm" 1617738065 1292 bd42be2f344128bff6d35d98474adfe3 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm" 1617738065 1384 4632f5e54900a7dadbb83f555bc61e56 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrro8c.tfm" 1617738065 1344 dab2eee300fafcab19064bcc62d66daa "" + "/usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrro8r.tfm" 1617738065 1544 4fb84cf2931ec523c2c6a08d939088ba "" + "/usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrro8t.tfm" 1617738065 1596 04a657f277f0401ba37d66e716627ac4 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvb8c.tfm" 1617738065 1344 2b79eb16daca0e8fd7cff8a5505df513 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm" 1617738065 4484 b828043cbd581d289d955903c1339981 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm" 1617738065 6628 34c39492c0adc454c1c199922bba8363 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8r.tfm" 1617738065 4736 423eba67d4e9420ec9df4a8def143b08 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8t.tfm" 1617738065 6880 fe6c7967f27585f6fa9876f3af14edd2 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvr8r.tfm" 1617738065 4712 9ef4d7d106579d4b136e1529e1a4533c "" + "/usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm" 1617738065 7040 b2bd27e2bfe6f6948cbc3239cae7444f "" + "/usr/share/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm" 1617738065 4524 6bce29db5bc272ba5f332261583fee9c "" + "/usr/share/texmf-dist/fonts/tfm/adobe/times/ptmb8t.tfm" 1617738065 6880 f19b8995b61c334d78fc734065f6b4d4 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/times/ptmbi8t.tfm" 1617738065 6784 37b32cc10800b5afa030d935c393695a "" + "/usr/share/texmf-dist/fonts/tfm/adobe/times/ptmr8c.tfm" 1617738065 1352 fa28a7e6d323c65ce7d13d5342ff6be2 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm" 1617738065 4408 25b74d011a4c66b7f212c0cc3c90061b "" + "/usr/share/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm" 1617738065 6672 e3ab9e37e925f3045c9005e6d1473d56 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/times/ptmri8c.tfm" 1617738065 1428 3f135d3346fb7bfe71989ef2e19a9f01 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm" 1617738065 4640 532ca3305aad10cc01d769f3f91f1029 "" + "/usr/share/texmf-dist/fonts/tfm/adobe/times/ptmri8t.tfm" 1617738065 6944 94c55ad86e6ea2826f78ba2240d50df9 "" + "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm" 1617738065 3584 adb004a0c8e7c46ee66cad73671f37b4 "" + "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/ectt0900.tfm" 1617738065 1536 ae7aab2f8a4bc9edfce2899f53ba88c3 "" + "/usr/share/texmf-dist/fonts/tfm/jknappen/ec/tctt0900.tfm" 1617738065 1536 bda3e6bf9784a4cc572c754e0c3eeb00 "" + "/usr/share/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1617738065 1004 54797486969f23fa377b128694d548df "" + "/usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm" 1617738065 916 f87d7c45f9c908e672703b83b72241a3 "" + "/usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm" 1617738065 924 9904cf1d39e9767e7a3622f2a125a565 "" + "/usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm" 1617738065 928 2dc8d444221b7a635bb58038579b861a "" + "/usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm" 1617738065 908 2921f8a10601f252058503cc6570e581 "" + "/usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm" 1617738065 940 75ac932a52f80982a9f8ea75d03a34cf "" + "/usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm" 1617738065 940 228d6584342e91276bf566bcf9716b83 "" + "/usr/share/texmf-dist/fonts/tfm/public/cm/cmex10.tfm" 1617738065 992 662f679a0b3d2d53c1b94050fdaa3f50 "" + "/usr/share/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1617738065 1524 4414a8315f39513458b80dfc63bff03a "" + "/usr/share/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1617738065 1288 655e228510b4c2a1abe905c368440826 "" + "/usr/share/texmf-dist/fonts/tfm/public/cm/cmr17.tfm" 1617738065 1292 296a67155bdbfc32aa9c636f21e91433 "" + "/usr/share/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1617738065 1124 6c73e740cf17375f03eec0ee63599741 "" + "/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb" 1617738065 37912 77d683123f92148345f3fc36a38d9ab1 "" + "/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb" 1617738065 32569 5e5ddc8df908dea60932f3c484a54c0d "" + "/usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy5.pfb" 1617738065 32915 7bf7720c61a5b3a7ff25b0964421c9b6 "" + "/usr/share/texmf-dist/fonts/type1/public/cm-super/sftt0900.pfb" 1617738065 170827 2e4b634de7b58578eae1dc93e51dfe48 "" + "/usr/share/texmf-dist/fonts/type1/urw/courier/ucrb8a.pfb" 1617738065 50493 4ed1f7e9eba8f1f3e1ec25195460190d "" + "/usr/share/texmf-dist/fonts/type1/urw/courier/ucrbo8a.pfb" 1617738065 51527 8b8414fb335c1ba9c7ca364c3e691b70 "" + "/usr/share/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb" 1617738065 45758 19968a0990191524e34e1994d4a31cb6 "" + "/usr/share/texmf-dist/fonts/type1/urw/courier/ucrro8a.pfb" 1617738065 44404 ea3d9c0311883914133975dd62a9185c "" + "/usr/share/texmf-dist/fonts/type1/urw/helvetic/uhvb8a.pfb" 1617738065 35941 f27169cc74234d5bd5e4cca5abafaabb "" + "/usr/share/texmf-dist/fonts/type1/urw/helvetic/uhvbo8a.pfb" 1617738065 39013 b244066151b1e3e718f9b8e88a5ff23b "" + "/usr/share/texmf-dist/fonts/type1/urw/helvetic/uhvr8a.pfb" 1617738065 44648 23115b2a545ebfe2c526c3ca99db8b95 "" + "/usr/share/texmf-dist/fonts/type1/urw/times/utmb8a.pfb" 1617738065 44729 811d6c62865936705a31c797a1d5dada "" + "/usr/share/texmf-dist/fonts/type1/urw/times/utmr8a.pfb" 1617738065 46026 6dab18b61c907687b520c72847215a68 "" + "/usr/share/texmf-dist/fonts/type1/urw/times/utmri8a.pfb" 1617738065 45458 a3faba884469519614ca56ba5f6b1de1 "" + "/usr/share/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf" 1617738065 2184 5d20c8b00cd914e50251116c274e2d0b "" + "/usr/share/texmf-dist/fonts/vf/adobe/courier/pcrbo8t.vf" 1617738065 2276 8311f0eccac2062b865964f228e3af40 "" + "/usr/share/texmf-dist/fonts/vf/adobe/courier/pcrr8c.vf" 1617738065 3552 6a7911d0b338a7c32cbfc3a9e985ccca "" + "/usr/share/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf" 1617738065 2184 8475af1b9cfa983db5f46f5ed4b8f9f7 "" + "/usr/share/texmf-dist/fonts/vf/adobe/courier/pcrro8c.vf" 1617738065 3560 a297982f0907d62e9886d9e2666bf30b "" + "/usr/share/texmf-dist/fonts/vf/adobe/courier/pcrro8t.vf" 1617738065 2280 d7cd083c724c9449e1d12731253966f7 "" + "/usr/share/texmf-dist/fonts/vf/adobe/helvetic/phvb8c.vf" 1617738065 3556 3cfa31ac840d0397f6de5205a61de842 "" + "/usr/share/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf" 1617738065 2340 0efed6a948c3c37d870e4e7ddb85c7c3 "" + "/usr/share/texmf-dist/fonts/vf/adobe/helvetic/phvbo8t.vf" 1617738065 2344 88834f8322177295b0266ecc4b0754c3 "" + "/usr/share/texmf-dist/fonts/vf/adobe/helvetic/phvr8t.vf" 1617738065 2344 44ff28c9ef2fc97180cd884f900fee71 "" + "/usr/share/texmf-dist/fonts/vf/adobe/times/ptmb8t.vf" 1617738065 2340 df9c920cc5688ebbf16a93f45ce7bdd3 "" + "/usr/share/texmf-dist/fonts/vf/adobe/times/ptmr8c.vf" 1617738065 3556 8a9a6dcbcd146ef985683f677f4758a6 "" + "/usr/share/texmf-dist/fonts/vf/adobe/times/ptmr8t.vf" 1617738065 2348 91706c542228501c410c266421fbe30c "" + "/usr/share/texmf-dist/fonts/vf/adobe/times/ptmri8c.vf" 1617738065 3564 2068501a2226e54ce367edd5b047e424 "" + "/usr/share/texmf-dist/fonts/vf/adobe/times/ptmri8t.vf" 1617738065 2328 6cd7df782b09b29cfc4d93e55b6b9a59 "" + "/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1617738065 71627 94eb9990bed73c364d7f53f960cc8c5b "" + "/usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1617738065 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 "" + "/usr/share/texmf-dist/tex/generic/babel-italian/italian.ldf" 1617738065 11390 c338c4a47651f95dee3fc5c3dbc21081 "" + "/usr/share/texmf-dist/tex/generic/babel/babel.def" 1617738065 118719 e672239d75d9419ba29850a1b391bd00 "" + "/usr/share/texmf-dist/tex/generic/babel/babel.sty" 1617738065 37894 44955682e4f134137b9d1033fb86e0ef "" + "/usr/share/texmf-dist/tex/generic/babel/txtbabel.def" 1617738065 5230 84624d139fa443f96294434bccf82f8c "" + "/usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1617738065 40635 c40361e206be584d448876bba8a64a3b "" + "/usr/share/texmf-dist/tex/generic/bitset/bitset.sty" 1617738065 33961 6b5c75130e435b2bfdb9f480a09a39f9 "" + "/usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty" 1617738065 7734 b98cbb34c81f667027c1e3ebdbfce34b "" + "/usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1617738065 8371 9d55b8bd010bc717624922fb3477d92e "" + "/usr/share/texmf-dist/tex/generic/iftex/iftex.sty" 1617738065 6501 4011d89d9621e0b0901138815ba5ff29 "" + "/usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty" 1617738065 1057 525c2192b5febbd8c1f662c9468335bb "" + "/usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1617738065 8356 7bbb2c2373aa810be568c29e333da8ed "" + "/usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty" 1617738065 31769 002a487f55041f8e805cfbf6385ffd97 "" + "/usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1617738065 5412 d5a2436094cd7be85769db90f29250a6 "" + "/usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty" 1617738065 13807 952b0226d4efca026f0e19dd266dcc22 "" + "/usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1617738065 17859 4409f8f50cd365c68e684407e5350b1b "" + "/usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1617738065 19007 15924f7228aca6c6d184b115f4baa231 "" + "/usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty" 1617738065 20089 80423eac55aa175305d35b49e04fe23b "" + "/usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1617738065 7008 f92eaa0a3872ed622bbf538217cd2ab7 "" + "/usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty" 1617738065 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c "" + "/usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty" 1617738065 13829 94730e64147574077f8ecfea9bb69af4 "" + "/usr/share/texmf-dist/tex/latex/amsfonts/umsa.fd" 1617738065 961 6518c6525a34feb5e8250ffa91731cff "" + "/usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd" 1617738065 961 d02606146ba5601b5645f987c92e6193 "" + "/usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty" 1617738065 2211 ca7ce284ab93c8eecdc6029dc5ccbd73 "" + "/usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty" 1617738065 4161 7f6eb9092061a11f87d08ed13515b48d "" + "/usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty" 1617738065 87353 2c21ff5f2e32e1bf714e600924d810db "" + "/usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty" 1617738065 4116 32e6abd27229755a83a8b7f18e583890 "" + "/usr/share/texmf-dist/tex/latex/amsmath/amstext.sty" 1617738065 2432 8ff93b1137020e8f21930562a874ae66 "" + "/usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty" 1617738065 19336 ce7ae9438967282886b3b036cfad1e4d "" + "/usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty" 1617738065 3935 57aa3c3e203a5c2effb4d2bd2efbc323 "" + "/usr/share/texmf-dist/tex/latex/base/alltt.sty" 1617738065 3140 3b501b609b11ff7320ce1a19dbac0e3b "" + "/usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty" 1617738065 2973 00085839f5881178c538db5970d3c38e "" + "/usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty" 1617738065 2596 b3a02e33035865e9f0457e064d436fb8 "" + "/usr/share/texmf-dist/tex/latex/base/fontenc.sty" 1617738065 4947 8cb7717f0cc771eca0fda15160c7fee9 "" + "/usr/share/texmf-dist/tex/latex/base/inputenc.sty" 1617738065 5050 0d3b77275060ca09a40635b830c3c904 "" + "/usr/share/texmf-dist/tex/latex/base/makeidx.sty" 1617738065 1940 dd4f2aa11c89855a3c47d09758782ba5 "" + "/usr/share/texmf-dist/tex/latex/base/report.cls" 1617738065 23204 74c91ecbcc47161218f25d9d0651c0f7 "" + "/usr/share/texmf-dist/tex/latex/base/size10.clo" 1617738065 8449 a72d5d4e612221b46000c3d71724e0ef "" + "/usr/share/texmf-dist/tex/latex/base/t1cmtt.fd" 1617738065 2444 92c1f2a3fb5fbd5ac60f99eac55c9b29 "" + "/usr/share/texmf-dist/tex/latex/base/textcomp.sty" 1617738065 2821 2c0928feafd5527387e29a1af774d030 "" + "/usr/share/texmf-dist/tex/latex/base/ts1cmtt.fd" 1617738065 2288 de58492d6f867ba068b08f7f71d9f35f "" + "/usr/share/texmf-dist/tex/latex/capt-of/capt-of.sty" 1621766596 1311 063f8536a047a2d9cb1803321f793f37 "" + "/usr/share/texmf-dist/tex/latex/cmap/cmap.sty" 1617738065 3574 ddc11a0ae1c579d351ed20d2319ad422 "" + "/usr/share/texmf-dist/tex/latex/cmap/ot1.cmap" 1617738065 1207 4e0d96772f0d338847cbfb4eca683c81 "" + "/usr/share/texmf-dist/tex/latex/cmap/t1.cmap" 1617738065 1938 beaa4a8467aa0074076e0e19f2992e29 "" + "/usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1617738065 13886 d1306dcf79a944f6988e688c1785f9ce "" + "/usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty" 1617738065 46845 3b58f70c6e861a13d927bff09d35ecbc "" + "/usr/share/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty" 1617738065 17086 7ed8cbc4d361ec87392817e0dd4f65ec "" + "/usr/share/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty" 1617738065 43232 77215847fb982a414a0d843125e271d4 "" + "/usr/share/texmf-dist/tex/latex/float/float.sty" 1617738065 6749 16d2656a1984957e674b149555f1ea1d "" + "/usr/share/texmf-dist/tex/latex/fncychap/fncychap.sty" 1621766596 19488 fdd52eb173b3197d748e1ec25acb042f "" + "/usr/share/texmf-dist/tex/latex/framed/framed.sty" 1621766596 22449 7ec15c16d0d66790f28e90343c5434a3 "" + "/usr/share/texmf-dist/tex/latex/geometry/geometry.sty" 1617738065 41601 9cf6c5257b1bc7af01a58859749dd37a "" + "/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1617738065 1213 620bba36b25224fa9b7e1ccb4ecb76fd "" + "/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1617738065 1224 978390e9c2234eab29404bc21b268d1e "" + "/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def" 1617738065 19103 48d29b6e2a64cb717117ef65f107b404 "" + "/usr/share/texmf-dist/tex/latex/graphics/color.sty" 1617738065 7102 5b27b7e61091c6128cd6300e21704e4b "" + "/usr/share/texmf-dist/tex/latex/graphics/graphics.sty" 1617738065 18272 a8c6a275b34ab6717ceeb8fa04b104e2 "" + "/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty" 1617738065 7919 20fdfdd783821971c55bc8ee918cbe63 "" + "/usr/share/texmf-dist/tex/latex/graphics/keyval.sty" 1617738065 2590 e3b24ff953e5b58d924f163d25380312 "" + "/usr/share/texmf-dist/tex/latex/graphics/trig.sty" 1617738065 3976 d7fa7d81d2870d509d25b17d0245e735 "" + "/usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty" 1617738065 17914 4c28a13fc3d975e6e81c9bea1d697276 "" + "/usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def" 1617738065 49890 ad792e908af8bc5c293b806bd181e58d "" + "/usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def" 1617738065 1777 31eee4f3f5c138e44a4e16abfcaefa41 "" + "/usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty" 1617738065 230839 177eac084bda18ae827a77792a17292e "" + "/usr/share/texmf-dist/tex/latex/hyperref/nameref.sty" 1617738065 13242 133e617c5eebffdd05e421624022b267 "" + "/usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def" 1617738065 14132 3a8b7a8250bdb5871e322188be7c9ff6 "" + "/usr/share/texmf-dist/tex/latex/hyperref/puenc.def" 1617738065 117004 7c05c6dde5b2b6a14f97dd4137739212 "" + "/usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1617738065 22521 d2fceb764a442a2001d257ef11db7618 "" + "/usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def" 1617738065 27164 3d5f7887a89df4eb2f6e86ba26ef3254 "" + "/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1617738065 678 4792914a8f45be57bb98413425e4c7af "" + "/usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty" 1617738065 5766 13a9e8766c47f30327caf893ece86ac8 "" + "/usr/share/texmf-dist/tex/latex/mmap/oml.cmap" 1621766596 1866 c1c12138091b4a8edd4a24a940e6f792 "" + "/usr/share/texmf-dist/tex/latex/mmap/oms.cmap" 1621766596 2370 3b1f71b14b974f07cef532db09ae9ee0 "" + "/usr/share/texmf-dist/tex/latex/mmap/omx.cmap" 1621766596 3001 252c8ca42b06a22cb1a11c0e47790c6e "" + "/usr/share/texmf-dist/tex/latex/needspace/needspace.sty" 1621766596 852 0e34dbb72efc69fa07602405ad95585e "" + "/usr/share/texmf-dist/tex/latex/oberdiek/hypcap.sty" 1617738065 3822 b53c749cd81352b4679a35b0dafefb95 "" + "/usr/share/texmf-dist/tex/latex/parskip/parskip-2001-04-09.sty" 1617738065 2757 ea00cb4f4e9abc702916f74d3812ef67 "" + "/usr/share/texmf-dist/tex/latex/parskip/parskip.sty" 1617738065 4288 94714aa7f535440f33181fec52a31963 "" + "/usr/share/texmf-dist/tex/latex/psnfss/t1pcr.fd" 1617738065 798 d5895e9edc628f2be019beb2c0ec66df "" + "/usr/share/texmf-dist/tex/latex/psnfss/t1phv.fd" 1617738065 1483 47067fbe7c3ffed1ede7aaa7b8549d7a "" + "/usr/share/texmf-dist/tex/latex/psnfss/t1ptm.fd" 1617738065 774 61d7da1e9f9e74989b196d147e623736 "" + "/usr/share/texmf-dist/tex/latex/psnfss/times.sty" 1617738065 856 8e0e5c8cca7b18e0400f97f5a2b90a99 "" + "/usr/share/texmf-dist/tex/latex/psnfss/ts1pcr.fd" 1617738065 643 92c451bb86386a4e36a174603ddb5a13 "" + "/usr/share/texmf-dist/tex/latex/psnfss/ts1phv.fd" 1617738065 1181 ec0c641cd2e0fb69a449534a0279b5ca "" + "/usr/share/texmf-dist/tex/latex/psnfss/ts1ptm.fd" 1617738065 619 96f56dc5d1ef1fe1121f1cfeec70ee0c "" + "/usr/share/texmf-dist/tex/latex/refcount/refcount.sty" 1617738065 9878 9e94e8fa600d95f9c7731bb21dfb67a4 "" + "/usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1617738065 9715 b051d5b493d9fe5f4bc251462d039e5f "" + "/usr/share/texmf-dist/tex/latex/tabulary/tabulary.sty" 1621766596 13791 8c83287d79183c3bf58fd70871e8a70b "" + "/usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty" 1621766596 48596 2b6a95da931c07a430b1a61904aaa42d "" + "/usr/share/texmf-dist/tex/latex/tools/array.sty" 1617738065 12675 9a7bbb9e485cd81cdcc1d56212b088ff "" + "/usr/share/texmf-dist/tex/latex/tools/longtable.sty" 1617738065 12133 b1e3e65b69714dbfcc5e6c0b19d66b50 "" + "/usr/share/texmf-dist/tex/latex/tools/multicol.sty" 1617738065 31532 04852e45d7c17cb384689d2f83b628d3 "" + "/usr/share/texmf-dist/tex/latex/upquote/upquote.sty" 1621766596 1048 517e01cde97c1c0baf72e69d43aa5a2e "" + "/usr/share/texmf-dist/tex/latex/url/url.sty" 1617738065 12796 8edb7d69a20b857904dd0ea757c14ec9 "" + "/usr/share/texmf-dist/tex/latex/varwidth/varwidth.sty" 1621766596 10894 d359a13923460b2a73d4312d613554c8 "" + "/usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty" 1621766596 26220 3701aebf80ccdef248c0c20dd062fea9 "" + "/usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty" 1617738065 55589 34128738f682d033422ca125f82e5d62 "" + "/usr/share/texmf-dist/web2c/texmf.cnf" 1617738065 39911 2da6c67557ec033436fe5418a70a8a61 "" + "/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1621786676 5173226 0404cc9a00088c27e60c9396b8eb58ed "" + "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1621786650 2812681 152d5045358ef0dd915a2a2bdff52e7e "" + "1-backlog.png" 1622310168 448161 0aaf85f62f8aa1bc5a921c2291b65d8c "" + "1-burndown.png" 1622310168 69668 11884ef89d68fd28124a27895127231b "" + "1-tasks.png" 1622310168 13094 0d586d1061fc86e3570a6f963403d08d "" + "2-backlog.png" 1622310168 38683 06ec32b20774b0c392bbe51c05bed60c "" + "2-burndown.png" 1622310168 75495 d2d0478245052925191fb910fa19e4a1 "" + "2-tasks.png" 1622310168 53220 29dea4bc4548f05b0f2bf0f67a7ac7d0 "" + "3-backlog.png" 1622310168 38920 89962b2fa2ad92be94d84e55d6477567 "" + "3-tasks.png" 1622310168 38024 ab838b92069d2b18acec80a5adbb5afc "" + "Backlog1.PNG" 1622239373 693194 b39b73fe9a8db88043f5ec874dfc801c "" + "Backlog2.PNG" 1622239373 405664 c1ff6622452e721f07900bfc9d7987c0 "" + "Backlog3.PNG" 1622239373 550736 f691f5799ef20932dd699a9464fc4fe6 "" + "Backlog4.PNG" 1622239373 403350 aa036f1021c6a8bdfabbc05b0f1a0916 "" + "Backlog5.PNG" 1622239373 459569 f1cdbbe047fba4bf59adf64741efba8c "" + "Burndown4.png" 1622300871 45489 aedd871188599cf49b8145c320f064af "" + "CasiUso1.PNG" 1622239373 39388 dbc7d2f678099ccbff1e2696bb2bf0b6 "" + "CasiUso2.PNG" 1622239373 37889 6316bfb0ef56eff05192db18bc7ee0f6 "" + "CasiUso3.PNG" 1622239373 74494 a530d3e3242383a7c86d5eaf5718c62a "" + "CasiUso4.PNG" 1622239373 130125 4354c7960afe5c711e3ba37a8a322912 "" + "CasiUso5.PNG" 1622239373 81238 aebd6cbbecae03d0e60efb1273eca0a8 "" + "CasiUso6.PNG" 1622239373 49679 d29238265b7bc743f473f9f389c620f4 "" + "Utenti.png" 1622239373 4234 f77af8235c5db70666205d6b71a4a6dc "" + "docsRunConfig.png" 1621299972 3082 caaa4b07c8072d6fd75790accb6de591 "" + "footnotehyper-sphinx.sty" 1620922899 13076 494d8d655f805dc10b53008469c289a2 "" + "frontendAlertCreate.png" 1622141129 563342 e2dda894a30d5c05428dfefa8be08175 "" + "frontendAnalysis.png" 1622141129 286570 828f658a349eb71d053d1c78fb060b63 "" + "frontendDashboard.png" 1622141129 76793 86b61ed1400e64da2238ecbb386606db "" + "frontendRepositoryCreate.png" 1622141129 151412 0e229b174594052f545869caf01bfe45 "" + "frontendRepositoryShare.png" 1622141129 81988 1b13f96a17fb7b3561c484fd5cee9a16 "" + "nest.aux" 1622377827 66961 ba1a73f95118c9d7c67e98053f06bf60 "pdflatex" + "nest.ind" 1622377820 16890 21a90684fce8ed07cbe283dff03a0fb3 "makeindex nest.idx" + "nest.out" 1622377827 15719 7bd0010f1c8c51d5cba61ceabedc5f2d "pdflatex" + "nest.tex" 1622377817 230257 cfdccfbc6327c1d04615fc5ba068ab4d "" + "nest.toc" 1622377827 12456 f126e763857cbbe5535922979e8465a0 "pdflatex" + "sphinx.sty" 1620922899 91458 532cd893425be1ee8212ce283449999c "" + "sphinxhighlight.sty" 1622377816 6615 02ef3c01e6bb67d3cc0658d354509680 "" + "sphinxmanual.cls" 1620922899 4236 124cd90deb92742b5d3922bfc2cd70c0 "" + "sphinxmessages.sty" 1622377817 753 75d0749f958f57e1a3673a79afa21553 "" + "sphinxmulticell.sty" 1620922899 14606 0b6edc2b1a83546ed92026d1f6a311b5 "" + (generated) + "nest.log" + "nest.aux" + "nest.idx" + "nest.toc" + "nest.pdf" + "nest.out" diff --git a/docs/build/latex/nest.fls b/docs/build/latex/nest.fls new file mode 100644 index 0000000..c3f331b --- /dev/null +++ b/docs/build/latex/nest.fls @@ -0,0 +1,1378 @@ +PWD /mnt/tera/ext4/code/g2-progetto-2/docs/build/latex +INPUT /usr/share/texmf-dist/web2c/texmf.cnf +INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt +INPUT nest.tex +OUTPUT nest.log +INPUT ./sphinxmanual.cls +INPUT ./sphinxmanual.cls +INPUT sphinxmanual.cls +INPUT ./sphinxmanual.cls +INPUT ./sphinxmanual.cls +INPUT ./sphinxmanual.cls +INPUT ./sphinxmanual.cls +INPUT ./sphinxmanual.cls +INPUT sphinxmanual.cls +INPUT ./sphinxmanual.cls +INPUT sphinxmanual.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/report.cls +INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/share/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/share/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/share/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/share/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/share/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/share/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/share/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/share/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/share/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/share/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/share/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/share/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/share/texmf-dist/fonts/map/fontname/texfonts.map +INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm +INPUT /usr/share/texmf-dist/tex/latex/cmap/t1.cmap +INPUT /usr/share/texmf-dist/tex/latex/cmap/t1.cmap +OUTPUT nest.pdf +INPUT /usr/share/texmf-dist/tex/latex/cmap/t1.cmap +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/share/texmf-dist/tex/generic/babel/babel.def +INPUT /usr/share/texmf-dist/tex/generic/babel/txtbabel.def +INPUT /usr/share/texmf-dist/tex/generic/babel-italian/italian.ldf +INPUT /usr/share/texmf-dist/tex/generic/babel-italian/italian.ldf +INPUT /usr/share/texmf-dist/tex/generic/babel-italian/italian.ldf +INPUT /usr/share/texmf-dist/tex/generic/babel-italian/italian.ldf +INPUT /usr/share/texmf-dist/tex/generic/babel-italian/italian.ldf +INPUT /usr/share/texmf-dist/tex/generic/babel-italian/italian.ldf +INPUT /usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texmf-dist/tex/latex/etoolbox/etoolbox.sty +INPUT /usr/share/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/share/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/share/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/share/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/share/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/share/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/share/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/share/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/share/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/share/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/share/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/share/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT /usr/share/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT /usr/share/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT /usr/share/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT /usr/share/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT /usr/share/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT /usr/share/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT /usr/share/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT /usr/share/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT /usr/share/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT /usr/share/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT ./sphinx.sty +INPUT ./sphinx.sty +INPUT sphinx.sty +INPUT ./sphinx.sty +INPUT ./sphinx.sty +INPUT ./sphinx.sty +INPUT ./sphinx.sty +INPUT ./sphinx.sty +INPUT sphinx.sty +INPUT ./sphinx.sty +INPUT sphinx.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def +INPUT /usr/share/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/share/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/share/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/share/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/share/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/share/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/share/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/share/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/share/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/share/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/share/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/share/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/share/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/share/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/share/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/share/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT /usr/share/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT /usr/share/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT /usr/share/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT /usr/share/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT /usr/share/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT /usr/share/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT /usr/share/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT /usr/share/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT /usr/share/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT /usr/share/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT ./sphinxmulticell.sty +INPUT ./sphinxmulticell.sty +INPUT sphinxmulticell.sty +INPUT ./sphinxmulticell.sty +INPUT ./sphinxmulticell.sty +INPUT ./sphinxmulticell.sty +INPUT ./sphinxmulticell.sty +INPUT ./sphinxmulticell.sty +INPUT sphinxmulticell.sty +INPUT ./sphinxmulticell.sty +INPUT sphinxmulticell.sty +INPUT /usr/share/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/share/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/share/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/share/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/share/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/share/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/share/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/share/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/share/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/share/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/share/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/share/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/share/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/share/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/share/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/share/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/share/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/share/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/share/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/share/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/share/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/share/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg +INPUT /usr/share/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty +INPUT ./footnotehyper-sphinx.sty +INPUT ./footnotehyper-sphinx.sty +INPUT footnotehyper-sphinx.sty +INPUT ./footnotehyper-sphinx.sty +INPUT ./footnotehyper-sphinx.sty +INPUT ./footnotehyper-sphinx.sty +INPUT ./footnotehyper-sphinx.sty +INPUT ./footnotehyper-sphinx.sty +INPUT footnotehyper-sphinx.sty +INPUT ./footnotehyper-sphinx.sty +INPUT footnotehyper-sphinx.sty +INPUT /usr/share/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texmf-dist/tex/latex/float/float.sty +INPUT /usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texmf-dist/tex/latex/parskip/parskip-2001-04-09.sty +INPUT /usr/share/texmf-dist/tex/latex/parskip/parskip-2001-04-09.sty +INPUT /usr/share/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texmf-dist/tex/latex/parskip/parskip-2001-04-09.sty +INPUT /usr/share/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/share/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/share/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/share/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/share/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/share/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/share/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/share/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/share/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/share/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/share/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/share/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/share/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/share/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/share/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/share/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/share/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/share/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/share/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/share/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/share/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/share/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/share/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/share/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/share/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/share/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/share/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/share/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/share/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/share/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/share/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/share/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/share/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/share/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/share/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/share/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/share/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/share/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/share/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/share/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/share/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/share/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/share/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/share/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/share/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/multicol.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/multicol.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/multicol.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/multicol.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/multicol.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/multicol.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/multicol.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/multicol.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/multicol.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/multicol.sty +INPUT /usr/share/texmf-dist/tex/latex/tools/multicol.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT ./sphinxhighlight.sty +INPUT ./sphinxhighlight.sty +INPUT sphinxhighlight.sty +INPUT ./sphinxhighlight.sty +INPUT ./sphinxhighlight.sty +INPUT ./sphinxhighlight.sty +INPUT ./sphinxhighlight.sty +INPUT ./sphinxhighlight.sty +INPUT sphinxhighlight.sty +INPUT ./sphinxhighlight.sty +INPUT sphinxhighlight.sty +INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/share/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hyperref-langpatches.def +INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/share/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/share/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/share/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/share/texmf-dist/tex/latex/base/atbegshi-ltx.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texmf-dist/tex/latex/base/atveryend-ltx.sty +INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT /usr/share/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT /usr/share/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT /usr/share/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT /usr/share/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT /usr/share/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT /usr/share/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT /usr/share/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT /usr/share/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT /usr/share/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT /usr/share/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT /usr/share/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT ./sphinxmessages.sty +INPUT ./sphinxmessages.sty +INPUT sphinxmessages.sty +INPUT ./sphinxmessages.sty +INPUT ./sphinxmessages.sty +INPUT ./sphinxmessages.sty +INPUT ./sphinxmessages.sty +INPUT ./sphinxmessages.sty +INPUT sphinxmessages.sty +INPUT ./sphinxmessages.sty +INPUT sphinxmessages.sty +OUTPUT nest.idx +INPUT /usr/share/texmf-dist/tex/latex/psnfss/t1ptm.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/t1ptm.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/t1ptm.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/t1ptm.fd +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +INPUT /usr/share/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def +INPUT ./nest.aux +INPUT nest.aux +INPUT nest.aux +OUTPUT nest.aux +INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +INPUT /usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/share/texmf-dist/tex/latex/graphics/color.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT ./nest.out +INPUT nest.out +INPUT ./nest.out +INPUT nest.out +INPUT ./nest.out +INPUT nest.out +INPUT ./nest.out +INPUT nest.out +INPUT ./nest.out +INPUT ./nest.out +OUTPUT nest.out +INPUT /usr/share/texmf-dist/tex/latex/psnfss/t1phv.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/t1phv.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/t1phv.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/t1phv.fd +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr17.tfm +INPUT /usr/share/texmf-dist/tex/latex/cmap/ot1.cmap +INPUT /usr/share/texmf-dist/tex/latex/cmap/ot1.cmap +INPUT /usr/share/texmf-dist/tex/latex/cmap/ot1.cmap +INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmr12.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm +INPUT /usr/share/texmf-dist/tex/latex/mmap/oml.cmap +INPUT /usr/share/texmf-dist/tex/latex/mmap/oml.cmap +INPUT /usr/share/texmf-dist/tex/latex/mmap/oml.cmap +INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/share/texmf-dist/tex/latex/mmap/oms.cmap +INPUT /usr/share/texmf-dist/tex/latex/mmap/oms.cmap +INPUT /usr/share/texmf-dist/tex/latex/mmap/oms.cmap +INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmex10.tfm +INPUT /usr/share/texmf-dist/tex/latex/mmap/omx.cmap +INPUT /usr/share/texmf-dist/tex/latex/mmap/omx.cmap +INPUT /usr/share/texmf-dist/tex/latex/mmap/omx.cmap +INPUT /usr/share/texmf-dist/fonts/tfm/public/cm/cmex10.tfm +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm +INPUT /var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map +INPUT /usr/share/texmf-dist/fonts/vf/adobe/helvetic/phvbo8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8r.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm +INPUT ./nest.toc +INPUT nest.toc +INPUT nest.toc +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/times/ptmb8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm +INPUT /usr/share/texmf-dist/tex/latex/psnfss/ts1ptm.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/ts1ptm.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/ts1ptm.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/ts1ptm.fd +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/times/ptmr8c.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/helvetic/phvr8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvr8r.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/times/ptmb8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/times/ptmr8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/times/ptmr8c.vf +INPUT /usr/share/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm +INPUT /usr/share/texmf-dist/tex/latex/psnfss/t1pcr.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/t1pcr.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/t1pcr.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/t1pcr.fd +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm +OUTPUT nest.toc +INPUT /usr/share/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/times/ptmbi8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrbo8t.tfm +INPUT ./frontendDashboard.png +INPUT ./frontendDashboard.png +INPUT frontendDashboard.png +INPUT ./frontendDashboard.png +INPUT ./frontendDashboard.png +INPUT ./frontendDashboard.png +INPUT ./frontendDashboard.png +INPUT frontendDashboard.png +INPUT ./frontendDashboard.png +INPUT /usr/share/texmf-dist/fonts/vf/adobe/helvetic/phvr8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvr8r.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/courier/pcrbo8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrbo8r.tfm +INPUT ./frontendRepositoryCreate.png +INPUT ./frontendRepositoryCreate.png +INPUT frontendRepositoryCreate.png +INPUT ./frontendRepositoryCreate.png +INPUT ./frontendRepositoryCreate.png +INPUT ./frontendRepositoryCreate.png +INPUT ./frontendRepositoryCreate.png +INPUT frontendRepositoryCreate.png +INPUT ./frontendRepositoryCreate.png +INPUT ./frontendAnalysis.png +INPUT ./frontendAnalysis.png +INPUT frontendAnalysis.png +INPUT ./frontendAnalysis.png +INPUT ./frontendAnalysis.png +INPUT ./frontendAnalysis.png +INPUT ./frontendAnalysis.png +INPUT frontendAnalysis.png +INPUT ./frontendAnalysis.png +INPUT ./frontendRepositoryShare.png +INPUT ./frontendRepositoryShare.png +INPUT frontendRepositoryShare.png +INPUT ./frontendRepositoryShare.png +INPUT ./frontendRepositoryShare.png +INPUT ./frontendRepositoryShare.png +INPUT ./frontendRepositoryShare.png +INPUT frontendRepositoryShare.png +INPUT ./frontendRepositoryShare.png +INPUT ./frontendAlertCreate.png +INPUT ./frontendAlertCreate.png +INPUT frontendAlertCreate.png +INPUT ./frontendAlertCreate.png +INPUT ./frontendAlertCreate.png +INPUT ./frontendAlertCreate.png +INPUT ./frontendAlertCreate.png +INPUT frontendAlertCreate.png +INPUT ./frontendAlertCreate.png +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/times/ptmri8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrro8t.tfm +INPUT /usr/share/texmf-dist/tex/latex/psnfss/ts1pcr.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/ts1pcr.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/ts1pcr.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/ts1pcr.fd +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrro8c.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/times/ptmri8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm +INPUT /usr/share/texmf-dist/tex/latex/base/t1cmtt.fd +INPUT /usr/share/texmf-dist/tex/latex/base/t1cmtt.fd +INPUT /usr/share/texmf-dist/tex/latex/base/t1cmtt.fd +INPUT /usr/share/texmf-dist/tex/latex/base/t1cmtt.fd +INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/ectt0900.tfm +INPUT /usr/share/texmf-dist/tex/latex/base/ts1cmtt.fd +INPUT /usr/share/texmf-dist/tex/latex/base/ts1cmtt.fd +INPUT /usr/share/texmf-dist/tex/latex/base/ts1cmtt.fd +INPUT /usr/share/texmf-dist/tex/latex/base/ts1cmtt.fd +INPUT /usr/share/texmf-dist/fonts/tfm/jknappen/ec/tctt0900.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/courier/pcrro8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrro8r.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/courier/pcrro8c.vf +INPUT /usr/share/texmf-dist/fonts/vf/adobe/times/ptmr8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrr8c.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/courier/pcrr8c.vf +INPUT /usr/share/texmf-dist/tex/latex/psnfss/ts1phv.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/ts1phv.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/ts1phv.fd +INPUT /usr/share/texmf-dist/tex/latex/psnfss/ts1phv.fd +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvb8c.tfm +INPUT ./Utenti.png +INPUT ./Utenti.png +INPUT Utenti.png +INPUT ./Utenti.png +INPUT ./Utenti.png +INPUT ./Utenti.png +INPUT ./Utenti.png +INPUT Utenti.png +INPUT ./Utenti.png +INPUT /usr/share/texmf-dist/fonts/vf/adobe/helvetic/phvb8c.vf +INPUT ./CasiUso1.PNG +INPUT ./CasiUso1.PNG +INPUT CasiUso1.PNG +INPUT ./CasiUso1.PNG +INPUT ./CasiUso1.PNG +INPUT ./CasiUso1.PNG +INPUT ./CasiUso1.PNG +INPUT CasiUso1.PNG +INPUT ./CasiUso1.PNG +INPUT ./CasiUso2.PNG +INPUT ./CasiUso2.PNG +INPUT CasiUso2.PNG +INPUT ./CasiUso2.PNG +INPUT ./CasiUso2.PNG +INPUT ./CasiUso2.PNG +INPUT ./CasiUso2.PNG +INPUT CasiUso2.PNG +INPUT ./CasiUso2.PNG +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvb8c.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/helvetic/phvb8c.vf +INPUT ./CasiUso3.PNG +INPUT ./CasiUso3.PNG +INPUT CasiUso3.PNG +INPUT ./CasiUso3.PNG +INPUT ./CasiUso3.PNG +INPUT ./CasiUso3.PNG +INPUT ./CasiUso3.PNG +INPUT CasiUso3.PNG +INPUT ./CasiUso3.PNG +INPUT ./CasiUso4.PNG +INPUT ./CasiUso4.PNG +INPUT CasiUso4.PNG +INPUT ./CasiUso4.PNG +INPUT ./CasiUso4.PNG +INPUT ./CasiUso4.PNG +INPUT ./CasiUso4.PNG +INPUT CasiUso4.PNG +INPUT ./CasiUso4.PNG +INPUT ./CasiUso5.PNG +INPUT ./CasiUso5.PNG +INPUT CasiUso5.PNG +INPUT ./CasiUso5.PNG +INPUT ./CasiUso5.PNG +INPUT ./CasiUso5.PNG +INPUT ./CasiUso5.PNG +INPUT CasiUso5.PNG +INPUT ./CasiUso5.PNG +INPUT ./CasiUso6.PNG +INPUT ./CasiUso6.PNG +INPUT CasiUso6.PNG +INPUT ./CasiUso6.PNG +INPUT ./CasiUso6.PNG +INPUT ./CasiUso6.PNG +INPUT ./CasiUso6.PNG +INPUT CasiUso6.PNG +INPUT ./CasiUso6.PNG +INPUT ./Backlog1.PNG +INPUT ./Backlog1.PNG +INPUT Backlog1.PNG +INPUT ./Backlog1.PNG +INPUT ./Backlog1.PNG +INPUT ./Backlog1.PNG +INPUT ./Backlog1.PNG +INPUT Backlog1.PNG +INPUT ./Backlog1.PNG +INPUT ./Backlog2.PNG +INPUT ./Backlog2.PNG +INPUT Backlog2.PNG +INPUT ./Backlog2.PNG +INPUT ./Backlog2.PNG +INPUT ./Backlog2.PNG +INPUT ./Backlog2.PNG +INPUT Backlog2.PNG +INPUT ./Backlog2.PNG +INPUT ./Backlog3.PNG +INPUT ./Backlog3.PNG +INPUT Backlog3.PNG +INPUT ./Backlog3.PNG +INPUT ./Backlog3.PNG +INPUT ./Backlog3.PNG +INPUT ./Backlog3.PNG +INPUT Backlog3.PNG +INPUT ./Backlog3.PNG +INPUT ./Backlog4.PNG +INPUT ./Backlog4.PNG +INPUT Backlog4.PNG +INPUT ./Backlog4.PNG +INPUT ./Backlog4.PNG +INPUT ./Backlog4.PNG +INPUT ./Backlog4.PNG +INPUT Backlog4.PNG +INPUT ./Backlog4.PNG +INPUT ./Backlog5.PNG +INPUT ./Backlog5.PNG +INPUT Backlog5.PNG +INPUT ./Backlog5.PNG +INPUT ./Backlog5.PNG +INPUT ./Backlog5.PNG +INPUT ./Backlog5.PNG +INPUT Backlog5.PNG +INPUT ./Backlog5.PNG +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/helvetic/phvr8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/helvetic/phvr8r.tfm +INPUT ./1-backlog.png +INPUT ./1-backlog.png +INPUT 1-backlog.png +INPUT ./1-backlog.png +INPUT ./1-backlog.png +INPUT ./1-backlog.png +INPUT ./1-backlog.png +INPUT 1-backlog.png +INPUT ./1-backlog.png +INPUT ./1-tasks.png +INPUT ./1-tasks.png +INPUT 1-tasks.png +INPUT ./1-tasks.png +INPUT ./1-tasks.png +INPUT ./1-tasks.png +INPUT ./1-tasks.png +INPUT 1-tasks.png +INPUT ./1-tasks.png +INPUT ./1-burndown.png +INPUT ./1-burndown.png +INPUT 1-burndown.png +INPUT ./1-burndown.png +INPUT ./1-burndown.png +INPUT ./1-burndown.png +INPUT ./1-burndown.png +INPUT 1-burndown.png +INPUT ./1-burndown.png +INPUT ./2-backlog.png +INPUT ./2-backlog.png +INPUT 2-backlog.png +INPUT ./2-backlog.png +INPUT ./2-backlog.png +INPUT ./2-backlog.png +INPUT ./2-backlog.png +INPUT 2-backlog.png +INPUT ./2-backlog.png +INPUT ./2-tasks.png +INPUT ./2-tasks.png +INPUT 2-tasks.png +INPUT ./2-tasks.png +INPUT ./2-tasks.png +INPUT ./2-tasks.png +INPUT ./2-tasks.png +INPUT 2-tasks.png +INPUT ./2-tasks.png +INPUT ./2-burndown.png +INPUT ./2-burndown.png +INPUT 2-burndown.png +INPUT ./2-burndown.png +INPUT ./2-burndown.png +INPUT ./2-burndown.png +INPUT ./2-burndown.png +INPUT 2-burndown.png +INPUT ./2-burndown.png +INPUT ./3-backlog.png +INPUT ./3-backlog.png +INPUT 3-backlog.png +INPUT ./3-backlog.png +INPUT ./3-backlog.png +INPUT ./3-backlog.png +INPUT ./3-backlog.png +INPUT 3-backlog.png +INPUT ./3-backlog.png +INPUT ./3-tasks.png +INPUT ./3-tasks.png +INPUT 3-tasks.png +INPUT ./3-tasks.png +INPUT ./3-tasks.png +INPUT ./3-tasks.png +INPUT ./3-tasks.png +INPUT 3-tasks.png +INPUT ./3-tasks.png +INPUT ./Burndown4.png +INPUT ./Burndown4.png +INPUT Burndown4.png +INPUT ./Burndown4.png +INPUT ./Burndown4.png +INPUT ./Burndown4.png +INPUT ./Burndown4.png +INPUT Burndown4.png +INPUT ./Burndown4.png +INPUT ./docsRunConfig.png +INPUT ./docsRunConfig.png +INPUT docsRunConfig.png +INPUT ./docsRunConfig.png +INPUT ./docsRunConfig.png +INPUT ./docsRunConfig.png +INPUT ./docsRunConfig.png +INPUT docsRunConfig.png +INPUT ./docsRunConfig.png +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/times/ptmri8c.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/times/ptmri8c.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm +INPUT /usr/share/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf +INPUT /usr/share/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm +INPUT ./nest.ind +INPUT nest.ind +INPUT ./nest.ind +INPUT nest.ind +INPUT nest.aux +INPUT ./nest.out +INPUT ./nest.out +INPUT /usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.enc +INPUT /usr/share/texmf-dist/fonts/enc/dvips/base/8r.enc +INPUT /usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb +INPUT /usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb +INPUT /usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy5.pfb +INPUT /usr/share/texmf-dist/fonts/type1/public/cm-super/sftt0900.pfb +INPUT /usr/share/texmf-dist/fonts/type1/urw/courier/ucrb8a.pfb +INPUT /usr/share/texmf-dist/fonts/type1/urw/courier/ucrbo8a.pfb +INPUT /usr/share/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb +INPUT /usr/share/texmf-dist/fonts/type1/urw/courier/ucrro8a.pfb +INPUT /usr/share/texmf-dist/fonts/type1/urw/helvetic/uhvb8a.pfb +INPUT /usr/share/texmf-dist/fonts/type1/urw/helvetic/uhvbo8a.pfb +INPUT /usr/share/texmf-dist/fonts/type1/urw/helvetic/uhvr8a.pfb +INPUT /usr/share/texmf-dist/fonts/type1/urw/times/utmb8a.pfb +INPUT /usr/share/texmf-dist/fonts/type1/urw/times/utmr8a.pfb +INPUT /usr/share/texmf-dist/fonts/type1/urw/times/utmri8a.pfb diff --git a/docs/build/latex/nest.idx b/docs/build/latex/nest.idx new file mode 100644 index 0000000..937eecc --- /dev/null +++ b/docs/build/latex/nest.idx @@ -0,0 +1,168 @@ +\indexentry{Alert (classe built\sphinxhyphen{}in)@\spxentry{Alert}\spxextra{classe built\sphinxhyphen{}in}|hyperpage}{71} +\indexentry{Authorization (classe built\sphinxhyphen{}in)@\spxentry{Authorization}\spxextra{classe built\sphinxhyphen{}in}|hyperpage}{71} +\indexentry{Composed (classe built\sphinxhyphen{}in)@\spxentry{Composed}\spxextra{classe built\sphinxhyphen{}in}|hyperpage}{71} +\indexentry{Condition (classe built\sphinxhyphen{}in)@\spxentry{Condition}\spxextra{classe built\sphinxhyphen{}in}|hyperpage}{72} +\indexentry{Contains (classe built\sphinxhyphen{}in)@\spxentry{Contains}\spxextra{classe built\sphinxhyphen{}in}|hyperpage}{72} +\indexentry{MadeOf (classe built\sphinxhyphen{}in)@\spxentry{MadeOf}\spxextra{classe built\sphinxhyphen{}in}|hyperpage}{72} +\indexentry{Notification (classe built\sphinxhyphen{}in)@\spxentry{Notification}\spxextra{classe built\sphinxhyphen{}in}|hyperpage}{72} +\indexentry{Repository (classe built\sphinxhyphen{}in)@\spxentry{Repository}\spxextra{classe built\sphinxhyphen{}in}|hyperpage}{72} +\indexentry{Tweet (classe built\sphinxhyphen{}in)@\spxentry{Tweet}\spxextra{classe built\sphinxhyphen{}in}|hyperpage}{73} +\indexentry{User (classe built\sphinxhyphen{}in)@\spxentry{User}\spxextra{classe built\sphinxhyphen{}in}|hyperpage}{73} +\indexentry{modulo@\spxentry{modulo}!nest\_backend@\spxentry{nest\_backend}|hyperpage}{75} +\indexentry{nest\_backend@\spxentry{nest\_backend}!modulo@\spxentry{modulo}|hyperpage}{75} +\indexentry{modulo@\spxentry{modulo}!nest\_backend.gestione@\spxentry{nest\_backend.gestione}|hyperpage}{75} +\indexentry{nest\_backend.gestione@\spxentry{nest\_backend.gestione}!modulo@\spxentry{modulo}|hyperpage}{75} +\indexentry{authenticate() (nel modulo nest\_backend.gestione)@\spxentry{authenticate()}\spxextra{nel modulo nest\_backend.gestione}|hyperpage}{75} +\indexentry{identity() (nel modulo nest\_backend.gestione)@\spxentry{identity()}\spxextra{nel modulo nest\_backend.gestione}|hyperpage}{75} +\indexentry{gen\_password() (nel modulo nest\_backend.gestione)@\spxentry{gen\_password()}\spxextra{nel modulo nest\_backend.gestione}|hyperpage}{75} +\indexentry{find\_user() (nel modulo nest\_backend.gestione)@\spxentry{find\_user()}\spxextra{nel modulo nest\_backend.gestione}|hyperpage}{75} +\indexentry{admin\_or\_403() (nel modulo nest\_backend.gestione)@\spxentry{admin\_or\_403()}\spxextra{nel modulo nest\_backend.gestione}|hyperpage}{75} +\indexentry{repository\_auth() (nel modulo nest\_backend.gestione)@\spxentry{repository\_auth()}\spxextra{nel modulo nest\_backend.gestione}|hyperpage}{75} +\indexentry{json\_request\_authorizer() (nel modulo nest\_backend.gestione)@\spxentry{json\_request\_authorizer()}\spxextra{nel modulo nest\_backend.gestione}|hyperpage}{75} +\indexentry{json\_error() (nel modulo nest\_backend.gestione)@\spxentry{json\_error()}\spxextra{nel modulo nest\_backend.gestione}|hyperpage}{75} +\indexentry{json\_success() (nel modulo nest\_backend.gestione)@\spxentry{json\_success()}\spxextra{nel modulo nest\_backend.gestione}|hyperpage}{75} +\indexentry{error\_handler() (nel modulo nest\_backend.gestione)@\spxentry{error\_handler()}\spxextra{nel modulo nest\_backend.gestione}|hyperpage}{75} +\indexentry{hashtag\_validator() (nel modulo nest\_backend.gestione)@\spxentry{hashtag\_validator()}\spxextra{nel modulo nest\_backend.gestione}|hyperpage}{75} +\indexentry{modulo@\spxentry{modulo}!nest\_backend.database@\spxentry{nest\_backend.database}|hyperpage}{76} +\indexentry{nest\_backend.database@\spxentry{nest\_backend.database}!modulo@\spxentry{modulo}|hyperpage}{76} +\indexentry{modulo@\spxentry{modulo}!nest\_backend.database.base@\spxentry{nest\_backend.database.base}|hyperpage}{76} +\indexentry{nest\_backend.database.base@\spxentry{nest\_backend.database.base}!modulo@\spxentry{modulo}|hyperpage}{76} +\indexentry{modulo@\spxentry{modulo}!nest\_backend.database.tables@\spxentry{nest\_backend.database.tables}|hyperpage}{76} +\indexentry{nest\_backend.database.tables@\spxentry{nest\_backend.database.tables}!modulo@\spxentry{modulo}|hyperpage}{76} +\indexentry{Alert (classe in nest\_backend.database.tables)@\spxentry{Alert}\spxextra{classe in nest\_backend.database.tables}|hyperpage}{76} +\indexentry{id (nest\_backend.database.tables.Alert attributo)@\spxentry{id}\spxextra{nest\_backend.database.tables.Alert attributo}|hyperpage}{76} +\indexentry{name (nest\_backend.database.tables.Alert attributo)@\spxentry{name}\spxextra{nest\_backend.database.tables.Alert attributo}|hyperpage}{76} +\indexentry{limit (nest\_backend.database.tables.Alert attributo)@\spxentry{limit}\spxextra{nest\_backend.database.tables.Alert attributo}|hyperpage}{76} +\indexentry{window\_size (nest\_backend.database.tables.Alert attributo)@\spxentry{window\_size}\spxextra{nest\_backend.database.tables.Alert attributo}|hyperpage}{76} +\indexentry{evaluation\_mode (nest\_backend.database.tables.Alert attributo)@\spxentry{evaluation\_mode}\spxextra{nest\_backend.database.tables.Alert attributo}|hyperpage}{76} +\indexentry{repository\_id (nest\_backend.database.tables.Alert attributo)@\spxentry{repository\_id}\spxextra{nest\_backend.database.tables.Alert attributo}|hyperpage}{76} +\indexentry{repository (nest\_backend.database.tables.Alert attributo)@\spxentry{repository}\spxextra{nest\_backend.database.tables.Alert attributo}|hyperpage}{76} +\indexentry{notifications (nest\_backend.database.tables.Alert attributo)@\spxentry{notifications}\spxextra{nest\_backend.database.tables.Alert attributo}|hyperpage}{76} +\indexentry{conditions (nest\_backend.database.tables.Alert attributo)@\spxentry{conditions}\spxextra{nest\_backend.database.tables.Alert attributo}|hyperpage}{76} +\indexentry{to\_json() (nest\_backend.database.tables.Alert metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Alert metodo}|hyperpage}{76} +\indexentry{\_\_init\_\_() (nest\_backend.database.tables.Alert metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Alert metodo}|hyperpage}{76} +\indexentry{Authorization (classe in nest\_backend.database.tables)@\spxentry{Authorization}\spxextra{classe in nest\_backend.database.tables}|hyperpage}{76} +\indexentry{rid (nest\_backend.database.tables.Authorization attributo)@\spxentry{rid}\spxextra{nest\_backend.database.tables.Authorization attributo}|hyperpage}{76} +\indexentry{email (nest\_backend.database.tables.Authorization attributo)@\spxentry{email}\spxextra{nest\_backend.database.tables.Authorization attributo}|hyperpage}{76} +\indexentry{repository (nest\_backend.database.tables.Authorization attributo)@\spxentry{repository}\spxextra{nest\_backend.database.tables.Authorization attributo}|hyperpage}{76} +\indexentry{user (nest\_backend.database.tables.Authorization attributo)@\spxentry{user}\spxextra{nest\_backend.database.tables.Authorization attributo}|hyperpage}{76} +\indexentry{to\_json() (nest\_backend.database.tables.Authorization metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Authorization metodo}|hyperpage}{76} +\indexentry{\_\_init\_\_() (nest\_backend.database.tables.Authorization metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Authorization metodo}|hyperpage}{76} +\indexentry{Composed (classe in nest\_backend.database.tables)@\spxentry{Composed}\spxextra{classe in nest\_backend.database.tables}|hyperpage}{76} +\indexentry{rid (nest\_backend.database.tables.Composed attributo)@\spxentry{rid}\spxextra{nest\_backend.database.tables.Composed attributo}|hyperpage}{77} +\indexentry{snowflake (nest\_backend.database.tables.Composed attributo)@\spxentry{snowflake}\spxextra{nest\_backend.database.tables.Composed attributo}|hyperpage}{77} +\indexentry{repository (nest\_backend.database.tables.Composed attributo)@\spxentry{repository}\spxextra{nest\_backend.database.tables.Composed attributo}|hyperpage}{77} +\indexentry{tweet (nest\_backend.database.tables.Composed attributo)@\spxentry{tweet}\spxextra{nest\_backend.database.tables.Composed attributo}|hyperpage}{77} +\indexentry{\_\_init\_\_() (nest\_backend.database.tables.Composed metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Composed metodo}|hyperpage}{77} +\indexentry{Condition (classe in nest\_backend.database.tables)@\spxentry{Condition}\spxextra{classe in nest\_backend.database.tables}|hyperpage}{77} +\indexentry{id (nest\_backend.database.tables.Condition attributo)@\spxentry{id}\spxextra{nest\_backend.database.tables.Condition attributo}|hyperpage}{77} +\indexentry{type (nest\_backend.database.tables.Condition attributo)@\spxentry{type}\spxextra{nest\_backend.database.tables.Condition attributo}|hyperpage}{77} +\indexentry{content (nest\_backend.database.tables.Condition attributo)@\spxentry{content}\spxextra{nest\_backend.database.tables.Condition attributo}|hyperpage}{77} +\indexentry{repository\_id (nest\_backend.database.tables.Condition attributo)@\spxentry{repository\_id}\spxextra{nest\_backend.database.tables.Condition attributo}|hyperpage}{77} +\indexentry{repository (nest\_backend.database.tables.Condition attributo)@\spxentry{repository}\spxextra{nest\_backend.database.tables.Condition attributo}|hyperpage}{77} +\indexentry{tweets (nest\_backend.database.tables.Condition attributo)@\spxentry{tweets}\spxextra{nest\_backend.database.tables.Condition attributo}|hyperpage}{77} +\indexentry{alerts (nest\_backend.database.tables.Condition attributo)@\spxentry{alerts}\spxextra{nest\_backend.database.tables.Condition attributo}|hyperpage}{77} +\indexentry{to\_json() (nest\_backend.database.tables.Condition metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Condition metodo}|hyperpage}{77} +\indexentry{\_\_init\_\_() (nest\_backend.database.tables.Condition metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Condition metodo}|hyperpage}{77} +\indexentry{Contains (classe in nest\_backend.database.tables)@\spxentry{Contains}\spxextra{classe in nest\_backend.database.tables}|hyperpage}{77} +\indexentry{cid (nest\_backend.database.tables.Contains attributo)@\spxentry{cid}\spxextra{nest\_backend.database.tables.Contains attributo}|hyperpage}{77} +\indexentry{snowflake (nest\_backend.database.tables.Contains attributo)@\spxentry{snowflake}\spxextra{nest\_backend.database.tables.Contains attributo}|hyperpage}{77} +\indexentry{condition (nest\_backend.database.tables.Contains attributo)@\spxentry{condition}\spxextra{nest\_backend.database.tables.Contains attributo}|hyperpage}{77} +\indexentry{tweet (nest\_backend.database.tables.Contains attributo)@\spxentry{tweet}\spxextra{nest\_backend.database.tables.Contains attributo}|hyperpage}{77} +\indexentry{\_\_init\_\_() (nest\_backend.database.tables.Contains metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Contains metodo}|hyperpage}{77} +\indexentry{Notification (classe in nest\_backend.database.tables)@\spxentry{Notification}\spxextra{classe in nest\_backend.database.tables}|hyperpage}{77} +\indexentry{id (nest\_backend.database.tables.Notification attributo)@\spxentry{id}\spxextra{nest\_backend.database.tables.Notification attributo}|hyperpage}{77} +\indexentry{ora (nest\_backend.database.tables.Notification attributo)@\spxentry{ora}\spxextra{nest\_backend.database.tables.Notification attributo}|hyperpage}{78} +\indexentry{alert\_id (nest\_backend.database.tables.Notification attributo)@\spxentry{alert\_id}\spxextra{nest\_backend.database.tables.Notification attributo}|hyperpage}{78} +\indexentry{alert (nest\_backend.database.tables.Notification attributo)@\spxentry{alert}\spxextra{nest\_backend.database.tables.Notification attributo}|hyperpage}{78} +\indexentry{to\_json() (nest\_backend.database.tables.Notification metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Notification metodo}|hyperpage}{78} +\indexentry{\_\_init\_\_() (nest\_backend.database.tables.Notification metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Notification metodo}|hyperpage}{78} +\indexentry{Repository (classe in nest\_backend.database.tables)@\spxentry{Repository}\spxextra{classe in nest\_backend.database.tables}|hyperpage}{78} +\indexentry{id (nest\_backend.database.tables.Repository attributo)@\spxentry{id}\spxextra{nest\_backend.database.tables.Repository attributo}|hyperpage}{78} +\indexentry{name (nest\_backend.database.tables.Repository attributo)@\spxentry{name}\spxextra{nest\_backend.database.tables.Repository attributo}|hyperpage}{78} +\indexentry{start (nest\_backend.database.tables.Repository attributo)@\spxentry{start}\spxextra{nest\_backend.database.tables.Repository attributo}|hyperpage}{78} +\indexentry{end (nest\_backend.database.tables.Repository attributo)@\spxentry{end}\spxextra{nest\_backend.database.tables.Repository attributo}|hyperpage}{78} +\indexentry{is\_active (nest\_backend.database.tables.Repository attributo)@\spxentry{is\_active}\spxextra{nest\_backend.database.tables.Repository attributo}|hyperpage}{78} +\indexentry{is\_deleted (nest\_backend.database.tables.Repository attributo)@\spxentry{is\_deleted}\spxextra{nest\_backend.database.tables.Repository attributo}|hyperpage}{78} +\indexentry{evaluation\_mode (nest\_backend.database.tables.Repository attributo)@\spxentry{evaluation\_mode}\spxextra{nest\_backend.database.tables.Repository attributo}|hyperpage}{78} +\indexentry{owner\_id (nest\_backend.database.tables.Repository attributo)@\spxentry{owner\_id}\spxextra{nest\_backend.database.tables.Repository attributo}|hyperpage}{78} +\indexentry{owner (nest\_backend.database.tables.Repository attributo)@\spxentry{owner}\spxextra{nest\_backend.database.tables.Repository attributo}|hyperpage}{78} +\indexentry{authorizations (nest\_backend.database.tables.Repository attributo)@\spxentry{authorizations}\spxextra{nest\_backend.database.tables.Repository attributo}|hyperpage}{78} +\indexentry{tweets (nest\_backend.database.tables.Repository attributo)@\spxentry{tweets}\spxextra{nest\_backend.database.tables.Repository attributo}|hyperpage}{78} +\indexentry{alerts (nest\_backend.database.tables.Repository attributo)@\spxentry{alerts}\spxextra{nest\_backend.database.tables.Repository attributo}|hyperpage}{78} +\indexentry{conditions (nest\_backend.database.tables.Repository attributo)@\spxentry{conditions}\spxextra{nest\_backend.database.tables.Repository attributo}|hyperpage}{78} +\indexentry{to\_json() (nest\_backend.database.tables.Repository metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Repository metodo}|hyperpage}{78} +\indexentry{\_\_init\_\_() (nest\_backend.database.tables.Repository metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Repository metodo}|hyperpage}{78} +\indexentry{Tweet (classe in nest\_backend.database.tables)@\spxentry{Tweet}\spxextra{classe in nest\_backend.database.tables}|hyperpage}{78} +\indexentry{snowflake (nest\_backend.database.tables.Tweet attributo)@\spxentry{snowflake}\spxextra{nest\_backend.database.tables.Tweet attributo}|hyperpage}{78} +\indexentry{content (nest\_backend.database.tables.Tweet attributo)@\spxentry{content}\spxextra{nest\_backend.database.tables.Tweet attributo}|hyperpage}{78} +\indexentry{location (nest\_backend.database.tables.Tweet attributo)@\spxentry{location}\spxextra{nest\_backend.database.tables.Tweet attributo}|hyperpage}{78} +\indexentry{place (nest\_backend.database.tables.Tweet attributo)@\spxentry{place}\spxextra{nest\_backend.database.tables.Tweet attributo}|hyperpage}{78} +\indexentry{poster (nest\_backend.database.tables.Tweet attributo)@\spxentry{poster}\spxextra{nest\_backend.database.tables.Tweet attributo}|hyperpage}{78} +\indexentry{insert\_time (nest\_backend.database.tables.Tweet attributo)@\spxentry{insert\_time}\spxextra{nest\_backend.database.tables.Tweet attributo}|hyperpage}{79} +\indexentry{post\_time (nest\_backend.database.tables.Tweet attributo)@\spxentry{post\_time}\spxextra{nest\_backend.database.tables.Tweet attributo}|hyperpage}{79} +\indexentry{image\_url (nest\_backend.database.tables.Tweet attributo)@\spxentry{image\_url}\spxextra{nest\_backend.database.tables.Tweet attributo}|hyperpage}{79} +\indexentry{repositories (nest\_backend.database.tables.Tweet attributo)@\spxentry{repositories}\spxextra{nest\_backend.database.tables.Tweet attributo}|hyperpage}{79} +\indexentry{conditions (nest\_backend.database.tables.Tweet attributo)@\spxentry{conditions}\spxextra{nest\_backend.database.tables.Tweet attributo}|hyperpage}{79} +\indexentry{to\_json() (nest\_backend.database.tables.Tweet metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Tweet metodo}|hyperpage}{79} +\indexentry{\_\_init\_\_() (nest\_backend.database.tables.Tweet metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Tweet metodo}|hyperpage}{79} +\indexentry{User (classe in nest\_backend.database.tables)@\spxentry{User}\spxextra{classe in nest\_backend.database.tables}|hyperpage}{79} +\indexentry{email (nest\_backend.database.tables.User attributo)@\spxentry{email}\spxextra{nest\_backend.database.tables.User attributo}|hyperpage}{79} +\indexentry{username (nest\_backend.database.tables.User attributo)@\spxentry{username}\spxextra{nest\_backend.database.tables.User attributo}|hyperpage}{79} +\indexentry{password (nest\_backend.database.tables.User attributo)@\spxentry{password}\spxextra{nest\_backend.database.tables.User attributo}|hyperpage}{79} +\indexentry{isAdmin (nest\_backend.database.tables.User attributo)@\spxentry{isAdmin}\spxextra{nest\_backend.database.tables.User attributo}|hyperpage}{79} +\indexentry{owner\_of (nest\_backend.database.tables.User attributo)@\spxentry{owner\_of}\spxextra{nest\_backend.database.tables.User attributo}|hyperpage}{79} +\indexentry{authorizations (nest\_backend.database.tables.User attributo)@\spxentry{authorizations}\spxextra{nest\_backend.database.tables.User attributo}|hyperpage}{79} +\indexentry{to\_json() (nest\_backend.database.tables.User metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.User metodo}|hyperpage}{79} +\indexentry{\_\_init\_\_() (nest\_backend.database.tables.User metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.User metodo}|hyperpage}{79} +\indexentry{MadeOf (classe in nest\_backend.database.tables)@\spxentry{MadeOf}\spxextra{classe in nest\_backend.database.tables}|hyperpage}{79} +\indexentry{aid (nest\_backend.database.tables.MadeOf attributo)@\spxentry{aid}\spxextra{nest\_backend.database.tables.MadeOf attributo}|hyperpage}{79} +\indexentry{cid (nest\_backend.database.tables.MadeOf attributo)@\spxentry{cid}\spxextra{nest\_backend.database.tables.MadeOf attributo}|hyperpage}{79} +\indexentry{alert (nest\_backend.database.tables.MadeOf attributo)@\spxentry{alert}\spxextra{nest\_backend.database.tables.MadeOf attributo}|hyperpage}{79} +\indexentry{condition (nest\_backend.database.tables.MadeOf attributo)@\spxentry{condition}\spxextra{nest\_backend.database.tables.MadeOf attributo}|hyperpage}{79} +\indexentry{\_\_init\_\_() (nest\_backend.database.tables.MadeOf metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.MadeOf metodo}|hyperpage}{79} +\indexentry{ConditionType (classe in nest\_backend.database.tables)@\spxentry{ConditionType}\spxextra{classe in nest\_backend.database.tables}|hyperpage}{79} +\indexentry{hashtag (nest\_backend.database.tables.ConditionType attributo)@\spxentry{hashtag}\spxextra{nest\_backend.database.tables.ConditionType attributo}|hyperpage}{80} +\indexentry{location (nest\_backend.database.tables.ConditionType attributo)@\spxentry{location}\spxextra{nest\_backend.database.tables.ConditionType attributo}|hyperpage}{80} +\indexentry{time (nest\_backend.database.tables.ConditionType attributo)@\spxentry{time}\spxextra{nest\_backend.database.tables.ConditionType attributo}|hyperpage}{80} +\indexentry{coordinates (nest\_backend.database.tables.ConditionType attributo)@\spxentry{coordinates}\spxextra{nest\_backend.database.tables.ConditionType attributo}|hyperpage}{80} +\indexentry{place (nest\_backend.database.tables.ConditionType attributo)@\spxentry{place}\spxextra{nest\_backend.database.tables.ConditionType attributo}|hyperpage}{80} +\indexentry{user (nest\_backend.database.tables.ConditionType attributo)@\spxentry{user}\spxextra{nest\_backend.database.tables.ConditionType attributo}|hyperpage}{80} +\indexentry{OperationType (classe in nest\_backend.database.tables)@\spxentry{OperationType}\spxextra{classe in nest\_backend.database.tables}|hyperpage}{80} +\indexentry{assign (nest\_backend.database.tables.OperationType attributo)@\spxentry{assign}\spxextra{nest\_backend.database.tables.OperationType attributo}|hyperpage}{80} +\indexentry{ConditionMode (classe in nest\_backend.database.tables)@\spxentry{ConditionMode}\spxextra{classe in nest\_backend.database.tables}|hyperpage}{80} +\indexentry{all\_or (nest\_backend.database.tables.ConditionMode attributo)@\spxentry{all\_or}\spxextra{nest\_backend.database.tables.ConditionMode attributo}|hyperpage}{80} +\indexentry{all\_and (nest\_backend.database.tables.ConditionMode attributo)@\spxentry{all\_and}\spxextra{nest\_backend.database.tables.ConditionMode attributo}|hyperpage}{80} +\indexentry{modulo@\spxentry{modulo}!nest\_crawler@\spxentry{nest\_crawler}|hyperpage}{81} +\indexentry{nest\_crawler@\spxentry{nest\_crawler}!modulo@\spxentry{modulo}|hyperpage}{81} +\indexentry{associate\_condition\_tweet() (nel modulo nest\_crawler)@\spxentry{associate\_condition\_tweet()}\spxextra{nel modulo nest\_crawler}|hyperpage}{81} +\indexentry{authenticate() (nel modulo nest\_crawler)@\spxentry{authenticate()}\spxextra{nel modulo nest\_crawler}|hyperpage}{81} +\indexentry{is\_coordinate\_inside\_bounding\_box() (nel modulo nest\_crawler)@\spxentry{is\_coordinate\_inside\_bounding\_box()}\spxextra{nel modulo nest\_crawler}|hyperpage}{81} +\indexentry{is\_repo\_alert\_triggered() (nel modulo nest\_crawler)@\spxentry{is\_repo\_alert\_triggered()}\spxextra{nel modulo nest\_crawler}|hyperpage}{81} +\indexentry{search\_repo\_conditions() (nel modulo nest\_crawler)@\spxentry{search\_repo\_conditions()}\spxextra{nel modulo nest\_crawler}|hyperpage}{81} +\indexentry{send\_notification\_email() (nel modulo nest\_crawler)@\spxentry{send\_notification\_email()}\spxextra{nel modulo nest\_crawler}|hyperpage}{81} +\indexentry{send\_notification\_tweet() (nel modulo nest\_crawler)@\spxentry{send\_notification\_tweet()}\spxextra{nel modulo nest\_crawler}|hyperpage}{81} +\indexentry{Condition() (classe)@\spxentry{Condition()}\spxextra{classe}|hyperpage}{83} +\indexentry{ConditionHashtag() (classe)@\spxentry{ConditionHashtag()}\spxextra{classe}|hyperpage}{83} +\indexentry{ConditionUser() (classe)@\spxentry{ConditionUser()}\spxextra{classe}|hyperpage}{83} +\indexentry{ConditionTime() (classe)@\spxentry{ConditionTime()}\spxextra{classe}|hyperpage}{83} +\indexentry{ConditionLocation() (classe)@\spxentry{ConditionLocation()}\spxextra{classe}|hyperpage}{83} +\indexentry{NotImplementedError() (classe)@\spxentry{NotImplementedError()}\spxextra{classe}|hyperpage}{83} +\indexentry{BackendCommunicationError() (classe)@\spxentry{BackendCommunicationError()}\spxextra{classe}|hyperpage}{83} +\indexentry{ViewNotAllowedError() (classe)@\spxentry{ViewNotAllowedError()}\spxextra{classe}|hyperpage}{83} +\indexentry{ServerNotConfiguredError() (classe)@\spxentry{ServerNotConfiguredError()}\spxextra{classe}|hyperpage}{83} +\indexentry{FetchAlreadyRunningError() (classe)@\spxentry{FetchAlreadyRunningError()}\spxextra{classe}|hyperpage}{84} +\indexentry{FetchError() (classe)@\spxentry{FetchError()}\spxextra{classe}|hyperpage}{84} +\indexentry{DecodeError() (classe)@\spxentry{DecodeError()}\spxextra{classe}|hyperpage}{84} +\indexentry{ResultError() (classe)@\spxentry{ResultError()}\spxextra{classe}|hyperpage}{84} +\indexentry{SerializationError() (classe)@\spxentry{SerializationError()}\spxextra{classe}|hyperpage}{84} +\indexentry{Filter() (classe)@\spxentry{Filter()}\spxextra{classe}|hyperpage}{84} +\indexentry{FilterContains() (classe)@\spxentry{FilterContains()}\spxextra{classe}|hyperpage}{84} +\indexentry{FilterHashtag() (classe)@\spxentry{FilterHashtag()}\spxextra{classe}|hyperpage}{84} +\indexentry{FilterPoster() (classe)@\spxentry{FilterPoster()}\spxextra{classe}|hyperpage}{84} +\indexentry{FilterWithLocation() (classe)@\spxentry{FilterWithLocation()}\spxextra{classe}|hyperpage}{84} +\indexentry{FilterWithPlace() (classe)@\spxentry{FilterWithPlace()}\spxextra{classe}|hyperpage}{84} +\indexentry{FilterInsideMapArea() (classe)@\spxentry{FilterInsideMapArea()}\spxextra{classe}|hyperpage}{84} +\indexentry{FilterInsideTimeRay() (classe)@\spxentry{FilterInsideTimeRay()}\spxextra{classe}|hyperpage}{84} +\indexentry{FilterWithImage() (classe)@\spxentry{FilterWithImage()}\spxextra{classe}|hyperpage}{84} +\indexentry{FilterIsRetweet() (classe)@\spxentry{FilterIsRetweet()}\spxextra{classe}|hyperpage}{84} diff --git a/docs/build/latex/nest.ilg b/docs/build/latex/nest.ilg new file mode 100644 index 0000000..d2b93f9 --- /dev/null +++ b/docs/build/latex/nest.ilg @@ -0,0 +1,7 @@ +This is makeindex, version 2.15 [TeX Live 2021] (kpathsea + Thai support). +Scanning style file ./python.ist.......done (7 attributes redefined, 0 ignored). +Scanning input file nest.idx....done (168 entries accepted, 0 rejected). +Sorting entries....done (1353 comparisons). +Generating output file nest.ind....done (314 lines written, 0 warnings). +Output written in nest.ind. +Transcript written in nest.ilg. diff --git a/docs/build/latex/nest.ind b/docs/build/latex/nest.ind new file mode 100644 index 0000000..3f39fd3 --- /dev/null +++ b/docs/build/latex/nest.ind @@ -0,0 +1,314 @@ +\begin{sphinxtheindex} +\let\bigletter\sphinxstyleindexlettergroup +\let\spxpagem \sphinxstyleindexpagemain +\let\spxentry \sphinxstyleindexentry +\let\spxextra \sphinxstyleindexextra + + \bigletter {\sphinxsymbolsname} + \item \spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Alert metodo}, + \hyperpage{76} + \item \spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Authorization metodo}, + \hyperpage{76} + \item \spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Composed metodo}, + \hyperpage{77} + \item \spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Condition metodo}, + \hyperpage{77} + \item \spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Contains metodo}, + \hyperpage{77} + \item \spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.MadeOf metodo}, + \hyperpage{79} + \item \spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Notification metodo}, + \hyperpage{78} + \item \spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Repository metodo}, + \hyperpage{78} + \item \spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Tweet metodo}, + \hyperpage{79} + \item \spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.User metodo}, + \hyperpage{79} + + \indexspace + \bigletter A + \item \spxentry{admin\_or\_403()}\spxextra{nel modulo nest\_backend.gestione}, \hyperpage{75} + \item \spxentry{aid}\spxextra{nest\_backend.database.tables.MadeOf attributo}, \hyperpage{79} + \item \spxentry{Alert}\spxextra{classe built\sphinxhyphen{}in}, \hyperpage{71} + \item \spxentry{Alert}\spxextra{classe in nest\_backend.database.tables}, \hyperpage{76} + \item \spxentry{alert}\spxextra{nest\_backend.database.tables.MadeOf attributo}, \hyperpage{79} + \item \spxentry{alert}\spxextra{nest\_backend.database.tables.Notification attributo}, + \hyperpage{78} + \item \spxentry{alert\_id}\spxextra{nest\_backend.database.tables.Notification attributo}, + \hyperpage{78} + \item \spxentry{alerts}\spxextra{nest\_backend.database.tables.Condition attributo}, + \hyperpage{77} + \item \spxentry{alerts}\spxextra{nest\_backend.database.tables.Repository attributo}, + \hyperpage{78} + \item \spxentry{all\_and}\spxextra{nest\_backend.database.tables.ConditionMode attributo}, + \hyperpage{80} + \item \spxentry{all\_or}\spxextra{nest\_backend.database.tables.ConditionMode attributo}, + \hyperpage{80} + \item \spxentry{assign}\spxextra{nest\_backend.database.tables.OperationType attributo}, + \hyperpage{80} + \item \spxentry{associate\_condition\_tweet()}\spxextra{nel modulo nest\_crawler}, \hyperpage{81} + \item \spxentry{authenticate()}\spxextra{nel modulo nest\_backend.gestione}, \hyperpage{75} + \item \spxentry{authenticate()}\spxextra{nel modulo nest\_crawler}, \hyperpage{81} + \item \spxentry{Authorization}\spxextra{classe built\sphinxhyphen{}in}, \hyperpage{71} + \item \spxentry{Authorization}\spxextra{classe in nest\_backend.database.tables}, \hyperpage{76} + \item \spxentry{authorizations}\spxextra{nest\_backend.database.tables.Repository attributo}, + \hyperpage{78} + \item \spxentry{authorizations}\spxextra{nest\_backend.database.tables.User attributo}, + \hyperpage{79} + + \indexspace + \bigletter B + \item \spxentry{BackendCommunicationError()}\spxextra{classe}, \hyperpage{83} + + \indexspace + \bigletter C + \item \spxentry{cid}\spxextra{nest\_backend.database.tables.Contains attributo}, \hyperpage{77} + \item \spxentry{cid}\spxextra{nest\_backend.database.tables.MadeOf attributo}, \hyperpage{79} + \item \spxentry{Composed}\spxextra{classe built\sphinxhyphen{}in}, \hyperpage{71} + \item \spxentry{Composed}\spxextra{classe in nest\_backend.database.tables}, \hyperpage{76} + \item \spxentry{Condition}\spxextra{classe built\sphinxhyphen{}in}, \hyperpage{72} + \item \spxentry{Condition}\spxextra{classe in nest\_backend.database.tables}, \hyperpage{77} + \item \spxentry{condition}\spxextra{nest\_backend.database.tables.Contains attributo}, + \hyperpage{77} + \item \spxentry{condition}\spxextra{nest\_backend.database.tables.MadeOf attributo}, + \hyperpage{79} + \item \spxentry{Condition()}\spxextra{classe}, \hyperpage{83} + \item \spxentry{ConditionHashtag()}\spxextra{classe}, \hyperpage{83} + \item \spxentry{ConditionLocation()}\spxextra{classe}, \hyperpage{83} + \item \spxentry{ConditionMode}\spxextra{classe in nest\_backend.database.tables}, \hyperpage{80} + \item \spxentry{conditions}\spxextra{nest\_backend.database.tables.Alert attributo}, + \hyperpage{76} + \item \spxentry{conditions}\spxextra{nest\_backend.database.tables.Repository attributo}, + \hyperpage{78} + \item \spxentry{conditions}\spxextra{nest\_backend.database.tables.Tweet attributo}, + \hyperpage{79} + \item \spxentry{ConditionTime()}\spxextra{classe}, \hyperpage{83} + \item \spxentry{ConditionType}\spxextra{classe in nest\_backend.database.tables}, \hyperpage{79} + \item \spxentry{ConditionUser()}\spxextra{classe}, \hyperpage{83} + \item \spxentry{Contains}\spxextra{classe built\sphinxhyphen{}in}, \hyperpage{72} + \item \spxentry{Contains}\spxextra{classe in nest\_backend.database.tables}, \hyperpage{77} + \item \spxentry{content}\spxextra{nest\_backend.database.tables.Condition attributo}, + \hyperpage{77} + \item \spxentry{content}\spxextra{nest\_backend.database.tables.Tweet attributo}, \hyperpage{78} + \item \spxentry{coordinates}\spxextra{nest\_backend.database.tables.ConditionType attributo}, + \hyperpage{80} + + \indexspace + \bigletter D + \item \spxentry{DecodeError()}\spxextra{classe}, \hyperpage{84} + + \indexspace + \bigletter E + \item \spxentry{email}\spxextra{nest\_backend.database.tables.Authorization attributo}, + \hyperpage{76} + \item \spxentry{email}\spxextra{nest\_backend.database.tables.User attributo}, \hyperpage{79} + \item \spxentry{end}\spxextra{nest\_backend.database.tables.Repository attributo}, \hyperpage{78} + \item \spxentry{error\_handler()}\spxextra{nel modulo nest\_backend.gestione}, \hyperpage{75} + \item \spxentry{evaluation\_mode}\spxextra{nest\_backend.database.tables.Alert attributo}, + \hyperpage{76} + \item \spxentry{evaluation\_mode}\spxextra{nest\_backend.database.tables.Repository attributo}, + \hyperpage{78} + + \indexspace + \bigletter F + \item \spxentry{FetchAlreadyRunningError()}\spxextra{classe}, \hyperpage{84} + \item \spxentry{FetchError()}\spxextra{classe}, \hyperpage{84} + \item \spxentry{Filter()}\spxextra{classe}, \hyperpage{84} + \item \spxentry{FilterContains()}\spxextra{classe}, \hyperpage{84} + \item \spxentry{FilterHashtag()}\spxextra{classe}, \hyperpage{84} + \item \spxentry{FilterInsideMapArea()}\spxextra{classe}, \hyperpage{84} + \item \spxentry{FilterInsideTimeRay()}\spxextra{classe}, \hyperpage{84} + \item \spxentry{FilterIsRetweet()}\spxextra{classe}, \hyperpage{84} + \item \spxentry{FilterPoster()}\spxextra{classe}, \hyperpage{84} + \item \spxentry{FilterWithImage()}\spxextra{classe}, \hyperpage{84} + \item \spxentry{FilterWithLocation()}\spxextra{classe}, \hyperpage{84} + \item \spxentry{FilterWithPlace()}\spxextra{classe}, \hyperpage{84} + \item \spxentry{find\_user()}\spxextra{nel modulo nest\_backend.gestione}, \hyperpage{75} + + \indexspace + \bigletter G + \item \spxentry{gen\_password()}\spxextra{nel modulo nest\_backend.gestione}, \hyperpage{75} + + \indexspace + \bigletter H + \item \spxentry{hashtag}\spxextra{nest\_backend.database.tables.ConditionType attributo}, + \hyperpage{80} + \item \spxentry{hashtag\_validator()}\spxextra{nel modulo nest\_backend.gestione}, \hyperpage{75} + + \indexspace + \bigletter I + \item \spxentry{id}\spxextra{nest\_backend.database.tables.Alert attributo}, \hyperpage{76} + \item \spxentry{id}\spxextra{nest\_backend.database.tables.Condition attributo}, \hyperpage{77} + \item \spxentry{id}\spxextra{nest\_backend.database.tables.Notification attributo}, + \hyperpage{77} + \item \spxentry{id}\spxextra{nest\_backend.database.tables.Repository attributo}, \hyperpage{78} + \item \spxentry{identity()}\spxextra{nel modulo nest\_backend.gestione}, \hyperpage{75} + \item \spxentry{image\_url}\spxextra{nest\_backend.database.tables.Tweet attributo}, + \hyperpage{79} + \item \spxentry{insert\_time}\spxextra{nest\_backend.database.tables.Tweet attributo}, + \hyperpage{79} + \item \spxentry{is\_active}\spxextra{nest\_backend.database.tables.Repository attributo}, + \hyperpage{78} + \item \spxentry{is\_coordinate\_inside\_bounding\_box()}\spxextra{nel modulo nest\_crawler}, + \hyperpage{81} + \item \spxentry{is\_deleted}\spxextra{nest\_backend.database.tables.Repository attributo}, + \hyperpage{78} + \item \spxentry{is\_repo\_alert\_triggered()}\spxextra{nel modulo nest\_crawler}, \hyperpage{81} + \item \spxentry{isAdmin}\spxextra{nest\_backend.database.tables.User attributo}, \hyperpage{79} + + \indexspace + \bigletter J + \item \spxentry{json\_error()}\spxextra{nel modulo nest\_backend.gestione}, \hyperpage{75} + \item \spxentry{json\_request\_authorizer()}\spxextra{nel modulo nest\_backend.gestione}, + \hyperpage{75} + \item \spxentry{json\_success()}\spxextra{nel modulo nest\_backend.gestione}, \hyperpage{75} + + \indexspace + \bigletter L + \item \spxentry{limit}\spxextra{nest\_backend.database.tables.Alert attributo}, \hyperpage{76} + \item \spxentry{location}\spxextra{nest\_backend.database.tables.ConditionType attributo}, + \hyperpage{80} + \item \spxentry{location}\spxextra{nest\_backend.database.tables.Tweet attributo}, \hyperpage{78} + + \indexspace + \bigletter M + \item \spxentry{MadeOf}\spxextra{classe built\sphinxhyphen{}in}, \hyperpage{72} + \item \spxentry{MadeOf}\spxextra{classe in nest\_backend.database.tables}, \hyperpage{79} + \item \spxentry{modulo} + \subitem \spxentry{nest\_backend}, \hyperpage{75} + \subitem \spxentry{nest\_backend.database}, \hyperpage{76} + \subitem \spxentry{nest\_backend.database.base}, \hyperpage{76} + \subitem \spxentry{nest\_backend.database.tables}, \hyperpage{76} + \subitem \spxentry{nest\_backend.gestione}, \hyperpage{75} + \subitem \spxentry{nest\_crawler}, \hyperpage{81} + + \indexspace + \bigletter N + \item \spxentry{name}\spxextra{nest\_backend.database.tables.Alert attributo}, \hyperpage{76} + \item \spxentry{name}\spxextra{nest\_backend.database.tables.Repository attributo}, + \hyperpage{78} + \item \spxentry{nest\_backend} + \subitem \spxentry{modulo}, \hyperpage{75} + \item \spxentry{nest\_backend.database} + \subitem \spxentry{modulo}, \hyperpage{76} + \item \spxentry{nest\_backend.database.base} + \subitem \spxentry{modulo}, \hyperpage{76} + \item \spxentry{nest\_backend.database.tables} + \subitem \spxentry{modulo}, \hyperpage{76} + \item \spxentry{nest\_backend.gestione} + \subitem \spxentry{modulo}, \hyperpage{75} + \item \spxentry{nest\_crawler} + \subitem \spxentry{modulo}, \hyperpage{81} + \item \spxentry{Notification}\spxextra{classe built\sphinxhyphen{}in}, \hyperpage{72} + \item \spxentry{Notification}\spxextra{classe in nest\_backend.database.tables}, \hyperpage{77} + \item \spxentry{notifications}\spxextra{nest\_backend.database.tables.Alert attributo}, + \hyperpage{76} + \item \spxentry{NotImplementedError()}\spxextra{classe}, \hyperpage{83} + + \indexspace + \bigletter O + \item \spxentry{OperationType}\spxextra{classe in nest\_backend.database.tables}, \hyperpage{80} + \item \spxentry{ora}\spxextra{nest\_backend.database.tables.Notification attributo}, + \hyperpage{78} + \item \spxentry{owner}\spxextra{nest\_backend.database.tables.Repository attributo}, + \hyperpage{78} + \item \spxentry{owner\_id}\spxextra{nest\_backend.database.tables.Repository attributo}, + \hyperpage{78} + \item \spxentry{owner\_of}\spxextra{nest\_backend.database.tables.User attributo}, \hyperpage{79} + + \indexspace + \bigletter P + \item \spxentry{password}\spxextra{nest\_backend.database.tables.User attributo}, \hyperpage{79} + \item \spxentry{place}\spxextra{nest\_backend.database.tables.ConditionType attributo}, + \hyperpage{80} + \item \spxentry{place}\spxextra{nest\_backend.database.tables.Tweet attributo}, \hyperpage{78} + \item \spxentry{post\_time}\spxextra{nest\_backend.database.tables.Tweet attributo}, + \hyperpage{79} + \item \spxentry{poster}\spxextra{nest\_backend.database.tables.Tweet attributo}, \hyperpage{78} + + \indexspace + \bigletter R + \item \spxentry{repositories}\spxextra{nest\_backend.database.tables.Tweet attributo}, + \hyperpage{79} + \item \spxentry{Repository}\spxextra{classe built\sphinxhyphen{}in}, \hyperpage{72} + \item \spxentry{Repository}\spxextra{classe in nest\_backend.database.tables}, \hyperpage{78} + \item \spxentry{repository}\spxextra{nest\_backend.database.tables.Alert attributo}, + \hyperpage{76} + \item \spxentry{repository}\spxextra{nest\_backend.database.tables.Authorization attributo}, + \hyperpage{76} + \item \spxentry{repository}\spxextra{nest\_backend.database.tables.Composed attributo}, + \hyperpage{77} + \item \spxentry{repository}\spxextra{nest\_backend.database.tables.Condition attributo}, + \hyperpage{77} + \item \spxentry{repository\_auth()}\spxextra{nel modulo nest\_backend.gestione}, \hyperpage{75} + \item \spxentry{repository\_id}\spxextra{nest\_backend.database.tables.Alert attributo}, + \hyperpage{76} + \item \spxentry{repository\_id}\spxextra{nest\_backend.database.tables.Condition attributo}, + \hyperpage{77} + \item \spxentry{ResultError()}\spxextra{classe}, \hyperpage{84} + \item \spxentry{rid}\spxextra{nest\_backend.database.tables.Authorization attributo}, + \hyperpage{76} + \item \spxentry{rid}\spxextra{nest\_backend.database.tables.Composed attributo}, \hyperpage{77} + + \indexspace + \bigletter S + \item \spxentry{search\_repo\_conditions()}\spxextra{nel modulo nest\_crawler}, \hyperpage{81} + \item \spxentry{send\_notification\_email()}\spxextra{nel modulo nest\_crawler}, \hyperpage{81} + \item \spxentry{send\_notification\_tweet()}\spxextra{nel modulo nest\_crawler}, \hyperpage{81} + \item \spxentry{SerializationError()}\spxextra{classe}, \hyperpage{84} + \item \spxentry{ServerNotConfiguredError()}\spxextra{classe}, \hyperpage{83} + \item \spxentry{snowflake}\spxextra{nest\_backend.database.tables.Composed attributo}, + \hyperpage{77} + \item \spxentry{snowflake}\spxextra{nest\_backend.database.tables.Contains attributo}, + \hyperpage{77} + \item \spxentry{snowflake}\spxextra{nest\_backend.database.tables.Tweet attributo}, + \hyperpage{78} + \item \spxentry{start}\spxextra{nest\_backend.database.tables.Repository attributo}, + \hyperpage{78} + + \indexspace + \bigletter T + \item \spxentry{time}\spxextra{nest\_backend.database.tables.ConditionType attributo}, + \hyperpage{80} + \item \spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Alert metodo}, \hyperpage{76} + \item \spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Authorization metodo}, + \hyperpage{76} + \item \spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Condition metodo}, + \hyperpage{77} + \item \spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Notification metodo}, + \hyperpage{78} + \item \spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Repository metodo}, + \hyperpage{78} + \item \spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Tweet metodo}, \hyperpage{79} + \item \spxentry{to\_json()}\spxextra{nest\_backend.database.tables.User metodo}, \hyperpage{79} + \item \spxentry{Tweet}\spxextra{classe built\sphinxhyphen{}in}, \hyperpage{73} + \item \spxentry{Tweet}\spxextra{classe in nest\_backend.database.tables}, \hyperpage{78} + \item \spxentry{tweet}\spxextra{nest\_backend.database.tables.Composed attributo}, \hyperpage{77} + \item \spxentry{tweet}\spxextra{nest\_backend.database.tables.Contains attributo}, \hyperpage{77} + \item \spxentry{tweets}\spxextra{nest\_backend.database.tables.Condition attributo}, + \hyperpage{77} + \item \spxentry{tweets}\spxextra{nest\_backend.database.tables.Repository attributo}, + \hyperpage{78} + \item \spxentry{type}\spxextra{nest\_backend.database.tables.Condition attributo}, \hyperpage{77} + + \indexspace + \bigletter U + \item \spxentry{User}\spxextra{classe built\sphinxhyphen{}in}, \hyperpage{73} + \item \spxentry{User}\spxextra{classe in nest\_backend.database.tables}, \hyperpage{79} + \item \spxentry{user}\spxextra{nest\_backend.database.tables.Authorization attributo}, + \hyperpage{76} + \item \spxentry{user}\spxextra{nest\_backend.database.tables.ConditionType attributo}, + \hyperpage{80} + \item \spxentry{username}\spxextra{nest\_backend.database.tables.User attributo}, \hyperpage{79} + + \indexspace + \bigletter V + \item \spxentry{ViewNotAllowedError()}\spxextra{classe}, \hyperpage{83} + + \indexspace + \bigletter W + \item \spxentry{window\_size}\spxextra{nest\_backend.database.tables.Alert attributo}, + \hyperpage{76} + +\end{sphinxtheindex} diff --git a/docs/build/latex/nest.out b/docs/build/latex/nest.out new file mode 100644 index 0000000..6a6219f --- /dev/null +++ b/docs/build/latex/nest.out @@ -0,0 +1,96 @@ +\BOOKMARK [0][-]{chapter.1}{\376\377\000I\000l\000\040\000p\000r\000o\000g\000e\000t\000t\000o\000\040\000i\000n\000\040\000b\000r\000e\000v\000e}{}% 1 +\BOOKMARK [1][-]{section.1.1}{\376\377\000S\000u\000d\000d\000i\000v\000i\000s\000i\000o\000n\000e\000\040\000i\000n\000\040\000m\000o\000d\000u\000l\000i}{chapter.1}% 2 +\BOOKMARK [1][-]{section.1.2}{\376\377\000S\000c\000r\000e\000e\000n\000s\000h\000o\000t\000s}{chapter.1}% 3 +\BOOKMARK [0][-]{chapter.2}{\376\377\000I\000n\000s\000t\000a\000l\000l\000a\000z\000i\000o\000n\000e}{}% 4 +\BOOKMARK [1][-]{section.2.1}{\376\377\000P\000r\000e\000r\000e\000q\000u\000i\000s\000i\000t\000i}{chapter.2}% 5 +\BOOKMARK [1][-]{section.2.2}{\376\377\000C\000r\000e\000a\000r\000e\000\040\000u\000n\000\040\000n\000u\000o\000v\000o\000\040\000u\000t\000e\000n\000t\000e}{chapter.2}% 6 +\BOOKMARK [1][-]{section.2.3}{\376\377\000S\000c\000a\000r\000i\000c\000a\000r\000e\000\040\000i\000l\000\040\000c\000o\000d\000i\000c\000e\000\040\000s\000o\000r\000g\000e\000n\000t\000e}{chapter.2}% 7 +\BOOKMARK [1][-]{section.2.4}{\376\377\000C\000r\000e\000a\000r\000e\000\040\000i\000l\000\040\000d\000a\000t\000a\000b\000a\000s\000e}{chapter.2}% 8 +\BOOKMARK [1][-]{section.2.5}{\376\377\000C\000r\000e\000a\000r\000e\000\040\000u\000n\000\040\000f\000i\000l\000e\000\040\000d\000i\000\040\000c\000o\000n\000f\000i\000g\000u\000r\000a\000z\000i\000o\000n\000e\000\040\000p\000e\000r\000\040\000i\000l\000\040\000b\000a\000c\000k\000e\000n\000d}{chapter.2}% 9 +\BOOKMARK [1][-]{section.2.6}{\376\377\000I\000n\000s\000t\000a\000l\000l\000a\000r\000e\000\040\000l\000e\000\040\000d\000i\000p\000e\000n\000d\000e\000n\000z\000e\000\040\000P\000y\000t\000h\000o\000n}{chapter.2}% 10 +\BOOKMARK [1][-]{section.2.7}{\376\377\000I\000n\000s\000t\000a\000l\000l\000a\000r\000e\000\040\000l\000e\000\040\000d\000i\000p\000e\000n\000d\000e\000n\000z\000e\000\040\000N\000o\000d\000e\000J\000S}{chapter.2}% 11 +\BOOKMARK [1][-]{section.2.8}{\376\377\000C\000r\000e\000a\000r\000e\000\040\000u\000n\000\040\000s\000e\000r\000v\000i\000z\000i\000o\000\040\000S\000y\000s\000t\000e\000m\000D\000\040\000p\000e\000r\000\040\000i\000l\000\040\000b\000a\000c\000k\000e\000n\000d}{chapter.2}% 12 +\BOOKMARK [1][-]{section.2.9}{\376\377\000C\000o\000m\000p\000i\000l\000a\000r\000e\000\040\000i\000l\000\040\000f\000r\000o\000n\000t\000e\000n\000d}{chapter.2}% 13 +\BOOKMARK [1][-]{section.2.10}{\376\377\000C\000r\000e\000a\000r\000e\000\040\000u\000n\000\040\000s\000e\000r\000v\000i\000z\000i\000o\000\040\000S\000y\000s\000t\000e\000m\000D\000\040\000p\000e\000r\000\040\000i\000l\000\040\000f\000r\000o\000n\000t\000e\000n\000d}{chapter.2}% 14 +\BOOKMARK [1][-]{section.2.11}{\376\377\000C\000r\000e\000a\000r\000e\000\040\000u\000n\000\040\000s\000e\000r\000v\000i\000z\000i\000o\000\040\000S\000y\000s\000t\000e\000m\000D\000\040\000p\000e\000r\000\040\000i\000l\000\040\000c\000r\000a\000w\000l\000e\000r}{chapter.2}% 15 +\BOOKMARK [1][-]{section.2.12}{\376\377\000C\000o\000n\000f\000i\000g\000u\000r\000a\000r\000e\000\040\000i\000l\000\040\000c\000r\000a\000w\000l\000e\000r}{chapter.2}% 16 +\BOOKMARK [1][-]{section.2.13}{\376\377\000C\000r\000e\000a\000r\000e\000\040\000u\000n\000\040\000t\000i\000m\000e\000r\000\040\000S\000y\000s\000t\000e\000m\000D\000\040\000p\000e\000r\000\040\000i\000l\000\040\000c\000r\000a\000w\000l\000e\000r}{chapter.2}% 17 +\BOOKMARK [1][-]{section.2.14}{\376\377\000C\000o\000n\000f\000i\000g\000u\000r\000a\000r\000e\000\040\000A\000p\000a\000c\000h\000e\000\040\000c\000o\000m\000e\000\040\000r\000e\000v\000e\000r\000s\000e\000\040\000p\000r\000o\000x\000y}{chapter.2}% 18 +\BOOKMARK [0][-]{chapter.3}{\376\377\000A\000g\000g\000i\000o\000r\000n\000a\000m\000e\000n\000t\000o}{}% 19 +\BOOKMARK [0][-]{chapter.4}{\376\377\000I\000n\000t\000r\000o\000d\000u\000z\000i\000o\000n\000e}{}% 20 +\BOOKMARK [1][-]{section.4.1}{\376\377\000O\000b\000i\000e\000t\000t\000i\000v\000o}{chapter.4}% 21 +\BOOKMARK [1][-]{section.4.2}{\376\377\000C\000a\000m\000p\000o\000\040\000d\000i\000\040\000a\000p\000p\000l\000i\000c\000a\000z\000i\000o\000n\000e}{chapter.4}% 22 +\BOOKMARK [1][-]{section.4.3}{\376\377\000C\000a\000r\000a\000t\000t\000e\000r\000i\000s\000t\000i\000c\000h\000e\000\040\000d\000e\000g\000l\000i\000\040\000u\000t\000e\000n\000t\000i}{chapter.4}% 23 +\BOOKMARK [1][-]{section.4.4}{\376\377\000G\000l\000o\000s\000s\000a\000r\000i\000o}{chapter.4}% 24 +\BOOKMARK [1][-]{section.4.5}{\376\377\000M\000a\000c\000r\000o\000-\000f\000u\000n\000z\000i\000o\000n\000a\000l\000i\000t\000\340}{chapter.4}% 25 +\BOOKMARK [1][-]{section.4.6}{\376\377\000C\000a\000s\000i\000\040\000d\000\047\000u\000s\000o}{chapter.4}% 26 +\BOOKMARK [1][-]{section.4.7}{\376\377\000B\000a\000c\000k\000l\000o\000g\000\040\000g\000e\000n\000e\000r\000a\000l\000e}{chapter.4}% 27 +\BOOKMARK [0][-]{chapter.5}{\376\377\000S\000t\000r\000u\000m\000e\000n\000t\000i\000\040\000u\000t\000i\000l\000i\000z\000z\000a\000t\000i}{}% 28 +\BOOKMARK [0][-]{chapter.6}{\376\377\000P\000r\000o\000c\000e\000s\000s\000o\000\040\000d\000i\000\040\000s\000v\000i\000l\000u\000p\000p\000o}{}% 29 +\BOOKMARK [1][-]{section.6.1}{\376\377\000R\000u\000o\000l\000i}{chapter.6}% 30 +\BOOKMARK [1][-]{section.6.2}{\376\377\000S\000p\000r\000i\000n\000t}{chapter.6}% 31 +\BOOKMARK [2][-]{subsection.6.2.1}{\376\377\000S\000p\000r\000i\000n\000t\000\040\0000\000:\000\040\0000\0004\000\040\000A\000p\000r\000\040\000-\000\040\0001\0008\000\040\000A\000p\000r}{section.6.2}% 32 +\BOOKMARK [3][-]{subsubsection.6.2.1.1}{\376\377\000C\000o\000n\000s\000e\000g\000n\000a}{subsection.6.2.1}% 33 +\BOOKMARK [3][-]{subsubsection.6.2.1.2}{\376\377\000D\000e\000f\000i\000n\000i\000t\000i\000o\000n\000\040\000o\000f\000\040\000R\000e\000a\000d\000y}{subsection.6.2.1}% 34 +\BOOKMARK [3][-]{subsubsection.6.2.1.3}{\376\377\000D\000e\000f\000i\000n\000i\000t\000i\000o\000n\000\040\000o\000f\000\040\000D\000o\000n\000e}{subsection.6.2.1}% 35 +\BOOKMARK [3][-]{subsubsection.6.2.1.4}{\376\377\000S\000t\000a\000t\000i\000s\000t\000i\000c\000h\000e}{subsection.6.2.1}% 36 +\BOOKMARK [3][-]{subsubsection.6.2.1.5}{\376\377\000S\000p\000r\000i\000n\000t\000\040\000R\000e\000t\000r\000o\000s\000p\000e\000c\000t\000i\000v\000e}{subsection.6.2.1}% 37 +\BOOKMARK [3][-]{subsubsection.6.2.1.6}{\376\377\000S\000p\000r\000i\000n\000t\000\040\000R\000e\000v\000i\000e\000w}{subsection.6.2.1}% 38 +\BOOKMARK [3][-]{subsubsection.6.2.1.7}{\376\377\000A\000r\000t\000e\000f\000a\000t\000t\000i}{subsection.6.2.1}% 39 +\BOOKMARK [3][-]{subsubsection.6.2.1.8}{\376\377\000R\000e\000g\000i\000s\000t\000r\000o\000\040\000a\000t\000t\000i\000v\000i\000t\000\340}{subsection.6.2.1}% 40 +\BOOKMARK [3][-]{subsubsection.6.2.1.9}{\376\377\000R\000i\000s\000u\000l\000t\000a\000t\000i\000\040\000d\000e\000l\000l\000a\000\040\000p\000a\000r\000t\000i\000t\000a\000\040\000d\000i\000\040\000S\000c\000r\000u\000m\000b\000l\000e}{subsection.6.2.1}% 41 +\BOOKMARK [2][-]{subsection.6.2.2}{\376\377\000S\000p\000r\000i\000n\000t\000\040\0001\000:\000\040\0001\0009\000\040\000A\000p\000r\000\040\000-\000\040\0000\0002\000\040\000M\000a\000g}{section.6.2}% 42 +\BOOKMARK [3][-]{subsubsection.6.2.2.1}{\376\377\000C\000o\000n\000s\000e\000g\000n\000a}{subsection.6.2.2}% 43 +\BOOKMARK [3][-]{subsubsection.6.2.2.2}{\376\377\000G\000o\000a\000l}{subsection.6.2.2}% 44 +\BOOKMARK [3][-]{subsubsection.6.2.2.3}{\376\377\000D\000e\000f\000i\000n\000i\000t\000i\000o\000n\000\040\000o\000f\000\040\000R\000e\000a\000d\000y}{subsection.6.2.2}% 45 +\BOOKMARK [3][-]{subsubsection.6.2.2.4}{\376\377\000D\000e\000f\000i\000n\000i\000t\000i\000o\000n\000\040\000o\000f\000\040\000D\000o\000n\000e}{subsection.6.2.2}% 46 +\BOOKMARK [3][-]{subsubsection.6.2.2.5}{\376\377\000S\000t\000a\000t\000i\000s\000t\000i\000c\000h\000e}{subsection.6.2.2}% 47 +\BOOKMARK [3][-]{subsubsection.6.2.2.6}{\376\377\000S\000p\000r\000i\000n\000t\000\040\000R\000e\000t\000r\000o\000s\000p\000e\000c\000t\000i\000v\000e}{subsection.6.2.2}% 48 +\BOOKMARK [3][-]{subsubsection.6.2.2.7}{\376\377\000S\000p\000r\000i\000n\000t\000\040\000R\000e\000v\000i\000e\000w}{subsection.6.2.2}% 49 +\BOOKMARK [3][-]{subsubsection.6.2.2.8}{\376\377\000V\000a\000l\000u\000t\000a\000z\000i\000o\000n\000e\000\040\000s\000u\000l\000\040\000d\000e\000b\000i\000t\000o\000\040\000t\000e\000c\000n\000i\000c\000o}{subsection.6.2.2}% 50 +\BOOKMARK [3][-]{subsubsection.6.2.2.9}{\376\377\000V\000a\000l\000u\000t\000a\000z\000i\000o\000n\000e\000\040\000s\000u\000l\000l\000e\000\040\000U\000s\000e\000r\000\040\000S\000t\000o\000r\000i\000e\000s}{subsection.6.2.2}% 51 +\BOOKMARK [3][-]{subsubsection.6.2.2.10}{\376\377\000R\000e\000g\000i\000s\000t\000r\000o\000\040\000a\000t\000t\000i\000v\000i\000t\000\340}{subsection.6.2.2}% 52 +\BOOKMARK [2][-]{subsection.6.2.3}{\376\377\000S\000p\000r\000i\000n\000t\000\040\0002\000:\000\040\0000\0003\000\040\000M\000a\000g\000\040\000-\000\040\0001\0006\000\040\000M\000a\000g}{section.6.2}% 53 +\BOOKMARK [3][-]{subsubsection.6.2.3.1}{\376\377\000C\000o\000n\000s\000e\000g\000n\000a}{subsection.6.2.3}% 54 +\BOOKMARK [3][-]{subsubsection.6.2.3.2}{\376\377\000G\000o\000a\000l}{subsection.6.2.3}% 55 +\BOOKMARK [3][-]{subsubsection.6.2.3.3}{\376\377\000D\000e\000f\000i\000n\000i\000t\000i\000o\000n\000\040\000o\000f\000\040\000R\000e\000a\000d\000y}{subsection.6.2.3}% 56 +\BOOKMARK [3][-]{subsubsection.6.2.3.4}{\376\377\000D\000e\000f\000i\000n\000i\000t\000i\000o\000n\000\040\000o\000f\000\040\000D\000o\000n\000e}{subsection.6.2.3}% 57 +\BOOKMARK [3][-]{subsubsection.6.2.3.5}{\376\377\000S\000t\000a\000t\000i\000s\000t\000i\000c\000h\000e}{subsection.6.2.3}% 58 +\BOOKMARK [3][-]{subsubsection.6.2.3.6}{\376\377\000S\000p\000r\000i\000n\000t\000\040\000R\000e\000t\000r\000o\000s\000p\000e\000c\000t\000i\000v\000e}{subsection.6.2.3}% 59 +\BOOKMARK [3][-]{subsubsection.6.2.3.7}{\376\377\000S\000p\000r\000i\000n\000t\000\040\000R\000e\000v\000i\000e\000w}{subsection.6.2.3}% 60 +\BOOKMARK [3][-]{subsubsection.6.2.3.8}{\376\377\000R\000e\000g\000i\000s\000t\000r\000o\000\040\000a\000t\000t\000i\000v\000i\000t\000\340}{subsection.6.2.3}% 61 +\BOOKMARK [2][-]{subsection.6.2.4}{\376\377\000S\000p\000r\000i\000n\000t\000\040\0003\000:\000\040\0001\0007\000\040\000M\000a\000g\000\040\000-\000\040\0003\0000\000\040\000M\000a\000g}{section.6.2}% 62 +\BOOKMARK [3][-]{subsubsection.6.2.4.1}{\376\377\000C\000o\000n\000s\000e\000g\000n\000a}{subsection.6.2.4}% 63 +\BOOKMARK [3][-]{subsubsection.6.2.4.2}{\376\377\000G\000o\000a\000l}{subsection.6.2.4}% 64 +\BOOKMARK [3][-]{subsubsection.6.2.4.3}{\376\377\000G\000r\000o\000o\000m\000i\000n\000g\000\040\000s\000e\000s\000s\000i\000o\000n}{subsection.6.2.4}% 65 +\BOOKMARK [3][-]{subsubsection.6.2.4.4}{\376\377\000D\000e\000f\000i\000n\000i\000t\000i\000o\000n\000\040\000o\000f\000\040\000R\000e\000a\000d\000y}{subsection.6.2.4}% 66 +\BOOKMARK [3][-]{subsubsection.6.2.4.5}{\376\377\000D\000e\000f\000i\000n\000i\000t\000i\000o\000n\000\040\000o\000f\000\040\000D\000o\000n\000e}{subsection.6.2.4}% 67 +\BOOKMARK [3][-]{subsubsection.6.2.4.6}{\376\377\000S\000t\000a\000t\000i\000s\000t\000i\000c\000h\000e}{subsection.6.2.4}% 68 +\BOOKMARK [3][-]{subsubsection.6.2.4.7}{\376\377\000F\000i\000n\000a\000l\000\040\000R\000e\000t\000r\000o\000s\000p\000e\000c\000t\000i\000v\000e}{subsection.6.2.4}% 69 +\BOOKMARK [3][-]{subsubsection.6.2.4.8}{\376\377\000D\000e\000m\000o}{subsection.6.2.4}% 70 +\BOOKMARK [3][-]{subsubsection.6.2.4.9}{\376\377\000R\000e\000g\000i\000s\000t\000r\000o\000\040\000a\000t\000t\000i\000v\000i\000t\000\340}{subsection.6.2.4}% 71 +\BOOKMARK [1][-]{section.6.3}{\376\377\000B\000u\000r\000n\000d\000o\000w\000n\000\040\000c\000h\000a\000r\000t\000\040\000c\000o\000m\000p\000l\000e\000s\000s\000i\000v\000a}{chapter.6}% 72 +\BOOKMARK [0][-]{chapter.7}{\376\377\000A\000r\000t\000e\000f\000a\000t\000t\000i}{}% 73 +\BOOKMARK [1][-]{section.7.1}{\376\377\000D\000i\000a\000g\000r\000a\000m\000m\000i\000\040\000U\000M\000L}{chapter.7}% 74 +\BOOKMARK [1][-]{section.7.2}{\376\377\000D\000e\000m\000o}{chapter.7}% 75 +\BOOKMARK [2][-]{subsection.7.2.1}{\376\377\000V\000i\000d\000e\000o}{section.7.2}% 76 +\BOOKMARK [2][-]{subsection.7.2.2}{\376\377\000I\000n\000t\000e\000r\000a\000t\000t\000i\000v\000a}{section.7.2}% 77 +\BOOKMARK [0][-]{chapter.8}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n\000i}{}% 78 +\BOOKMARK [0][-]{chapter.9}{\376\377\000S\000u\000g\000g\000e\000r\000i\000m\000e\000n\000t\000i\000\040\000r\000e\000l\000a\000t\000i\000v\000i\000\040\000a\000l\000\040\000c\000o\000r\000s\000o}{}% 79 +\BOOKMARK [0][-]{chapter.10}{\376\377\000M\000e\000t\000a\000-\000d\000o\000c\000u\000m\000e\000n\000t\000a\000z\000i\000o\000n\000e}{}% 80 +\BOOKMARK [1][-]{section.10.1}{\376\377\000C\000o\000m\000p\000i\000l\000a\000z\000i\000o\000n\000e\000\040\000c\000o\000n\000\040\000I\000n\000t\000e\000l\000l\000i\000J\000\040\000I\000D\000E\000A}{chapter.10}% 81 +\BOOKMARK [1][-]{section.10.2}{\376\377\000C\000o\000m\000p\000i\000l\000a\000z\000i\000o\000n\000e\000\040\000c\000o\000n\000\040\000G\000N\000U\000\040\000M\000a\000k\000e}{chapter.10}% 82 +\BOOKMARK [1][-]{section.10.3}{\376\377\000C\000o\000m\000p\000i\000l\000a\000z\000i\000o\000n\000e\000\040\000c\000o\000n\000\040\000W\000i\000n\000d\000o\000w\000s\000\040\000P\000o\000w\000e\000r\000s\000h\000e\000l\000l}{chapter.10}% 83 +\BOOKMARK [0][-]{chapter.11}{\376\377\000S\000t\000r\000u\000t\000t\000u\000r\000a\000\040\000d\000e\000l\000\040\000d\000a\000t\000a\000b\000a\000s\000e}{}% 84 +\BOOKMARK [0][-]{chapter.12}{\376\377\000n\000e\000s\000t\000\137\000b\000a\000c\000k\000e\000n\000d\000\040\000-\000\040\000W\000e\000b\000\040\000A\000P\000I\000\040\000i\000n\000\040\000P\000y\000t\000h\000o\000n}{}% 85 +\BOOKMARK [1][-]{section.12.1}{\376\377\000.\000g\000e\000s\000t\000i\000o\000n\000e\000\040\000-\000\040\000M\000e\000t\000o\000d\000i\000\040\000d\000i\000\040\000u\000t\000i\000l\000i\000t\000y}{chapter.12}% 86 +\BOOKMARK [1][-]{section.12.2}{\376\377\000.\000d\000a\000t\000a\000b\000a\000s\000e\000\040\000-\000\040\000D\000a\000t\000a\000b\000a\000s\000e}{chapter.12}% 87 +\BOOKMARK [2][-]{subsection.12.2.1}{\376\377\000.\000b\000a\000s\000e\000\040\000-\000\040\000E\000s\000t\000e\000n\000s\000i\000o\000n\000e\000\040\000f\000l\000a\000s\000k}{section.12.2}% 88 +\BOOKMARK [2][-]{subsection.12.2.2}{\376\377\000.\000t\000a\000b\000l\000e\000s\000\040\000-\000\040\000T\000a\000b\000e\000l\000l\000e}{section.12.2}% 89 +\BOOKMARK [1][-]{section.12.3}{\376\377\000.\000r\000o\000u\000t\000e\000s\000\040\000-\000\040\000P\000e\000r\000c\000o\000r\000s\000i\000\040\000A\000P\000I}{chapter.12}% 90 +\BOOKMARK [0][-]{chapter.13}{\376\377\000n\000e\000s\000t\000\137\000c\000r\000a\000w\000l\000e\000r\000\040\000-\000\040\000C\000r\000a\000w\000l\000e\000r\000\040\000i\000n\000\040\000P\000y\000t\000h\000o\000n}{}% 91 +\BOOKMARK [0][-]{chapter.14}{\376\377\000n\000e\000s\000t\000\137\000f\000r\000o\000n\000t\000e\000n\000d\000\040\000-\000\040\000I\000n\000t\000e\000r\000f\000a\000c\000c\000i\000a\000\040\000u\000t\000e\000n\000t\000e\000\040\000i\000n\000\040\000R\000e\000a\000c\000t}{}% 92 +\BOOKMARK [1][-]{section.14.1}{\376\377\000.\000o\000b\000j\000e\000c\000t\000s\000\040\000-\000\040\000O\000g\000g\000e\000t\000t\000i\000\040\000v\000a\000r\000i\000\040\000d\000i\000\040\000u\000t\000i\000l\000i\000t\000y}{chapter.14}% 93 +\BOOKMARK [0][-]{chapter.15}{\376\377\000A\000l\000t\000r\000i\000\040\000c\000o\000l\000l\000e\000g\000a\000m\000e\000n\000t\000i}{}% 94 +\BOOKMARK [0][-]{section*.208}{\376\377\000I\000n\000d\000i\000c\000e\000\040\000d\000e\000l\000\040\000m\000o\000d\000u\000l\000o\000\040\000P\000y\000t\000h\000o\000n}{}% 95 +\BOOKMARK [0][-]{section*.209}{\376\377\000I\000n\000d\000i\000c\000e}{}% 96 diff --git a/docs/build/latex/nest.pdf b/docs/build/latex/nest.pdf new file mode 100644 index 0000000..4a7acf6 Binary files /dev/null and b/docs/build/latex/nest.pdf differ diff --git a/docs/build/latex/nest.tex b/docs/build/latex/nest.tex new file mode 100644 index 0000000..b05dc5f --- /dev/null +++ b/docs/build/latex/nest.tex @@ -0,0 +1,8884 @@ +%% Generated by Sphinx. +\def\sphinxdocclass{report} +\documentclass[letterpaper,10pt,italian]{sphinxmanual} +\ifdefined\pdfpxdimen + \let\sphinxpxdimen\pdfpxdimen\else\newdimen\sphinxpxdimen +\fi \sphinxpxdimen=.75bp\relax + +\PassOptionsToPackage{warn}{textcomp} +\usepackage[utf8]{inputenc} +\ifdefined\DeclareUnicodeCharacter +% support both utf8 and utf8x syntaxes + \ifdefined\DeclareUnicodeCharacterAsOptional + \def\sphinxDUC#1{\DeclareUnicodeCharacter{"#1}} + \else + \let\sphinxDUC\DeclareUnicodeCharacter + \fi + \sphinxDUC{00A0}{\nobreakspace} + \sphinxDUC{2500}{\sphinxunichar{2500}} + \sphinxDUC{2502}{\sphinxunichar{2502}} + \sphinxDUC{2514}{\sphinxunichar{2514}} + \sphinxDUC{251C}{\sphinxunichar{251C}} + \sphinxDUC{2572}{\textbackslash} +\fi +\usepackage{cmap} +\usepackage[T1]{fontenc} +\usepackage{amsmath,amssymb,amstext} +\usepackage{babel} + + + +\usepackage{times} +\expandafter\ifx\csname T@LGR\endcsname\relax +\else +% LGR was declared as font encoding + \substitutefont{LGR}{\rmdefault}{cmr} + \substitutefont{LGR}{\sfdefault}{cmss} + \substitutefont{LGR}{\ttdefault}{cmtt} +\fi +\expandafter\ifx\csname T@X2\endcsname\relax + \expandafter\ifx\csname T@T2A\endcsname\relax + \else + % T2A was declared as font encoding + \substitutefont{T2A}{\rmdefault}{cmr} + \substitutefont{T2A}{\sfdefault}{cmss} + \substitutefont{T2A}{\ttdefault}{cmtt} + \fi +\else +% X2 was declared as font encoding + \substitutefont{X2}{\rmdefault}{cmr} + \substitutefont{X2}{\sfdefault}{cmss} + \substitutefont{X2}{\ttdefault}{cmtt} +\fi + + +\usepackage[Sonny]{fncychap} +\ChNameVar{\Large\normalfont\sffamily} +\ChTitleVar{\Large\normalfont\sffamily} +\usepackage{sphinx} + +\fvset{fontsize=\small} +\usepackage{geometry} + + +% Include hyperref last. +\usepackage{hyperref} +% Fix anchor placement for figures with captions. +\usepackage{hypcap}% it must be loaded after hyperref. +% Set up styles of URL: it should be placed after hyperref. +\urlstyle{same} + +\addto\captionsitalian{\renewcommand{\contentsname}{Manuale utente}} + +\usepackage{sphinxmessages} +\setcounter{tocdepth}{3} +\setcounter{secnumdepth}{3} + + +\title{N.E.S.T.\@{}} +\date{30 mag 2021} +\release{0.1.0} +\author{Gruppo 2} +\newcommand{\sphinxlogo}{\vbox{}} +\renewcommand{\releasename}{Release} +\makeindex +\begin{document} + +\ifdefined\shorthandoff + \ifnum\catcode`\=\string=\active\shorthandoff{=}\fi + \ifnum\catcode`\"=\active\shorthandoff{"}\fi +\fi + +\pagestyle{empty} +\sphinxmaketitle +\pagestyle{plain} +\sphinxtableofcontents +\pagestyle{normal} +\phantomsection\label{\detokenize{index::doc}} + + +\sphinxAtStartPar +Benvenuto alla documentazione di N.E.S.T.! + + +\chapter{Il progetto in breve} +\label{\detokenize{guide/about:il-progetto-in-breve}}\label{\detokenize{guide/about::doc}} +\sphinxAtStartPar +\sphinxstylestrong{N.E.S.T.} (Noi Estraiamo Statistiche Tweet) è un progetto realizzato nel 2021 per +l\textquotesingle{}\sphinxstylestrong{esame di Progetto del Software} del corso di Informatica all\textquotesingle{}Unimore. + + +\section{Suddivisione in moduli} +\label{\detokenize{guide/about:suddivisione-in-moduli}} +\sphinxAtStartPar +Il progetto è composto da tre parti: +\begin{description} +\item[{{\hyperref[\detokenize{code/crawler/index:module-nest_crawler}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{nest\_crawler}}}}}}] \leavevmode +\sphinxAtStartPar +Un modulo scritto in \sphinxhref{https://www.python.org/}{Python} usando \sphinxcode{\sphinxupquote{tweepy}} che recupera tweet attraverso la \sphinxhref{https://developer.twitter.com/en/docs/twitter-api}{Twitter API} secondo le +condizioni presenti all\textquotesingle{}interno del database e li salva per future elaborazioni. + +\item[{{\hyperref[\detokenize{code/backend/index:module-nest_backend}]{\sphinxcrossref{\sphinxcode{\sphinxupquote{nest\_backend}}}}}}] \leavevmode +\sphinxAtStartPar +Un web server scritto in \sphinxhref{https://www.python.org/}{Python} usando il framework \sphinxhref{https://flask.palletsprojects.com/en/1.1.x/api/\#module-flask}{\sphinxcode{\sphinxupquote{flask}}} che fornisce un\textquotesingle{}API HTTP per visualizzare e +manipolare i dati dell\textquotesingle{}applicazione, gestendo autenticazione, autorizzazione e comunicazione con il database. + +\item[{\sphinxcode{\sphinxupquote{nest\_frontend}}}] \leavevmode +\sphinxAtStartPar +Una applicazione web scritta in \sphinxhref{https://reactjs.org/docs/introducing-jsx.html}{JSX} usando il framework \sphinxcode{\sphinxupquote{react}} che comunica con il backend, mostrando +all\textquotesingle{}utente i dati del backend in una formato immediatamente comprensibile. + +\end{description} + + +\section{Screenshots} +\label{\detokenize{guide/about:screenshots}} +\noindent\sphinxincludegraphics{{frontendDashboard}.png} + +\noindent\sphinxincludegraphics{{frontendRepositoryCreate}.png} + +\noindent\sphinxincludegraphics{{frontendAnalysis}.png} + +\noindent\sphinxincludegraphics{{frontendRepositoryShare}.png} + +\noindent\sphinxincludegraphics{{frontendAlertCreate}.png} + + +\chapter{Installazione} +\label{\detokenize{guide/installation:installazione}}\label{\detokenize{guide/installation::doc}} +\sphinxAtStartPar +Questa guida illustra come installare interamente N.E.S.T. su un server Linux. + + +\section{Prerequisiti} +\label{\detokenize{guide/installation:prerequisiti}} +\sphinxAtStartPar +Per installare ed eseguire N.E.S.T., è necessario: +\begin{itemize} +\item {} +\sphinxAtStartPar +Una connessione a Internet + +\item {} +\sphinxAtStartPar +Un sistema operativo Linux\sphinxhyphen{}based (preferibilmente \sphinxhref{https://wiki.archlinux.org/title/Main\_page}{Arch Linux}) + +\item {} +\sphinxAtStartPar +\sphinxhref{https://www.freedesktop.org/wiki/Software/systemd/}{SystemD \textasciicircum{}248.2} + +\item {} +\sphinxAtStartPar +\sphinxhref{https://httpd.apache.org/}{Apache HTTP Server \textasciicircum{}2.4.46} + +\item {} +\sphinxAtStartPar +\sphinxhref{https://www.postgresql.org/download/}{PostgreSQL \textasciicircum{}13.2} + +\item {} +\sphinxAtStartPar +\sphinxhref{https://git-scm.com/}{Git \textasciicircum{}2.31.1} + +\item {} +\sphinxAtStartPar +\sphinxhref{https://www.python.org/downloads/}{Python \textasciicircum{}3.8} + +\item {} +\sphinxAtStartPar +\sphinxhref{https://python-poetry.org/}{Poetry \textasciicircum{}1.0} + +\item {} +\sphinxAtStartPar +\sphinxhref{https://nodejs.org/}{NodeJS \textasciicircum{}16.0} + +\item {} +\sphinxAtStartPar +\sphinxhref{https://www.npmjs.com/}{npm \textasciicircum{}7.13.0} + +\item {} +\sphinxAtStartPar +Un mail server (interno o esterno) che supporti +l\textquotesingle{}\sphinxhref{https://it.wikipedia.org/wiki/Simple\_Mail\_Transfer\_Protocol}{SMTP} + +\end{itemize} + + +\section{Creare un nuovo utente} +\label{\detokenize{guide/installation:creare-un-nuovo-utente}} +\sphinxAtStartPar +Per motivi di sicurezza, si suggerisce di creare un nuovo utente con il quale eseguire il progetto: + +\begin{sphinxadmonition}{note}{Nota:} +\sphinxAtStartPar +È necessario essere amministratori di sistema per eseguire i seguenti comandi. +Si veda il manuale di \sphinxhref{https://linux.die.net/man/8/useradd}{useradd} per più dettagli. +\end{sphinxadmonition} + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }mkdir \PYGZhy{}\PYGZhy{}parents /srv/nest +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }useradd \PYGZhy{}\PYGZhy{}home\PYGZhy{}dir /srv/nest \PYGZhy{}\PYGZhy{}shell /bin/bash nest +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }chown \PYGZhy{}\PYGZhy{}recursive nest: /srv/nest +\end{sphinxVerbatim} + + +\section{Scaricare il codice sorgente} +\label{\detokenize{guide/installation:scaricare-il-codice-sorgente}} +\sphinxAtStartPar +Per installare N.E.S.T., è necessario avere il codice sorgente disponibile sul server. + +\sphinxAtStartPar +Si consiglia di scaricarlo tramite \sphinxstyleemphasis{Git}: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{nest:\PYGZti{}\PYGZdl{} }git clone https://gitlab.steffo.eu/nest/g2\PYGZhy{}progetto.git +\end{sphinxVerbatim} + +\sphinxAtStartPar +Questo creerà una nuova cartella \sphinxcode{\sphinxupquote{g2\sphinxhyphen{}progetto}} nella directory in cui è stato eseguito il comando. + +\sphinxAtStartPar +Per proseguire, sarà necessario entrarvi: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{nest:\PYGZti{}\PYGZdl{} }\PYG{n+nb}{cd} g2\PYGZhy{}progetto +\end{sphinxVerbatim} + + +\section{Creare il database} +\label{\detokenize{guide/installation:creare-il-database}} +\sphinxAtStartPar +N.E.S.T. necessita di un database PostgreSQL in cui salvare i dati. + +\sphinxAtStartPar +Per motivi di sicurezza, si suggerisce di creare un ruolo isolato dal resto del DBMS apposta per N.E.S.T.: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{postgres:\PYGZti{}\PYGZdl{} }createuser nest +\end{sphinxVerbatim} + +\sphinxAtStartPar +Per creare il database PostgreSQL, si esegua: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{postgres:\PYGZti{}\PYGZdl{} }createdb \PYGZhy{}\PYGZhy{}owner\PYG{o}{=}nest nest +\end{sphinxVerbatim} + + +\section{Creare un file di configurazione per il backend} +\label{\detokenize{guide/installation:creare-un-file-di-configurazione-per-il-backend}} +\sphinxAtStartPar +Il backend usa un file di configurazione per impostare alcune variabili. + +\sphinxAtStartPar +Si crei un nuovo file nella working directory del progetto denominato \sphinxcode{\sphinxupquote{config.py}}: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{nest:\PYGZti{}/g2\PYGZhy{}progetto\PYGZdl{} }vim config.py +\end{sphinxVerbatim} + +\sphinxAtStartPar +Il file dovrà avere i seguenti contenuti: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{c+c1}{\PYGZsh{} Una stringa rappresentante il database da utilizzare} +\PYG{c+c1}{\PYGZsh{} Per maggiori informazioni sulla sintassi, si veda https://docs.sqlalchemy.org/en/14/core/engines.html} +\PYG{n}{SQLALCHEMY\PYGZus{}DATABASE\PYGZus{}URI} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{postgresql://nest@/nest}\PYG{l+s+s2}{\PYGZdq{}} + +\PYG{c+c1}{\PYGZsh{} Una stringa casuale utilizzata per generare i JSON Web Token (JWT)} +\PYG{c+c1}{\PYGZsh{} Va mantenuta segreta e costante per tutta l\PYGZsq{}operazione del backend!} +\PYG{c+c1}{\PYGZsh{} Si suggerisce di premere tasti casuali sulla tastiera finchè la riga non è piena.} +\PYG{n}{SECRET\PYGZus{}KEY} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}}\PYG{l+s+s2}{dsjiofgvinmodfiojvbnio3erfnoiweraqugu43ghjwrevniuwerng43iugnreuwignhritmj43i43nb8i42ug0wevkwovmwigtjj}\PYG{l+s+s2}{\PYGZdq{}} +\end{sphinxVerbatim} + + +\section{Installare le dipendenze Python} +\label{\detokenize{guide/installation:installare-le-dipendenze-python}} +\sphinxAtStartPar +Le dipendenze Python sono gestite da \sphinxstyleemphasis{Poetry}, e possono essere installate con: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{nest:\PYGZti{}/g2\PYGZhy{}progetto\PYGZdl{} }poetry install +\end{sphinxVerbatim} + +\sphinxAtStartPar +Poetry creerà automaticamente un \sphinxhref{https://docs.python.org/3/library/venv.html}{venv} e vi installerà all\textquotesingle{}interno tutti +i pacchetti necessari all\textquotesingle{}esecuzione del backend e del crawler di N.E.S.T. . + +\sphinxAtStartPar +\sphinxstylestrong{Si suggerisce di ricordare il nome del venv creato da Poetry}, in quanto sarà necessario per +{\hyperref[\detokenize{guide/installation:creare-un-servizio-systemd-per-il-backend}]{\sphinxcrossref{\DUrole{std,std-ref}{Creare un servizio SystemD per il backend}}}}: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+go}{Creating virtualenv nest\PYGZhy{}7C2fm2VD\PYGZhy{}py3.9 in /srv/nest/.cache/pypoetry/virtualenvs} +\end{sphinxVerbatim} + + +\section{Installare le dipendenze NodeJS} +\label{\detokenize{guide/installation:installare-le-dipendenze-nodejs}} +\sphinxAtStartPar +Le dipendenze NodeJS sono gestite da \sphinxstyleemphasis{npm}, e possono essere installate con: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{nest:\PYGZti{}/g2\PYGZhy{}progetto\PYGZdl{} }npm install +\end{sphinxVerbatim} + +\sphinxAtStartPar +npm creerà automaticamente una cartella +\sphinxhref{https://docs.npmjs.com/cli/v7/configuring-npm/folders\#node-modules}{node\_modules} e vi installerà all\textquotesingle{}interno tutte +le librerie necessarie all\textquotesingle{}esecuzione del frontend di N.E.S.T. . + + +\section{Creare un servizio SystemD per il backend} +\label{\detokenize{guide/installation:creare-un-servizio-systemd-per-il-backend}} +\sphinxAtStartPar +Per fare in modo che il backend rimanga attivo in background, anche dopo un riavvio, si suggerisce di installarlo come +servizio di sistema di \sphinxstyleemphasis{SystemD}: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl edit \PYGZhy{}\PYGZhy{}force \PYGZhy{}\PYGZhy{}full nest\PYGZhy{}backend +\end{sphinxVerbatim} + +\sphinxAtStartPar +Inserire all\textquotesingle{}interno del file le seguenti direttive: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +[Unit] +Description=N.E.S.T. Backend +Wants=network\PYGZhy{}online.target postgresql.service +After=network\PYGZhy{}online.target nss\PYGZhy{}lookup.target postgresql.service + +[Service] +Type=exec +User=nest +Group=nest +WorkingDirectory=/srv/nest/g2\PYGZhy{}progetto + +\PYGZsh{} Si sostituisca a questo il percorso del virtualenv creato in precedenza da Poetry +\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ +ExecStart=/srv/nest/.cache/pypoetry/virtualenvs/nest\PYGZhy{}7C2fm2VD\PYGZhy{}py3.9/bin/python \PYGZhy{}m gunicorn \PYGZhy{}b 127.0.0.1:30040 \PYGZhy{}\PYGZhy{}env=\PYGZdq{}FLASK\PYGZus{}CONFIG=../config.py\PYGZdq{} nest\PYGZus{}backend.app:rp\PYGZus{}app + +[Install] +WantedBy=multi\PYGZhy{}user.target +\end{sphinxVerbatim} + +\sphinxAtStartPar +Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl start nest\PYGZhy{}backend +\end{sphinxVerbatim} + +\sphinxAtStartPar +In caso di successo, l\textquotesingle{}API dovrebbe essere esposto sulla porta \sphinxcode{\sphinxupquote{30040}} dell\textquotesingle{}indirizzo di loopback \sphinxcode{\sphinxupquote{127.0.0.1}}: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }curl \PYG{l+m}{127}.0.0.1:30040/doa +\PYG{g+go}{If you see this, the server is fine.} +\end{sphinxVerbatim} + +\sphinxAtStartPar +Si abiliti il servizio, in modo che venga automaticamente avviato al riavvio del sistema: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl \PYG{n+nb}{enable} nest\PYGZhy{}backend +\end{sphinxVerbatim} + + +\section{Compilare il frontend} +\label{\detokenize{guide/installation:compilare-il-frontend}} +\sphinxAtStartPar +Perchè sia possibile servire il frontend agli utenti, è necessario prima crearne una versione compilata ottimizzata. + +\sphinxAtStartPar +È possibile farlo con il comando: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{nest:\PYGZti{}/g2\PYGZhy{}progetto\PYGZdl{} }npm run build +\end{sphinxVerbatim} + +\sphinxAtStartPar +Verrà creata una cartella \sphinxcode{\sphinxupquote{build}} con all\textquotesingle{}interno la versione compilata. + + +\section{Creare un servizio SystemD per il frontend} +\label{\detokenize{guide/installation:creare-un-servizio-systemd-per-il-frontend}} +\sphinxAtStartPar +Per rendere disponibile alla rete la copia locale del frontend, si suggerisce di avviare lo script npm \sphinxcode{\sphinxupquote{serve}} +integrato con N.E.S.T. come un servizio di sistema di \sphinxstyleemphasis{SystemD}: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl edit \PYGZhy{}\PYGZhy{}force \PYGZhy{}\PYGZhy{}full nest\PYGZhy{}frontend +\end{sphinxVerbatim} + +\sphinxAtStartPar +Inserire all\textquotesingle{}interno del file le seguenti direttive: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +[Unit] +Description=N.E.S.T. Frontend +Wants=network\PYGZhy{}online.target nest\PYGZhy{}backend.service +After=network\PYGZhy{}online.target nss\PYGZhy{}lookup.target nest\PYGZhy{}backend.service + +[Service] +Type=exec +Environment=NODE\PYGZus{}ENV=production +User=nest +Group=nest +WorkingDirectory=/srv/nest/g2\PYGZhy{}progetto +ExecStart=/usr/bin/npm run serve + +[Install] +WantedBy=multi\PYGZhy{}user.target +\end{sphinxVerbatim} + +\begin{sphinxadmonition}{warning}{Avvertimento:} +\sphinxAtStartPar +Questo file non è stato testato, in quanto sul server demo è in uso una versione più complessa che usa +\sphinxhref{https://github.com/nvm-sh/nvm}{nvm} per gestire più versioni di NodeJS sullo stesso sistema. + +\sphinxAtStartPar +La versione in uso sul server demo è: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +[Unit] +Description=N.E.S.T. Frontend +Wants=network\PYGZhy{}online.target nest\PYGZhy{}backend.service +After=network\PYGZhy{}online.target nss\PYGZhy{}lookup.target nest\PYGZhy{}backend.service + +[Service] +Type=exec +Environment=NODE\PYGZus{}ENV=production +Environment=NODE\PYGZus{}VERSION=16 +User=nest +Group=nest +WorkingDirectory=/srv/nest/g2\PYGZhy{}progetto +ExecStart=/srv/nest/.nvm/nvm\PYGZhy{}exec npm run serve + +[Install] +WantedBy=multi\PYGZhy{}user.target +\end{sphinxVerbatim} +\end{sphinxadmonition} + +\sphinxAtStartPar +Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl start nest\PYGZhy{}frontend +\end{sphinxVerbatim} + +\sphinxAtStartPar +In caso di successo, il frontend dovrebbe essere esposto sulla porta \sphinxcode{\sphinxupquote{30041}} dell\textquotesingle{}indirizzo di loopback \sphinxcode{\sphinxupquote{127.0.0.1}}: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }curl \PYG{l+m}{127}.0.0.1:30041 +\PYG{g+go}{[...]} +\end{sphinxVerbatim} + +\sphinxAtStartPar +Si abiliti il servizio, in modo che venga automaticamente avviato al riavvio del sistema: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl \PYG{n+nb}{enable} nest\PYGZhy{}frontend +\end{sphinxVerbatim} + + +\section{Creare un servizio SystemD per il crawler} +\label{\detokenize{guide/installation:creare-un-servizio-systemd-per-il-crawler}} +\sphinxAtStartPar +Perchè i repository vengano popolati di Tweet, è necessario configurare il crawler come servizio di \sphinxstyleemphasis{SystemD}: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl edit \PYGZhy{}\PYGZhy{}force \PYGZhy{}\PYGZhy{}full nest\PYGZhy{}crawler +\end{sphinxVerbatim} + +\sphinxAtStartPar +All\textquotesingle{}interno del file, inserire le seguenti direttive: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +[Unit] +Description=N.E.S.T. Crawler +Wants=network\PYGZhy{}online.target nest\PYGZhy{}backend.service +After=network\PYGZhy{}online.target nss\PYGZhy{}lookup.target nest\PYGZhy{}backend.service + +[Service] +Type=exec +Environment=FLASK\PYGZus{}CONFIG=../config.py +User=nest +Group=nest +WorkingDirectory=/srv/nest/g2\PYGZhy{}progetto +\PYGZsh{} Si sostituisca a questo il percorso del virtualenv creato in precedenza da Poetry +\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ +ExecStart=/srv/nest/.cache/pypoetry/virtualenvs/nest\PYGZhy{}7C2fm2VD\PYGZhy{}py3.9/bin/python \PYGZhy{}m nest\PYGZus{}crawler + +[Install] +WantedBy=multi\PYGZhy{}user.target +\end{sphinxVerbatim} + + +\section{Configurare il crawler} +\label{\detokenize{guide/installation:configurare-il-crawler}} +\begin{sphinxadmonition}{note}{Nota:} +\sphinxAtStartPar +Per utilizzare gli API di Twitter, è necessario essere approvati dal supporto tecnico di Twitter. + +\sphinxAtStartPar +È dunque necessario \sphinxhref{https://developer.twitter.com/en/apply-for-access}{fare richiesta}, e sarà possibile +procedere con l\textquotesingle{}installazione solo una volta ricevute le credenziali per l\textquotesingle{}utilizzo. +\end{sphinxadmonition} + +\sphinxAtStartPar +Per impostare le variabili di ambiente richieste dal crawler, si suggerisce di creare un \sphinxstyleemphasis{file di override} di SystemD: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl edit nest\PYGZhy{}crawler +\end{sphinxVerbatim} + +\sphinxAtStartPar +All\textquotesingle{}interno del file, inserire le seguenti direttive: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +[Service] + +\PYGZsh{} Sostituire a questi caratteri la Consumer Key ricevuta da Twitter +\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ +Environment=C\PYGZus{}K=0000000000000000000000000 + + +\PYGZsh{} Sostituire a questi caratteri il Consumer Secret ricevuto da Twitter +\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ +Environment=C\PYGZus{}S=00000000000000000000000000000000000000000000000000 + +\PYGZsh{} Sostituire a questi caratteri l\PYGZsq{}Access Token ricevuto da Twitter +\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ +Environment=A\PYGZus{}T=00000000000000000000000000000000000000000000000000 + +\PYGZsh{} Sostituire a questi caratteri l\PYGZsq{}Access Token Secret ricevuto da Twitter +\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ +Environment=A\PYGZus{}T\PYGZus{}S=000000000000000000000000000000000000000000000 + +\PYGZsh{} Sostituire con l\PYGZsq{}indirizzo del proprio SMTP mail server +\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓ +Environment=SMTP\PYGZus{}HOST=mail.gandi.net + +\PYGZsh{} Sostituire con le proprie credenziali dell\PYGZsq{}SMTP mail server +\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓ +Environment=SMTP\PYGZus{}USERNAME=bot@ryg.one +\PYGZsh{} ↓↓↓↓↓↓↓↓ +Environment=SMTP\PYGZus{}PASSWORD=password + +\PYGZsh{} Sostituire con l\PYGZsq{}email da cui si desidera che vengano inviate le allerte +\PYGZsh{} ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ +Environment=SMTP\PYGZus{}FROM\PYGZus{}EMAIL=nest\PYGZhy{}bot@ryg.one +\end{sphinxVerbatim} + +\sphinxAtStartPar +Ora, si verifichi che il servizio si avvii correttamente eseguendolo manualmente con: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl start nest\PYGZhy{}crawler +\end{sphinxVerbatim} + +\sphinxAtStartPar +Nel log di sistema non dovrebbe comparire nessun errore: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }journalctl nest\PYGZhy{}crawler +\end{sphinxVerbatim} + + +\section{Creare un timer SystemD per il crawler} +\label{\detokenize{guide/installation:creare-un-timer-systemd-per-il-crawler}} +\sphinxAtStartPar +Per fare in modo che il crawler venga eseguito periodicamente, si suggerisce di configurare un timer SystemD: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl edit \PYGZhy{}\PYGZhy{}force \PYGZhy{}\PYGZhy{}full nest\PYGZhy{}crawler.timer +\end{sphinxVerbatim} + +\sphinxAtStartPar +Si inseriscano all\textquotesingle{}interno del file le seguenti direttive: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +[Unit] +Description=Run nest\PYGZhy{}crawler every 60 minutes + +[Timer] +OnBootSec=60min +OnUnitActiveSec=60min +Unit=nest\PYGZhy{}crawler.service + +[Install] +WantedBy=timers.target +\end{sphinxVerbatim} + +\sphinxAtStartPar +Ora, si verifichi che il timer si avvii correttamente eseguendolo manualmente con: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl start nest\PYGZhy{}crawler.timer +\end{sphinxVerbatim} + +\sphinxAtStartPar +Nello stato del timer non dovrebbe comparire nessun errore: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl status nest\PYGZhy{}crawler.timer +\end{sphinxVerbatim} + +\sphinxAtStartPar +Si abiliti il timer, in modo che venga automaticamente avviato al riavvio del sistema: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl \PYG{n+nb}{enable} nest\PYGZhy{}crawler.timer +\end{sphinxVerbatim} + + +\section{Configurare Apache come reverse proxy} +\label{\detokenize{guide/installation:configurare-apache-come-reverse-proxy}} +\sphinxAtStartPar +Per rendere l\textquotesingle{}API e il frontend disponibili al pubblico, si suggerisce di configurare Apache HTTP Server +come reverse proxy. + +\sphinxAtStartPar +La configurazione di Apache varia molto da distribuzione a distribuzione Linux, e talvolta anche da server a server; +pertanto, si fornisce solamente un file \sphinxhref{https://httpd.apache.org/docs/2.4/vhosts/examples.html}{VirtualHost} di +esempio da adattare al proprio setup: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{n+nt}{\PYGZlt{}VirtualHost} \PYG{l+s}{*:80}\PYG{n+nt}{\PYGZgt{}} + \PYG{n+nb}{ServerName} \PYG{l+s+s2}{\PYGZdq{}api.nest.steffo.eu\PYGZdq{}} + \PYG{n+nb}{ServerName} \PYG{l+s+s2}{\PYGZdq{}prod.nest.steffo.eu\PYGZdq{}} + + \PYG{n+nb}{RewriteEngine} \PYG{k}{On} + \PYG{n+nb}{RewriteRule} \PYGZca{}(.*)\PYGZdl{} https://\PYGZpc{}\PYGZob{}HTTP\PYGZus{}HOST\PYGZcb{}\PYGZdl{}1 [R=301,L] +\PYG{n+nt}{\PYGZlt{}/VirtualHost}\PYG{n+nt}{\PYGZgt{}} + +\PYG{n+nt}{\PYGZlt{}VirtualHost} \PYG{l+s}{*:443}\PYG{n+nt}{\PYGZgt{}} + \PYG{n+nb}{ServerName} \PYG{l+s+s2}{\PYGZdq{}api.nest.steffo.eu\PYGZdq{}} + + \PYG{n+nb}{SSLEngine} \PYG{k}{on} + \PYG{n+nb}{SSLCertificateFile} \PYG{l+s+s2}{\PYGZdq{}/root/.acme.sh/*.nest.steffo.eu/fullchain.cer\PYGZdq{}} + \PYG{n+nb}{SSLCertificateKeyFile} \PYG{l+s+s2}{\PYGZdq{}/root/.acme.sh/*.nest.steffo.eu/*.nest.steffo.eu.key\PYGZdq{}} + + \PYG{n+nb}{ProxyPass} \PYG{l+s+s2}{\PYGZdq{}/\PYGZdq{}} \PYG{l+s+s2}{\PYGZdq{}http://127.0.0.1:30040/\PYGZdq{}} + \PYG{n+nb}{ProxyPassReverse} \PYG{l+s+s2}{\PYGZdq{}/\PYGZdq{}} \PYG{l+s+s2}{\PYGZdq{}http://127.0.0.1:30040/\PYGZdq{}} + \PYG{n+nb}{RequestHeader} set \PYG{l+s+s2}{\PYGZdq{}X\PYGZhy{}Forwarded\PYGZhy{}Proto\PYGZdq{}} expr=\PYGZpc{}\PYGZob{}REQUEST\PYGZus{}SCHEME\PYGZcb{} + + \PYG{n+nb}{Protocols} h2 http/1.1 + \PYG{n+nb}{Header} always set Strict\PYGZhy{}Transport\PYGZhy{}Security \PYG{l+s+s2}{\PYGZdq{}max\PYGZhy{}age=63072000\PYGZdq{}} +\PYG{n+nt}{\PYGZlt{}/VirtualHost}\PYG{n+nt}{\PYGZgt{}} + +\PYG{n+nt}{\PYGZlt{}VirtualHost} \PYG{l+s}{*:443}\PYG{n+nt}{\PYGZgt{}} + \PYG{n+nb}{ServerName} \PYG{l+s+s2}{\PYGZdq{}prod.nest.steffo.eu\PYGZdq{}} + + \PYG{n+nb}{SSLEngine} \PYG{k}{on} + \PYG{n+nb}{SSLCertificateFile} \PYG{l+s+s2}{\PYGZdq{}/root/.acme.sh/*.nest.steffo.eu/fullchain.cer\PYGZdq{}} + \PYG{n+nb}{SSLCertificateKeyFile} \PYG{l+s+s2}{\PYGZdq{}/root/.acme.sh/*.nest.steffo.eu/*.nest.steffo.eu.key\PYGZdq{}} + + \PYG{n+nb}{ProxyPass} \PYG{l+s+s2}{\PYGZdq{}/\PYGZdq{}} \PYG{l+s+s2}{\PYGZdq{}http://127.0.0.1:30041/\PYGZdq{}} + \PYG{n+nb}{ProxyPassReverse} \PYG{l+s+s2}{\PYGZdq{}/\PYGZdq{}} \PYG{l+s+s2}{\PYGZdq{}http://127.0.0.1:30041/\PYGZdq{}} + \PYG{n+nb}{RequestHeader} set \PYG{l+s+s2}{\PYGZdq{}X\PYGZhy{}Forwarded\PYGZhy{}Proto\PYGZdq{}} expr=\PYGZpc{}\PYGZob{}REQUEST\PYGZus{}SCHEME\PYGZcb{} + + \PYG{n+nb}{Protocols} h2 http/1.1 + \PYG{n+nb}{Header} always set Strict\PYGZhy{}Transport\PYGZhy{}Security \PYG{l+s+s2}{\PYGZdq{}max\PYGZhy{}age=63072000\PYGZdq{}} +\PYG{n+nt}{\PYGZlt{}/VirtualHost}\PYG{n+nt}{\PYGZgt{}} +\end{sphinxVerbatim} + + +\chapter{Aggiornamento} +\label{\detokenize{guide/updating:aggiornamento}}\label{\detokenize{guide/updating::doc}} +\sphinxAtStartPar +Per scaricare gli aggiornamenti di N.E.S.T. si esegua il seguente comando nella directory del codice sorgente: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{nest:g2\PYGZhy{}progetto\PYGZdl{} }git pull +\end{sphinxVerbatim} + +\sphinxAtStartPar +Si aggiornino poi tutte le dipendenze: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{nest:g2\PYGZhy{}progetto\PYGZdl{} }poetry install +\PYG{g+gp}{nest:g2\PYGZhy{}progetto\PYGZdl{} }npm install +\end{sphinxVerbatim} + +\sphinxAtStartPar +Si ricompili il frontend: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{nest:g2\PYGZhy{}progetto\PYGZdl{} }npm build +\end{sphinxVerbatim} + +\sphinxAtStartPar +In seguito, si riavviino tutti i servizi di N.E.S.T.: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl restart nest\PYGZhy{}frontend nest\PYGZhy{}backend nest\PYGZhy{}crawler nest\PYGZhy{}crawler.timer +\end{sphinxVerbatim} + +\sphinxAtStartPar +Si verifichi infine il corretto avvio di tutti i servizi: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{root:\PYGZti{}\PYGZsh{} }systemctl status nest\PYGZhy{}frontend nest\PYGZhy{}backend nest\PYGZhy{}crawler nest\PYGZhy{}crawler.timer +\end{sphinxVerbatim} + + +\chapter{Introduzione} +\label{\detokenize{development/goals:introduzione}}\label{\detokenize{development/goals::doc}} + +\section{Obiettivo} +\label{\detokenize{development/goals:obiettivo}} +\sphinxAtStartPar +L\textquotesingle{}obiettivo del progetto è la creazione di un software per fornire l\textquotesingle{}aggregazione e l\textquotesingle{}analisi di \sphinxhref{https://help.twitter.com/it/using-twitter\#tweets}{Tweet}, in modo da +rilevare eventi \sphinxstyleemphasis{macroscopici}, \sphinxstyleemphasis{locali} o più semplicemente filtrarli in base a delle \sphinxstyleemphasis{keyword}. + +\sphinxAtStartPar +Il prodotto sarà utilizzato dal cliente e da un piccolo gruppo di suoi dipendenti per effettuare ricerche statistiche. + +\sphinxAtStartPar +Il software andrà ad integrarsi direttamente con \sphinxhref{https://twitter.com/}{Twitter}, da cui verranno raccolti dati e su cui verranno pubblicate +allerte su di essi. + + +\section{Campo di applicazione} +\label{\detokenize{development/goals:campo-di-applicazione}} +\sphinxAtStartPar +Il software trova utilizzo principalmente in \sphinxstylestrong{ambito statistico}, essendo il suo scopo quello di raccogliere dati e +permettere di analizzarli tramite un\textquotesingle{}interfaccia grafica. + + +\section{Caratteristiche degli utenti} +\label{\detokenize{development/goals:caratteristiche-degli-utenti}} +\sphinxAtStartPar +Il software potrà essere utilizzato da utenti con una discreta esperienza nell\textquotesingle{}analisi di dati ma senza particolari +conoscenze informatiche. + + +\section{Glossario} +\label{\detokenize{development/goals:glossario}}\begin{description} +\item[{Repository}] \leavevmode +\sphinxAtStartPar +Raccolta di tweet che soddisfano determinate condizioni. + +\item[{Condizione}] \leavevmode +\sphinxAtStartPar +Predicato logico che deve essere soddisfatto da un tweet per essere raccolto in fase di raccolta dati, o per essere +contato in fase di allertamento utente. + +\item[{Filtro}] \leavevmode +\sphinxAtStartPar +Predicato logico che deve essere soddisfatto da un tweet per essere visualizzato in fase di analisi dati. + +\item[{Allarme}] \leavevmode +\sphinxAtStartPar +Notifica inviata all\textquotesingle{}utente attraverso un mezzo telematico, come email oppure un tweet. + +\item[{Utente}] \leavevmode +\sphinxAtStartPar +Utilizzatore del software con un proprio account creato dall\textquotesingle{}amministratore della piattaforma. + +\sphinxAtStartPar +In particolare, la piattaforma prevederà due tipologie di utenti: +\begin{description} +\item[{Utente regolare}] \leavevmode +\sphinxAtStartPar +Potranno eseguire attività di creazione, analisi, condivisione, archiviazione ed eliminazione dei propri repository. + +\item[{Utente amministratore}] \leavevmode +\sphinxAtStartPar +Potrà effettuare tutte le attività dell\textquotesingle{}utente regolare, e in aggiunta potrà creare ed eliminare nuovi utenti +regolari. + +\end{description} + +\end{description} + + +\section{Macro\sphinxhyphen{}funzionalità} +\label{\detokenize{development/goals:macro-funzionalita}} +\sphinxAtStartPar +Il software permetterà di selezionare \sphinxstylestrong{condizioni} con cui scegliere quali tweet raccogliere: +\begin{itemize} +\item {} +\sphinxAtStartPar +in base ai loro \sphinxhref{https://help.twitter.com/it/using-twitter/how-to-use-hashtags}{hashtag} + +\item {} +\sphinxAtStartPar +in base al loro autore + +\item {} +\sphinxAtStartPar +in base alla loro \sphinxhref{https://help.twitter.com/en/safety-and-security/tweet-location-settings}{posizione geografica} (ove presente) + +\item {} +\sphinxAtStartPar +in base alla loro data di pubblicazione + +\end{itemize} + +\sphinxAtStartPar +Selezionate le condizioni, l\textquotesingle{}utente potrà creare una \sphinxstylestrong{repository}: una cartella in cui verranno raccolti i tweet +soddisfacenti le condizioni richieste. + +\sphinxAtStartPar +Una volta raccolti, i tweet di una repository potranno essere \sphinxstylestrong{analizzati} in qualsiasi momento: durante l\textquotesingle{}analisi, +saranno mostrate statistiche e grafici relativi ai tweet. + +\sphinxAtStartPar +La raccolta potrà essere interrotta in qualsiasi momento \sphinxstylestrong{archiviando} il repository. + +\sphinxAtStartPar +Sarà possibile \sphinxstylestrong{condividere} una repository con altri utenti della piattaforma, permettendo loro di analizzarla. + +\sphinxAtStartPar +Infine, l\textquotesingle{}utente potrà configurare una repository in modo che gli invii una \sphinxstylestrong{allerta} qualora vengano raccolti un dato +numero di tweet in una certa \sphinxstyleemphasis{finestra temporale}. + + +\section{Casi d\textquotesingle{}uso} +\label{\detokenize{development/goals:casi-d-uso}} +\sphinxAtStartPar +N.E.S.T. prevede tre tipologie di \sphinxstyleemphasis{agenti} ("utenti" UML): \sphinxstylestrong{utente}, \sphinxstylestrong{amministratore} e \sphinxstylestrong{sistema}. + +\noindent\sphinxincludegraphics{{Utenti}.png} + +\sphinxAtStartPar +I principali casi d’uso individuati durante la progettazione di N.E.S.T. sono: +\begin{itemize} +\item {} +\sphinxAtStartPar +La gestione degli utenti da parte di un Amministratore: + +\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{CasiUso1}.PNG} + +\item {} +\sphinxAtStartPar +La gestione del login da parte di un Utente: + +\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{CasiUso2}.PNG} + +\item {} +\sphinxAtStartPar +La gestione delle Allerte sia dal punto di vista dell’Utente che del Sistema: + +\noindent\sphinxincludegraphics[width=800\sphinxpxdimen]{{CasiUso3}.PNG} + +\item {} +\sphinxAtStartPar +La gestione della raccolta da parte dell\textquotesingle{}utente: + +\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{CasiUso4}.PNG} + +\item {} +\sphinxAtStartPar +La gestione di un repository da parte dell\textquotesingle{}utente: + +\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{CasiUso5}.PNG} + +\item {} +\sphinxAtStartPar +La visualizzazione di un repository: + +\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{CasiUso6}.PNG} + +\end{itemize} + + +\section{Backlog generale} +\label{\detokenize{development/goals:backlog-generale}} +\sphinxAtStartPar +Si riporta qui di seguito il Backlog definito ad inizio progetto, prima dell’avvio dello sviluppo. +Gli elementi dal bordo grigio sono le epiche: + +\begin{sphinxadmonition}{note}{Nota:} +\sphinxAtStartPar +Alcune user story sono state rimosse in seguito al feedback ricevuto durante il primo sprint! +\end{sphinxadmonition} + +\noindent\sphinxincludegraphics{{Backlog1}.PNG} + +\noindent\sphinxincludegraphics{{Backlog2}.PNG} + +\noindent\sphinxincludegraphics{{Backlog3}.PNG} + +\noindent\sphinxincludegraphics{{Backlog4}.PNG} + +\noindent\sphinxincludegraphics{{Backlog5}.PNG} + + +\chapter{Strumenti utilizzati} +\label{\detokenize{development/tools:strumenti-utilizzati}}\label{\detokenize{development/tools::doc}} +\sphinxAtStartPar +Nello sviluppo di N.E.S.T. sono stati usati i seguenti strumenti software: + +\sphinxAtStartPar +\sphinxhref{https://www.jetbrains.com/idea/}{IntelliJ IDEA Ultimate} +\begin{quote} + +\sphinxAtStartPar +IDE multilinguaggio utilizzato per lo sviluppo di tutte le parti di N.E.S.T., per la scrittura della documentazione, +per l\textquotesingle{}esecuzione del testing e per la visualizzazione del coverage, per il refactoring automatico e per l\textquotesingle{}analisi +statica del codice. +\end{quote} + +\sphinxAtStartPar +\sphinxhref{https://git-scm.com/}{Git} +\begin{quote} + +\sphinxAtStartPar +Software di controllo versione utilizzato per tracciare tutte le modifiche al software. +\end{quote} + +\sphinxAtStartPar +\sphinxhref{https://about.gitlab.com/}{GitLab} +\begin{quote} + +\sphinxAtStartPar +Applicazione web self\sphinxhyphen{}hosted per hosting di repository \sphinxhref{https://git-scm.com/}{Git}, utilizzato per ospitare il repository del progetto. + +\begin{sphinxadmonition}{hint}{Suggerimento:} +\sphinxAtStartPar +È accessibile al seguente indirizzo: \sphinxurl{https://gitlab.steffo.eu/} +\end{sphinxadmonition} +\end{quote} + +\sphinxAtStartPar +\sphinxhref{https://www.taiga.io/}{Taiga} +\begin{quote} + +\sphinxAtStartPar +Applicazione web self\sphinxhyphen{}hosted per il Project Management, utilizzata per tracciare lo stato del progetto giorno per +giorno. + +\begin{sphinxadmonition}{hint}{Suggerimento:} +\sphinxAtStartPar +È accessibile al seguente indirizzo: \sphinxurl{https://taiga.steffo.eu/} +\end{sphinxadmonition} +\end{quote} + +\sphinxAtStartPar +\sphinxhref{https://www.sonarqube.org/}{SonarQube} +\begin{quote} + +\sphinxAtStartPar +Applicazione web self\sphinxhyphen{}hosted per l\textquotesingle{}analisi statica e visualizzazione del coverage del software, utilizzata per +il miglioramento della qualità del codice del progetto. + +\begin{sphinxadmonition}{hint}{Suggerimento:} +\sphinxAtStartPar +È accessibile al seguente indirizzo: \sphinxurl{https://sonarqube.steffo.eu/} +\end{sphinxadmonition} +\end{quote} + +\sphinxAtStartPar +\sphinxhref{https://www.figma.com/}{Figma} +\begin{quote} + +\sphinxAtStartPar +Applicazione web centralizzata per la creazione collaborativa di interfacce grafiche moderne. +\end{quote} + +\sphinxAtStartPar +\sphinxhref{https://discord.com/}{Discord} +\begin{quote} + +\sphinxAtStartPar +Piattaforma centralizzata di messaggistica istantanea e chiamate vocali utilizzata per la comunicazione sincrona +tra i membri del team. +\end{quote} + + +\chapter{Processo di sviluppo} +\label{\detokenize{development/process:processo-di-sviluppo}}\label{\detokenize{development/process::doc}} + +\section{Ruoli} +\label{\detokenize{development/process:ruoli}} +\sphinxAtStartPar +Per lavorare più efficientemente, si è assegnato uno o più "ruoli" a ogni membro del team in base alle proprie +competenze. +\begin{quote}\begin{description} +\item[{Stefano Goldoni}] \leavevmode +\sphinxAtStartPar +Product Owner, Tester + +\item[{Flavia Cocca}] \leavevmode +\sphinxAtStartPar +Scrum Master, UI Designer + +\item[{Chiara Calzolari}] \leavevmode +\sphinxAtStartPar +UI Designer, Translator + +\item[{Stefano Pigozzi}] \leavevmode +\sphinxAtStartPar +Frontend Developer, Sysadmin + +\item[{Giovanni Anniballi}] \leavevmode +\sphinxAtStartPar +Lead Tester + +\item[{Giorgio Minoccari}] \leavevmode +\sphinxAtStartPar +Analyst, Crawler Developer + +\item[{Lorenzo Balugani}] \leavevmode +\sphinxAtStartPar +Database Architect, Backend Developer + +\end{description}\end{quote} + +\sphinxAtStartPar +Questi ruoli sono stati usati in maniera \sphinxstylestrong{flessibile}; è capitato infatti moltissime volte che un membro con un ruolo +ne aiutasse un altro con un ruolo diverso: ad esempio, è successo che i Developer aiutassero i Tester indicando loro +particolarità specifiche dei linguaggi di programmazione utilizzati, oppure che gli UI Designer aiutassero nella +scrittura della documentazione. + + +\section{Sprint} +\label{\detokenize{development/process:sprint}} +\sphinxAtStartPar +Lo sviluppo si è svolto in \sphinxstylestrong{4 Sprint} dalla durata di \sphinxstylestrong{2 settimane ciascuno}. + + +\subsection{Sprint 0: 04 Apr \sphinxhyphen{} 18 Apr} +\label{\detokenize{development/sprint0/index:sprint-0-04-apr-18-apr}}\label{\detokenize{development/sprint0/index::doc}} + +\subsubsection{Consegna} +\label{\detokenize{development/sprint0/index:consegna}} +\sphinxAtStartPar +La seguente documentazione è stata fornita dal cliente durante questo sprint: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{0\sphinxhyphen{}initial.pdf}} + +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{0\sphinxhyphen{}sprint\sphinxhyphen{}requirements.pdf}} + +\end{itemize} + + +\subsubsection{Definition of Ready} +\label{\detokenize{development/sprint0/index:definition-of-ready}} +\sphinxAtStartPar +Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri: +\begin{itemize} +\item {} +\sphinxAtStartPar +La User Story è stata compresa ed accettata da tutti i membri + +\item {} +\sphinxAtStartPar +I tester hanno confermato la possibilità di poterla testare + +\item {} +\sphinxAtStartPar +Il Product Owner ha la visione necessaria per definirne la priorità + +\item {} +\sphinxAtStartPar +Il Team è in grado di stimarla + +\item {} +\sphinxAtStartPar +La User Story è indipendente o dipendente da altre a priorità maggiore + +\end{itemize} + + +\subsubsection{Definition of Done} +\label{\detokenize{development/sprint0/index:definition-of-done}} +\sphinxAtStartPar +La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così +definita: +\begin{itemize} +\item {} +\sphinxAtStartPar +Sviluppo completo della funzionalità richiesta + +\item {} +\sphinxAtStartPar +Definizione e superamento dei test + +\item {} +\sphinxAtStartPar +Bozza della documentazione della funzionalità + +\item {} +\sphinxAtStartPar +Merge dei sorgenti nel branch \sphinxcode{\sphinxupquote{main}} del repository Git + +\end{itemize} + + +\subsubsection{Statistiche} +\label{\detokenize{development/sprint0/index:statistiche}} + +\paragraph{Gitinspector} +\label{\detokenize{development/sprint0/index:gitinspector}} +\sphinxAtStartPar +Questa statistica è stata generata dal prof. Marcello Missiroli con +\sphinxhref{https://github.com/ejwa/gitinspector}{Gitinspector} al termine dello Sprint. +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{0\sphinxhyphen{}stats.html}} + +\end{itemize} + + +\subsubsection{Sprint Retrospective} +\label{\detokenize{development/sprint0/index:sprint-retrospective}} +\sphinxAtStartPar +La Sprint Retrospective è disponibile al seguente link: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{0\sphinxhyphen{}retrospective.pdf}} + +\end{itemize} + + +\subsubsection{Sprint Review} +\label{\detokenize{development/sprint0/index:sprint-review}} +\sphinxAtStartPar +Il video di Sprint Review è disponibile al seguente link: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxurl{https://drive.google.com/file/d/12worWEcx-uf2UP4\_lnEOovHZpvR77MsG/view} + +\end{itemize} + + +\subsubsection{Artefatti} +\label{\detokenize{development/sprint0/index:artefatti}} +\sphinxAtStartPar +In questo sprint è stato realizzato un documento con i risultati dell\textquotesingle{}analisi effettuata per realizzare il software: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{0\sphinxhyphen{}result.pdf}} + +\end{itemize} + + +\subsubsection{Registro attività} +\label{\detokenize{development/sprint0/index:registro-attivita}} + +\paragraph{Riunioni collettive} +\label{\detokenize{development/sprint0/index:riunioni-collettive}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Ora +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +10h 6m +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}08 +& +\sphinxAtStartPar +20:45 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Analisi documento di specifiche +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}09 +& +\sphinxAtStartPar +14:15 +& +\sphinxAtStartPar +35m +& +\sphinxAtStartPar +Intervista con il cliente +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}09 +& +\sphinxAtStartPar +15:00 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Resoconto intervista +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}11 +& +\sphinxAtStartPar +15:03 +& +\sphinxAtStartPar +2h 39m +& +\sphinxAtStartPar +Documentazione e planning poker +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}15 +& +\sphinxAtStartPar +18:15 +& +\sphinxAtStartPar +52m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}17 +& +\sphinxAtStartPar +15:05 +& +\sphinxAtStartPar +4h +& +\sphinxAtStartPar +Documentazione e partita a Scrumble +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\paragraph{Attività individuali} +\label{\detokenize{development/sprint0/index:attivita-individuali}} +\begin{sphinxadmonition}{hint}{Suggerimento:} +\sphinxAtStartPar +Per vedere più in dettaglio il lavoro di sviluppo effettuato da ogni membro del gruppo, si suggerisce di +visualizzare il log di Git: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{\PYGZdl{} }git log +\end{sphinxVerbatim} +\end{sphinxadmonition} + + +\subparagraph{Stefano Goldoni} +\label{\detokenize{development/sprint0/index:stefano-goldoni}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +6h 30m +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}08 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +user stories +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}09 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +epic +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}10 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +use cases +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}11 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +use cases +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}14 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +documentazione SRS +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}15 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +documentazione SRS +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}17 +& +\sphinxAtStartPar +1h 30m +& +\sphinxAtStartPar +diagrammi di attività +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Flavia Cocca} +\label{\detokenize{development/sprint0/index:flavia-cocca}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +15h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}08 +& +\sphinxAtStartPar +2h 30m +& +\sphinxAtStartPar +brainstorming Ui +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}10 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +creazione frame in figma con relativo css +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}11 +& +\sphinxAtStartPar +1h 30m +& +\sphinxAtStartPar +mockup UI con relativo css (creazione componenti) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}12 +& +\sphinxAtStartPar +1h 30m +& +\sphinxAtStartPar +mockup UI con relativo css (creazione componenti) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}14 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +mockup UI con relativo css (creazione pagine) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}15 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +mockup UI con relativo css (creazioni pagine) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}16 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +ultimi ritocchi UI +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}17 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +Stesura documentazione partita scrumble +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Chiara Calzolari} +\label{\detokenize{development/sprint0/index:chiara-calzolari}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +12h 30m +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}09 +& +\sphinxAtStartPar +2.5h +& +\sphinxAtStartPar +Brainstorming UI +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}10 +& +\sphinxAtStartPar +1.5h +& +\sphinxAtStartPar +mockup UI con relativo css (dashboard ed elenco repositories) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}11 +& +\sphinxAtStartPar +1.0h +& +\sphinxAtStartPar +mockup UI con relativo css (settings) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}11 +& +\sphinxAtStartPar +0.5h +& +\sphinxAtStartPar +Prima versione del logo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}12 +& +\sphinxAtStartPar +3.0h +& +\sphinxAtStartPar +mockup UI con relativo css (creazione componenti, light/dark mode) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}13 +& +\sphinxAtStartPar +1.0h +& +\sphinxAtStartPar +mockup UI con relativo css (alerts) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}15 +& +\sphinxAtStartPar +1.0h +& +\sphinxAtStartPar +Versione definitiva del logo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}16 +& +\sphinxAtStartPar +0.5h +& +\sphinxAtStartPar +mockup UI con relativo css (Notifications e Share) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}17 +& +\sphinxAtStartPar +1.0h +& +\sphinxAtStartPar +Documentazione Mockup +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}17 +& +\sphinxAtStartPar +0.5h +& +\sphinxAtStartPar +Doppiaggio video di presentazione +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Stefano Pigozzi} +\label{\detokenize{development/sprint0/index:stefano-pigozzi}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +23h 30m +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}08 +& +\sphinxAtStartPar +4h 30m +& +\sphinxAtStartPar +Configurazione Discord e GitLab +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}09 +& +\sphinxAtStartPar +3h 30m +& +\sphinxAtStartPar +Riunione con il cliente e configurazione Taiga +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}10 +& +\sphinxAtStartPar +4h +& +\sphinxAtStartPar +Configurazione Penpot, Taiga, UI Design, progettazione Database +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}11 +& +\sphinxAtStartPar +3h 30m +& +\sphinxAtStartPar +Riunione, configurazione GitLab e project management +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}12 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +Configurazione Twitter e UI Design +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}15 +& +\sphinxAtStartPar +2h 30m +& +\sphinxAtStartPar +Partita a Scrumble e project management +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}16 +& +\sphinxAtStartPar +1h 30m +& +\sphinxAtStartPar +Project management e configurazione SonarQube +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}17 +& +\sphinxAtStartPar +3h 30m +& +\sphinxAtStartPar +Riunione e partita a scrumble +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Giovanni Anniballi} +\label{\detokenize{development/sprint0/index:giovanni-anniballi}} +\begin{sphinxadmonition}{note}{Nota:} +\sphinxAtStartPar +Giovanni ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1. +\end{sphinxadmonition} + + +\subparagraph{Giorgio Minoccari} +\label{\detokenize{development/sprint0/index:giorgio-minoccari}} +\begin{sphinxadmonition}{note}{Nota:} +\sphinxAtStartPar +Giorgio ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1. +\end{sphinxadmonition} + + +\subparagraph{Lorenzo Balugani} +\label{\detokenize{development/sprint0/index:lorenzo-balugani}} +\begin{sphinxadmonition}{note}{Nota:} +\sphinxAtStartPar +Lorenzo ha iniziato a raccogliere dati sul tempo impiegato a partire dallo Sprint 1. +\end{sphinxadmonition} + + +\subsubsection{Risultati della partita di Scrumble} +\label{\detokenize{development/sprint0/index:risultati-della-partita-di-scrumble}}\begin{enumerate} +\sphinxsetlistlabels{\arabic}{enumi}{enumii}{}{.}% +\item {} \begin{quote}\begin{description} +\item[{Goal}] \leavevmode +\sphinxAtStartPar +Learn + +\item[{Question}] \leavevmode +\sphinxAtStartPar +Do team members understand the Scrum roles? + +\item[{Metric}] \leavevmode +\sphinxAtStartPar +Knowledge of Scrum roles by questions + +\item[{Evaluation}] \leavevmode\begin{quote}\begin{description} +\item[{1}] \leavevmode +\sphinxAtStartPar +no idea of the Scrum roles + +\item[{5}] \leavevmode +\sphinxAtStartPar +perfect knowledge of the roles and their jobs + +\end{description}\end{quote} + +\item[{Chiara}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Giorgio}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Giovanni}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Stefano P.}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Lorenzo}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano G.}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Flavia}] \leavevmode +\sphinxAtStartPar +4 + +\end{description}\end{quote} + +\item {} \begin{quote}\begin{description} +\item[{Goal}] \leavevmode +\sphinxAtStartPar +Learn + +\item[{Question}] \leavevmode +\sphinxAtStartPar +Do team members feel they learned the process? + +\item[{Metric}] \leavevmode +\sphinxAtStartPar +Opinions from the participants + +\item[{Evaluation}] \leavevmode\begin{quote}\begin{description} +\item[{1}] \leavevmode +\sphinxAtStartPar +couldn\textquotesingle{}t repeat the game + +\item[{5}] \leavevmode +\sphinxAtStartPar +could play the game as a Scrum Master by himself + +\end{description}\end{quote} + +\item[{Chiara}] \leavevmode +\sphinxAtStartPar +3 + +\item[{Giorgio}] \leavevmode +\sphinxAtStartPar +3 + +\item[{Giovanni}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Stefano P.}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Lorenzo}] \leavevmode +\sphinxAtStartPar +3 + +\item[{Stefano G.}] \leavevmode +\sphinxAtStartPar +3 + +\item[{Flavia}] \leavevmode +\sphinxAtStartPar +3 + +\end{description}\end{quote} + +\item {} \begin{quote}\begin{description} +\item[{Goal}] \leavevmode +\sphinxAtStartPar +Learn + +\item[{Question}] \leavevmode +\sphinxAtStartPar +Does everyone keep up with the other players? + +\item[{Metric}] \leavevmode +\sphinxAtStartPar +Check during every sprint retrospective if every one is on point + +\item[{Evaluation}] \leavevmode\begin{quote}\begin{description} +\item[{1}] \leavevmode +\sphinxAtStartPar +totally lost + +\item[{5}] \leavevmode +\sphinxAtStartPar +leads the game driving the other players + +\end{description}\end{quote} + +\item[{Chiara}] \leavevmode +\sphinxAtStartPar +3 + +\item[{Giorgio}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Giovanni}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Stefano P.}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Lorenzo}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano G.}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Flavia}] \leavevmode +\sphinxAtStartPar +5 + +\end{description}\end{quote} + +\item {} \begin{quote}\begin{description} +\item[{Goal}] \leavevmode +\sphinxAtStartPar +Practice + +\item[{Question}] \leavevmode +\sphinxAtStartPar +Are the game mechanics linear and repeatable? + +\item[{Metric}] \leavevmode +\sphinxAtStartPar +Opinions from the participants + +\item[{Evaluation}] \leavevmode\begin{quote}\begin{description} +\item[{1}] \leavevmode +\sphinxAtStartPar +feels the game is unrepeatable + +\item[{5}] \leavevmode +\sphinxAtStartPar +feels the game could be played in any situation + +\end{description}\end{quote} + +\item[{Chiara}] \leavevmode +\sphinxAtStartPar +1 + +\item[{Giorgio}] \leavevmode +\sphinxAtStartPar +2 + +\item[{Giovanni}] \leavevmode +\sphinxAtStartPar +1 + +\item[{Stefano P.}] \leavevmode +\sphinxAtStartPar +1 + +\item[{Lorenzo}] \leavevmode +\sphinxAtStartPar +1 + +\item[{Stefano G.}] \leavevmode +\sphinxAtStartPar +2 + +\item[{Flavia}] \leavevmode +\sphinxAtStartPar +1 + +\end{description}\end{quote} + +\item {} \begin{quote}\begin{description} +\item[{Goal}] \leavevmode +\sphinxAtStartPar +Practice + +\item[{Question}] \leavevmode +\sphinxAtStartPar +Do team success in completing the game? + +\item[{Metric}] \leavevmode +\sphinxAtStartPar +Number of User Stories completed + +\item[{Evaluation}] \leavevmode\begin{quote}\begin{description} +\item[{1}] \leavevmode +\sphinxAtStartPar +0 to 3 stories + +\item[{2}] \leavevmode +\sphinxAtStartPar +4 to 6 + +\item[{3}] \leavevmode +\sphinxAtStartPar +7 to 9 + +\item[{4}] \leavevmode +\sphinxAtStartPar +10 to 12 + +\item[{5}] \leavevmode +\sphinxAtStartPar +13 to 15 + +\end{description}\end{quote} + +\item[{Chiara}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Giorgio}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Giovanni}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano P.}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Lorenzo}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano G.}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Flavia}] \leavevmode +\sphinxAtStartPar +5 + +\end{description}\end{quote} + +\item {} \begin{quote}\begin{description} +\item[{Goal}] \leavevmode +\sphinxAtStartPar +Practice + +\item[{Question}] \leavevmode +\sphinxAtStartPar +Do team members efficiently estimate during sprint planning? + +\item[{Metric}] \leavevmode +\sphinxAtStartPar +Uniformity in evaluating the size and the priority of user stories + +\item[{Evaluation}] \leavevmode\begin{quote}\begin{description} +\item[{1}] \leavevmode +\sphinxAtStartPar +abnormal difference from the other players + +\item[{5}] \leavevmode +\sphinxAtStartPar +coherent and uniform with the group most of the time + +\end{description}\end{quote} + +\item[{Chiara}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Giorgio}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Giovanni}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano P.}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Lorenzo}] \leavevmode +\sphinxAtStartPar +5 + +\end{description}\end{quote} + +\item {} \begin{quote}\begin{description} +\item[{Goal}] \leavevmode +\sphinxAtStartPar +Cooperation + +\item[{Question}] \leavevmode +\sphinxAtStartPar +Do team members know each other better? + +\item[{Metric}] \leavevmode +\sphinxAtStartPar +Level of players\textquotesingle{} serenity throughout the game + +\item[{Evaluation}] \leavevmode\begin{quote}\begin{description} +\item[{1}] \leavevmode +\sphinxAtStartPar +never speaks with the other players + +\item[{5}] \leavevmode +\sphinxAtStartPar +talks friendly to anyone in every situation + +\end{description}\end{quote} + +\item[{Chiara}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Giorgio}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Giovanni}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano P.}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Lorenzo}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano G.}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Flavia}] \leavevmode +\sphinxAtStartPar +4 + +\end{description}\end{quote} + +\item {} \begin{quote}\begin{description} +\item[{Goal}] \leavevmode +\sphinxAtStartPar +Cooperation + +\item[{Question}] \leavevmode +\sphinxAtStartPar +Does the game let all players cooperate? + +\item[{Metric}] \leavevmode +\sphinxAtStartPar +Contribution of every player during the game + +\item[{Evaluation}] \leavevmode\begin{quote}\begin{description} +\item[{1}] \leavevmode +\sphinxAtStartPar +never puts effort in doing something + +\item[{5}] \leavevmode +\sphinxAtStartPar +every time is willing to understand what is going on + +\end{description}\end{quote} + +\item[{Chiara}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Giorgio}] \leavevmode +\sphinxAtStartPar +3 + +\item[{Giovanni}] \leavevmode +\sphinxAtStartPar +3 + +\item[{Stefano P.}] \leavevmode +\sphinxAtStartPar +2 + +\item[{Lorenzo}] \leavevmode +\sphinxAtStartPar +3 + +\item[{Stefano G.}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Flavia}] \leavevmode +\sphinxAtStartPar +3 + +\end{description}\end{quote} + +\item {} \begin{quote}\begin{description} +\item[{Goal}] \leavevmode +\sphinxAtStartPar +Cooperation + +\item[{Question}] \leavevmode +\sphinxAtStartPar +Do team member consult each other about a topic? + +\item[{Metric}] \leavevmode +\sphinxAtStartPar +Sharing of ideas + +\item[{Evaluation}] \leavevmode\begin{quote}\begin{description} +\item[{1}] \leavevmode +\sphinxAtStartPar +never asks for an opinion + +\item[{5}] \leavevmode +\sphinxAtStartPar +wants to discuss about every topic + +\end{description}\end{quote} + +\item[{Chiara}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Giorgio}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Giovanni}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano P.}] \leavevmode +\sphinxAtStartPar +3 + +\item[{Lorenzo}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano G.}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Flavia}] \leavevmode +\sphinxAtStartPar +5 + +\end{description}\end{quote} + +\item {} \begin{quote}\begin{description} +\item[{Goal}] \leavevmode +\sphinxAtStartPar +Motivation + +\item[{Question}] \leavevmode +\sphinxAtStartPar +Do team members encourage collegues in need? + +\item[{Metric}] \leavevmode +\sphinxAtStartPar +Players explain something other players don\textquotesingle{}t understand + +\item[{Evaluation}] \leavevmode\begin{quote}\begin{description} +\item[{1}] \leavevmode +\sphinxAtStartPar +not involved by the game + +\item[{5}] \leavevmode +\sphinxAtStartPar +always makes sure everyone is on point + +\end{description}\end{quote} + +\item[{Chiara}] \leavevmode +\sphinxAtStartPar +3 + +\item[{Giorgio}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Giovanni}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano P.}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Lorenzo}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano G.}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Flavia}] \leavevmode +\sphinxAtStartPar +4 + +\end{description}\end{quote} + +\item {} \begin{quote}\begin{description} +\item[{Goal}] \leavevmode +\sphinxAtStartPar +Motivation + +\item[{Question}] \leavevmode +\sphinxAtStartPar +Does PO help the team? + +\item[{Metric}] \leavevmode +\sphinxAtStartPar +Quality of PO\textquotesingle{}s advices to get better in the next sprints + +\item[{Evaluation}] \leavevmode\begin{quote}\begin{description} +\item[{1}] \leavevmode +\sphinxAtStartPar +poor/absent advices + +\item[{5}] \leavevmode +\sphinxAtStartPar +wise and helpful suggestions when is required + +\end{description}\end{quote} + +\item[{Stefano G.}] \leavevmode +\sphinxAtStartPar +4 + +\end{description}\end{quote} + +\item {} \begin{quote}\begin{description} +\item[{Goal}] \leavevmode +\sphinxAtStartPar +Motivation + +\item[{Question}] \leavevmode +\sphinxAtStartPar +Does the team come up with good ideas? + +\item[{Metric}] \leavevmode +\sphinxAtStartPar +Effectiveness of sprint retrospective + +\item[{Evaluation}] \leavevmode\begin{quote}\begin{description} +\item[{1}] \leavevmode +\sphinxAtStartPar +doesn\textquotesingle{}t express opinions during retrospective + +\item[{5}] \leavevmode +\sphinxAtStartPar +feels the retrospective fundamental to express opinions + +\end{description}\end{quote} + +\item[{Chiara}] \leavevmode +\sphinxAtStartPar +4 + +\item[{Giorgio}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Giovanni}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano P.}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Lorenzo}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano G.}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Flavia}] \leavevmode +\sphinxAtStartPar +5 + +\end{description}\end{quote} + +\item {} \begin{quote}\begin{description} +\item[{Goal}] \leavevmode +\sphinxAtStartPar +Problem Solving + +\item[{Question}] \leavevmode +\sphinxAtStartPar +Do team members behave well when facing a problem? + +\item[{Metric}] \leavevmode +\sphinxAtStartPar +Level of the technical debt at the end of the game + +\item[{Evaluation}] \leavevmode +\sphinxAtStartPar +On the game board, if the debt pawn is on the lowest stage,the evaluation is 5, for every higher stage it decreases by 1 + +\item[{Chiara}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Giorgio}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Giovanni}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano P.}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Lorenzo}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano G.}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Flavia}] \leavevmode +\sphinxAtStartPar +5 + +\end{description}\end{quote} + +\item {} \begin{quote}\begin{description} +\item[{Goal}] \leavevmode +\sphinxAtStartPar +Problem Solving + +\item[{Question}] \leavevmode +\sphinxAtStartPar +Does team organize their tasks properly? + +\item[{Metric}] \leavevmode +\sphinxAtStartPar +Average of tasks left at the end of each sprint + +\item[{Evaluation}] \leavevmode\begin{quote}\begin{description} +\item[{1}] \leavevmode +\sphinxAtStartPar +21+ average tasks left + +\item[{2}] \leavevmode +\sphinxAtStartPar +16\sphinxhyphen{}20 average tasks left + +\item[{3}] \leavevmode +\sphinxAtStartPar +11\sphinxhyphen{}15 average tasks left + +\item[{4}] \leavevmode +\sphinxAtStartPar +6\sphinxhyphen{}10 average tasks left + +\item[{5}] \leavevmode +\sphinxAtStartPar +0\sphinxhyphen{}5 average tasks left + +\end{description}\end{quote} + +\item[{Chiara}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Giorgio}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Giovanni}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Stefano P.}] \leavevmode +\sphinxAtStartPar +5 + +\item[{Lorenzo}] \leavevmode +\sphinxAtStartPar +5 + +\end{description}\end{quote} + +\item {} \begin{quote}\begin{description} +\item[{Goal}] \leavevmode +\sphinxAtStartPar +Problem Solving + +\item[{Question}] \leavevmode +\sphinxAtStartPar +Does PO plan efficiently the Sprint Backlog? + +\item[{Metric}] \leavevmode +\sphinxAtStartPar +Average of tasks left at the end of each sprint + +\item[{Evaluation}] \leavevmode\begin{quote}\begin{description} +\item[{1}] \leavevmode +\sphinxAtStartPar +21+ average tasks left + +\item[{2}] \leavevmode +\sphinxAtStartPar +16\sphinxhyphen{}20 average tasks left + +\item[{3}] \leavevmode +\sphinxAtStartPar +11\sphinxhyphen{}15 average tasks left + +\item[{4}] \leavevmode +\sphinxAtStartPar +6\sphinxhyphen{}10 average tasks left + +\item[{5}] \leavevmode +\sphinxAtStartPar +0\sphinxhyphen{}5 average tasks left + +\end{description}\end{quote} + +\item[{Stefano G.}] \leavevmode +\sphinxAtStartPar +5 + +\end{description}\end{quote} + +\end{enumerate} + + +\subsection{Sprint 1: 19 Apr \sphinxhyphen{} 02 Mag} +\label{\detokenize{development/sprint1/index:sprint-1-19-apr-02-mag}}\label{\detokenize{development/sprint1/index::doc}} + +\subsubsection{Consegna} +\label{\detokenize{development/sprint1/index:consegna}} +\sphinxAtStartPar +La seguente documentazione è stata fornita dal cliente durante questo Sprint: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{1\sphinxhyphen{}sprint\sphinxhyphen{}requirements.pdf}} + +\end{itemize} + + +\subsubsection{Goal} +\label{\detokenize{development/sprint1/index:goal}} +\sphinxAtStartPar +Il \sphinxstylestrong{goal} per questo Sprint è stato costruire una codebase facilmente mantenibile e modulare, che potesse accomodare +grossi cambiamenti nei sottomoduli senza impattare gli altri: +\begin{itemize} +\item {} +\sphinxAtStartPar +Dal lato \sphinxstylestrong{backend}: l\textquotesingle{}obiettivo è stato predisporre la struttura del database e creare le API calls +per il login degli utenti e la creazione dei repository + +\item {} +\sphinxAtStartPar +Dal lato \sphinxstylestrong{testing}: creare un piccolo framework per il testing automatizzato del backend + +\item {} +\sphinxAtStartPar +Dal lato \sphinxstylestrong{frontend}: creare la struttura con le componenti importate da Figma e implementare le schermate principali + +\end{itemize} + + +\paragraph{Backlog} +\label{\detokenize{development/sprint1/index:backlog}} +\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{1-backlog}.png} + + +\paragraph{Task completati} +\label{\detokenize{development/sprint1/index:task-completati}} +\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{1-tasks}.png} + + +\subsubsection{Definition of Ready} +\label{\detokenize{development/sprint1/index:definition-of-ready}} +\sphinxAtStartPar +Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri: +\begin{itemize} +\item {} +\sphinxAtStartPar +La User Story è stata compresa ed accettata da tutti i membri + +\item {} +\sphinxAtStartPar +I tester hanno confermato la possibilità di poterla testare + +\item {} +\sphinxAtStartPar +Il Product Owner ha la visione necessaria per definirne la priorità + +\item {} +\sphinxAtStartPar +Il Team è in grado di stimarla + +\item {} +\sphinxAtStartPar +La User Story è indipendente o dipendente da altre a priorità maggiore + +\end{itemize} + + +\subsubsection{Definition of Done} +\label{\detokenize{development/sprint1/index:definition-of-done}} +\sphinxAtStartPar +La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita: +\begin{itemize} +\item {} +\sphinxAtStartPar +Sviluppo completo della funzionalità richiesta + +\item {} +\sphinxAtStartPar +Definizione e superamento dei test + +\item {} +\sphinxAtStartPar +Bozza della documentazione della funzionalità + +\item {} +\sphinxAtStartPar +Merge dei sorgenti nel branch \sphinxcode{\sphinxupquote{main}} di GitLab + +\end{itemize} + + +\subsubsection{Statistiche} +\label{\detokenize{development/sprint1/index:statistiche}} + +\paragraph{Burndown chart} +\label{\detokenize{development/sprint1/index:burndown-chart}} +\sphinxAtStartPar +Questa è la burndown chart relativa allo Sprint 1: + +\noindent\sphinxincludegraphics{{1-burndown}.png} + + +\paragraph{Gitinspector} +\label{\detokenize{development/sprint1/index:gitinspector}} +\sphinxAtStartPar +Questa statistica è stata generata dal prof. Marcello Missiroli con +\sphinxhref{https://github.com/ejwa/gitinspector}{Gitinspector} al termine dello Sprint. +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{1\sphinxhyphen{}stats.html}} + +\end{itemize} + + +\subsubsection{Sprint Retrospective} +\label{\detokenize{development/sprint1/index:sprint-retrospective}} +\sphinxAtStartPar +La Sprint Retrospective è disponibile al seguente link: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{1\sphinxhyphen{}retrospective.pdf}} + +\end{itemize} + + +\subsubsection{Sprint Review} +\label{\detokenize{development/sprint1/index:sprint-review}} +\sphinxAtStartPar +Il video di Sprint Review è disponibile al seguente link: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxurl{https://drive.google.com/drive/folders/1dsis\_cGCRnVgZAkZjEVIZKt4NndkycaF} + +\end{itemize} + + +\subsubsection{Valutazione sul debito tecnico} +\label{\detokenize{development/sprint1/index:valutazione-sul-debito-tecnico}} +\sphinxAtStartPar +Durante questo sprint è stata prodotta dallo Scrum Master la seguente valutazione sul debito tecnico: +\begin{quote} + +\sphinxAtStartPar +La valutazione del debito tecnico effettuata da SonarQube è relativa principalmente al backend, +poiché l’analisi del progetto sarebbe stata troppo dispendiosa a causa dell’elevato numero di file presente nella +cartella \sphinxcode{\sphinxupquote{/frontend}}. + +\sphinxAtStartPar +Per quanto riguarda il backend invece il debito tecnico riscontrato è minore del 5\% come si può verificare dal +grado A attestato da SonarQube. + +\sphinxAtStartPar +Un punto chiave nell’implementazione ha permesso al team di diminuire il debito tecnico, questo è avvenuto grazie +all’adozione del modello architetturale REST che ha migliorato esponenzialmente il tempo di risposta delle +richieste e la leggibilità del codice. + +\begin{flushright} +---Flavia Cocca, Scrum Master +\end{flushright} +\end{quote} + + +\subsubsection{Valutazione sulle User Stories} +\label{\detokenize{development/sprint1/index:valutazione-sulle-user-stories}} +\sphinxAtStartPar +Durante questo sprint è stata prodotta dal Product Owner la seguente valutazione sulle User Stories: +\begin{quote} + +\sphinxAtStartPar +Durante questo sprint non sono state ristimate le US in quanto non sono emerse al termine dello Sprint 0 +valutazioni che lo rendessero necessario, di conseguenza non sono state neanche rivalutate le priorità. + +\sphinxAtStartPar +Come Product Owner ho individuato come criterio di accettazione l\textquotesingle{}esito positivo dei test, anche per il fatto che +i test sono presenti in ogni US. + +\sphinxAtStartPar +Durante lo sviluppo di questo primo sprint sono ovviamente emerse delle issue che sono state tracciate su Taiga. +Una di queste, la \#101 "L\textquotesingle{}API non è interamente REST" ha portato ad un refactoring di una parte del codice del +backend, del frontend e naturalmente anche delle procedure di test, che erano già state abbozzate. +La modifica comunque si è rilevata essere necessaria per rispondere appieno alle struttura tipica dei metodi REST. + +\sphinxAtStartPar +Altre issue sono state inserite ma possono essere sistemate nello sprint successivo in quanto non influiscono sul +funzionamento atteso in questo primo sprint. + +\sphinxAtStartPar +Un leggero ritardo sullo sviluppo del frontend non consente di chiudere alcune US, che verranno chiuse e +testate nel prossimo Sprint. + +\begin{flushright} +---Stefano Goldoni, Product Owner +\end{flushright} +\end{quote} + + +\subsubsection{Registro attività} +\label{\detokenize{development/sprint1/index:registro-attivita}} + +\paragraph{Riunioni collettive} +\label{\detokenize{development/sprint1/index:riunioni-collettive}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Ora +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +2h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}01 +& +\sphinxAtStartPar +15:30 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +backlog grooming session +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\paragraph{Attività individuali} +\label{\detokenize{development/sprint1/index:attivita-individuali}} +\begin{sphinxadmonition}{hint}{Suggerimento:} +\sphinxAtStartPar +Per vedere più in dettaglio il lavoro di sviluppo effettuato da ogni membro del gruppo, si suggerisce di +visualizzare il log di Git: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{\PYGZdl{} }git log +\end{sphinxVerbatim} +\end{sphinxadmonition} + + +\subparagraph{Stefano Goldoni} +\label{\detokenize{development/sprint1/index:stefano-goldoni}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +23h 30m +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}20 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +analisi test +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}20 +& +\sphinxAtStartPar +1h 30m +& +\sphinxAtStartPar +scrittura test cases +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}26 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +predisposizione progetto in locale per il test +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}26 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +metodi di test login e creazione utente +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}28 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +metodi ti test +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}29 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +metodi di test +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}30 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +metodi di test backend +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}01 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +test frontend +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}01 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +test backend in pair programming +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}02 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}02 +& +\sphinxAtStartPar +2h 30m +& +\sphinxAtStartPar +test backend +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Flavia Cocca} +\label{\detokenize{development/sprint1/index:flavia-cocca}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +8h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}27 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +modifica mockup UI +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}28 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Organizzazione Sprint retrospective +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}30 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +modifica mockup UI +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}01 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Riunione con il team per Sprint review e Sprint retrospective +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}02 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Stesura documenti Sprint 1 (debito tecnico e relazione Sprint retrospective), realizzazione video Sprint1 review +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Chiara Calzolari} +\label{\detokenize{development/sprint1/index:chiara-calzolari}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +6h 30m +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}26 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Configurazione ambiente di sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}27 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +modifica mockup UI (adeguamento al JS) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}29 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +modifica mockup UI (Manage users) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}01 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +Ultimi ritocchi al mockup UI +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Stefano Pigozzi} +\label{\detokenize{development/sprint1/index:stefano-pigozzi}} + +\begin{savenotes}\sphinxatlongtablestart\begin{longtable}[c]{|l|l|l|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +29h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\endfirsthead + +\multicolumn{3}{c}% +{\makebox[0pt]{\sphinxtablecontinued{\tablename\ \thetable{} \textendash{} continua dalla pagina precedente}}}\\ +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +29h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\endhead + +\hline +\multicolumn{3}{r}{\makebox[0pt][r]{\sphinxtablecontinued{continues on next page}}}\\ +\endfoot + +\endlastfoot + +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}19 +& +\sphinxAtStartPar +18m +& +\sphinxAtStartPar +Configurazione IntelliJ IDEA +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}19 +& +\sphinxAtStartPar +10m +& +\sphinxAtStartPar +Configurazione IntelliJ IDEA +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}20 +& +\sphinxAtStartPar +1h 26m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}21 +& +\sphinxAtStartPar +1h 3m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}21 +& +\sphinxAtStartPar +3m +& +\sphinxAtStartPar +Configurazione IntelliJ IDEA +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}21 +& +\sphinxAtStartPar +58m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}21 +& +\sphinxAtStartPar +13m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}21 +& +\sphinxAtStartPar +7m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}21 +& +\sphinxAtStartPar +6m +& +\sphinxAtStartPar +Project management +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}21 +& +\sphinxAtStartPar +15m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}21 +& +\sphinxAtStartPar +32m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}21 +& +\sphinxAtStartPar +10m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}22 +& +\sphinxAtStartPar +5m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}22 +& +\sphinxAtStartPar +16m +& +\sphinxAtStartPar +Presentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}22 +& +\sphinxAtStartPar +36m +& +\sphinxAtStartPar +Riunione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}22 +& +\sphinxAtStartPar +1h 23m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}23 +& +\sphinxAtStartPar +18m +& +\sphinxAtStartPar +Studio +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}23 +& +\sphinxAtStartPar +42m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}23 +& +\sphinxAtStartPar +10m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}23 +& +\sphinxAtStartPar +1h 9m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}23 +& +\sphinxAtStartPar +3m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}24 +& +\sphinxAtStartPar +19m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}24 +& +\sphinxAtStartPar +19m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}25 +& +\sphinxAtStartPar +2h 59m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}25 +& +\sphinxAtStartPar +10m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}26 +& +\sphinxAtStartPar +13m +& +\sphinxAtStartPar +Configurazione SonarQube +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}26 +& +\sphinxAtStartPar +12m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}26 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}26 +& +\sphinxAtStartPar +4m +& +\sphinxAtStartPar +Riunione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}26 +& +\sphinxAtStartPar +2h 58m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}26 +& +\sphinxAtStartPar +1h 4m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}26 +& +\sphinxAtStartPar +56m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}26 +& +\sphinxAtStartPar +6m +& +\sphinxAtStartPar +Project management +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}27 +& +\sphinxAtStartPar +7m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}27 +& +\sphinxAtStartPar +15m +& +\sphinxAtStartPar +Configurazione Taiga +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}27 +& +\sphinxAtStartPar +29m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}27 +& +\sphinxAtStartPar +35m +& +\sphinxAtStartPar +Collaborazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}28 +& +\sphinxAtStartPar +34m +& +\sphinxAtStartPar +Collaborazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}29 +& +\sphinxAtStartPar +1h 42m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}29 +& +\sphinxAtStartPar +1h 26m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}29 +& +\sphinxAtStartPar +48m +& +\sphinxAtStartPar +Project management +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}30 +& +\sphinxAtStartPar +56m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}30 +& +\sphinxAtStartPar +46m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}01 +& +\sphinxAtStartPar +12m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}02 +& +\sphinxAtStartPar +14m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}02 +& +\sphinxAtStartPar +28m +& +\sphinxAtStartPar +Bugfixing +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}02 +& +\sphinxAtStartPar +15m +& +\sphinxAtStartPar +Collaborazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}02 +& +\sphinxAtStartPar +3m +& +\sphinxAtStartPar +Bugfixing +\\ +\hline +\end{longtable}\sphinxatlongtableend\end{savenotes} + + +\subparagraph{Giovanni Anniballi} +\label{\detokenize{development/sprint1/index:giovanni-anniballi}} +\sphinxAtStartPar +Per il lavoro di testing è stata utilizzata anche la tecnica del Pair Programming, grazie ad un plugin dell\textquotesingle{}IDE utilizzato. + + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +16h 30m +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}22 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +Riunione con il team +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}23 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Studio struttura del backend +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}24 +& +\sphinxAtStartPar +1h 30m +& +\sphinxAtStartPar +Studio del backend, volto a capire il funzionamento delle varie API +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}26 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Testing login e retrieval dei dati inerenti a tutti gli utenti registrati +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}27 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Testing creazione user +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}28 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Test cancellazione utente e ritorno dei dati inerenti a quell’utente +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}29 +& +\sphinxAtStartPar +1h 30m +& +\sphinxAtStartPar +Test modica utenti e creazione della prima repository +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}30 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Testing ritorno di tutte le repository di proprietà dell’utente loggato, ritorno delle info inerenti alla repository specificata +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}01 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Riunione con il team per Sprint review e Sprint retrospective +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}01 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Testing modifica ed eliminazione di una repository (nome, stato) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}02 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Testing del frontend tramite UI, controllo generale dei test già effettuati. +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Giorgio Minoccari} +\label{\detokenize{development/sprint1/index:giorgio-minoccari}} +\sphinxAtStartPar +Durante lo Sprint ho principalmente svolto sviluppo e test riguardo alla API di twitter, in modo da poter effettuare chiamate efficenti e non venire limitati dal sito riguardo alle richieste effettuate. + + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +10h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}21 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Primi test riguardo autenticazione Oauth per API twitter +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}23 +& +\sphinxAtStartPar +1h 30m +& +\sphinxAtStartPar +Autenticazione funzionante +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}24 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +Test su ricerche generali con parole chiave +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}26 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Test su ricerche geolocalizzate +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}27 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Definizione di entita\textquotesingle{} di esempio nei database per provare funzioni legate ad esse +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}28 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Definizione di funzioni per l\textquotesingle{}aggregazione di condizioni di diverso tipo per la ricerca di tweet tramite API +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}29 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Refactor codice scritto fino a quel momento, eliminazione di dati inutili +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}01 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Implementazioni di analisi su termini e hashtag restituiti dall\textquotesingle{}API +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}02 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Test di chiamata alle funzioni di ricerca a partire da repository con condizioni complesse aggregate +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Lorenzo Balugani} +\label{\detokenize{development/sprint1/index:lorenzo-balugani}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +13h 30m +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}21 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Implementazione Base di Dati +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}22 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Login, creazione utenti +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}25 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Rimozione utenti, CORS, Creazione repo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}25 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Altre funzioni API +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}26 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +Standardizzazione output json +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}26 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}27 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +Aggiunto supporto al modulo explorer, fix +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}28 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +Bugfixing +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}29 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Gestione migliorata errori +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}04\sphinxhyphen{}29 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Refactoring +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}02 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Bugfixing +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subsection{Sprint 2: 03 Mag \sphinxhyphen{} 16 Mag} +\label{\detokenize{development/sprint2/index:sprint-2-03-mag-16-mag}}\label{\detokenize{development/sprint2/index::doc}} + +\subsubsection{Consegna} +\label{\detokenize{development/sprint2/index:consegna}} +\sphinxAtStartPar +La seguente documentazione è stata fornita dal cliente durante questo sprint: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{2\sphinxhyphen{}sprint\sphinxhyphen{}requirements.pdf}} + +\end{itemize} + + +\subsubsection{Goal} +\label{\detokenize{development/sprint2/index:goal}} +\sphinxAtStartPar +Il \sphinxstylestrong{goal} del secondo Sprint è stato la creazione, cancellazione e modifica dei repository, ovvero permettere +agli utenti di creare repository partendo da una ricerca che rispetta determinate condizioni. + + +\paragraph{Backlog} +\label{\detokenize{development/sprint2/index:backlog}} +\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{2-backlog}.png} + + +\paragraph{Task completati} +\label{\detokenize{development/sprint2/index:task-completati}} +\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{2-tasks}.png} + + +\subsubsection{Definition of Ready} +\label{\detokenize{development/sprint2/index:definition-of-ready}} +\sphinxAtStartPar +Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri: +\begin{itemize} +\item {} +\sphinxAtStartPar +La User Story è stata compresa ed accettata da tutti i membri + +\item {} +\sphinxAtStartPar +I tester hanno confermato la possibilità di poterla testare + +\item {} +\sphinxAtStartPar +Il Product Owner ha la visione necessaria per definirne la priorità + +\item {} +\sphinxAtStartPar +Il Team è in grado di stimarla + +\item {} +\sphinxAtStartPar +La User Story è indipendente o dipendente da altre a priorità maggiore + +\end{itemize} + + +\subsubsection{Definition of Done} +\label{\detokenize{development/sprint2/index:definition-of-done}} +\sphinxAtStartPar +La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita: +\begin{itemize} +\item {} +\sphinxAtStartPar +Sviluppo completo della funzionalità richiesta + +\item {} +\sphinxAtStartPar +Definizione e superamento dei test + +\item {} +\sphinxAtStartPar +Bozza della documentazione della funzionalità + +\item {} +\sphinxAtStartPar +Merge dei sorgenti nel branch \sphinxcode{\sphinxupquote{main}} di GitLab + +\end{itemize} + + +\subsubsection{Statistiche} +\label{\detokenize{development/sprint2/index:statistiche}} + +\paragraph{Burndown chart} +\label{\detokenize{development/sprint2/index:burndown-chart}} +\sphinxAtStartPar +Questa è la burndown chart relativa allo Sprint 2: + +\noindent\sphinxincludegraphics{{2-burndown}.png} + + +\paragraph{Gitinspector} +\label{\detokenize{development/sprint2/index:gitinspector}} +\sphinxAtStartPar +Questa statistica è stata generata dal prof. Marcello Missiroli con +\sphinxhref{https://github.com/ejwa/gitinspector}{Gitinspector} al termine dello Sprint. +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{2\sphinxhyphen{}stats.html}} (relativa al codice) + +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{2D\sphinxhyphen{}stats.html}} (relativa a parte della documentazione) + +\end{itemize} + + +\subsubsection{Sprint Retrospective} +\label{\detokenize{development/sprint2/index:sprint-retrospective}} +\sphinxAtStartPar +La Sprint Retrospective è disponibile al seguente link: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{2\sphinxhyphen{}retrospective.pdf}} + +\end{itemize} + + +\subsubsection{Sprint Review} +\label{\detokenize{development/sprint2/index:sprint-review}} +\sphinxAtStartPar +Il video di Sprint Review è disponibile al seguente link: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxurl{https://drive.google.com/file/d/1x1kub-bpVJrwmGrn5LLU8ecqcbxFaoKg/view} + +\end{itemize} + + +\subsubsection{Registro attività} +\label{\detokenize{development/sprint2/index:registro-attivita}} + +\paragraph{Riunioni collettive} +\label{\detokenize{development/sprint2/index:riunioni-collettive}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Ora +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +1h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}14 +& +\sphinxAtStartPar +10:00 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Sprint Retrospective session +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\paragraph{Attività individuali} +\label{\detokenize{development/sprint2/index:attivita-individuali}} +\begin{sphinxadmonition}{hint}{Suggerimento:} +\sphinxAtStartPar +Per vedere più in dettaglio il lavoro di sviluppo effettuato da ogni membro del gruppo, si suggerisce di +visualizzare il log di Git: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{\PYGZdl{} }git log +\end{sphinxVerbatim} +\end{sphinxadmonition} + + +\subparagraph{Stefano Goldoni} +\label{\detokenize{development/sprint2/index:stefano-goldoni}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +16h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}04 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +preparazione backlog sprint 2 +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}10 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +test sprint 2 +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}11 +& +\sphinxAtStartPar +2h 30m +& +\sphinxAtStartPar +test utenti e repository +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}12 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +test repository +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}13 +& +\sphinxAtStartPar +2h 30m +& +\sphinxAtStartPar +test repository +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}14 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +test conditions +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}15 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +test conditions + sonarqube scanner +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Flavia Cocca} +\label{\detokenize{development/sprint2/index:flavia-cocca}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +16h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}04 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +Riunione per con PO, nuovo backlog +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}05 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Riunione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}07 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Refactoring test +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}08 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Refactoring test +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}09 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Nuovi test +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}11 +& +\sphinxAtStartPar +2h 30m +& +\sphinxAtStartPar +Discussione test e risoluzione di alcune issue +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}13 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Bugfixing +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}14 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Sprint Retrospective +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}15 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Stefano Pigozzi} +\label{\detokenize{development/sprint2/index:stefano-pigozzi}} + +\begin{savenotes}\sphinxatlongtablestart\begin{longtable}[c]{|l|l|l|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +27h 30m +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\endfirsthead + +\multicolumn{3}{c}% +{\makebox[0pt]{\sphinxtablecontinued{\tablename\ \thetable{} \textendash{} continua dalla pagina precedente}}}\\ +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +27h 30m +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\endhead + +\hline +\multicolumn{3}{r}{\makebox[0pt][r]{\sphinxtablecontinued{continues on next page}}}\\ +\endfoot + +\endlastfoot + +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}05 +& +\sphinxAtStartPar +40m +& +\sphinxAtStartPar +Riunione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}05 +& +\sphinxAtStartPar +21m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}06 +& +\sphinxAtStartPar +9m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}06 +& +\sphinxAtStartPar +3m +& +\sphinxAtStartPar +Configurazione Taiga +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}06 +& +\sphinxAtStartPar +11m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}06 +& +\sphinxAtStartPar +9m +& +\sphinxAtStartPar +Riunione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}06 +& +\sphinxAtStartPar +20m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}06 +& +\sphinxAtStartPar +39m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}06 +& +\sphinxAtStartPar +15m +& +\sphinxAtStartPar +Riunione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}06 +& +\sphinxAtStartPar +1h 4m +& +\sphinxAtStartPar +Riunione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}07 +& +\sphinxAtStartPar +1h 47m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}07 +& +\sphinxAtStartPar +17m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}07 +& +\sphinxAtStartPar +34m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}07 +& +\sphinxAtStartPar +34m +& +\sphinxAtStartPar +Project management +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}07 +& +\sphinxAtStartPar +2h 44m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}08 +& +\sphinxAtStartPar +13m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}08 +& +\sphinxAtStartPar +29m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}08 +& +\sphinxAtStartPar +18m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}10 +& +\sphinxAtStartPar +1h 00m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}10 +& +\sphinxAtStartPar +1h 15m +& +\sphinxAtStartPar +Configurazione GitLab +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}10 +& +\sphinxAtStartPar +25m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}10 +& +\sphinxAtStartPar +39m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}11 +& +\sphinxAtStartPar +25m +& +\sphinxAtStartPar +Bugfixing +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}11 +& +\sphinxAtStartPar +3h 57m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}11 +& +\sphinxAtStartPar +1h 45m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}12 +& +\sphinxAtStartPar +10m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}12 +& +\sphinxAtStartPar +1h 51m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}13 +& +\sphinxAtStartPar +1h 00m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}13 +& +\sphinxAtStartPar +1h 20m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}14 +& +\sphinxAtStartPar +20m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}14 +& +\sphinxAtStartPar +3h 17m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}15 +& +\sphinxAtStartPar +1h 8m +& +\sphinxAtStartPar +Porting dipendenze +\\ +\hline +\end{longtable}\sphinxatlongtableend\end{savenotes} + + +\subparagraph{Chiara Calzolari} +\label{\detokenize{development/sprint2/index:chiara-calzolari}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +11h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}03 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Testing frontend e segnalazione issues +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}03 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Modifica mockup UI (Dashboard repository) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}04 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Modifica mockup UI (adeguamento al JS) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}10 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Configurazione ambiente di sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}11 +& +\sphinxAtStartPar +1h 30m +& +\sphinxAtStartPar +Modifica UI (traduzione in Italiano) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}12 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +Modifica UI (traduzione in Italiano) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}14 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Realizzazione video demo sprint 2 +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Giovanni Anniballi} +\label{\detokenize{development/sprint2/index:giovanni-anniballi}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +17h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}04 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +Incontro con SM e PO per valutare quali US andranno nello sprint2 +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}05 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Incontro con il team +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}07 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Refactoring tests sugli user e primi utilizzi delle fixtures +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}08 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Completamento test users +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}10 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Ulteriori approcci (fallimentari) al coverage di SonarQube +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}11 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Discussione sui test e correzioni bug +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}12 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Test repository +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}13 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Generazione coverage pytest e setting sonarqube (riuscito!) +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}14 +& +\sphinxAtStartPar +4h +& +\sphinxAtStartPar +Sprint review e retrospettiva, conclusione test repository +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}15 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +generazione nuovo coverage e fix a sonarqube +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}15 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +fix piccoli bug segnalati da sonarqube +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Giorgio Minoccari} +\label{\detokenize{development/sprint2/index:giorgio-minoccari}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +10h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}04 +& +\sphinxAtStartPar +30m +& +\sphinxAtStartPar +Aggiunta della condizione sull\textquotesingle{}utente +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}10 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Tentativo di inserimento delle query con place\_id +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}11 +& +\sphinxAtStartPar +1h 30m +& +\sphinxAtStartPar +Test per passare alla versione 2.0 delle API +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}12 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Ritorno alla versione 1.1 perche\textquotesingle{} lascia disponibili le query sulla geolocalizzazione gratuitamente +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}14 +& +\sphinxAtStartPar +5h +& +\sphinxAtStartPar +Integrazione e inserimento dei tweet catturati nel database +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Lorenzo Balugani} +\label{\detokenize{development/sprint2/index:lorenzo-balugani}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +19h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}05 +& +\sphinxAtStartPar +4h +& +\sphinxAtStartPar +Setup di swagger, documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}06 +& +\sphinxAtStartPar +4h +& +\sphinxAtStartPar +Documentazione, sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}07 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Alert, documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}10 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Alert Put, bugfixing +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}11 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Bugfixing, sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}12 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Risolti issue pubblicati su Taiga +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}13 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Bugfixing +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}14 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Bugfixing +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subsection{Sprint 3: 17 Mag \sphinxhyphen{} 30 Mag} +\label{\detokenize{development/sprint3/index:sprint-3-17-mag-30-mag}}\label{\detokenize{development/sprint3/index::doc}} + +\subsubsection{Consegna} +\label{\detokenize{development/sprint3/index:consegna}} +\sphinxAtStartPar +La seguente documentazione è stata fornita dal cliente durante questo sprint: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{3\sphinxhyphen{}sprint\sphinxhyphen{}requirements.pdf}} + +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{3\sphinxhyphen{}report.pdf}} + +\end{itemize} + + +\subsubsection{Goal} +\label{\detokenize{development/sprint3/index:goal}} +\sphinxAtStartPar +Il \sphinxstylestrong{goal} del terzo Sprint è stato far funzionare il crawler, gli alert e completare tutte i task rimanenti. + + +\paragraph{Backlog} +\label{\detokenize{development/sprint3/index:backlog}} +\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{3-backlog}.png} + + +\paragraph{Task completati} +\label{\detokenize{development/sprint3/index:task-completati}} +\noindent\sphinxincludegraphics[width=400\sphinxpxdimen]{{3-tasks}.png} + + +\subsubsection{Grooming session} +\label{\detokenize{development/sprint3/index:grooming-session}} +\sphinxAtStartPar +Sono state definite le nuove \sphinxstylestrong{User Stories} da inserire nel progetto sulla base delle nuove richieste +pervenute dal cliente: +\begin{itemize} +\item {} +\sphinxAtStartPar +analisi statistica più dettagliata + +\item {} +\sphinxAtStartPar +postare su Twitter + +\item {} +\sphinxAtStartPar +traduzione dell\textquotesingle{}interfaccia in inglese. + +\end{itemize} + +\sphinxAtStartPar +La richiesta relativa alle \sphinxstyleemphasis{ricerche basate sulla geolocalizzazione}, come già comunicato al cliente, non è stata +completata interamente per motivi tecnici legati a limitazioni sulle features delle \sphinxstylestrong{API 1.1 di Twitter} che non +permettono di eseguire query su campi di posizione geografica. + +\sphinxAtStartPar +Le nuove User Stories sono state valutate tramite Scrum Poker, durante il quale ogni membro ha espresso +la sua valutazione. + +\sphinxAtStartPar +Tutte le nuove richieste sono state accettate dal Product Owner e sono pronte ad essere inserite nello sprint di +sviluppo in partenza. + + +\subsubsection{Definition of Ready} +\label{\detokenize{development/sprint3/index:definition-of-ready}} +\sphinxAtStartPar +Il team ha definito lo stato di Ready di una User Story in base ai seguenti criteri: +\begin{itemize} +\item {} +\sphinxAtStartPar +La User Story è stata compresa ed accettata da tutti i membri + +\item {} +\sphinxAtStartPar +I tester hanno confermato la possibilità di poterla testare + +\item {} +\sphinxAtStartPar +Il Product Owner ha la visione necessaria per definirne la priorità + +\item {} +\sphinxAtStartPar +Il Team è in grado di stimarla + +\item {} +\sphinxAtStartPar +La User Story è indipendente o dipendente da altre a priorità maggiore + +\end{itemize} + + +\subsubsection{Definition of Done} +\label{\detokenize{development/sprint3/index:definition-of-done}} +\sphinxAtStartPar +La definizione di Done è stata concordata da tutto il team con il Product Owner, ed è stata così definita: +\begin{itemize} +\item {} +\sphinxAtStartPar +Sviluppo completo della funzionalità richiesta + +\item {} +\sphinxAtStartPar +Definizione e superamento dei test + +\item {} +\sphinxAtStartPar +Bozza della documentazione della funzionalità + +\item {} +\sphinxAtStartPar +Merge dei sorgenti nel branch \sphinxcode{\sphinxupquote{main}} di GitLab + +\end{itemize} + + +\subsubsection{Statistiche} +\label{\detokenize{development/sprint3/index:statistiche}} + +\paragraph{Gitinspector} +\label{\detokenize{development/sprint3/index:gitinspector}} +\begin{sphinxadmonition}{note}{Nota:} +\sphinxAtStartPar +La statistica dello sprint 3 non è ancora stata generata dal prof. Marcello Missiroli. +\end{sphinxadmonition} + + +\paragraph{Schermata finale di SonarQube} +\label{\detokenize{development/sprint3/index:schermata-finale-di-sonarqube}} +\sphinxAtStartPar +La schermata finale di SonarQube è visibile a questo link: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{3\sphinxhyphen{}sonarqube.pdf}} + +\end{itemize} + + +\subsubsection{Final Retrospective} +\label{\detokenize{development/sprint3/index:final-retrospective}}\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{Retrospettiva finale}} + +\end{itemize} + + +\subsubsection{Demo} +\label{\detokenize{development/sprint3/index:demo}} +\sphinxAtStartPar +Il video di Demo è disponibile al seguente link: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxurl{https://drive.google.com/file/d/15o70Ffe51CNj8LTKHC9dGiqRVnbv9UpZ/view} + +\end{itemize} + + +\subsubsection{Registro attività} +\label{\detokenize{development/sprint3/index:registro-attivita}} + +\paragraph{Riunioni collettive} +\label{\detokenize{development/sprint3/index:riunioni-collettive}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +3.5h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +17/05 +& +\sphinxAtStartPar +2.0 h +& +\sphinxAtStartPar +Grooming session nuove richieste cliente +\\ +\hline +\sphinxAtStartPar +29/05 +& +\sphinxAtStartPar +1.5 h +& +\sphinxAtStartPar +sprint retrospective +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\paragraph{Attività individuali} +\label{\detokenize{development/sprint3/index:attivita-individuali}} + +\subparagraph{Stefano Goldoni} +\label{\detokenize{development/sprint3/index:stefano-goldoni}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +14h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +21/05 +& +\sphinxAtStartPar +2.0h +& +\sphinxAtStartPar +Analisi strumenti di test frontend +\\ +\hline +\sphinxAtStartPar +24/05 +& +\sphinxAtStartPar +3.0h +& +\sphinxAtStartPar +Inizio test alerts +\\ +\hline +\sphinxAtStartPar +25/05 +& +\sphinxAtStartPar +2.5h +& +\sphinxAtStartPar +Test alerts +\\ +\hline +\sphinxAtStartPar +26/05 +& +\sphinxAtStartPar +3.0h +& +\sphinxAtStartPar +Test +\\ +\hline +\sphinxAtStartPar +28/05 +& +\sphinxAtStartPar +3.5h +& +\sphinxAtStartPar +Test, refactory in base a Sonarqube +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Flavia Cocca} +\label{\detokenize{development/sprint3/index:flavia-cocca}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +14h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +20/05 +& +\sphinxAtStartPar +2.0h +& +\sphinxAtStartPar +Trasferimento documenti in nuova documentazione +\\ +\hline +\sphinxAtStartPar +21/05 +& +\sphinxAtStartPar +1.0h +& +\sphinxAtStartPar +Studio Sphinx +\\ +\hline +\sphinxAtStartPar +23/05 +& +\sphinxAtStartPar +1.0h +& +\sphinxAtStartPar +Studio sintassi rST +\\ +\hline +\sphinxAtStartPar +24/05 +& +\sphinxAtStartPar +1.0h +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +25/05 +& +\sphinxAtStartPar +1.0h +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +26/05 +& +\sphinxAtStartPar +1.0h +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +27/05 +& +\sphinxAtStartPar +1.0h +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +28/05 +& +\sphinxAtStartPar +3.0h +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +29/05 +& +\sphinxAtStartPar +3.0h +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Chiara Calzolari} +\label{\detokenize{development/sprint3/index:chiara-calzolari}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +17h 30m +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +17/05 +& +\sphinxAtStartPar +3.0h +& +\sphinxAtStartPar +Traduzione UI +\\ +\hline +\sphinxAtStartPar +17/05 +& +\sphinxAtStartPar +1.5h +& +\sphinxAtStartPar +Traduzione UI +\\ +\hline +\sphinxAtStartPar +18/05 +& +\sphinxAtStartPar +1.5h +& +\sphinxAtStartPar +Traduzione UI +\\ +\hline +\sphinxAtStartPar +20/05 +& +\sphinxAtStartPar +1.0h +& +\sphinxAtStartPar +Traduzione UI +\\ +\hline +\sphinxAtStartPar +22/05 +& +\sphinxAtStartPar +1.0h +& +\sphinxAtStartPar +Traduzione UI +\\ +\hline +\sphinxAtStartPar +24/05 +& +\sphinxAtStartPar +2.0h +& +\sphinxAtStartPar +Traduzione UI +\\ +\hline +\sphinxAtStartPar +24/05 +& +\sphinxAtStartPar +1.0h +& +\sphinxAtStartPar +Traduzione UI +\\ +\hline +\sphinxAtStartPar +25/05 +& +\sphinxAtStartPar +1.0h +& +\sphinxAtStartPar +Traduzione UI +\\ +\hline +\sphinxAtStartPar +27/05 +& +\sphinxAtStartPar +0.5h +& +\sphinxAtStartPar +Traduzione UI +\\ +\hline +\sphinxAtStartPar +28/05 +& +\sphinxAtStartPar +2.0h +& +\sphinxAtStartPar +Configurazione ambiente di sviluppo +\\ +\hline +\sphinxAtStartPar +28/05 +& +\sphinxAtStartPar +3.0h +& +\sphinxAtStartPar +Creazione video\sphinxhyphen{}demo +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Stefano Pigozzi} +\label{\detokenize{development/sprint3/index:stefano-pigozzi}} + +\begin{savenotes}\sphinxatlongtablestart\begin{longtable}[c]{|l|l|l|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +50h 41m +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\endfirsthead + +\multicolumn{3}{c}% +{\makebox[0pt]{\sphinxtablecontinued{\tablename\ \thetable{} \textendash{} continua dalla pagina precedente}}}\\ +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +50h 41m +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\endhead + +\hline +\multicolumn{3}{r}{\makebox[0pt][r]{\sphinxtablecontinued{continues on next page}}}\\ +\endfoot + +\endlastfoot + +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}17 +& +\sphinxAtStartPar +25m +& +\sphinxAtStartPar +Riunione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}17 +& +\sphinxAtStartPar +19m +& +\sphinxAtStartPar +Riunione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}17 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}17 +& +\sphinxAtStartPar +1h 7m +& +\sphinxAtStartPar +Bugfixing +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}17 +& +\sphinxAtStartPar +7m +& +\sphinxAtStartPar +User Interface +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}18 +& +\sphinxAtStartPar +55m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}18 +& +\sphinxAtStartPar +14m +& +\sphinxAtStartPar +Configurazione GitLab +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}18 +& +\sphinxAtStartPar +1h 52m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}18 +& +\sphinxAtStartPar +22m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}18 +& +\sphinxAtStartPar +21m +& +\sphinxAtStartPar +User Interface +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}18 +& +\sphinxAtStartPar +34m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}18 +& +\sphinxAtStartPar +40m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}18 +& +\sphinxAtStartPar +29m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}18 +& +\sphinxAtStartPar +1h 8m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}19 +& +\sphinxAtStartPar +36m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}19 +& +\sphinxAtStartPar +2h 40m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}19 +& +\sphinxAtStartPar +44m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}19 +& +\sphinxAtStartPar +19m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}20 +& +\sphinxAtStartPar +1h 26m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}20 +& +\sphinxAtStartPar +2h 59m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}20 +& +\sphinxAtStartPar +53m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}20 +& +\sphinxAtStartPar +18m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}21 +& +\sphinxAtStartPar +4h 32m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}22 +& +\sphinxAtStartPar +2h 28m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}23 +& +\sphinxAtStartPar +1h 12m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}23 +& +\sphinxAtStartPar +1h 2m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}23 +& +\sphinxAtStartPar +1h 13m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}23 +& +\sphinxAtStartPar +16m +& +\sphinxAtStartPar +Code review +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}24 +& +\sphinxAtStartPar +10m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}24 +& +\sphinxAtStartPar +1h 46m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}24 +& +\sphinxAtStartPar +5m +& +\sphinxAtStartPar +Project Management +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}24 +& +\sphinxAtStartPar +3m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}24 +& +\sphinxAtStartPar +54m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}25 +& +\sphinxAtStartPar +2h 13m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}25 +& +\sphinxAtStartPar +2h 12m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}27 +& +\sphinxAtStartPar +19m +& +\sphinxAtStartPar +Sviluppo +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}27 +& +\sphinxAtStartPar +34m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}27 +& +\sphinxAtStartPar +1h 46m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}27 +& +\sphinxAtStartPar +33m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}27 +& +\sphinxAtStartPar +1h 34m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}28 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}28 +& +\sphinxAtStartPar +1h 30m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}28 +& +\sphinxAtStartPar +7m +& +\sphinxAtStartPar +Code review +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}29 +& +\sphinxAtStartPar +1h 38m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}29 +& +\sphinxAtStartPar +2h 39m +& +\sphinxAtStartPar +Documentazione +\\ +\hline +\sphinxAtStartPar +2021\sphinxhyphen{}05\sphinxhyphen{}29 +& +\sphinxAtStartPar +27m +& +\sphinxAtStartPar +Deployment +\\ +\hline +\end{longtable}\sphinxatlongtableend\end{savenotes} + + +\subparagraph{Giovanni Anniballi} +\label{\detokenize{development/sprint3/index:giovanni-anniballi}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +18h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +17/05 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Ricontrollo generale codice, fix piccoli typo +\\ +\hline +\sphinxAtStartPar +18/05 +& +\sphinxAtStartPar +1h +& +\sphinxAtStartPar +Aggiornati files di log e refactoring documentazione +\\ +\hline +\sphinxAtStartPar +21/05 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Studio Jest, valutazione di test sul frontend +\\ +\hline +\sphinxAtStartPar +24/05 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Primi test sulle autorizzazioni +\\ +\hline +\sphinxAtStartPar +26/05 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Fix ai test +\\ +\hline +\sphinxAtStartPar +27/05 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Test autorizzazioni completati, fix +\\ +\hline +\sphinxAtStartPar +28/05 +& +\sphinxAtStartPar +4h +& +\sphinxAtStartPar +Fix test malfunzionanti, refactoring test +\\ +\hline +\sphinxAtStartPar +29/05 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Aggiornamento documentazione, aggiunti ulteriori test seguendo i suggerimenti di SQ +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Giorgio Minoccari} +\label{\detokenize{development/sprint3/index:giorgio-minoccari}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +22h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +17/05 +& +\sphinxAtStartPar +4h +& +\sphinxAtStartPar +Aggiunta associazione tra singoli tweet e condizioni che ne hanno scaturito il download +\\ +\hline +\sphinxAtStartPar +18/05 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Aggiunto salvataggio delle immagini presenti nei tweet e data in cui sono stati postati +\\ +\hline +\sphinxAtStartPar +20/05 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Ristrutturazione del crawler in uno script lanciabile separatamente su tutte le repository +\\ +\hline +\sphinxAtStartPar +21/05 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Aggiunta degli alert e delle azioni che vengono svolte quando scatta il trigger +\\ +\hline +\sphinxAtStartPar +24/05 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Bugfixing +\\ +\hline +\sphinxAtStartPar +25/05 +& +\sphinxAtStartPar +4h +& +\sphinxAtStartPar +Refactoring di sicurezza +\\ +\hline +\sphinxAtStartPar +27/05 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Refactor struttura per poter associare le condizioni degli allarmi ai singoli tweet +\\ +\hline +\sphinxAtStartPar +28/05 +& +\sphinxAtStartPar +6h +& +\sphinxAtStartPar +Completamento generale e bugfixing +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\subparagraph{Lorenzo Balugani} +\label{\detokenize{development/sprint3/index:lorenzo-balugani}} + +\begin{savenotes}\sphinxattablestart +\centering +\begin{tabulary}{\linewidth}[t]{|T|T|T|} +\hline +\sphinxstyletheadfamily +\sphinxAtStartPar +Data +&\sphinxstyletheadfamily +\sphinxAtStartPar +Durata +&\sphinxstyletheadfamily +\sphinxAtStartPar +Attività +\\ +\hline\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +22h +&\sphinxstyletheadfamily +\sphinxAtStartPar +Totale +\\ +\hline +\sphinxAtStartPar +17/05 +& +\sphinxAtStartPar +4h +& +\sphinxAtStartPar +Bugfixing, supporto alla localizzazione degli errori +\\ +\hline +\sphinxAtStartPar +18/05 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Bugfixing +\\ +\hline +\sphinxAtStartPar +20/05 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +API autorizzazioni, refactoring +\\ +\hline +\sphinxAtStartPar +21/05 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Gestione tweet, rappresentazione tweet +\\ +\hline +\sphinxAtStartPar +24/05 +& +\sphinxAtStartPar +2h +& +\sphinxAtStartPar +Bugfixing +\\ +\hline +\sphinxAtStartPar +25/05 +& +\sphinxAtStartPar +4h +& +\sphinxAtStartPar +Docs, refactoring +\\ +\hline +\sphinxAtStartPar +27/05 +& +\sphinxAtStartPar +3h +& +\sphinxAtStartPar +Bugfixing +\\ +\hline +\sphinxAtStartPar +28/05 +& +\sphinxAtStartPar +6h +& +\sphinxAtStartPar +Bugfixing +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + + +\section{Burndown chart complessiva} +\label{\detokenize{development/process:burndown-chart-complessiva}} +\noindent\sphinxincludegraphics{{Burndown4}.png} + + +\chapter{Artefatti} +\label{\detokenize{development/artifacts:artefatti}}\label{\detokenize{development/artifacts::doc}} +\sphinxAtStartPar +Gran parte degli artefatti sono stati elencati nei singoli sprint. + +\sphinxAtStartPar +Vengono di seguito elencati alcuni artefatti che non sono stati precedentemente elencati: + + +\section{Diagrammi UML} +\label{\detokenize{development/artifacts:diagrammi-uml}} +\sphinxAtStartPar +Per la realizzazione dei diagrammi UML, utili nelle fasi iniziali di progettazione di N.E.S.T., è stato utilizzato +DrawIO (oggi diagrams.net). Si allega il file con il progetto UML. +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{Diagrammi UML}} + +\end{itemize} + +\sphinxAtStartPar +Dopo aver scaricato il file, recarsi su \sphinxurl{https://app.diagrams.net/} e tramite il menù \sphinxcode{\sphinxupquote{File \(\rightarrow\) Open from \(\rightarrow\) Device...}} +caricare il file appena scaricato. + + +\section{Demo} +\label{\detokenize{development/artifacts:demo}} + +\subsection{Video} +\label{\detokenize{development/artifacts:video}} +\sphinxAtStartPar +Il video di demo è disponibile al seguente URL: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxurl{https://drive.google.com/file/d/15o70Ffe51CNj8LTKHC9dGiqRVnbv9UpZ/view} + +\end{itemize} + + +\subsection{Interattiva} +\label{\detokenize{development/artifacts:interattiva}} +\sphinxAtStartPar +Una demo interattiva è disponibile ai seguenti URL: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxurl{https://api.nest.steffo.eu/} (backend) + +\item {} +\sphinxAtStartPar +\sphinxurl{https://prod.nest.steffo.eu/} (frontend pre\sphinxhyphen{}popolato) + +\item {} +\sphinxAtStartPar +\sphinxurl{https://docs.nest.steffo.eu/} (documentazione e relazione) + +\end{itemize} + + +\chapter{Conclusioni} +\label{\detokenize{development/conclusions:conclusioni}}\label{\detokenize{development/conclusions::doc}}\begin{itemize} +\item {} +\sphinxAtStartPar +Il team dimostra di aver \sphinxstylestrong{imparato numerose nuove nozioni}, acquisendo dimestichezza con vari linguaggi e software, +come: +\begin{itemize} +\item {} +\sphinxAtStartPar +Python + +\item {} +\sphinxAtStartPar +NodeJS + +\item {} +\sphinxAtStartPar +reStructuredText + +\item {} +\sphinxAtStartPar +IntelliJ IDEA + +\item {} +\sphinxAtStartPar +Taiga + +\item {} +\sphinxAtStartPar +Git + +\item {} +\sphinxAtStartPar +GitLab + +\item {} +\sphinxAtStartPar +SystemD + +\item {} +\sphinxAtStartPar +\sphinxstyleemphasis{Twitter} + +\end{itemize} + +\item {} +\sphinxAtStartPar +Il team ritiene che l\textquotesingle{}\sphinxstylestrong{organizzazione e collaborazione} tra tutti i membri del gruppo è stata eccellente: +\begin{itemize} +\item {} +\sphinxAtStartPar +Ciascuno aveva un suo compito e non sono sorti conflitti. + +\item {} +\sphinxAtStartPar +L\textquotesingle{}organizzazione strutturata ci ha permesso di procedere a ritmo sostenuto dall\textquotesingle{}inizio alla fine, +realizzando un prodotto efficace e modulare. + +\end{itemize} + +\item {} +\sphinxAtStartPar +Parte del team ritiene che \sphinxstylestrong{alcune attività}, come le varie riunioni, \sphinxstylestrong{sarebbero state più edificanti e veloci} se +fossero state effettuate in presenza, purtroppo la pandemia e la distanza non lo hanno reso possibile. + +\item {} +\sphinxAtStartPar +Parte del team ritiene invece che il \sphinxstylestrong{lavoro a distanza} ci ha permesso di adottare metodi migliori di +\sphinxstylestrong{comunicazione asincrona}, permettendo ai membri di lavorare indipendentemente uno dall\textquotesingle{}altro in base alle proprie +disponibilità di tempo. + +\end{itemize} + + +\chapter{Suggerimenti relativi al corso} +\label{\detokenize{development/suggestions:suggerimenti-relativi-al-corso}}\label{\detokenize{development/suggestions::doc}}\begin{itemize} +\item {} +\sphinxAtStartPar +Il team concorda sull\textquotesingle{}\sphinxstylestrong{utilità del progetto} poiché permette di utilizzare le nozioni viste a lezione nella pratica, +facendo quindi esperienza sulle varie metodologie da adottare e le varie problematiche in cui si può incorrere. + +\item {} +\sphinxAtStartPar +Il team concorda nel dire che \sphinxstylestrong{il progetto è eccessivamente corposo}: +\begin{itemize} +\item {} +\sphinxAtStartPar +Tecnicamente a 6 CFU dovrebbero corrispondere circa 125 ore di lavoro, mentre questo progetto ne ha richieste molte di più. + +\item {} +\sphinxAtStartPar +Suggeriamo quindi di \sphinxstylestrong{alleggerire significativamente il carico di lavoro}, e renderlo più proporzionato ai +crediti previsti. + +\end{itemize} + +\item {} +\sphinxAtStartPar +Il team suggerisce di lasciare agli studenti \sphinxstylestrong{scelta completamente libera sugli strumenti da adottare}, in quanto si +sono verificati svariati problemi con quelli previsti dal corso: +\begin{itemize} +\item {} +\sphinxAtStartPar +Le istanze di Taiga, GitLab e SonarQube ospitate dall\textquotesingle{}Università si sono dimostrate inaffidabili, +portando il team a dover ospitare le proprie e quindi a perderci una fetta significativa del proprio tempo. +\begin{itemize} +\item {} +\sphinxAtStartPar +CAS è supportato solo su Debian, e lo script di installazione esegue operazioni con effetti collaterali sul +Docker del sistema host. + +\item {} +\sphinxAtStartPar +L\textquotesingle{}installazione di Taiga tramite Docker Compose ha richiesto 5 ore, in quanto una race condition presente nel +file \sphinxcode{\sphinxupquote{docker\sphinxhyphen{}compose.yml}} impediva al software di raggiungere il database. + +\item {} +\sphinxAtStartPar +L\textquotesingle{}installazione e manutenzione di GitLab ha richiesto 5 ore, e richiede competenze di amministrazione di sistema +avanzate che sono oltre il livello dello studente medio del terzo anno di Informatica. + +\end{itemize} + +\item {} +\sphinxAtStartPar +Taiga, per quanto funzionale, è un po\textquotesingle{} acerbo a livello di User Experience, il che ha portato a svariati grattacapi +durante il suo utilizzo da parte del team. +\begin{itemize} +\item {} +\sphinxAtStartPar +Inoltre, è in parte superfluo: quasi tutte le funzionalità che fornisce sono già implementate sui sistemi di issues +di GitHub e GitLab. + +\end{itemize} + +\item {} +\sphinxAtStartPar +Utilizzare GitLab invece che il più popolare GitHub impedisce di sfruttare la licenza gratuita o \sphinxhref{https://education.github.com/pack}{universitaria} di +numerosi strumenti di Continuous Integration e Deployment, quali \sphinxhref{https://github.com/features/actions}{GitHub Actions}, \sphinxhref{https://readthedocs.org/}{Read the Docs} e \sphinxhref{https://render.com/}{Render}. + +\item {} +\sphinxAtStartPar +SonarQube, per quanto semplice da installare, è molto complesso da utilizzare: il team ha necessitato di parecchie +ore per capirne il funzionamento. +\begin{itemize} +\item {} +\sphinxAtStartPar +È forse anche superfluo: tutte le issues che ha segnalato erano già state segnalate in precedenza dal sistema di +linting di IntelliJ IDEA Ultimate. + +\end{itemize} + +\end{itemize} + +\item {} +\sphinxAtStartPar +Il team concorda nel dire che sarebbe molto utile la \sphinxstylestrong{partecipazione diretta del prof} durante le prime fasi di +progetto, all\textquotesingle{}inizio del lavoro, per instradare il gruppo nella giusta direzione ed evitare l\textquotesingle{}effetto "salto nel buio": +\begin{itemize} +\item {} +\sphinxAtStartPar +Sarebbe stato piacevole avere una spiegazione più dettagliata delle regole dello Scrumble, e soprattutto sul come +giocarlo a distanza. + +\item {} +\sphinxAtStartPar +Sarebbero state utili lezioni più specifica sui tool da utilizzare, come SonarQube. + +\end{itemize} + +\end{itemize} + + +\chapter{Meta\sphinxhyphen{}documentazione} +\label{\detokenize{code/meta/index:meta-documentazione}}\label{\detokenize{code/meta/index::doc}} +\sphinxAtStartPar +La documentazione è scritta in \sphinxhref{https://docutils.sourceforge.io/rst.html}{reStructuredText}, ed è generata con +\sphinxhref{https://www.sphinx-doc.org/en/master/}{Sphinx}. + +\sphinxAtStartPar +I dati relativi alla documentazione si trovano nella directory standard \sphinxcode{\sphinxupquote{/docs}}; +in particolare, le sorgenti reStructuredText si trovano in \sphinxcode{\sphinxupquote{/docs/source}}, +mentre l\textquotesingle{}ultima versione compilata si trova in \sphinxcode{\sphinxupquote{/docs/build}}. + +\sphinxAtStartPar +Questa struttura permetterebbe l\textquotesingle{}integrazione con lo strumento di "Continuous Documentation" +\sphinxhref{https://readthedocs.com/}{ReadTheDocs}, qualora il progetto fosse ospitato su GitHub o disponessimo di una licenza +almeno \sphinxhref{https://readthedocs.com/pricing/}{Basic}. + + +\section{Compilazione con IntelliJ IDEA} +\label{\detokenize{code/meta/index:compilazione-con-intellij-idea}} +\sphinxAtStartPar +È possibile compilare manualmente la documentazione con IntelliJ IDEA. + +\sphinxAtStartPar +Su sistemi Linux, è disponibile la Run Configuration \sphinxcode{\sphinxupquote{Docs}}, che compilerà la versione HTML della documentazione se +eseguita. + +\noindent\sphinxincludegraphics{{docsRunConfig}.png} + + +\section{Compilazione con GNU Make} +\label{\detokenize{code/meta/index:compilazione-con-gnu-make}} +\sphinxAtStartPar +È possibile compilare manualmente la documentazione con GNU Make. + +\sphinxAtStartPar +Come prima cosa, è necessario {\hyperref[\detokenize{guide/installation:installare-le-dipendenze-python}]{\sphinxcrossref{\DUrole{std,std-ref}{Installare le dipendenze Python}}}} del progetto: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{user:g2\PYGZhy{}progetto\PYGZdl{} }poetry install +\end{sphinxVerbatim} + +\sphinxAtStartPar +Poi, si entri all\textquotesingle{}interno del virtual environment: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{user:g2\PYGZhy{}progetto\PYGZdl{} }poetry shell +\end{sphinxVerbatim} + +\sphinxAtStartPar +Una volta all\textquotesingle{}interno del venv, si entri nella cartella della documentazione: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{user:g2\PYGZhy{}progetto\PYGZdl{} }\PYG{n+nb}{cd} docs +\end{sphinxVerbatim} + +\sphinxAtStartPar +Infine, si esegua il target \sphinxcode{\sphinxupquote{html}} del Makefile: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{user:g2\PYGZhy{}progetto/docs\PYGZdl{} }make html +\end{sphinxVerbatim} + + +\section{Compilazione con Windows Powershell} +\label{\detokenize{code/meta/index:compilazione-con-windows-powershell}} +\sphinxAtStartPar +È possibile compilare manualmente la documentazione con Windows Powershell. + +\sphinxAtStartPar +Come prima cosa, è necessario {\hyperref[\detokenize{guide/installation:installare-le-dipendenze-python}]{\sphinxcrossref{\DUrole{std,std-ref}{Installare le dipendenze Python}}}} del progetto: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{g2\PYGZhy{}progetto\PYGZgt{}} poetry install +\end{sphinxVerbatim} + +\sphinxAtStartPar +Poi, si entri all\textquotesingle{}interno del virtual environment: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{g2\PYGZhy{}progetto\PYGZgt{}} poetry shell +\end{sphinxVerbatim} + +\sphinxAtStartPar +Una volta all\textquotesingle{}interno del venv, si entri nella cartella della documentazione: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{g2\PYGZhy{}progetto\PYGZgt{}} \PYG{k}{cd} docs +\end{sphinxVerbatim} + +\sphinxAtStartPar +Infine, si esegua lo script \sphinxcode{\sphinxupquote{make.bat}} con il parametro \sphinxcode{\sphinxupquote{html}}: + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{g+gp}{g2\PYGZhy{}progetto/docs\PYGZgt{}} make html +\end{sphinxVerbatim} + + +\chapter{Struttura del database} +\label{\detokenize{code/database/index:struttura-del-database}}\label{\detokenize{code/database/index::doc}}\index{Alert (classe built\sphinxhyphen{}in)@\spxentry{Alert}\spxextra{classe built\sphinxhyphen{}in}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/database/index:Alert}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Alert}}} +\sphinxAtStartPar +Un alert è un allarme impostato da un utente che si "attiva" quando un numero di tweet che rispetta certe condizioni +(poste in and oppure or) supera una certa soglia, indicata dall\textquotesingle{}utente. + +\sphinxAtStartPar +Ogni volta che l\textquotesingle{}alert si attiva, viene creata una "notifica", ovvero una entry nella tabella Notifications. +Questo permette di tenere conto del numero di volte in cui l\textquotesingle{}alert viene triggerato. + +\sphinxAtStartPar +Gli alert sono legati al repository di appartenenza, e quando uno di essi viene allertato viene inviata una mail +all\textquotesingle{}admin e pubblicato un tweet sull\textquotesingle{}account Twitter usato per le analisi. + +\sphinxAtStartPar +La tabella alert contiene le seguenti colonne: + + +\begin{savenotes}\sphinxattablestart +\raggedright +\begin{tabulary}{\linewidth}[t]{|T|T|} +\hline +\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +Definizioni +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +id (INTEGER, PK) +& +\sphinxAtStartPar +l\textquotesingle{}identificativo dell\textquotesingle{}alert +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +name (VARCHAR, NOT NULL) +& +\sphinxAtStartPar +il nome dell\textquotesingle{}alert +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +limit (INTEGER, NOT NULL) +& +\sphinxAtStartPar +il numero di tweet che innescano l\textquotesingle{}alert +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +window\_size (INTEGER, NOT NULL) +& +\sphinxAtStartPar +numero di ore in cui il limit può venire superato +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +evaluation\_mode (ENUM/SMALLINT, NOT NULL) +& +\sphinxAtStartPar +può essere posto a all\_or oppure all\_not +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +repository\_id (INTEGER, FK, NOT NULL) +&\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + +\end{fulllineitems} + +\index{Authorization (classe built\sphinxhyphen{}in)@\spxentry{Authorization}\spxextra{classe built\sphinxhyphen{}in}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/database/index:Authorization}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Authorization}}} +\sphinxAtStartPar +Una autorizzazione è un\textquotesingle{}entità che rappresenta il permesso, concesso dal creatore del repository ad un altro utente, +di ispezionare il contenuto di un repo e di eseguire analisi su di esso. + +\sphinxAtStartPar +La tabella authorization contiene le seguenti colonne: + + +\begin{savenotes}\sphinxattablestart +\raggedright +\begin{tabulary}{\linewidth}[t]{|T|T|} +\hline +\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +Definizioni +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +rid (INTEGER, PK, FK) +& +\sphinxAtStartPar +id del repository +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +email (VARCHAR, PK, FK) +& +\sphinxAtStartPar +email dell\textquotesingle{}utente +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + +\end{fulllineitems} + +\index{Composed (classe built\sphinxhyphen{}in)@\spxentry{Composed}\spxextra{classe built\sphinxhyphen{}in}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/database/index:Composed}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Composed}}} +\sphinxAtStartPar +Composed è una tabella le cui righe indicano l\textquotesingle{}appartenenza di un Tweet ad un certo repository. + +\sphinxAtStartPar +La tabella Composed contiene le seguenti colonne: + + +\begin{savenotes}\sphinxattablestart +\raggedright +\begin{tabulary}{\linewidth}[t]{|T|T|} +\hline +\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +Definizioni +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +rid (INTEGER, PK, FK) +& +\sphinxAtStartPar +id del repository +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +snowflake (VARCHAR, PK, FK) +& +\sphinxAtStartPar +id del tweet +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + +\end{fulllineitems} + +\index{Condition (classe built\sphinxhyphen{}in)@\spxentry{Condition}\spxextra{classe built\sphinxhyphen{}in}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/database/index:Condition}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Condition}}} +\sphinxAtStartPar +Una condizione è un elemento che viene usato da repository e alert per cercare e classificare i tweet. + +\sphinxAtStartPar +Le condizioni possono essere di diversi tipi: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxstylestrong{hashtag}: valore \sphinxcode{\sphinxupquote{0}}, richiede che il tweet contenga un dato hashtag + +\item {} +\sphinxAtStartPar +\sphinxstylestrong{time}: valore \sphinxcode{\sphinxupquote{2}}, richiede che il tweet sia stato pubblicato prima o dopo una certa data + +\item {} +\sphinxAtStartPar +\sphinxstylestrong{coordinates}: valore \sphinxcode{\sphinxupquote{3}}, richiede che il tweet sia stato pubblicato entro un certo raggio da delle +coordinate + +\item {} +\sphinxAtStartPar +\sphinxstylestrong{user}: valore \sphinxcode{\sphinxupquote{5}}, richiede che il tweet sia stato pubblicato da un dato utente + +\end{itemize} + +\sphinxAtStartPar +La tabella condition contiene le seguenti colonne: + + +\begin{savenotes}\sphinxattablestart +\raggedright +\begin{tabulary}{\linewidth}[t]{|T|T|} +\hline +\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +Definizioni +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +id (INTEGER, PK) +& +\sphinxAtStartPar +id della condition +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +type (ENUM/SMALLINT, NOT NULL) +& +\sphinxAtStartPar +tipo del contenuto +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +content (VARCHAR, NOT NULL) +& +\sphinxAtStartPar +contenuto della condition +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +repository\_id (INTEGER, FK, NOT NULL) +&\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + +\end{fulllineitems} + +\index{Contains (classe built\sphinxhyphen{}in)@\spxentry{Contains}\spxextra{classe built\sphinxhyphen{}in}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/database/index:Contains}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Contains}}} +\sphinxAtStartPar +Contains è una tabella le cui righe indicano la presenza di una certa condition rispetto ad un certo tweet. + +\sphinxAtStartPar +La tabella contains contiene le seguenti colonne: + + +\begin{savenotes}\sphinxattablestart +\raggedright +\begin{tabulary}{\linewidth}[t]{|T|T|} +\hline +\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +Definizioni +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +cid (INTEGER, PK, FK) +& +\sphinxAtStartPar +id della condition +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +snowflake (VARCHAR, PK, FK) +& +\sphinxAtStartPar +id del tweet +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + +\end{fulllineitems} + +\index{MadeOf (classe built\sphinxhyphen{}in)@\spxentry{MadeOf}\spxextra{classe built\sphinxhyphen{}in}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/database/index:MadeOf}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{MadeOf}}} +\sphinxAtStartPar +MadeOf è una tabella le cui righe indicano il legame tra un alert e una certa condition. + +\sphinxAtStartPar +La tabella madeof contiene le seguenti colonne: + + +\begin{savenotes}\sphinxattablestart +\raggedright +\begin{tabulary}{\linewidth}[t]{|T|T|} +\hline +\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +Definizioni +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +aid (INTEGER, PK, FK) +& +\sphinxAtStartPar +id dell\textquotesingle{}alert +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +cid (INTEGER, PK, FK) +& +\sphinxAtStartPar +id della condition +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + +\end{fulllineitems} + +\index{Notification (classe built\sphinxhyphen{}in)@\spxentry{Notification}\spxextra{classe built\sphinxhyphen{}in}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/database/index:Notification}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Notification}}} +\sphinxAtStartPar +Una notification è un\textquotesingle{}entità che consente di tenere traccia del momento in cui un certo alert si è attivato +per l\textquotesingle{}ultima volta. + +\sphinxAtStartPar +La tabella notification contiene le seguenti colonne: + + +\begin{savenotes}\sphinxattablestart +\raggedright +\begin{tabulary}{\linewidth}[t]{|T|T|} +\hline +\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +Definizioni +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +id (INTEGER, PK) +& +\sphinxAtStartPar +id della notifica +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +ora (TIMESTAMP, NOT NULL) +& +\sphinxAtStartPar +timestamp di attivazione +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +alert\_id (INTEGER, FK, NOT NULL) +&\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + +\end{fulllineitems} + +\index{Repository (classe built\sphinxhyphen{}in)@\spxentry{Repository}\spxextra{classe built\sphinxhyphen{}in}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/database/index:Repository}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Repository}}} +\sphinxAtStartPar +Un repository è un "contenitore" di tweet, a cui sono legati alert, autorizzazioni di lettura e condizioni. + +\sphinxAtStartPar +Le condizioni possono essere messe in and oppure or, inoltre un repository può venire archiviato prima divenire +eliminato. Quando un repository non è archiviato, questo viene riempito di tweet su base oraria, cosa che non +accade se viene archiviato. + +\sphinxAtStartPar +La tabella repository contiene le seguenti colonne: + + +\begin{savenotes}\sphinxattablestart +\raggedright +\begin{tabulary}{\linewidth}[t]{|T|T|} +\hline +\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +Definizioni +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +id (INTEGER, PK) +& +\sphinxAtStartPar +id del repository +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +name (VARCHAR, NOT NULL) +& +\sphinxAtStartPar +nome del repository +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +start (TIMESTAMP) +& +\sphinxAtStartPar +timestamp di partenza del repository +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +end (TIMESTAMP) +& +\sphinxAtStartPar +timestamp di chiusura del repository +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +is\_active (BOOLEAN, NOT NULL) +& +\sphinxAtStartPar +flag per segnalare se il repo è aperto o meno +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +evaluation\_mode (ENUM/SMALLINT, NOT NULL) +& +\sphinxAtStartPar +può essere posto a all\_or oppure all\_not +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +owner\_id (VARCHAR, FK, NOT NULL) +& +\sphinxAtStartPar +email del proprietario +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +is\_deleted (BOOLEAN, NOT NULL) +& +\sphinxAtStartPar +flag per segnalare se l\textquotesingle{}oggetto è eliminato o meno +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + +\end{fulllineitems} + +\index{Tweet (classe built\sphinxhyphen{}in)@\spxentry{Tweet}\spxextra{classe built\sphinxhyphen{}in}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/database/index:Tweet}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Tweet}}} +\sphinxAtStartPar +Un tweet è un\textquotesingle{}entità che viene raccolta dal componente crawler, e quando viene inserita nella base di dati viene +legata ad un repository e alle condition che contiene. Un tweet contiene informazioni relativamente a chi l\textquotesingle{}ha +creato, eventuali immagini, il tempo di creazione, il tempo di inserimento nel db e l\textquotesingle{}opzionale posizione legata +al tweet. + +\sphinxAtStartPar +La tabella tweet contiene le seguenti colonne: + + +\begin{savenotes}\sphinxattablestart +\raggedright +\begin{tabulary}{\linewidth}[t]{|T|T|} +\hline +\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +Definizioni +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +snowflake (VARCHAR, PK) +& +\sphinxAtStartPar +id univoco del tweet +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +content (VARCHAR) +& +\sphinxAtStartPar +contenuto del tweet +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +location (VARCHAR) +& +\sphinxAtStartPar +stringa contenente informazioni sulla posizione +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +place (VARCHAR) +& +\sphinxAtStartPar +riservato per sviluppi futuri +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +poster (VARCHAR) +& +\sphinxAtStartPar +informazioni sull\textquotesingle{}utente che ha creato il tweet +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +insert\_time (TIMESTAMP, NOT NULL) +& +\sphinxAtStartPar +timestamp dell\textquotesingle{}inserimento del tweet +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +image\_url (VARCHAR) +& +\sphinxAtStartPar +link alle immagini, se presenti +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +post\_time (TIMESTAMP) +& +\sphinxAtStartPar +timestamp relativo all\textquotesingle{}invio del tweet +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + +\end{fulllineitems} + +\index{User (classe built\sphinxhyphen{}in)@\spxentry{User}\spxextra{classe built\sphinxhyphen{}in}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/database/index:User}}\pysigline{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{User}}} +\sphinxAtStartPar +Uno user è l\textquotesingle{}utilizzatore della piattaforma. + +\sphinxAtStartPar +E\textquotesingle{} presente di default un utente admin, il quale può creare nuovi utenti. + +\sphinxAtStartPar +La tabella user contiene le seguenti colonne: + + +\begin{savenotes}\sphinxattablestart +\raggedright +\begin{tabulary}{\linewidth}[t]{|T|T|} +\hline +\sphinxstyletheadfamily &\sphinxstyletheadfamily +\sphinxAtStartPar +Definizioni +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +email (VARCHAR, PK) +& +\sphinxAtStartPar +email dell\textquotesingle{}utente +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +username (VARCHAR, NOT NULL) +& +\sphinxAtStartPar +username dell\textquotesingle{}utente +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +password (BYTEARRAY, NOT NULL) +& +\sphinxAtStartPar +sale della password, codificata usando l\textquotesingle{}algoritmo bcrypt +\\ +\hline\sphinxstyletheadfamily +\sphinxAtStartPar +isAdmin (BOOLEAN, NOT NULL) +& +\sphinxAtStartPar +true se l\textquotesingle{}utente è admin +\\ +\hline +\end{tabulary} +\par +\sphinxattableend\end{savenotes} + +\end{fulllineitems} + + + +\chapter{\sphinxstyleliteralintitle{\sphinxupquote{nest\_backend}} \sphinxhyphen{} Web API in Python} +\label{\detokenize{code/backend/index:module-nest_backend}}\label{\detokenize{code/backend/index:nest-backend-web-api-in-python}}\label{\detokenize{code/backend/index::doc}}\index{modulo@\spxentry{modulo}!nest\_backend@\spxentry{nest\_backend}}\index{nest\_backend@\spxentry{nest\_backend}!modulo@\spxentry{modulo}} + +\section{\sphinxstyleliteralintitle{\sphinxupquote{.gestione}} \sphinxhyphen{} Metodi di utility} +\label{\detokenize{code/backend/index:module-nest_backend.gestione}}\label{\detokenize{code/backend/index:gestione-metodi-di-utility}}\index{modulo@\spxentry{modulo}!nest\_backend.gestione@\spxentry{nest\_backend.gestione}}\index{nest\_backend.gestione@\spxentry{nest\_backend.gestione}!modulo@\spxentry{modulo}} +\sphinxAtStartPar +Gestione adds many fancy thingamajigs to the flask application, such as a login system and such. +\index{authenticate() (nel modulo nest\_backend.gestione)@\spxentry{authenticate()}\spxextra{nel modulo nest\_backend.gestione}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.authenticate}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{authenticate}}}{\emph{\DUrole{n}{username}}, \emph{\DUrole{n}{password}}}{} +\sphinxAtStartPar +Authentication method. It checks if the combination of username+password is a valid match. If not, it returns None. +:param username: the user\textquotesingle{}s email +:param password: the user\textquotesingle{}s password +:return: if the credentials are correct, it returns the user. Else, it returns None. + +\end{fulllineitems} + +\index{identity() (nel modulo nest\_backend.gestione)@\spxentry{identity()}\spxextra{nel modulo nest\_backend.gestione}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.identity}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{identity}}}{\emph{\DUrole{n}{payload}}}{} +\sphinxAtStartPar +Authentication verification method. It checks if the user is in fact registered on the server. +It is required by Flask\sphinxhyphen{}JWT, and shouldnt be used alone. +:param payload: the reqest payload. +:return: an User or None. It depends whether the user is actually registered on the platform. + +\end{fulllineitems} + +\index{gen\_password() (nel modulo nest\_backend.gestione)@\spxentry{gen\_password()}\spxextra{nel modulo nest\_backend.gestione}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.gen_password}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{gen\_password}}}{\emph{\DUrole{n}{password}}}{} +\sphinxAtStartPar +It generates an hashed password. +:param password: the password that needs to be hashed. +:return: the password\textquotesingle{}s hash. + +\end{fulllineitems} + +\index{find\_user() (nel modulo nest\_backend.gestione)@\spxentry{find\_user()}\spxextra{nel modulo nest\_backend.gestione}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.find_user}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{find\_user}}}{\emph{\DUrole{n}{email}}}{} +\end{fulllineitems} + +\index{admin\_or\_403() (nel modulo nest\_backend.gestione)@\spxentry{admin\_or\_403()}\spxextra{nel modulo nest\_backend.gestione}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.admin_or_403}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{admin\_or\_403}}}{\emph{\DUrole{n}{f}}}{} +\end{fulllineitems} + +\index{repository\_auth() (nel modulo nest\_backend.gestione)@\spxentry{repository\_auth()}\spxextra{nel modulo nest\_backend.gestione}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.repository_auth}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{repository\_auth}}}{\emph{\DUrole{n}{f}}}{} +\end{fulllineitems} + +\index{json\_request\_authorizer() (nel modulo nest\_backend.gestione)@\spxentry{json\_request\_authorizer()}\spxextra{nel modulo nest\_backend.gestione}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.json_request_authorizer}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{json\_request\_authorizer}}}{\emph{\DUrole{n}{json}}, \emph{\DUrole{n}{serializable}}}{} +\end{fulllineitems} + +\index{json\_error() (nel modulo nest\_backend.gestione)@\spxentry{json\_error()}\spxextra{nel modulo nest\_backend.gestione}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.json_error}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{json\_error}}}{\emph{\DUrole{n}{msg}}, \emph{\DUrole{n}{code}\DUrole{o}{=}\DUrole{default_value}{\textquotesingle{}errorUnknownError\textquotesingle{}}}}{} +\sphinxAtStartPar +Returns an error in json format +:param code: the code of the error according to the spec. +:param msg: the error message. +:return: a json formatted string. + +\end{fulllineitems} + +\index{json\_success() (nel modulo nest\_backend.gestione)@\spxentry{json\_success()}\spxextra{nel modulo nest\_backend.gestione}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.json_success}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{json\_success}}}{\emph{\DUrole{n}{data}}}{} +\sphinxAtStartPar +An happy little function. Its happy because the operation was successful. +:param data: the thing you want to be returned +:return: a json formatted string + +\end{fulllineitems} + +\index{error\_handler() (nel modulo nest\_backend.gestione)@\spxentry{error\_handler()}\spxextra{nel modulo nest\_backend.gestione}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.error_handler}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{error\_handler}}}{\emph{\DUrole{n}{e}}}{} +\end{fulllineitems} + +\index{hashtag\_validator() (nel modulo nest\_backend.gestione)@\spxentry{hashtag\_validator()}\spxextra{nel modulo nest\_backend.gestione}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.gestione.hashtag_validator}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_backend.gestione.}}\sphinxbfcode{\sphinxupquote{hashtag\_validator}}}{\emph{\DUrole{n}{hashtag}}}{} +\end{fulllineitems} + + + +\section{\sphinxstyleliteralintitle{\sphinxupquote{.database}} \sphinxhyphen{} Database} +\label{\detokenize{code/backend/index:module-nest_backend.database}}\label{\detokenize{code/backend/index:database-database}}\index{modulo@\spxentry{modulo}!nest\_backend.database@\spxentry{nest\_backend.database}}\index{nest\_backend.database@\spxentry{nest\_backend.database}!modulo@\spxentry{modulo}} +\sphinxAtStartPar +This module imports all the tables and the declarative base + + +\subsection{\sphinxstyleliteralintitle{\sphinxupquote{.base}} \sphinxhyphen{} Estensione flask} +\label{\detokenize{code/backend/index:module-nest_backend.database.base}}\label{\detokenize{code/backend/index:base-estensione-flask}}\index{modulo@\spxentry{modulo}!nest\_backend.database.base@\spxentry{nest\_backend.database.base}}\index{nest\_backend.database.base@\spxentry{nest\_backend.database.base}!modulo@\spxentry{modulo}} + +\subsection{\sphinxstyleliteralintitle{\sphinxupquote{.tables}} \sphinxhyphen{} Tabelle} +\label{\detokenize{code/backend/index:module-nest_backend.database.tables}}\label{\detokenize{code/backend/index:tables-tabelle}}\index{modulo@\spxentry{modulo}!nest\_backend.database.tables@\spxentry{nest\_backend.database.tables}}\index{nest\_backend.database.tables@\spxentry{nest\_backend.database.tables}!modulo@\spxentry{modulo}} +\sphinxAtStartPar +This module contains all database classes. +\index{Alert (classe in nest\_backend.database.tables)@\spxentry{Alert}\spxextra{classe in nest\_backend.database.tables}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Alert}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote} + +\sphinxAtStartPar +Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}} +\end{quote} +\index{id (nest\_backend.database.tables.Alert attributo)@\spxentry{id}\spxextra{nest\_backend.database.tables.Alert attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +\end{fulllineitems} + +\index{name (nest\_backend.database.tables.Alert attributo)@\spxentry{name}\spxextra{nest\_backend.database.tables.Alert attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.name}}\pysigline{\sphinxbfcode{\sphinxupquote{name}}} +\end{fulllineitems} + +\index{limit (nest\_backend.database.tables.Alert attributo)@\spxentry{limit}\spxextra{nest\_backend.database.tables.Alert attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.limit}}\pysigline{\sphinxbfcode{\sphinxupquote{limit}}} +\end{fulllineitems} + +\index{window\_size (nest\_backend.database.tables.Alert attributo)@\spxentry{window\_size}\spxextra{nest\_backend.database.tables.Alert attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.window_size}}\pysigline{\sphinxbfcode{\sphinxupquote{window\_size}}} +\end{fulllineitems} + +\index{evaluation\_mode (nest\_backend.database.tables.Alert attributo)@\spxentry{evaluation\_mode}\spxextra{nest\_backend.database.tables.Alert attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.evaluation_mode}}\pysigline{\sphinxbfcode{\sphinxupquote{evaluation\_mode}}} +\end{fulllineitems} + +\index{repository\_id (nest\_backend.database.tables.Alert attributo)@\spxentry{repository\_id}\spxextra{nest\_backend.database.tables.Alert attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.repository_id}}\pysigline{\sphinxbfcode{\sphinxupquote{repository\_id}}} +\end{fulllineitems} + +\index{repository (nest\_backend.database.tables.Alert attributo)@\spxentry{repository}\spxextra{nest\_backend.database.tables.Alert attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.repository}}\pysigline{\sphinxbfcode{\sphinxupquote{repository}}} +\end{fulllineitems} + +\index{notifications (nest\_backend.database.tables.Alert attributo)@\spxentry{notifications}\spxextra{nest\_backend.database.tables.Alert attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.notifications}}\pysigline{\sphinxbfcode{\sphinxupquote{notifications}}} +\end{fulllineitems} + +\index{conditions (nest\_backend.database.tables.Alert attributo)@\spxentry{conditions}\spxextra{nest\_backend.database.tables.Alert attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.conditions}}\pysigline{\sphinxbfcode{\sphinxupquote{conditions}}} +\end{fulllineitems} + +\index{to\_json() (nest\_backend.database.tables.Alert metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Alert metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.to_json}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{to\_json}}}{}{} +\end{fulllineitems} + +\index{\_\_init\_\_() (nest\_backend.database.tables.Alert metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Alert metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Alert.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{} +\sphinxAtStartPar +A simple constructor that allows initialization from kwargs. + +\sphinxAtStartPar +Sets attributes on the constructed instance using the names and +values in \sphinxcode{\sphinxupquote{kwargs}}. + +\sphinxAtStartPar +Only keys that are present as +attributes of the instance\textquotesingle{}s class are allowed. These could be, +for example, any mapped columns or relationships. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{Authorization (classe in nest\_backend.database.tables)@\spxentry{Authorization}\spxextra{classe in nest\_backend.database.tables}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Authorization}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Authorization}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote} + +\sphinxAtStartPar +Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}} +\end{quote} +\index{rid (nest\_backend.database.tables.Authorization attributo)@\spxentry{rid}\spxextra{nest\_backend.database.tables.Authorization attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Authorization.rid}}\pysigline{\sphinxbfcode{\sphinxupquote{rid}}} +\end{fulllineitems} + +\index{email (nest\_backend.database.tables.Authorization attributo)@\spxentry{email}\spxextra{nest\_backend.database.tables.Authorization attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Authorization.email}}\pysigline{\sphinxbfcode{\sphinxupquote{email}}} +\end{fulllineitems} + +\index{repository (nest\_backend.database.tables.Authorization attributo)@\spxentry{repository}\spxextra{nest\_backend.database.tables.Authorization attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Authorization.repository}}\pysigline{\sphinxbfcode{\sphinxupquote{repository}}} +\end{fulllineitems} + +\index{user (nest\_backend.database.tables.Authorization attributo)@\spxentry{user}\spxextra{nest\_backend.database.tables.Authorization attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Authorization.user}}\pysigline{\sphinxbfcode{\sphinxupquote{user}}} +\end{fulllineitems} + +\index{to\_json() (nest\_backend.database.tables.Authorization metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Authorization metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Authorization.to_json}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{to\_json}}}{}{} +\end{fulllineitems} + +\index{\_\_init\_\_() (nest\_backend.database.tables.Authorization metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Authorization metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Authorization.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{} +\sphinxAtStartPar +A simple constructor that allows initialization from kwargs. + +\sphinxAtStartPar +Sets attributes on the constructed instance using the names and +values in \sphinxcode{\sphinxupquote{kwargs}}. + +\sphinxAtStartPar +Only keys that are present as +attributes of the instance\textquotesingle{}s class are allowed. These could be, +for example, any mapped columns or relationships. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{Composed (classe in nest\_backend.database.tables)@\spxentry{Composed}\spxextra{classe in nest\_backend.database.tables}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Composed}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Composed}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote} + +\sphinxAtStartPar +Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}} +\end{quote} +\index{rid (nest\_backend.database.tables.Composed attributo)@\spxentry{rid}\spxextra{nest\_backend.database.tables.Composed attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Composed.rid}}\pysigline{\sphinxbfcode{\sphinxupquote{rid}}} +\end{fulllineitems} + +\index{snowflake (nest\_backend.database.tables.Composed attributo)@\spxentry{snowflake}\spxextra{nest\_backend.database.tables.Composed attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Composed.snowflake}}\pysigline{\sphinxbfcode{\sphinxupquote{snowflake}}} +\end{fulllineitems} + +\index{repository (nest\_backend.database.tables.Composed attributo)@\spxentry{repository}\spxextra{nest\_backend.database.tables.Composed attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Composed.repository}}\pysigline{\sphinxbfcode{\sphinxupquote{repository}}} +\end{fulllineitems} + +\index{tweet (nest\_backend.database.tables.Composed attributo)@\spxentry{tweet}\spxextra{nest\_backend.database.tables.Composed attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Composed.tweet}}\pysigline{\sphinxbfcode{\sphinxupquote{tweet}}} +\end{fulllineitems} + +\index{\_\_init\_\_() (nest\_backend.database.tables.Composed metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Composed metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Composed.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{} +\sphinxAtStartPar +A simple constructor that allows initialization from kwargs. + +\sphinxAtStartPar +Sets attributes on the constructed instance using the names and +values in \sphinxcode{\sphinxupquote{kwargs}}. + +\sphinxAtStartPar +Only keys that are present as +attributes of the instance\textquotesingle{}s class are allowed. These could be, +for example, any mapped columns or relationships. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{Condition (classe in nest\_backend.database.tables)@\spxentry{Condition}\spxextra{classe in nest\_backend.database.tables}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Condition}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote} + +\sphinxAtStartPar +Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}} +\end{quote} +\index{id (nest\_backend.database.tables.Condition attributo)@\spxentry{id}\spxextra{nest\_backend.database.tables.Condition attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +\end{fulllineitems} + +\index{type (nest\_backend.database.tables.Condition attributo)@\spxentry{type}\spxextra{nest\_backend.database.tables.Condition attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.type}}\pysigline{\sphinxbfcode{\sphinxupquote{type}}} +\end{fulllineitems} + +\index{content (nest\_backend.database.tables.Condition attributo)@\spxentry{content}\spxextra{nest\_backend.database.tables.Condition attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.content}}\pysigline{\sphinxbfcode{\sphinxupquote{content}}} +\end{fulllineitems} + +\index{repository\_id (nest\_backend.database.tables.Condition attributo)@\spxentry{repository\_id}\spxextra{nest\_backend.database.tables.Condition attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.repository_id}}\pysigline{\sphinxbfcode{\sphinxupquote{repository\_id}}} +\end{fulllineitems} + +\index{repository (nest\_backend.database.tables.Condition attributo)@\spxentry{repository}\spxextra{nest\_backend.database.tables.Condition attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.repository}}\pysigline{\sphinxbfcode{\sphinxupquote{repository}}} +\end{fulllineitems} + +\index{tweets (nest\_backend.database.tables.Condition attributo)@\spxentry{tweets}\spxextra{nest\_backend.database.tables.Condition attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.tweets}}\pysigline{\sphinxbfcode{\sphinxupquote{tweets}}} +\end{fulllineitems} + +\index{alerts (nest\_backend.database.tables.Condition attributo)@\spxentry{alerts}\spxextra{nest\_backend.database.tables.Condition attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.alerts}}\pysigline{\sphinxbfcode{\sphinxupquote{alerts}}} +\end{fulllineitems} + +\index{to\_json() (nest\_backend.database.tables.Condition metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Condition metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.to_json}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{to\_json}}}{}{} +\end{fulllineitems} + +\index{\_\_init\_\_() (nest\_backend.database.tables.Condition metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Condition metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Condition.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{} +\sphinxAtStartPar +A simple constructor that allows initialization from kwargs. + +\sphinxAtStartPar +Sets attributes on the constructed instance using the names and +values in \sphinxcode{\sphinxupquote{kwargs}}. + +\sphinxAtStartPar +Only keys that are present as +attributes of the instance\textquotesingle{}s class are allowed. These could be, +for example, any mapped columns or relationships. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{Contains (classe in nest\_backend.database.tables)@\spxentry{Contains}\spxextra{classe in nest\_backend.database.tables}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Contains}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Contains}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote} + +\sphinxAtStartPar +Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}} +\end{quote} +\index{cid (nest\_backend.database.tables.Contains attributo)@\spxentry{cid}\spxextra{nest\_backend.database.tables.Contains attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Contains.cid}}\pysigline{\sphinxbfcode{\sphinxupquote{cid}}} +\end{fulllineitems} + +\index{snowflake (nest\_backend.database.tables.Contains attributo)@\spxentry{snowflake}\spxextra{nest\_backend.database.tables.Contains attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Contains.snowflake}}\pysigline{\sphinxbfcode{\sphinxupquote{snowflake}}} +\end{fulllineitems} + +\index{condition (nest\_backend.database.tables.Contains attributo)@\spxentry{condition}\spxextra{nest\_backend.database.tables.Contains attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Contains.condition}}\pysigline{\sphinxbfcode{\sphinxupquote{condition}}} +\end{fulllineitems} + +\index{tweet (nest\_backend.database.tables.Contains attributo)@\spxentry{tweet}\spxextra{nest\_backend.database.tables.Contains attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Contains.tweet}}\pysigline{\sphinxbfcode{\sphinxupquote{tweet}}} +\end{fulllineitems} + +\index{\_\_init\_\_() (nest\_backend.database.tables.Contains metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Contains metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Contains.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{} +\sphinxAtStartPar +A simple constructor that allows initialization from kwargs. + +\sphinxAtStartPar +Sets attributes on the constructed instance using the names and +values in \sphinxcode{\sphinxupquote{kwargs}}. + +\sphinxAtStartPar +Only keys that are present as +attributes of the instance\textquotesingle{}s class are allowed. These could be, +for example, any mapped columns or relationships. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{Notification (classe in nest\_backend.database.tables)@\spxentry{Notification}\spxextra{classe in nest\_backend.database.tables}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Notification}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Notification}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote} + +\sphinxAtStartPar +Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}} +\end{quote} +\index{id (nest\_backend.database.tables.Notification attributo)@\spxentry{id}\spxextra{nest\_backend.database.tables.Notification attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Notification.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +\end{fulllineitems} + +\index{ora (nest\_backend.database.tables.Notification attributo)@\spxentry{ora}\spxextra{nest\_backend.database.tables.Notification attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Notification.ora}}\pysigline{\sphinxbfcode{\sphinxupquote{ora}}} +\end{fulllineitems} + +\index{alert\_id (nest\_backend.database.tables.Notification attributo)@\spxentry{alert\_id}\spxextra{nest\_backend.database.tables.Notification attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Notification.alert_id}}\pysigline{\sphinxbfcode{\sphinxupquote{alert\_id}}} +\end{fulllineitems} + +\index{alert (nest\_backend.database.tables.Notification attributo)@\spxentry{alert}\spxextra{nest\_backend.database.tables.Notification attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Notification.alert}}\pysigline{\sphinxbfcode{\sphinxupquote{alert}}} +\end{fulllineitems} + +\index{to\_json() (nest\_backend.database.tables.Notification metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Notification metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Notification.to_json}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{to\_json}}}{}{} +\end{fulllineitems} + +\index{\_\_init\_\_() (nest\_backend.database.tables.Notification metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Notification metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Notification.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{} +\sphinxAtStartPar +A simple constructor that allows initialization from kwargs. + +\sphinxAtStartPar +Sets attributes on the constructed instance using the names and +values in \sphinxcode{\sphinxupquote{kwargs}}. + +\sphinxAtStartPar +Only keys that are present as +attributes of the instance\textquotesingle{}s class are allowed. These could be, +for example, any mapped columns or relationships. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{Repository (classe in nest\_backend.database.tables)@\spxentry{Repository}\spxextra{classe in nest\_backend.database.tables}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Repository}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote} + +\sphinxAtStartPar +Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}} +\end{quote} +\index{id (nest\_backend.database.tables.Repository attributo)@\spxentry{id}\spxextra{nest\_backend.database.tables.Repository attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.id}}\pysigline{\sphinxbfcode{\sphinxupquote{id}}} +\end{fulllineitems} + +\index{name (nest\_backend.database.tables.Repository attributo)@\spxentry{name}\spxextra{nest\_backend.database.tables.Repository attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.name}}\pysigline{\sphinxbfcode{\sphinxupquote{name}}} +\end{fulllineitems} + +\index{start (nest\_backend.database.tables.Repository attributo)@\spxentry{start}\spxextra{nest\_backend.database.tables.Repository attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.start}}\pysigline{\sphinxbfcode{\sphinxupquote{start}}} +\end{fulllineitems} + +\index{end (nest\_backend.database.tables.Repository attributo)@\spxentry{end}\spxextra{nest\_backend.database.tables.Repository attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.end}}\pysigline{\sphinxbfcode{\sphinxupquote{end}}} +\end{fulllineitems} + +\index{is\_active (nest\_backend.database.tables.Repository attributo)@\spxentry{is\_active}\spxextra{nest\_backend.database.tables.Repository attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.is_active}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_active}}} +\end{fulllineitems} + +\index{is\_deleted (nest\_backend.database.tables.Repository attributo)@\spxentry{is\_deleted}\spxextra{nest\_backend.database.tables.Repository attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.is_deleted}}\pysigline{\sphinxbfcode{\sphinxupquote{is\_deleted}}} +\end{fulllineitems} + +\index{evaluation\_mode (nest\_backend.database.tables.Repository attributo)@\spxentry{evaluation\_mode}\spxextra{nest\_backend.database.tables.Repository attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.evaluation_mode}}\pysigline{\sphinxbfcode{\sphinxupquote{evaluation\_mode}}} +\end{fulllineitems} + +\index{owner\_id (nest\_backend.database.tables.Repository attributo)@\spxentry{owner\_id}\spxextra{nest\_backend.database.tables.Repository attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.owner_id}}\pysigline{\sphinxbfcode{\sphinxupquote{owner\_id}}} +\end{fulllineitems} + +\index{owner (nest\_backend.database.tables.Repository attributo)@\spxentry{owner}\spxextra{nest\_backend.database.tables.Repository attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.owner}}\pysigline{\sphinxbfcode{\sphinxupquote{owner}}} +\end{fulllineitems} + +\index{authorizations (nest\_backend.database.tables.Repository attributo)@\spxentry{authorizations}\spxextra{nest\_backend.database.tables.Repository attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.authorizations}}\pysigline{\sphinxbfcode{\sphinxupquote{authorizations}}} +\end{fulllineitems} + +\index{tweets (nest\_backend.database.tables.Repository attributo)@\spxentry{tweets}\spxextra{nest\_backend.database.tables.Repository attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.tweets}}\pysigline{\sphinxbfcode{\sphinxupquote{tweets}}} +\end{fulllineitems} + +\index{alerts (nest\_backend.database.tables.Repository attributo)@\spxentry{alerts}\spxextra{nest\_backend.database.tables.Repository attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.alerts}}\pysigline{\sphinxbfcode{\sphinxupquote{alerts}}} +\end{fulllineitems} + +\index{conditions (nest\_backend.database.tables.Repository attributo)@\spxentry{conditions}\spxextra{nest\_backend.database.tables.Repository attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.conditions}}\pysigline{\sphinxbfcode{\sphinxupquote{conditions}}} +\end{fulllineitems} + +\index{to\_json() (nest\_backend.database.tables.Repository metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Repository metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.to_json}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{to\_json}}}{}{} +\end{fulllineitems} + +\index{\_\_init\_\_() (nest\_backend.database.tables.Repository metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Repository metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Repository.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{} +\sphinxAtStartPar +A simple constructor that allows initialization from kwargs. + +\sphinxAtStartPar +Sets attributes on the constructed instance using the names and +values in \sphinxcode{\sphinxupquote{kwargs}}. + +\sphinxAtStartPar +Only keys that are present as +attributes of the instance\textquotesingle{}s class are allowed. These could be, +for example, any mapped columns or relationships. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{Tweet (classe in nest\_backend.database.tables)@\spxentry{Tweet}\spxextra{classe in nest\_backend.database.tables}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{Tweet}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote} + +\sphinxAtStartPar +Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}} +\end{quote} +\index{snowflake (nest\_backend.database.tables.Tweet attributo)@\spxentry{snowflake}\spxextra{nest\_backend.database.tables.Tweet attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.snowflake}}\pysigline{\sphinxbfcode{\sphinxupquote{snowflake}}} +\end{fulllineitems} + +\index{content (nest\_backend.database.tables.Tweet attributo)@\spxentry{content}\spxextra{nest\_backend.database.tables.Tweet attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.content}}\pysigline{\sphinxbfcode{\sphinxupquote{content}}} +\end{fulllineitems} + +\index{location (nest\_backend.database.tables.Tweet attributo)@\spxentry{location}\spxextra{nest\_backend.database.tables.Tweet attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.location}}\pysigline{\sphinxbfcode{\sphinxupquote{location}}} +\end{fulllineitems} + +\index{place (nest\_backend.database.tables.Tweet attributo)@\spxentry{place}\spxextra{nest\_backend.database.tables.Tweet attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.place}}\pysigline{\sphinxbfcode{\sphinxupquote{place}}} +\end{fulllineitems} + +\index{poster (nest\_backend.database.tables.Tweet attributo)@\spxentry{poster}\spxextra{nest\_backend.database.tables.Tweet attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.poster}}\pysigline{\sphinxbfcode{\sphinxupquote{poster}}} +\end{fulllineitems} + +\index{insert\_time (nest\_backend.database.tables.Tweet attributo)@\spxentry{insert\_time}\spxextra{nest\_backend.database.tables.Tweet attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.insert_time}}\pysigline{\sphinxbfcode{\sphinxupquote{insert\_time}}} +\end{fulllineitems} + +\index{post\_time (nest\_backend.database.tables.Tweet attributo)@\spxentry{post\_time}\spxextra{nest\_backend.database.tables.Tweet attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.post_time}}\pysigline{\sphinxbfcode{\sphinxupquote{post\_time}}} +\end{fulllineitems} + +\index{image\_url (nest\_backend.database.tables.Tweet attributo)@\spxentry{image\_url}\spxextra{nest\_backend.database.tables.Tweet attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.image_url}}\pysigline{\sphinxbfcode{\sphinxupquote{image\_url}}} +\end{fulllineitems} + +\index{repositories (nest\_backend.database.tables.Tweet attributo)@\spxentry{repositories}\spxextra{nest\_backend.database.tables.Tweet attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.repositories}}\pysigline{\sphinxbfcode{\sphinxupquote{repositories}}} +\end{fulllineitems} + +\index{conditions (nest\_backend.database.tables.Tweet attributo)@\spxentry{conditions}\spxextra{nest\_backend.database.tables.Tweet attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.conditions}}\pysigline{\sphinxbfcode{\sphinxupquote{conditions}}} +\end{fulllineitems} + +\index{to\_json() (nest\_backend.database.tables.Tweet metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.Tweet metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.to_json}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{to\_json}}}{}{} +\end{fulllineitems} + +\index{\_\_init\_\_() (nest\_backend.database.tables.Tweet metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.Tweet metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.Tweet.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{} +\sphinxAtStartPar +A simple constructor that allows initialization from kwargs. + +\sphinxAtStartPar +Sets attributes on the constructed instance using the names and +values in \sphinxcode{\sphinxupquote{kwargs}}. + +\sphinxAtStartPar +Only keys that are present as +attributes of the instance\textquotesingle{}s class are allowed. These could be, +for example, any mapped columns or relationships. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{User (classe in nest\_backend.database.tables)@\spxentry{User}\spxextra{classe in nest\_backend.database.tables}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{User}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote} + +\sphinxAtStartPar +Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}} +\end{quote} +\index{email (nest\_backend.database.tables.User attributo)@\spxentry{email}\spxextra{nest\_backend.database.tables.User attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.email}}\pysigline{\sphinxbfcode{\sphinxupquote{email}}} +\end{fulllineitems} + +\index{username (nest\_backend.database.tables.User attributo)@\spxentry{username}\spxextra{nest\_backend.database.tables.User attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.username}}\pysigline{\sphinxbfcode{\sphinxupquote{username}}} +\end{fulllineitems} + +\index{password (nest\_backend.database.tables.User attributo)@\spxentry{password}\spxextra{nest\_backend.database.tables.User attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.password}}\pysigline{\sphinxbfcode{\sphinxupquote{password}}} +\end{fulllineitems} + +\index{isAdmin (nest\_backend.database.tables.User attributo)@\spxentry{isAdmin}\spxextra{nest\_backend.database.tables.User attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.isAdmin}}\pysigline{\sphinxbfcode{\sphinxupquote{isAdmin}}} +\end{fulllineitems} + +\index{owner\_of (nest\_backend.database.tables.User attributo)@\spxentry{owner\_of}\spxextra{nest\_backend.database.tables.User attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.owner_of}}\pysigline{\sphinxbfcode{\sphinxupquote{owner\_of}}} +\end{fulllineitems} + +\index{authorizations (nest\_backend.database.tables.User attributo)@\spxentry{authorizations}\spxextra{nest\_backend.database.tables.User attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.authorizations}}\pysigline{\sphinxbfcode{\sphinxupquote{authorizations}}} +\end{fulllineitems} + +\index{to\_json() (nest\_backend.database.tables.User metodo)@\spxentry{to\_json()}\spxextra{nest\_backend.database.tables.User metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.to_json}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{to\_json}}}{}{} +\end{fulllineitems} + +\index{\_\_init\_\_() (nest\_backend.database.tables.User metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.User metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.User.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{} +\sphinxAtStartPar +A simple constructor that allows initialization from kwargs. + +\sphinxAtStartPar +Sets attributes on the constructed instance using the names and +values in \sphinxcode{\sphinxupquote{kwargs}}. + +\sphinxAtStartPar +Only keys that are present as +attributes of the instance\textquotesingle{}s class are allowed. These could be, +for example, any mapped columns or relationships. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{MadeOf (classe in nest\_backend.database.tables)@\spxentry{MadeOf}\spxextra{classe in nest\_backend.database.tables}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.MadeOf}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{MadeOf}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{}~\begin{quote} + +\sphinxAtStartPar +Basi: \sphinxcode{\sphinxupquote{sqlalchemy.orm.decl\_api.Model}} +\end{quote} +\index{aid (nest\_backend.database.tables.MadeOf attributo)@\spxentry{aid}\spxextra{nest\_backend.database.tables.MadeOf attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.MadeOf.aid}}\pysigline{\sphinxbfcode{\sphinxupquote{aid}}} +\end{fulllineitems} + +\index{cid (nest\_backend.database.tables.MadeOf attributo)@\spxentry{cid}\spxextra{nest\_backend.database.tables.MadeOf attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.MadeOf.cid}}\pysigline{\sphinxbfcode{\sphinxupquote{cid}}} +\end{fulllineitems} + +\index{alert (nest\_backend.database.tables.MadeOf attributo)@\spxentry{alert}\spxextra{nest\_backend.database.tables.MadeOf attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.MadeOf.alert}}\pysigline{\sphinxbfcode{\sphinxupquote{alert}}} +\end{fulllineitems} + +\index{condition (nest\_backend.database.tables.MadeOf attributo)@\spxentry{condition}\spxextra{nest\_backend.database.tables.MadeOf attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.MadeOf.condition}}\pysigline{\sphinxbfcode{\sphinxupquote{condition}}} +\end{fulllineitems} + +\index{\_\_init\_\_() (nest\_backend.database.tables.MadeOf metodo)@\spxentry{\_\_init\_\_()}\spxextra{nest\_backend.database.tables.MadeOf metodo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.MadeOf.__init__}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{\_\_init\_\_}}}{\emph{\DUrole{o}{**}\DUrole{n}{kwargs}}}{} +\sphinxAtStartPar +A simple constructor that allows initialization from kwargs. + +\sphinxAtStartPar +Sets attributes on the constructed instance using the names and +values in \sphinxcode{\sphinxupquote{kwargs}}. + +\sphinxAtStartPar +Only keys that are present as +attributes of the instance\textquotesingle{}s class are allowed. These could be, +for example, any mapped columns or relationships. + +\end{fulllineitems} + + +\end{fulllineitems} + +\index{ConditionType (classe in nest\_backend.database.tables)@\spxentry{ConditionType}\spxextra{classe in nest\_backend.database.tables}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionType}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{ConditionType}}}{\emph{\DUrole{n}{value}}}{}~\begin{quote} + +\sphinxAtStartPar +Basi: \sphinxhref{https://docs.python.org/3.8/library/enum.html\#enum.Enum}{\sphinxcode{\sphinxupquote{enum.Enum}}} +\end{quote} + +\sphinxAtStartPar +Vedi \sphinxhref{https://gitlab.steffo.eu/nest/g2-progetto/-/wikis/Specifica-delle-Conditions}{Specifica delle Conditions su +GitLab} . +\index{hashtag (nest\_backend.database.tables.ConditionType attributo)@\spxentry{hashtag}\spxextra{nest\_backend.database.tables.ConditionType attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionType.hashtag}}\pysigline{\sphinxbfcode{\sphinxupquote{hashtag}}\sphinxbfcode{\sphinxupquote{ = 0}}} +\end{fulllineitems} + +\index{location (nest\_backend.database.tables.ConditionType attributo)@\spxentry{location}\spxextra{nest\_backend.database.tables.ConditionType attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionType.location}}\pysigline{\sphinxbfcode{\sphinxupquote{location}}\sphinxbfcode{\sphinxupquote{ = 1}}} +\end{fulllineitems} + +\index{time (nest\_backend.database.tables.ConditionType attributo)@\spxentry{time}\spxextra{nest\_backend.database.tables.ConditionType attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionType.time}}\pysigline{\sphinxbfcode{\sphinxupquote{time}}\sphinxbfcode{\sphinxupquote{ = 2}}} +\end{fulllineitems} + +\index{coordinates (nest\_backend.database.tables.ConditionType attributo)@\spxentry{coordinates}\spxextra{nest\_backend.database.tables.ConditionType attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionType.coordinates}}\pysigline{\sphinxbfcode{\sphinxupquote{coordinates}}\sphinxbfcode{\sphinxupquote{ = 3}}} +\end{fulllineitems} + +\index{place (nest\_backend.database.tables.ConditionType attributo)@\spxentry{place}\spxextra{nest\_backend.database.tables.ConditionType attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionType.place}}\pysigline{\sphinxbfcode{\sphinxupquote{place}}\sphinxbfcode{\sphinxupquote{ = 4}}} +\end{fulllineitems} + +\index{user (nest\_backend.database.tables.ConditionType attributo)@\spxentry{user}\spxextra{nest\_backend.database.tables.ConditionType attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionType.user}}\pysigline{\sphinxbfcode{\sphinxupquote{user}}\sphinxbfcode{\sphinxupquote{ = 5}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{OperationType (classe in nest\_backend.database.tables)@\spxentry{OperationType}\spxextra{classe in nest\_backend.database.tables}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.OperationType}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{OperationType}}}{\emph{\DUrole{n}{value}}}{}~\begin{quote} + +\sphinxAtStartPar +Basi: \sphinxhref{https://docs.python.org/3.8/library/enum.html\#enum.Enum}{\sphinxcode{\sphinxupquote{enum.Enum}}} +\end{quote} + +\sphinxAtStartPar +An enumeration. +\index{assign (nest\_backend.database.tables.OperationType attributo)@\spxentry{assign}\spxextra{nest\_backend.database.tables.OperationType attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.OperationType.assign}}\pysigline{\sphinxbfcode{\sphinxupquote{assign}}\sphinxbfcode{\sphinxupquote{ = 3}}} +\end{fulllineitems} + + +\end{fulllineitems} + +\index{ConditionMode (classe in nest\_backend.database.tables)@\spxentry{ConditionMode}\spxextra{classe in nest\_backend.database.tables}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionMode}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxcode{\sphinxupquote{nest\_backend.database.tables.}}\sphinxbfcode{\sphinxupquote{ConditionMode}}}{\emph{\DUrole{n}{value}}}{}~\begin{quote} + +\sphinxAtStartPar +Basi: \sphinxhref{https://docs.python.org/3.8/library/enum.html\#enum.Enum}{\sphinxcode{\sphinxupquote{enum.Enum}}} +\end{quote} + +\sphinxAtStartPar +An enumeration. +\index{all\_or (nest\_backend.database.tables.ConditionMode attributo)@\spxentry{all\_or}\spxextra{nest\_backend.database.tables.ConditionMode attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionMode.all_or}}\pysigline{\sphinxbfcode{\sphinxupquote{all\_or}}\sphinxbfcode{\sphinxupquote{ = 0}}} +\end{fulllineitems} + +\index{all\_and (nest\_backend.database.tables.ConditionMode attributo)@\spxentry{all\_and}\spxextra{nest\_backend.database.tables.ConditionMode attributo}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/backend/index:nest_backend.database.tables.ConditionMode.all_and}}\pysigline{\sphinxbfcode{\sphinxupquote{all\_and}}\sphinxbfcode{\sphinxupquote{ = 1}}} +\end{fulllineitems} + + +\end{fulllineitems} + + + +\section{\sphinxstyleliteralintitle{\sphinxupquote{.routes}} \sphinxhyphen{} Percorsi API} +\label{\detokenize{code/backend/index:routes-percorsi-api}} +\begin{sphinxadmonition}{note}{Nota:} +\sphinxAtStartPar +La documentazione dei percorsi API è gestita da Swagger UI, disponibile a \sphinxcode{\sphinxupquote{/docs}} una volta che il webserver +del backend è avviato. +\end{sphinxadmonition} + +\sphinxAtStartPar +Si allega una stampa dell\textquotesingle{}interfaccia swagger: +\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxcode{\sphinxupquote{Schermata di swagger}} + +\end{itemize} + + +\chapter{\sphinxstyleliteralintitle{\sphinxupquote{nest\_crawler}} \sphinxhyphen{} Crawler in Python} +\label{\detokenize{code/crawler/index:module-nest_crawler}}\label{\detokenize{code/crawler/index:nest-crawler-crawler-in-python}}\label{\detokenize{code/crawler/index::doc}}\index{modulo@\spxentry{modulo}!nest\_crawler@\spxentry{nest\_crawler}}\index{nest\_crawler@\spxentry{nest\_crawler}!modulo@\spxentry{modulo}}\index{associate\_condition\_tweet() (nel modulo nest\_crawler)@\spxentry{associate\_condition\_tweet()}\spxextra{nel modulo nest\_crawler}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/crawler/index:nest_crawler.associate_condition_tweet}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_crawler.}}\sphinxbfcode{\sphinxupquote{associate\_condition\_tweet}}}{\emph{\DUrole{n}{conditions\_type}}, \emph{\DUrole{n}{tweet}}}{} +\end{fulllineitems} + +\index{authenticate() (nel modulo nest\_crawler)@\spxentry{authenticate()}\spxextra{nel modulo nest\_crawler}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/crawler/index:nest_crawler.authenticate}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_crawler.}}\sphinxbfcode{\sphinxupquote{authenticate}}}{}{} +\end{fulllineitems} + +\index{is\_coordinate\_inside\_bounding\_box() (nel modulo nest\_crawler)@\spxentry{is\_coordinate\_inside\_bounding\_box()}\spxextra{nel modulo nest\_crawler}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/crawler/index:nest_crawler.is_coordinate_inside_bounding_box}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_crawler.}}\sphinxbfcode{\sphinxupquote{is\_coordinate\_inside\_bounding\_box}}}{\emph{\DUrole{n}{latitude}}, \emph{\DUrole{n}{longitude}}, \emph{\DUrole{n}{radius}}, \emph{\DUrole{n}{tweet\_latitude}}, \emph{\DUrole{n}{tweet\_longitude}}}{} +\end{fulllineitems} + +\index{is\_repo\_alert\_triggered() (nel modulo nest\_crawler)@\spxentry{is\_repo\_alert\_triggered()}\spxextra{nel modulo nest\_crawler}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/crawler/index:nest_crawler.is_repo_alert_triggered}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_crawler.}}\sphinxbfcode{\sphinxupquote{is\_repo\_alert\_triggered}}}{\emph{\DUrole{n}{repository\_id}}}{} +\end{fulllineitems} + +\index{search\_repo\_conditions() (nel modulo nest\_crawler)@\spxentry{search\_repo\_conditions()}\spxextra{nel modulo nest\_crawler}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/crawler/index:nest_crawler.search_repo_conditions}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_crawler.}}\sphinxbfcode{\sphinxupquote{search\_repo\_conditions}}}{\emph{\DUrole{n}{repository\_id}}}{} +\end{fulllineitems} + +\index{send\_notification\_email() (nel modulo nest\_crawler)@\spxentry{send\_notification\_email()}\spxextra{nel modulo nest\_crawler}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/crawler/index:nest_crawler.send_notification_email}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_crawler.}}\sphinxbfcode{\sphinxupquote{send\_notification\_email}}}{\emph{\DUrole{n}{alert}}}{} +\end{fulllineitems} + +\index{send\_notification\_tweet() (nel modulo nest\_crawler)@\spxentry{send\_notification\_tweet()}\spxextra{nel modulo nest\_crawler}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/crawler/index:nest_crawler.send_notification_tweet}}\pysiglinewithargsret{\sphinxcode{\sphinxupquote{nest\_crawler.}}\sphinxbfcode{\sphinxupquote{send\_notification\_tweet}}}{\emph{\DUrole{n}{alert}}}{} +\end{fulllineitems} + + + +\chapter{\sphinxstyleliteralintitle{\sphinxupquote{nest\_frontend}} \sphinxhyphen{} Interfaccia utente in React} +\label{\detokenize{code/frontend/index:nest-frontend-interfaccia-utente-in-react}}\label{\detokenize{code/frontend/index::doc}} +\begin{sphinxadmonition}{warning}{Avvertimento:} +\sphinxAtStartPar +\sphinxhref{https://jsdoc.app/}{JSDoc} non sembra essere in grado di gestire correttamente il lato frontend del progetto. + +\sphinxAtStartPar +Per maggiori dettagli sul funzionamento dei vari componenti, si suggerisce di guardare le \sphinxstylestrong{docstring presenti nel +codice sorgente}. + +\sphinxAtStartPar +Seguono sotto le uniche classi che JSDoc è stato in grado di gestire (anche se vengono mostrate solo +parzialmente). +\end{sphinxadmonition} + + +\section{\sphinxstyleliteralintitle{\sphinxupquote{.objects}} \sphinxhyphen{} Oggetti vari di utility} +\label{\detokenize{code/frontend/index:objects-oggetti-vari-di-utility}}\index{Condition() (classe)@\spxentry{Condition()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:Condition}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Condition}}}{}{} +\sphinxAtStartPar +Condition class for an undefined/unknown condition. + +\sphinxAtStartPar +See {[}the Condition spec{]}(\sphinxurl{https://gitlab.steffo.eu/nest/g2-progetto/-/wikis/sprint-2/Specifica-delle-Conditions}). + +\end{fulllineitems} + +\index{ConditionHashtag() (classe)@\spxentry{ConditionHashtag()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:ConditionHashtag}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{ConditionHashtag}}}{}{} +\sphinxAtStartPar +Require a tweet to contain a specific hashtag to be gathered. + +\end{fulllineitems} + +\index{ConditionUser() (classe)@\spxentry{ConditionUser()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:ConditionUser}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{ConditionUser}}}{}{} +\sphinxAtStartPar +Require a tweet to be posted by a certain user to be gathered. + +\end{fulllineitems} + +\index{ConditionTime() (classe)@\spxentry{ConditionTime()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:ConditionTime}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{ConditionTime}}}{}{} +\sphinxAtStartPar +Require a tweet to be posted before or after a certain time to be gathered. + +\end{fulllineitems} + +\index{ConditionLocation() (classe)@\spxentry{ConditionLocation()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:ConditionLocation}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{ConditionLocation}}}{}{} +\sphinxAtStartPar +Require a tweet to have coordinates associated and to be posted within the \sphinxhref{mailto:\{@link}{\{@link} MapArea\}. + +\end{fulllineitems} + +\index{NotImplementedError() (classe)@\spxentry{NotImplementedError()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:NotImplementedError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{NotImplementedError}}}{}{} +\sphinxAtStartPar +Error thrown when a function is not implemented in the current class/instance. + +\end{fulllineitems} + +\index{BackendCommunicationError() (classe)@\spxentry{BackendCommunicationError()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:BackendCommunicationError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{BackendCommunicationError}}}{}{} +\sphinxAtStartPar +An error in the N.E.S.T. frontend\sphinxhyphen{}backend communication. + +\end{fulllineitems} + +\index{ViewNotAllowedError() (classe)@\spxentry{ViewNotAllowedError()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:ViewNotAllowedError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{ViewNotAllowedError}}}{}{} +\sphinxAtStartPar +Error thrown when trying to access a backend view which doesn\textquotesingle{}t exist or isn\textquotesingle{}t allowed in the used hook. + +\end{fulllineitems} + +\index{ServerNotConfiguredError() (classe)@\spxentry{ServerNotConfiguredError()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:ServerNotConfiguredError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{ServerNotConfiguredError}}}{}{} +\sphinxAtStartPar +Error thrown when trying to access a backend view when outside a \sphinxhref{mailto:\{@link}{\{@link} ContextServer\}. + +\end{fulllineitems} + +\index{FetchAlreadyRunningError() (classe)@\spxentry{FetchAlreadyRunningError()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:FetchAlreadyRunningError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FetchAlreadyRunningError}}}{}{} +\sphinxAtStartPar +Error thrown when trying to access a backend view while another access is ongoing. + +\sphinxAtStartPar +This is not allowed due to potential race conditions. + +\end{fulllineitems} + +\index{FetchError() (classe)@\spxentry{FetchError()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:FetchError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FetchError}}}{}{} +\sphinxAtStartPar +Abstract class for \sphinxhref{mailto:\{@link}{\{@link} DecodeError\} and \sphinxhref{mailto:\{@link}{\{@link} ResultError\}. + +\end{fulllineitems} + +\index{DecodeError() (classe)@\spxentry{DecodeError()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:DecodeError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{DecodeError}}}{}{} +\sphinxAtStartPar +Error thrown when the frontend can\textquotesingle{}t parse the data received from the backend. + +\end{fulllineitems} + +\index{ResultError() (classe)@\spxentry{ResultError()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:ResultError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{ResultError}}}{}{} +\sphinxAtStartPar +Error thrown when the backend returns a falsy \sphinxtitleref{"result"} value. + +\end{fulllineitems} + +\index{SerializationError() (classe)@\spxentry{SerializationError()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:SerializationError}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{SerializationError}}}{}{} +\sphinxAtStartPar +Error thrown when a string couldn\textquotesingle{}t be serialized into an object. + +\end{fulllineitems} + +\index{Filter() (classe)@\spxentry{Filter()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:Filter}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{Filter}}}{\emph{negate=false}}{} +\sphinxAtStartPar +A filter applicable in the Analysis mode. +\begin{quote}\begin{description} +\item[{Parametri}] \leavevmode\begin{itemize} +\item {} +\sphinxAtStartPar +\sphinxstyleliteralstrong{\sphinxupquote{negate}} \sphinxhyphen{}\sphinxhyphen{} If the filter output should be reversed. + +\end{itemize} + +\end{description}\end{quote} + +\end{fulllineitems} + +\index{FilterContains() (classe)@\spxentry{FilterContains()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:FilterContains}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterContains}}}{}{} +\sphinxAtStartPar +Checks if a tweet contains a string. + +\end{fulllineitems} + +\index{FilterHashtag() (classe)@\spxentry{FilterHashtag()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:FilterHashtag}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterHashtag}}}{}{} +\sphinxAtStartPar +Check if a tweet contains an hashtag. + +\end{fulllineitems} + +\index{FilterPoster() (classe)@\spxentry{FilterPoster()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:FilterPoster}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterPoster}}}{}{} +\sphinxAtStartPar +Check if a tweet was posted by a certain user. + +\end{fulllineitems} + +\index{FilterWithLocation() (classe)@\spxentry{FilterWithLocation()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:FilterWithLocation}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterWithLocation}}}{}{} +\sphinxAtStartPar +Check if a tweet contains \sphinxtitleref{location} metadata. + +\end{fulllineitems} + +\index{FilterWithPlace() (classe)@\spxentry{FilterWithPlace()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:FilterWithPlace}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterWithPlace}}}{}{} +\sphinxAtStartPar +Check if a tweet contains \sphinxtitleref{place} metadata. + +\end{fulllineitems} + +\index{FilterInsideMapArea() (classe)@\spxentry{FilterInsideMapArea()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:FilterInsideMapArea}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterInsideMapArea}}}{}{} +\sphinxAtStartPar +Check if a tweet\textquotesingle{}s \sphinxtitleref{location} is inside a \sphinxhref{mailto:\{@link}{\{@link} MapArea\}. + +\end{fulllineitems} + +\index{FilterInsideTimeRay() (classe)@\spxentry{FilterInsideTimeRay()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:FilterInsideTimeRay}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterInsideTimeRay}}}{}{} +\sphinxAtStartPar +Check if a tweet\textquotesingle{}s \sphinxtitleref{post\_time} is inside a \sphinxhref{mailto:\{@link}{\{@link} TimeRay\}. + +\end{fulllineitems} + +\index{FilterWithImage() (classe)@\spxentry{FilterWithImage()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:FilterWithImage}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterWithImage}}}{}{} +\sphinxAtStartPar +Check if a tweet has an associated \sphinxtitleref{image\_url}. + +\end{fulllineitems} + +\index{FilterIsRetweet() (classe)@\spxentry{FilterIsRetweet()}\spxextra{classe}} + +\begin{fulllineitems} +\phantomsection\label{\detokenize{code/frontend/index:FilterIsRetweet}}\pysiglinewithargsret{\sphinxbfcode{\sphinxupquote{class }}\sphinxbfcode{\sphinxupquote{FilterIsRetweet}}}{}{} +\sphinxAtStartPar +Check if a tweet is a retweet. + +\end{fulllineitems} + + + +\chapter{Altri collegamenti} +\label{\detokenize{index:altri-collegamenti}}\begin{itemize} +\item {} +\sphinxAtStartPar +\DUrole{xref,std,std-ref}{genindex} + +\item {} +\sphinxAtStartPar +\DUrole{xref,std,std-ref}{modindex} + +\end{itemize} + + +\renewcommand{\indexname}{Indice del modulo Python} +\begin{sphinxtheindex} +\let\bigletter\sphinxstyleindexlettergroup +\bigletter{n} +\item\relax\sphinxstyleindexentry{nest\_backend}\sphinxstyleindexpageref{code/backend/index:\detokenize{module-nest_backend}} +\item\relax\sphinxstyleindexentry{nest\_backend.database}\sphinxstyleindexpageref{code/backend/index:\detokenize{module-nest_backend.database}} +\item\relax\sphinxstyleindexentry{nest\_backend.database.base}\sphinxstyleindexpageref{code/backend/index:\detokenize{module-nest_backend.database.base}} +\item\relax\sphinxstyleindexentry{nest\_backend.database.tables}\sphinxstyleindexpageref{code/backend/index:\detokenize{module-nest_backend.database.tables}} +\item\relax\sphinxstyleindexentry{nest\_backend.gestione}\sphinxstyleindexpageref{code/backend/index:\detokenize{module-nest_backend.gestione}} +\item\relax\sphinxstyleindexentry{nest\_crawler}\sphinxstyleindexpageref{code/crawler/index:\detokenize{module-nest_crawler}} +\end{sphinxtheindex} + +\renewcommand{\indexname}{Indice} +\printindex +\end{document} \ No newline at end of file diff --git a/docs/build/latex/nest.toc b/docs/build/latex/nest.toc new file mode 100644 index 0000000..37615de --- /dev/null +++ b/docs/build/latex/nest.toc @@ -0,0 +1,147 @@ +\babel@toc {italian}{} +\babel@toc {italian}{} +\contentsline {chapter}{\numberline {1}Il progetto in breve}{3}{chapter.1}% +\contentsline {section}{\numberline {1.1}Suddivisione in moduli}{3}{section.1.1}% +\contentsline {section}{\numberline {1.2}Screenshots}{4}{section.1.2}% +\contentsline {chapter}{\numberline {2}Installazione}{7}{chapter.2}% +\contentsline {section}{\numberline {2.1}Prerequisiti}{7}{section.2.1}% +\contentsline {section}{\numberline {2.2}Creare un nuovo utente}{8}{section.2.2}% +\contentsline {section}{\numberline {2.3}Scaricare il codice sorgente}{8}{section.2.3}% +\contentsline {section}{\numberline {2.4}Creare il database}{8}{section.2.4}% +\contentsline {section}{\numberline {2.5}Creare un file di configurazione per il backend}{8}{section.2.5}% +\contentsline {section}{\numberline {2.6}Installare le dipendenze Python}{9}{section.2.6}% +\contentsline {section}{\numberline {2.7}Installare le dipendenze NodeJS}{9}{section.2.7}% +\contentsline {section}{\numberline {2.8}Creare un servizio SystemD per il backend}{9}{section.2.8}% +\contentsline {section}{\numberline {2.9}Compilare il frontend}{10}{section.2.9}% +\contentsline {section}{\numberline {2.10}Creare un servizio SystemD per il frontend}{10}{section.2.10}% +\contentsline {section}{\numberline {2.11}Creare un servizio SystemD per il crawler}{12}{section.2.11}% +\contentsline {section}{\numberline {2.12}Configurare il crawler}{12}{section.2.12}% +\contentsline {section}{\numberline {2.13}Creare un timer SystemD per il crawler}{13}{section.2.13}% +\contentsline {section}{\numberline {2.14}Configurare Apache come reverse proxy}{14}{section.2.14}% +\contentsline {chapter}{\numberline {3}Aggiornamento}{15}{chapter.3}% +\contentsline {chapter}{\numberline {4}Introduzione}{17}{chapter.4}% +\contentsline {section}{\numberline {4.1}Obiettivo}{17}{section.4.1}% +\contentsline {section}{\numberline {4.2}Campo di applicazione}{17}{section.4.2}% +\contentsline {section}{\numberline {4.3}Caratteristiche degli utenti}{17}{section.4.3}% +\contentsline {section}{\numberline {4.4}Glossario}{18}{section.4.4}% +\contentsline {section}{\numberline {4.5}Macro\sphinxhyphen {}funzionalità}{18}{section.4.5}% +\contentsline {section}{\numberline {4.6}Casi d\textquotesingle {}uso}{18}{section.4.6}% +\contentsline {section}{\numberline {4.7}Backlog generale}{23}{section.4.7}% +\contentsline {chapter}{\numberline {5}Strumenti utilizzati}{27}{chapter.5}% +\contentsline {chapter}{\numberline {6}Processo di sviluppo}{29}{chapter.6}% +\contentsline {section}{\numberline {6.1}Ruoli}{29}{section.6.1}% +\contentsline {section}{\numberline {6.2}Sprint}{29}{section.6.2}% +\contentsline {subsection}{\numberline {6.2.1}Sprint 0: 04 Apr \sphinxhyphen {} 18 Apr}{30}{subsection.6.2.1}% +\contentsline {subsubsection}{\numberline {6.2.1.1}Consegna}{30}{subsubsection.6.2.1.1}% +\contentsline {subsubsection}{\numberline {6.2.1.2}Definition of Ready}{30}{subsubsection.6.2.1.2}% +\contentsline {subsubsection}{\numberline {6.2.1.3}Definition of Done}{30}{subsubsection.6.2.1.3}% +\contentsline {subsubsection}{\numberline {6.2.1.4}Statistiche}{30}{subsubsection.6.2.1.4}% +\contentsline {paragraph}{Gitinspector}{30}{paragraph*.3}% +\contentsline {subsubsection}{\numberline {6.2.1.5}Sprint Retrospective}{30}{subsubsection.6.2.1.5}% +\contentsline {subsubsection}{\numberline {6.2.1.6}Sprint Review}{31}{subsubsection.6.2.1.6}% +\contentsline {subsubsection}{\numberline {6.2.1.7}Artefatti}{31}{subsubsection.6.2.1.7}% +\contentsline {subsubsection}{\numberline {6.2.1.8}Registro attività}{31}{subsubsection.6.2.1.8}% +\contentsline {paragraph}{Riunioni collettive}{31}{paragraph*.4}% +\contentsline {paragraph}{Attività individuali}{31}{paragraph*.5}% +\contentsline {subparagraph}{Stefano Goldoni}{31}{subparagraph*.6}% +\contentsline {subparagraph}{Flavia Cocca}{32}{subparagraph*.7}% +\contentsline {subparagraph}{Chiara Calzolari}{32}{subparagraph*.8}% +\contentsline {subparagraph}{Stefano Pigozzi}{32}{subparagraph*.9}% +\contentsline {subparagraph}{Giovanni Anniballi}{33}{subparagraph*.10}% +\contentsline {subparagraph}{Giorgio Minoccari}{33}{subparagraph*.11}% +\contentsline {subparagraph}{Lorenzo Balugani}{33}{subparagraph*.12}% +\contentsline {subsubsection}{\numberline {6.2.1.9}Risultati della partita di Scrumble}{33}{subsubsection.6.2.1.9}% +\contentsline {subsection}{\numberline {6.2.2}Sprint 1: 19 Apr \sphinxhyphen {} 02 Mag}{38}{subsection.6.2.2}% +\contentsline {subsubsection}{\numberline {6.2.2.1}Consegna}{38}{subsubsection.6.2.2.1}% +\contentsline {subsubsection}{\numberline {6.2.2.2}Goal}{38}{subsubsection.6.2.2.2}% +\contentsline {paragraph}{Backlog}{39}{paragraph*.13}% +\contentsline {paragraph}{Task completati}{40}{paragraph*.14}% +\contentsline {subsubsection}{\numberline {6.2.2.3}Definition of Ready}{40}{subsubsection.6.2.2.3}% +\contentsline {subsubsection}{\numberline {6.2.2.4}Definition of Done}{40}{subsubsection.6.2.2.4}% +\contentsline {subsubsection}{\numberline {6.2.2.5}Statistiche}{40}{subsubsection.6.2.2.5}% +\contentsline {paragraph}{Burndown chart}{40}{paragraph*.15}% +\contentsline {paragraph}{Gitinspector}{41}{paragraph*.16}% +\contentsline {subsubsection}{\numberline {6.2.2.6}Sprint Retrospective}{41}{subsubsection.6.2.2.6}% +\contentsline {subsubsection}{\numberline {6.2.2.7}Sprint Review}{41}{subsubsection.6.2.2.7}% +\contentsline {subsubsection}{\numberline {6.2.2.8}Valutazione sul debito tecnico}{41}{subsubsection.6.2.2.8}% +\contentsline {subsubsection}{\numberline {6.2.2.9}Valutazione sulle User Stories}{42}{subsubsection.6.2.2.9}% +\contentsline {subsubsection}{\numberline {6.2.2.10}Registro attività}{42}{subsubsection.6.2.2.10}% +\contentsline {paragraph}{Riunioni collettive}{42}{paragraph*.17}% +\contentsline {paragraph}{Attività individuali}{42}{paragraph*.18}% +\contentsline {subparagraph}{Stefano Goldoni}{43}{subparagraph*.19}% +\contentsline {subparagraph}{Flavia Cocca}{43}{subparagraph*.20}% +\contentsline {subparagraph}{Chiara Calzolari}{43}{subparagraph*.21}% +\contentsline {subparagraph}{Stefano Pigozzi}{44}{subparagraph*.22}% +\contentsline {subparagraph}{Giovanni Anniballi}{45}{subparagraph*.23}% +\contentsline {subparagraph}{Giorgio Minoccari}{46}{subparagraph*.24}% +\contentsline {subparagraph}{Lorenzo Balugani}{46}{subparagraph*.25}% +\contentsline {subsection}{\numberline {6.2.3}Sprint 2: 03 Mag \sphinxhyphen {} 16 Mag}{47}{subsection.6.2.3}% +\contentsline {subsubsection}{\numberline {6.2.3.1}Consegna}{47}{subsubsection.6.2.3.1}% +\contentsline {subsubsection}{\numberline {6.2.3.2}Goal}{47}{subsubsection.6.2.3.2}% +\contentsline {paragraph}{Backlog}{48}{paragraph*.26}% +\contentsline {paragraph}{Task completati}{49}{paragraph*.27}% +\contentsline {subsubsection}{\numberline {6.2.3.3}Definition of Ready}{50}{subsubsection.6.2.3.3}% +\contentsline {subsubsection}{\numberline {6.2.3.4}Definition of Done}{50}{subsubsection.6.2.3.4}% +\contentsline {subsubsection}{\numberline {6.2.3.5}Statistiche}{50}{subsubsection.6.2.3.5}% +\contentsline {paragraph}{Burndown chart}{50}{paragraph*.28}% +\contentsline {paragraph}{Gitinspector}{50}{paragraph*.29}% +\contentsline {subsubsection}{\numberline {6.2.3.6}Sprint Retrospective}{51}{subsubsection.6.2.3.6}% +\contentsline {subsubsection}{\numberline {6.2.3.7}Sprint Review}{51}{subsubsection.6.2.3.7}% +\contentsline {subsubsection}{\numberline {6.2.3.8}Registro attività}{51}{subsubsection.6.2.3.8}% +\contentsline {paragraph}{Riunioni collettive}{51}{paragraph*.30}% +\contentsline {paragraph}{Attività individuali}{51}{paragraph*.31}% +\contentsline {subparagraph}{Stefano Goldoni}{51}{subparagraph*.32}% +\contentsline {subparagraph}{Flavia Cocca}{52}{subparagraph*.33}% +\contentsline {subparagraph}{Stefano Pigozzi}{52}{subparagraph*.34}% +\contentsline {subparagraph}{Chiara Calzolari}{53}{subparagraph*.35}% +\contentsline {subparagraph}{Giovanni Anniballi}{53}{subparagraph*.36}% +\contentsline {subparagraph}{Giorgio Minoccari}{54}{subparagraph*.37}% +\contentsline {subparagraph}{Lorenzo Balugani}{54}{subparagraph*.38}% +\contentsline {subsection}{\numberline {6.2.4}Sprint 3: 17 Mag \sphinxhyphen {} 30 Mag}{54}{subsection.6.2.4}% +\contentsline {subsubsection}{\numberline {6.2.4.1}Consegna}{54}{subsubsection.6.2.4.1}% +\contentsline {subsubsection}{\numberline {6.2.4.2}Goal}{54}{subsubsection.6.2.4.2}% +\contentsline {paragraph}{Backlog}{55}{paragraph*.39}% +\contentsline {paragraph}{Task completati}{56}{paragraph*.40}% +\contentsline {subsubsection}{\numberline {6.2.4.3}Grooming session}{56}{subsubsection.6.2.4.3}% +\contentsline {subsubsection}{\numberline {6.2.4.4}Definition of Ready}{57}{subsubsection.6.2.4.4}% +\contentsline {subsubsection}{\numberline {6.2.4.5}Definition of Done}{57}{subsubsection.6.2.4.5}% +\contentsline {subsubsection}{\numberline {6.2.4.6}Statistiche}{57}{subsubsection.6.2.4.6}% +\contentsline {paragraph}{Gitinspector}{57}{paragraph*.41}% +\contentsline {paragraph}{Schermata finale di SonarQube}{57}{paragraph*.42}% +\contentsline {subsubsection}{\numberline {6.2.4.7}Final Retrospective}{57}{subsubsection.6.2.4.7}% +\contentsline {subsubsection}{\numberline {6.2.4.8}Demo}{58}{subsubsection.6.2.4.8}% +\contentsline {subsubsection}{\numberline {6.2.4.9}Registro attività}{58}{subsubsection.6.2.4.9}% +\contentsline {paragraph}{Riunioni collettive}{58}{paragraph*.43}% +\contentsline {paragraph}{Attività individuali}{58}{paragraph*.44}% +\contentsline {subparagraph}{Stefano Goldoni}{58}{subparagraph*.45}% +\contentsline {subparagraph}{Flavia Cocca}{58}{subparagraph*.46}% +\contentsline {subparagraph}{Chiara Calzolari}{59}{subparagraph*.47}% +\contentsline {subparagraph}{Stefano Pigozzi}{59}{subparagraph*.48}% +\contentsline {subparagraph}{Giovanni Anniballi}{60}{subparagraph*.49}% +\contentsline {subparagraph}{Giorgio Minoccari}{60}{subparagraph*.50}% +\contentsline {subparagraph}{Lorenzo Balugani}{61}{subparagraph*.51}% +\contentsline {section}{\numberline {6.3}Burndown chart complessiva}{61}{section.6.3}% +\contentsline {chapter}{\numberline {7}Artefatti}{63}{chapter.7}% +\contentsline {section}{\numberline {7.1}Diagrammi UML}{63}{section.7.1}% +\contentsline {section}{\numberline {7.2}Demo}{63}{section.7.2}% +\contentsline {subsection}{\numberline {7.2.1}Video}{63}{subsection.7.2.1}% +\contentsline {subsection}{\numberline {7.2.2}Interattiva}{64}{subsection.7.2.2}% +\contentsline {chapter}{\numberline {8}Conclusioni}{65}{chapter.8}% +\contentsline {chapter}{\numberline {9}Suggerimenti relativi al corso}{67}{chapter.9}% +\contentsline {chapter}{\numberline {10}Meta\sphinxhyphen {}documentazione}{69}{chapter.10}% +\contentsline {section}{\numberline {10.1}Compilazione con IntelliJ IDEA}{69}{section.10.1}% +\contentsline {section}{\numberline {10.2}Compilazione con GNU Make}{69}{section.10.2}% +\contentsline {section}{\numberline {10.3}Compilazione con Windows Powershell}{70}{section.10.3}% +\contentsline {chapter}{\numberline {11}Struttura del database}{71}{chapter.11}% +\contentsline {chapter}{\numberline {12}\sphinxstyleliteralintitle {\sphinxupquote {nest\_backend}} \sphinxhyphen {} Web API in Python}{75}{chapter.12}% +\contentsline {section}{\numberline {12.1}\sphinxstyleliteralintitle {\sphinxupquote {.gestione}} \sphinxhyphen {} Metodi di utility}{75}{section.12.1}% +\contentsline {section}{\numberline {12.2}\sphinxstyleliteralintitle {\sphinxupquote {.database}} \sphinxhyphen {} Database}{76}{section.12.2}% +\contentsline {subsection}{\numberline {12.2.1}\sphinxstyleliteralintitle {\sphinxupquote {.base}} \sphinxhyphen {} Estensione flask}{76}{subsection.12.2.1}% +\contentsline {subsection}{\numberline {12.2.2}\sphinxstyleliteralintitle {\sphinxupquote {.tables}} \sphinxhyphen {} Tabelle}{76}{subsection.12.2.2}% +\contentsline {section}{\numberline {12.3}\sphinxstyleliteralintitle {\sphinxupquote {.routes}} \sphinxhyphen {} Percorsi API}{80}{section.12.3}% +\contentsline {chapter}{\numberline {13}\sphinxstyleliteralintitle {\sphinxupquote {nest\_crawler}} \sphinxhyphen {} Crawler in Python}{81}{chapter.13}% +\contentsline {chapter}{\numberline {14}\sphinxstyleliteralintitle {\sphinxupquote {nest\_frontend}} \sphinxhyphen {} Interfaccia utente in React}{83}{chapter.14}% +\contentsline {section}{\numberline {14.1}\sphinxstyleliteralintitle {\sphinxupquote {.objects}} \sphinxhyphen {} Oggetti vari di utility}{83}{section.14.1}% +\contentsline {chapter}{\numberline {15}Altri collegamenti}{85}{chapter.15}% +\contentsline {chapter}{Indice del modulo Python}{87}{section*.208}% +\contentsline {chapter}{Indice}{89}{section*.209}% diff --git a/docs/build/latex/python.ist b/docs/build/latex/python.ist new file mode 100644 index 0000000..70536a6 --- /dev/null +++ b/docs/build/latex/python.ist @@ -0,0 +1,16 @@ +line_max 100 +headings_flag 1 +heading_prefix " \\bigletter " + +preamble "\\begin{sphinxtheindex} +\\let\\bigletter\\sphinxstyleindexlettergroup +\\let\\spxpagem \\sphinxstyleindexpagemain +\\let\\spxentry \\sphinxstyleindexentry +\\let\\spxextra \\sphinxstyleindexextra + +" + +postamble "\n\n\\end{sphinxtheindex}\n" + +symhead_positive "{\\sphinxsymbolsname}" +numhead_positive "{\\sphinxnumbersname}" diff --git a/docs/build/latex/sphinx.sty b/docs/build/latex/sphinx.sty new file mode 100644 index 0000000..e6c27c1 --- /dev/null +++ b/docs/build/latex/sphinx.sty @@ -0,0 +1,2163 @@ +% +% sphinx.sty +% +% Adapted from the old python.sty, mostly written by Fred Drake, +% by Georg Brandl. +% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{sphinx}[2021/01/23 v3.5.0 LaTeX package (Sphinx markup)] + +% provides \ltx@ifundefined +% (many packages load ltxcmds: graphicx does for pdftex and lualatex but +% not xelatex, and anyhow kvoptions does, but it may be needed in future to +% use \sphinxdeprecationwarning earlier, and it needs \ltx@ifundefined) +\RequirePackage{ltxcmds} + +%% for deprecation warnings +\newcommand\sphinxdeprecationwarning[4]{% #1 the deprecated macro or name, +% #2 = when deprecated, #3 = when removed, #4 = additional info + \edef\spx@tempa{\detokenize{#1}}% + \ltx@ifundefined{sphinx_depr_\spx@tempa}{% + \global\expandafter\let\csname sphinx_depr_\spx@tempa\endcsname\spx@tempa + \expandafter\AtEndDocument\expandafter{\expandafter\let\expandafter + \sphinxdeprecatedmacro\csname sphinx_depr_\spx@tempa\endcsname + \PackageWarningNoLine{sphinx}{^^J**** SPHINX DEPRECATION WARNING:^^J + \sphinxdeprecatedmacro^^J + \@spaces- is deprecated at Sphinx #2^^J + \@spaces- and removed at Sphinx #3.^^J + #4^^J****}}% + }{% warning already emitted (at end of latex log), don't repeat + }} + + +%% PACKAGES +% +% we delay handling of options to after having loaded packages, because +% of the need to use \definecolor. +\RequirePackage{graphicx} +\@ifclassloaded{memoir}{}{\RequirePackage{fancyhdr}} +% for \text macro and \iffirstchoice@ conditional even if amsmath not loaded +\RequirePackage{amstext} +\RequirePackage{textcomp}% "warn" option issued from template +\RequirePackage[nobottomtitles*]{titlesec} +\@ifpackagelater{titlesec}{2016/03/15}% + {\@ifpackagelater{titlesec}{2016/03/21}% + {}% + {\newif\ifsphinx@ttlpatch@ok + \IfFileExists{etoolbox.sty}{% + \RequirePackage{etoolbox}% + \patchcmd{\ttlh@hang}{\parindent\z@}{\parindent\z@\leavevmode}% + {\sphinx@ttlpatch@oktrue}{}% + \ifsphinx@ttlpatch@ok + \patchcmd{\ttlh@hang}{\noindent}{}{}{\sphinx@ttlpatch@okfalse}% + \fi + }{}% + \ifsphinx@ttlpatch@ok + \typeout{^^J Package Sphinx Info: ^^J + **** titlesec 2.10.1 successfully patched for bugfix ****^^J}% + \else + \AtEndDocument{\PackageWarningNoLine{sphinx}{^^J% +******** titlesec 2.10.1 has a bug, (section numbers disappear) ......|^^J% +******** and Sphinx could not patch it, perhaps because your local ...|^^J% +******** copy is already fixed without a changed release date. .......|^^J% +******** If not, you must update titlesec! ...........................|}}% + \fi + }% + }{} +\RequirePackage{tabulary} +% tabulary has a bug with its re-definition of \multicolumn in its first pass +% which is not \long. But now Sphinx does not use LaTeX's \multicolumn but its +% own macro. Hence we don't even need to patch tabulary. See sphinxmulticell.sty +% X or S (Sphinx) may have meanings if some table package is loaded hence +% \X was chosen to avoid possibility of conflict +\newcolumntype{\X}[2]{p{\dimexpr + (\linewidth-\arrayrulewidth)*#1/#2-\tw@\tabcolsep-\arrayrulewidth\relax}} +\newcolumntype{\Y}[1]{p{\dimexpr + #1\dimexpr\linewidth-\arrayrulewidth\relax-\tw@\tabcolsep-\arrayrulewidth\relax}} +% using here T (for Tabulary) feels less of a problem than the X could be +\newcolumntype{T}{J}% +% For tables allowing pagebreaks +\RequirePackage{longtable} +% User interface to set-up whitespace before and after tables: +\newcommand*\sphinxtablepre {0pt}% +\newcommand*\sphinxtablepost{\medskipamount}% +% Space from caption baseline to top of table or frame of literal-block +\newcommand*\sphinxbelowcaptionspace{.5\sphinxbaselineskip}% +% as one can not use \baselineskip from inside longtable (it is zero there) +% we need \sphinxbaselineskip, which defaults to \baselineskip +\def\sphinxbaselineskip{\baselineskip}% +% The following is to ensure that, whether tabular(y) or longtable: +% - if a caption is on top of table: +% a) the space between its last baseline and the top rule of table is +% exactly \sphinxbelowcaptionspace +% b) the space from last baseline of previous text to first baseline of +% caption is exactly \parskip+\baselineskip+ height of a strut. +% c) the caption text will wrap at width \LTcapwidth (4in) +% - make sure this works also if "caption" package is loaded by user +% (with its width or margin option taking place of \LTcapwidth role) +% TODO: obtain same for caption of literal block: a) & c) DONE, b) TO BE DONE +% +% To modify space below such top caption, adjust \sphinxbelowcaptionspace +% To add or remove space above such top caption, adjust \sphinxtablepre: +% notice that \abovecaptionskip, \belowcaptionskip, \LTpre are **ignored** +% A. Table with longtable +\def\sphinxatlongtablestart + {\par + \vskip\parskip + \vskip\dimexpr\sphinxtablepre\relax % adjust vertical position + \vbox{}% get correct baseline from above + \LTpre\z@skip\LTpost\z@skip % set to zero longtable's own skips + \edef\sphinxbaselineskip{\dimexpr\the\dimexpr\baselineskip\relax\relax}% + }% +% Compatibility with caption package +\def\sphinxthelongtablecaptionisattop{% + \spx@ifcaptionpackage{\noalign{\vskip-\belowcaptionskip}}{}% +}% +% Achieves exactly \sphinxbelowcaptionspace below longtable caption +\def\sphinxlongtablecapskipadjust + {\dimexpr-\dp\strutbox + -\spx@ifcaptionpackage{\abovecaptionskip}{\sphinxbaselineskip}% + +\sphinxbelowcaptionspace\relax}% +\def\sphinxatlongtableend{\@nobreakfalse % latex3/latex2e#173 + \prevdepth\z@\vskip\sphinxtablepost\relax}% +% B. Table with tabular or tabulary +\def\sphinxattablestart{\par\vskip\dimexpr\sphinxtablepre\relax}% +\let\sphinxattableend\sphinxatlongtableend +% This is used by tabular and tabulary templates +\newcommand*\sphinxcapstartof[1]{% + \vskip\parskip + \vbox{}% force baselineskip for good positioning by capstart of hyperanchor + % hyperref puts the anchor 6pt above this baseline; in case of caption + % this baseline will be \ht\strutbox above first baseline of caption + \def\@captype{#1}% + \capstart +% move back vertically, as tabular (or its caption) will compensate + \vskip-\baselineskip\vskip-\parskip +}% +\def\sphinxthecaptionisattop{% locate it after \sphinxcapstartof + \spx@ifcaptionpackage + {\caption@setposition{t}% + \vskip\baselineskip\vskip\parskip % undo those from \sphinxcapstartof + \vskip-\belowcaptionskip % anticipate caption package skip + % caption package uses a \vbox, not a \vtop, so "single line" case + % gives different result from "multi-line" without this: + \nointerlineskip + }% + {}% +}% +\def\sphinxthecaptionisatbottom{% (not finalized; for template usage) + \spx@ifcaptionpackage{\caption@setposition{b}}{}% +}% +% The aim of \sphinxcaption is to apply to tabular(y) the maximal width +% of caption as done by longtable +\def\sphinxtablecapwidth{\LTcapwidth}% +\newcommand\sphinxcaption{\@dblarg\spx@caption}% +\long\def\spx@caption[#1]#2{% + \noindent\hb@xt@\linewidth{\hss + \vtop{\@tempdima\dimexpr\sphinxtablecapwidth\relax +% don't exceed linewidth for the caption width + \ifdim\@tempdima>\linewidth\hsize\linewidth\else\hsize\@tempdima\fi +% longtable ignores \abovecaptionskip/\belowcaptionskip, so do the same here + \abovecaptionskip\sphinxabovecaptionskip % \z@skip + \belowcaptionskip\sphinxbelowcaptionskip % \z@skip + \caption[{#1}]% + {\strut\ignorespaces#2\ifhmode\unskip\@finalstrut\strutbox\fi}% + }\hss}% + \par\prevdepth\dp\strutbox +}% +\def\sphinxabovecaptionskip{\z@skip}% Do not use! Flagged for removal +\def\sphinxbelowcaptionskip{\z@skip}% Do not use! Flagged for removal +% This wrapper of \abovecaptionskip is used in sphinxVerbatim for top +% caption, and with another value in sphinxVerbatimintable +% TODO: To unify space above caption of a code-block with the one above +% caption of a table/longtable, \abovecaptionskip must not be used +% This auxiliary will get renamed and receive a different meaning +% in future. +\def\spx@abovecaptionskip{\abovecaptionskip}% +% Achieve \sphinxbelowcaptionspace below a caption located above a tabular +% or a tabulary +\newcommand\sphinxaftertopcaption +{% + \spx@ifcaptionpackage + {\par\prevdepth\dp\strutbox\nobreak\vskip-\abovecaptionskip}{\nobreak}% + \vskip\dimexpr\sphinxbelowcaptionspace\relax + \vskip-\baselineskip\vskip-\parskip +}% +% varwidth is crucial for our handling of general contents in merged cells +\RequirePackage{varwidth} +% but addition of a compatibility patch with hyperref is needed +% (tested with varwidth v 0.92 Mar 2009) +\AtBeginDocument {% + \let\@@vwid@Hy@raisedlink\Hy@raisedlink + \long\def\@vwid@Hy@raisedlink#1{\@vwid@wrap{\@@vwid@Hy@raisedlink{#1}}}% + \edef\@vwid@setup{% + \let\noexpand\Hy@raisedlink\noexpand\@vwid@Hy@raisedlink % HYPERREF ! + \unexpanded\expandafter{\@vwid@setup}}% +}% +% Homemade package to handle merged cells +\RequirePackage{sphinxmulticell} +\RequirePackage{makeidx} +% For framing code-blocks and warning type notices, and shadowing topics +\RequirePackage{framed} +% The xcolor package draws better fcolorboxes around verbatim code +\IfFileExists{xcolor.sty}{ + \RequirePackage{xcolor} +}{ + \RequirePackage{color} +} +% For highlighted code. +\RequirePackage{fancyvrb} +\define@key{FV}{hllines}{\def\sphinx@verbatim@checkifhl##1{\in@{, ##1,}{#1}}} +% sphinxVerbatim must be usable by third party without requiring hllines set-up +\def\sphinxresetverbatimhllines{\def\sphinx@verbatim@checkifhl##1{\in@false}} +\sphinxresetverbatimhllines +% For hyperlinked footnotes in tables; also for gathering footnotes from +% topic and warning blocks. Also to allow code-blocks in footnotes. +\RequirePackage{footnotehyper-sphinx} +% For the H specifier. Do not \restylefloat{figure}, it breaks Sphinx code +% for allowing figures in tables. +\RequirePackage{float} +% For floating figures in the text. Better to load after float. +\RequirePackage{wrapfig} +% Separate paragraphs by space by default. +\IfFileExists{parskip-2001-04-09.sty}% since September 2018 TeXLive update +% new parskip.sty, but let it rollback to old one. +% hopefully TeX installation not broken and LaTeX kernel not too old + {\RequirePackage{parskip}[=v1]} +% standard one from 1989. Admittedly \section of article/book gives possibly +% anomalous spacing, but we can't require September 2018 release for some time. + {\RequirePackage{parskip}} +% For parsed-literal blocks. +\RequirePackage{alltt} +% Display "real" single quotes in literal blocks. +\RequirePackage{upquote} +% control caption around literal-block +\RequirePackage{capt-of} +\RequirePackage{needspace} +% LaTeX 2018-04-01 and later provides \@removefromreset +\ltx@ifundefined{@removefromreset} + {\RequirePackage{remreset}} + {}% avoid warning +% To support hlist directive +\RequirePackage{multicol} +% to make pdf with correct encoded bookmarks in Japanese +% this should precede the hyperref package +\ifx\kanjiskip\@undefined +% for non-Japanese: make sure bookmarks are ok also with lualatex + \PassOptionsToPackage{pdfencoding=unicode}{hyperref} +\else + \RequirePackage{atbegshi} + \ifx\ucs\@undefined + \ifnum 42146=\euc"A4A2 + \AtBeginShipoutFirst{\special{pdf:tounicode EUC-UCS2}} + \else + \AtBeginShipoutFirst{\special{pdf:tounicode 90ms-RKSJ-UCS2}} + \fi + \else + \AtBeginShipoutFirst{\special{pdf:tounicode UTF8-UCS2}} + \fi +\fi + +\ifx\@jsc@uplatextrue\@undefined\else + \PassOptionsToPackage{setpagesize=false}{hyperref} +\fi + +% These options can be overriden inside 'hyperref' key +% or by later use of \hypersetup. +\PassOptionsToPackage{colorlinks,breaklinks,% + linkcolor=InnerLinkColor,filecolor=OuterLinkColor,% + menucolor=OuterLinkColor,urlcolor=OuterLinkColor,% + citecolor=InnerLinkColor}{hyperref} + +% stylesheet for highlighting with pygments +\RequirePackage{sphinxhighlight} +% fix baseline increase from Pygments latex formatter in case of error tokens +% and keep \fboxsep's scope local via added braces +\def\PYG@tok@err{% + \def\PYG@bc##1{{\setlength{\fboxsep}{-\fboxrule}% + \fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}}% +} +\def\PYG@tok@cs{% + \def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}% + \def\PYG@bc##1{{\setlength{\fboxsep}{0pt}% + \colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}% +}% + + +%% OPTIONS +% +% Handle options via "kvoptions" (later loaded by hyperref anyhow) +\RequirePackage{kvoptions} +\SetupKeyvalOptions{prefix=spx@opt@} % use \spx@opt@ prefix + +% Sphinx legacy text layout: 1in margins on all four sides +\ifx\@jsc@uplatextrue\@undefined +\DeclareStringOption[1in]{hmargin} +\DeclareStringOption[1in]{vmargin} +\DeclareStringOption[.5in]{marginpar} +\else +% Japanese standard document classes handle \mag in a special way +\DeclareStringOption[\inv@mag in]{hmargin} +\DeclareStringOption[\inv@mag in]{vmargin} +\DeclareStringOption[.5\dimexpr\inv@mag in\relax]{marginpar} +\fi + +\DeclareStringOption[0]{maxlistdepth}% \newcommand*\spx@opt@maxlistdepth{0} +\DeclareStringOption[-1]{numfigreset} +\DeclareBoolOption[false]{nonumfigreset} +\DeclareBoolOption[false]{mathnumfig} +% \DeclareBoolOption[false]{usespart}% not used +% dimensions, we declare the \dimen registers here. +\newdimen\sphinxverbatimsep +\newdimen\sphinxverbatimborder +\newdimen\sphinxshadowsep +\newdimen\sphinxshadowsize +\newdimen\sphinxshadowrule +% \DeclareStringOption is not convenient for the handling of these dimensions +% because we want to assign the values to the corresponding registers. Even if +% we added the code to the key handler it would be too late for the initial +% set-up and we would need to do initial assignments explicitely. We end up +% using \define@key directly. +% verbatim +\sphinxverbatimsep=\fboxsep + \define@key{sphinx}{verbatimsep}{\sphinxverbatimsep\dimexpr #1\relax} +\sphinxverbatimborder=\fboxrule + \define@key{sphinx}{verbatimborder}{\sphinxverbatimborder\dimexpr #1\relax} +% topic boxes +\sphinxshadowsep =5pt + \define@key{sphinx}{shadowsep}{\sphinxshadowsep\dimexpr #1\relax} +\sphinxshadowsize=4pt + \define@key{sphinx}{shadowsize}{\sphinxshadowsize\dimexpr #1\relax} +\sphinxshadowrule=\fboxrule + \define@key{sphinx}{shadowrule}{\sphinxshadowrule\dimexpr #1\relax} +% verbatim +\DeclareBoolOption[true]{verbatimwithframe} +\DeclareBoolOption[true]{verbatimwrapslines} +\DeclareBoolOption[false]{verbatimforcewraps} +\DeclareStringOption[3]{verbatimmaxoverfull} +\DeclareStringOption[100]{verbatimmaxunderfull} +\DeclareBoolOption[true]{verbatimhintsturnover} +\DeclareBoolOption[true]{inlineliteralwraps} +\DeclareStringOption[t]{literalblockcappos} +\DeclareStringOption[r]{verbatimcontinuedalign} +\DeclareStringOption[r]{verbatimcontinuesalign} +% parsed literal +\DeclareBoolOption[true]{parsedliteralwraps} +% \textvisiblespace for compatibility with fontspec+XeTeX/LuaTeX +\DeclareStringOption[\textcolor{red}{\textvisiblespace}]{verbatimvisiblespace} +\DeclareStringOption % must use braces to hide the brackets + [{\makebox[2\fontcharwd\font`\x][r]{\textcolor{red}{\tiny$\m@th\hookrightarrow$}}}]% + {verbatimcontinued} +% notices/admonitions +% the dimensions for notices/admonitions are kept as macros and assigned to +% \spx@notice@border at time of use, hence \DeclareStringOption is ok for this +\newdimen\spx@notice@border +\DeclareStringOption[0.5pt]{noteborder} +\DeclareStringOption[0.5pt]{hintborder} +\DeclareStringOption[0.5pt]{importantborder} +\DeclareStringOption[0.5pt]{tipborder} +\DeclareStringOption[1pt]{warningborder} +\DeclareStringOption[1pt]{cautionborder} +\DeclareStringOption[1pt]{attentionborder} +\DeclareStringOption[1pt]{dangerborder} +\DeclareStringOption[1pt]{errorborder} +% footnotes +\DeclareStringOption[\mbox{ }]{AtStartFootnote} +% we need a public macro name for direct use in latex file +\newcommand*{\sphinxAtStartFootnote}{\spx@opt@AtStartFootnote} +% no such need for this one, as it is used inside other macros +\DeclareStringOption[\leavevmode\unskip]{BeforeFootnote} +% some font styling. +\DeclareStringOption[\sffamily\bfseries]{HeaderFamily} +% colours +% same problems as for dimensions: we want the key handler to use \definecolor. +% first, some colours with no prefix, for backwards compatibility +\newcommand*{\sphinxDeclareColorOption}[2]{% + \definecolor{#1}#2% + \define@key{sphinx}{#1}{\definecolor{#1}##1}% +}% +\sphinxDeclareColorOption{TitleColor}{{rgb}{0.126,0.263,0.361}} +\sphinxDeclareColorOption{InnerLinkColor}{{rgb}{0.208,0.374,0.486}} +\sphinxDeclareColorOption{OuterLinkColor}{{rgb}{0.216,0.439,0.388}} +\sphinxDeclareColorOption{VerbatimColor}{{rgb}{1,1,1}} +\sphinxDeclareColorOption{VerbatimBorderColor}{{rgb}{0,0,0}} +% now the colours defined with "sphinx" prefix in their names +\newcommand*{\sphinxDeclareSphinxColorOption}[2]{% + % set the initial default + \definecolor{sphinx#1}#2% + % set the key handler. The "value" ##1 must be acceptable by \definecolor. + \define@key{sphinx}{#1}{\definecolor{sphinx#1}##1}% +}% +% Default color chosen to be as in minted.sty LaTeX package! +\sphinxDeclareSphinxColorOption{VerbatimHighlightColor}{{rgb}{0.878,1,1}} +% admonition boxes, "light" style +\sphinxDeclareSphinxColorOption{noteBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{hintBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{importantBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{tipBorderColor}{{rgb}{0,0,0}} +% admonition boxes, "heavy" style +\sphinxDeclareSphinxColorOption{warningBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{cautionBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{attentionBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{dangerBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{errorBorderColor}{{rgb}{0,0,0}} +\sphinxDeclareSphinxColorOption{warningBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{cautionBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{attentionBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{dangerBgColor}{{rgb}{1,1,1}} +\sphinxDeclareSphinxColorOption{errorBgColor}{{rgb}{1,1,1}} + +\DeclareDefaultOption{\@unknownoptionerror} +\ProcessKeyvalOptions* +% don't allow use of maxlistdepth via \sphinxsetup. +\DisableKeyvalOption{sphinx}{maxlistdepth} +\DisableKeyvalOption{sphinx}{numfigreset} +\DisableKeyvalOption{sphinx}{nonumfigreset} +\DisableKeyvalOption{sphinx}{mathnumfig} +% To allow hyphenation of first word in narrow contexts; no option, +% customization to be done via 'preamble' key +\newcommand*\sphinxAtStartPar{\leavevmode\nobreak\hskip\z@skip} +% No need for the \hspace{0pt} trick (\hskip\z@skip) with luatex +\ifdefined\directlua\let\sphinxAtStartPar\@empty\fi +% user interface: options can be changed midway in a document! +\newcommand\sphinxsetup[1]{\setkeys{sphinx}{#1}} + + +%% ALPHANUMERIC LIST ITEMS +\newcommand\sphinxsetlistlabels[5] +{% #1 = style, #2 = enum, #3 = enumnext, #4 = prefix, #5 = suffix + % #2 and #3 are counters used by enumerate environement e.g. enumi, enumii. + % #1 is a macro such as \arabic or \alph + % prefix and suffix are strings (by default empty and a dot). + \@namedef{the#2}{#1{#2}}% + \@namedef{label#2}{#4\@nameuse{the#2}#5}% + \@namedef{p@#3}{\@nameuse{p@#2}#4\@nameuse{the#2}#5}% +}% + + +%% MAXLISTDEPTH +% +% remove LaTeX's cap on nesting depth if 'maxlistdepth' key used. +% This is a hack, which works with the standard classes: it assumes \@toodeep +% is always used in "true" branches: "\if ... \@toodeep \else .. \fi." + +% will force use the "false" branch (if there is one) +\def\spx@toodeep@hack{\fi\iffalse} + +% do nothing if 'maxlistdepth' key not used or if package enumitem loaded. +\ifnum\spx@opt@maxlistdepth=\z@\expandafter\@gobbletwo\fi +\AtBeginDocument{% +\@ifpackageloaded{enumitem}{\remove@to@nnil}{}% + \let\spx@toodeepORI\@toodeep + \def\@toodeep{% + \ifnum\@listdepth<\spx@opt@maxlistdepth\relax + \expandafter\spx@toodeep@hack + \else + \expandafter\spx@toodeepORI + \fi}% +% define all missing \@list... macros + \count@\@ne + \loop + \ltx@ifundefined{@list\romannumeral\the\count@} + {\iffalse}{\iftrue\advance\count@\@ne}% + \repeat + \loop + \ifnum\count@>\spx@opt@maxlistdepth\relax\else + \expandafter\let + \csname @list\romannumeral\the\count@\expandafter\endcsname + \csname @list\romannumeral\the\numexpr\count@-\@ne\endcsname + % workaround 2.6--3.2d babel-french issue (fixed in 3.2e; no change needed) + \ltx@ifundefined{leftmargin\romannumeral\the\count@} + {\expandafter\let + \csname leftmargin\romannumeral\the\count@\expandafter\endcsname + \csname leftmargin\romannumeral\the\numexpr\count@-\@ne\endcsname}{}% + \advance\count@\@ne + \repeat +% define all missing enum... counters and \labelenum... macros and \p@enum.. + \count@\@ne + \loop + \ltx@ifundefined{c@enum\romannumeral\the\count@} + {\iffalse}{\iftrue\advance\count@\@ne}% + \repeat + \loop + \ifnum\count@>\spx@opt@maxlistdepth\relax\else + \newcounter{enum\romannumeral\the\count@}% + \expandafter\def + \csname labelenum\romannumeral\the\count@\expandafter\endcsname + \expandafter + {\csname theenum\romannumeral\the\numexpr\count@\endcsname.}% + \expandafter\def + \csname p@enum\romannumeral\the\count@\expandafter\endcsname + \expandafter + {\csname p@enum\romannumeral\the\numexpr\count@-\@ne\expandafter + \endcsname\csname theenum\romannumeral\the\numexpr\count@-\@ne\endcsname.}% + \advance\count@\@ne + \repeat +% define all missing labelitem... macros + \count@\@ne + \loop + \ltx@ifundefined{labelitem\romannumeral\the\count@} + {\iffalse}{\iftrue\advance\count@\@ne}% + \repeat + \loop + \ifnum\count@>\spx@opt@maxlistdepth\relax\else + \expandafter\let + \csname labelitem\romannumeral\the\count@\expandafter\endcsname + \csname labelitem\romannumeral\the\numexpr\count@-\@ne\endcsname + \advance\count@\@ne + \repeat + \PackageInfo{sphinx}{maximal list depth extended to \spx@opt@maxlistdepth}% +\@gobble\@nnil +} + + +%% INDEX, BIBLIOGRAPHY, APPENDIX, TABLE OF CONTENTS +% +% fix the double index and bibliography on the table of contents +% in jsclasses (Japanese standard document classes) +\ifx\@jsc@uplatextrue\@undefined\else + \renewenvironment{sphinxtheindex} + {\cleardoublepage\phantomsection + \begin{theindex}} + {\end{theindex}} + + \renewenvironment{sphinxthebibliography}[1] + {\cleardoublepage% \phantomsection % not needed here since TeXLive 2010's hyperref + \begin{thebibliography}{#1}} + {\end{thebibliography}} +\fi + +% disable \@chappos in Appendix in pTeX +\ifx\kanjiskip\@undefined\else + \let\py@OldAppendix=\appendix + \renewcommand{\appendix}{ + \py@OldAppendix + \gdef\@chappos{} + } +\fi + +% make commands known to non-Sphinx document classes +\providecommand*{\sphinxmaketitle}{\maketitle} +\providecommand*{\sphinxtableofcontents}{\tableofcontents} +\ltx@ifundefined{sphinxthebibliography} + {\newenvironment + {sphinxthebibliography}{\begin{thebibliography}}{\end{thebibliography}}% + } + {}% else clause of \ltx@ifundefined +\ltx@ifundefined{sphinxtheindex} + {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}}% + {}% else clause of \ltx@ifundefined + +% for usage with xindy: this string gets internationalized in preamble +\newcommand*{\sphinxnonalphabeticalgroupname}{} +% redefined in preamble, headings for makeindex produced index +\newcommand*{\sphinxsymbolsname}{} +\newcommand*{\sphinxnumbersname}{} + +%% COLOR (general) +% +% FIXME: \normalcolor should probably be used in place of \py@NormalColor +% elsewhere, and \py@NormalColor should never be defined. \normalcolor +% switches to the colour from last \color call in preamble. +\def\py@NormalColor{\color{black}} +% FIXME: it is probably better to use \color{TitleColor}, as TitleColor +% can be customized from 'sphinxsetup', and drop usage of \py@TitleColor +\def\py@TitleColor{\color{TitleColor}} +% FIXME: this line should be dropped, as "9" is default anyhow. +\ifdefined\pdfcompresslevel\pdfcompresslevel = 9 \fi + + +%% PAGE STYLING +% +% Style parameters and macros used by most documents here +\raggedbottom +\sloppy +\hbadness = 5000 % don't print trivial gripes + +% Use \pagestyle{normal} as the primary pagestyle for text. +% Redefine the 'normal' header/footer style when using "fancyhdr" package: +\@ifpackageloaded{fancyhdr}{% + \ltx@ifundefined{c@chapter} + {% no \chapter, "howto" (non-Japanese) docclass + \fancypagestyle{plain}{ + \fancyhf{} + \fancyfoot[C]{{\py@HeaderFamily\thepage}} + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0pt} + } + % Same as 'plain', this way we can use it in template + % FIXME: shouldn't this have a running header with Name and Release like 'manual'? + \fancypagestyle{normal}{ + \fancyhf{} + \fancyfoot[C]{{\py@HeaderFamily\thepage}} + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0pt} + } + }% + {% classes with \chapter command + \fancypagestyle{normal}{ + \fancyhf{} + \fancyfoot[RO]{{\py@HeaderFamily\thepage}} + \fancyfoot[LO]{{\py@HeaderFamily\nouppercase{\rightmark}}} + \fancyhead[RO]{{\py@HeaderFamily \@title\sphinxheadercomma\py@release}} + \if@twoside + \fancyfoot[LE]{{\py@HeaderFamily\thepage}} + \fancyfoot[RE]{{\py@HeaderFamily\nouppercase{\leftmark}}} + \fancyhead[LE]{{\py@HeaderFamily \@title\sphinxheadercomma\py@release}} + \fi + \renewcommand{\headrulewidth}{0.4pt} + \renewcommand{\footrulewidth}{0.4pt} + % define chaptermark with \@chappos when \@chappos is available for Japanese + \ltx@ifundefined{@chappos}{} + {\def\chaptermark##1{\markboth{\@chapapp\space\thechapter\space\@chappos\space ##1}{}}} + } + % Update the plain style so we get the page number & footer line, + % but not a chapter or section title. This is to keep the first + % page of a chapter `clean.' + \fancypagestyle{plain}{ + \fancyhf{} + \fancyfoot[RO]{{\py@HeaderFamily\thepage}} + \if@twoside\fancyfoot[LE]{{\py@HeaderFamily\thepage}}\fi + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0.4pt} + } + } + } + {% no fancyhdr: memoir class + % Provide default for 'normal' style simply as an alias of 'plain' style + % This way we can use \pagestyle{normal} in LaTeX template + \def\ps@normal{\ps@plain} + % Users of memoir class are invited to redefine 'normal' style in preamble + } + +% geometry +\ifx\kanjiskip\@undefined + \PassOptionsToPackage{% + hmargin={\unexpanded{\spx@opt@hmargin}},% + vmargin={\unexpanded{\spx@opt@vmargin}},% + marginpar=\unexpanded{\spx@opt@marginpar}} + {geometry} +\else + % set text width for Japanese documents to be integer multiple of 1zw + % and text height to be integer multiple of \baselineskip + % the execution is delayed to \sphinxsetup then geometry.sty + \normalsize\normalfont + \newcommand*\sphinxtextwidthja[1]{% + \if@twocolumn\tw@\fi + \dimexpr + \numexpr\dimexpr\paperwidth-\tw@\dimexpr#1\relax\relax/ + \dimexpr\if@twocolumn\tw@\else\@ne\fi zw\relax + zw\relax}% + \newcommand*\sphinxmarginparwidthja[1]{% + \dimexpr\numexpr\dimexpr#1\relax/\dimexpr1zw\relax zw\relax}% + \newcommand*\sphinxtextlinesja[1]{% + \numexpr\@ne+\dimexpr\paperheight-\topskip-\tw@\dimexpr#1\relax\relax/ + \baselineskip\relax}% + \ifx\@jsc@uplatextrue\@undefined\else + % the way we found in order for the papersize special written by + % geometry in the dvi file to be correct in case of jsbook class + \ifnum\mag=\@m\else % do nothing special if nomag class option or 10pt + \PassOptionsToPackage{truedimen}{geometry}% + \fi + \fi + \PassOptionsToPackage{% + hmarginratio={1:1},% + textwidth=\unexpanded{\sphinxtextwidthja{\spx@opt@hmargin}},% + vmarginratio={1:1},% + lines=\unexpanded{\sphinxtextlinesja{\spx@opt@vmargin}},% + marginpar=\unexpanded{\sphinxmarginparwidthja{\spx@opt@marginpar}},% + footskip=2\baselineskip,% + }{geometry}% + \AtBeginDocument + {% update a dimension used by the jsclasses + \ifx\@jsc@uplatextrue\@undefined\else\fullwidth\textwidth\fi + % for some reason, jreport normalizes all dimensions with \@settopoint + \@ifclassloaded{jreport} + {\@settopoint\textwidth\@settopoint\textheight\@settopoint\marginparwidth} + {}% <-- "false" clause of \@ifclassloaded + }% +\fi + +% fix fncychap's bug which uses prematurely the \textwidth value +\@ifpackagewith{fncychap}{Bjornstrup} + {\AtBeginDocument{\mylen\textwidth\advance\mylen-2\myhi}}% + {}% <-- "false" clause of \@ifpackagewith + + +%% TITLES +% +% Since Sphinx 1.5, users should use HeaderFamily key to 'sphinxsetup' rather +% than defining their own \py@HeaderFamily command (which is still possible). +% Memo: \py@HeaderFamily is also used by \maketitle as defined in +% sphinxmanual.cls/sphinxhowto.cls +\newcommand{\py@HeaderFamily}{\spx@opt@HeaderFamily} + +% This sets up the fancy chapter headings that make the documents look +% at least a little better than the usual LaTeX output. +\@ifpackagewith{fncychap}{Bjarne}{ + \ChNameVar {\raggedleft\normalsize \py@HeaderFamily} + \ChNumVar {\raggedleft\Large \py@HeaderFamily} + \ChTitleVar{\raggedleft\Large \py@HeaderFamily} + % This creates (numbered) chapter heads without the leading \vspace*{}: + \def\@makechapterhead#1{% + {\parindent \z@ \raggedright \normalfont + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \DOCH + \fi + \fi + \interlinepenalty\@M + \if@mainmatter + \DOTI{#1}% + \else% + \DOTIS{#1}% + \fi + }} +}{}% <-- "false" clause of \@ifpackagewith + +% Augment the sectioning commands used to get our own font family in place, +% and reset some internal data items (\titleformat from titlesec package) +\titleformat{\section}{\Large\py@HeaderFamily}% + {\py@TitleColor\thesection}{0.5em}{\py@TitleColor} +\titleformat{\subsection}{\large\py@HeaderFamily}% + {\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor} +\titleformat{\subsubsection}{\py@HeaderFamily}% + {\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor} +% By default paragraphs (and subsubsections) will not be numbered because +% sphinxmanual.cls and sphinxhowto.cls set secnumdepth to 2 +\titleformat{\paragraph}{\py@HeaderFamily}% + {\py@TitleColor\theparagraph}{0.5em}{\py@TitleColor} +\titleformat{\subparagraph}{\py@HeaderFamily}% + {\py@TitleColor\thesubparagraph}{0.5em}{\py@TitleColor} + + +%% GRAPHICS +% +% \sphinxincludegraphics resizes images larger than the TeX \linewidth (which +% is adjusted in indented environments), or taller than a certain maximal +% height (usually \textheight and this is reduced in the environments which use +% framed.sty to avoid infinite loop if image too tall). +% +% In case height or width options are present the rescaling is done +% (since 2.0), in a way keeping the width:height ratio either native from +% image or from the width and height options if both were present. +% +\newdimen\spx@image@maxheight +\AtBeginDocument{\spx@image@maxheight\textheight} + +% box scratch register +\newbox\spx@image@box +\newcommand*{\sphinxsafeincludegraphics}[2][]{% + % #1 contains possibly width=, height=, but no scale= since 1.8.4 + \setbox\spx@image@box\hbox{\includegraphics[#1,draft]{#2}}% + \in@false % use some handy boolean flag + \ifdim \wd\spx@image@box>\linewidth + \in@true % flag to remember to adjust options and set box dimensions + % compute height which results from rescaling width to \linewidth + % and keep current aspect ratio. multiply-divide in \numexpr uses + % temporarily doubled precision, hence no overflow. (of course we + % assume \ht is not a few sp's below \maxdimen...(about 16384pt). + \edef\spx@image@rescaledheight % with sp units + {\the\numexpr\ht\spx@image@box + *\linewidth/\wd\spx@image@box sp}% + \ifdim\spx@image@rescaledheight>\spx@image@maxheight + % the rescaled height will be too big, so it is height which decides + % the rescaling factor + \def\spx@image@requiredheight{\spx@image@maxheight}% dimen register + \edef\spx@image@requiredwidth % with sp units + {\the\numexpr\wd\spx@image@box + *\spx@image@maxheight/\ht\spx@image@box sp}% + % TODO: decide if this commented-out block could be needed due to + % rounding in numexpr operations going up + % \ifdim\spx@image@requiredwidth>\linewidth + % \def\spx@image@requiredwidth{\linewidth}% dimen register + % \fi + \else + \def\spx@image@requiredwidth{\linewidth}% dimen register + \let\spx@image@requiredheight\spx@image@rescaledheight% sp units + \fi + \else + % width is ok, let's check height + \ifdim\ht\spx@image@box>\spx@image@maxheight + \in@true + \edef\spx@image@requiredwidth % with sp units + {\the\numexpr\wd\spx@image@box + *\spx@image@maxheight/\ht\spx@image@box sp}% + \def\spx@image@requiredheight{\spx@image@maxheight}% dimen register + \fi + \fi % end of check of width and height + \ifin@ + \setbox\spx@image@box + \hbox{\includegraphics + [%#1,% contained only width and/or height and overruled anyhow + width=\spx@image@requiredwidth,height=\spx@image@requiredheight]% + {#2}}% + % \includegraphics does not set box dimensions to the exactly + % requested ones, see https://github.com/latex3/latex2e/issues/112 + \wd\spx@image@box\spx@image@requiredwidth + \ht\spx@image@box\spx@image@requiredheight + \leavevmode\box\spx@image@box + \else + % here we do not modify the options, no need to adjust width and height + % on output, they will be computed exactly as with "draft" option + \setbox\spx@image@box\box\voidb@x % clear memory + \includegraphics[#1]{#2}% + \fi +}% +% Use the "safe" one by default (2.0) +\def\sphinxincludegraphics{\sphinxsafeincludegraphics} + + +%% FIGURE IN TABLE +% +\newenvironment{sphinxfigure-in-table}[1][\linewidth]{% + \def\@captype{figure}% + \sphinxsetvskipsforfigintablecaption + \begin{minipage}{#1}% +}{\end{minipage}} +% store the original \caption macro for usage with figures inside longtable +% and tabulary cells. Make sure we get the final \caption in presence of +% caption package, whether the latter was loaded before or after sphinx. +\AtBeginDocument{% + \let\spx@originalcaption\caption + \@ifpackageloaded{caption} + {\let\spx@ifcaptionpackage\@firstoftwo + \caption@AtBeginDocument*{\let\spx@originalcaption\caption}% +% in presence of caption package, drop our own \sphinxcaption whose aim was to +% ensure same width of caption to all kinds of tables (tabular(y), longtable), +% because caption package has its own width (or margin) option + \def\sphinxcaption{\caption}% + }% + {\let\spx@ifcaptionpackage\@secondoftwo}% +} +% tabulary expands twice contents, we need to prevent double counter stepping +\newcommand*\sphinxfigcaption + {\ifx\equation$%$% this is trick to identify tabulary first pass + \firstchoice@false\else\firstchoice@true\fi + \spx@originalcaption } +\newcommand*\sphinxsetvskipsforfigintablecaption + {\abovecaptionskip\smallskipamount + \belowcaptionskip\smallskipamount} + + +%% CITATIONS +% +\protected\def\sphinxcite{\cite} + +%% FOOTNOTES +% +% Support scopes for footnote numbering +\newcounter{sphinxscope} +\newcommand{\sphinxstepscope}{\stepcounter{sphinxscope}} +% Explictly numbered footnotes may be referred to, and for this to be +% clickable we need to have only one target. So we will step this at each +% explicit footnote and let \thesphinxscope take it into account +\newcounter{sphinxexplicit} +\newcommand{\sphinxstepexplicit}{\stepcounter{sphinxexplicit}} +% Some babel/polyglossia languages fiddle with \@arabic, so let's be extra +% cautious and redefine \thesphinxscope with \number not \@arabic. +% Memo: we expect some subtle redefinition of \thesphinxscope to be a part of page +% scoping for footnotes, when we shall implement it. +\renewcommand{\thesphinxscope}{\number\value{sphinxscope}.\number\value{sphinxexplicit}} +\newcommand\sphinxthefootnotemark[2]{% + % this is used to make reference to an explicitly numbered footnote not on same page + % #1=label of footnote text, #2=page number where footnote text was printed + \ifdefined\pagename + \pagename\space#2, % <- space + \else + p. #2, % <- space + \fi #1% no space +} +% Support large numbered footnotes in minipage +% But now obsolete due to systematic use of \savenotes/\spewnotes +% when minipages are in use in the various macro definitions next. +\def\thempfootnote{\arabic{mpfootnote}} + + +%% NUMBERING OF FIGURES, TABLES, AND LITERAL BLOCKS + +% Everything is delayed to \begin{document} to allow hyperref patches into +% \newcounter to solve duplicate label problems for internal hyperlinks to +% code listings (literalblock counter). User or extension re-definitions of +% \theliteralblock, et al., thus have also to be delayed. (changed at 3.5.0) +\AtBeginDocument{% +\ltx@ifundefined{c@chapter} + {\newcounter{literalblock}}% + {\newcounter{literalblock}[chapter]% + \def\theliteralblock{\ifnum\c@chapter>\z@\arabic{chapter}.\fi + \arabic{literalblock}}% + }% +\ifspx@opt@nonumfigreset + \ltx@ifundefined{c@chapter}{}{% + \@removefromreset{figure}{chapter}% + \@removefromreset{table}{chapter}% + \@removefromreset{literalblock}{chapter}% + \ifspx@opt@mathnumfig + \@removefromreset{equation}{chapter}% + \fi + }% + \def\thefigure{\arabic{figure}}% + \def\thetable {\arabic{table}}% + \def\theliteralblock{\arabic{literalblock}}% + \ifspx@opt@mathnumfig + \def\theequation{\arabic{equation}}% + \fi +\else +\let\spx@preAthefigure\@empty +\let\spx@preBthefigure\@empty +% \ifspx@opt@usespart % <-- LaTeX writer could pass such a 'usespart' boolean +% % as sphinx.sty package option +% If document uses \part, (triggered in Sphinx by latex_toplevel_sectioning) +% LaTeX core per default does not reset chapter or section +% counters at each part. +% But if we modify this, we need to redefine \thechapter, \thesection to +% include the part number and this will cause problems in table of contents +% because of too wide numbering. Simplest is to do nothing. +% \fi +\ifnum\spx@opt@numfigreset>0 + \ltx@ifundefined{c@chapter} + {} + {\g@addto@macro\spx@preAthefigure{\ifnum\c@chapter>\z@\arabic{chapter}.}% + \g@addto@macro\spx@preBthefigure{\fi}}% +\fi +\ifnum\spx@opt@numfigreset>1 + \@addtoreset{figure}{section}% + \@addtoreset{table}{section}% + \@addtoreset{literalblock}{section}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{section}% + \fi% + \g@addto@macro\spx@preAthefigure{\ifnum\c@section>\z@\arabic{section}.}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>2 + \@addtoreset{figure}{subsection}% + \@addtoreset{table}{subsection}% + \@addtoreset{literalblock}{subsection}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{subsection}% + \fi% + \g@addto@macro\spx@preAthefigure{\ifnum\c@subsection>\z@\arabic{subsection}.}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>3 + \@addtoreset{figure}{subsubsection}% + \@addtoreset{table}{subsubsection}% + \@addtoreset{literalblock}{subsubsection}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{subsubsection}% + \fi% + \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubsection>\z@\arabic{subsubsection}.}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>4 + \@addtoreset{figure}{paragraph}% + \@addtoreset{table}{paragraph}% + \@addtoreset{literalblock}{paragraph}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{paragraph}% + \fi% + \g@addto@macro\spx@preAthefigure{\ifnum\c@subparagraph>\z@\arabic{subparagraph}.}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\ifnum\spx@opt@numfigreset>5 + \@addtoreset{figure}{subparagraph}% + \@addtoreset{table}{subparagraph}% + \@addtoreset{literalblock}{subparagraph}% + \ifspx@opt@mathnumfig + \@addtoreset{equation}{subparagraph}% + \fi% + \g@addto@macro\spx@preAthefigure{\ifnum\c@subsubparagraph>\z@\arabic{subsubparagraph}.}% + \g@addto@macro\spx@preBthefigure{\fi}% +\fi +\expandafter\g@addto@macro +\expandafter\spx@preAthefigure\expandafter{\spx@preBthefigure}% +\let\thefigure\spx@preAthefigure +\let\thetable\spx@preAthefigure +\let\theliteralblock\spx@preAthefigure +\g@addto@macro\thefigure{\arabic{figure}}% +\g@addto@macro\thetable{\arabic{table}}% +\g@addto@macro\theliteralblock{\arabic{literalblock}}% + \ifspx@opt@mathnumfig + \let\theequation\spx@preAthefigure + \g@addto@macro\theequation{\arabic{equation}}% + \fi +\fi +}% end of big \AtBeginDocument + +%% LITERAL BLOCKS +% +% Based on use of "fancyvrb.sty"'s Verbatim. +% - with framing allowing page breaks ("framed.sty") +% - with breaking of long lines (exploits Pygments mark-up), +% - with possibly of a top caption, non-separable by pagebreak. +% - and usable inside tables or footnotes ("footnotehyper-sphinx"). + +% Prior to Sphinx 1.5, \Verbatim and \endVerbatim were modified by Sphinx. +% The aliases defined here are used in sphinxVerbatim environment and can +% serve as hook-points with no need to modify \Verbatim itself. +\let\OriginalVerbatim \Verbatim +\let\endOriginalVerbatim\endVerbatim + +% for captions of literal blocks +% at start of caption title +\newcommand*{\fnum@literalblock}{\literalblockname\nobreakspace\theliteralblock} +% this will be overwritten in document preamble by Babel translation +\newcommand*{\literalblockname}{Listing } +% file extension needed for \caption's good functioning, the file is created +% only if a \listof{literalblock}{foo} command is encountered, which is +% analogous to \listoffigures, but for the code listings (foo = chosen title.) +\newcommand*{\ext@literalblock}{lol} + +\newif\ifspx@inframed % flag set if we are already in a framed environment +% if forced use of minipage encapsulation is needed (e.g. table cells) +\newif\ifsphinxverbatimwithminipage \sphinxverbatimwithminipagefalse + +% Framing macro for use with framed.sty's \FrameCommand +% - it obeys current indentation, +% - frame is \fboxsep separated from the contents, +% - the contents use the full available text width, +% - #1 = color of frame, #2 = color of background, +% - #3 = above frame, #4 = below frame, #5 = within frame, +% - #3 and #4 must be already typeset boxes; they must issue \normalcolor +% or similar, else, they are under scope of color #1 +\long\def\spx@fcolorbox #1#2#3#4#5{% + \hskip\@totalleftmargin + \hskip-\fboxsep\hskip-\fboxrule + % use of \color@b@x here is compatible with both xcolor.sty and color.sty + \color@b@x {\color{#1}\spx@CustomFBox{#3}{#4}}{\color{#2}}{#5}% + \hskip-\fboxsep\hskip-\fboxrule + \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth +}% +% #1 = for material above frame, such as a caption or a "continued" hint +% #2 = for material below frame, such as a caption or "continues on next page" +% #3 = actual contents, which will be typeset with a background color +\long\def\spx@CustomFBox#1#2#3{% + \begingroup + \setbox\@tempboxa\hbox{{#3}}% inner braces to avoid color leaks + \vbox{#1% above frame + % draw frame border _latest_ to avoid pdf viewer issue + \kern\fboxrule + \hbox{\kern\fboxrule + \copy\@tempboxa + \kern-\wd\@tempboxa\kern-\fboxrule + \vrule\@width\fboxrule + \kern\wd\@tempboxa + \vrule\@width\fboxrule}% + \kern-\dimexpr\ht\@tempboxa+\dp\@tempboxa+\fboxrule\relax + \hrule\@height\fboxrule + \kern\dimexpr\ht\@tempboxa+\dp\@tempboxa\relax + \hrule\@height\fboxrule + #2% below frame + }% + \endgroup +}% +\def\spx@fcolorbox@put@c#1{% hide width from framed.sty measuring + \moveright\dimexpr\fboxrule+.5\wd\@tempboxa\hb@xt@\z@{\hss#1\hss}% +}% +\def\spx@fcolorbox@put@r#1{% right align with contents, width hidden + \moveright\dimexpr\fboxrule+\wd\@tempboxa-\fboxsep\hb@xt@\z@{\hss#1}% +}% +\def\spx@fcolorbox@put@l#1{% left align with contents, width hidden + \moveright\dimexpr\fboxrule+\fboxsep\hb@xt@\z@{#1\hss}% +}% +% +\def\sphinxVerbatim@Continued + {\csname spx@fcolorbox@put@\spx@opt@verbatimcontinuedalign\endcsname + {\normalcolor\sphinxstylecodecontinued\literalblockcontinuedname}}% +\def\sphinxVerbatim@Continues + {\csname spx@fcolorbox@put@\spx@opt@verbatimcontinuesalign\endcsname + {\normalcolor\sphinxstylecodecontinues\literalblockcontinuesname}}% +\def\sphinxVerbatim@Title + {\spx@fcolorbox@put@c{\unhcopy\sphinxVerbatim@TitleBox}}% +\let\sphinxVerbatim@Before\@empty +\let\sphinxVerbatim@After\@empty +% Defaults are redefined in document preamble according to language +\newcommand*\literalblockcontinuedname{continued from previous page}% +\newcommand*\literalblockcontinuesname{continues on next page}% +% +\def\spx@verbatimfcolorbox{\spx@fcolorbox{VerbatimBorderColor}{VerbatimColor}}% +\def\sphinxVerbatim@FrameCommand + {\spx@verbatimfcolorbox\sphinxVerbatim@Before\sphinxVerbatim@After}% +\def\sphinxVerbatim@FirstFrameCommand + {\spx@verbatimfcolorbox\sphinxVerbatim@Before\sphinxVerbatim@Continues}% +\def\sphinxVerbatim@MidFrameCommand + {\spx@verbatimfcolorbox\sphinxVerbatim@Continued\sphinxVerbatim@Continues}% +\def\sphinxVerbatim@LastFrameCommand + {\spx@verbatimfcolorbox\sphinxVerbatim@Continued\sphinxVerbatim@After}% + +% For linebreaks inside Verbatim environment from package fancyvrb. +\newbox\sphinxcontinuationbox +\newbox\sphinxvisiblespacebox +\newcommand*\sphinxafterbreak {\copy\sphinxcontinuationbox} + +% Take advantage of the already applied Pygments mark-up to insert +% potential linebreaks for TeX processing. +% {, <, #, %, $, ' and ": go to next line. +% _, }, ^, &, >, -, ~, and \: stay at end of broken line. +% Use of \textquotesingle for straight quote. +% FIXME: convert this to package options ? +\newcommand*\sphinxbreaksbeforelist {% + \do\PYGZob\{\do\PYGZlt\<\do\PYGZsh\#\do\PYGZpc\%% {, <, #, %, + \do\PYGZdl\$\do\PYGZdq\"% $, " + \def\PYGZsq + {\discretionary{}{\sphinxafterbreak\textquotesingle}{\textquotesingle}}% ' +} +\newcommand*\sphinxbreaksafterlist {% + \do\PYGZus\_\do\PYGZcb\}\do\PYGZca\^\do\PYGZam\&% _, }, ^, &, + \do\PYGZgt\>\do\PYGZhy\-\do\PYGZti\~% >, -, ~ + \do\PYGZbs\\% \ +} +\newcommand*\sphinxbreaksatspecials {% + \def\do##1##2% + {\def##1{\discretionary{}{\sphinxafterbreak\char`##2}{\char`##2}}}% + \sphinxbreaksbeforelist + \def\do##1##2% + {\def##1{\discretionary{\char`##2}{\sphinxafterbreak}{\char`##2}}}% + \sphinxbreaksafterlist +} + +\def\sphinx@verbatim@nolig@list {\do \`}% +% Some characters . , ; ? ! / are neither pygmentized nor "tex-escaped". +% This macro makes them "active" and they will insert potential linebreaks. +% Not compatible with math mode (cf \sphinxunactivateextras). +\newcommand*\sphinxbreaksbeforeactivelist {}% none +\newcommand*\sphinxbreaksafteractivelist {\do\.\do\,\do\;\do\?\do\!\do\/} +\newcommand*\sphinxbreaksviaactive {% + \def\do##1{\lccode`\~`##1% + \lowercase{\def~}{\discretionary{}{\sphinxafterbreak\char`##1}{\char`##1}}% + \catcode`##1\active}% + \sphinxbreaksbeforeactivelist + \def\do##1{\lccode`\~`##1% + \lowercase{\def~}{\discretionary{\char`##1}{\sphinxafterbreak}{\char`##1}}% + \catcode`##1\active}% + \sphinxbreaksafteractivelist + \lccode`\~`\~ +} + +% If the linebreak is at a space, the latter will be displayed as visible +% space at end of first line, and a continuation symbol starts next line. +\def\spx@verbatim@space {% + \nobreak\hskip\z@skip + \discretionary{\copy\sphinxvisiblespacebox}{\sphinxafterbreak} + {\kern\fontdimen2\font}% +}% + +% if the available space on page is less than \literalblockneedspace, insert pagebreak +\newcommand{\sphinxliteralblockneedspace}{5\baselineskip} +\newcommand{\sphinxliteralblockwithoutcaptionneedspace}{1.5\baselineskip} +% The title (caption) is specified from outside as macro \sphinxVerbatimTitle. +% \sphinxVerbatimTitle is reset to empty after each use of Verbatim. +\newcommand*\sphinxVerbatimTitle {} +% This box to typeset the caption before framed.sty multiple passes for framing. +\newbox\sphinxVerbatim@TitleBox +% This box to measure contents if nested as inner \MakeFramed requires then +% minipage encapsulation but too long contents then break outer \MakeFramed +\newbox\sphinxVerbatim@ContentsBox +% This is a workaround to a "feature" of French lists, when literal block +% follows immediately; usable generally (does only \par then), a priori... +\newcommand*\sphinxvspacefixafterfrenchlists{% + \ifvmode\ifdim\lastskip<\z@ \vskip\parskip\fi\else\par\fi +} +% Holder macro for labels of literal blocks. Set-up by LaTeX writer. +\newcommand*\sphinxLiteralBlockLabel {} +\newcommand*\sphinxSetupCaptionForVerbatim [1] +{% + \sphinxvspacefixafterfrenchlists + \needspace{\sphinxliteralblockneedspace}% +% insert a \label via \sphinxLiteralBlockLabel +% reset to normal the color for the literal block caption + \def\sphinxVerbatimTitle + {\py@NormalColor\sphinxcaption{\sphinxLiteralBlockLabel #1}}% +} +\newcommand*\sphinxSetupCodeBlockInFootnote {% + \fvset{fontsize=\footnotesize}\let\caption\sphinxfigcaption + \sphinxverbatimwithminipagetrue % reduces vertical spaces + % we counteract (this is in a group) the \@normalsize from \caption + \let\normalsize\footnotesize\let\@parboxrestore\relax + \def\spx@abovecaptionskip{\sphinxverbatimsmallskipamount}% +} +\newcommand*{\sphinxverbatimsmallskipamount}{\smallskipamount} +% serves to implement line highlighting and line wrapping +\newcommand\sphinxFancyVerbFormatLine[1]{% + \expandafter\sphinx@verbatim@checkifhl\expandafter{\the\FV@CodeLineNo}% + \ifin@ + \sphinxVerbatimHighlightLine{#1}% + \else + \sphinxVerbatimFormatLine{#1}% + \fi +}% +\newcommand\sphinxVerbatimHighlightLine[1]{% + \edef\sphinxrestorefboxsep{\fboxsep\the\fboxsep\relax}% + \fboxsep0pt\relax % cf LaTeX bug graphics/4524 + \colorbox{sphinxVerbatimHighlightColor}% + {\sphinxrestorefboxsep\sphinxVerbatimFormatLine{#1}}% + % no need to restore \fboxsep here, as this ends up in a \hbox from fancyvrb +}% +% \sphinxVerbatimFormatLine will be set locally to one of those two: +\newcommand\sphinxVerbatimFormatLineWrap{% + \hsize\linewidth + \ifspx@opt@verbatimforcewraps + \expandafter\spx@verb@FormatLineForceWrap + \else\expandafter\spx@verb@FormatLineWrap + \fi +}% +\newcommand\sphinxVerbatimFormatLineNoWrap[1]{\hb@xt@\linewidth{\strut #1\hss}}% +\long\def\spx@verb@FormatLineWrap#1{% + \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@ + \doublehyphendemerits\z@\finalhyphendemerits\z@ + \strut #1\strut}% +}% +% +% The normal line wrapping allows breaks at spaces and ascii non +% letters, non digits. The \raggedright above means there will be +% an overfilled line only if some non-breakable "word" was +% encountered, which is longer than a line (it is moved always to +% be on its own on a new line). +% +% The "forced" line wrapping will parse the tokens to add potential +% breakpoints at each character. As some strings are highlighted, +% we have to apply the highlighting character per character, which +% requires to manipulate the output of the Pygments LaTeXFormatter. +% +% Doing this at latex level is complicated. The contents should +% be as expected: i.e. some active characters from +% \sphinxbreaksviaactive, some Pygments character escapes such as +% \PYGZdl{}, and the highlighting \PYG macro with always 2 +% arguments. No other macros should be there, except perhaps +% zero-parameter macros. In particular: +% - the texcomments Pygments option must be set to False +% +% With pdflatex, Unicode input gives multi-bytes characters +% where the first byte is active. We support the "utf8" macros +% only. "utf8x" is not supported. +% +% The highlighting macro \PYG will be applied character per +% character. Highlighting via a colored background gives thus a +% chain of small colored boxes which may cause some artefact in +% some pdf viewers. Can't do anything here if we do want the line +% break to be possible. +% +% First a measurement step is done of what would the standard line +% wrapping give (i.e line breaks only at spaces and non-letter, +% non-digit ascii characters), cf TeX by Topic for the basic +% dissecting technique: TeX unfortunately when building a vertical +% box does not store in an accessible way what was the maximal +% line-width during paragraph building. +% +% If the max width exceeds the linewidth by more than verbatimmaxoverfull +% character widths, or if the min width plus verbatimmaxunderfull character +% widths is inferior to linewidth, then we apply the "force wrapping" with +% potential line break at each character, else we don't. +\long\def\spx@verb@FormatLineForceWrap#1{% + % \spx@image@box is a scratch box register that we can use here + \global\let\spx@verb@maxwidth\z@ + \global\let\spx@verb@minwidth\linewidth + \setbox\spx@image@box + \vtop{\raggedright\hyphenpenalty\z@\exhyphenpenalty\z@ + \doublehyphendemerits\z@\finalhyphendemerits\z@ + \strut #1\strut\@@par + \spx@verb@getwidths}% + \ifdim\spx@verb@maxwidth> + \dimexpr\linewidth+\spx@opt@verbatimmaxoverfull\fontcharwd\font`X \relax + \spx@verb@FormatLineWrap{\spx@verb@wrapPYG #1\spx@verb@wrapPYG}% + \else + \ifdim\spx@verb@minwidth< + \dimexpr\linewidth-\spx@opt@verbatimmaxunderfull\fontcharwd\font`X \relax + \spx@verb@FormatLineWrap{\spx@verb@wrapPYG #1\spx@verb@wrapPYG}% + \else + \spx@verb@FormatLineWrap{#1}% + \fi\fi +}% +% auxiliary paragraph dissector to get max and min widths +\newbox\spx@scratchbox +\def\spx@verb@getwidths {% + \unskip\unpenalty + \setbox\spx@scratchbox\lastbox + \ifvoid\spx@scratchbox + \else + \setbox\spx@scratchbox\hbox{\unhbox\spx@scratchbox}% + \ifdim\spx@verb@maxwidth<\wd\spx@scratchbox + \xdef\spx@verb@maxwidth{\number\wd\spx@scratchbox sp}% + \fi + \ifdim\spx@verb@minwidth>\wd\spx@scratchbox + \xdef\spx@verb@minwidth{\number\wd\spx@scratchbox sp}% + \fi + \expandafter\spx@verb@getwidths + \fi +}% +% auxiliary macros to implement "cut long line even in middle of word" +\catcode`Z=3 % safe delimiter +\def\spx@verb@wrapPYG{% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@i +}% +\def\spx@verb@wrapPYG@i{% + \ifx\spx@nexttoken\spx@verb@wrapPYG\let\next=\@gobble\else + \ifx\spx@nexttoken\PYG\let\next=\spx@verb@wrapPYG@PYG@onebyone\else + \discretionary{}{\sphinxafterbreak}{}% + \let\next\spx@verb@wrapPYG@ii + \fi\fi + \next +}% +% Let's recognize active characters. We don't support utf8x only utf8. +% And here #1 should not have picked up (non empty) braced contents +\long\def\spx@verb@wrapPYG@ii#1{% + \ifcat\noexpand~\noexpand#1\relax% active character + \expandafter\spx@verb@wrapPYG@active + \else % non-active character, control sequence such as \PYGZdl, or empty + \expandafter\spx@verb@wrapPYG@one + \fi {#1}% +}% +\long\def\spx@verb@wrapPYG@active#1{% +% Let's hope expansion of active character does not really require arguments, +% as we certainly don't want to go into expanding upfront token stream anyway. + \expandafter\spx@verb@wrapPYG@iii#1{}{}{}{}{}{}{}{}{}Z#1% +}% +\long\def\spx@verb@wrapPYG@iii#1#2Z{% + \ifx\UTFviii@four@octets#1\let\next=\spx@verb@wrapPYG@four\else + \ifx\UTFviii@three@octets#1\let\next=\spx@verb@wrapPYG@three\else + \ifx\UTFviii@two@octets#1\let\next=\spx@verb@wrapPYG@two\else + \let\next=\spx@verb@wrapPYG@one + \fi\fi\fi + \next +}% +\long\def\spx@verb@wrapPYG@one #1{#1\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@two #1#2{#1#2\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@three #1#2#3{#1#2#3\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@four #1#2#3#4{#1#2#3#4\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +% Replace \PYG by itself applied one character at a time! This way breakpoints +% can be inserted. +\def\spx@verb@wrapPYG@PYG@onebyone#1#2#3{% #1 = \PYG, #2 = highlight spec, #3 = tokens + \def\spx@verb@wrapPYG@PYG@spec{{#2}}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i#3Z% +}% +\def\spx@verb@wrapPYG@PYG@i{% + \ifx\spx@nexttokenZ\let\next=\spx@verb@wrapPYG@PYG@done\else + \discretionary{}{\sphinxafterbreak}{}% + \let\next\spx@verb@wrapPYG@PYG@ii + \fi + \next +}% +\def\spx@verb@wrapPYG@PYG@doneZ{\futurelet\spx@nexttoken\spx@verb@wrapPYG@i}% +\long\def\spx@verb@wrapPYG@PYG@ii#1{% + \ifcat\noexpand~\noexpand#1\relax% active character + \expandafter\spx@verb@wrapPYG@PYG@active + \else % non-active character, control sequence such as \PYGZdl, or empty + \expandafter\spx@verb@wrapPYG@PYG@one + \fi {#1}% +}% +\long\def\spx@verb@wrapPYG@PYG@active#1{% +% Let's hope expansion of active character does not really require arguments, +% as we certainly don't want to go into expanding upfront token stream anyway. + \expandafter\spx@verb@wrapPYG@PYG@iii#1{}{}{}{}{}{}{}{}{}Z#1% +}% +\long\def\spx@verb@wrapPYG@PYG@iii#1#2Z{% + \ifx\UTFviii@four@octets#1\let\next=\spx@verb@wrapPYG@PYG@four\else + \ifx\UTFviii@three@octets#1\let\next=\spx@verb@wrapPYG@PYG@three\else + \ifx\UTFviii@two@octets#1\let\next=\spx@verb@wrapPYG@PYG@two\else + \let\next=\spx@verb@wrapPYG@PYG@one + \fi\fi\fi + \next +}% +\long\def\spx@verb@wrapPYG@PYG@one#1{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\long\def\spx@verb@wrapPYG@PYG@two#1#2{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1#2}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\long\def\spx@verb@wrapPYG@PYG@three#1#2#3{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1#2#3}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\long\def\spx@verb@wrapPYG@PYG@four#1#2#3#4{% + \expandafter\PYG\spx@verb@wrapPYG@PYG@spec{#1#2#3#4}% + \futurelet\spx@nexttoken\spx@verb@wrapPYG@PYG@i +}% +\catcode`Z 11 % +% +\g@addto@macro\FV@SetupFont{% + \sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}% + \sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}% +}% +\newenvironment{sphinxVerbatim}{% + % first, let's check if there is a caption + \ifx\sphinxVerbatimTitle\empty + \sphinxvspacefixafterfrenchlists + \parskip\z@skip + \vskip\sphinxverbatimsmallskipamount + % there was no caption. Check if nevertheless a label was set. + \ifx\sphinxLiteralBlockLabel\empty\else + % we require some space to be sure hyperlink target from \phantomsection + % will not be separated from upcoming verbatim by a page break + \needspace{\sphinxliteralblockwithoutcaptionneedspace}% + \phantomsection\sphinxLiteralBlockLabel + \fi + \else + \parskip\z@skip + \if t\spx@opt@literalblockcappos + \vskip\spx@abovecaptionskip + \def\sphinxVerbatim@Before + {\sphinxVerbatim@Title\nointerlineskip + \kern\dimexpr-\dp\strutbox+\sphinxbelowcaptionspace + % if no frame (code-blocks inside table cells), remove + % the "verbatimsep" whitespace from the top (better visually) + \ifspx@opt@verbatimwithframe\else-\sphinxverbatimsep\fi + % caption package adds \abovecaptionskip vspace, remove it + \spx@ifcaptionpackage{-\abovecaptionskip}{}\relax}% + \else + \vskip\sphinxverbatimsmallskipamount + \def\sphinxVerbatim@After + {\nointerlineskip\kern\dimexpr\dp\strutbox + \ifspx@opt@verbatimwithframe\else-\sphinxverbatimsep\fi + \spx@ifcaptionpackage{-\abovecaptionskip}{}\relax + \sphinxVerbatim@Title}% + \fi + \def\@captype{literalblock}% + \capstart + % \sphinxVerbatimTitle must reset color + \setbox\sphinxVerbatim@TitleBox + \hbox{\begin{minipage}{\linewidth}% + % caption package may detect wrongly if top or bottom, so we help it + \spx@ifcaptionpackage + {\caption@setposition{\spx@opt@literalblockcappos}}{}% + \sphinxVerbatimTitle + \end{minipage}}% + \fi + \global\let\sphinxLiteralBlockLabel\empty + \global\let\sphinxVerbatimTitle\empty + \fboxsep\sphinxverbatimsep \fboxrule\sphinxverbatimborder + \ifspx@opt@verbatimwithframe\else\fboxrule\z@\fi + \let\FrameCommand \sphinxVerbatim@FrameCommand + \let\FirstFrameCommand\sphinxVerbatim@FirstFrameCommand + \let\MidFrameCommand \sphinxVerbatim@MidFrameCommand + \let\LastFrameCommand \sphinxVerbatim@LastFrameCommand + \ifspx@opt@verbatimhintsturnover\else + \let\sphinxVerbatim@Continued\@empty + \let\sphinxVerbatim@Continues\@empty + \fi + \ifspx@opt@verbatimwrapslines + % fancyvrb's Verbatim puts each input line in (unbreakable) horizontal boxes. + % This customization wraps each line from the input in a \vtop, thus + % allowing it to wrap and display on two or more lines in the latex output. + % - The codeline counter will be increased only once. + % - The wrapped material will not break across pages, it is impossible + % to achieve this without extensive rewrite of fancyvrb. + % - The (not used in sphinx) obeytabs option to Verbatim is + % broken by this change (showtabs and tabspace work). + \let\sphinxVerbatimFormatLine\sphinxVerbatimFormatLineWrap + \let\FV@Space\spx@verbatim@space + % Allow breaks at special characters using \PYG... macros. + \sphinxbreaksatspecials + % Breaks at punctuation characters . , ; ? ! and / (needs catcode activation) + \fvset{codes*=\sphinxbreaksviaactive}% + \else % end of conditional code for wrapping long code lines + \let\sphinxVerbatimFormatLine\sphinxVerbatimFormatLineNoWrap + \fi + \let\FancyVerbFormatLine\sphinxFancyVerbFormatLine + \VerbatimEnvironment + % workaround to fancyvrb's check of current list depth + \def\@toodeep {\advance\@listdepth\@ne}% + % The list environment is needed to control perfectly the vertical space. + % Note: \OuterFrameSep used by framed.sty is later set to \topsep hence 0pt. + % - if caption: distance from last text baseline to caption baseline is + % A+(B-F)+\ht\strutbox, A = \abovecaptionskip (default 10pt), B = + % \baselineskip, F is the framed.sty \FrameHeightAdjust macro, default 6pt. + % Formula valid for F < 10pt. + % - distance of baseline of caption to top of frame is like for tables: + % \sphinxbelowcaptionspace (=0.5\baselineskip) + % - if no caption: distance of last text baseline to code frame is S+(B-F), + % with S = \sphinxverbatimtopskip (=\smallskip) + % - and distance from bottom of frame to next text baseline is + % \baselineskip+\parskip. + % The \trivlist is used to avoid possible "too deeply nested" error. + \itemsep \z@skip + \topsep \z@skip + \partopsep \z@skip + % trivlist will set \parsep to \parskip (which itself is set to zero above) + % \leftmargin will be set to zero by trivlist + \rightmargin\z@ + \parindent \z@% becomes \itemindent. Default zero, but perhaps overwritten. + \trivlist\item\relax + \ifspx@inframed\setbox\sphinxVerbatim@ContentsBox\vbox\bgroup + \@setminipage\hsize\linewidth + % use bulk of minipage paragraph shape restores (this is needed + % in indented contexts, at least for some) + \textwidth\hsize \columnwidth\hsize \@totalleftmargin\z@ + \leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip + \else + \ifsphinxverbatimwithminipage\noindent\begin{minipage}{\linewidth}\fi + \MakeFramed {% adapted over from framed.sty's snugshade environment + \advance\hsize-\width\@totalleftmargin\z@\linewidth\hsize\@setminipage + }% + \fi + % For grid placement from \strut's in \FancyVerbFormatLine + \lineskip\z@skip + % active comma should not be overwritten by \@noligs + \ifspx@opt@verbatimwrapslines + \let\verbatim@nolig@list \sphinx@verbatim@nolig@list + \fi + % will fetch its optional arguments if any + \OriginalVerbatim +} +{% + \endOriginalVerbatim + \ifspx@inframed + \egroup % finish \sphinxVerbatim@ContentsBox vbox + \nobreak % update page totals + \ifdim\dimexpr\ht\sphinxVerbatim@ContentsBox+ + \dp\sphinxVerbatim@ContentsBox+ + \ht\sphinxVerbatim@TitleBox+ + \dp\sphinxVerbatim@TitleBox+ + 2\fboxsep+2\fboxrule+ + % try to account for external frame parameters + \FrameSep+\FrameRule+ + % Usage here of 2 baseline distances is empirical. + % In border case where code-block fits barely in remaining space, + % it gets framed and looks good but the outer frame may continue + % on top of next page and give (if no contents after code-block) + % an empty framed line, as testing showed. + 2\baselineskip+ + % now add all to accumulated page totals and compare to \pagegoal + \pagetotal+\pagedepth>\pagegoal + % long contents: do not \MakeFramed. Do make a caption (either before or + % after) if title exists. Continuation hints across pagebreaks dropped. + % FIXME? a bottom caption may end up isolated at top of next page + % (no problem with a top caption, which is default) + \spx@opt@verbatimwithframefalse + \def\sphinxVerbatim@Title{\noindent\box\sphinxVerbatim@TitleBox\par}% + \sphinxVerbatim@Before + \noindent\unvbox\sphinxVerbatim@ContentsBox\par + \sphinxVerbatim@After + \else + % short enough contents: use \MakeFramed. As it is nested, this requires + % minipage encapsulation. + \noindent\begin{minipage}{\linewidth}% + \MakeFramed {% Use it now with the fetched contents + \advance\hsize-\width\@totalleftmargin\z@\linewidth\hsize\@setminipage + }% + \unvbox\sphinxVerbatim@ContentsBox + % some of this may be superfluous: + \par\unskip\@minipagefalse\endMakeFramed + \end{minipage}% + \fi + \else % non-nested \MakeFramed + \par\unskip\@minipagefalse\endMakeFramed % from framed.sty snugshade + \ifsphinxverbatimwithminipage\end{minipage}\fi + \fi + \endtrivlist +} +\newenvironment {sphinxVerbatimNoFrame} + {\spx@opt@verbatimwithframefalse + \VerbatimEnvironment + \begin{sphinxVerbatim}} + {\end{sphinxVerbatim}} +\newenvironment {sphinxVerbatimintable} + {% don't use a frame if in a table cell + \spx@opt@verbatimwithframefalse + \sphinxverbatimwithminipagetrue + % the literal block caption uses \sphinxcaption which is wrapper of \caption, + % but \caption must be modified because longtable redefines it to work only + % for the own table caption, and tabulary has multiple passes + \let\caption\sphinxfigcaption + % reduce above caption skip + \def\spx@abovecaptionskip{\sphinxverbatimsmallskipamount}% + \VerbatimEnvironment + \begin{sphinxVerbatim}} + {\end{sphinxVerbatim}} + + +%% PARSED LITERALS +% allow long lines to wrap like they do in code-blocks + +% this should be kept in sync with definitions in sphinx.util.texescape +\newcommand*\sphinxbreaksattexescapedchars{% + \def\do##1##2% put potential break point before character + {\def##1{\discretionary{}{\sphinxafterbreak\char`##2}{\char`##2}}}% + \do\{\{\do\textless\<\do\#\#\do\%\%\do\$\$% {, <, #, %, $ + \def\do##1##2% put potential break point after character + {\def##1{\discretionary{\char`##2}{\sphinxafterbreak}{\char`##2}}}% + \do\_\_\do\}\}\do\textasciicircum\^\do\&\&% _, }, ^, &, + \do\textgreater\>\do\textasciitilde\~% >, ~ + \do\textbackslash\\% \ +} +\newcommand*\sphinxbreaksviaactiveinparsedliteral{% + \sphinxbreaksviaactive % by default handles . , ; ? ! / + \lccode`\~`\~ % + % update \dospecials as it is used by \url + % but deactivation will already have been done hence this is unneeded: + % \expandafter\def\expandafter\dospecials\expandafter{\dospecials + % \sphinxbreaksbeforeactivelist\sphinxbreaksafteractivelist\do\-}% +} +\newcommand*\sphinxbreaksatspaceinparsedliteral{% + \lccode`~32 \lowercase{\let~}\spx@verbatim@space\lccode`\~`\~ +} +\newcommand*{\sphinxunactivateextras}{\let\do\@makeother + \sphinxbreaksbeforeactivelist\sphinxbreaksafteractivelist}% +% the \catcode13=5\relax (deactivate end of input lines) is left to callers +\newcommand*{\sphinxunactivateextrasandspace}{\catcode32=10\relax + \sphinxunactivateextras}% +% now for the modified alltt environment +\newenvironment{sphinxalltt} +{% at start of next line to workaround Emacs/AUCTeX issue with this file +\begin{alltt}% + \ifspx@opt@parsedliteralwraps + \sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}% + \sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}% + \sphinxbreaksattexescapedchars + \sphinxbreaksviaactiveinparsedliteral + \sphinxbreaksatspaceinparsedliteral +% alltt takes care of the ' as derivative ("prime") in math mode + \everymath\expandafter{\the\everymath\sphinxunactivateextrasandspace + \catcode`\<=12\catcode`\>=12\catcode`\^=7\catcode`\_=8 }% +% not sure if displayed math (align,...) can end up in parsed-literal, anyway + \everydisplay\expandafter{\the\everydisplay + \catcode13=5 \sphinxunactivateextrasandspace + \catcode`\<=12\catcode`\>=12\catcode`\^=7\catcode`\_=8 }% + \fi } +{\end{alltt}} + +% Protect \href's first argument in contexts such as sphinxalltt (or +% \sphinxcode). Sphinx uses \#, \%, \& ... always inside \sphinxhref. +\protected\def\sphinxhref#1#2{{% + \sphinxunactivateextrasandspace % never do \scantokens with active space! +% for the \endlinechar business, https://github.com/latex3/latex2e/issues/286 + \endlinechar\m@ne\everyeof{{\endlinechar13 #2}}% keep catcode regime for #2 + \scantokens{\href{#1}}% normalise it for #1 during \href expansion +}} +% Same for \url. And also \nolinkurl for coherence. +\protected\def\sphinxurl#1{{% + \sphinxunactivateextrasandspace\everyeof{}% (<- precaution for \scantokens) + \endlinechar\m@ne\scantokens{\url{#1}}% +}} +\protected\def\sphinxnolinkurl#1{{% + \sphinxunactivateextrasandspace\everyeof{}% + \endlinechar\m@ne\scantokens{\nolinkurl{#1}}% +}} + + +%% TOPIC AND CONTENTS BOXES +% +% Again based on use of "framed.sty", this allows breakable framed boxes. +\long\def\spx@ShadowFBox#1{% + \leavevmode\begingroup + % first we frame the box #1 + \setbox\@tempboxa + \hbox{\vrule\@width\sphinxshadowrule + \vbox{\hrule\@height\sphinxshadowrule + \kern\sphinxshadowsep + \hbox{\kern\sphinxshadowsep #1\kern\sphinxshadowsep}% + \kern\sphinxshadowsep + \hrule\@height\sphinxshadowrule}% + \vrule\@width\sphinxshadowrule}% + % Now we add the shadow, like \shadowbox from fancybox.sty would do + \dimen@\dimexpr.5\sphinxshadowrule+\sphinxshadowsize\relax + \hbox{\vbox{\offinterlineskip + \hbox{\copy\@tempboxa\kern-.5\sphinxshadowrule + % add shadow on right side + \lower\sphinxshadowsize + \hbox{\vrule\@height\ht\@tempboxa \@width\dimen@}% + }% + \kern-\dimen@ % shift back vertically to bottom of frame + % and add shadow at bottom + \moveright\sphinxshadowsize + \vbox{\hrule\@width\wd\@tempboxa \@height\dimen@}% + }% + % move left by the size of right shadow so shadow adds no width + \kern-\sphinxshadowsize + }% + \endgroup +} + +% use framed.sty to allow page breaks in frame+shadow +% works well inside Lists and Quote-like environments +% produced by ``topic'' directive (or local contents) +% could nest if LaTeX writer authorized it +\newenvironment{sphinxShadowBox} + {\def\FrameCommand {\spx@ShadowFBox }% + \advance\spx@image@maxheight + -\dimexpr2\sphinxshadowrule + +2\sphinxshadowsep + +\sphinxshadowsize + +\baselineskip\relax + % configure framed.sty not to add extra vertical spacing + \ltx@ifundefined{OuterFrameSep}{}{\OuterFrameSep\z@skip}% + % the \trivlist will add the vertical spacing on top and bottom which is + % typical of center environment as used in Sphinx <= 1.4.1 + % the \noindent has the effet of an extra blank line on top, to + % imitate closely the layout from Sphinx <= 1.4.1; the \FrameHeightAdjust + % will put top part of frame on this baseline. + \def\FrameHeightAdjust {\baselineskip}% + % use package footnote to handle footnotes + \savenotes + \trivlist\item\noindent + % use a minipage if we are already inside a framed environment + \ifspx@inframed\begin{minipage}{\linewidth}\fi + \MakeFramed {\spx@inframedtrue + % framed.sty puts into "\width" the added width (=2shadowsep+2shadowrule) + % adjust \hsize to what the contents must use + \advance\hsize-\width + % adjust LaTeX parameters to behave properly in indented/quoted contexts + \FrameRestore + % typeset the contents as in a minipage (Sphinx <= 1.4.1 used a minipage and + % itemize/enumerate are therein typeset more tightly, we want to keep + % that). We copy-paste from LaTeX source code but don't do a real minipage. + \@pboxswfalse + \let\@listdepth\@mplistdepth \@mplistdepth\z@ + \@minipagerestore + \@setminipage + }% + }% + {% insert the "endminipage" code + \par\unskip + \@minipagefalse + \endMakeFramed + \ifspx@inframed\end{minipage}\fi + \endtrivlist + % output the stored footnotes + \spewnotes + } + + +%% NOTICES AND ADMONITIONS +% +% Some are quite plain +% the spx@notice@bordercolor etc are set in the sphinxadmonition environment +\newenvironment{sphinxlightbox}{% + \par + \noindent{\color{spx@notice@bordercolor}% + \rule{\linewidth}{\spx@notice@border}}\par\nobreak + {\parskip\z@skip\noindent}% + } + {% + % counteract previous possible negative skip (French lists!): + % (we can't cancel that any earlier \vskip introduced a potential pagebreak) + \sphinxvspacefixafterfrenchlists + \nobreak\vbox{\noindent\kern\@totalleftmargin + {\color{spx@notice@bordercolor}% + \rule[\dimexpr.4\baselineskip-\spx@notice@border\relax] + {\linewidth}{\spx@notice@border}}\hss}\allowbreak + }% end of sphinxlightbox environment definition +% may be renewenvironment'd by user for complete customization +\newenvironment{sphinxnote}[1] + {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}} +\newenvironment{sphinxhint}[1] + {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}} +\newenvironment{sphinximportant}[1] + {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}} +\newenvironment{sphinxtip}[1] + {\begin{sphinxlightbox}\sphinxstrong{#1} }{\end{sphinxlightbox}} +% or just use the package options +% these are needed for common handling by notice environment of lightbox +% and heavybox but they are currently not used by lightbox environment +% and there is consequently no corresponding package option +\definecolor{sphinxnoteBgColor}{rgb}{1,1,1} +\definecolor{sphinxhintBgColor}{rgb}{1,1,1} +\definecolor{sphinximportantBgColor}{rgb}{1,1,1} +\definecolor{sphinxtipBgColor}{rgb}{1,1,1} + +% Others get more distinction +% Code adapted from framed.sty's "snugshade" environment. +% Nesting works (inner frames do not allow page breaks). +\newenvironment{sphinxheavybox}{\par + \setlength{\FrameRule}{\spx@notice@border}% + \setlength{\FrameSep}{\dimexpr.6\baselineskip-\FrameRule\relax} + \advance\spx@image@maxheight + -\dimexpr2\FrameRule + +2\FrameSep + +\baselineskip\relax % will happen again if nested, needed indeed! + % configure framed.sty's parameters to obtain same vertical spacing + % as for "light" boxes. We need for this to manually insert parskip glue and + % revert a skip done by framed before the frame. + \ltx@ifundefined{OuterFrameSep}{}{\OuterFrameSep\z@skip}% + \vspace{\FrameHeightAdjust} + % copied/adapted from framed.sty's snugshade + \def\FrameCommand##1{\hskip\@totalleftmargin + \fboxsep\FrameSep \fboxrule\FrameRule + \fcolorbox{spx@notice@bordercolor}{spx@notice@bgcolor}{##1}% + \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}% + \savenotes + % use a minipage if we are already inside a framed environment + \ifspx@inframed + \noindent\begin{minipage}{\linewidth} + \else + % handle case where notice is first thing in a list item (or is quoted) + \if@inlabel + \noindent\par\vspace{-\baselineskip} + \else + \vspace{\parskip} + \fi + \fi + \MakeFramed {\spx@inframedtrue + \advance\hsize-\width \@totalleftmargin\z@ \linewidth\hsize + % minipage initialization copied from LaTeX source code. + \@pboxswfalse + \let\@listdepth\@mplistdepth \@mplistdepth\z@ + \@minipagerestore + \@setminipage }% + } + {% + \par\unskip + \@minipagefalse + \endMakeFramed + \ifspx@inframed\end{minipage}\fi + % set footnotes at bottom of page + \spewnotes + % arrange for similar spacing below frame as for "light" boxes. + \vskip .4\baselineskip + }% end of sphinxheavybox environment definition +% may be renewenvironment'd by user for complete customization +\newenvironment{sphinxwarning}[1] + {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} +\newenvironment{sphinxcaution}[1] + {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} +\newenvironment{sphinxattention}[1] + {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} +\newenvironment{sphinxdanger}[1] + {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} +\newenvironment{sphinxerror}[1] + {\begin{sphinxheavybox}\sphinxstrong{#1} }{\end{sphinxheavybox}} +% or just use package options + +% the \colorlet of xcolor (if at all loaded) is overkill for our use case +\newcommand{\sphinxcolorlet}[2] + {\expandafter\let\csname\@backslashchar color@#1\expandafter\endcsname + \csname\@backslashchar color@#2\endcsname } + +% the main dispatch for all types of notices +\newenvironment{sphinxadmonition}[2]{% #1=type, #2=heading + % can't use #1 directly in definition of end part + \def\spx@noticetype {#1}% + % set parameters of heavybox/lightbox + \sphinxcolorlet{spx@notice@bordercolor}{sphinx#1BorderColor}% + \sphinxcolorlet{spx@notice@bgcolor}{sphinx#1BgColor}% + \spx@notice@border \dimexpr\csname spx@opt@#1border\endcsname\relax + % start specific environment, passing the heading as argument + \begin{sphinx#1}{#2}} + % workaround some LaTeX "feature" of \end command + {\edef\spx@temp{\noexpand\end{sphinx\spx@noticetype}}\spx@temp} + + +%% PYTHON DOCS MACROS AND ENVIRONMENTS +% (some macros here used by \maketitle in sphinxmanual.cls and sphinxhowto.cls) + +% \moduleauthor{name}{email} +\newcommand{\moduleauthor}[2]{} + +% \sectionauthor{name}{email} +\newcommand{\sectionauthor}[2]{} + +% Allow the release number to be specified independently of the +% \date{}. This allows the date to reflect the document's date and +% release to specify the release that is documented. +% +\newcommand{\py@release}{\releasename\space\version} +\newcommand{\version}{}% part of \py@release, used by title page and headers +% \releaseinfo is used on titlepage (sphinxmanual.cls, sphinxhowto.cls) +\newcommand{\releaseinfo}{} +\newcommand{\setreleaseinfo}[1]{\renewcommand{\releaseinfo}{#1}} +% this is inserted via template and #1=release config variable +\newcommand{\release}[1]{\renewcommand{\version}{#1}} +% this is defined by template to 'releasename' latex_elements key +\newcommand{\releasename}{} +% Fix issue in case release and releasename deliberately left blank +\newcommand{\sphinxheadercomma}{, }% used in fancyhdr header definition +\newcommand{\sphinxifemptyorblank}[1]{% +% test after one expansion of macro #1 if contents is empty or spaces + \if&\expandafter\@firstofone\detokenize\expandafter{#1}&% + \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}% +\AtBeginDocument {% + \sphinxifemptyorblank{\releasename} + {\sphinxifemptyorblank{\version}{\let\sphinxheadercomma\empty}{}} + {}% +}% + +% Allow specification of the author's address separately from the +% author's name. This can be used to format them differently, which +% is a good thing. +% +\newcommand{\py@authoraddress}{} +\newcommand{\authoraddress}[1]{\renewcommand{\py@authoraddress}{#1}} + +% {fulllineitems} is the main environment for object descriptions. +% +\newcommand{\py@itemnewline}[1]{% + \kern\labelsep + \@tempdima\linewidth + \advance\@tempdima \labelwidth\makebox[\@tempdima][l]{#1}% + \kern-\labelsep +} + +\newenvironment{fulllineitems}{% + \begin{list}{}{\labelwidth \leftmargin + \rightmargin \z@ \topsep -\parskip \partopsep \parskip + \itemsep -\parsep + \let\makelabel=\py@itemnewline}% +}{\end{list}} + +% Signatures, possibly multi-line +% +\newlength{\py@argswidth} +\newcommand{\py@sigparams}[2]{% + \parbox[t]{\py@argswidth}{#1\sphinxcode{)}#2}} +\newcommand{\pysigline}[1]{\item[{#1}]} +\newcommand{\pysiglinewithargsret}[3]{% + \settowidth{\py@argswidth}{#1\sphinxcode{(}}% + \addtolength{\py@argswidth}{-2\py@argswidth}% + \addtolength{\py@argswidth}{\linewidth}% + \item[{#1\sphinxcode{(}\py@sigparams{#2}{#3}}]} +\newcommand{\pysigstartmultiline}{% + \def\pysigstartmultiline{\vskip\smallskipamount\parskip\z@skip\itemsep\z@skip}% + \edef\pysigstopmultiline + {\noexpand\leavevmode\parskip\the\parskip\relax\itemsep\the\itemsep\relax}% + \parskip\z@skip\itemsep\z@skip +} + +% Production lists +% +\newenvironment{productionlist}{% +% \def\sphinxoptional##1{{\Large[}##1{\Large]}} + \def\production##1##2{\\\sphinxcode{\sphinxupquote{##1}}&::=&\sphinxcode{\sphinxupquote{##2}}}% + \def\productioncont##1{\\& &\sphinxcode{\sphinxupquote{##1}}}% + \parindent=2em + \indent + \setlength{\LTpre}{0pt}% + \setlength{\LTpost}{0pt}% + \begin{longtable}[l]{lcl} +}{% + \end{longtable} +} + +% Definition lists; requested by AMK for HOWTO documents. Probably useful +% elsewhere as well, so keep in in the general style support. +% +\newenvironment{definitions}{% + \begin{description}% + \def\term##1{\item[{##1}]\mbox{}\\*[0mm]}% +}{% + \end{description}% +} + +%% FROM DOCTUTILS LATEX WRITER +% +% The following is stuff copied from docutils' latex writer. +% +\newcommand{\optionlistlabel}[1]{\normalfont\bfseries #1 \hfill}% \bf deprecated +\newenvironment{optionlist}[1] +{\begin{list}{} + {\setlength{\labelwidth}{#1} + \setlength{\rightmargin}{1cm} + \setlength{\leftmargin}{\rightmargin} + \addtolength{\leftmargin}{\labelwidth} + \addtolength{\leftmargin}{\labelsep} + \renewcommand{\makelabel}{\optionlistlabel}} +}{\end{list}} + +\newlength{\lineblockindentation} +\setlength{\lineblockindentation}{2.5em} +\newenvironment{lineblock}[1] +{\begin{list}{} + {\setlength{\partopsep}{\parskip} + \addtolength{\partopsep}{\baselineskip} + \topsep0pt\itemsep0.15\baselineskip\parsep0pt + \leftmargin#1\relax} + \raggedright} +{\end{list}} + +% From docutils.writers.latex2e +% inline markup (custom roles) +% \DUrole{#1}{#2} tries \DUrole#1{#2} +\providecommand*{\DUrole}[2]{% + \ifcsname DUrole\detokenize{#1}\endcsname + \csname DUrole\detokenize{#1}\endcsname{#2}% + \else% backwards compatibility: try \docutilsrole#1{#2} + \ifcsname docutilsrole\detokenize{#1}\endcsname + \csname docutilsrole\detokenize{#1}\endcsname{#2}% + \else + #2% + \fi + \fi +} + +\providecommand*{\DUprovidelength}[2]{% + \ifdefined#1\else\newlength{#1}\setlength{#1}{#2}\fi +} + +\DUprovidelength{\DUlineblockindent}{2.5em} +\ifdefined\DUlineblock\else + \newenvironment{DUlineblock}[1]{% + \list{}{\setlength{\partopsep}{\parskip} + \addtolength{\partopsep}{\baselineskip} + \setlength{\topsep}{0pt} + \setlength{\itemsep}{0.15\baselineskip} + \setlength{\parsep}{0pt} + \setlength{\leftmargin}{#1}} + \raggedright + } + {\endlist} +\fi + +%% TEXT STYLING +% +% to obtain straight quotes we execute \@noligs as patched by upquote, and +% \scantokens is needed in cases where it would be too late for the macro to +% first set catcodes and then fetch its argument. We also make the contents +% breakable at non-escaped . , ; ? ! / using \sphinxbreaksviaactive, +% and also at \ character (which is escaped to \textbackslash{}). +\protected\def\sphinxtextbackslashbreakbefore + {\discretionary{}{\sphinxafterbreak\sphinx@textbackslash}{\sphinx@textbackslash}} +\protected\def\sphinxtextbackslashbreakafter + {\discretionary{\sphinx@textbackslash}{\sphinxafterbreak}{\sphinx@textbackslash}} +\let\sphinxtextbackslash\sphinxtextbackslashbreakafter +% the macro must be protected if it ends up used in moving arguments, +% in 'alltt' \@noligs is done already, and the \scantokens must be avoided. +\protected\def\sphinxupquote#1{{\def\@tempa{alltt}% + \ifx\@tempa\@currenvir\else + \ifspx@opt@inlineliteralwraps + % break at . , ; ? ! / + \sphinxbreaksviaactive + % break also at \ + \let\sphinx@textbackslash\textbackslash + \let\textbackslash\sphinxtextbackslash + % by default, no continuation symbol on next line but may be added + \let\sphinxafterbreak\sphinxafterbreakofinlineliteral + % do not overwrite the comma set-up + \let\verbatim@nolig@list\sphinx@literal@nolig@list + \fi + % fix a space-gobbling issue due to LaTeX's original \do@noligs +% TODO: using \@noligs as patched by upquote.sty is now unneeded because +% either ` and ' are escaped (non-unicode engines) or they don't build +% ligatures (unicode engines). Thus remove this and unify handling of `, <, >, +% ' and - with the characters . , ; ? ! / as handled via +% \sphinxbreaksviaactive. +% Hence \sphinx@do@noligs will be removed, or rather replaced with code +% inserting discretionaries, as they allow a continuation symbol on start of +% next line to achieve common design with code-blocks. + \let\do@noligs\sphinx@do@noligs + \@noligs\endlinechar\m@ne\everyeof{}% (<- in case inside \sphinxhref) + \expandafter\scantokens + \fi {{#1}}}}% extra brace pair to fix end-space gobbling issue... +\def\sphinx@do@noligs #1{\catcode`#1\active\begingroup\lccode`\~`#1\relax + \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1 }}} +\def\sphinx@literal@nolig@list {\do\`\do\<\do\>\do\'\do\-}% +\let\sphinxafterbreakofinlineliteral\empty + +% Some custom font markup commands. +\protected\def\sphinxstrong#1{\textbf{#1}} +\protected\def\sphinxcode#1{\texttt{#1}} +\protected\def\sphinxbfcode#1{\textbf{\sphinxcode{#1}}} +\protected\def\sphinxemail#1{\textsf{#1}} +\protected\def\sphinxtablecontinued#1{\textsf{#1}} +\protected\def\sphinxtitleref#1{\emph{#1}} +\protected\def\sphinxmenuselection#1{\emph{#1}} +\protected\def\sphinxguilabel#1{\emph{#1}} +\protected\def\sphinxkeyboard#1{\sphinxcode{#1}} +\protected\def\sphinxaccelerator#1{\underline{#1}} +\protected\def\sphinxcrossref#1{\emph{#1}} +\protected\def\sphinxtermref#1{\emph{#1}} +% \optional is used for ``[, arg]``, i.e. desc_optional nodes. +\long\protected\def\sphinxoptional#1{% + {\textnormal{\Large[}}{#1}\hspace{0.5mm}{\textnormal{\Large]}}} + +% additional customizable styling +\def\sphinxstyleindexentry #1{\texttt{#1}} +\def\sphinxstyleindexextra #1{ (\emph{#1})} +\def\sphinxstyleindexpageref #1{, \pageref{#1}} +\def\sphinxstyleindexpagemain#1{\textbf{#1}} +\def\spxentry{\@backslashchar spxentry}% let to \sphinxstyleindexentry in index +\def\spxextra{\@backslashchar spxextra}% let to \sphinxstyleindexextra in index +\def\sphinxstyleindexlettergroup #1% + {{\Large\sffamily#1}\nopagebreak\vspace{1mm}} +\def\sphinxstyleindexlettergroupDefault #1% + {{\Large\sffamily\sphinxnonalphabeticalgroupname}\nopagebreak\vspace{1mm}} +\protected\def\sphinxstyletopictitle #1{\textbf{#1}\par\medskip} +\let\sphinxstylesidebartitle\sphinxstyletopictitle +\protected\def\sphinxstyleothertitle #1{\textbf{#1}} +\protected\def\sphinxstylesidebarsubtitle #1{~\\\textbf{#1} \smallskip} +% \text.. commands do not allow multiple paragraphs +\protected\def\sphinxstyletheadfamily {\sffamily} +\protected\def\sphinxstyleemphasis #1{\emph{#1}} +\protected\def\sphinxstyleliteralemphasis#1{\emph{\sphinxcode{#1}}} +\protected\def\sphinxstylestrong #1{\textbf{#1}} +\protected\def\sphinxstyleliteralstrong#1{\sphinxbfcode{#1}} +\protected\def\sphinxstyleabbreviation #1{\textsc{#1}} +\protected\def\sphinxstyleliteralintitle#1{\sphinxcode{#1}} +\newcommand*\sphinxstylecodecontinued[1]{\footnotesize(#1)}% +\newcommand*\sphinxstylecodecontinues[1]{\footnotesize(#1)}% +% figure legend comes after caption and may contain arbitrary body elements +\newenvironment{sphinxlegend}{\par\small}{\par} +% reduce hyperref "Token not allowed in a PDF string" warnings on PDF builds +\AtBeginDocument{\pdfstringdefDisableCommands{% +% all "protected" macros possibly ending up in section titles should be here +% TODO: examine if \sphinxhref, \sphinxurl, \sphinnolinkurl should be handled + \let\sphinxstyleemphasis \@firstofone + \let\sphinxstyleliteralemphasis \@firstofone + \let\sphinxstylestrong \@firstofone + \let\sphinxstyleliteralstrong \@firstofone + \let\sphinxstyleabbreviation \@firstofone + \let\sphinxstyleliteralintitle \@firstofone + \let\sphinxupquote \@firstofone + \let\sphinxstrong \@firstofone + \let\sphinxcode \@firstofone + \let\sphinxbfcode \@firstofone + \let\sphinxemail \@firstofone + \let\sphinxcrossref \@firstofone + \let\sphinxtermref \@firstofone + \let\sphinxhyphen\sphinxhyphenforbookmarks +}} + +% Special characters +% +% This definition prevents en-dash and em-dash TeX ligatures. +% +% It inserts a potential breakpoint after the hyphen. This is to keep in sync +% with behavior in code-blocks, parsed and inline literals. For a breakpoint +% before the hyphen use \leavevmode\kern\z@- (within \makeatletter/\makeatother) +\protected\def\sphinxhyphen#1{-\kern\z@} +% The {} from texescape mark-up is kept, else -- gives en-dash in PDF bookmark +\def\sphinxhyphenforbookmarks{-} + +% For curly braces inside \index macro +\def\sphinxleftcurlybrace{\{} +\def\sphinxrightcurlybrace{\}} + +% Declare Unicode characters used by linux tree command to pdflatex utf8/utf8x +\def\spx@bd#1#2{% + \leavevmode + \begingroup + \ifx\spx@bd@height \@undefined\def\spx@bd@height{\baselineskip}\fi + \ifx\spx@bd@width \@undefined\setbox0\hbox{0}\def\spx@bd@width{\wd0 }\fi + \ifx\spx@bd@thickness\@undefined\def\spx@bd@thickness{.6\p@}\fi + \ifx\spx@bd@lower \@undefined\def\spx@bd@lower{\dp\strutbox}\fi + \lower\spx@bd@lower#1{#2}% + \endgroup +}% +\@namedef{sphinx@u2500}% BOX DRAWINGS LIGHT HORIZONTAL + {\spx@bd{\vbox to\spx@bd@height} + {\vss\hrule\@height\spx@bd@thickness + \@width\spx@bd@width\vss}}% +\@namedef{sphinx@u2502}% BOX DRAWINGS LIGHT VERTICAL + {\spx@bd{\hb@xt@\spx@bd@width} + {\hss\vrule\@height\spx@bd@height + \@width \spx@bd@thickness\hss}}% +\@namedef{sphinx@u2514}% BOX DRAWINGS LIGHT UP AND RIGHT + {\spx@bd{\hb@xt@\spx@bd@width} + {\hss\raise.5\spx@bd@height + \hb@xt@\z@{\hss\vrule\@height.5\spx@bd@height + \@width \spx@bd@thickness\hss}% + \vbox to\spx@bd@height{\vss\hrule\@height\spx@bd@thickness + \@width.5\spx@bd@width\vss}}}% +\@namedef{sphinx@u251C}% BOX DRAWINGS LIGHT VERTICAL AND RIGHT + {\spx@bd{\hb@xt@\spx@bd@width} + {\hss + \hb@xt@\z@{\hss\vrule\@height\spx@bd@height + \@width \spx@bd@thickness\hss}% + \vbox to\spx@bd@height{\vss\hrule\@height\spx@bd@thickness + \@width.5\spx@bd@width\vss}}}% +\protected\def\sphinxunichar#1{\@nameuse{sphinx@u#1}}% + +% Tell TeX about pathological hyphenation cases: +\hyphenation{Base-HTTP-Re-quest-Hand-ler} +\endinput diff --git a/docs/build/latex/sphinx.xdy b/docs/build/latex/sphinx.xdy new file mode 100644 index 0000000..edca178 --- /dev/null +++ b/docs/build/latex/sphinx.xdy @@ -0,0 +1,230 @@ +;;; -*- mode: lisp; coding: utf-8; -*- + +;; Unfortunately xindy is out-of-the-box hyperref-incompatible. This +;; configuration is a workaround, which requires to pass option +;; hyperindex=false to hyperref. +;; textit and emph not currently used, spxpagem replaces former textbf +(define-attributes (("textbf" "textit" "emph" "spxpagem" "default"))) +(markup-locref :open "\textbf{\hyperpage{" :close "}}" :attr "textbf") +(markup-locref :open "\textit{\hyperpage{" :close "}}" :attr "textit") +(markup-locref :open "\emph{\hyperpage{" :close "}}" :attr "emph") +(markup-locref :open "\spxpagem{\hyperpage{" :close "}}" :attr "spxpagem") +(markup-locref :open "\hyperpage{" :close "}" :attr "default") + +(require "numeric-sort.xdy") + +;; xindy base module latex.xdy loads tex.xdy and the latter instructs +;; xindy to ignore **all** TeX macros in .idx entries, except those +;; explicitely described in merge rule. But when after applying all +;; merge rules an empty string results, xindy raises an error: + +;; ERROR: CHAR: index 0 should be less than the length of the string + +;; For example when using pdflatex with utf-8 characters the index +;; file will contain \IeC macros and they will get ignored except if +;; suitable merge rules are loaded early. The texindy script coming +;; with xindy provides this, but only for Latin scripts. The texindy +;; man page says to use rather xelatex or lualatex in case of Cyrillic +;; scripts. + +;; Sphinx contributes LICRcyr2utf8.xdy to provide support for Cyrillic +;; scripts for the pdflatex engine. + +;; Another issue caused by xindy ignoring all TeX macros except those +;; explicitely declared reveals itself when attempting to index ">>>", +;; as the ">" is converted to "\textgreater{}" by Sphinx's LaTeX +;; escaping. + +;; To fix this, Sphinx does **not** use texindy, and does not even +;; load the xindy latex.xdy base module. + +;(require "latex.xdy") + +;; Rather it incorporates some suitable extracts from latex.xdy and +;; tex.xdy with additional Sphinx contributed rules. + +;; But, this means for pdflatex and Latin scripts that the xindy file +;; tex/inputenc/uf8.xdy is not usable because it refers to the macro +;; \IeC only sporadically, and as tex.xdy is not loaded, a rule such as +;; (merge-rule "\'e" "é" :string) +;; does not work, it must be +;; (merge-rule "\IeC {\'e}" "é" :string) +;; So Sphinx contributes LICRlatin2utf8.xdy to mitigate that problem. + +;;;;;;;; extracts from tex.xdy (discarding most original comments): + +;;; +;;; TeX conventions +;;; + +;; Discard leading and trailing white space. Collapse multiple white +;; space characters to blank. + +(merge-rule "^ +" "" :eregexp) +(merge-rule " +$" "" :eregexp) +(merge-rule " +" " " :eregexp) + +;; Handle TeX markup + +(merge-rule "\\([{}$%&#])" "\1" :eregexp) + +;;;;;;;; end of extracts from xindy's tex.xdy + +;;;;;;;; extracts from latex.xdy: + +;; Standard location classes: arabic and roman numbers, and alphabets. + +(define-location-class "arabic-page-numbers" ("arabic-numbers")) +(define-location-class "roman-page-numbers" ("roman-numbers-lowercase")) +(define-location-class "Roman-page-numbers" ("roman-numbers-uppercase")) +(define-location-class "alpha-page-numbers" ("alpha")) +(define-location-class "Alpha-page-numbers" ("ALPHA")) + +;; Output Markup + +(markup-letter-group-list :sep "~n~n \indexspace~n") + +(markup-indexentry :open "~n \item " :depth 0) +(markup-indexentry :open "~n \subitem " :depth 1) +(markup-indexentry :open "~n \subsubitem " :depth 2) + +(markup-locclass-list :open ", " :sep ", ") +(markup-locref-list :sep ", ") + +;;;;;;;; end of extracts from latex.xdy + +;; The LaTeX \index command turns \ into normal character so the TeX macros +;; written to .idx files are not followed by a blank. This is different +;; from non-ascii letters which end up (with pdflatex) as \IeC macros in .idx +;; file, with a blank space after \IeC + +;; Details of the syntax are explained at +;; http://xindy.sourceforge.net/doc/manual-3.html +;; In absence of :string, "xindy uses an auto-detection mechanism to decide, +;; if the pattern is a regular expression or not". But it is not obvious to +;; guess, for example "\\_" is not detected as RE but "\\P\{\}" is, so for +;; being sure we apply the :string switch everywhere and do not use \\ etc... + +;; Go back from sphinx.util.texescape TeX macros to UTF-8 + +(merge-rule "\sphinxleftcurlybrace{}" "{" :string) +(merge-rule "\sphinxrightcurlybrace{}" "}" :string) +(merge-rule "\_" "_" :string) +(merge-rule "{[}" "[" :string) +(merge-rule "{]}" "]" :string) +(merge-rule "\textbackslash{}" "\" :string) ; " for Emacs syntax highlighting +(merge-rule "\textasciitilde{}" "~~" :string); the ~~ escape is needed here +(merge-rule "\textasciicircum{}" "^" :string) +(merge-rule "\sphinxhyphen{}" "-" :string) +(merge-rule "\textquotesingle{}" "'" :string) +(merge-rule "\textasciigrave{}" "`" :string) +(merge-rule "\textless{}" "<" :string) +(merge-rule "\textgreater{}" ">" :string) +(merge-rule "\P{}" "¶" :string) +(merge-rule "\S{}" "§" :string) +(merge-rule "\texteuro{}" "€" :string) +(merge-rule "\(\infty\)" "∞" :string) +(merge-rule "\(\pm\)" "±" :string) +(merge-rule "\(\rightarrow\)" "→" :string) +(merge-rule "\(\checkmark\)" "✓" :string) +(merge-rule "\textendash{}" "–" :string) +(merge-rule "\textbar{}" "|" :string) +(merge-rule "\(\sp{\text{0}}\)" "⁰" :string) +(merge-rule "\(\sp{\text{1}}\)" "¹" :string) +(merge-rule "\(\sp{\text{2}}\)" "²" :string) +(merge-rule "\(\sp{\text{3}}\)" "³" :string) +(merge-rule "\(\sp{\text{4}}\)" "⁴" :string) +(merge-rule "\(\sp{\text{5}}\)" "⁵" :string) +(merge-rule "\(\sp{\text{6}}\)" "⁶" :string) +(merge-rule "\(\sp{\text{7}}\)" "⁷" :string) +(merge-rule "\(\sp{\text{8}}\)" "⁸" :string) +(merge-rule "\(\sp{\text{9}}\)" "⁹" :string) +(merge-rule "\(\sb{\text{0}}\)" "₀" :string) +(merge-rule "\(\sb{\text{1}}\)" "₁" :string) +(merge-rule "\(\sb{\text{2}}\)" "₂" :string) +(merge-rule "\(\sb{\text{3}}\)" "₃" :string) +(merge-rule "\(\sb{\text{4}}\)" "₄" :string) +(merge-rule "\(\sb{\text{5}}\)" "₅" :string) +(merge-rule "\(\sb{\text{6}}\)" "₆" :string) +(merge-rule "\(\sb{\text{7}}\)" "₇" :string) +(merge-rule "\(\sb{\text{8}}\)" "₈" :string) +(merge-rule "\(\sb{\text{9}}\)" "₉" :string) +(merge-rule "\IeC {\textalpha }" "α" :string) +(merge-rule "\IeC {\textbeta }" "β" :string) +(merge-rule "\IeC {\textgamma }" "γ" :string) +(merge-rule "\IeC {\textdelta }" "δ" :string) +(merge-rule "\IeC {\textepsilon }" "ε" :string) +(merge-rule "\IeC {\textzeta }" "ζ" :string) +(merge-rule "\IeC {\texteta }" "η" :string) +(merge-rule "\IeC {\texttheta }" "θ" :string) +(merge-rule "\IeC {\textiota }" "ι" :string) +(merge-rule "\IeC {\textkappa }" "κ" :string) +(merge-rule "\IeC {\textlambda }" "λ" :string) +(merge-rule "\IeC {\textmu }" "μ" :string) +(merge-rule "\IeC {\textnu }" "ν" :string) +(merge-rule "\IeC {\textxi }" "ξ" :string) +(merge-rule "\IeC {\textomicron }" "ο" :string) +(merge-rule "\IeC {\textpi }" "π" :string) +(merge-rule "\IeC {\textrho }" "ρ" :string) +(merge-rule "\IeC {\textsigma }" "σ" :string) +(merge-rule "\IeC {\texttau }" "τ" :string) +(merge-rule "\IeC {\textupsilon }" "υ" :string) +(merge-rule "\IeC {\textphi }" "φ" :string) +(merge-rule "\IeC {\textchi }" "χ" :string) +(merge-rule "\IeC {\textpsi }" "ψ" :string) +(merge-rule "\IeC {\textomega }" "ω" :string) +(merge-rule "\IeC {\textAlpha }" "Α" :string) +(merge-rule "\IeC {\textBeta }" "Β" :string) +(merge-rule "\IeC {\textGamma }" "Γ" :string) +(merge-rule "\IeC {\textDelta }" "Δ" :string) +(merge-rule "\IeC {\textEpsilon }" "Ε" :string) +(merge-rule "\IeC {\textZeta }" "Ζ" :string) +(merge-rule "\IeC {\textEta }" "Η" :string) +(merge-rule "\IeC {\textTheta }" "Θ" :string) +(merge-rule "\IeC {\textIota }" "Ι" :string) +(merge-rule "\IeC {\textKappa }" "Κ" :string) +(merge-rule "\IeC {\textLambda }" "Λ" :string) +(merge-rule "\IeC {\textMu }" "Μ" :string) +(merge-rule "\IeC {\textNu }" "Ν" :string) +(merge-rule "\IeC {\textTheta }" "Θ" :string) +(merge-rule "\IeC {\textIota }" "Ι" :string) +(merge-rule "\IeC {\textKappa }" "Κ" :string) +(merge-rule "\IeC {\textLambda }" "Λ" :string) +(merge-rule "\IeC {\textMu }" "Μ" :string) +(merge-rule "\IeC {\textNu }" "Ν" :string) +(merge-rule "\IeC {\textXi }" "Ξ" :string) +(merge-rule "\IeC {\textOmicron }" "Ο" :string) +(merge-rule "\IeC {\textPi }" "Π" :string) +(merge-rule "\IeC {\textRho }" "Ρ" :string) +(merge-rule "\IeC {\textSigma }" "Σ" :string) +(merge-rule "\IeC {\textTau }" "Τ" :string) +(merge-rule "\IeC {\textUpsilon }" "Υ" :string) +(merge-rule "\IeC {\textPhi }" "Φ" :string) +(merge-rule "\IeC {\textChi }" "Χ" :string) +(merge-rule "\IeC {\textPsi }" "Ψ" :string) +(merge-rule "\IeC {\textOmega }" "Ω" :string) +(merge-rule "\IeC {\textohm }" "Ω" :string) + +;; This xindy module provides some basic support for "see" +(require "makeindex.xdy") + +;; This creates one-letter headings and works fine with utf-8 letters. +;; For Cyrillic with pdflatex works thanks to LICRcyr2utf8.xdy +(require "latin-lettergroups.xdy") + +;; currently we don't (know how to easily) separate "Numbers" from +;; "Symbols" with xindy as is the case with makeindex. +(markup-index :open "\begin{sphinxtheindex} +\let\lettergroup\sphinxstyleindexlettergroup +\let\lettergroupDefault\sphinxstyleindexlettergroupDefault +\let\spxpagem\sphinxstyleindexpagemain +\let\spxentry\sphinxstyleindexentry +\let\spxextra\sphinxstyleindexextra + +" + :close " + +\end{sphinxtheindex} +" + :tree) + diff --git a/docs/build/latex/sphinxcyrillic.sty b/docs/build/latex/sphinxcyrillic.sty new file mode 100644 index 0000000..6747b5e --- /dev/null +++ b/docs/build/latex/sphinxcyrillic.sty @@ -0,0 +1,55 @@ +%% CYRILLIC IN NON-CYRILLIC DOCUMENTS (pdflatex only) +% +% refs: https://tex.stackexchange.com/q/460271/ +\ProvidesPackage{sphinxcyrillic}% + [2018/11/21 v2.0 support for Cyrillic in non-Cyrillic documents] +\RequirePackage{kvoptions} +\SetupKeyvalOptions{prefix=spx@cyropt@} % use \spx@cyropt@ prefix +\DeclareBoolOption[false]{Xtwo} +\DeclareBoolOption[false]{TtwoA} +\DeclareDefaultOption{\@unknownoptionerror} +\ProcessLocalKeyvalOptions* % ignore class options + +\ifspx@cyropt@Xtwo +% original code by tex.sx user egreg (updated 2019/10/28): +% https://tex.stackexchange.com/a/460325/ +% 159 Cyrillic glyphs as available in X2 TeX 8bit font encoding +% This assumes inputenc loaded with utf8 option, or LaTeX release +% as recent as 2018/04/01 which does it automatically. + \@tfor\next:=% + {Ё}{Ђ}{Є}{Ѕ}{І}{Ј}{Љ}{Њ}{Ћ}{Ў}{Џ}{А}{Б}{В}{Г}{Д}{Е}{Ж}{З}{И}{Й}% + {К}{Л}{М}{Н}{О}{П}{Р}{С}{Т}{У}{Ф}{Х}{Ц}{Ч}{Ш}{Щ}{Ъ}{Ы}{Ь}{Э}{Ю}% + {Я}{а}{б}{в}{г}{д}{е}{ж}{з}{и}{й}{к}{л}{м}{н}{о}{п}{р}{с}{т}{у}% + {ф}{х}{ц}{ч}{ш}{щ}{ъ}{ы}{ь}{э}{ю}{я}{ё}{ђ}{є}{ѕ}{і}{ј}{љ}{њ}{ћ}% + {ў}{џ}{Ѣ}{ѣ}{Ѫ}{ѫ}{Ѵ}{ѵ}{Ґ}{ґ}{Ғ}{ғ}{Ҕ}{ҕ}{Җ}{җ}{Ҙ}{ҙ}{Қ}{қ}{Ҝ}{ҝ}% + {Ҟ}{ҟ}{Ҡ}{ҡ}{Ң}{ң}{Ҥ}{ҥ}{Ҧ}{ҧ}{Ҩ}{ҩ}{Ҫ}{ҫ}{Ҭ}{ҭ}{Ү}{ү}{Ұ}{ұ}{Ҳ}{ҳ}% + {Ҵ}{ҵ}{Ҷ}{ҷ}{Ҹ}{ҹ}{Һ}{һ}{Ҽ}{ҽ}{Ҿ}{ҿ}{Ӏ}{Ӄ}{ӄ}{Ӆ}{ӆ}{Ӈ}{ӈ}{Ӌ}{ӌ}% + {Ӎ}{ӎ}{Ӕ}{ӕ}{Ә}{ә}{Ӡ}{ӡ}{Ө}{ө}\do + {% + \begingroup\def\IeC{\protect\DeclareTextSymbolDefault}% + \protected@edef\@temp{\endgroup + \@ifl@t@r{\fmtversion}{2019/10/01}{\csname u8:\next\endcsname}{\next}}% + \@temp{X2}% + }% +\else +\ifspx@cyropt@TtwoA +% original code by tex.sx user jfbu: +% https://tex.stackexchange.com/a/460305/ +% 63*2+1=127 Cyrillic glyphs as found in T2A 8bit TeX font-encoding + \@tfor\@tempa:=% + {ae}{a}{b}{chrdsc}{chvcrs}{ch}{c}{dje}{dze}{dzhe}{d}{erev}{ery}{e}% + {f}{ghcrs}{gup}{g}{hdsc}{hrdsn}{h}{ie}{ii}{ishrt}{i}{je}% + {kbeak}{kdsc}{kvcrs}{k}{lje}{l}{m}{ndsc}{ng}{nje}{n}{otld}{o}{p}{r}% + {schwa}{sdsc}{sftsn}{shch}{shha}{sh}{s}{tshe}{t}{ushrt}{u}{v}% + {ya}{yhcrs}{yi}{yo}{yu}{y}{zdsc}{zhdsc}{zh}{z}\do + {% + \expandafter\DeclareTextSymbolDefault\expandafter + {\csname cyr\@tempa\endcsname}{T2A}% + \expandafter\uppercase\expandafter{\expandafter + \def\expandafter\@tempa\expandafter{\@tempa}}% + \expandafter\DeclareTextSymbolDefault\expandafter + {\csname CYR\@tempa\endcsname}{T2A}% + }% + \DeclareTextSymbolDefault{\CYRpalochka}{T2A}% +\fi\fi +\endinput diff --git a/docs/build/latex/sphinxhighlight.sty b/docs/build/latex/sphinxhighlight.sty new file mode 100644 index 0000000..fe63e4f --- /dev/null +++ b/docs/build/latex/sphinxhighlight.sty @@ -0,0 +1,105 @@ +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesPackage{sphinxhighlight}[2016/05/29 stylesheet for highlighting with pygments] + + +\makeatletter +\def\PYG@reset{\let\PYG@it=\relax \let\PYG@bf=\relax% + \let\PYG@ul=\relax \let\PYG@tc=\relax% + \let\PYG@bc=\relax \let\PYG@ff=\relax} +\def\PYG@tok#1{\csname PYG@tok@#1\endcsname} +\def\PYG@toks#1+{\ifx\relax#1\empty\else% + \PYG@tok{#1}\expandafter\PYG@toks\fi} +\def\PYG@do#1{\PYG@bc{\PYG@tc{\PYG@ul{% + \PYG@it{\PYG@bf{\PYG@ff{#1}}}}}}} +\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+\PYG@do{#2}} + +\@namedef{PYG@tok@w}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}} +\@namedef{PYG@tok@c}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} +\@namedef{PYG@tok@cp}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@cs}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}\def\PYG@bc##1{{\setlength{\fboxsep}{0pt}\colorbox[rgb]{1.00,0.94,0.94}{\strut ##1}}}} +\@namedef{PYG@tok@k}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@kp}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@kt}{\def\PYG@tc##1{\textcolor[rgb]{0.56,0.13,0.00}{##1}}} +\@namedef{PYG@tok@o}{\def\PYG@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\@namedef{PYG@tok@ow}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@nb}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@nf}{\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.49}{##1}}} +\@namedef{PYG@tok@nc}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}} +\@namedef{PYG@tok@nn}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.05,0.52,0.71}{##1}}} +\@namedef{PYG@tok@ne}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@nv}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\@namedef{PYG@tok@no}{\def\PYG@tc##1{\textcolor[rgb]{0.38,0.68,0.84}{##1}}} +\@namedef{PYG@tok@nl}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.13,0.44}{##1}}} +\@namedef{PYG@tok@ni}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.84,0.33,0.22}{##1}}} +\@namedef{PYG@tok@na}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@nt}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.45}{##1}}} +\@namedef{PYG@tok@nd}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.33,0.33,0.33}{##1}}} +\@namedef{PYG@tok@s}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@sd}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@si}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.44,0.63,0.82}{##1}}} +\@namedef{PYG@tok@se}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@sr}{\def\PYG@tc##1{\textcolor[rgb]{0.14,0.33,0.53}{##1}}} +\@namedef{PYG@tok@ss}{\def\PYG@tc##1{\textcolor[rgb]{0.32,0.47,0.09}{##1}}} +\@namedef{PYG@tok@sx}{\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}} +\@namedef{PYG@tok@m}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\@namedef{PYG@tok@gh}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} +\@namedef{PYG@tok@gu}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}} +\@namedef{PYG@tok@gd}{\def\PYG@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}} +\@namedef{PYG@tok@gi}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}} +\@namedef{PYG@tok@gr}{\def\PYG@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}} +\@namedef{PYG@tok@ge}{\let\PYG@it=\textit} +\@namedef{PYG@tok@gs}{\let\PYG@bf=\textbf} +\@namedef{PYG@tok@gp}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}} +\@namedef{PYG@tok@go}{\def\PYG@tc##1{\textcolor[rgb]{0.20,0.20,0.20}{##1}}} +\@namedef{PYG@tok@gt}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}} +\@namedef{PYG@tok@err}{\def\PYG@bc##1{{\setlength{\fboxsep}{\string -\fboxrule}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}}} +\@namedef{PYG@tok@kc}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@kd}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@kn}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@kr}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@bp}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} +\@namedef{PYG@tok@fm}{\def\PYG@tc##1{\textcolor[rgb]{0.02,0.16,0.49}{##1}}} +\@namedef{PYG@tok@vc}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\@namedef{PYG@tok@vg}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\@namedef{PYG@tok@vi}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\@namedef{PYG@tok@vm}{\def\PYG@tc##1{\textcolor[rgb]{0.73,0.38,0.84}{##1}}} +\@namedef{PYG@tok@sa}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@sb}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@sc}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@dl}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@s2}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@sh}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@s1}{\def\PYG@tc##1{\textcolor[rgb]{0.25,0.44,0.63}{##1}}} +\@namedef{PYG@tok@mb}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\@namedef{PYG@tok@mf}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\@namedef{PYG@tok@mh}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\@namedef{PYG@tok@mi}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\@namedef{PYG@tok@il}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\@namedef{PYG@tok@mo}{\def\PYG@tc##1{\textcolor[rgb]{0.13,0.50,0.31}{##1}}} +\@namedef{PYG@tok@ch}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} +\@namedef{PYG@tok@cm}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} +\@namedef{PYG@tok@cpf}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} +\@namedef{PYG@tok@c1}{\let\PYG@it=\textit\def\PYG@tc##1{\textcolor[rgb]{0.25,0.50,0.56}{##1}}} + +\def\PYGZbs{\char`\\} +\def\PYGZus{\char`\_} +\def\PYGZob{\char`\{} +\def\PYGZcb{\char`\}} +\def\PYGZca{\char`\^} +\def\PYGZam{\char`\&} +\def\PYGZlt{\char`\<} +\def\PYGZgt{\char`\>} +\def\PYGZsh{\char`\#} +\def\PYGZpc{\char`\%} +\def\PYGZdl{\char`\$} +\def\PYGZhy{\char`\-} +\def\PYGZsq{\char`\'} +\def\PYGZdq{\char`\"} +\def\PYGZti{\char`\~} +% for compatibility with earlier versions +\def\PYGZat{@} +\def\PYGZlb{[} +\def\PYGZrb{]} +\makeatother + +\renewcommand\PYGZsq{\textquotesingle} diff --git a/docs/build/latex/sphinxhowto.cls b/docs/build/latex/sphinxhowto.cls new file mode 100644 index 0000000..0848a79 --- /dev/null +++ b/docs/build/latex/sphinxhowto.cls @@ -0,0 +1,102 @@ +% +% sphinxhowto.cls for Sphinx (http://sphinx-doc.org/) +% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{sphinxhowto}[2019/12/01 v2.3.0 Document class (Sphinx howto)] + +% 'oneside' option overriding the 'twoside' default +\newif\if@oneside +\DeclareOption{oneside}{\@onesidetrue} +% Pass remaining document options to the parent class. +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}} +\ProcessOptions\relax + +% Default to two-side document +\if@oneside +% nothing to do (oneside is the default) +\else +\PassOptionsToClass{twoside}{\sphinxdocclass} +\fi + +\LoadClass{\sphinxdocclass} + +% Set some sane defaults for section numbering depth and TOC depth. You can +% reset these counters in your preamble. +% +\setcounter{secnumdepth}{2} +\setcounter{tocdepth}{2}% i.e. section and subsection + +% Adapt \and command to the flushright context of \sphinxmaketitle, to +% avoid ragged line endings if author names do not fit all on one single line +\DeclareRobustCommand{\and}{% + \end{tabular}\kern-\tabcolsep + \allowbreak + \hskip\dimexpr1em+\tabcolsep\@plus.17fil\begin{tabular}[t]{c}% +}% +% If it is desired that each author name be on its own line, use in preamble: +%\DeclareRobustCommand{\and}{% +% \end{tabular}\kern-\tabcolsep\\\begin{tabular}[t]{c}% +%}% +% Change the title page to look a bit better, and fit in with the fncychap +% ``Bjarne'' style a bit better. +% +\newcommand{\sphinxmaketitle}{% + \noindent\rule{\textwidth}{1pt}\par + \begingroup % for PDF information dictionary + \def\endgraf{ }\def\and{\& }% + \pdfstringdefDisableCommands{\def\\{, }}% overwrite hyperref setup + \hypersetup{pdfauthor={\@author}, pdftitle={\@title}}% + \endgroup + \begin{flushright} + \sphinxlogo + \py@HeaderFamily + {\Huge \@title }\par + {\itshape\large \py@release \releaseinfo}\par + \vspace{25pt} + {\Large + \begin{tabular}[t]{c} + \@author + \end{tabular}\kern-\tabcolsep}\par + \vspace{25pt} + \@date \par + \py@authoraddress \par + \end{flushright} + \@thanks + \setcounter{footnote}{0} + \let\thanks\relax\let\maketitle\relax + %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} +} + +\newcommand{\sphinxtableofcontents}{% + \begingroup + \parskip \z@skip + \sphinxtableofcontentshook + \tableofcontents + \endgroup + \noindent\rule{\textwidth}{1pt}\par + \vspace{12pt}% +} +\newcommand\sphinxtableofcontentshook{} +\pagenumbering{arabic} + +% Fix the bibliography environment to add an entry to the Table of +% Contents. +% For an article document class this environment is a section, +% so no page break before it. +% +\newenvironment{sphinxthebibliography}[1]{% + % \phantomsection % not needed here since TeXLive 2010's hyperref + \begin{thebibliography}{#1}% + \addcontentsline{toc}{section}{\ifdefined\refname\refname\else\ifdefined\bibname\bibname\fi\fi}}{\end{thebibliography}} + + +% Same for the indices. +% The memoir class already does this, so we don't duplicate it in that case. +% +\@ifclassloaded{memoir} + {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}} + {\newenvironment{sphinxtheindex}{% + \phantomsection % needed because no chapter, section, ... is created by theindex + \begin{theindex}% + \addcontentsline{toc}{section}{\indexname}}{\end{theindex}}} diff --git a/docs/build/latex/sphinxmanual.cls b/docs/build/latex/sphinxmanual.cls new file mode 100644 index 0000000..718189d --- /dev/null +++ b/docs/build/latex/sphinxmanual.cls @@ -0,0 +1,128 @@ +% +% sphinxmanual.cls for Sphinx (http://sphinx-doc.org/) +% + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{sphinxmanual}[2019/12/01 v2.3.0 Document class (Sphinx manual)] + +% chapters starting at odd pages (overridden by 'openany' document option) +\PassOptionsToClass{openright}{\sphinxdocclass} + +% 'oneside' option overriding the 'twoside' default +\newif\if@oneside +\DeclareOption{oneside}{\@onesidetrue} +% Pass remaining document options to the parent class. +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}} +\ProcessOptions\relax + +% Defaults two-side document +\if@oneside +% nothing to do (oneside is the default) +\else +\PassOptionsToClass{twoside}{\sphinxdocclass} +\fi + +\LoadClass{\sphinxdocclass} + +% Set some sane defaults for section numbering depth and TOC depth. You can +% reset these counters in your preamble. +% +\setcounter{secnumdepth}{2} +\setcounter{tocdepth}{1} + +% Adapt \and command to the flushright context of \sphinxmaketitle, to +% avoid ragged line endings if author names do not fit all on one single line +\DeclareRobustCommand{\and}{% + \end{tabular}\kern-\tabcolsep + \allowbreak + \hskip\dimexpr1em+\tabcolsep\@plus.17fil\begin{tabular}[t]{c}% +}% +% If it is desired that each author name be on its own line, use in preamble: +%\DeclareRobustCommand{\and}{% +% \end{tabular}\kern-\tabcolsep\\\begin{tabular}[t]{c}% +%}% +% Change the title page to look a bit better, and fit in with the fncychap +% ``Bjarne'' style a bit better. +% +\newcommand{\sphinxmaketitle}{% + \let\sphinxrestorepageanchorsetting\relax + \ifHy@pageanchor\def\sphinxrestorepageanchorsetting{\Hy@pageanchortrue}\fi + \hypersetup{pageanchor=false}% avoid duplicate destination warnings + \begin{titlepage}% + \let\footnotesize\small + \let\footnoterule\relax + \noindent\rule{\textwidth}{1pt}\par + \begingroup % for PDF information dictionary + \def\endgraf{ }\def\and{\& }% + \pdfstringdefDisableCommands{\def\\{, }}% overwrite hyperref setup + \hypersetup{pdfauthor={\@author}, pdftitle={\@title}}% + \endgroup + \begin{flushright}% + \sphinxlogo + \py@HeaderFamily + {\Huge \@title \par} + {\itshape\LARGE \py@release\releaseinfo \par} + \vfill + {\LARGE + \begin{tabular}[t]{c} + \@author + \end{tabular}\kern-\tabcolsep + \par} + \vfill\vfill + {\large + \@date \par + \vfill + \py@authoraddress \par + }% + \end{flushright}%\par + \@thanks + \end{titlepage}% + \setcounter{footnote}{0}% + \let\thanks\relax\let\maketitle\relax + %\gdef\@thanks{}\gdef\@author{}\gdef\@title{} + \clearpage + \ifdefined\sphinxbackoftitlepage\sphinxbackoftitlepage\fi + \if@openright\cleardoublepage\else\clearpage\fi + \sphinxrestorepageanchorsetting +} + +\newcommand{\sphinxtableofcontents}{% + \pagenumbering{roman}% + \begingroup + \parskip \z@skip + \sphinxtableofcontentshook + \tableofcontents + \endgroup + % before resetting page counter, let's do the right thing. + \if@openright\cleardoublepage\else\clearpage\fi + \pagenumbering{arabic}% +} + +% This is needed to get the width of the section # area wide enough in the +% library reference. Doing it here keeps it the same for all the manuals. +% +\newcommand{\sphinxtableofcontentshook}{% + \renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.6em}}% + \renewcommand*\l@subsection{\@dottedtocline{2}{4.1em}{3.5em}}% +} + +% Fix the bibliography environment to add an entry to the Table of +% Contents. +% For a report document class this environment is a chapter. +% +\newenvironment{sphinxthebibliography}[1]{% + \if@openright\cleardoublepage\else\clearpage\fi + % \phantomsection % not needed here since TeXLive 2010's hyperref + \begin{thebibliography}{#1}% + \addcontentsline{toc}{chapter}{\bibname}}{\end{thebibliography}} + +% Same for the indices. +% The memoir class already does this, so we don't duplicate it in that case. +% +\@ifclassloaded{memoir} + {\newenvironment{sphinxtheindex}{\begin{theindex}}{\end{theindex}}} + {\newenvironment{sphinxtheindex}{% + \if@openright\cleardoublepage\else\clearpage\fi + \phantomsection % needed as no chapter, section, ... created + \begin{theindex}% + \addcontentsline{toc}{chapter}{\indexname}}{\end{theindex}}} diff --git a/docs/build/latex/sphinxmessages.sty b/docs/build/latex/sphinxmessages.sty new file mode 100644 index 0000000..b966a33 --- /dev/null +++ b/docs/build/latex/sphinxmessages.sty @@ -0,0 +1,21 @@ +% +% sphinxmessages.sty +% +% message resources for Sphinx +% +\ProvidesPackage{sphinxmessages}[2019/01/04 v2.0 Localized LaTeX macros (Sphinx team)] + +\renewcommand{\literalblockcontinuedname}{continua dalla pagina precedente} +\renewcommand{\literalblockcontinuesname}{continues on next page} +\renewcommand{\sphinxnonalphabeticalgroupname}{Non\sphinxhyphen{}alphabetical} +\renewcommand{\sphinxsymbolsname}{Simboli} +\renewcommand{\sphinxnumbersname}{Numbers} +\def\pageautorefname{pagina} + +\addto\captionsitalian{\renewcommand{\figurename}{Fig.\@{} }} +\def\fnum@figure{\figurename\thefigure{}} + +\addto\captionsitalian{\renewcommand{\tablename}{Tabella }} +\def\fnum@table{\tablename\thetable{}} + +\addto\captionsitalian{\renewcommand{\literalblockname}{Listato}} \ No newline at end of file diff --git a/docs/build/latex/sphinxmulticell.sty b/docs/build/latex/sphinxmulticell.sty new file mode 100644 index 0000000..a645491 --- /dev/null +++ b/docs/build/latex/sphinxmulticell.sty @@ -0,0 +1,317 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{sphinxmulticell}% + [2017/02/23 v1.6 better span rows and columns of a table (Sphinx team)]% +\DeclareOption*{\PackageWarning{sphinxmulticell}{Option `\CurrentOption' is unknown}}% +\ProcessOptions\relax +% +% --- MULTICOLUMN --- +% standard LaTeX's \multicolumn +% 1. does not allow verbatim contents, +% 2. interacts very poorly with tabulary. +% +% It is needed to write own macros for Sphinx: to allow code-blocks in merged +% cells rendered by tabular/longtable, and to allow multi-column cells with +% paragraphs to be taken into account sanely by tabulary algorithm for column +% widths. +% +% This requires quite a bit of hacking. First, in Sphinx, the multi-column +% contents will *always* be wrapped in a varwidth environment. The issue +% becomes to pass it the correct target width. We must trick tabulary into +% believing the multicolumn is simply separate columns, else tabulary does not +% incorporate the contents in its algorithm. But then we must clear the +% vertical rules... +% +% configuration of tabulary +\setlength{\tymin}{3\fontcharwd\font`0 }% minimal width of "squeezed" columns +\setlength{\tymax}{10000pt}% allow enough room for paragraphs to "compete" +% we need access to tabulary's final computed width. \@tempdima is too volatile +% to hope it has kept tabulary's value when \sphinxcolwidth needs it. +\newdimen\sphinx@TY@tablewidth +\def\tabulary{% + \def\TY@final{\sphinx@TY@tablewidth\@tempdima\tabular}% + \let\endTY@final\endtabular + \TY@tabular}% +% next hack is needed only if user has set latex_use_latex_multicolumn to True: +% it fixes tabulary's bug with \multicolumn defined "short" in first pass. (if +% upstream tabulary adds a \long, our extra one causes no harm) +\def\sphinx@tempa #1\def\multicolumn#2#3#4#5#6#7#8#9\sphinx@tempa + {\def\TY@tab{#1\long\def\multicolumn####1####2####3{\multispan####1\relax}#9}}% +\expandafter\sphinx@tempa\TY@tab\sphinx@tempa +% +% TN. 1: as \omit is never executed, Sphinx multicolumn does not need to worry +% like standard multicolumn about |l| vs l|. On the other hand it assumes +% columns are separated by a | ... (if not it will add extraneous +% \arrayrulewidth space for each column separation in its estimate of available +% width). +% +% TN. 1b: as Sphinx multicolumn uses neither \omit nor \span, it can not +% (easily) get rid of extra macros from >{...} or <{...} between columns. At +% least, it has been made compatible with colortbl's \columncolor. +% +% TN. 2: tabulary's second pass is handled like tabular/longtable's single +% pass, with the difference that we hacked \TY@final to set in +% \sphinx@TY@tablewidth the final target width as computed by tabulary. This is +% needed only to handle columns with a "horizontal" specifier: "p" type columns +% (inclusive of tabulary's LJRC) holds the target column width in the +% \linewidth dimension. +% +% TN. 3: use of \begin{sphinxmulticolumn}...\end{sphinxmulticolumn} mark-up +% would need some hacking around the fact that groups can not span across table +% cells (the code does inserts & tokens, see TN1b). It was decided to keep it +% simple with \sphinxstartmulticolumn...\sphinxstopmulticolumn. +% +% MEMO about nesting: if sphinxmulticolumn is encountered in a nested tabular +% inside a tabulary it will think to be at top level in the tabulary. But +% Sphinx generates no nested tables, and if some LaTeX macro uses internally a +% tabular this will not have a \sphinxstartmulticolumn within it! +% +\def\sphinxstartmulticolumn{% + \ifx\equation$% $ tabulary's first pass + \expandafter\sphinx@TYI@start@multicolumn + \else % either not tabulary or tabulary's second pass + \expandafter\sphinx@start@multicolumn + \fi +}% +\def\sphinxstopmulticolumn{% + \ifx\equation$% $ tabulary's first pass + \expandafter\sphinx@TYI@stop@multicolumn + \else % either not tabulary or tabulary's second pass + \ignorespaces + \fi +}% +\def\sphinx@TYI@start@multicolumn#1{% + % use \gdef always to avoid stack space build up + \gdef\sphinx@tempa{#1}\begingroup\setbox\z@\hbox\bgroup +}% +\def\sphinx@TYI@stop@multicolumn{\egroup % varwidth was used with \tymax + \xdef\sphinx@tempb{\the\dimexpr\wd\z@/\sphinx@tempa}% per column width + \endgroup + \expandafter\sphinx@TYI@multispan\expandafter{\sphinx@tempa}% +}% +\def\sphinx@TYI@multispan #1{% + \kern\sphinx@tempb\ignorespaces % the per column occupied width + \ifnum#1>\@ne % repeat, taking into account subtleties of TeX's & ... + \expandafter\sphinx@TYI@multispan@next\expandafter{\the\numexpr#1-\@ne\expandafter}% + \fi +}% +\def\sphinx@TYI@multispan@next{&\relax\sphinx@TYI@multispan}% +% +% Now the branch handling either the second pass of tabulary or the single pass +% of tabular/longtable. This is the delicate part where we gather the +% dimensions from the p columns either set-up by tabulary or by user p column +% or Sphinx \X, \Y columns. The difficulty is that to get the said width, the +% template must be inserted (other hacks would be horribly complicated except +% if we rewrote crucial parts of LaTeX's \@array !) and we can not do +% \omit\span like standard \multicolumn's easy approach. Thus we must cancel +% the \vrule separators. Also, perhaps the column specifier is of the l, c, r +% type, then we attempt an ad hoc rescue to give varwidth a reasonable target +% width. +\def\sphinx@start@multicolumn#1{% + \gdef\sphinx@multiwidth{0pt}\gdef\sphinx@tempa{#1}\sphinx@multispan{#1}% +}% +\def\sphinx@multispan #1{% + \ifnum#1=\@ne\expandafter\sphinx@multispan@end + \else\expandafter\sphinx@multispan@next + \fi {#1}% +}% +\def\sphinx@multispan@next #1{% + % trick to recognize L, C, R, J or p, m, b type columns + \ifdim\baselineskip>\z@ + \gdef\sphinx@tempb{\linewidth}% + \else + % if in an l, r, c type column, try and hope for the best + \xdef\sphinx@tempb{\the\dimexpr(\ifx\TY@final\@undefined\linewidth\else + \sphinx@TY@tablewidth\fi-\arrayrulewidth)/\sphinx@tempa + -\tw@\tabcolsep-\arrayrulewidth\relax}% + \fi + \noindent\kern\sphinx@tempb\relax + \xdef\sphinx@multiwidth + {\the\dimexpr\sphinx@multiwidth+\sphinx@tempb+\tw@\tabcolsep+\arrayrulewidth}% + % hack the \vline and the colortbl macros + \sphinx@hack@vline\sphinx@hack@CT&\relax + % repeat + \expandafter\sphinx@multispan\expandafter{\the\numexpr#1-\@ne}% +}% +% packages like colortbl add group levels, we need to "climb back up" to be +% able to hack the \vline and also the colortbl inserted tokens. This creates +% empty space whether or not the columns were | separated: +\def\sphinx@hack@vline{\ifnum\currentgrouptype=6\relax + \kern\arrayrulewidth\arrayrulewidth\z@\else\aftergroup\sphinx@hack@vline\fi}% +\def\sphinx@hack@CT{\ifnum\currentgrouptype=6\relax + \let\CT@setup\sphinx@CT@setup\else\aftergroup\sphinx@hack@CT\fi}% +% It turns out \CT@row@color is not expanded contrarily to \CT@column@color +% during LaTeX+colortbl preamble preparation, hence it would be possible for +% \sphinx@CT@setup to discard only the column color and choose to obey or not +% row color and cell color. It would even be possible to propagate cell color +% to row color for the duration of the Sphinx multicolumn... the (provisional?) +% choice has been made to cancel the colortbl colours for the multicolumn +% duration. +\def\sphinx@CT@setup #1\endgroup{\endgroup}% hack to remove colour commands +\def\sphinx@multispan@end#1{% + % first, trace back our steps horizontally + \noindent\kern-\dimexpr\sphinx@multiwidth\relax + % and now we set the final computed width for the varwidth environment + \ifdim\baselineskip>\z@ + \xdef\sphinx@multiwidth{\the\dimexpr\sphinx@multiwidth+\linewidth}% + \else + \xdef\sphinx@multiwidth{\the\dimexpr\sphinx@multiwidth+ + (\ifx\TY@final\@undefined\linewidth\else + \sphinx@TY@tablewidth\fi-\arrayrulewidth)/\sphinx@tempa + -\tw@\tabcolsep-\arrayrulewidth\relax}% + \fi + % we need to remove colour set-up also for last cell of the multi-column + \aftergroup\sphinx@hack@CT +}% +\newcommand*\sphinxcolwidth[2]{% + % this dimension will always be used for varwidth, and serves as maximum + % width when cells are merged either via multirow or multicolumn or both, + % as always their contents is wrapped in varwidth environment. + \ifnum#1>\@ne % multi-column (and possibly also multi-row) + % we wrote our own multicolumn code especially to handle that (and allow + % verbatim contents) + \ifx\equation$%$ + \tymax % first pass of tabulary (cf MEMO above regarding nesting) + \else % the \@gobble thing is for compatibility with standard \multicolumn + \sphinx@multiwidth\@gobble{#1/#2}% + \fi + \else % single column multirow + \ifx\TY@final\@undefined % not a tabulary. + \ifdim\baselineskip>\z@ + % in a p{..} type column, \linewidth is the target box width + \linewidth + \else + % l, c, r columns. Do our best. + \dimexpr(\linewidth-\arrayrulewidth)/#2- + \tw@\tabcolsep-\arrayrulewidth\relax + \fi + \else % in tabulary + \ifx\equation$%$% first pass + \tymax % it is set to a big value so that paragraphs can express themselves + \else + % second pass. + \ifdim\baselineskip>\z@ + \linewidth % in a L, R, C, J column or a p, \X, \Y ... + \else + % we have hacked \TY@final to put in \sphinx@TY@tablewidth the table width + \dimexpr(\sphinx@TY@tablewidth-\arrayrulewidth)/#2- + \tw@\tabcolsep-\arrayrulewidth\relax + \fi + \fi + \fi + \fi +}% +% fallback default in case user has set latex_use_latex_multicolumn to True: +% \sphinxcolwidth will use this only inside LaTeX's standard \multicolumn +\def\sphinx@multiwidth #1#2{\dimexpr % #1 to gobble the \@gobble (!) + (\ifx\TY@final\@undefined\linewidth\else\sphinx@TY@tablewidth\fi + -\arrayrulewidth)*#2-\tw@\tabcolsep-\arrayrulewidth\relax}% +% +% --- MULTIROW --- +% standard \multirow +% 1. does not allow verbatim contents, +% 2. does not allow blank lines in its argument, +% 3. its * specifier means to typeset "horizontally" which is very +% bad for paragraph content. 2016 version has = specifier but it +% must be used with p type columns only, else results are bad, +% 4. it requires manual intervention if the contents is too long to fit +% in the asked-for number of rows. +% 5. colour panels (either from \rowcolor or \columncolor) will hide +% the bottom part of multirow text, hence manual tuning is needed +% to put the multirow insertion at the _bottom_. +% +% The Sphinx solution consists in always having contents wrapped +% in a varwidth environment so that it makes sense to estimate how many +% lines it will occupy, and then ensure by insertion of suitable struts +% that the table rows have the needed height. The needed mark-up is done +% by LaTeX writer, which has its own id for the merged cells. +% +% The colour issue is solved by clearing colour panels in all cells, +% whether or not the multirow is single-column or multi-column. +% +% In passing we obtain baseline alignements across rows (only if +% \arraystretch is 1, as LaTeX's does not obey \arraystretch in "p" +% multi-line contents, only first and last line...) +% +% TODO: examine the situation with \arraystretch > 1. The \extrarowheight +% is hopeless for multirow anyhow, it makes baseline alignment strictly +% impossible. +\newcommand\sphinxmultirow[2]{\begingroup + % #1 = nb of spanned rows, #2 = Sphinx id of "cell", #3 = contents + % but let's fetch #3 in a way allowing verbatim contents ! + \def\sphinx@nbofrows{#1}\def\sphinx@cellid{#2}% + \afterassignment\sphinx@multirow\let\next= +}% +\def\sphinx@multirow {% + \setbox\z@\hbox\bgroup\aftergroup\sphinx@@multirow\strut +}% +\def\sphinx@@multirow {% + % The contents, which is a varwidth environment, has been captured in + % \box0 (a \hbox). + % We have with \sphinx@cellid an assigned unique id. The goal is to give + % about the same height to all the involved rows. + % For this Sphinx will insert a \sphinxtablestrut{cell_id} mark-up + % in LaTeX file and the expansion of the latter will do the suitable thing. + \dimen@\dp\z@ + \dimen\tw@\ht\@arstrutbox + \advance\dimen@\dimen\tw@ + \advance\dimen\tw@\dp\@arstrutbox + \count@=\dimen@ % type conversion dim -> int + \count\tw@=\dimen\tw@ + \divide\count@\count\tw@ % TeX division truncates + \advance\dimen@-\count@\dimen\tw@ + % 1300sp is about 0.02pt. For comparison a rule default width is 0.4pt. + % (note that if \count@ holds 0, surely \dimen@>1300sp) + \ifdim\dimen@>1300sp \advance\count@\@ne \fi + % now \count@ holds the count L of needed "lines" + % and \sphinx@nbofrows holds the number N of rows + % we have L >= 1 and N >= 1 + % if L is a multiple of N, ... clear what to do ! + % else write L = qN + r, 1 <= r < N and we will + % arrange for each row to have enough space for: + % q+1 "lines" in each of the first r rows + % q "lines" in each of the (N-r) bottom rows + % for a total of (q+1) * r + q * (N-r) = q * N + r = L + % It is possible that q == 0. + \count\tw@\count@ + % the TeX division truncates + \divide\count\tw@\sphinx@nbofrows\relax + \count4\count\tw@ % q + \multiply\count\tw@\sphinx@nbofrows\relax + \advance\count@-\count\tw@ % r + \expandafter\xdef\csname sphinx@tablestrut_\sphinx@cellid\endcsname + {\noexpand\sphinx@tablestrut{\the\count4}{\the\count@}{\sphinx@cellid}}% + \dp\z@\z@ + % this will use the real height if it is >\ht\@arstrutbox + \sphinxtablestrut{\sphinx@cellid}\box\z@ + \endgroup % group was opened in \sphinxmultirow +}% +\newcommand*\sphinxtablestrut[1]{% + % #1 is a "cell_id", i.e. the id of a merged group of table cells + \csname sphinx@tablestrut_#1\endcsname +}% +% LaTeX typesets the table row by row, hence each execution can do +% an update for the next row. +\newcommand*\sphinx@tablestrut[3]{\begingroup + % #1 = q, #2 = (initially) r, #3 = cell_id, q+1 lines in first r rows + % if #2 = 0, create space for max(q,1) table lines + % if #2 > 0, create space for q+1 lines and decrement #2 + \leavevmode + \count@#1\relax + \ifnum#2=\z@ + \ifnum\count@=\z@\count@\@ne\fi + \else + % next row will be with a #2 decremented by one + \expandafter\xdef\csname sphinx@tablestrut_#3\endcsname + {\noexpand\sphinx@tablestrut{#1}{\the\numexpr#2-\@ne}{#3}}% + \advance\count@\@ne + \fi + \vrule\@height\ht\@arstrutbox + \@depth\dimexpr\count@\ht\@arstrutbox+\count@\dp\@arstrutbox-\ht\@arstrutbox\relax + \@width\z@ + \endgroup + % we need this to avoid colour panels hiding bottom parts of multirow text + \sphinx@hack@CT +}% +\endinput +%% +%% End of file `sphinxmulticell.sty'. diff --git a/test b/test new file mode 120000 index 0000000..e5abc91 --- /dev/null +++ b/test @@ -0,0 +1 @@ +./nest_backend/test \ No newline at end of file