From 8edc2947d83d325920d72e04ee3b1727466d422d Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Mon, 25 Sep 2023 21:04:28 +0700 Subject: [PATCH 01/22] feat(docs): Add generalized documentation Earthly commands and builders --- .config/dictionaries/project.dic | 8 + .gitignore | 6 + .markdownlint-cli2.jsonc | 30 + .markdownlint.jsonc | 246 ++++ README.md | 2 +- cspell.json | 34 + earthly/docs/Earthfile | 175 +++ earthly/docs/README.md | 11 + earthly/docs/docker-compose.kroki.yml | 61 + earthly/docs/output/kroki/docker-compose.yml | 60 + earthly/docs/poetry.lock | 1297 ++++++++++++++++++ earthly/docs/pyproject.toml | 36 + earthly/docs/sample/mkdocs.yml | 4 + earthly/docs/sample/src/index.md | 3 + earthly/docs/start.sh | 3 + 15 files changed, 1975 insertions(+), 1 deletion(-) create mode 100644 .config/dictionaries/project.dic create mode 100644 .markdownlint-cli2.jsonc create mode 100644 .markdownlint.jsonc create mode 100644 cspell.json create mode 100644 earthly/docs/Earthfile create mode 100644 earthly/docs/README.md create mode 100644 earthly/docs/docker-compose.kroki.yml create mode 100644 earthly/docs/output/kroki/docker-compose.yml create mode 100644 earthly/docs/poetry.lock create mode 100644 earthly/docs/pyproject.toml create mode 100644 earthly/docs/sample/mkdocs.yml create mode 100644 earthly/docs/sample/src/index.md create mode 100755 earthly/docs/start.sh diff --git a/.config/dictionaries/project.dic b/.config/dictionaries/project.dic new file mode 100644 index 000000000..737f4939b --- /dev/null +++ b/.config/dictionaries/project.dic @@ -0,0 +1,8 @@ +dind +glightbox +graphviz +Kroki +mdlint +mkdocs +PYTHONDONTWRITEBYTECODE +WORKDIR diff --git a/.gitignore b/.gitignore index f3f92a612..0e64f237b 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,9 @@ lefthook.yml .conform.yaml treefmt.toml + +# Developer only files +/.vscode + +# Built docs +/earthly/docs/sample/site \ No newline at end of file diff --git a/.markdownlint-cli2.jsonc b/.markdownlint-cli2.jsonc new file mode 100644 index 000000000..361242c04 --- /dev/null +++ b/.markdownlint-cli2.jsonc @@ -0,0 +1,30 @@ +// Markdown Lint Configuration. +// Do not change markdown lint configuration in individual files, +// except to disable rules which are causing false positives. +{ + // Configures the markdownlint-cli2 tool only. + // For common markdownlint configuration which this tool also uses, see: ./.markdownlint.jsonc + "globs": [ + "**/*.md" + ], + "ignores": [ + "LICENSE-APACHE.md", + "LICENSE-MIT.md" + ], + // Set standard config options in `/.markdownlint.jsonc` + "config": { + "max-one-sentence-per-line": { + "ignored__words": [ + "???+", + "???", + "!!!+", + "!!!" + ] + } + }, + "customRules": [ + // For local development, this custom rule needs to be installed with: + // `npm install --no-package-lock --production markdownlint-rule-max-one-sentence-per-line` + "markdownlint-rule-max-one-sentence-per-line" + ] +} \ No newline at end of file diff --git a/.markdownlint.jsonc b/.markdownlint.jsonc new file mode 100644 index 000000000..b58ef2a4d --- /dev/null +++ b/.markdownlint.jsonc @@ -0,0 +1,246 @@ +{ + // markdownlint JSON(C) configuration for Catalyst Standards + // Do not individually set markdown lint rules in documents. + // It is permissable to disable a rule in a document if it is a false positive. + // Keep the scope of the lint disable to as small as possible. + // See: https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md + // Default state for all rules + "default": true, + // Path to configuration file to extend + "extends": null, + // MD001/heading-increment/header-increment - Heading levels should only increment by one level at a time + "MD001": true, + // MD003/heading-style/header-style - Heading style + "MD003": { + // Heading style + "style": "atx" + }, + // MD004/ul-style - Unordered list style + "MD004": { + // List style + "style": "asterisk" + }, + // MD005/list-indent - Inconsistent indentation for list items at the same level + "MD005": true, + // MD006/ul-start-left - Consider starting bulleted lists at the beginning of the line + "MD006": true, + // MD007/ul-indent - Unordered list indentation + "MD007": { + // Spaces for indent + "indent": 2, + // Whether to indent the first level of the list + "start_indented": false, + // Spaces for first level indent (when start_indented is set) + "start_indent": 2 + }, + // MD009/no-trailing-spaces - Trailing spaces + "MD009": { + // Spaces for line break + "br_spaces": 2, + // Allow spaces for empty lines in list items + "list_item_empty_lines": false, + // Include unnecessary breaks + "strict": false + }, + // MD010/no-hard-tabs - Hard tabs + "MD010": { + // Include code blocks + "code_blocks": true, + // Fenced code languages to ignore + "ignore_code_languages": [], + // Number of spaces for each hard tab + "spaces_per_tab": 1 + }, + // MD011/no-reversed-links - Reversed link syntax + "MD011": true, + // MD012/no-multiple-blanks - Multiple consecutive blank lines + "MD012": { + // Consecutive blank lines + "maximum": 1 + }, + // MD013/line-length - Line length + // Lines shouldn't be bigger than this. + // Use 1 sentence per line and they should never need to be. + // If 1 sentence is bigger than this rewrite it, its too long. + // If its complaining about embedded HTML, reformat it, or wrap it with an ignore. + // See: https://sembr.org/ for guidance on line wrapping. + "MD013": { + // Number of characters + // Sentences shouldn't have more than 25 words, this line length is + // approximately large enough for that. If your single sentence is + // bigger than this, consider rewording it, rather than line breaking it. + "line_length": 132, + // Number of characters for headings + "heading_line_length": 132, + // Number of characters for code blocks + "code_block_line_length": 132, + // Include code blocks + "code_blocks": true, + // Include tables + "tables": false, + // Include headings + "headings": true, + // Strict length checking + "strict": false, + // Stern length checking + "stern": true + }, + // MD014/commands-show-output - Dollar signs used before commands without showing output + "MD014": true, + // MD018/no-missing-space-atx - No space after hash on atx style heading + "MD018": true, + // MD019/no-multiple-space-atx - Multiple spaces after hash on atx style heading + "MD019": true, + // MD020/no-missing-space-closed-atx - No space inside hashes on closed atx style heading + "MD020": true, + // MD021/no-multiple-space-closed-atx - Multiple spaces inside hashes on closed atx style heading + "MD021": true, + // MD022/blanks-around-headings/blanks-around-headers - Headings should be surrounded by blank lines + "MD022": { + // Blank lines above heading + "lines_above": 1, + // Blank lines below heading + "lines_below": 1 + }, + // MD023/heading-start-left/header-start-left - Headings must start at the beginning of the line + "MD023": true, + // MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the same content + "MD024": { + // Only check sibling headings + "siblings_only": true + }, + // MD025/single-title/single-h1 - Multiple top-level headings in the same document + "MD025": { + // Heading level + "level": 1, + // RegExp for matching title in front matter + "front_matter_title": "^\\s*title\\s*[:=]" + }, + // MD026/no-trailing-punctuation - Trailing punctuation in heading + "MD026": { + // Punctuation characters + "punctuation": ".,;:!。,;:!" + }, + // MD027/no-multiple-space-blockquote - Multiple spaces after blockquote symbol + "MD027": true, + // MD028/no-blanks-blockquote - Blank line inside blockquote + "MD028": true, + // MD029/ol-prefix - Ordered list item prefix + "MD029": { + // List style + "style": "one_or_ordered" + }, + // MD030/list-marker-space - Spaces after list markers + "MD030": { + // Spaces for single-line unordered list items + "ul_single": 1, + // Spaces for single-line ordered list items + "ol_single": 1, + // Spaces for multi-line unordered list items + "ul_multi": 1, + // Spaces for multi-line ordered list items + "ol_multi": 1 + }, + // MD031/blanks-around-fences - Fenced code blocks should be surrounded by blank lines + "MD031": { + // Include list items + "list_items": true + }, + // MD032/blanks-around-lists - Lists should be surrounded by blank lines + "MD032": true, + // MD033/no-inline-html - Inline HTML + "MD033": { + // Allowed elements + "allowed_elements": [] + }, + // MD034/no-bare-urls - Bare URL used + "MD034": true, + // MD035/hr-style - Horizontal rule style + "MD035": { + // Horizontal rule style + "style": "---" + }, + // MD036/no-emphasis-as-heading/no-emphasis-as-header - Emphasis used instead of a heading + "MD036": { + // Punctuation characters + "punctuation": ".,;:!?。,;:!?" + }, + // MD037/no-space-in-emphasis - Spaces inside emphasis markers + "MD037": true, + // MD038/no-space-in-code - Spaces inside code span elements + "MD038": true, + // MD039/no-space-in-links - Spaces inside link text + "MD039": true, + // MD040/fenced-code-language - Fenced code blocks should have a language specified + "MD040": { + // List of languages + "allowed_languages": [], + // Require language only + "language_only": false + }, + // MD041/first-line-heading/first-line-h1 - First line in a file should be a top-level heading + "MD041": { + // Heading level + "level": 1, + // RegExp for matching title in front matter + "front_matter_title": "^\\s*title\\s*[:=]" + }, + // MD042/no-empty-links - No empty links + "MD042": true, + // MD043/required-headings/required-headers - Required heading structure + "MD043": { + // List of headings + "headings": [ + "+" + ], + // List of headings + "headers": [], + // Match case of headings + "match_case": false + }, + // MD044/proper-names - Proper names should have the correct capitalization + "MD044": { + // List of proper names + "names": [], + // Include code blocks + "code_blocks": true, + // Include HTML elements + "html_elements": true + }, + // MD045/no-alt-text - Images should have alternate text (alt text) + "MD045": true, + // MD046/code-block-style - Code block style + // Code Blocks are used by Admonitions and need to be indented. + // Actual code should be fenced, this can;t be enforced by mdlint. + "MD046": { + // Block style + "style": "consistent" + }, + // MD047/single-trailing-newline - Files should end with a single newline character + "MD047": true, + // Code fences should be backtick style. + "MD048": { + "style": "backtick" + }, + // MD049/emphasis-style - Emphasis style should be consistent + "MD049": { + // Emphasis style + "style": "asterisk" + }, + // MD050/strong-style - Strong style should be consistent + "MD050": { + // Strong style + "style": "asterisk" + }, + // MD051/link-fragments - Link fragments should be valid + "MD051": true, + // MD052/reference-links-images - Reference links and images should use a label that is defined + "MD052": true, + // MD053/link-image-reference-definitions - Link and image reference definitions should be needed + "MD053": { + // Ignored definitions + "ignored_definitions": [ + "//" + ] + } +} \ No newline at end of file diff --git a/README.md b/README.md index 95387dd84..fd8521496 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # catalyst-ci -Common CI workflows for Project Catalyst. \ No newline at end of file +Common CI workflows for Project Catalyst. diff --git a/cspell.json b/cspell.json new file mode 100644 index 000000000..f2b9205cb --- /dev/null +++ b/cspell.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/main/cspell.schema.json", + "version": "0.2", + "enabled": true, + "language": "en,en-US", + "useGitignore": true, + "dictionaryDefinitions": [ + { + "name": "project-words", + "path": ".config/dictionaries/project.dic", + "description": "Words used in this project.", + "addWords": true + } + ], + "dictionaries": [ + "project-words", + "companies", + "cryptocurrencies", + "cryptography", + "networkingTerms", + "rust", + "softwareTerms", + "python", + "bash", + "typescript", + "html", + "css", + "golang" + ], + "ignorePaths": [ + ".config/dictionaries", + ".github" + ] +} \ No newline at end of file diff --git a/earthly/docs/Earthfile b/earthly/docs/Earthfile new file mode 100644 index 000000000..6ce474b3d --- /dev/null +++ b/earthly/docs/Earthfile @@ -0,0 +1,175 @@ +VERSION 0.7 +FROM python:3.11-bullseye + +mkdocs-material: + # Derived from official mkdocs-material docker container. + # https://github.com/squidfunk/mkdocs-material/blob/master/Dockerfile + + # What version is this + ARG tag=latest + ARG registry + + # Installation tmp directory + WORKDIR /poetry + + # Environment Variables + ENV POETRY_HOME=/poetry + ENV PATH=$POETRY_HOME/bin:$PATH + ENV PYTHONDONTWRITEBYTECODE=1 + + # Install extra debian packages we will need to support plugins. + RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + graphviz + + # Install Poetry to manage python. + RUN curl -sSL https://install.python-poetry.org | python3 - + RUN poetry config installer.max-workers 10 + + # Copy our dependencies. + COPY pyproject.toml . + COPY poetry.lock . + COPY start.sh . + + # Install it all with poetry + RUN poetry install --only main --no-root + + # Trust directory, required for git >= 2.35.2 + RUN git config --global --add safe.directory /docs &&\ + git config --global --add safe.directory /site + + # Carry the Kroki Docker Compose with this image. + WORKDIR /kroki + COPY docker-compose.kroki.yml ./docker-compose.yml + + # Set working directory + WORKDIR /docs + + # Expose MkDocs development server port + EXPOSE 8000 + + # Start development server by default + ENTRYPOINT ["/poetry/start.sh"] + CMD ["serve", "--dev-addr=0.0.0.0:8000"] + + # Finish building the container, and publish to the registry + IF [ "$registry" = "" ] + ARG registry_final=$registry + ELSE + ARG registry_final=${registry}/ + END + + SAVE ARTIFACT /kroki/docker-compose.yml /kroki/docker-compose.yml + + SAVE IMAGE --push ${registry_final}mkdocs-material:${tag} + +MKDOCS_BUILD: + COMMAND + ARG src + ARG dest + + # Ensure the mkdocs tools are built and up-to-date. + BUILD +mkdocs-material + + FROM earthly/dind:alpine + WORKDIR /build + COPY +mkdocs-material/kroki/docker-compose.yml . + + # Copy the src + COPY --dir $src /docs + + # Docs need Kroki to build diagrams, so make sure its running. + WITH DOCKER --compose docker-compose.yml --load mkdocs=+mkdocs-material + RUN docker run --rm -v /docs:/docs --network=default_mkdocs mkdocs build + END + + SAVE ARTIFACT /docs/site AS LOCAL $dest + +MKDOCS_SERVE: + COMMAND + ARG src + ARG port + + # Ensure the mkdocs tools are built and up-to-date. + BUILD +mkdocs-material + + FROM earthly/dind:alpine + WORKDIR /build + COPY +mkdocs-material/kroki/docker-compose.yml . + + # Copy the src + COPY --dir $src /docs + + # Docs need Kroki to build diagrams, so make sure its running. + WITH DOCKER --compose docker-compose.yml --load mkdocs=+mkdocs-material + RUN --privileged docker run --rm -p $port:8000 -v /docs:/docs --network=default_mkdocs mkdocs + END + +MDLINT: + # Linting is done with MarkdownLint CLI2 + # See: https://github.com/DavidAnson/markdownlint-cli2 + COMMAND + + ARG fix + ARG src + + RUN --no-cache echo SRC: $src + + # cspell: words davidanson + WITH DOCKER --pull davidanson/markdownlint-cli2-rules:next + #RUN --no-cache docker run --rm -v $src:/workdir --entrypoint sh davidanson/markdownlint-cli2-rules:next -c "ls -al; ls -al docs" + RUN --no-cache docker run --rm -v $src:/workdir davidanson/markdownlint-cli2-rules:next "**/*.md" --config .markdownlint-cli2.jsonc $fix + END + +CSPELL: + # Spell checking all code is done with cspell + # See: cspell.org + COMMAND + + ARG src + + WITH DOCKER --pull ghcr.io/streetsidesoftware/cspell:latest + RUN --no-cache docker run --rm -v $src:/workdir ghcr.io/streetsidesoftware/cspell:latest lint . + END + + +build-test: + # Test of building docs. + # Run with `earthly -P +build-test` + LOCALLY + + DO +MKDOCS_BUILD --src=./sample --dest=./output/site + +serve-test: + # Need a better answer. Can't export the port so we can't see the served docs. + LOCALLY + + DO +MKDOCS_SERVE --src=./sample --port=10080 + +mdlint-test: + # Test Markdown lint checks. + # Run with `earthly -P +mdlint-test + LOCALLY + + ARG src=$(echo ${PWD}/../../) + + DO +MDLINT --src=${src} + +cspell-test: + # Test spellcheck lint checks. + # Run with `earthly -P +cspell-test + LOCALLY + + DO +CSPELL --src=$(echo ${PWD}/../../) + + +#src: +# FROM +poetry +# +# COPY --dir src mkdocs.yml . + +#build: +# FROM +src +# +# RUN poetry run mkdocs build +# SAVE ARTIFACT site \ No newline at end of file diff --git a/earthly/docs/README.md b/earthly/docs/README.md new file mode 100644 index 000000000..0e7064e02 --- /dev/null +++ b/earthly/docs/README.md @@ -0,0 +1,11 @@ +# Catalyst SRE Documentation + +This directory contains the source code for the Catalyst SRE documentation. + +## Build + +To build and save the final artifact locally: + +```bash +earthly --artifact +build/site . +``` diff --git a/earthly/docs/docker-compose.kroki.yml b/earthly/docs/docker-compose.kroki.yml new file mode 100644 index 000000000..776da6c32 --- /dev/null +++ b/earthly/docs/docker-compose.kroki.yml @@ -0,0 +1,61 @@ +version: "3" + +# ############################################################################## +# SERVICE DEFINITIONS + +services: + + # Kroki Service for building both static and live docs against. + kroki: + image: yuzutech/kroki + depends_on: + - blockdiag + - mermaid + - bpmn + - excalidraw + - wireviz + environment: + - KROKI_BLOCKDIAG_HOST=blockdiag + - KROKI_MERMAID_HOST=mermaid + - KROKI_BPMN_HOST=bpmn + - KROKI_EXCALIDRAW_HOST=excalidraw + - KROKI_WIREVIZ_HOST=wireviz + expose: + - "8000" + #ports: + # - "8000:8000" + networks: + - mkdocs + blockdiag: + image: yuzutech/kroki-blockdiag + expose: + - "8001" + networks: + - mkdocs + mermaid: + image: yuzutech/kroki-mermaid + expose: + - "8002" + networks: + - mkdocs + bpmn: + image: yuzutech/kroki-bpmn + expose: + - "8003" + networks: + - mkdocs + excalidraw: + image: yuzutech/kroki-excalidraw + expose: + - "8004" + networks: + - mkdocs + wireviz: + image: yuzutech/kroki-wireviz + ports: + - "8006" + networks: + - mkdocs + +networks: + mkdocs: \ No newline at end of file diff --git a/earthly/docs/output/kroki/docker-compose.yml b/earthly/docs/output/kroki/docker-compose.yml new file mode 100644 index 000000000..561a681fa --- /dev/null +++ b/earthly/docs/output/kroki/docker-compose.yml @@ -0,0 +1,60 @@ +version: "3" + +# ############################################################################## +# SERVICE DEFINITIONS + +services: + + # Kroki Service for building both static and live docs against. + kroki: + image: yuzutech/kroki + depends_on: + - blockdiag + - mermaid + - bpmn + - excalidraw + environment: + - KROKI_BLOCKDIAG_HOST=blockdiag + - KROKI_MERMAID_HOST=mermaid + - KROKI_BPMN_HOST=bpmn + - KROKI_EXCALIDRAW_HOST=excalidraw + - KROKI_WIREVIZ_HOST=wireviz + expose: + - "8000" + #ports: + # - "8000:8000" + networks: + - mkdocs + blockdiag: + image: yuzutech/kroki-blockdiag + expose: + - "8001" + networks: + - mkdocs + mermaid: + image: yuzutech/kroki-mermaid + expose: + - "8002" + networks: + - mkdocs + bpmn: + image: yuzutech/kroki-bpmn + expose: + - "8003" + networks: + - mkdocs + excalidraw: + image: yuzutech/kroki-excalidraw + expose: + - "8004" + networks: + - mkdocs + wireviz: + image: yuzutech/kroki-wireviz + ports: + - "8006" + networks: + - mkdocs + +networks: + mkdocs: \ No newline at end of file diff --git a/earthly/docs/poetry.lock b/earthly/docs/poetry.lock new file mode 100644 index 000000000..e459fea42 --- /dev/null +++ b/earthly/docs/poetry.lock @@ -0,0 +1,1297 @@ +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. + +[[package]] +name = "babel" +version = "2.12.1" +description = "Internationalization utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, + {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, +] + +[[package]] +name = "beautifulsoup4" +version = "4.12.2" +description = "Screen-scraping library" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, + {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, +] + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +name = "cairocffi" +version = "1.6.1" +description = "cffi-based cairo bindings for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "cairocffi-1.6.1-py3-none-any.whl", hash = "sha256:aa78ee52b9069d7475eeac457389b6275aa92111895d78fbaa2202a52dac112e"}, + {file = "cairocffi-1.6.1.tar.gz", hash = "sha256:78e6bbe47357640c453d0be929fa49cd05cce2e1286f3d2a1ca9cbda7efdb8b7"}, +] + +[package.dependencies] +cffi = ">=1.1.0" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["flake8", "isort", "numpy", "pikepdf", "pytest"] +xcb = ["xcffib (>=1.4.0)"] + +[[package]] +name = "cairosvg" +version = "2.7.1" +description = "A Simple SVG Converter based on Cairo" +optional = false +python-versions = ">=3.5" +files = [ + {file = "CairoSVG-2.7.1-py3-none-any.whl", hash = "sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b"}, + {file = "CairoSVG-2.7.1.tar.gz", hash = "sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0"}, +] + +[package.dependencies] +cairocffi = "*" +cssselect2 = "*" +defusedxml = "*" +pillow = "*" +tinycss2 = "*" + +[package.extras] +doc = ["sphinx", "sphinx-rtd-theme"] +test = ["flake8", "isort", "pytest"] + +[[package]] +name = "certifi" +version = "2023.7.22" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, +] + +[[package]] +name = "cffi" +version = "1.15.1" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = "*" +files = [ + {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, + {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, + {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, + {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, + {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, + {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, + {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, + {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, + {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, + {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, + {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, + {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, + {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, + {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, + {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, + {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, + {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, + {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, + {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, +] + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "charset-normalizer" +version = "3.2.0" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, + {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "csscompressor" +version = "0.9.5" +description = "A python port of YUI CSS Compressor" +optional = false +python-versions = "*" +files = [ + {file = "csscompressor-0.9.5.tar.gz", hash = "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05"}, +] + +[[package]] +name = "cssselect2" +version = "0.7.0" +description = "CSS selectors for Python ElementTree" +optional = false +python-versions = ">=3.7" +files = [ + {file = "cssselect2-0.7.0-py3-none-any.whl", hash = "sha256:fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969"}, + {file = "cssselect2-0.7.0.tar.gz", hash = "sha256:1ccd984dab89fc68955043aca4e1b03e0cf29cad9880f6e28e3ba7a74b14aa5a"}, +] + +[package.dependencies] +tinycss2 = "*" +webencodings = "*" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["flake8", "isort", "pytest"] + +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] + +[[package]] +name = "ghp-import" +version = "2.1.0" +description = "Copy your docs directly to the gh-pages branch." +optional = false +python-versions = "*" +files = [ + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, +] + +[package.dependencies] +python-dateutil = ">=2.8.1" + +[package.extras] +dev = ["flake8", "markdown", "twine", "wheel"] + +[[package]] +name = "gitdb" +version = "4.0.10" +description = "Git Object Database" +optional = false +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, + {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, +] + +[package.dependencies] +smmap = ">=3.0.1,<6" + +[[package]] +name = "gitpython" +version = "3.1.37" +description = "GitPython is a Python library used to interact with Git repositories" +optional = false +python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.37-py3-none-any.whl", hash = "sha256:5f4c4187de49616d710a77e98ddf17b4782060a1788df441846bddefbb89ab33"}, + {file = "GitPython-3.1.37.tar.gz", hash = "sha256:f9b9ddc0761c125d5780eab2d64be4873fc6817c2899cbcb34b02344bdc7bc54"}, +] + +[package.dependencies] +gitdb = ">=4.0.1,<5" + +[package.extras] +test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mypy", "pre-commit", "pytest", "pytest-cov", "pytest-sugar"] + +[[package]] +name = "htmlmin2" +version = "0.1.13" +description = "An HTML Minifier" +optional = false +python-versions = "*" +files = [ + {file = "htmlmin2-0.1.13-py3-none-any.whl", hash = "sha256:75609f2a42e64f7ce57dbff28a39890363bde9e7e5885db633317efbdf8c79a2"}, +] + +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] + +[[package]] +name = "jinja2" +version = "3.1.2" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "jsmin" +version = "3.0.1" +description = "JavaScript minifier." +optional = false +python-versions = "*" +files = [ + {file = "jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc"}, +] + +[[package]] +name = "lxml" +version = "4.9.3" +description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" +files = [ + {file = "lxml-4.9.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c"}, + {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d"}, + {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef"}, + {file = "lxml-4.9.3-cp27-cp27m-win32.whl", hash = "sha256:2c74524e179f2ad6d2a4f7caf70e2d96639c0954c943ad601a9e146c76408ed7"}, + {file = "lxml-4.9.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4f1026bc732b6a7f96369f7bfe1a4f2290fb34dce00d8644bc3036fb351a4ca1"}, + {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb"}, + {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e"}, + {file = "lxml-4.9.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:42871176e7896d5d45138f6d28751053c711ed4d48d8e30b498da155af39aebd"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ae8b9c6deb1e634ba4f1930eb67ef6e6bf6a44b6eb5ad605642b2d6d5ed9ce3c"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:411007c0d88188d9f621b11d252cce90c4a2d1a49db6c068e3c16422f306eab8"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:cd47b4a0d41d2afa3e58e5bf1f62069255aa2fd6ff5ee41604418ca925911d76"}, + {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e2cb47860da1f7e9a5256254b74ae331687b9672dfa780eed355c4c9c3dbd23"}, + {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1247694b26342a7bf47c02e513d32225ededd18045264d40758abeb3c838a51f"}, + {file = "lxml-4.9.3-cp310-cp310-win32.whl", hash = "sha256:cdb650fc86227eba20de1a29d4b2c1bfe139dc75a0669270033cb2ea3d391b85"}, + {file = "lxml-4.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:97047f0d25cd4bcae81f9ec9dc290ca3e15927c192df17331b53bebe0e3ff96d"}, + {file = "lxml-4.9.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:1f447ea5429b54f9582d4b955f5f1985f278ce5cf169f72eea8afd9502973dd5"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:57d6ba0ca2b0c462f339640d22882acc711de224d769edf29962b09f77129cbf"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9767e79108424fb6c3edf8f81e6730666a50feb01a328f4a016464a5893f835a"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:71c52db65e4b56b8ddc5bb89fb2e66c558ed9d1a74a45ceb7dcb20c191c3df2f"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d73d8ecf8ecf10a3bd007f2192725a34bd62898e8da27eb9d32a58084f93962b"}, + {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0a3d3487f07c1d7f150894c238299934a2a074ef590b583103a45002035be120"}, + {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e28c51fa0ce5674be9f560c6761c1b441631901993f76700b1b30ca6c8378d6"}, + {file = "lxml-4.9.3-cp311-cp311-win32.whl", hash = "sha256:0bfd0767c5c1de2551a120673b72e5d4b628737cb05414f03c3277bf9bed3305"}, + {file = "lxml-4.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:25f32acefac14ef7bd53e4218fe93b804ef6f6b92ffdb4322bb6d49d94cad2bc"}, + {file = "lxml-4.9.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:d3ff32724f98fbbbfa9f49d82852b159e9784d6094983d9a8b7f2ddaebb063d4"}, + {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:48d6ed886b343d11493129e019da91d4039826794a3e3027321c56d9e71505be"}, + {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9a92d3faef50658dd2c5470af249985782bf754c4e18e15afb67d3ab06233f13"}, + {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b4e4bc18382088514ebde9328da057775055940a1f2e18f6ad2d78aa0f3ec5b9"}, + {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fc9b106a1bf918db68619fdcd6d5ad4f972fdd19c01d19bdb6bf63f3589a9ec5"}, + {file = "lxml-4.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d37017287a7adb6ab77e1c5bee9bcf9660f90ff445042b790402a654d2ad81d8"}, + {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56dc1f1ebccc656d1b3ed288f11e27172a01503fc016bcabdcbc0978b19352b7"}, + {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:578695735c5a3f51569810dfebd05dd6f888147a34f0f98d4bb27e92b76e05c2"}, + {file = "lxml-4.9.3-cp35-cp35m-win32.whl", hash = "sha256:704f61ba8c1283c71b16135caf697557f5ecf3e74d9e453233e4771d68a1f42d"}, + {file = "lxml-4.9.3-cp35-cp35m-win_amd64.whl", hash = "sha256:c41bfca0bd3532d53d16fd34d20806d5c2b1ace22a2f2e4c0008570bf2c58833"}, + {file = "lxml-4.9.3-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:64f479d719dc9f4c813ad9bb6b28f8390360660b73b2e4beb4cb0ae7104f1c12"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:dd708cf4ee4408cf46a48b108fb9427bfa00b9b85812a9262b5c668af2533ea5"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c31c7462abdf8f2ac0577d9f05279727e698f97ecbb02f17939ea99ae8daa98"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e3cd95e10c2610c360154afdc2f1480aea394f4a4f1ea0a5eacce49640c9b190"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:4930be26af26ac545c3dffb662521d4e6268352866956672231887d18f0eaab2"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4aec80cde9197340bc353d2768e2a75f5f60bacda2bab72ab1dc499589b3878c"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:14e019fd83b831b2e61baed40cab76222139926b1fb5ed0e79225bc0cae14584"}, + {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0c0850c8b02c298d3c7006b23e98249515ac57430e16a166873fc47a5d549287"}, + {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aca086dc5f9ef98c512bac8efea4483eb84abbf926eaeedf7b91479feb092458"}, + {file = "lxml-4.9.3-cp36-cp36m-win32.whl", hash = "sha256:50baa9c1c47efcaef189f31e3d00d697c6d4afda5c3cde0302d063492ff9b477"}, + {file = "lxml-4.9.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bef4e656f7d98aaa3486d2627e7d2df1157d7e88e7efd43a65aa5dd4714916cf"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:46f409a2d60f634fe550f7133ed30ad5321ae2e6630f13657fb9479506b00601"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4c28a9144688aef80d6ea666c809b4b0e50010a2aca784c97f5e6bf143d9f129"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:141f1d1a9b663c679dc524af3ea1773e618907e96075262726c7612c02b149a4"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:53ace1c1fd5a74ef662f844a0413446c0629d151055340e9893da958a374f70d"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17a753023436a18e27dd7769e798ce302963c236bc4114ceee5b25c18c52c693"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7d298a1bd60c067ea75d9f684f5f3992c9d6766fadbc0bcedd39750bf344c2f4"}, + {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:081d32421db5df44c41b7f08a334a090a545c54ba977e47fd7cc2deece78809a"}, + {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:23eed6d7b1a3336ad92d8e39d4bfe09073c31bfe502f20ca5116b2a334f8ec02"}, + {file = "lxml-4.9.3-cp37-cp37m-win32.whl", hash = "sha256:1509dd12b773c02acd154582088820893109f6ca27ef7291b003d0e81666109f"}, + {file = "lxml-4.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:120fa9349a24c7043854c53cae8cec227e1f79195a7493e09e0c12e29f918e52"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4d2d1edbca80b510443f51afd8496be95529db04a509bc8faee49c7b0fb6d2cc"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8d7e43bd40f65f7d97ad8ef5c9b1778943d02f04febef12def25f7583d19baac"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:71d66ee82e7417828af6ecd7db817913cb0cf9d4e61aa0ac1fde0583d84358db"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:6fc3c450eaa0b56f815c7b62f2b7fba7266c4779adcf1cece9e6deb1de7305ce"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65299ea57d82fb91c7f019300d24050c4ddeb7c5a190e076b5f48a2b43d19c42"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:eadfbbbfb41b44034a4c757fd5d70baccd43296fb894dba0295606a7cf3124aa"}, + {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3e9bdd30efde2b9ccfa9cb5768ba04fe71b018a25ea093379c857c9dad262c40"}, + {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fcdd00edfd0a3001e0181eab3e63bd5c74ad3e67152c84f93f13769a40e073a7"}, + {file = "lxml-4.9.3-cp38-cp38-win32.whl", hash = "sha256:57aba1bbdf450b726d58b2aea5fe47c7875f5afb2c4a23784ed78f19a0462574"}, + {file = "lxml-4.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:92af161ecbdb2883c4593d5ed4815ea71b31fafd7fd05789b23100d081ecac96"}, + {file = "lxml-4.9.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9bb6ad405121241e99a86efff22d3ef469024ce22875a7ae045896ad23ba2340"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8ed74706b26ad100433da4b9d807eae371efaa266ffc3e9191ea436087a9d6a7"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fbf521479bcac1e25a663df882c46a641a9bff6b56dc8b0fafaebd2f66fb231b"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:303bf1edce6ced16bf67a18a1cf8339d0db79577eec5d9a6d4a80f0fb10aa2da"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:5515edd2a6d1a5a70bfcdee23b42ec33425e405c5b351478ab7dc9347228f96e"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:690dafd0b187ed38583a648076865d8c229661ed20e48f2335d68e2cf7dc829d"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6420a005548ad52154c8ceab4a1290ff78d757f9e5cbc68f8c77089acd3c432"}, + {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bb3bb49c7a6ad9d981d734ef7c7193bc349ac338776a0360cc671eaee89bcf69"}, + {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d27be7405547d1f958b60837dc4c1007da90b8b23f54ba1f8b728c78fdb19d50"}, + {file = "lxml-4.9.3-cp39-cp39-win32.whl", hash = "sha256:8df133a2ea5e74eef5e8fc6f19b9e085f758768a16e9877a60aec455ed2609b2"}, + {file = "lxml-4.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:4dd9a263e845a72eacb60d12401e37c616438ea2e5442885f65082c276dfb2b2"}, + {file = "lxml-4.9.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6689a3d7fd13dc687e9102a27e98ef33730ac4fe37795d5036d18b4d527abd35"}, + {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:f6bdac493b949141b733c5345b6ba8f87a226029cbabc7e9e121a413e49441e0"}, + {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3"}, + {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2006f5c8d28dee289f7020f721354362fa304acbaaf9745751ac4006650254b"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:5c245b783db29c4e4fbbbfc9c5a78be496c9fea25517f90606aa1f6b2b3d5f7b"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4fb960a632a49f2f089d522f70496640fdf1218f1243889da3822e0a9f5f3ba7"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:50670615eaf97227d5dc60de2dc99fb134a7130d310d783314e7724bf163f75d"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9719fe17307a9e814580af1f5c6e05ca593b12fb7e44fe62450a5384dbf61b4b"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3331bece23c9ee066e0fb3f96c61322b9e0f54d775fccefff4c38ca488de283a"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:ed667f49b11360951e201453fc3967344d0d0263aa415e1619e85ae7fd17b4e0"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8b77946fd508cbf0fccd8e400a7f71d4ac0e1595812e66025bac475a8e811694"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e4da8ca0c0c0aea88fd46be8e44bd49716772358d648cce45fe387f7b92374a7"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fe4bda6bd4340caa6e5cf95e73f8fea5c4bfc55763dd42f1b50a94c1b4a2fbd4"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f3df3db1d336b9356dd3112eae5f5c2b8b377f3bc826848567f10bfddfee77e9"}, + {file = "lxml-4.9.3.tar.gz", hash = "sha256:48628bd53a426c9eb9bc066a923acaa0878d1e86129fd5359aee99285f4eed9c"}, +] + +[package.extras] +cssselect = ["cssselect (>=0.7)"] +html5 = ["html5lib"] +htmlsoup = ["BeautifulSoup4"] +source = ["Cython (>=0.29.35)"] + +[[package]] +name = "markdown" +version = "3.4.4" +description = "Python implementation of John Gruber's Markdown." +optional = false +python-versions = ">=3.7" +files = [ + {file = "Markdown-3.4.4-py3-none-any.whl", hash = "sha256:a4c1b65c0957b4bd9e7d86ddc7b3c9868fb9670660f6f99f6d1bca8954d5a941"}, + {file = "Markdown-3.4.4.tar.gz", hash = "sha256:225c6123522495d4119a90b3a3ba31a1e87a70369e03f14799ea9c0d7183a3d6"}, +] + +[package.extras] +docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.0)", "mkdocs-nature (>=0.4)"] +testing = ["coverage", "pyyaml"] + +[[package]] +name = "markupsafe" +version = "2.1.3" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, + {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, +] + +[[package]] +name = "mergedeep" +version = "1.3.4" +description = "A deep merge function for 🐍." +optional = false +python-versions = ">=3.6" +files = [ + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, +] + +[[package]] +name = "mkdocs" +version = "1.5.3" +description = "Project documentation with Markdown." +optional = false +python-versions = ">=3.7" +files = [ + {file = "mkdocs-1.5.3-py3-none-any.whl", hash = "sha256:3b3a78e736b31158d64dbb2f8ba29bd46a379d0c6e324c2246c3bc3d2189cfc1"}, + {file = "mkdocs-1.5.3.tar.gz", hash = "sha256:eb7c99214dcb945313ba30426c2451b735992c73c2e10838f76d09e39ff4d0e2"}, +] + +[package.dependencies] +click = ">=7.0" +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} +ghp-import = ">=1.0" +jinja2 = ">=2.11.1" +markdown = ">=3.2.1" +markupsafe = ">=2.0.1" +mergedeep = ">=1.3.4" +packaging = ">=20.5" +pathspec = ">=0.11.1" +platformdirs = ">=2.2.0" +pyyaml = ">=5.1" +pyyaml-env-tag = ">=0.1" +watchdog = ">=2.0" + +[package.extras] +i18n = ["babel (>=2.9.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.3)", "jinja2 (==2.11.1)", "markdown (==3.2.1)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "packaging (==20.5)", "pathspec (==0.11.1)", "platformdirs (==2.2.0)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "typing-extensions (==3.10)", "watchdog (==2.0)"] + +[[package]] +name = "mkdocs-git-committers-plugin-2" +version = "1.2.0" +description = "An MkDocs plugin to create a list of contributors on the page. The git-committers plugin will seed the template context with a list of github committers and other useful GIT info such as last modified date" +optional = false +python-versions = ">=3.8,<4" +files = [ + {file = "mkdocs-git-committers-plugin-2-1.2.0.tar.gz", hash = "sha256:921da26b3f4393e6c170279ac34089151dfc22cd29ec4fbce3506218541685c8"}, + {file = "mkdocs_git_committers_plugin_2-1.2.0-py3-none-any.whl", hash = "sha256:0bb5d71cdd9d43fec0dec16e52a9aad2784256b0fa6ef9bb0cceffc36c081ab3"}, +] + +[package.dependencies] +beautifulsoup4 = "*" +gitpython = "*" +lxml = ">=4.9" +mkdocs = ">=1.0.3" +requests = "*" + +[[package]] +name = "mkdocs-git-revision-date-localized-plugin" +version = "1.2.0" +description = "Mkdocs plugin that enables displaying the localized date of the last git modification of a markdown file." +optional = false +python-versions = ">=3.6" +files = [ + {file = "mkdocs-git-revision-date-localized-plugin-1.2.0.tar.gz", hash = "sha256:7752edd7c4dcaa9383e9a5b6a4f729831a62d604b0c43b319331127720c6a2bf"}, + {file = "mkdocs_git_revision_date_localized_plugin-1.2.0-py3-none-any.whl", hash = "sha256:540b9c930d8d48630c090b72ac2c3900ac2ed0799b23738a33b88e31f5198fe7"}, +] + +[package.dependencies] +babel = ">=2.7.0" +GitPython = "*" +mkdocs = ">=1.0" +pytz = "*" + +[[package]] +name = "mkdocs-glightbox" +version = "0.3.4" +description = "MkDocs plugin supports image lightbox with GLightbox." +optional = false +python-versions = "*" +files = [ + {file = "mkdocs-glightbox-0.3.4.tar.gz", hash = "sha256:96aaf98216f83c0d0fad2e42a8d805cfa6329d6ab25b54265012ccb2154010d8"}, + {file = "mkdocs_glightbox-0.3.4-py3-none-any.whl", hash = "sha256:8f894435b4f75231164e5d9fb023c01e922e6769e74a121e822c4914f310a41d"}, +] + +[[package]] +name = "mkdocs-kroki-plugin" +version = "0.6.1" +description = "MkDocs plugin for Kroki-Diagrams" +optional = false +python-versions = ">=3.6" +files = [ + {file = "mkdocs-kroki-plugin-0.6.1.tar.gz", hash = "sha256:c3ee8fc9ac715222c0ace9080f4fcdf3ddd231f13f4edc3f1c73c6db841c5588"}, + {file = "mkdocs_kroki_plugin-0.6.1-py3-none-any.whl", hash = "sha256:2b1ee90cee532adfa3414b78da4e31291a537bbcca897feaf25beef061c1faeb"}, +] + +[package.dependencies] +mkdocs = ">=1.3.0" +requests = ">=2.27.0" + +[[package]] +name = "mkdocs-material" +version = "9.4.1" +description = "Documentation that simply works" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mkdocs_material-9.4.1-py3-none-any.whl", hash = "sha256:27e74b5b14b8b797074759beb85876ca6425e60c78f70e76be0c209627eb5199"}, + {file = "mkdocs_material-9.4.1.tar.gz", hash = "sha256:1495273cfce13ab52bcfcc49fa6fac779ae75818dfe566ed149d9d3aea7d8439"}, +] + +[package.dependencies] +babel = ">=2.10,<3.0" +cairosvg = {version = ">=2.6,<3.0", optional = true, markers = "extra == \"imaging\""} +colorama = ">=0.4,<1.0" +jinja2 = ">=3.0,<4.0" +markdown = ">=3.2,<4.0" +mkdocs = ">=1.5.3,<2.0" +mkdocs-git-committers-plugin-2 = {version = ">=1.1,<2.0", optional = true, markers = "extra == \"git\""} +mkdocs-git-revision-date-localized-plugin = {version = ">=1.2,<2.0", optional = true, markers = "extra == \"git\""} +mkdocs-material-extensions = ">=1.2,<2.0" +mkdocs-minify-plugin = {version = ">=0.7,<1.0", optional = true, markers = "extra == \"recommended\""} +mkdocs-redirects = {version = ">=1.2,<2.0", optional = true, markers = "extra == \"recommended\""} +mkdocs-rss-plugin = {version = ">=1.6,<2.0", optional = true, markers = "extra == \"recommended\""} +paginate = ">=0.5,<1.0" +pillow = {version = ">=9.4,<10.0", optional = true, markers = "extra == \"imaging\""} +pygments = ">=2.16,<3.0" +pymdown-extensions = ">=10.2,<11.0" +regex = ">=2022.4,<2023.0" +requests = ">=2.26,<3.0" + +[package.extras] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<2.0)", "mkdocs-git-revision-date-localized-plugin (>=1.2,<2.0)"] +imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=9.4,<10.0)"] +recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.2" +description = "Extension pack for Python Markdown and MkDocs Material." +optional = false +python-versions = ">=3.7" +files = [ + {file = "mkdocs_material_extensions-1.2-py3-none-any.whl", hash = "sha256:c767bd6d6305f6420a50f0b541b0c9966d52068839af97029be14443849fb8a1"}, + {file = "mkdocs_material_extensions-1.2.tar.gz", hash = "sha256:27e2d1ed2d031426a6e10d5ea06989d67e90bb02acd588bc5673106b5ee5eedf"}, +] + +[[package]] +name = "mkdocs-minify-plugin" +version = "0.7.1" +description = "An MkDocs plugin to minify HTML, JS or CSS files prior to being written to disk" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mkdocs-minify-plugin-0.7.1.tar.gz", hash = "sha256:6abf8f5a0fddb476bddd38faba28390fd8c41ab63b0d7202e3ce3deeb9ab98cb"}, + {file = "mkdocs_minify_plugin-0.7.1-py3-none-any.whl", hash = "sha256:29bd6a1aa5b0217a55b08333194e20cf1ff83b63fb6a22a33f10f8fa9745c28a"}, +] + +[package.dependencies] +csscompressor = ">=0.9.5" +htmlmin2 = ">=0.1.13" +jsmin = ">=3.0.1" +mkdocs = ">=1.4.1" + +[[package]] +name = "mkdocs-redirects" +version = "1.2.1" +description = "A MkDocs plugin for dynamic page redirects to prevent broken links." +optional = false +python-versions = ">=3.6" +files = [ + {file = "mkdocs-redirects-1.2.1.tar.gz", hash = "sha256:9420066d70e2a6bb357adf86e67023dcdca1857f97f07c7fe450f8f1fb42f861"}, +] + +[package.dependencies] +mkdocs = ">=1.1.1" + +[package.extras] +dev = ["autoflake", "black", "isort", "pytest", "twine (>=1.13.0)"] +release = ["twine (>=1.13.0)"] +test = ["autoflake", "black", "isort", "pytest"] + +[[package]] +name = "mkdocs-rss-plugin" +version = "1.8.0" +description = "MkDocs plugin which generates a static RSS feed using git log and page.meta." +optional = false +python-versions = ">=3.8, <4" +files = [ + {file = "mkdocs-rss-plugin-1.8.0.tar.gz", hash = "sha256:475bf4ea05cbe786af38d519b55352b1b2eb87597ad680fcbc309056864ed5c4"}, + {file = "mkdocs_rss_plugin-1.8.0-py2.py3-none-any.whl", hash = "sha256:0fa13c99730c1d3ad9ec05102ff3d148c9849396c40b30be789339d38722fa8f"}, +] + +[package.dependencies] +GitPython = ">=3.1,<3.2" +mkdocs = ">=1.1,<2" +tzdata = {version = "==2023.*", markers = "python_version >= \"3.9\" and sys_platform == \"win32\""} + +[package.extras] +dev = ["black", "feedparser (>=6.0,<6.1)", "flake8 (>=4,<7)", "pre-commit (>=3,<4)", "pytest-cov (>=4,<4.2)", "validator-collection (>=1.5,<1.6)"] +doc = ["mkdocs-bootswatch (>=1,<2)", "mkdocs-minify-plugin (==0.6.*)", "pygments (>=2.5,<3)", "pymdown-extensions (>=10,<11)"] + +[[package]] +name = "packaging" +version = "23.1" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, + {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, +] + +[[package]] +name = "paginate" +version = "0.5.6" +description = "Divides large result sets into pages for easier browsing" +optional = false +python-versions = "*" +files = [ + {file = "paginate-0.5.6.tar.gz", hash = "sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d"}, +] + +[[package]] +name = "pathspec" +version = "0.11.2" +description = "Utility library for gitignore style pattern matching of file paths." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, + {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, +] + +[[package]] +name = "pillow" +version = "9.5.0" +description = "Python Imaging Library (Fork)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Pillow-9.5.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:ace6ca218308447b9077c14ea4ef381ba0b67ee78d64046b3f19cf4e1139ad16"}, + {file = "Pillow-9.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3d403753c9d5adc04d4694d35cf0391f0f3d57c8e0030aac09d7678fa8030aa"}, + {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ba1b81ee69573fe7124881762bb4cd2e4b6ed9dd28c9c60a632902fe8db8b38"}, + {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe7e1c262d3392afcf5071df9afa574544f28eac825284596ac6db56e6d11062"}, + {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f36397bf3f7d7c6a3abdea815ecf6fd14e7fcd4418ab24bae01008d8d8ca15e"}, + {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:252a03f1bdddce077eff2354c3861bf437c892fb1832f75ce813ee94347aa9b5"}, + {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:85ec677246533e27770b0de5cf0f9d6e4ec0c212a1f89dfc941b64b21226009d"}, + {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b416f03d37d27290cb93597335a2f85ed446731200705b22bb927405320de903"}, + {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1781a624c229cb35a2ac31cc4a77e28cafc8900733a864870c49bfeedacd106a"}, + {file = "Pillow-9.5.0-cp310-cp310-win32.whl", hash = "sha256:8507eda3cd0608a1f94f58c64817e83ec12fa93a9436938b191b80d9e4c0fc44"}, + {file = "Pillow-9.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:d3c6b54e304c60c4181da1c9dadf83e4a54fd266a99c70ba646a9baa626819eb"}, + {file = "Pillow-9.5.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:7ec6f6ce99dab90b52da21cf0dc519e21095e332ff3b399a357c187b1a5eee32"}, + {file = "Pillow-9.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:560737e70cb9c6255d6dcba3de6578a9e2ec4b573659943a5e7e4af13f298f5c"}, + {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96e88745a55b88a7c64fa49bceff363a1a27d9a64e04019c2281049444a571e3"}, + {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9c206c29b46cfd343ea7cdfe1232443072bbb270d6a46f59c259460db76779a"}, + {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfcc2c53c06f2ccb8976fb5c71d448bdd0a07d26d8e07e321c103416444c7ad1"}, + {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:a0f9bb6c80e6efcde93ffc51256d5cfb2155ff8f78292f074f60f9e70b942d99"}, + {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8d935f924bbab8f0a9a28404422da8af4904e36d5c33fc6f677e4c4485515625"}, + {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fed1e1cf6a42577953abbe8e6cf2fe2f566daebde7c34724ec8803c4c0cda579"}, + {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c1170d6b195555644f0616fd6ed929dfcf6333b8675fcca044ae5ab110ded296"}, + {file = "Pillow-9.5.0-cp311-cp311-win32.whl", hash = "sha256:54f7102ad31a3de5666827526e248c3530b3a33539dbda27c6843d19d72644ec"}, + {file = "Pillow-9.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:cfa4561277f677ecf651e2b22dc43e8f5368b74a25a8f7d1d4a3a243e573f2d4"}, + {file = "Pillow-9.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:965e4a05ef364e7b973dd17fc765f42233415974d773e82144c9bbaaaea5d089"}, + {file = "Pillow-9.5.0-cp312-cp312-win32.whl", hash = "sha256:22baf0c3cf0c7f26e82d6e1adf118027afb325e703922c8dfc1d5d0156bb2eeb"}, + {file = "Pillow-9.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:432b975c009cf649420615388561c0ce7cc31ce9b2e374db659ee4f7d57a1f8b"}, + {file = "Pillow-9.5.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:5d4ebf8e1db4441a55c509c4baa7a0587a0210f7cd25fcfe74dbbce7a4bd1906"}, + {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:375f6e5ee9620a271acb6820b3d1e94ffa8e741c0601db4c0c4d3cb0a9c224bf"}, + {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99eb6cafb6ba90e436684e08dad8be1637efb71c4f2180ee6b8f940739406e78"}, + {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dfaaf10b6172697b9bceb9a3bd7b951819d1ca339a5ef294d1f1ac6d7f63270"}, + {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:763782b2e03e45e2c77d7779875f4432e25121ef002a41829d8868700d119392"}, + {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:35f6e77122a0c0762268216315bf239cf52b88865bba522999dc38f1c52b9b47"}, + {file = "Pillow-9.5.0-cp37-cp37m-win32.whl", hash = "sha256:aca1c196f407ec7cf04dcbb15d19a43c507a81f7ffc45b690899d6a76ac9fda7"}, + {file = "Pillow-9.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322724c0032af6692456cd6ed554bb85f8149214d97398bb80613b04e33769f6"}, + {file = "Pillow-9.5.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:a0aa9417994d91301056f3d0038af1199eb7adc86e646a36b9e050b06f526597"}, + {file = "Pillow-9.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8286396b351785801a976b1e85ea88e937712ee2c3ac653710a4a57a8da5d9c"}, + {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c830a02caeb789633863b466b9de10c015bded434deb3ec87c768e53752ad22a"}, + {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fbd359831c1657d69bb81f0db962905ee05e5e9451913b18b831febfe0519082"}, + {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8fc330c3370a81bbf3f88557097d1ea26cd8b019d6433aa59f71195f5ddebbf"}, + {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:7002d0797a3e4193c7cdee3198d7c14f92c0836d6b4a3f3046a64bd1ce8df2bf"}, + {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:229e2c79c00e85989a34b5981a2b67aa079fd08c903f0aaead522a1d68d79e51"}, + {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9adf58f5d64e474bed00d69bcd86ec4bcaa4123bfa70a65ce72e424bfb88ed96"}, + {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:662da1f3f89a302cc22faa9f14a262c2e3951f9dbc9617609a47521c69dd9f8f"}, + {file = "Pillow-9.5.0-cp38-cp38-win32.whl", hash = "sha256:6608ff3bf781eee0cd14d0901a2b9cc3d3834516532e3bd673a0a204dc8615fc"}, + {file = "Pillow-9.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:e49eb4e95ff6fd7c0c402508894b1ef0e01b99a44320ba7d8ecbabefddcc5569"}, + {file = "Pillow-9.5.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:482877592e927fd263028c105b36272398e3e1be3269efda09f6ba21fd83ec66"}, + {file = "Pillow-9.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3ded42b9ad70e5f1754fb7c2e2d6465a9c842e41d178f262e08b8c85ed8a1d8e"}, + {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c446d2245ba29820d405315083d55299a796695d747efceb5717a8b450324115"}, + {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8aca1152d93dcc27dc55395604dcfc55bed5f25ef4c98716a928bacba90d33a3"}, + {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:608488bdcbdb4ba7837461442b90ea6f3079397ddc968c31265c1e056964f1ef"}, + {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:60037a8db8750e474af7ffc9faa9b5859e6c6d0a50e55c45576bf28be7419705"}, + {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:07999f5834bdc404c442146942a2ecadd1cb6292f5229f4ed3b31e0a108746b1"}, + {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a127ae76092974abfbfa38ca2d12cbeddcdeac0fb71f9627cc1135bedaf9d51a"}, + {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:489f8389261e5ed43ac8ff7b453162af39c3e8abd730af8363587ba64bb2e865"}, + {file = "Pillow-9.5.0-cp39-cp39-win32.whl", hash = "sha256:9b1af95c3a967bf1da94f253e56b6286b50af23392a886720f563c547e48e964"}, + {file = "Pillow-9.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:77165c4a5e7d5a284f10a6efaa39a0ae8ba839da344f20b111d62cc932fa4e5d"}, + {file = "Pillow-9.5.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:833b86a98e0ede388fa29363159c9b1a294b0905b5128baf01db683672f230f5"}, + {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aaf305d6d40bd9632198c766fb64f0c1a83ca5b667f16c1e79e1661ab5060140"}, + {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0852ddb76d85f127c135b6dd1f0bb88dbb9ee990d2cd9aa9e28526c93e794fba"}, + {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:91ec6fe47b5eb5a9968c79ad9ed78c342b1f97a091677ba0e012701add857829"}, + {file = "Pillow-9.5.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cb841572862f629b99725ebaec3287fc6d275be9b14443ea746c1dd325053cbd"}, + {file = "Pillow-9.5.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c380b27d041209b849ed246b111b7c166ba36d7933ec6e41175fd15ab9eb1572"}, + {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c9af5a3b406a50e313467e3565fc99929717f780164fe6fbb7704edba0cebbe"}, + {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5671583eab84af046a397d6d0ba25343c00cd50bce03787948e0fff01d4fd9b1"}, + {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:84a6f19ce086c1bf894644b43cd129702f781ba5751ca8572f08aa40ef0ab7b7"}, + {file = "Pillow-9.5.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1e7723bd90ef94eda669a3c2c19d549874dd5badaeefabefd26053304abe5799"}, + {file = "Pillow-9.5.0.tar.gz", hash = "sha256:bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "platformdirs" +version = "3.10.0" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +optional = false +python-versions = ">=3.7" +files = [ + {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, + {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, +] + +[package.extras] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] + +[[package]] +name = "pycparser" +version = "2.21" +description = "C parser in Python" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] + +[[package]] +name = "pygments" +version = "2.16.1" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.7" +files = [ + {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, + {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, +] + +[package.extras] +plugins = ["importlib-metadata"] + +[[package]] +name = "pymdown-extensions" +version = "10.3" +description = "Extension pack for Python Markdown." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pymdown_extensions-10.3-py3-none-any.whl", hash = "sha256:77a82c621c58a83efc49a389159181d570e370fff9f810d3a4766a75fc678b66"}, + {file = "pymdown_extensions-10.3.tar.gz", hash = "sha256:94a0d8a03246712b64698af223848fd80aaf1ae4c4be29c8c61939b0467b5722"}, +] + +[package.dependencies] +markdown = ">=3.2" +pyyaml = "*" + +[package.extras] +extra = ["pygments (>=2.12)"] + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "pytz" +version = "2023.3.post1" +description = "World timezone definitions, modern and historical" +optional = false +python-versions = "*" +files = [ + {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, + {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, +] + +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "pyyaml-env-tag" +version = "0.1" +description = "A custom YAML tag for referencing environment variables in YAML files. " +optional = false +python-versions = ">=3.6" +files = [ + {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, + {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, +] + +[package.dependencies] +pyyaml = "*" + +[[package]] +name = "regex" +version = "2022.10.31" +description = "Alternative regular expression module, to replace re." +optional = false +python-versions = ">=3.6" +files = [ + {file = "regex-2022.10.31-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a8ff454ef0bb061e37df03557afda9d785c905dab15584860f982e88be73015f"}, + {file = "regex-2022.10.31-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1eba476b1b242620c266edf6325b443a2e22b633217a9835a52d8da2b5c051f9"}, + {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0e5af9a9effb88535a472e19169e09ce750c3d442fb222254a276d77808620b"}, + {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d03fe67b2325cb3f09be029fd5da8df9e6974f0cde2c2ac6a79d2634e791dd57"}, + {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9d0b68ac1743964755ae2d89772c7e6fb0118acd4d0b7464eaf3921c6b49dd4"}, + {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a45b6514861916c429e6059a55cf7db74670eaed2052a648e3e4d04f070e001"}, + {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b0886885f7323beea6f552c28bff62cbe0983b9fbb94126531693ea6c5ebb90"}, + {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5aefb84a301327ad115e9d346c8e2760009131d9d4b4c6b213648d02e2abe144"}, + {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:702d8fc6f25bbf412ee706bd73019da5e44a8400861dfff7ff31eb5b4a1276dc"}, + {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a3c1ebd4ed8e76e886507c9eddb1a891673686c813adf889b864a17fafcf6d66"}, + {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:50921c140561d3db2ab9f5b11c5184846cde686bb5a9dc64cae442926e86f3af"}, + {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:7db345956ecce0c99b97b042b4ca7326feeec6b75facd8390af73b18e2650ffc"}, + {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:763b64853b0a8f4f9cfb41a76a4a85a9bcda7fdda5cb057016e7706fde928e66"}, + {file = "regex-2022.10.31-cp310-cp310-win32.whl", hash = "sha256:44136355e2f5e06bf6b23d337a75386371ba742ffa771440b85bed367c1318d1"}, + {file = "regex-2022.10.31-cp310-cp310-win_amd64.whl", hash = "sha256:bfff48c7bd23c6e2aec6454aaf6edc44444b229e94743b34bdcdda2e35126cf5"}, + {file = "regex-2022.10.31-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4b4b1fe58cd102d75ef0552cf17242705ce0759f9695334a56644ad2d83903fe"}, + {file = "regex-2022.10.31-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:542e3e306d1669b25936b64917285cdffcd4f5c6f0247636fec037187bd93542"}, + {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c27cc1e4b197092e50ddbf0118c788d9977f3f8f35bfbbd3e76c1846a3443df7"}, + {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8e38472739028e5f2c3a4aded0ab7eadc447f0d84f310c7a8bb697ec417229e"}, + {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76c598ca73ec73a2f568e2a72ba46c3b6c8690ad9a07092b18e48ceb936e9f0c"}, + {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c28d3309ebd6d6b2cf82969b5179bed5fefe6142c70f354ece94324fa11bf6a1"}, + {file = "regex-2022.10.31-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9af69f6746120998cd9c355e9c3c6aec7dff70d47247188feb4f829502be8ab4"}, + {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a5f9505efd574d1e5b4a76ac9dd92a12acb2b309551e9aa874c13c11caefbe4f"}, + {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5ff525698de226c0ca743bfa71fc6b378cda2ddcf0d22d7c37b1cc925c9650a5"}, + {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4fe7fda2fe7c8890d454f2cbc91d6c01baf206fbc96d89a80241a02985118c0c"}, + {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2cdc55ca07b4e70dda898d2ab7150ecf17c990076d3acd7a5f3b25cb23a69f1c"}, + {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:44a6c2f6374e0033873e9ed577a54a3602b4f609867794c1a3ebba65e4c93ee7"}, + {file = "regex-2022.10.31-cp311-cp311-win32.whl", hash = "sha256:d8716f82502997b3d0895d1c64c3b834181b1eaca28f3f6336a71777e437c2af"}, + {file = "regex-2022.10.31-cp311-cp311-win_amd64.whl", hash = "sha256:61edbca89aa3f5ef7ecac8c23d975fe7261c12665f1d90a6b1af527bba86ce61"}, + {file = "regex-2022.10.31-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a069c8483466806ab94ea9068c34b200b8bfc66b6762f45a831c4baaa9e8cdd"}, + {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d26166acf62f731f50bdd885b04b38828436d74e8e362bfcb8df221d868b5d9b"}, + {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac741bf78b9bb432e2d314439275235f41656e189856b11fb4e774d9f7246d81"}, + {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75f591b2055523fc02a4bbe598aa867df9e953255f0b7f7715d2a36a9c30065c"}, + {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b30bddd61d2a3261f025ad0f9ee2586988c6a00c780a2fb0a92cea2aa702c54"}, + {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef4163770525257876f10e8ece1cf25b71468316f61451ded1a6f44273eedeb5"}, + {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7b280948d00bd3973c1998f92e22aa3ecb76682e3a4255f33e1020bd32adf443"}, + {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:d0213671691e341f6849bf33cd9fad21f7b1cb88b89e024f33370733fec58742"}, + {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:22e7ebc231d28393dfdc19b185d97e14a0f178bedd78e85aad660e93b646604e"}, + {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:8ad241da7fac963d7573cc67a064c57c58766b62a9a20c452ca1f21050868dfa"}, + {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:586b36ebda81e6c1a9c5a5d0bfdc236399ba6595e1397842fd4a45648c30f35e"}, + {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4"}, + {file = "regex-2022.10.31-cp36-cp36m-win32.whl", hash = "sha256:144486e029793a733e43b2e37df16a16df4ceb62102636ff3db6033994711066"}, + {file = "regex-2022.10.31-cp36-cp36m-win_amd64.whl", hash = "sha256:c14b63c9d7bab795d17392c7c1f9aaabbffd4cf4387725a0ac69109fb3b550c6"}, + {file = "regex-2022.10.31-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4cac3405d8dda8bc6ed499557625585544dd5cbf32072dcc72b5a176cb1271c8"}, + {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23cbb932cc53a86ebde0fb72e7e645f9a5eec1a5af7aa9ce333e46286caef783"}, + {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74bcab50a13960f2a610cdcd066e25f1fd59e23b69637c92ad470784a51b1347"}, + {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78d680ef3e4d405f36f0d6d1ea54e740366f061645930072d39bca16a10d8c93"}, + {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce6910b56b700bea7be82c54ddf2e0ed792a577dfaa4a76b9af07d550af435c6"}, + {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:659175b2144d199560d99a8d13b2228b85e6019b6e09e556209dfb8c37b78a11"}, + {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1ddf14031a3882f684b8642cb74eea3af93a2be68893901b2b387c5fd92a03ec"}, + {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b683e5fd7f74fb66e89a1ed16076dbab3f8e9f34c18b1979ded614fe10cdc4d9"}, + {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2bde29cc44fa81c0a0c8686992c3080b37c488df167a371500b2a43ce9f026d1"}, + {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4919899577ba37f505aaebdf6e7dc812d55e8f097331312db7f1aab18767cce8"}, + {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:9c94f7cc91ab16b36ba5ce476f1904c91d6c92441f01cd61a8e2729442d6fcf5"}, + {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae1e96785696b543394a4e3f15f3f225d44f3c55dafe3f206493031419fedf95"}, + {file = "regex-2022.10.31-cp37-cp37m-win32.whl", hash = "sha256:c670f4773f2f6f1957ff8a3962c7dd12e4be54d05839b216cb7fd70b5a1df394"}, + {file = "regex-2022.10.31-cp37-cp37m-win_amd64.whl", hash = "sha256:8e0caeff18b96ea90fc0eb6e3bdb2b10ab5b01a95128dfeccb64a7238decf5f0"}, + {file = "regex-2022.10.31-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:131d4be09bea7ce2577f9623e415cab287a3c8e0624f778c1d955ec7c281bd4d"}, + {file = "regex-2022.10.31-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e613a98ead2005c4ce037c7b061f2409a1a4e45099edb0ef3200ee26ed2a69a8"}, + {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad"}, + {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa62a07ac93b7cb6b7d0389d8ef57ffc321d78f60c037b19dfa78d6b17c928ee"}, + {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5352bea8a8f84b89d45ccc503f390a6be77917932b1c98c4cdc3565137acc714"}, + {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20f61c9944f0be2dc2b75689ba409938c14876c19d02f7585af4460b6a21403e"}, + {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29c04741b9ae13d1e94cf93fca257730b97ce6ea64cfe1eba11cf9ac4e85afb6"}, + {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:543883e3496c8b6d58bd036c99486c3c8387c2fc01f7a342b760c1ea3158a318"}, + {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7a8b43ee64ca8f4befa2bea4083f7c52c92864d8518244bfa6e88c751fa8fff"}, + {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6a9a19bea8495bb419dc5d38c4519567781cd8d571c72efc6aa959473d10221a"}, + {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6ffd55b5aedc6f25fd8d9f905c9376ca44fcf768673ffb9d160dd6f409bfda73"}, + {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4bdd56ee719a8f751cf5a593476a441c4e56c9b64dc1f0f30902858c4ef8771d"}, + {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ca88da1bd78990b536c4a7765f719803eb4f8f9971cc22d6ca965c10a7f2c4c"}, + {file = "regex-2022.10.31-cp38-cp38-win32.whl", hash = "sha256:5a260758454580f11dd8743fa98319bb046037dfab4f7828008909d0aa5292bc"}, + {file = "regex-2022.10.31-cp38-cp38-win_amd64.whl", hash = "sha256:5e6a5567078b3eaed93558842346c9d678e116ab0135e22eb72db8325e90b453"}, + {file = "regex-2022.10.31-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5217c25229b6a85049416a5c1e6451e9060a1edcf988641e309dbe3ab26d3e49"}, + {file = "regex-2022.10.31-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4bf41b8b0a80708f7e0384519795e80dcb44d7199a35d52c15cc674d10b3081b"}, + {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf0da36a212978be2c2e2e2d04bdff46f850108fccc1851332bcae51c8907cc"}, + {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d403d781b0e06d2922435ce3b8d2376579f0c217ae491e273bab8d092727d244"}, + {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a37d51fa9a00d265cf73f3de3930fa9c41548177ba4f0faf76e61d512c774690"}, + {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4f781ffedd17b0b834c8731b75cce2639d5a8afe961c1e58ee7f1f20b3af185"}, + {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d243b36fbf3d73c25e48014961e83c19c9cc92530516ce3c43050ea6276a2ab7"}, + {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:370f6e97d02bf2dd20d7468ce4f38e173a124e769762d00beadec3bc2f4b3bc4"}, + {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:597f899f4ed42a38df7b0e46714880fb4e19a25c2f66e5c908805466721760f5"}, + {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7dbdce0c534bbf52274b94768b3498abdf675a691fec5f751b6057b3030f34c1"}, + {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:22960019a842777a9fa5134c2364efaed5fbf9610ddc5c904bd3a400973b0eb8"}, + {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7f5a3ffc731494f1a57bd91c47dc483a1e10048131ffb52d901bfe2beb6102e8"}, + {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7ef6b5942e6bfc5706301a18a62300c60db9af7f6368042227ccb7eeb22d0892"}, + {file = "regex-2022.10.31-cp39-cp39-win32.whl", hash = "sha256:395161bbdbd04a8333b9ff9763a05e9ceb4fe210e3c7690f5e68cedd3d65d8e1"}, + {file = "regex-2022.10.31-cp39-cp39-win_amd64.whl", hash = "sha256:957403a978e10fb3ca42572a23e6f7badff39aa1ce2f4ade68ee452dc6807692"}, + {file = "regex-2022.10.31.tar.gz", hash = "sha256:a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83"}, +] + +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "smmap" +version = "5.0.1" +description = "A pure Python implementation of a sliding window memory map manager" +optional = false +python-versions = ">=3.7" +files = [ + {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"}, + {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"}, +] + +[[package]] +name = "soupsieve" +version = "2.5" +description = "A modern CSS selector implementation for Beautiful Soup." +optional = false +python-versions = ">=3.8" +files = [ + {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, + {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, +] + +[[package]] +name = "tinycss2" +version = "1.2.1" +description = "A tiny CSS parser" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"}, + {file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"}, +] + +[package.dependencies] +webencodings = ">=0.4" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["flake8", "isort", "pytest"] + +[[package]] +name = "tzdata" +version = "2023.3" +description = "Provider of IANA time zone data" +optional = false +python-versions = ">=2" +files = [ + {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, + {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, +] + +[[package]] +name = "urllib3" +version = "2.0.5" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.7" +files = [ + {file = "urllib3-2.0.5-py3-none-any.whl", hash = "sha256:ef16afa8ba34a1f989db38e1dbbe0c302e4289a47856990d0682e374563ce35e"}, + {file = "urllib3-2.0.5.tar.gz", hash = "sha256:13abf37382ea2ce6fb744d4dad67838eec857c9f4f57009891805e0b5e123594"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "watchdog" +version = "3.0.0" +description = "Filesystem events monitoring" +optional = false +python-versions = ">=3.7" +files = [ + {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41"}, + {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397"}, + {file = "watchdog-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7"}, + {file = "watchdog-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8"}, + {file = "watchdog-3.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100"}, + {file = "watchdog-3.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346"}, + {file = "watchdog-3.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33"}, + {file = "watchdog-3.0.0-py3-none-win32.whl", hash = "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f"}, + {file = "watchdog-3.0.0-py3-none-win_amd64.whl", hash = "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c"}, + {file = "watchdog-3.0.0-py3-none-win_ia64.whl", hash = "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759"}, + {file = "watchdog-3.0.0.tar.gz", hash = "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9"}, +] + +[package.extras] +watchmedo = ["PyYAML (>=3.10)"] + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +optional = false +python-versions = "*" +files = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] + +[metadata] +lock-version = "2.0" +python-versions = "^3.11" +content-hash = "a122fb54c7ab5a16ec182623ee1e607a6a66a4563a3ae601d1c8c7704e63a7c6" diff --git a/earthly/docs/pyproject.toml b/earthly/docs/pyproject.toml new file mode 100644 index 000000000..bfa5144bd --- /dev/null +++ b/earthly/docs/pyproject.toml @@ -0,0 +1,36 @@ +[tool.poetry] +name = "Documentation Tooling" +version = "0.1.0" +description = "Common Project Catalyst Documentation Tooling." +authors = ["Joshua Gilman", "Steven Johnson"] +readme = "README.md" + +[tool.poetry.dependencies] +python = "^3.11" +mkdocs-material = { version = "^9.4.1", extras = ["recommended","git","imaging"] } + +### MkDocs Plugins we add. + +# https://github.com/byrnereese/mkdocs-minify-plugin +mkdocs-minify-plugin = "^0.7.1" + +# https://github.com/mkdocs/mkdocs-redirects +mkdocs-redirects = "^v1.2.1" + +# https://github.com/Blueswen/mkdocs-glightbox +mkdocs-glightbox = "^0.3.4" + +# https://github.com/AVATEAM-IT-SYSTEMHAUS/mkdocs-kroki-plugin/tree/main +mkdocs-kroki-plugin = "^0.6.1" + +### DO NOT ENABLE THESE BAD PLUGINS. +### DOCUMENTED HERE FOR INFORMATIONAL PURPOSES. +# https://github.com/zoni/mkdocs-diagrams +#mkdocs-diagrams # Doesn't work properly look for replacement. + +# https://github.com/pawamoy/mkdocs-spellcheck +#mkdocs-spellcheck[all] == 1.0.2 # We use cspell, don't use this. + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" diff --git a/earthly/docs/sample/mkdocs.yml b/earthly/docs/sample/mkdocs.yml new file mode 100644 index 000000000..10bacaf6e --- /dev/null +++ b/earthly/docs/sample/mkdocs.yml @@ -0,0 +1,4 @@ +site_name: Sample Documentation +docs_dir: src +theme: + name: material diff --git a/earthly/docs/sample/src/index.md b/earthly/docs/sample/src/index.md new file mode 100644 index 000000000..73926c65b --- /dev/null +++ b/earthly/docs/sample/src/index.md @@ -0,0 +1,3 @@ +# Introduction + +Welcome to the Catalyst Sample documentation! diff --git a/earthly/docs/start.sh b/earthly/docs/start.sh new file mode 100755 index 000000000..eba483c35 --- /dev/null +++ b/earthly/docs/start.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash +cd /poetry +poetry run mkdocs "$@" -f /docs/mkdocs.yml \ No newline at end of file From cf867bf7ea61c6852f75510ba2b2e123a1cd229b Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Tue, 26 Sep 2023 13:44:36 +0700 Subject: [PATCH 02/22] refactor(docs): Remove generated debug file from repo --- earthly/docs/output/kroki/docker-compose.yml | 60 -------------------- 1 file changed, 60 deletions(-) delete mode 100644 earthly/docs/output/kroki/docker-compose.yml diff --git a/earthly/docs/output/kroki/docker-compose.yml b/earthly/docs/output/kroki/docker-compose.yml deleted file mode 100644 index 561a681fa..000000000 --- a/earthly/docs/output/kroki/docker-compose.yml +++ /dev/null @@ -1,60 +0,0 @@ -version: "3" - -# ############################################################################## -# SERVICE DEFINITIONS - -services: - - # Kroki Service for building both static and live docs against. - kroki: - image: yuzutech/kroki - depends_on: - - blockdiag - - mermaid - - bpmn - - excalidraw - environment: - - KROKI_BLOCKDIAG_HOST=blockdiag - - KROKI_MERMAID_HOST=mermaid - - KROKI_BPMN_HOST=bpmn - - KROKI_EXCALIDRAW_HOST=excalidraw - - KROKI_WIREVIZ_HOST=wireviz - expose: - - "8000" - #ports: - # - "8000:8000" - networks: - - mkdocs - blockdiag: - image: yuzutech/kroki-blockdiag - expose: - - "8001" - networks: - - mkdocs - mermaid: - image: yuzutech/kroki-mermaid - expose: - - "8002" - networks: - - mkdocs - bpmn: - image: yuzutech/kroki-bpmn - expose: - - "8003" - networks: - - mkdocs - excalidraw: - image: yuzutech/kroki-excalidraw - expose: - - "8004" - networks: - - mkdocs - wireviz: - image: yuzutech/kroki-wireviz - ports: - - "8006" - networks: - - mkdocs - -networks: - mkdocs: \ No newline at end of file From 0aca1bb6c6b0af920e9ef6ebd890142d235dfac8 Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Tue, 26 Sep 2023 13:45:34 +0700 Subject: [PATCH 03/22] refactor(cspell): Move cspell linter to its own earthfile --- earthly/cspell/Earthfile | 38 ++++++++++++++++++++ earthly/cspell/Readme.md | 78 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 earthly/cspell/Earthfile create mode 100644 earthly/cspell/Readme.md diff --git a/earthly/cspell/Earthfile b/earthly/cspell/Earthfile new file mode 100644 index 000000000..4d4a51797 --- /dev/null +++ b/earthly/cspell/Earthfile @@ -0,0 +1,38 @@ +# cspell UDCs and Containers. +VERSION 0.7 + +CSPELL: + # Spell checking all docs and code is done with cspell + # See: cspell.org + COMMAND + + # Where we want to run the `lint` from. + ARG --required src + + # Unlikely to need to change this. + ARG cfg_file=cspell.json + + RUN --no-cache if [[ ! -f $src/$cfg_file ]]; then \ + (>&2 echo "$src/$cfg_file does not exist. Can not check spelling."); \ + exit 1; \ + fi + + RUN --no-cache echo Spell Checking Recursively from: $src + + WITH DOCKER --pull ghcr.io/streetsidesoftware/cspell:latest + RUN --no-cache \ + docker run \ + --rm \ + -v $src:/workdir \ + ghcr.io/streetsidesoftware/cspell:latest \ + lint . + END + +# A Test and example invocation of the above UDC. +cspell-test: + # Test spellcheck lint checks. + # Run with `earthly -P +cspell-test + LOCALLY + + DO +CSPELL --src=$(echo ${PWD}/../../) + diff --git a/earthly/cspell/Readme.md b/earthly/cspell/Readme.md new file mode 100644 index 000000000..fd7b643cc --- /dev/null +++ b/earthly/cspell/Readme.md @@ -0,0 +1,78 @@ +# CSpell Linter + +This Earthly Target and UDC enables uniform spell checking of all source and +documentation files. + +## How it works + +Spellchecking is performed with the [`cspell`](cspell.org) program. + +Use the `CSPELL` Earthly UDC to enable uniform and consistent spell checking. + +This spellchecker is to be used in preference to tool specific spell checkers, +such as `cargo spellcheck`. +This is because we need to provide uniform and consistent spell checking across +multiple source languages and documentation files. +Tool specific spell checkers are limited in the kinds of files they can check, +and also will use different configurations, dictionaries and project word lists. + +## Invocation + +In an Earthfile in your repo, add the following: + +```earthfile +spellcheck-lint: + # Check spelling in this repo. + LOCALLY + + DO github.com/input-output-hk/catalyst-ci:v1.2.0/earthly/cspell+CSPELL --src=$(echo ${PWD}) +``` + +In this use case, the UDC is run Locally, so that the src in the repo can be directly checked. + +## Configuration + +Each repo will need a [`cspell.json`](http://cspell.org/configuration/) file in the root of the repo. +This file configures cspell. +The file provided in the `Catalyst-CI` repo should be taken as a starting point +for new projects. + +## Project Words + +It will be necessary for each project to have a list of custom words. +This list extends the list of valid words accepted by the spellchecker. + +These words are added to the file: + +```path +/.config/dictionaries/project.dic +``` + +This can be necessary for the following reasons: + +* The built in dictionaries do not contain all possible valid words. + * This is especially true when using names of Companies, Products or Technology. +* There are identifiers used in the code which are used which fail spell checks. + +Words must ONLY be added to project words if they are correctly spelt. + +Project words that are added MUST be included in any PR where they became necessary. +PR Review MUST check that the added words are both reasonable and valid. + +Before a word is added to the project dictionary, it should be considered if it is a word likely to occur many times. + +Some spelling errors may only occur once, or a handful of times. +Or, they may be an artefact of the code itself. +In these cases it is MUCH better to disable the spelling error inline rather than add a word to the project dictionary. +See [In Document Settings](http://cspell.org/configuration/document-settings/#in-document-settings) for details. + +## Generated Files + +Automatically generated files are likely to contain large amounts of spelling errors. +For these files/paths, exclude them from the spell check by adding their filenames to `"ignorePaths": []` in the `cspell.json` file. + +## Editor Integration + +cspell is integrated into VSCode and may be integrated into other Editors. + +The editor integration should pick up the `cspell.json` configuration file and behave exactly the same as the Earthly UDC. From 6347792edbd620ad75f4b8cc06c9477698bbec0d Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Tue, 26 Sep 2023 13:46:05 +0700 Subject: [PATCH 04/22] refactor(mdlint): Move markdown linter to its own earthfile --- earthly/mdlint/Earthfile | 61 ++++++++++++++++++++++++++++++++++++++++ earthly/mdlint/Readme.md | 47 +++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 earthly/mdlint/Earthfile create mode 100644 earthly/mdlint/Readme.md diff --git a/earthly/mdlint/Earthfile b/earthly/mdlint/Earthfile new file mode 100644 index 000000000..d7d5c1ad5 --- /dev/null +++ b/earthly/mdlint/Earthfile @@ -0,0 +1,61 @@ +VERSION 0.7 + +MDLINT: + # Linting is done with MarkdownLint CLI2 + # See: https://github.com/DavidAnson/markdownlint-cli2 + # We use a special container which includes all rule extensions to markdownlint + # Notably, we rely on the `max-one-sentence-per-line` rule which helps keep + # diffs of markdown files small and legible. This rule is only currently + # in the `next` branch of `markdownlint`. + # Container is built by: + # https://github.com/DavidAnson/markdownlint-cli2/blob/next/docker/Dockerfile-rules + COMMAND + + # Directory we need to run lint checks against. + ARG --required src + + # Optional `fix` argument. Must be either not set, or set to `--fix` anything else is an error. + ARG fix + + # Unlikely this ever needs to be changed. + ARG cfg_file=.markdownlint-cli2.jsonc + + # Ensure the `fix` argument only contains valid values. + RUN if [[ "${fix}" != "--fix" && "${fix}" != "" ]]; then \ + echo "Invalid value for fix argument: ${fix}. It should be either --fix or not set." >&2; \ + exit 1; \ + fi + + # Ensure the path to be checked has a mdlint config file. + RUN --no-cache if [[ ! -f $src/$cfg_file ]]; then \ + (>&2 echo "$src/$cfg_file does not exist. Can not run mdLint."); \ + exit 1; \ + fi + + # Status line for what we are about to do. + RUN --no-cache echo Linting Markdown Recursively from: $src + + # Run the linter with the given arguments, and recursively check all markdown files. + # The directory to be checked `MUST` have a `.markdownlint-sli2.jsonc` file. + # cspell: words davidanson + WITH DOCKER --pull davidanson/markdownlint-cli2-rules:next + # Lint checks should not be cached. + RUN --no-cache \ + docker run \ + --rm \ + -v $src:/workdir \ + davidanson/markdownlint-cli2-rules:next \ + "**/*.md" \ + --config $cfg_file \ + $fix + END + +# A Test and example invocation of the above UDC. +mdlint-test: + # Test Markdown lint checks. + # Run with `earthly -P +mdlint-test + LOCALLY + + ARG src=$(echo ${PWD}/../../) + + DO +MDLINT --src=${src} diff --git a/earthly/mdlint/Readme.md b/earthly/mdlint/Readme.md new file mode 100644 index 000000000..6d3c847a6 --- /dev/null +++ b/earthly/mdlint/Readme.md @@ -0,0 +1,47 @@ +# Markdown Linter + +This Earthly Target and UDC enables uniform linting of Markdown files to maintain consistency and quality. + +## How it works + +Linting is performed with the [`mdlint-cli2`](https://github.com/DavidAnson/markdownlint-cli2) program. + +Use the `MDLINT` Earthly UDC to enable uniform and consistent Markdown Format checking. + +This linter is to be used in preference to any other Markdown linter. +This is because we need to provide uniform and consistent Markdown formatting and linting across the project and between projects. + +## Invocation + +In an Earthfile in your repo, add the following: + +```earthfile +markdown-lint: + # Check Markdown in this repo. + LOCALLY + + DO github.com/input-output-hk/catalyst-ci:v1.2.0/earthly/mdlint+MDLINT --src=$(echo ${PWD}) +``` + +In this use case, the UDC is run Locally, so that the markdown in the repo can be directly checked. + +## Configuration + +Each repo will need two configuration files in the root of the repository: + +* `.markdownlint.jsonc` - Configures individual markdown rules. +* `.markdownlint-cli2.jsonc` - Configures the CLI Tool. + +The configuration should be copied from the root of the Catalyst-CI repository into the target repo. +Individual projects should have no need to individually customize these rules. +Any changes to the markdown rules should be it's own PR. +It should first be made to the Base rules in the Catalyst-CI project and only once merged, copied into all other effected repos. + +This is to ensure a consistent rule set across all repos. + +## Editor Integration + +mdlint-cli2 is integrated into VSCode and may be integrated into other Editors. + +The editor integration should pick up both the `.markdownlint.jsonc` and `.markdownlint-cli2.jsonc` configuration files. +It will then behave exactly the same as the Earthly UDC. From 4f2810daba8adc8ed6c5f0ca3d7745049f736811 Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Tue, 26 Sep 2023 18:13:03 +0700 Subject: [PATCH 05/22] refactor(docs): Slit docs into common python setup and docs specific stuff. Also add local test environment builder for docs. --- .config/dictionaries/project.dic | 3 + .gitignore | 3 +- cspell.json | 3 +- earthly/docs/Earthfile | 143 ++------- earthly/docs/README.md | 11 - earthly/docs/Readme.md | 11 + earthly/docs/poetry.lock | 283 ++++++++++++------ earthly/docs/pyproject.toml | 3 + earthly/docs/services/Readme.md | 19 ++ .../{ => services}/docker-compose.kroki.yml | 5 + .../docs/services/docker-compose.livedocs.yml | 19 ++ .../docs/services/docker-compose.sitedocs.yml | 12 + earthly/python/Earthfile | 34 +++ earthly/python/Readme.md | 35 +++ 14 files changed, 364 insertions(+), 220 deletions(-) delete mode 100644 earthly/docs/README.md create mode 100644 earthly/docs/Readme.md create mode 100644 earthly/docs/services/Readme.md rename earthly/docs/{ => services}/docker-compose.kroki.yml (99%) create mode 100644 earthly/docs/services/docker-compose.livedocs.yml create mode 100644 earthly/docs/services/docker-compose.sitedocs.yml create mode 100644 earthly/python/Earthfile create mode 100644 earthly/python/Readme.md diff --git a/.config/dictionaries/project.dic b/.config/dictionaries/project.dic index 737f4939b..4ca5f242f 100644 --- a/.config/dictionaries/project.dic +++ b/.config/dictionaries/project.dic @@ -1,8 +1,11 @@ dind +Earthfile glightbox graphviz Kroki mdlint mkdocs +multirepo PYTHONDONTWRITEBYTECODE +UDCs WORKDIR diff --git a/.gitignore b/.gitignore index 0e64f237b..3edc327fb 100644 --- a/.gitignore +++ b/.gitignore @@ -13,4 +13,5 @@ treefmt.toml /.vscode # Built docs -/earthly/docs/sample/site \ No newline at end of file +/earthly/docs/site +/earthly/docs/local \ No newline at end of file diff --git a/cspell.json b/cspell.json index f2b9205cb..02e1df7c4 100644 --- a/cspell.json +++ b/cspell.json @@ -29,6 +29,7 @@ ], "ignorePaths": [ ".config/dictionaries", - ".github" + ".github", + "earthly/docs/poetry.lock" ] } \ No newline at end of file diff --git a/earthly/docs/Earthfile b/earthly/docs/Earthfile index 6ce474b3d..48abd3951 100644 --- a/earthly/docs/Earthfile +++ b/earthly/docs/Earthfile @@ -5,42 +5,20 @@ mkdocs-material: # Derived from official mkdocs-material docker container. # https://github.com/squidfunk/mkdocs-material/blob/master/Dockerfile - # What version is this - ARG tag=latest - ARG registry - - # Installation tmp directory - WORKDIR /poetry - - # Environment Variables - ENV POETRY_HOME=/poetry - ENV PATH=$POETRY_HOME/bin:$PATH - ENV PYTHONDONTWRITEBYTECODE=1 + # Install poetry and our python dependencies. + DO ../python+POETRY_SETUP --extra_file=start.sh # Install extra debian packages we will need to support plugins. RUN apt-get update && \ apt-get install -y --no-install-recommends \ graphviz - # Install Poetry to manage python. - RUN curl -sSL https://install.python-poetry.org | python3 - - RUN poetry config installer.max-workers 10 - - # Copy our dependencies. - COPY pyproject.toml . - COPY poetry.lock . - COPY start.sh . - - # Install it all with poetry - RUN poetry install --only main --no-root - - # Trust directory, required for git >= 2.35.2 + # Trust directory, required for git >= 2.35.2. (mkdocs Git plugin requirement). RUN git config --global --add safe.directory /docs &&\ git config --global --add safe.directory /site # Carry the Kroki Docker Compose with this image. - WORKDIR /kroki - COPY docker-compose.kroki.yml ./docker-compose.yml + COPY --dir services / # Set working directory WORKDIR /docs @@ -52,85 +30,51 @@ mkdocs-material: ENTRYPOINT ["/poetry/start.sh"] CMD ["serve", "--dev-addr=0.0.0.0:8000"] - # Finish building the container, and publish to the registry - IF [ "$registry" = "" ] - ARG registry_final=$registry - ELSE - ARG registry_final=${registry}/ - END - - SAVE ARTIFACT /kroki/docker-compose.yml /kroki/docker-compose.yml + # So we can extract these files in other steps. + SAVE ARTIFACT /services - SAVE IMAGE --push ${registry_final}mkdocs-material:${tag} + SAVE IMAGE mkdocs-material +# Build the docuementation statically MKDOCS_BUILD: COMMAND - ARG src - ARG dest + ARG src=$(echo ${PWD}/src) + ARG dest=$(echo ${PWD}/site) # Ensure the mkdocs tools are built and up-to-date. BUILD +mkdocs-material FROM earthly/dind:alpine WORKDIR /build - COPY +mkdocs-material/kroki/docker-compose.yml . + COPY +mkdocs-material/services/docker-compose.kroki.yml . # Copy the src COPY --dir $src /docs # Docs need Kroki to build diagrams, so make sure its running. - WITH DOCKER --compose docker-compose.yml --load mkdocs=+mkdocs-material - RUN docker run --rm -v /docs:/docs --network=default_mkdocs mkdocs build + WITH DOCKER --compose docker-compose.kroki.yml --load mkdocs=+mkdocs-material + RUN docker run \ + --rm \ + -v /docs:/docs \ + --network=default_mkdocs \ + mkdocs build END SAVE ARTIFACT /docs/site AS LOCAL $dest -MKDOCS_SERVE: +# Setup local documentation development. +DEVELOP: COMMAND - ARG src - ARG port + + ARG dest=$(echo ${PWD}/local) # Ensure the mkdocs tools are built and up-to-date. BUILD +mkdocs-material - FROM earthly/dind:alpine - WORKDIR /build - COPY +mkdocs-material/kroki/docker-compose.yml . + # Get local development artefacts + COPY +mkdocs-material/services /local - # Copy the src - COPY --dir $src /docs - - # Docs need Kroki to build diagrams, so make sure its running. - WITH DOCKER --compose docker-compose.yml --load mkdocs=+mkdocs-material - RUN --privileged docker run --rm -p $port:8000 -v /docs:/docs --network=default_mkdocs mkdocs - END - -MDLINT: - # Linting is done with MarkdownLint CLI2 - # See: https://github.com/DavidAnson/markdownlint-cli2 - COMMAND - - ARG fix - ARG src - - RUN --no-cache echo SRC: $src - - # cspell: words davidanson - WITH DOCKER --pull davidanson/markdownlint-cli2-rules:next - #RUN --no-cache docker run --rm -v $src:/workdir --entrypoint sh davidanson/markdownlint-cli2-rules:next -c "ls -al; ls -al docs" - RUN --no-cache docker run --rm -v $src:/workdir davidanson/markdownlint-cli2-rules:next "**/*.md" --config .markdownlint-cli2.jsonc $fix - END - -CSPELL: - # Spell checking all code is done with cspell - # See: cspell.org - COMMAND - - ARG src - - WITH DOCKER --pull ghcr.io/streetsidesoftware/cspell:latest - RUN --no-cache docker run --rm -v $src:/workdir ghcr.io/streetsidesoftware/cspell:latest lint . - END + SAVE ARTIFACT /local AS LOCAL $dest build-test: @@ -138,38 +82,11 @@ build-test: # Run with `earthly -P +build-test` LOCALLY - DO +MKDOCS_BUILD --src=./sample --dest=./output/site - -serve-test: - # Need a better answer. Can't export the port so we can't see the served docs. - LOCALLY - - DO +MKDOCS_SERVE --src=./sample --port=10080 - -mdlint-test: - # Test Markdown lint checks. - # Run with `earthly -P +mdlint-test - LOCALLY - - ARG src=$(echo ${PWD}/../../) - - DO +MDLINT --src=${src} - -cspell-test: - # Test spellcheck lint checks. - # Run with `earthly -P +cspell-test - LOCALLY - - DO +CSPELL --src=$(echo ${PWD}/../../) - + # Save development artefacts into the /local directory. + DO +MKDOCS_BUILD --src=./sample --dest=./site -#src: -# FROM +poetry -# -# COPY --dir src mkdocs.yml . +# Target which setsup the documentation to be served locally. +mkdocs-develop-test: + FROM alpine:latest -#build: -# FROM +src -# -# RUN poetry run mkdocs build -# SAVE ARTIFACT site \ No newline at end of file + DO +DEVELOP --dest=./local diff --git a/earthly/docs/README.md b/earthly/docs/README.md deleted file mode 100644 index 0e7064e02..000000000 --- a/earthly/docs/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Catalyst SRE Documentation - -This directory contains the source code for the Catalyst SRE documentation. - -## Build - -To build and save the final artifact locally: - -```bash -earthly --artifact +build/site . -``` diff --git a/earthly/docs/Readme.md b/earthly/docs/Readme.md new file mode 100644 index 000000000..4e8708f0b --- /dev/null +++ b/earthly/docs/Readme.md @@ -0,0 +1,11 @@ +# Catalyst Documentation Builders and UDCs + +This directory contains targets for the Catalyst Documentation builders, and associated UDCs. + +## Build + +To build and save the final artifact locally: + +```bash +earthly --artifact +build/site . +``` diff --git a/earthly/docs/poetry.lock b/earthly/docs/poetry.lock index e459fea42..b1b0f288b 100644 --- a/earthly/docs/poetry.lock +++ b/earthly/docs/poetry.lock @@ -295,6 +295,19 @@ webencodings = "*" doc = ["sphinx", "sphinx_rtd_theme"] test = ["flake8", "isort", "pytest"] +[[package]] +name = "dacite" +version = "1.8.1" +description = "Simple creation of data classes from dictionaries." +optional = false +python-versions = ">=3.6" +files = [ + {file = "dacite-1.8.1-py3-none-any.whl", hash = "sha256:cc31ad6fdea1f49962ea42db9421772afe01ac5442380d9a99fcf3d188c61afe"}, +] + +[package.extras] +dev = ["black", "coveralls", "mypy", "pre-commit", "pylint", "pytest (>=5)", "pytest-benchmark", "pytest-cov"] + [[package]] name = "defusedxml" version = "0.7.1" @@ -687,13 +700,13 @@ requests = ">=2.27.0" [[package]] name = "mkdocs-material" -version = "9.4.1" +version = "9.4.2" description = "Documentation that simply works" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material-9.4.1-py3-none-any.whl", hash = "sha256:27e74b5b14b8b797074759beb85876ca6425e60c78f70e76be0c209627eb5199"}, - {file = "mkdocs_material-9.4.1.tar.gz", hash = "sha256:1495273cfce13ab52bcfcc49fa6fac779ae75818dfe566ed149d9d3aea7d8439"}, + {file = "mkdocs_material-9.4.2-py3-none-any.whl", hash = "sha256:8651ff451f84681df9d2e3388906eee63c866576d98d6bb542826f83a091b289"}, + {file = "mkdocs_material-9.4.2.tar.gz", hash = "sha256:d53b17d058e70efd04c281f9b384ca10fb1f0bfecfe85dacdadad891bb826e3d"}, ] [package.dependencies] @@ -713,7 +726,7 @@ paginate = ">=0.5,<1.0" pillow = {version = ">=9.4,<10.0", optional = true, markers = "extra == \"imaging\""} pygments = ">=2.16,<3.0" pymdown-extensions = ">=10.2,<11.0" -regex = ">=2022.4,<2023.0" +regex = ">=2022.4" requests = ">=2.26,<3.0" [package.extras] @@ -749,6 +762,23 @@ htmlmin2 = ">=0.1.13" jsmin = ">=3.0.1" mkdocs = ">=1.4.1" +[[package]] +name = "mkdocs-multirepo-plugin" +version = "0.6.3" +description = "Build documentation in multiple repos into one site." +optional = false +python-versions = "*" +files = [ + {file = "mkdocs_multirepo_plugin-0.6.3-py2.py3-none-any.whl", hash = "sha256:9a5052d8da8b7dff0c600583004af64ff434cef690b414ec1fe183ddc7735ca3"}, + {file = "mkdocs_multirepo_plugin-0.6.3.tar.gz", hash = "sha256:6271cf0cbdbbdc4498c7786b4349fdec367dc889a40326d04c2244db0891ef26"}, +] + +[package.dependencies] +dacite = {version = ">=1.8.0,<2.0.0", markers = "python_version >= \"3.6\""} +mkdocs = {version = ">=1.0.4", markers = "python_version >= \"3.6\""} +python-slugify = {version = "*", markers = "python_version >= \"2.7\" and python_version < \"2.8\" or python_full_version >= \"3.6.0\""} +typing-inspect = {version = ">=0.8.0,<0.9.0", markers = "python_version >= \"3.6\""} + [[package]] name = "mkdocs-redirects" version = "1.2.1" @@ -787,6 +817,17 @@ tzdata = {version = "==2023.*", markers = "python_version >= \"3.9\" and sys_pla dev = ["black", "feedparser (>=6.0,<6.1)", "flake8 (>=4,<7)", "pre-commit (>=3,<4)", "pytest-cov (>=4,<4.2)", "validator-collection (>=1.5,<1.6)"] doc = ["mkdocs-bootswatch (>=1,<2)", "mkdocs-minify-plugin (==0.6.*)", "pygments (>=2.5,<3)", "pymdown-extensions (>=10,<11)"] +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + [[package]] name = "packaging" version = "23.1" @@ -970,6 +1011,23 @@ files = [ [package.dependencies] six = ">=1.5" +[[package]] +name = "python-slugify" +version = "8.0.1" +description = "A Python slugify application that also handles Unicode" +optional = false +python-versions = ">=3.7" +files = [ + {file = "python-slugify-8.0.1.tar.gz", hash = "sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27"}, + {file = "python_slugify-8.0.1-py2.py3-none-any.whl", hash = "sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395"}, +] + +[package.dependencies] +text-unidecode = ">=1.3" + +[package.extras] +unidecode = ["Unidecode (>=1.1.1)"] + [[package]] name = "pytz" version = "2023.3.post1" @@ -1046,99 +1104,99 @@ pyyaml = "*" [[package]] name = "regex" -version = "2022.10.31" +version = "2023.8.8" description = "Alternative regular expression module, to replace re." optional = false python-versions = ">=3.6" files = [ - {file = "regex-2022.10.31-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a8ff454ef0bb061e37df03557afda9d785c905dab15584860f982e88be73015f"}, - {file = "regex-2022.10.31-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1eba476b1b242620c266edf6325b443a2e22b633217a9835a52d8da2b5c051f9"}, - {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0e5af9a9effb88535a472e19169e09ce750c3d442fb222254a276d77808620b"}, - {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d03fe67b2325cb3f09be029fd5da8df9e6974f0cde2c2ac6a79d2634e791dd57"}, - {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9d0b68ac1743964755ae2d89772c7e6fb0118acd4d0b7464eaf3921c6b49dd4"}, - {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a45b6514861916c429e6059a55cf7db74670eaed2052a648e3e4d04f070e001"}, - {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b0886885f7323beea6f552c28bff62cbe0983b9fbb94126531693ea6c5ebb90"}, - {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5aefb84a301327ad115e9d346c8e2760009131d9d4b4c6b213648d02e2abe144"}, - {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:702d8fc6f25bbf412ee706bd73019da5e44a8400861dfff7ff31eb5b4a1276dc"}, - {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a3c1ebd4ed8e76e886507c9eddb1a891673686c813adf889b864a17fafcf6d66"}, - {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:50921c140561d3db2ab9f5b11c5184846cde686bb5a9dc64cae442926e86f3af"}, - {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:7db345956ecce0c99b97b042b4ca7326feeec6b75facd8390af73b18e2650ffc"}, - {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:763b64853b0a8f4f9cfb41a76a4a85a9bcda7fdda5cb057016e7706fde928e66"}, - {file = "regex-2022.10.31-cp310-cp310-win32.whl", hash = "sha256:44136355e2f5e06bf6b23d337a75386371ba742ffa771440b85bed367c1318d1"}, - {file = "regex-2022.10.31-cp310-cp310-win_amd64.whl", hash = "sha256:bfff48c7bd23c6e2aec6454aaf6edc44444b229e94743b34bdcdda2e35126cf5"}, - {file = "regex-2022.10.31-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4b4b1fe58cd102d75ef0552cf17242705ce0759f9695334a56644ad2d83903fe"}, - {file = "regex-2022.10.31-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:542e3e306d1669b25936b64917285cdffcd4f5c6f0247636fec037187bd93542"}, - {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c27cc1e4b197092e50ddbf0118c788d9977f3f8f35bfbbd3e76c1846a3443df7"}, - {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8e38472739028e5f2c3a4aded0ab7eadc447f0d84f310c7a8bb697ec417229e"}, - {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76c598ca73ec73a2f568e2a72ba46c3b6c8690ad9a07092b18e48ceb936e9f0c"}, - {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c28d3309ebd6d6b2cf82969b5179bed5fefe6142c70f354ece94324fa11bf6a1"}, - {file = "regex-2022.10.31-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9af69f6746120998cd9c355e9c3c6aec7dff70d47247188feb4f829502be8ab4"}, - {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a5f9505efd574d1e5b4a76ac9dd92a12acb2b309551e9aa874c13c11caefbe4f"}, - {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5ff525698de226c0ca743bfa71fc6b378cda2ddcf0d22d7c37b1cc925c9650a5"}, - {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4fe7fda2fe7c8890d454f2cbc91d6c01baf206fbc96d89a80241a02985118c0c"}, - {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2cdc55ca07b4e70dda898d2ab7150ecf17c990076d3acd7a5f3b25cb23a69f1c"}, - {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:44a6c2f6374e0033873e9ed577a54a3602b4f609867794c1a3ebba65e4c93ee7"}, - {file = "regex-2022.10.31-cp311-cp311-win32.whl", hash = "sha256:d8716f82502997b3d0895d1c64c3b834181b1eaca28f3f6336a71777e437c2af"}, - {file = "regex-2022.10.31-cp311-cp311-win_amd64.whl", hash = "sha256:61edbca89aa3f5ef7ecac8c23d975fe7261c12665f1d90a6b1af527bba86ce61"}, - {file = "regex-2022.10.31-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a069c8483466806ab94ea9068c34b200b8bfc66b6762f45a831c4baaa9e8cdd"}, - {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d26166acf62f731f50bdd885b04b38828436d74e8e362bfcb8df221d868b5d9b"}, - {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac741bf78b9bb432e2d314439275235f41656e189856b11fb4e774d9f7246d81"}, - {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75f591b2055523fc02a4bbe598aa867df9e953255f0b7f7715d2a36a9c30065c"}, - {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b30bddd61d2a3261f025ad0f9ee2586988c6a00c780a2fb0a92cea2aa702c54"}, - {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef4163770525257876f10e8ece1cf25b71468316f61451ded1a6f44273eedeb5"}, - {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7b280948d00bd3973c1998f92e22aa3ecb76682e3a4255f33e1020bd32adf443"}, - {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:d0213671691e341f6849bf33cd9fad21f7b1cb88b89e024f33370733fec58742"}, - {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:22e7ebc231d28393dfdc19b185d97e14a0f178bedd78e85aad660e93b646604e"}, - {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:8ad241da7fac963d7573cc67a064c57c58766b62a9a20c452ca1f21050868dfa"}, - {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:586b36ebda81e6c1a9c5a5d0bfdc236399ba6595e1397842fd4a45648c30f35e"}, - {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4"}, - {file = "regex-2022.10.31-cp36-cp36m-win32.whl", hash = "sha256:144486e029793a733e43b2e37df16a16df4ceb62102636ff3db6033994711066"}, - {file = "regex-2022.10.31-cp36-cp36m-win_amd64.whl", hash = "sha256:c14b63c9d7bab795d17392c7c1f9aaabbffd4cf4387725a0ac69109fb3b550c6"}, - {file = "regex-2022.10.31-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4cac3405d8dda8bc6ed499557625585544dd5cbf32072dcc72b5a176cb1271c8"}, - {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23cbb932cc53a86ebde0fb72e7e645f9a5eec1a5af7aa9ce333e46286caef783"}, - {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74bcab50a13960f2a610cdcd066e25f1fd59e23b69637c92ad470784a51b1347"}, - {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78d680ef3e4d405f36f0d6d1ea54e740366f061645930072d39bca16a10d8c93"}, - {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce6910b56b700bea7be82c54ddf2e0ed792a577dfaa4a76b9af07d550af435c6"}, - {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:659175b2144d199560d99a8d13b2228b85e6019b6e09e556209dfb8c37b78a11"}, - {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1ddf14031a3882f684b8642cb74eea3af93a2be68893901b2b387c5fd92a03ec"}, - {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b683e5fd7f74fb66e89a1ed16076dbab3f8e9f34c18b1979ded614fe10cdc4d9"}, - {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2bde29cc44fa81c0a0c8686992c3080b37c488df167a371500b2a43ce9f026d1"}, - {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4919899577ba37f505aaebdf6e7dc812d55e8f097331312db7f1aab18767cce8"}, - {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:9c94f7cc91ab16b36ba5ce476f1904c91d6c92441f01cd61a8e2729442d6fcf5"}, - {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae1e96785696b543394a4e3f15f3f225d44f3c55dafe3f206493031419fedf95"}, - {file = "regex-2022.10.31-cp37-cp37m-win32.whl", hash = "sha256:c670f4773f2f6f1957ff8a3962c7dd12e4be54d05839b216cb7fd70b5a1df394"}, - {file = "regex-2022.10.31-cp37-cp37m-win_amd64.whl", hash = "sha256:8e0caeff18b96ea90fc0eb6e3bdb2b10ab5b01a95128dfeccb64a7238decf5f0"}, - {file = "regex-2022.10.31-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:131d4be09bea7ce2577f9623e415cab287a3c8e0624f778c1d955ec7c281bd4d"}, - {file = "regex-2022.10.31-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e613a98ead2005c4ce037c7b061f2409a1a4e45099edb0ef3200ee26ed2a69a8"}, - {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad"}, - {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa62a07ac93b7cb6b7d0389d8ef57ffc321d78f60c037b19dfa78d6b17c928ee"}, - {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5352bea8a8f84b89d45ccc503f390a6be77917932b1c98c4cdc3565137acc714"}, - {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20f61c9944f0be2dc2b75689ba409938c14876c19d02f7585af4460b6a21403e"}, - {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29c04741b9ae13d1e94cf93fca257730b97ce6ea64cfe1eba11cf9ac4e85afb6"}, - {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:543883e3496c8b6d58bd036c99486c3c8387c2fc01f7a342b760c1ea3158a318"}, - {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7a8b43ee64ca8f4befa2bea4083f7c52c92864d8518244bfa6e88c751fa8fff"}, - {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6a9a19bea8495bb419dc5d38c4519567781cd8d571c72efc6aa959473d10221a"}, - {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6ffd55b5aedc6f25fd8d9f905c9376ca44fcf768673ffb9d160dd6f409bfda73"}, - {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4bdd56ee719a8f751cf5a593476a441c4e56c9b64dc1f0f30902858c4ef8771d"}, - {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ca88da1bd78990b536c4a7765f719803eb4f8f9971cc22d6ca965c10a7f2c4c"}, - {file = "regex-2022.10.31-cp38-cp38-win32.whl", hash = "sha256:5a260758454580f11dd8743fa98319bb046037dfab4f7828008909d0aa5292bc"}, - {file = "regex-2022.10.31-cp38-cp38-win_amd64.whl", hash = "sha256:5e6a5567078b3eaed93558842346c9d678e116ab0135e22eb72db8325e90b453"}, - {file = "regex-2022.10.31-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5217c25229b6a85049416a5c1e6451e9060a1edcf988641e309dbe3ab26d3e49"}, - {file = "regex-2022.10.31-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4bf41b8b0a80708f7e0384519795e80dcb44d7199a35d52c15cc674d10b3081b"}, - {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf0da36a212978be2c2e2e2d04bdff46f850108fccc1851332bcae51c8907cc"}, - {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d403d781b0e06d2922435ce3b8d2376579f0c217ae491e273bab8d092727d244"}, - {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a37d51fa9a00d265cf73f3de3930fa9c41548177ba4f0faf76e61d512c774690"}, - {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4f781ffedd17b0b834c8731b75cce2639d5a8afe961c1e58ee7f1f20b3af185"}, - {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d243b36fbf3d73c25e48014961e83c19c9cc92530516ce3c43050ea6276a2ab7"}, - {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:370f6e97d02bf2dd20d7468ce4f38e173a124e769762d00beadec3bc2f4b3bc4"}, - {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:597f899f4ed42a38df7b0e46714880fb4e19a25c2f66e5c908805466721760f5"}, - {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7dbdce0c534bbf52274b94768b3498abdf675a691fec5f751b6057b3030f34c1"}, - {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:22960019a842777a9fa5134c2364efaed5fbf9610ddc5c904bd3a400973b0eb8"}, - {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7f5a3ffc731494f1a57bd91c47dc483a1e10048131ffb52d901bfe2beb6102e8"}, - {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7ef6b5942e6bfc5706301a18a62300c60db9af7f6368042227ccb7eeb22d0892"}, - {file = "regex-2022.10.31-cp39-cp39-win32.whl", hash = "sha256:395161bbdbd04a8333b9ff9763a05e9ceb4fe210e3c7690f5e68cedd3d65d8e1"}, - {file = "regex-2022.10.31-cp39-cp39-win_amd64.whl", hash = "sha256:957403a978e10fb3ca42572a23e6f7badff39aa1ce2f4ade68ee452dc6807692"}, - {file = "regex-2022.10.31.tar.gz", hash = "sha256:a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83"}, + {file = "regex-2023.8.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:88900f521c645f784260a8d346e12a1590f79e96403971241e64c3a265c8ecdb"}, + {file = "regex-2023.8.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3611576aff55918af2697410ff0293d6071b7e00f4b09e005d614686ac4cd57c"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0ccc8f2698f120e9e5742f4b38dc944c38744d4bdfc427616f3a163dd9de5"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c662a4cbdd6280ee56f841f14620787215a171c4e2d1744c9528bed8f5816c96"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf0633e4a1b667bfe0bb10b5e53fe0d5f34a6243ea2530eb342491f1adf4f739"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:551ad543fa19e94943c5b2cebc54c73353ffff08228ee5f3376bd27b3d5b9800"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54de2619f5ea58474f2ac211ceea6b615af2d7e4306220d4f3fe690c91988a61"}, + {file = "regex-2023.8.8-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5ec4b3f0aebbbe2fc0134ee30a791af522a92ad9f164858805a77442d7d18570"}, + {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3ae646c35cb9f820491760ac62c25b6d6b496757fda2d51be429e0e7b67ae0ab"}, + {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ca339088839582d01654e6f83a637a4b8194d0960477b9769d2ff2cfa0fa36d2"}, + {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:d9b6627408021452dcd0d2cdf8da0534e19d93d070bfa8b6b4176f99711e7f90"}, + {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:bd3366aceedf274f765a3a4bc95d6cd97b130d1dda524d8f25225d14123c01db"}, + {file = "regex-2023.8.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7aed90a72fc3654fba9bc4b7f851571dcc368120432ad68b226bd593f3f6c0b7"}, + {file = "regex-2023.8.8-cp310-cp310-win32.whl", hash = "sha256:80b80b889cb767cc47f31d2b2f3dec2db8126fbcd0cff31b3925b4dc6609dcdb"}, + {file = "regex-2023.8.8-cp310-cp310-win_amd64.whl", hash = "sha256:b82edc98d107cbc7357da7a5a695901b47d6eb0420e587256ba3ad24b80b7d0b"}, + {file = "regex-2023.8.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1e7d84d64c84ad97bf06f3c8cb5e48941f135ace28f450d86af6b6512f1c9a71"}, + {file = "regex-2023.8.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce0f9fbe7d295f9922c0424a3637b88c6c472b75eafeaff6f910494a1fa719ef"}, + {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06c57e14ac723b04458df5956cfb7e2d9caa6e9d353c0b4c7d5d54fcb1325c46"}, + {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7a9aaa5a1267125eef22cef3b63484c3241aaec6f48949b366d26c7250e0357"}, + {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b7408511fca48a82a119d78a77c2f5eb1b22fe88b0d2450ed0756d194fe7a9a"}, + {file = "regex-2023.8.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14dc6f2d88192a67d708341f3085df6a4f5a0c7b03dec08d763ca2cd86e9f559"}, + {file = "regex-2023.8.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48c640b99213643d141550326f34f0502fedb1798adb3c9eb79650b1ecb2f177"}, + {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0085da0f6c6393428bf0d9c08d8b1874d805bb55e17cb1dfa5ddb7cfb11140bf"}, + {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:964b16dcc10c79a4a2be9f1273fcc2684a9eedb3906439720598029a797b46e6"}, + {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7ce606c14bb195b0e5108544b540e2c5faed6843367e4ab3deb5c6aa5e681208"}, + {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:40f029d73b10fac448c73d6eb33d57b34607f40116e9f6e9f0d32e9229b147d7"}, + {file = "regex-2023.8.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3b8e6ea6be6d64104d8e9afc34c151926f8182f84e7ac290a93925c0db004bfd"}, + {file = "regex-2023.8.8-cp311-cp311-win32.whl", hash = "sha256:942f8b1f3b223638b02df7df79140646c03938d488fbfb771824f3d05fc083a8"}, + {file = "regex-2023.8.8-cp311-cp311-win_amd64.whl", hash = "sha256:51d8ea2a3a1a8fe4f67de21b8b93757005213e8ac3917567872f2865185fa7fb"}, + {file = "regex-2023.8.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e951d1a8e9963ea51efd7f150450803e3b95db5939f994ad3d5edac2b6f6e2b4"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:704f63b774218207b8ccc6c47fcef5340741e5d839d11d606f70af93ee78e4d4"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22283c769a7b01c8ac355d5be0715bf6929b6267619505e289f792b01304d898"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:91129ff1bb0619bc1f4ad19485718cc623a2dc433dff95baadbf89405c7f6b57"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de35342190deb7b866ad6ba5cbcccb2d22c0487ee0cbb251efef0843d705f0d4"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b993b6f524d1e274a5062488a43e3f9f8764ee9745ccd8e8193df743dbe5ee61"}, + {file = "regex-2023.8.8-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3026cbcf11d79095a32d9a13bbc572a458727bd5b1ca332df4a79faecd45281c"}, + {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:293352710172239bf579c90a9864d0df57340b6fd21272345222fb6371bf82b3"}, + {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:d909b5a3fff619dc7e48b6b1bedc2f30ec43033ba7af32f936c10839e81b9217"}, + {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:3d370ff652323c5307d9c8e4c62efd1956fb08051b0e9210212bc51168b4ff56"}, + {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:b076da1ed19dc37788f6a934c60adf97bd02c7eea461b73730513921a85d4235"}, + {file = "regex-2023.8.8-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:e9941a4ada58f6218694f382e43fdd256e97615db9da135e77359da257a7168b"}, + {file = "regex-2023.8.8-cp36-cp36m-win32.whl", hash = "sha256:a8c65c17aed7e15a0c824cdc63a6b104dfc530f6fa8cb6ac51c437af52b481c7"}, + {file = "regex-2023.8.8-cp36-cp36m-win_amd64.whl", hash = "sha256:aadf28046e77a72f30dcc1ab185639e8de7f4104b8cb5c6dfa5d8ed860e57236"}, + {file = "regex-2023.8.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:423adfa872b4908843ac3e7a30f957f5d5282944b81ca0a3b8a7ccbbfaa06103"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ae594c66f4a7e1ea67232a0846649a7c94c188d6c071ac0210c3e86a5f92109"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e51c80c168074faa793685656c38eb7a06cbad7774c8cbc3ea05552d615393d8"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09b7f4c66aa9d1522b06e31a54f15581c37286237208df1345108fcf4e050c18"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e73e5243af12d9cd6a9d6a45a43570dbe2e5b1cdfc862f5ae2b031e44dd95a8"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:941460db8fe3bd613db52f05259c9336f5a47ccae7d7def44cc277184030a116"}, + {file = "regex-2023.8.8-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f0ccf3e01afeb412a1a9993049cb160d0352dba635bbca7762b2dc722aa5742a"}, + {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:2e9216e0d2cdce7dbc9be48cb3eacb962740a09b011a116fd7af8c832ab116ca"}, + {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5cd9cd7170459b9223c5e592ac036e0704bee765706445c353d96f2890e816c8"}, + {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4873ef92e03a4309b3ccd8281454801b291b689f6ad45ef8c3658b6fa761d7ac"}, + {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:239c3c2a339d3b3ddd51c2daef10874410917cd2b998f043c13e2084cb191684"}, + {file = "regex-2023.8.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1005c60ed7037be0d9dea1f9c53cc42f836188227366370867222bda4c3c6bd7"}, + {file = "regex-2023.8.8-cp37-cp37m-win32.whl", hash = "sha256:e6bd1e9b95bc5614a7a9c9c44fde9539cba1c823b43a9f7bc11266446dd568e3"}, + {file = "regex-2023.8.8-cp37-cp37m-win_amd64.whl", hash = "sha256:9a96edd79661e93327cfeac4edec72a4046e14550a1d22aa0dd2e3ca52aec921"}, + {file = "regex-2023.8.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2181c20ef18747d5f4a7ea513e09ea03bdd50884a11ce46066bb90fe4213675"}, + {file = "regex-2023.8.8-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a2ad5add903eb7cdde2b7c64aaca405f3957ab34f16594d2b78d53b8b1a6a7d6"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9233ac249b354c54146e392e8a451e465dd2d967fc773690811d3a8c240ac601"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:920974009fb37b20d32afcdf0227a2e707eb83fe418713f7a8b7de038b870d0b"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd2b6c5dfe0929b6c23dde9624483380b170b6e34ed79054ad131b20203a1a63"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96979d753b1dc3b2169003e1854dc67bfc86edf93c01e84757927f810b8c3c93"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2ae54a338191e1356253e7883d9d19f8679b6143703086245fb14d1f20196be9"}, + {file = "regex-2023.8.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2162ae2eb8b079622176a81b65d486ba50b888271302190870b8cc488587d280"}, + {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c884d1a59e69e03b93cf0dfee8794c63d7de0ee8f7ffb76e5f75be8131b6400a"}, + {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cf9273e96f3ee2ac89ffcb17627a78f78e7516b08f94dc435844ae72576a276e"}, + {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:83215147121e15d5f3a45d99abeed9cf1fe16869d5c233b08c56cdf75f43a504"}, + {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:3f7454aa427b8ab9101f3787eb178057c5250478e39b99540cfc2b889c7d0586"}, + {file = "regex-2023.8.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0640913d2c1044d97e30d7c41728195fc37e54d190c5385eacb52115127b882"}, + {file = "regex-2023.8.8-cp38-cp38-win32.whl", hash = "sha256:0c59122ceccb905a941fb23b087b8eafc5290bf983ebcb14d2301febcbe199c7"}, + {file = "regex-2023.8.8-cp38-cp38-win_amd64.whl", hash = "sha256:c12f6f67495ea05c3d542d119d270007090bad5b843f642d418eb601ec0fa7be"}, + {file = "regex-2023.8.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:82cd0a69cd28f6cc3789cc6adeb1027f79526b1ab50b1f6062bbc3a0ccb2dbc3"}, + {file = "regex-2023.8.8-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bb34d1605f96a245fc39790a117ac1bac8de84ab7691637b26ab2c5efb8f228c"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:987b9ac04d0b38ef4f89fbc035e84a7efad9cdd5f1e29024f9289182c8d99e09"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9dd6082f4e2aec9b6a0927202c85bc1b09dcab113f97265127c1dc20e2e32495"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7eb95fe8222932c10d4436e7a6f7c99991e3fdd9f36c949eff16a69246dee2dc"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7098c524ba9f20717a56a8d551d2ed491ea89cbf37e540759ed3b776a4f8d6eb"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b694430b3f00eb02c594ff5a16db30e054c1b9589a043fe9174584c6efa8033"}, + {file = "regex-2023.8.8-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2aeab3895d778155054abea5238d0eb9a72e9242bd4b43f42fd911ef9a13470"}, + {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:988631b9d78b546e284478c2ec15c8a85960e262e247b35ca5eaf7ee22f6050a"}, + {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:67ecd894e56a0c6108ec5ab1d8fa8418ec0cff45844a855966b875d1039a2e34"}, + {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:14898830f0a0eb67cae2bbbc787c1a7d6e34ecc06fbd39d3af5fe29a4468e2c9"}, + {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:f2200e00b62568cfd920127782c61bc1c546062a879cdc741cfcc6976668dfcf"}, + {file = "regex-2023.8.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9691a549c19c22d26a4f3b948071e93517bdf86e41b81d8c6ac8a964bb71e5a6"}, + {file = "regex-2023.8.8-cp39-cp39-win32.whl", hash = "sha256:6ab2ed84bf0137927846b37e882745a827458689eb969028af8032b1b3dac78e"}, + {file = "regex-2023.8.8-cp39-cp39-win_amd64.whl", hash = "sha256:5543c055d8ec7801901e1193a51570643d6a6ab8751b1f7dd9af71af467538bb"}, + {file = "regex-2023.8.8.tar.gz", hash = "sha256:fcbdc5f2b0f1cd0f6a56cdb46fe41d2cce1e644e3b68832f3eeebc5fb0f7712e"}, ] [[package]] @@ -1195,6 +1253,17 @@ files = [ {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, ] +[[package]] +name = "text-unidecode" +version = "1.3" +description = "The most basic Text::Unidecode port" +optional = false +python-versions = "*" +files = [ + {file = "text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93"}, + {file = "text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8"}, +] + [[package]] name = "tinycss2" version = "1.2.1" @@ -1213,6 +1282,32 @@ webencodings = ">=0.4" doc = ["sphinx", "sphinx_rtd_theme"] test = ["flake8", "isort", "pytest"] +[[package]] +name = "typing-extensions" +version = "4.8.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.8.0-py3-none-any.whl", hash = "sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0"}, + {file = "typing_extensions-4.8.0.tar.gz", hash = "sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef"}, +] + +[[package]] +name = "typing-inspect" +version = "0.8.0" +description = "Runtime inspection utilities for typing module." +optional = false +python-versions = "*" +files = [ + {file = "typing_inspect-0.8.0-py3-none-any.whl", hash = "sha256:5fbf9c1e65d4fa01e701fe12a5bca6c6e08a4ffd5bc60bfac028253a447c5188"}, + {file = "typing_inspect-0.8.0.tar.gz", hash = "sha256:8b1ff0c400943b6145df8119c41c244ca8207f1f10c9c057aeed1560e4806e3d"}, +] + +[package.dependencies] +mypy-extensions = ">=0.3.0" +typing-extensions = ">=3.7.4" + [[package]] name = "tzdata" version = "2023.3" @@ -1294,4 +1389,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "a122fb54c7ab5a16ec182623ee1e607a6a66a4563a3ae601d1c8c7704e63a7c6" +content-hash = "1b0dfe673cd70e6d24a4e23da9801d8c92a9ec57779cc3fcab1ee8c58703dddb" diff --git a/earthly/docs/pyproject.toml b/earthly/docs/pyproject.toml index bfa5144bd..49be51826 100644 --- a/earthly/docs/pyproject.toml +++ b/earthly/docs/pyproject.toml @@ -23,6 +23,9 @@ mkdocs-glightbox = "^0.3.4" # https://github.com/AVATEAM-IT-SYSTEMHAUS/mkdocs-kroki-plugin/tree/main mkdocs-kroki-plugin = "^0.6.1" +# https://github.com/jdoiro3/mkdocs-multirepo-plugin +mkdocs-multirepo-plugin = "^v0.6.3" + ### DO NOT ENABLE THESE BAD PLUGINS. ### DOCUMENTED HERE FOR INFORMATIONAL PURPOSES. # https://github.com/zoni/mkdocs-diagrams diff --git a/earthly/docs/services/Readme.md b/earthly/docs/services/Readme.md new file mode 100644 index 000000000..b04beabf2 --- /dev/null +++ b/earthly/docs/services/Readme.md @@ -0,0 +1,19 @@ +# Documentation Service Definitions + + + +## Live Documentation + +To build documentation live, from the root of the repo run: + +```sh +docker compose up -f local/docker-compose.livedocs.yml up --abort-on-container-exit +``` + +Go to [Live documentation](http://localhost:10080) to view live docs. + +## Inspect built static site documentation + +```sh +docker compose up -f local/docker-compose.sitedocs.yml up +``` diff --git a/earthly/docs/docker-compose.kroki.yml b/earthly/docs/services/docker-compose.kroki.yml similarity index 99% rename from earthly/docs/docker-compose.kroki.yml rename to earthly/docs/services/docker-compose.kroki.yml index 776da6c32..0545a44a3 100644 --- a/earthly/docs/docker-compose.kroki.yml +++ b/earthly/docs/services/docker-compose.kroki.yml @@ -26,30 +26,35 @@ services: # - "8000:8000" networks: - mkdocs + blockdiag: image: yuzutech/kroki-blockdiag expose: - "8001" networks: - mkdocs + mermaid: image: yuzutech/kroki-mermaid expose: - "8002" networks: - mkdocs + bpmn: image: yuzutech/kroki-bpmn expose: - "8003" networks: - mkdocs + excalidraw: image: yuzutech/kroki-excalidraw expose: - "8004" networks: - mkdocs + wireviz: image: yuzutech/kroki-wireviz ports: diff --git a/earthly/docs/services/docker-compose.livedocs.yml b/earthly/docs/services/docker-compose.livedocs.yml new file mode 100644 index 000000000..628892cdf --- /dev/null +++ b/earthly/docs/services/docker-compose.livedocs.yml @@ -0,0 +1,19 @@ +version: "3" + +# This starts Kroki, for the Live Site to run against. +include: + - docker-compose.kroki.yml + +services: + # Live document editing + live-docs: + image: mkdocs-material:latest + depends_on: + - kroki + volumes: + - ${LIVE_PATH:-./docs}:/docs + ports: + - ${LIVE_PORT:-10080}:10081 + restart: no + networks: + - mkdocs diff --git a/earthly/docs/services/docker-compose.sitedocs.yml b/earthly/docs/services/docker-compose.sitedocs.yml new file mode 100644 index 000000000..2c6ef2d90 --- /dev/null +++ b/earthly/docs/services/docker-compose.sitedocs.yml @@ -0,0 +1,12 @@ +version: "3" + +services: + # Validating the built site. + site-docs: + image: nginx:latest + ports: + - ${SITE_PORT:-10081}:80 + restart: no + volumes: + - ${SITE_PATH:-./docs/site}:/usr/share/nginx/html + diff --git a/earthly/python/Earthfile b/earthly/python/Earthfile new file mode 100644 index 000000000..447ec1e67 --- /dev/null +++ b/earthly/python/Earthfile @@ -0,0 +1,34 @@ +# Common Python UDC's and Builders. +VERSION 0.7 +FROM python:3.11-bullseye + +# Common Poetry setup +# Parameters: +# opts : Options passed to the `poetry install` command. +# extra_file: An extra file to copy into the poetry path. +POETRY_SETUP: + COMMAND + ARG opts + ARG extra_file + + # Poetry Installation directory. + # Gives poetry and our poetry project a reliable location. + WORKDIR /poetry + ENV POETRY_HOME=/poetry + ENV PATH=$POETRY_HOME/bin:$PATH + + # Stop python code running in the container saving pointless .pyc files. + ENV PYTHONDONTWRITEBYTECODE=1 + + # Install Poetry to manage python. + RUN curl -sSL https://install.python-poetry.org | python3 - + # Prevent warning when running on machines with more than 6 cores. + # "Connection pool is full, discarding connection: pypi.org. Connection pool size: 10" + RUN poetry config installer.max-workers 10 + + # Copy our dependencies. + COPY pyproject.toml poetry.lock $extra_file . + + # Install it all with poetry + RUN poetry install $opts + diff --git a/earthly/python/Readme.md b/earthly/python/Readme.md new file mode 100644 index 000000000..df2f5229d --- /dev/null +++ b/earthly/python/Readme.md @@ -0,0 +1,35 @@ +# Python Earthly Build Containers and UDCs + +This repo defines common python targets and UDCs for use with python. + +## User Defined Commands + +### POETRY_SETUP + +This UDC setus up a python based container that uses poetry for dependency management. +Once the UDC has run, the Earthly target that invoked it will + +#### Invocation + +In an `Earthfile` in your source repository add: + +```Earthfile +example_python_target: + FROM python:3.11-bullseye + DO DO github.com/input-output-hk/catalyst-ci:v1.2.0/earthly/python+POETRY_SETUP +``` + +You may also pass optional arguments: + +* `extra_files`: Defining extra files into the `/poetry` directory in the container. +* `opts`: Options to the `poetry install` command. + +These arguments are optional and neither is required to be set. + +The directory that contains the Earthfile that invokes this UDC MUST have: + +* `pyproject.toml` : Definitions of the project to be installed with Poetry. +* `poetry.lock` : Dependency lock file. + Up-to-date by running: + * `poetry lock --no-update` : Update lock file, but do not update dependencies; or + * `poetry lock` : Update lock file and dependencies as required. From a69179df4e0e24309b7932e8eb090d52fddfab71 Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Wed, 27 Sep 2023 14:04:22 +0700 Subject: [PATCH 06/22] docs(docs): Fix typo --- earthly/python/Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/earthly/python/Readme.md b/earthly/python/Readme.md index df2f5229d..8b99bb4d8 100644 --- a/earthly/python/Readme.md +++ b/earthly/python/Readme.md @@ -16,7 +16,7 @@ In an `Earthfile` in your source repository add: ```Earthfile example_python_target: FROM python:3.11-bullseye - DO DO github.com/input-output-hk/catalyst-ci:v1.2.0/earthly/python+POETRY_SETUP + DO github.com/input-output-hk/catalyst-ci:v1.2.0/earthly/python+POETRY_SETUP ``` You may also pass optional arguments: From 3870d5503ba67b48cc6f4fd4f80276f08547033a Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Wed, 27 Sep 2023 14:30:37 +0700 Subject: [PATCH 07/22] docs(cspell): fix cspell path reference in example --- earthly/cspell/Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/earthly/cspell/Readme.md b/earthly/cspell/Readme.md index fd7b643cc..513feb078 100644 --- a/earthly/cspell/Readme.md +++ b/earthly/cspell/Readme.md @@ -25,7 +25,7 @@ spellcheck-lint: # Check spelling in this repo. LOCALLY - DO github.com/input-output-hk/catalyst-ci:v1.2.0/earthly/cspell+CSPELL --src=$(echo ${PWD}) + DO github.com/input-output-hk/catalyst-ci/earthly/cspell:t1.2.0+CSPELL --src=$(echo ${PWD}) ``` In this use case, the UDC is run Locally, so that the src in the repo can be directly checked. From 0c411ad60e20a521c56321d40aa00885b6a87774 Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Wed, 27 Sep 2023 16:15:37 +0700 Subject: [PATCH 08/22] docs(mdlint): Fix up mdlint usage documentation --- earthly/mdlint/Readme.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/earthly/mdlint/Readme.md b/earthly/mdlint/Readme.md index 6d3c847a6..9108a8cc7 100644 --- a/earthly/mdlint/Readme.md +++ b/earthly/mdlint/Readme.md @@ -20,7 +20,13 @@ markdown-lint: # Check Markdown in this repo. LOCALLY - DO github.com/input-output-hk/catalyst-ci:v1.2.0/earthly/mdlint+MDLINT --src=$(echo ${PWD}) + DO github.com/input-output-hk/catalyst-ci/earthly/mdlint:v1.2.0+MDLINT --src=$(echo ${PWD}) + +markdown-lint-fix: + # Check Markdown in this repo. + LOCALLY + + DO github.com/input-output-hk/catalyst-ci/earthly/mdlint:v1.2.0+MDLINT --src=$(echo ${PWD}) --fix=--fix ``` In this use case, the UDC is run Locally, so that the markdown in the repo can be directly checked. From e62c729901c01f31d71c82bcda5c9f633cba9f60 Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Wed, 27 Sep 2023 16:16:31 +0700 Subject: [PATCH 09/22] fix(docs): Adjust how the docs builder UDC works so its better generalized --- earthly/docs/Earthfile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/earthly/docs/Earthfile b/earthly/docs/Earthfile index 48abd3951..d44d71358 100644 --- a/earthly/docs/Earthfile +++ b/earthly/docs/Earthfile @@ -38,8 +38,7 @@ mkdocs-material: # Build the docuementation statically MKDOCS_BUILD: COMMAND - ARG src=$(echo ${PWD}/src) - ARG dest=$(echo ${PWD}/site) + ARG src # Ensure the mkdocs tools are built and up-to-date. BUILD +mkdocs-material @@ -60,8 +59,6 @@ MKDOCS_BUILD: mkdocs build END - SAVE ARTIFACT /docs/site AS LOCAL $dest - # Setup local documentation development. DEVELOP: COMMAND @@ -80,10 +77,13 @@ DEVELOP: build-test: # Test of building docs. # Run with `earthly -P +build-test` - LOCALLY + ARG dest=./site + + # Build the site (UDC creates the container itself.) + DO +MKDOCS_BUILD --src=./sample + + SAVE ARTIFACT /docs/site AS LOCAL $dest - # Save development artefacts into the /local directory. - DO +MKDOCS_BUILD --src=./sample --dest=./site # Target which setsup the documentation to be served locally. mkdocs-develop-test: From a51839ff89393657dc856696036eb2e68db6a60d Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Wed, 27 Sep 2023 16:36:10 +0700 Subject: [PATCH 10/22] docs(docs): Update docs services docker compose files, and their documentation --- earthly/docs/services/Readme.docs.md | 44 +++++++++++++++++++ earthly/docs/services/Readme.md | 19 -------- .../docs/services/docker-compose.livedocs.yml | 4 +- .../docs/services/docker-compose.sitedocs.yml | 2 +- 4 files changed, 47 insertions(+), 22 deletions(-) create mode 100644 earthly/docs/services/Readme.docs.md delete mode 100644 earthly/docs/services/Readme.md diff --git a/earthly/docs/services/Readme.docs.md b/earthly/docs/services/Readme.docs.md new file mode 100644 index 000000000..bba038a64 --- /dev/null +++ b/earthly/docs/services/Readme.docs.md @@ -0,0 +1,44 @@ +# Documentation Service Definitions + + + +## Live Documentation + +To build documentation live, from the root of the repo run: + +```sh +docker compose up -f local/docker-compose.livedocs.yml up +``` + +Go to [Live documentation](http://localhost:10080) to view live docs. + +## Inspect built static site documentation + +```sh +docker compose up -f local/docker-compose.sitedocs.yml up --abort-on-container-exit +``` + +## Earthly Integration + +Add targets like the following to the root Earthly file of the project. + +```Earthly +live-docs-development: + LOCALLY + # Build Container we need to serve live docs. + BUILD ./docs+mkdocs-material + + # We use python to open a browser on Windows/Mac or Linux + RUN python -c "import webbrowser; webbrowser.open('http://localhost:10080')" + # Run the containers we need and serve live docs. + RUN docker compose -f local/docker-compose.livedocs.yml up --abort-on-container-exit + +site-docs-development: + LOCALLY + BUILD ./docs/+build + + # We use python to open a browser on Windows/Mac or Linux + RUN python -c "import webbrowser; webbrowser.open('http://localhost:10081')" + # Run the containers we need and serve site built docs. + RUN docker compose -f local/docker-compose.sitedocs.yml up --abort-on-container-exit +``` diff --git a/earthly/docs/services/Readme.md b/earthly/docs/services/Readme.md deleted file mode 100644 index b04beabf2..000000000 --- a/earthly/docs/services/Readme.md +++ /dev/null @@ -1,19 +0,0 @@ -# Documentation Service Definitions - - - -## Live Documentation - -To build documentation live, from the root of the repo run: - -```sh -docker compose up -f local/docker-compose.livedocs.yml up --abort-on-container-exit -``` - -Go to [Live documentation](http://localhost:10080) to view live docs. - -## Inspect built static site documentation - -```sh -docker compose up -f local/docker-compose.sitedocs.yml up -``` diff --git a/earthly/docs/services/docker-compose.livedocs.yml b/earthly/docs/services/docker-compose.livedocs.yml index 628892cdf..db27255cb 100644 --- a/earthly/docs/services/docker-compose.livedocs.yml +++ b/earthly/docs/services/docker-compose.livedocs.yml @@ -11,9 +11,9 @@ services: depends_on: - kroki volumes: - - ${LIVE_PATH:-./docs}:/docs + - ${LIVE_PATH:-../docs}:/docs ports: - - ${LIVE_PORT:-10080}:10081 + - ${LIVE_PORT:-10080}:8000 restart: no networks: - mkdocs diff --git a/earthly/docs/services/docker-compose.sitedocs.yml b/earthly/docs/services/docker-compose.sitedocs.yml index 2c6ef2d90..6b791749f 100644 --- a/earthly/docs/services/docker-compose.sitedocs.yml +++ b/earthly/docs/services/docker-compose.sitedocs.yml @@ -8,5 +8,5 @@ services: - ${SITE_PORT:-10081}:80 restart: no volumes: - - ${SITE_PATH:-./docs/site}:/usr/share/nginx/html + - ${SITE_PATH:-../docs/site}:/usr/share/nginx/html From 3652bd5d7d993c85567d92cbe355cce12bd79d7b Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Wed, 27 Sep 2023 20:08:26 +0700 Subject: [PATCH 11/22] fix(docs): Try and make the network name for live docs be consistent. --- earthly/docs/services/docker-compose.kroki.yml | 3 ++- earthly/docs/services/docker-compose.livedocs.yml | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/earthly/docs/services/docker-compose.kroki.yml b/earthly/docs/services/docker-compose.kroki.yml index 0545a44a3..8564a83e1 100644 --- a/earthly/docs/services/docker-compose.kroki.yml +++ b/earthly/docs/services/docker-compose.kroki.yml @@ -63,4 +63,5 @@ services: - mkdocs networks: - mkdocs: \ No newline at end of file + mkdocs: + name: mkdocs \ No newline at end of file diff --git a/earthly/docs/services/docker-compose.livedocs.yml b/earthly/docs/services/docker-compose.livedocs.yml index db27255cb..29f180844 100644 --- a/earthly/docs/services/docker-compose.livedocs.yml +++ b/earthly/docs/services/docker-compose.livedocs.yml @@ -17,3 +17,7 @@ services: restart: no networks: - mkdocs + +networks: + mkdocs: + name: mkdocs \ No newline at end of file From c5628d99f13e270f8f408c4e35de7e3b2eac4195 Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Wed, 27 Sep 2023 20:17:07 +0700 Subject: [PATCH 12/22] fix(docs): fix network name in the docs as well. --- earthly/docs/Earthfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/earthly/docs/Earthfile b/earthly/docs/Earthfile index d44d71358..386577519 100644 --- a/earthly/docs/Earthfile +++ b/earthly/docs/Earthfile @@ -55,7 +55,7 @@ MKDOCS_BUILD: RUN docker run \ --rm \ -v /docs:/docs \ - --network=default_mkdocs \ + --network=mkdocs \ mkdocs build END From c760f17e060e4b40897951fe1a433beb9378f0b5 Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Wed, 27 Sep 2023 20:31:41 +0700 Subject: [PATCH 13/22] fix(docs): Live docs use the network defined by kroki. --- earthly/docs/services/docker-compose.livedocs.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/earthly/docs/services/docker-compose.livedocs.yml b/earthly/docs/services/docker-compose.livedocs.yml index 29f180844..db27255cb 100644 --- a/earthly/docs/services/docker-compose.livedocs.yml +++ b/earthly/docs/services/docker-compose.livedocs.yml @@ -17,7 +17,3 @@ services: restart: no networks: - mkdocs - -networks: - mkdocs: - name: mkdocs \ No newline at end of file From 1b73e54749876c5cbdf1dd64832494262004a0ba Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Mon, 2 Oct 2023 12:05:48 +0700 Subject: [PATCH 14/22] fix(cspell): Remove shell specific operation. Add LOCALLY only notes. Simplify invocation. --- earthly/cspell/Earthfile | 33 ++++++++++++++------------------- earthly/cspell/Readme.md | 15 ++++++++++++--- 2 files changed, 26 insertions(+), 22 deletions(-) diff --git a/earthly/cspell/Earthfile b/earthly/cspell/Earthfile index 4d4a51797..7be069325 100644 --- a/earthly/cspell/Earthfile +++ b/earthly/cspell/Earthfile @@ -1,7 +1,11 @@ # cspell UDCs and Containers. VERSION 0.7 -CSPELL: +CSPELL_LOCALLY: + # DO NOT RUN THIS UDC INSIDE CONTAINER BUILDS. + # IT IS NOT FOR CONTAINER BUILDS. + # See: https://github.com/earthly/earthly/issues/580 + # Spell checking all docs and code is done with cspell # See: cspell.org COMMAND @@ -12,27 +16,18 @@ CSPELL: # Unlikely to need to change this. ARG cfg_file=cspell.json - RUN --no-cache if [[ ! -f $src/$cfg_file ]]; then \ - (>&2 echo "$src/$cfg_file does not exist. Can not check spelling."); \ - exit 1; \ - fi - - RUN --no-cache echo Spell Checking Recursively from: $src + RUN echo Spell Checking Recursively from: $src - WITH DOCKER --pull ghcr.io/streetsidesoftware/cspell:latest - RUN --no-cache \ - docker run \ - --rm \ - -v $src:/workdir \ - ghcr.io/streetsidesoftware/cspell:latest \ - lint . - END + RUN docker run \ + --rm \ + -v $src:/workdir \ + ghcr.io/streetsidesoftware/cspell:latest \ + lint . # A Test and example invocation of the above UDC. cspell-test: - # Test spellcheck lint checks. - # Run with `earthly -P +cspell-test + # As notes above, this check must only be run locally. LOCALLY - - DO +CSPELL --src=$(echo ${PWD}/../../) + # Run with `earthly -P +cspell-test + DO +CSPELL_LOCALLY --src=$(echo ${PWD}/../../) diff --git a/earthly/cspell/Readme.md b/earthly/cspell/Readme.md index 513feb078..5158035cc 100644 --- a/earthly/cspell/Readme.md +++ b/earthly/cspell/Readme.md @@ -16,6 +16,15 @@ multiple source languages and documentation files. Tool specific spell checkers are limited in the kinds of files they can check, and also will use different configurations, dictionaries and project word lists. +## DO NOT RUN AS PART OF A CONTAINER BUILD TARGET + +This UDC is **NOT** intended to be used inside container builds. +Its sole purpose is to enforce uniform and consistent spell checking for all files in a repository. +It makes no assumptions about which files may or may not end up inside a container or are part of a build. +This is *INTENTIONAL*. + +IF this UDC is used inside a container build, it is **NOT** a bug if it does not do the correct thing. + ## Invocation In an Earthfile in your repo, add the following: @@ -33,7 +42,7 @@ In this use case, the UDC is run Locally, so that the src in the repo can be dir ## Configuration Each repo will need a [`cspell.json`](http://cspell.org/configuration/) file in the root of the repo. -This file configures cspell. +This file configures `cspell`. The file provided in the `Catalyst-CI` repo should be taken as a starting point for new projects. @@ -50,7 +59,7 @@ These words are added to the file: This can be necessary for the following reasons: -* The built in dictionaries do not contain all possible valid words. +* The built-in dictionaries do not contain all possible valid words. * This is especially true when using names of Companies, Products or Technology. * There are identifiers used in the code which are used which fail spell checks. @@ -73,6 +82,6 @@ For these files/paths, exclude them from the spell check by adding their filenam ## Editor Integration -cspell is integrated into VSCode and may be integrated into other Editors. +`cspell` is integrated into VSCode and may be integrated into other Editors. The editor integration should pick up the `cspell.json` configuration file and behave exactly the same as the Earthly UDC. From dd9422339e6487e0fec96fcbca78e1bc7c1eaf0c Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Mon, 2 Oct 2023 12:06:09 +0700 Subject: [PATCH 15/22] fix(mdlint): Remove shell specific operation. Add LOCALLY only notes. Simplify invocation. --- earthly/mdlint/Earthfile | 38 ++++++++++++++------------------------ earthly/mdlint/Readme.md | 9 +++++++++ 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/earthly/mdlint/Earthfile b/earthly/mdlint/Earthfile index d7d5c1ad5..bf4d2133e 100644 --- a/earthly/mdlint/Earthfile +++ b/earthly/mdlint/Earthfile @@ -1,6 +1,10 @@ VERSION 0.7 MDLINT: + # DO NOT RUN THIS UDC INSIDE CONTAINER BUILDS. + # IT IS NOT FOR CONTAINER BUILDS. + # See: https://github.com/earthly/earthly/issues/580 + # Linting is done with MarkdownLint CLI2 # See: https://github.com/DavidAnson/markdownlint-cli2 # We use a special container which includes all rule extensions to markdownlint @@ -20,40 +24,26 @@ MDLINT: # Unlikely this ever needs to be changed. ARG cfg_file=.markdownlint-cli2.jsonc - # Ensure the `fix` argument only contains valid values. - RUN if [[ "${fix}" != "--fix" && "${fix}" != "" ]]; then \ - echo "Invalid value for fix argument: ${fix}. It should be either --fix or not set." >&2; \ - exit 1; \ - fi - - # Ensure the path to be checked has a mdlint config file. - RUN --no-cache if [[ ! -f $src/$cfg_file ]]; then \ - (>&2 echo "$src/$cfg_file does not exist. Can not run mdLint."); \ - exit 1; \ - fi - # Status line for what we are about to do. - RUN --no-cache echo Linting Markdown Recursively from: $src + RUN echo Linting Markdown Recursively from: $src # Run the linter with the given arguments, and recursively check all markdown files. # The directory to be checked `MUST` have a `.markdownlint-sli2.jsonc` file. # cspell: words davidanson - WITH DOCKER --pull davidanson/markdownlint-cli2-rules:next - # Lint checks should not be cached. - RUN --no-cache \ - docker run \ - --rm \ - -v $src:/workdir \ - davidanson/markdownlint-cli2-rules:next \ - "**/*.md" \ - --config $cfg_file \ - $fix - END + RUN docker run \ + --rm \ + -v $src:/workdir \ + davidanson/markdownlint-cli2-rules:next \ + "**/*.md" \ + --config $cfg_file \ + $fix # A Test and example invocation of the above UDC. mdlint-test: # Test Markdown lint checks. # Run with `earthly -P +mdlint-test + + # Must be run LOCALLY as dexcribed above. LOCALLY ARG src=$(echo ${PWD}/../../) diff --git a/earthly/mdlint/Readme.md b/earthly/mdlint/Readme.md index 9108a8cc7..97cacdcac 100644 --- a/earthly/mdlint/Readme.md +++ b/earthly/mdlint/Readme.md @@ -2,6 +2,15 @@ This Earthly Target and UDC enables uniform linting of Markdown files to maintain consistency and quality. +## DO NOT RUN AS PART OF A CONTAINER BUILD TARGET + +This UDC is **NOT** intended to be used inside container builds. +Its sole purpose is to enforce uniform style rules for all markdown files in a repository. +It makes no assumptions about which files may or may not end up inside a container or are part of a build. +This is *INTENTIONAL*. + +IF this UDC is used inside a container build, it is **NOT** a bug if it does not do the correct thing. + ## How it works Linting is performed with the [`mdlint-cli2`](https://github.com/DavidAnson/markdownlint-cli2) program. From c75d70ecbc1d77f5a902edb292ad8e1758fecb42 Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Mon, 2 Oct 2023 12:57:55 +0700 Subject: [PATCH 16/22] fix(mdlint): rename MDLINT UDC so its clear its to be run LOCALLY only. --- earthly/mdlint/Earthfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/earthly/mdlint/Earthfile b/earthly/mdlint/Earthfile index bf4d2133e..15b8d5111 100644 --- a/earthly/mdlint/Earthfile +++ b/earthly/mdlint/Earthfile @@ -1,6 +1,6 @@ VERSION 0.7 -MDLINT: +MDLINT_LOCALLY: # DO NOT RUN THIS UDC INSIDE CONTAINER BUILDS. # IT IS NOT FOR CONTAINER BUILDS. # See: https://github.com/earthly/earthly/issues/580 @@ -48,4 +48,4 @@ mdlint-test: ARG src=$(echo ${PWD}/../../) - DO +MDLINT --src=${src} + DO +MDLINT_LOCALLY --src=${src} From 887c1a3cf06104b879bf960e6290bdf7d5d632c6 Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Mon, 2 Oct 2023 13:03:24 +0700 Subject: [PATCH 17/22] docs(cspell): Fix CSPELL example to use correct UDC name --- earthly/cspell/Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/earthly/cspell/Readme.md b/earthly/cspell/Readme.md index 7e90131cf..f353ac298 100644 --- a/earthly/cspell/Readme.md +++ b/earthly/cspell/Readme.md @@ -34,7 +34,7 @@ spellcheck-lint: # Check spelling in this repo. LOCALLY - DO github.com/input-output-hk/catalyst-ci/earthly/cspell:t1.2.0+CSPELL --src=$(echo ${PWD}) + DO github.com/input-output-hk/catalyst-ci/earthly/cspell:t1.2.0+CSPELL_LOCALLY --src=$(echo ${PWD}) ``` In this use case, the UDC is run Locally, so that the src in the repo can be directly checked. From e7e0ca08d9a51bf824b7ffdd53d755c3d23bd6cb Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Mon, 2 Oct 2023 13:03:55 +0700 Subject: [PATCH 18/22] docs(mdlint): Fix mdLint Documentation to sue correct UDC Name --- earthly/mdlint/Readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/earthly/mdlint/Readme.md b/earthly/mdlint/Readme.md index 97cacdcac..e37745748 100644 --- a/earthly/mdlint/Readme.md +++ b/earthly/mdlint/Readme.md @@ -29,13 +29,13 @@ markdown-lint: # Check Markdown in this repo. LOCALLY - DO github.com/input-output-hk/catalyst-ci/earthly/mdlint:v1.2.0+MDLINT --src=$(echo ${PWD}) + DO github.com/input-output-hk/catalyst-ci/earthly/mdlint:v1.2.0+MDLINT_LOCALLY --src=$(echo ${PWD}) markdown-lint-fix: # Check Markdown in this repo. LOCALLY - DO github.com/input-output-hk/catalyst-ci/earthly/mdlint:v1.2.0+MDLINT --src=$(echo ${PWD}) --fix=--fix + DO github.com/input-output-hk/catalyst-ci/earthly/mdlint:v1.2.0+MDLINT_LOCALLY --src=$(echo ${PWD}) --fix=--fix ``` In this use case, the UDC is run Locally, so that the markdown in the repo can be directly checked. From 7dbec4b65f6debf14563dd9d0d55dbd1e0248457 Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Mon, 2 Oct 2023 17:55:26 +0700 Subject: [PATCH 19/22] feat(cspell/mdlint): Add spelling and markdown CI. Fix all Spelling and markdown issues. --- .config/dictionaries/project.dic | 11 +++++++++ .github/workflows/markdown-check.yml | 18 +++++++++++++++ .github/workflows/spell-check.yml | 18 +++++++++++++++ Earthfile | 23 +++++++++++++++++++ actions/build/action.yml | 4 ++-- .../configure-runner/src/configure.test.ts | 2 ++ actions/configure-runner/src/configure.ts | 2 ++ actions/deploy/README.md | 7 +----- actions/deploy/action.yml | 4 +++- actions/discover/action.yml | 4 ++-- actions/discover/src/discover.ts | 2 ++ actions/discover/src/index.test.ts | 2 ++ actions/install/dist/index.js | 2 +- actions/install/src/index.test.ts | 2 ++ actions/install/src/setup.ts | 4 +++- actions/setup/README.md | 7 +----- cli/Earthfile | 2 ++ cli/cmd/main.go | 2 ++ cli/pkg/executors/executors_suite_test.go | 2 ++ cli/pkg/executors/local_test.go | 2 ++ cli/pkg/git/external_test.go | 2 ++ cli/pkg/git/git_clients_suite_test.go | 2 ++ cli/pkg/parsers/earthly_parser_test.go | 2 ++ cli/pkg/parsers/parsers_suite_test.go | 2 ++ cli/pkg/providers/aws.go | 2 ++ cli/pkg/providers/aws_test.go | 2 ++ cli/pkg/providers/providers_suite_test.go | 2 ++ cli/pkg/scanners/file_scanner.go | 2 ++ cli/pkg/scanners/file_scanner_test.go | 2 ++ cli/pkg/scanners/scanners_suite_test.go | 2 ++ cli/pkg/state.go | 2 ++ cli/pkg/util/semver_test.go | 2 ++ cli/pkg/util/util_suite_test.go | 2 ++ cspell.json | 6 ++++- earthly/docs/Earthfile | 7 +++--- .../docs/services/docker-compose.kroki.yml | 2 ++ earthly/mdlint/Earthfile | 5 ++-- earthly/python/Earthfile | 2 +- earthly/python/Readme.md | 2 +- flake.nix | 1 + 40 files changed, 144 insertions(+), 27 deletions(-) create mode 100644 .github/workflows/markdown-check.yml create mode 100644 .github/workflows/spell-check.yml create mode 100644 Earthfile diff --git a/.config/dictionaries/project.dic b/.config/dictionaries/project.dic index 4ca5f242f..9c11db8bd 100644 --- a/.config/dictionaries/project.dic +++ b/.config/dictionaries/project.dic @@ -1,11 +1,22 @@ +aarch +buildkit +devenv dind Earthfile +Earthfiles glightbox +golines +golint +gopls graphviz Kroki +kubeconfig mdlint mkdocs multirepo +nixos +nixpkgs +pkgs PYTHONDONTWRITEBYTECODE UDCs WORKDIR diff --git a/.github/workflows/markdown-check.yml b/.github/workflows/markdown-check.yml new file mode 100644 index 000000000..198d67853 --- /dev/null +++ b/.github/workflows/markdown-check.yml @@ -0,0 +1,18 @@ +name: Markdown Check + +on: pull_request + +jobs: + check-markdown: + name: Check if Markdown files are properly formatted. + runs-on: ubuntu-latest + env: + FORCE_COLOR: 1 + steps: + - uses: earthly/actions-setup@v1 + with: + version: v0.7.8 + - uses: actions/checkout@v4 + + - name: Check all markdown files are properly formatted + run: earthly -P +markdown-check diff --git a/.github/workflows/spell-check.yml b/.github/workflows/spell-check.yml new file mode 100644 index 000000000..b766eb033 --- /dev/null +++ b/.github/workflows/spell-check.yml @@ -0,0 +1,18 @@ +name: Spell Check + +on: pull_request + +jobs: + publish: + name: Check if everything in the repo is spelled correctly. + runs-on: ubuntu-latest + env: + FORCE_COLOR: 1 + steps: + - uses: earthly/actions-setup@v1 + with: + version: v0.7.8 + - uses: actions/checkout@v4 + + - name: Check spelling of everything + run: earthly -P +spell-check diff --git a/Earthfile b/Earthfile new file mode 100644 index 000000000..236bc8ed3 --- /dev/null +++ b/Earthfile @@ -0,0 +1,23 @@ +# Set the Earthly version to 0.7 +VERSION 0.7 +FROM debian:stable-slim + +# cspell: words livedocs sitedocs + +markdown-check: + # Check Markdown in this repo. + LOCALLY + + DO ./earthly/mdlint+MDLINT_LOCALLY --src=$(echo ${PWD}) + +markdown-check-fix: + # Check Markdown in this repo. + LOCALLY + + DO ./earthly/mdlint+MDLINT_LOCALLY --src=$(echo ${PWD}) --fix=--fix + +spell-check: + # Check spelling in this repo. + LOCALLY + + DO ./earthly/cspell+CSPELL_LOCALLY --src=$(echo ${PWD}) diff --git a/actions/build/action.yml b/actions/build/action.yml index db5aee5b8..a1809f1c6 100644 --- a/actions/build/action.yml +++ b/actions/build/action.yml @@ -13,7 +13,7 @@ inputs: required: false default: "" images: - description: A space seperated list of images the target will produce + description: A space separated list of images the target will produce required: false default: "" publish: @@ -25,7 +25,7 @@ inputs: required: false default: "" tags: - description: A space seperated list of tags to tag the resulting images with + description: A space separated list of tags to tag the resulting images with required: false default: "" target: diff --git a/actions/configure-runner/src/configure.test.ts b/actions/configure-runner/src/configure.test.ts index ce45714e4..24d55dced 100644 --- a/actions/configure-runner/src/configure.test.ts +++ b/actions/configure-runner/src/configure.test.ts @@ -5,6 +5,8 @@ import * as yaml from 'js-yaml' import { GetSecretValueCommand } from '@aws-sdk/client-secrets-manager' import { run } from './configure' +// cspell: words camelcase tlskey tlsca tlscert + jest.mock('@actions/core', () => ({ getInput: jest.fn(), info: jest.fn(), diff --git a/actions/configure-runner/src/configure.ts b/actions/configure-runner/src/configure.ts index ea42af0e3..890f09053 100644 --- a/actions/configure-runner/src/configure.ts +++ b/actions/configure-runner/src/configure.ts @@ -7,6 +7,8 @@ import { SecretsManagerClient } from '@aws-sdk/client-secrets-manager' +// cspell: words camelcase tlskey tlsca tlscert + interface CertificateSecret { ca_certificate: string certificate: string diff --git a/actions/deploy/README.md b/actions/deploy/README.md index 0b952aed7..b46ade915 100644 --- a/actions/deploy/README.md +++ b/actions/deploy/README.md @@ -1,9 +1,4 @@ - _ ____ _____ ___ ___ _ _ ____ ___ ____ ____ - / \ / ___| |_ _| |_ _| / _ \ | \ | | | _ \ / _ \ / ___| / ___| - -/ \_ \ | | | | | | | | | | | \| | **\_** | | | | | | | | | | \_** \ / \_** \ | -|**_ | | | | | |_| | | |\ | |\_\_\_**| | |_| | | |_| | | |**\_ \_**) | /\_/ \_\ -\_**_| |_| |\_**| \_**/ |\_| \_| |\_\_**/ \_**/ \_\_**| |\_\_\_\_/ +# deploy ## Description diff --git a/actions/deploy/action.yml b/actions/deploy/action.yml index 4d6854fc1..365c5f49d 100644 --- a/actions/deploy/action.yml +++ b/actions/deploy/action.yml @@ -1,3 +1,5 @@ +# cspell: words cibot + name: CI Deploy description: Deploys the published images to the remote cluster. inputs: @@ -8,7 +10,7 @@ inputs: description: The target environment to deploy to required: true images: - description: A space separted list of image names to deploy + description: A space separated list of image names to deploy required: true tag: description: The image tag to deploy diff --git a/actions/discover/action.yml b/actions/discover/action.yml index 0cd4daec6..853f03592 100644 --- a/actions/discover/action.yml +++ b/actions/discover/action.yml @@ -2,7 +2,7 @@ name: "Discover" description: "Discover Earthfiles in the repository" inputs: parse_images: - description: Whether the image names from the given targets should be returnd (requires at least one target) + description: Whether the image names from the given targets should be returned (requires at least one target) required: false default: "false" paths: @@ -10,7 +10,7 @@ inputs: required: false default: "." targets: - description: A space seperated list of targets to filter against + description: A space separated list of targets to filter against required: false default: "" runs: diff --git a/actions/discover/src/discover.ts b/actions/discover/src/discover.ts index 494dbe63a..2915a92cc 100644 --- a/actions/discover/src/discover.ts +++ b/actions/discover/src/discover.ts @@ -2,6 +2,8 @@ import * as core from '@actions/core' import { exec } from 'child_process' import { quote } from 'shell-quote' +// cspell: words omashu + export async function run(): Promise { try { const parse = core.getBooleanInput('parse_images') diff --git a/actions/discover/src/index.test.ts b/actions/discover/src/index.test.ts index 135328393..1eef57bc7 100644 --- a/actions/discover/src/index.test.ts +++ b/actions/discover/src/index.test.ts @@ -2,6 +2,8 @@ import * as core from '@actions/core' import { exec } from 'child_process' import { run } from './discover' +// cspell: words omashu + jest.mock('@actions/core', () => ({ getBooleanInput: jest.fn(), getInput: jest.fn(), diff --git a/actions/install/dist/index.js b/actions/install/dist/index.js index 172919c74..e2a3837fc 100644 --- a/actions/install/dist/index.js +++ b/actions/install/dist/index.js @@ -6776,7 +6776,7 @@ async function run() { return; } const finalURL = baseURL.replace(/%VER%/g, version); - core.info(`Downlaoading version ${version} from ${finalURL}`); + core.info(`Downloading version ${version} from ${finalURL}`); if (process.platform === 'linux') { const downloadPath = await tool_cache.downloadTool(finalURL); const extractPath = await tool_cache.extractTar(downloadPath, '/usr/local/bin'); diff --git a/actions/install/src/index.test.ts b/actions/install/src/index.test.ts index 26d9e633a..b9fba100f 100644 --- a/actions/install/src/index.test.ts +++ b/actions/install/src/index.test.ts @@ -2,6 +2,8 @@ import * as core from '@actions/core' import * as tc from '@actions/tool-cache' import { run } from './setup' +// cspell: words omashu + jest.mock('@actions/core', () => { return { getInput: jest.fn(), diff --git a/actions/install/src/setup.ts b/actions/install/src/setup.ts index 9b782b5ff..c6900adf2 100644 --- a/actions/install/src/setup.ts +++ b/actions/install/src/setup.ts @@ -1,6 +1,8 @@ import * as core from '@actions/core' import * as tc from '@actions/tool-cache' +// cspell: words omashu + const baseURL = 'https://github.com/meigma/omashu/releases/download/v%VER%/omashu-%VER%-linux_amd64.tar.gz' @@ -14,7 +16,7 @@ export async function run(): Promise { } const finalURL = baseURL.replace(/%VER%/g, version) - core.info(`Downlaoading version ${version} from ${finalURL}`) + core.info(`Downloading version ${version} from ${finalURL}`) if (process.platform === 'linux') { const downloadPath = await tc.downloadTool(finalURL) const extractPath = await tc.extractTar(downloadPath, '/usr/local/bin') diff --git a/actions/setup/README.md b/actions/setup/README.md index 1efde5861..c1e6cf586 100644 --- a/actions/setup/README.md +++ b/actions/setup/README.md @@ -1,9 +1,4 @@ - _ ____ _____ ___ ___ _ _ ____ ___ ____ ____ - / \ / ___| |_ _| |_ _| / _ \ | \ | | | _ \ / _ \ / ___| / ___| - -/ \_ \ | | | | | | | | | | | \| | **\_** | | | | | | | | | | \_** \ / \_** \ | -|**_ | | | | | |_| | | |\ | |\_\_\_**| | |_| | | |_| | | |**\_ \_**) | /\_/ \_\ -\_**_| |_| |\_**| \_**/ |\_| \_| |\_\_**/ \_**/ \_\_**| |\_\_\_\_/ +# setup-deploy ## Description diff --git a/cli/Earthfile b/cli/Earthfile index 8bf64af83..a15185c15 100644 --- a/cli/Earthfile +++ b/cli/Earthfile @@ -1,6 +1,8 @@ VERSION 0.7 FROM golang:1.20-alpine3.18 +# cspell: words udts onsi ldflags extldflags + deps: WORKDIR /work diff --git a/cli/cmd/main.go b/cli/cmd/main.go index f25e07b40..8c3ae5ebd 100644 --- a/cli/cmd/main.go +++ b/cli/cmd/main.go @@ -1,5 +1,7 @@ package main +// cspell: words alecthomas afero sess tfstate + import ( "encoding/json" "fmt" diff --git a/cli/pkg/executors/executors_suite_test.go b/cli/pkg/executors/executors_suite_test.go index 65e5eabfc..6c9e3f2cd 100644 --- a/cli/pkg/executors/executors_suite_test.go +++ b/cli/pkg/executors/executors_suite_test.go @@ -1,5 +1,7 @@ package executors_test +// cspell: words onsi gomega + import ( "testing" diff --git a/cli/pkg/executors/local_test.go b/cli/pkg/executors/local_test.go index 5b2f718ec..796665f28 100644 --- a/cli/pkg/executors/local_test.go +++ b/cli/pkg/executors/local_test.go @@ -1,5 +1,7 @@ package executors_test +// cspell: words onsi gomega + import ( "errors" "os/exec" diff --git a/cli/pkg/git/external_test.go b/cli/pkg/git/external_test.go index 69315183d..e09c8ed14 100644 --- a/cli/pkg/git/external_test.go +++ b/cli/pkg/git/external_test.go @@ -1,5 +1,7 @@ package git_test +// cspell: words onsi gomega + import ( "errors" diff --git a/cli/pkg/git/git_clients_suite_test.go b/cli/pkg/git/git_clients_suite_test.go index 0e46f9217..73c6b1abb 100644 --- a/cli/pkg/git/git_clients_suite_test.go +++ b/cli/pkg/git/git_clients_suite_test.go @@ -1,5 +1,7 @@ package git_test +// cspell: words onsi gomega + import ( "testing" diff --git a/cli/pkg/parsers/earthly_parser_test.go b/cli/pkg/parsers/earthly_parser_test.go index c3861e849..d1e8dad24 100644 --- a/cli/pkg/parsers/earthly_parser_test.go +++ b/cli/pkg/parsers/earthly_parser_test.go @@ -1,5 +1,7 @@ package parsers_test +// cspell: words onsi gomega + import ( "context" "errors" diff --git a/cli/pkg/parsers/parsers_suite_test.go b/cli/pkg/parsers/parsers_suite_test.go index 506f23984..561eb0a1e 100644 --- a/cli/pkg/parsers/parsers_suite_test.go +++ b/cli/pkg/parsers/parsers_suite_test.go @@ -1,5 +1,7 @@ package parsers_test +// cspell: words onsi gomega + import ( "testing" diff --git a/cli/pkg/providers/aws.go b/cli/pkg/providers/aws.go index b566b0139..923a2379a 100644 --- a/cli/pkg/providers/aws.go +++ b/cli/pkg/providers/aws.go @@ -1,5 +1,7 @@ package providers +// cspell: words iface + import ( "encoding/json" "io" diff --git a/cli/pkg/providers/aws_test.go b/cli/pkg/providers/aws_test.go index d275f53a5..a7b810625 100644 --- a/cli/pkg/providers/aws_test.go +++ b/cli/pkg/providers/aws_test.go @@ -1,5 +1,7 @@ package providers_test +// cspell: words iface onsi gomega + import ( "bytes" "fmt" diff --git a/cli/pkg/providers/providers_suite_test.go b/cli/pkg/providers/providers_suite_test.go index aa041f0a0..29971a74e 100644 --- a/cli/pkg/providers/providers_suite_test.go +++ b/cli/pkg/providers/providers_suite_test.go @@ -1,5 +1,7 @@ package providers_test +// cspell: words onsi gomega + import ( "testing" diff --git a/cli/pkg/scanners/file_scanner.go b/cli/pkg/scanners/file_scanner.go index 4da9a0305..6806ebac7 100644 --- a/cli/pkg/scanners/file_scanner.go +++ b/cli/pkg/scanners/file_scanner.go @@ -1,5 +1,7 @@ package scanners +// cspell: words afero + import ( "os" "path/filepath" diff --git a/cli/pkg/scanners/file_scanner_test.go b/cli/pkg/scanners/file_scanner_test.go index ff9996bc0..114ee22d5 100644 --- a/cli/pkg/scanners/file_scanner_test.go +++ b/cli/pkg/scanners/file_scanner_test.go @@ -1,5 +1,7 @@ package scanners_test +// cspell: words onsi gomega afero + import ( "errors" diff --git a/cli/pkg/scanners/scanners_suite_test.go b/cli/pkg/scanners/scanners_suite_test.go index d48321940..a3c5eccf7 100644 --- a/cli/pkg/scanners/scanners_suite_test.go +++ b/cli/pkg/scanners/scanners_suite_test.go @@ -1,5 +1,7 @@ package scanners_test +// cspell: words onsi gomega + import ( "testing" diff --git a/cli/pkg/state.go b/cli/pkg/state.go index 0669c55ef..2327532d3 100644 --- a/cli/pkg/state.go +++ b/cli/pkg/state.go @@ -30,6 +30,8 @@ func (s State) ParseOutput(key string, v interface{}) error { return json.Unmarshal(output.Value, v) } +// cspell: words unmarshalled + /* * Output is a representation of an output from a terraform state file. The * value is kept as a json.RawMessage so that it can be unmarshalled into the diff --git a/cli/pkg/util/semver_test.go b/cli/pkg/util/semver_test.go index 3e719d678..cb199ecfe 100644 --- a/cli/pkg/util/semver_test.go +++ b/cli/pkg/util/semver_test.go @@ -1,5 +1,7 @@ package util_test +// cspell: words onsi gomega + import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" diff --git a/cli/pkg/util/util_suite_test.go b/cli/pkg/util/util_suite_test.go index 6d6903e9a..c02d44990 100644 --- a/cli/pkg/util/util_suite_test.go +++ b/cli/pkg/util/util_suite_test.go @@ -1,5 +1,7 @@ package util_test +// cspell: words onsi gomega + import ( "testing" diff --git a/cspell.json b/cspell.json index 02e1df7c4..bd4b7034a 100644 --- a/cspell.json +++ b/cspell.json @@ -30,6 +30,10 @@ "ignorePaths": [ ".config/dictionaries", ".github", - "earthly/docs/poetry.lock" + "earthly/docs/poetry.lock", + "actions/*/dist", + "cli/go.sum", + "cli/go.mod", + "cli/bin/ci" ] } \ No newline at end of file diff --git a/earthly/docs/Earthfile b/earthly/docs/Earthfile index 386577519..85088b812 100644 --- a/earthly/docs/Earthfile +++ b/earthly/docs/Earthfile @@ -35,7 +35,7 @@ mkdocs-material: SAVE IMAGE mkdocs-material -# Build the docuementation statically +# Build the documentation statically MKDOCS_BUILD: COMMAND ARG src @@ -68,7 +68,7 @@ DEVELOP: # Ensure the mkdocs tools are built and up-to-date. BUILD +mkdocs-material - # Get local development artefacts + # Get local development artifacts COPY +mkdocs-material/services /local SAVE ARTIFACT /local AS LOCAL $dest @@ -85,8 +85,9 @@ build-test: SAVE ARTIFACT /docs/site AS LOCAL $dest -# Target which setsup the documentation to be served locally. +# Target which sets up the documentation to be served locally. mkdocs-develop-test: FROM alpine:latest DO +DEVELOP --dest=./local + \ No newline at end of file diff --git a/earthly/docs/services/docker-compose.kroki.yml b/earthly/docs/services/docker-compose.kroki.yml index 8564a83e1..26f710617 100644 --- a/earthly/docs/services/docker-compose.kroki.yml +++ b/earthly/docs/services/docker-compose.kroki.yml @@ -3,6 +3,8 @@ version: "3" # ############################################################################## # SERVICE DEFINITIONS +# cspell: words yuzutech blockdiag excalidraw wireviz + services: # Kroki Service for building both static and live docs against. diff --git a/earthly/mdlint/Earthfile b/earthly/mdlint/Earthfile index 15b8d5111..c58f08ac4 100644 --- a/earthly/mdlint/Earthfile +++ b/earthly/mdlint/Earthfile @@ -1,4 +1,5 @@ -VERSION 0.7 +VERSION 0.7 +# cspell: words markdownlint MDLINT_LOCALLY: # DO NOT RUN THIS UDC INSIDE CONTAINER BUILDS. @@ -43,7 +44,7 @@ mdlint-test: # Test Markdown lint checks. # Run with `earthly -P +mdlint-test - # Must be run LOCALLY as dexcribed above. + # Must be run LOCALLY as described above. LOCALLY ARG src=$(echo ${PWD}/../../) diff --git a/earthly/python/Earthfile b/earthly/python/Earthfile index 447ec1e67..fe75cb61f 100644 --- a/earthly/python/Earthfile +++ b/earthly/python/Earthfile @@ -1,4 +1,4 @@ -# Common Python UDC's and Builders. +# Common Python UDCs and Builders. VERSION 0.7 FROM python:3.11-bullseye diff --git a/earthly/python/Readme.md b/earthly/python/Readme.md index 8b99bb4d8..e19e741ab 100644 --- a/earthly/python/Readme.md +++ b/earthly/python/Readme.md @@ -6,7 +6,7 @@ This repo defines common python targets and UDCs for use with python. ### POETRY_SETUP -This UDC setus up a python based container that uses poetry for dependency management. +This UDC sets up a python based container that uses poetry for dependency management. Once the UDC has run, the Earthly target that invoked it will #### Invocation diff --git a/flake.nix b/flake.nix index 668655be0..1aac67eb4 100644 --- a/flake.nix +++ b/flake.nix @@ -1,3 +1,4 @@ +# cspell: words substituters cachix rrbutani { description = "Catalyst CI"; From d7309c0345d769acc52e6e93edb24ca53214cf1d Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Mon, 2 Oct 2023 18:17:31 +0700 Subject: [PATCH 20/22] fix(cspell/markdown): allow markdown and spelling workflows to be reused --- .github/workflows/markdown-check.yml | 4 +++- .github/workflows/spell-check.yml | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/markdown-check.yml b/.github/workflows/markdown-check.yml index 198d67853..4d25e3257 100644 --- a/.github/workflows/markdown-check.yml +++ b/.github/workflows/markdown-check.yml @@ -1,6 +1,8 @@ name: Markdown Check -on: pull_request +on: + workflow_call: + pull_request: jobs: check-markdown: diff --git a/.github/workflows/spell-check.yml b/.github/workflows/spell-check.yml index b766eb033..1e7fbfe14 100644 --- a/.github/workflows/spell-check.yml +++ b/.github/workflows/spell-check.yml @@ -1,6 +1,8 @@ name: Spell Check -on: pull_request +on: + workflow_call: + pull_request: jobs: publish: From f92c91faa6f38afed18b898f5b560b15db84c13a Mon Sep 17 00:00:00 2001 From: Steven Johnson Date: Thu, 5 Oct 2023 10:18:34 +0700 Subject: [PATCH 21/22] cspell should check dot files unless explicitly ignored --- earthly/cspell/Earthfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/earthly/cspell/Earthfile b/earthly/cspell/Earthfile index 7be069325..2aad7ad40 100644 --- a/earthly/cspell/Earthfile +++ b/earthly/cspell/Earthfile @@ -22,7 +22,7 @@ CSPELL_LOCALLY: --rm \ -v $src:/workdir \ ghcr.io/streetsidesoftware/cspell:latest \ - lint . + lint . --dot # A Test and example invocation of the above UDC. cspell-test: From c403c1b03a171398fc1ae63a001c8fc0a3c4ef8a Mon Sep 17 00:00:00 2001 From: Joshua Gilman Date: Mon, 9 Oct 2023 10:33:09 -0700 Subject: [PATCH 22/22] fix: corrects binary name in discover action (#33) --- actions/discover/dist/index.js | 2 +- actions/discover/src/discover.ts | 6 +----- actions/discover/src/index.test.ts | 8 ++++---- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/actions/discover/dist/index.js b/actions/discover/dist/index.js index ccf60d93b..55f88bbc2 100644 --- a/actions/discover/dist/index.js +++ b/actions/discover/dist/index.js @@ -3155,7 +3155,7 @@ async function run() { if (targets.trim() !== '') { flags.push(...targets.split(' ').map(t => `-t ${t}`)); } - const command = ['omashu', 'scan', ...flags, paths] + const command = ['ci', 'scan', ...flags, paths] .filter(Boolean) .join(' '); core.info(`Running command: ${command}`); diff --git a/actions/discover/src/discover.ts b/actions/discover/src/discover.ts index 2915a92cc..22c78b1df 100644 --- a/actions/discover/src/discover.ts +++ b/actions/discover/src/discover.ts @@ -2,8 +2,6 @@ import * as core from '@actions/core' import { exec } from 'child_process' import { quote } from 'shell-quote' -// cspell: words omashu - export async function run(): Promise { try { const parse = core.getBooleanInput('parse_images') @@ -14,9 +12,7 @@ export async function run(): Promise { if (targets.trim() !== '') { flags.push(...targets.split(' ').map(t => `-t ${t}`)) } - const command = ['omashu', 'scan', ...flags, paths] - .filter(Boolean) - .join(' ') + const command = ['ci', 'scan', ...flags, paths].filter(Boolean).join(' ') core.info(`Running command: ${command}`) core.setOutput('json', await execCommand(command)) diff --git a/actions/discover/src/index.test.ts b/actions/discover/src/index.test.ts index 1eef57bc7..3e2b67263 100644 --- a/actions/discover/src/index.test.ts +++ b/actions/discover/src/index.test.ts @@ -27,25 +27,25 @@ describe('Discover Action', () => { jest.clearAllMocks() }) - describe('when testing running the omashu command', () => { + describe('when testing running the ci command', () => { const testCases = [ { parseImages: true, paths: 'path1 path2', targets: 'target1 target2', - expectedCommand: "omashu scan -ji -t target1 -t target2 'path1 path2'" + expectedCommand: "ci scan -ji -t target1 -t target2 'path1 path2'" }, { parseImages: false, paths: 'path1', targets: 'target1', - expectedCommand: 'omashu scan -j -t target1 path1' + expectedCommand: 'ci scan -j -t target1 path1' }, { parseImages: false, paths: '.', targets: '', - expectedCommand: 'omashu scan -j .' + expectedCommand: 'ci scan -j .' } ]