├── .github └── workflows │ ├── build.yml │ ├── latest bump.yml │ └── latest commit comment.yml ├── .gitignore ├── .markdownlint.yml ├── .vscode └── settings.json ├── dev ├── constants │ ├── dictionary.txt │ ├── req.txt │ ├── scripts.yml │ ├── tpl │ │ ├── autodoc.mustache │ │ ├── pdoc │ │ │ ├── _lunr_search.inc.mako │ │ │ ├── config.mako │ │ │ ├── credits.mako │ │ │ ├── css.mako │ │ │ ├── head.mako │ │ │ ├── html.mako │ │ │ ├── logo.mako │ │ │ ├── pdf.mako │ │ │ └── text.mako │ │ └── scripts │ │ │ └── AppRun │ └── version │ │ └── 0 │ │ └── 0 │ │ ├── _meta.yml │ │ ├── cmd.yml │ │ ├── config.yml │ │ └── naming conventions.yml ├── raw_docs │ ├── README.ymd │ ├── changelog.mako │ ├── changelog.mmd │ ├── docs │ │ └── 0 │ │ │ └── 0 │ │ │ ├── config.mako │ │ │ ├── index.mako │ │ │ └── structure.ymd │ ├── faq.ymd │ ├── latest-bump.mako │ ├── latest-commit.mako │ ├── latest-commit.mmd │ ├── latest-release-notes.mako │ ├── license.ymd │ ├── notes-to-self.ymd │ └── todo.yml ├── scripts │ ├── ps1 │ │ ├── fmt.ps1 │ │ ├── req.ps1 │ │ └── start.ps1 │ ├── py │ │ ├── cd.py │ │ ├── cfg.py │ │ ├── docs.py │ │ ├── eb.py │ │ ├── exceptions.py │ │ ├── inst_mods │ │ │ └── whine_md_fmt │ │ │ │ ├── main.py │ │ │ │ └── setup.py │ │ ├── main.py │ │ ├── md_vars.py │ │ ├── rn_md.py │ │ ├── schema.py │ │ ├── scripts.py │ │ └── utils.py │ └── sh │ │ └── source.sh ├── site │ ├── 404.html │ ├── _meta.yml │ ├── assets │ │ ├── images │ │ │ ├── favicon.png │ │ │ └── icons │ │ │ │ ├── code.png │ │ │ │ ├── contributors.png │ │ │ │ ├── discord.png │ │ │ │ ├── dl.png │ │ │ │ ├── forks.png │ │ │ │ ├── icon.png │ │ │ │ ├── issues.png │ │ │ │ ├── license.png │ │ │ │ ├── logo-black.png │ │ │ │ ├── logo-black.xcf │ │ │ │ ├── logo.png │ │ │ │ ├── logo.xcf │ │ │ │ ├── read.png │ │ │ │ └── stars.png │ │ ├── javascripts │ │ │ ├── bundle.9c69f0bc.min.js │ │ │ ├── bundle.9c69f0bc.min.js.map │ │ │ ├── lunr │ │ │ │ ├── min │ │ │ │ │ ├── lunr.ar.min.js │ │ │ │ │ ├── lunr.da.min.js │ │ │ │ │ ├── lunr.de.min.js │ │ │ │ │ ├── lunr.du.min.js │ │ │ │ │ ├── lunr.es.min.js │ │ │ │ │ ├── lunr.fi.min.js │ │ │ │ │ ├── lunr.fr.min.js │ │ │ │ │ ├── lunr.hi.min.js │ │ │ │ │ ├── lunr.hu.min.js │ │ │ │ │ ├── lunr.it.min.js │ │ │ │ │ ├── lunr.ja.min.js │ │ │ │ │ ├── lunr.jp.min.js │ │ │ │ │ ├── lunr.multi.min.js │ │ │ │ │ ├── lunr.nl.min.js │ │ │ │ │ ├── lunr.no.min.js │ │ │ │ │ ├── lunr.pt.min.js │ │ │ │ │ ├── lunr.ro.min.js │ │ │ │ │ ├── lunr.ru.min.js │ │ │ │ │ ├── lunr.stemmer.support.min.js │ │ │ │ │ ├── lunr.sv.min.js │ │ │ │ │ ├── lunr.th.min.js │ │ │ │ │ ├── lunr.tr.min.js │ │ │ │ │ ├── lunr.vi.min.js │ │ │ │ │ └── lunr.zh.min.js │ │ │ │ ├── tinyseg.js │ │ │ │ └── wordcut.js │ │ │ └── workers │ │ │ │ ├── search.ecf98df9.min.js │ │ │ │ └── search.ecf98df9.min.js.map │ │ └── stylesheets │ │ │ ├── main.69437709.min.css │ │ │ ├── main.69437709.min.css.map │ │ │ ├── palette.cbb835fc.min.css │ │ │ └── palette.cbb835fc.min.css.map │ ├── changelog │ │ └── index.html │ ├── docs │ │ └── 0 │ │ │ └── 0 │ │ │ ├── api │ │ │ ├── gui │ │ │ │ └── index.html │ │ │ ├── index.html │ │ │ └── src │ │ │ │ ├── base │ │ │ │ └── index.html │ │ │ │ ├── cd │ │ │ │ └── index.html │ │ │ │ ├── cfg │ │ │ │ └── index.html │ │ │ │ ├── cli │ │ │ │ └── index.html │ │ │ │ ├── download │ │ │ │ └── index.html │ │ │ │ ├── exceptions │ │ │ │ └── index.html │ │ │ │ ├── globals │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── init │ │ │ │ └── index.html │ │ │ │ ├── style │ │ │ │ └── index.html │ │ │ │ └── utils │ │ │ │ └── index.html │ │ │ ├── config │ │ │ └── index.html │ │ │ ├── index.html │ │ │ └── structure │ │ │ └── index.html │ ├── faq │ │ └── index.html │ ├── index.html │ ├── latest-bump │ │ └── index.html │ ├── latest-commit │ │ └── index.html │ ├── latest-release-notes │ │ └── index.html │ ├── license │ │ └── index.html │ ├── notes-to-self │ │ └── index.html │ ├── search │ │ └── search_index.json │ ├── sitemap.xml │ └── sitemap.xml.gz └── vars.yml ├── docs ├── README.md ├── _meta.yml ├── assets │ └── images │ │ └── icons │ │ ├── code.png │ │ ├── contributors.png │ │ ├── discord.png │ │ ├── dl.png │ │ ├── forks.png │ │ ├── icon.png │ │ ├── issues.png │ │ ├── license.png │ │ ├── logo-black.png │ │ ├── logo-black.xcf │ │ ├── logo.png │ │ ├── logo.xcf │ │ ├── read.png │ │ └── stars.png ├── changelog.md ├── docs │ └── 0 │ │ └── 0 │ │ ├── api │ │ ├── gui.md │ │ ├── index.md │ │ ├── src.md │ │ └── src │ │ │ ├── base.md │ │ │ ├── cd.md │ │ │ ├── cfg.md │ │ │ ├── cli.md │ │ │ ├── download.md │ │ │ ├── exceptions.md │ │ │ ├── globals.md │ │ │ ├── init.md │ │ │ ├── style.md │ │ │ └── utils.md │ │ ├── config.md │ │ ├── index.md │ │ └── structure.md ├── faq.md ├── latest-bump.md ├── latest-commit.md ├── latest-release-notes.md ├── license.md └── notes-to-self.md ├── mkdocs.yml ├── package.json ├── requirements.txt ├── source.ps1 ├── source.sh ├── ura ├── __init__.py ├── gui.py ├── gui │ ├── assets │ │ └── images │ │ │ ├── info.svg │ │ │ └── settings.svg │ ├── index.html │ ├── loading.html │ ├── main.js │ ├── preload.js │ ├── renderer.js │ └── style.css └── src │ ├── __init__.py │ ├── __main__.py │ ├── base.py │ ├── cd.py │ ├── cf_tpl.mp │ ├── cfg.py │ ├── cli.py │ ├── cmd.mp │ ├── download.py │ ├── exceptions.py │ ├── globals.py │ ├── hc.yml │ ├── init.py │ ├── style.py │ └── utils.py └── version.yml /.github/workflows/latest bump.yml: -------------------------------------------------------------------------------- 1 | name: Latest Bump Comment 2 | 3 | on: 4 | push: 5 | paths: 6 | - version.yml 7 | workflow_dispatch: 8 | 9 | jobs: 10 | Comment: 11 | name: Comment 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@master 16 | - id: get-comment-body 17 | run: | 18 | body=$(cat "docs/latest-bump.md") 19 | body="${body//'%'/'%25'}" 20 | body="${body//$'\n'/'%0A'}" 21 | body="${body//$'\r'/'%0D'}" 22 | echo ::set-output name=body::$body 23 | - name: Create commit comment 24 | uses: peter-evans/commit-comment@v2 25 | with: 26 | body: ${{ steps.get-comment-body.outputs.body }} -------------------------------------------------------------------------------- /.github/workflows/latest commit comment.yml: -------------------------------------------------------------------------------- 1 | name: Latest Commit Comment 2 | 3 | on: 4 | push: 5 | paths: 6 | - dev/raw_docs/latest-commit.mmd 7 | workflow_dispatch: 8 | 9 | jobs: 10 | Comment: 11 | name: Comment 12 | runs-on: ubuntu-latest 13 | steps: 14 | - name: Checkout 15 | uses: actions/checkout@master 16 | - id: get-comment-body 17 | run: | 18 | body=$(cat "docs/latest-commit.md") 19 | body="${body//'%'/'%25'}" 20 | body="${body//$'\n'/'%0A'}" 21 | body="${body//$'\r'/'%0D'}" 22 | echo ::set-output name=body::$body 23 | - name: Create commit comment 24 | uses: peter-evans/commit-comment@v2 25 | with: 26 | body: ${{ steps.get-comment-body.outputs.body }} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # User-defined Ignored Folders 2 | .history/ 3 | node_modules/ 4 | squashfs-root/ 5 | **/tmp/ 6 | 7 | # User-defined Ignored Files 8 | *.bak.* 9 | ura.yml 10 | yarn.lock 11 | yarn-error.log 12 | **/*.bak.* 13 | **/t[0-9]*.* 14 | **/*.AppImage 15 | 16 | # Byte-compiled / optimized / DLL files 17 | **/__pycache__/ 18 | *.py[cod] 19 | *$py.class 20 | 21 | # C extensions 22 | *.so 23 | 24 | # Distribution / packaging 25 | .Python 26 | build/ 27 | develop-eggs/ 28 | dist/ 29 | downloads/ 30 | eggs/ 31 | .eggs/ 32 | lib/ 33 | lib64/ 34 | parts/ 35 | sdist/ 36 | var/ 37 | wheels/ 38 | share/python-wheels/ 39 | *.egg-info/ 40 | .installed.cfg 41 | *.egg 42 | MANIFEST 43 | 44 | # PyInstaller 45 | # Usually these files are written by a python script from a template 46 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 47 | *.manifest 48 | *.spec 49 | 50 | # Installer logs 51 | pip-log.txt 52 | pip-delete-this-directory.txt 53 | 54 | # Unit test / coverage reports 55 | htmlcov/ 56 | .tox/ 57 | .nox/ 58 | .coverage 59 | .coverage.* 60 | .cache 61 | nosetests.xml 62 | coverage.xml 63 | *.cover 64 | *.py,cover 65 | .hypothesis/ 66 | .pytest_cache/ 67 | cover/ 68 | 69 | # Translations 70 | *.mo 71 | *.pot 72 | 73 | # Django stuff: 74 | *.log 75 | local_settings.py 76 | db.sqlite3 77 | db.sqlite3-journal 78 | 79 | # Flask stuff: 80 | instance/ 81 | .webassets-cache 82 | 83 | # Scrapy stuff: 84 | .scrapy 85 | 86 | # Sphinx documentation 87 | docs/_build/ 88 | 89 | # PyBuilder 90 | .pybuilder/ 91 | target/ 92 | 93 | # Jupyter Notebook 94 | .ipynb_checkpoints 95 | 96 | # IPython 97 | profile_default/ 98 | ipython_config.py 99 | 100 | # pyenv 101 | # For a library or package, you might want to ignore these files since the code is 102 | # intended to run in multiple environments; otherwise, check them in: 103 | # .python-version 104 | 105 | # pipenv 106 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 107 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 108 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 109 | # install all needed dependencies. 110 | #Pipfile.lock 111 | 112 | # poetry 113 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 114 | # This is especially recommended for binary packages to ensure reproducibility, and is more 115 | # commonly ignored for libraries. 116 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 117 | #poetry.lock 118 | 119 | # pdm 120 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 121 | #pdm.lock 122 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 123 | # in version control. 124 | # https://pdm.fming.dev/#use-with-ide 125 | .pdm.toml 126 | 127 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 128 | __pypackages__/ 129 | 130 | # Celery stuff 131 | celerybeat-schedule 132 | celerybeat.pid 133 | 134 | # SageMath parsed files 135 | *.sage.py 136 | 137 | # Environments 138 | .env 139 | .venv 140 | env/ 141 | venv/ 142 | ENV/ 143 | env.bak/ 144 | venv.bak/ 145 | pyenv/ 146 | 147 | # Spyder project settings 148 | .spyderproject 149 | .spyproject 150 | 151 | # Rope project settings 152 | .ropeproject 153 | 154 | # mypy 155 | .mypy_cache/ 156 | .dmypy.json 157 | dmypy.json 158 | 159 | # Pyre type checker 160 | .pyre/ 161 | 162 | # pytype static type analyzer 163 | .pytype/ 164 | 165 | # Cython debug symbols 166 | cython_debug/ -------------------------------------------------------------------------------- /.markdownlint.yml: -------------------------------------------------------------------------------- 1 | MD004: 2 | - asterisk 3 | - dash 4 | MD007: 5 | indent: 4 6 | MD013: false 7 | MD033: false -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "python.defaultInterpreterPath": "./pyenv/bin/python", 3 | "python.languageServer": "Pylance", 4 | "autoDocstring.customTemplatePath": "dev/constants/tpl/autodoc.mustache", 5 | "vscode-yaml-sort.useCustomSortRecursively": true, 6 | "yaml.schemas": { 7 | "https://json.schemastore.org/yamllint.json": "file:///home/whine/whi_ne/3/projects/personal/tools/urasunday/.markdownlint.yml" 8 | }, 9 | // "vscode-yaml-sort.customSortKeywords_1": [ 10 | // "phrase", 11 | // "description", 12 | // "spec", 13 | // "link" 14 | // ], 15 | } -------------------------------------------------------------------------------- /dev/constants/dictionary.txt: -------------------------------------------------------------------------------- 1 | Hyaku 2 | bprv 3 | pdoc 4 | vlir 5 | traceback 6 | Mistilteinn 7 | urasunday 8 | cholder 9 | Mysid 10 | Codacy 11 | Wakatime 12 | shellcheck 13 | whinee 14 | MangDL 15 | YAMHL 16 | NEET 17 | animanga 18 | niet 19 | CFLOP 20 | kwargs 21 | builtins 22 | dnrp 23 | bruv 24 | mkdocs 25 | mdformat 26 | shfmt 27 | str_representer 28 | squashfs 29 | -------------------------------------------------------------------------------- /dev/constants/req.txt: -------------------------------------------------------------------------------- 1 | black 2 | isort 3 | mako 4 | mdformat 5 | mdformat-frontmatter 6 | mdformat-footnote 7 | mdformat-gfm 8 | mdformat-shfmt 9 | mkdocs 10 | mkdocs-material 11 | mkdocs-minify-plugin 12 | mkdocs-redirects 13 | msgpack 14 | niet 15 | pdoc3 16 | python-frontmatter -------------------------------------------------------------------------------- /dev/constants/tpl/autodoc.mustache: -------------------------------------------------------------------------------- 1 | {{! Google Docstring Template }} 2 | {{summaryPlaceholder}} 3 | 4 | {{#parametersExist}} 5 | 6 | Args: 7 | {{#args}} 8 | - {{var}} (`{{typePlaceholder}}`): {{descriptionPlaceholder}} 9 | {{/args}} 10 | {{#kwargs}} 11 | - {{var}} (`{{typePlaceholder}}`, optional): {{descriptionPlaceholder}}. Defaults to `{{&default}}`. 12 | {{/kwargs}} 13 | {{/parametersExist}} 14 | {{#exceptionsExist}} 15 | 16 | Raises: 17 | {{#exceptions}} 18 | - `{{type}}`: {{descriptionPlaceholder}} 19 | {{/exceptions}} 20 | {{/exceptionsExist}} 21 | {{#returnsExist}} 22 | 23 | Returns: 24 | {{#returns}} 25 | `{{typePlaceholder}`}: {{descriptionPlaceholder}} 26 | {{/returns}} 27 | {{/returnsExist}} 28 | {{#yieldsExist}} 29 | 30 | Yields: 31 | {{#yields}} 32 | `{{typePlaceholder}}`: {{descriptionPlaceholder}} 33 | {{/yields}} 34 | {{/yieldsExist}} -------------------------------------------------------------------------------- /dev/constants/tpl/pdoc/_lunr_search.inc.mako: -------------------------------------------------------------------------------- 1 |
5 | 6 | 7 | 21 | 51 | -------------------------------------------------------------------------------- /dev/constants/tpl/pdoc/config.mako: -------------------------------------------------------------------------------- 1 | <%! 2 | # Template configuration. Copy over in your template directory 3 | # (used with `--template-dir`) and adapt as necessary. 4 | # Note, defaults are loaded from this distribution file, so your 5 | # config.mako only needs to contain values you want overridden. 6 | # You can also run pdoc with `--config KEY=VALUE` to override 7 | # individual values. 8 | 9 | html_lang = 'en' 10 | show_inherited_members = False 11 | extract_module_toc_into_sidebar = True 12 | list_class_variables_in_index = True 13 | sort_identifiers = True 14 | show_type_annotations = True 15 | 16 | # Show collapsed source code block next to each item. 17 | # Disabling this can improve rendering speed of large modules. 18 | show_source_code = True 19 | 20 | # If set, format links to objects in online source code repository 21 | # according to this template. Supported keywords for interpolation 22 | # are: commit, path, start_line, end_line. 23 | #git_link_template = 'https://github.com/USER/PROJECT/blob/{commit}/{path}#L{start_line}-L{end_line}' 24 | #git_link_template = 'https://gitlab.com/USER/PROJECT/blob/{commit}/{path}#L{start_line}-L{end_line}' 25 | #git_link_template = 'https://bitbucket.org/USER/PROJECT/src/{commit}/{path}#lines-{start_line}:{end_line}' 26 | #git_link_template = 'https://CGIT_HOSTNAME/PROJECT/tree/{path}?id={commit}#n{start-line}' 27 | git_link_template = None 28 | 29 | # A prefix to use for every HTML hyperlink in the generated documentation. 30 | # No prefix results in all links being relative. 31 | link_prefix = '' 32 | 33 | # Enable syntax highlighting for code/source blocks by including Highlight.js 34 | syntax_highlighting = True 35 | 36 | # Set the style keyword such as 'atom-one-light' or 'github-gist' 37 | # Options: https://github.com/highlightjs/highlight.js/tree/master/src/styles 38 | # Demo: https://highlightjs.org/static/demo/ 39 | hljs_style = 'github' 40 | 41 | # If set, insert Google Analytics tracking code. Value is GA 42 | # tracking id (UA-XXXXXX-Y). 43 | google_analytics = '' 44 | 45 | # If set, insert Google Custom Search search bar widget above the sidebar index. 46 | # The whitespace-separated tokens represent arbitrary extra queries (at least one 47 | # must match) passed to regular Google search. Example: 48 | #google_search_query = 'inurl:github.com/USER/PROJECT site:PROJECT.github.io site:PROJECT.website' 49 | google_search_query = '' 50 | 51 | # Enable offline search using Lunr.js. For explanation of 'fuzziness' parameter, which is 52 | # added to every query word, see: https://lunrjs.com/guides/searching.html#fuzzy-matches 53 | # If 'index_docstrings' is False, a shorter index is built, indexing only 54 | # the full object reference names. 55 | #lunr_search = {'fuzziness': 1, 'index_docstrings': True} 56 | lunr_search = None 57 | 58 | # If set, render LaTeX math syntax within \(...\) (inline equations), 59 | # or within \[...\] or $$...$$ or `.. math::` (block equations) 60 | # as nicely-formatted math formulas using MathJax. 61 | # Note: in Python docstrings, either all backslashes need to be escaped (\\) 62 | # or you need to use raw r-strings. 63 | latex_math = False 64 | %> 65 | -------------------------------------------------------------------------------- /dev/constants/tpl/pdoc/credits.mako: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyaku-dl/urasunday/2e47823cedb62a6c2fb2aca356b60c19e320c20b/dev/constants/tpl/pdoc/credits.mako -------------------------------------------------------------------------------- /dev/constants/tpl/pdoc/head.mako: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyaku-dl/urasunday/2e47823cedb62a6c2fb2aca356b60c19e320c20b/dev/constants/tpl/pdoc/head.mako -------------------------------------------------------------------------------- /dev/constants/tpl/pdoc/logo.mako: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hyaku-dl/urasunday/2e47823cedb62a6c2fb2aca356b60c19e320c20b/dev/constants/tpl/pdoc/logo.mako -------------------------------------------------------------------------------- /dev/constants/tpl/pdoc/text.mako: -------------------------------------------------------------------------------- 1 | ## Define mini-templates for each portion of the doco. 2 | 3 | <%def name="h(hs, s, link=None)" buffered="True"> 4 | <% 5 | if link is None: 6 | link = s 7 | header = f'{s}' 8 | match hs: 9 | case 4: 10 | hs = 3 11 | header = f'{header}' 12 | case 5: 13 | hs = 3 14 | header = f'{header}' 15 | case 6: 16 | hs = 3 17 | case _: 18 | header = f'{header}' 19 | header = f'Enter an urasunday chapter URL:
44 | 50 | 51 |Please wait...
62 | 63 |Please wait...
97 |