diff --git a/.github/workflows/build_and_deploy.yml b/.github/workflows/build_and_deploy.yml index b377df554..93a68d253 100644 --- a/.github/workflows/build_and_deploy.yml +++ b/.github/workflows/build_and_deploy.yml @@ -49,24 +49,25 @@ jobs: echo "ACCOUNT_NUMBER=${{ secrets.DEV_ACCOUNT_NUMBER }}" >> $GITHUB_ENV fi - - uses: actions/setup-python@v4 - with: - python-version: '3.11' - - - name: Install pipenv - run: pip install pipenv - - name: Checkout Code Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + enable-cache: true + + - name: Install the project + run: uv sync --locked --all-extras --dev + - name: Authenticate GitHub CLI run: gh auth login --with-token <<< "${{ secrets.GITHUB_TOKEN }}" - name: Build Site run: | - python build_branches.py -env "${{ inputs.environment }}" + uv run python build_branches.py -env "${{ inputs.environment }}" - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 @@ -77,7 +78,7 @@ jobs: - name: Login to Amazon ECR id: login-ecr - uses: aws-actions/amazon-ecr-login@v1 + uses: aws-actions/amazon-ecr-login@v2 - name: Build, tag, and push image to Amazon ECR id: build-image diff --git a/.github/workflows/build_and_deploy_gcp.yml b/.github/workflows/build_and_deploy_gcp.yml index 9a07b217b..44e8d8e4c 100644 --- a/.github/workflows/build_and_deploy_gcp.yml +++ b/.github/workflows/build_and_deploy_gcp.yml @@ -35,46 +35,25 @@ jobs: contents: write pull-requests: write steps: - - uses: actions/setup-python@v4 - with: - python-version: '3.11' - - - name: Install pipenv - run: pip install pipenv - - name: Checkout Code Repository uses: actions/checkout@v4 with: fetch-depth: 0 + - name: Install uv + uses: astral-sh/setup-uv@v5 + with: + enable-cache: true + + - name: Install the project + run: uv sync --locked --all-extras --dev + - name: Authenticate GitHub CLI run: gh auth login --with-token <<< "${{ secrets.GITHUB_TOKEN }}" - name: Build Site run: | - python build_branches.py -env "${{ inputs.environment }}" - - - name: Construct metadata tags input - id: metadata-tags - run: | - echo 'tag_config<> $GITHUB_OUTPUT - - if [ -n "${{ needs.generate-version.outputs.version }}" ]; then - echo "type=raw,value=${{ needs.generate-version.outputs.version }}" >> $GITHUB_OUTPUT - else - echo "type=ref,event=branch" >> $GITHUB_OUTPUT - echo "type=ref,event=pr" >> $GITHUB_OUTPUT - echo "type=semver,pattern={{version}}" >> $GITHUB_OUTPUT - echo "type=semver,pattern={{major}}.{{minor}}" >> $GITHUB_OUTPUT - fi - - echo 'EOF' >> $GITHUB_OUTPUT - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uv run python build_branches.py -env "${{ inputs.environment }}" - name: Authenticate with GCP via OIDC uses: google-github-actions/auth@v2 @@ -87,20 +66,27 @@ jobs: run: | echo '{"credHelpers": {"europe-west2-docker.pkg.dev": "gcloud"}}' > ~/.docker/config.json - - name: Extract metadata (tags, labels) for Docker - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: ${{ needs.generate-version.outputs.version }} - flavor: | - latest=false + - name: Sanitize and Set IMAGE_TAG + id: set-image-tag + run: | + # Get the version from the previous job output + RAW_VERSION="${{ needs.generate-version.outputs.version }}" - - name: Push to GCP Artifact Registry - uses: docker/build-push-action@v6 - with: - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max + # Sanitize the version: + # 1. Replace invalid characters (like +, :, /) with hyphens + # 2. Remove any leading/trailing hyphens or multiple consecutive hyphens + # This creates a more Docker-friendly tag + SANITIZED_VERSION=$(echo "$RAW_VERSION" | sed -E 's/[^a-zA-Z0-9._-]+/-/g' | sed -E 's/^-+|-+$//g' | sed -E 's/--+/-/g') + + # Combine with run_number for uniqueness, ensuring it's valid + FINAL_IMAGE_TAG="${SANITIZED_VERSION}-${{ github.run_number }}" + + echo "Generated Docker Tag: $FINAL_IMAGE_TAG" + echo "IMAGE_TAG=$FINAL_IMAGE_TAG" >> $GITHUB_ENV + + - name: Build and Push image to GCP Artifact Registry + id: build-image + run: | + docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} -f Dockerfile.review . + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }} + echo "image_uri=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.IMAGE_TAG }}" >> $GITHUB_OUTPUT diff --git a/.github/workflows/deploy_gcp.yml b/.github/workflows/deploy_gcp.yml index d2198ef32..85ff56a40 100644 --- a/.github/workflows/deploy_gcp.yml +++ b/.github/workflows/deploy_gcp.yml @@ -19,5 +19,5 @@ jobs: environment: ${{(github.ref == 'refs/heads/dev' && 'dev') || (github.ref == 'refs/heads/main' && 'staging') || (github.event_name == 'pull_request' && 'dev')}} - core_app: ${{ github.ref == 'refs/heads/main' && 'polygon-docs-main' || 'polygon-docs-dev' }} + core_app: ${{ github.ref == 'refs/heads/main' && 'polygon-docs' || 'polygon-docs-dev' }} secrets: inherit diff --git a/.gitignore b/.gitignore index 08dd1344b..e04b7dec7 100755 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,18 @@ .vscode .code .idea +.repo-cache/ site/ venv/ env/ +branch/ +app/ +temp_dir/ *.out node_modules/ .DS_Store **/.DS_Store *.iml -temp_dir/ package-lock.json package.json -branch/ + diff --git a/.python-version b/.python-version new file mode 100644 index 000000000..24ee5b1be --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.13 diff --git a/build_branches.py b/build_branches.py index 5cca1b446..adc3f6a4f 100755 --- a/build_branches.py +++ b/build_branches.py @@ -1,184 +1,231 @@ +#!/usr/bin/env python3 """ -Handles dynamic environment building and hosting through dynamically -updated nginx.conf +Fast multi-branch docs builder *with rich logging*. """ + +from __future__ import annotations import argparse -import ast +import json +import logging import os import shutil import subprocess -import sys - +import time +from functools import lru_cache +from pathlib import Path HOSTED_SITE_DOMAIN = "docs-dev.polygon.technology" -def parse_args(): - """ - Parses arguments passed from command line - """ - parser = argparse.ArgumentParser(description="Parser to read arguments for build") - parser.add_argument("-env", "--environment", type=str, - help="Environment to handle build", default="dev" - ) - args = parser.parse_args(sys.argv[1:]) - parsed_env = args.environment.strip() - return parsed_env - - -def install_mkdocs_with_pipenv(): - """ - Builds a particular branch site. - Having a varying set of requirements can be handled by having each branch - build their dependencies and then running mkdocs build. - """ - folder = os.getcwd() - subprocess.run(["pipenv", "install", "--site-packages"], cwd=folder, check=True) - subprocess.run(["pipenv", "install", "-r", "requirements.txt"], cwd=folder, check=True) - subprocess.run(["pipenv", "run", "mkdocs", "build"], cwd=folder, check=True) - -def copy_folder(source_dir, target_dir): - """ - Copies contents from source directory to target directory - :param source_dir: Source directory from which contents are to be copied - :param target_dir: Target Directory where the contents are copied to. - """ - os.makedirs(target_dir, exist_ok=True) - - for item in os.listdir(source_dir): - source_path = os.path.join(source_dir, item) - target_path = os.path.join(target_dir, item) - - if os.path.isdir(source_path): - shutil.copytree(source_path, target_path, dirs_exist_ok=True) - else: - if os.path.exists(target_path): - os.remove(target_path) - shutil.copy2(source_path, target_path) - -def delete_folders(folder_paths): - """ - Cleans existing folders for app and branches before executing the builds - :param folder_paths: List of folders to be deleted under the current working directory - """ - for folder_path in folder_paths: - try: - shutil.rmtree(folder_path) - print(f"Folder {folder_path} deletion successful.") - except OSError as e: - print(f"Error deleting folder: {e}") - -def clone_data_to_branch_folder(branch_name, remote_url, parent_dir, pr_number=None): - """ - Clones data to branch folder in branch/ or branch/dev folder - :param branch_name: Branch to clone and build - :param remote_url: Remote url for the git repository - :param parent_dir: Parent directory to get context of where data is stored - :param pr_number: PR number for the branch to host data into the folder or - environment name staging/prod - """ - common_dir = "branch" - target_path = os.path.join(common_dir, pr_number) - os.makedirs(target_path, exist_ok=True) - os.chdir(target_path) - subprocess.run(["git", "init"], check=True) - subprocess.run(["git", "remote", "add", "origin", remote_url], check=True) - print(f"Checking out branch {branch_name}") - subprocess.run(["git", "fetch", "--depth", "1", "origin", branch_name], check=True) - subprocess.run([ - "git", "checkout", "-b", branch_name, "--track", - f"origin/{branch_name}" - ], check=True) - install_mkdocs_with_pipenv() - source_dir = os.path.join(os.getcwd(), "site") - copy_folder(source_dir, os.path.join(parent_dir, "app", pr_number)) - os.chdir(parent_dir) - - -def update_pr_description(pr_number:str): - """ - Updates PR description by adding the url to access the hosted environment under dev - if it does not already exist in the definition - :param pr_number: PR number for the branch hosting website - """ - command = ["gh", "pr", "view", pr_number, "--json", "body", "--jq", ".body"] - pr_description = subprocess.run(command, capture_output=True, text=True, - check=True).stdout.strip() - hosted_url = f"{HOSTED_SITE_DOMAIN}/{pr_number}" - if hosted_url not in pr_description: - new_pr_description = f"Hosted url: [{hosted_url}](https://{hosted_url})\n" + pr_description - command = ["gh", "pr", "edit", pr_number, "--body", new_pr_description] - subprocess.run(command, check=True) - - -def process_branch_folders(parsed_env: str): - """ - Clones the branch specific code to hosted/ folder. - It then executes the build command and copy the built site to apps folder - under the same branch name - :param parsed_env: Environment which is used to build. - :return: PR numbers in str list where the site data is copied to - """ - delete_folders(["branch", "app"]) - - command = ["gh", "pr", "list", "--json", "number,headRefName"] - command_run_result = subprocess.run(command, capture_output=True, text=True, - check=True).stdout.strip() - branches_data = ast.literal_eval(command_run_result) - remote_url = subprocess.run(["git", "remote", "get-url", "origin"], - capture_output=True, - text=True, check=True).stdout.strip() - parent_dir = os.getcwd() - branch_name = parsed_env - if parsed_env in ["staging", "prod"]: - branch_name = "main" - clone_data_to_branch_folder(branch_name, remote_url, parent_dir, parsed_env) - pr_numbers = [] - if parsed_env == "dev": - for branch_data in branches_data: - if not branch_data["headRefName"].startswith("hosted/") or \ - not branch_data.get("number"): +# ────────────────────────── logging setup ──────────────────────────────────── # + +def setup_logging(verbosity: int) -> None: + """ + Configure root logger. + -0 : WARNING, 1 : INFO (default), 2 : DEBUG, ≥3 : NOTSET + """ + level = max(logging.WARNING - (verbosity * 10), logging.NOTSET) + fmt = "%(asctime)s %(levelname)-7s %(message)s" + datef = "%H:%M:%S" + logging.basicConfig(level=level, format=fmt, datefmt=datef) + +log = logging.getLogger(__name__) + +# ────────────────────────── helpers ───────────────────────────────────────── # + +def run(cmd: list[str] | tuple[str, ...], + cwd: str | Path | None = None, + capture_output: bool = False) -> subprocess.CompletedProcess[str]: + """ + Wrapper around subprocess.run with detailed logging & timing. + Returns CompletedProcess; raises if non-zero exit code. + """ + cmd_display = " ".join(cmd) + wd = str(cwd) if cwd else os.getcwd() + log.debug("RUN %s (cwd=%s)", cmd_display, wd) + + t0 = time.perf_counter() + try: + cp = subprocess.run( + cmd, + cwd=cwd, + check=True, + text=True, + capture_output=capture_output + ) + elapsed = time.perf_counter() - t0 + log.debug("OK %s (%.2fs)", cmd_display, elapsed) + return cp + except subprocess.CalledProcessError as exc: + elapsed = time.perf_counter() - t0 + log.error("FAIL %s (%.2fs, exit=%s)", cmd_display, elapsed, exc.returncode) + if exc.stdout: + log.error("stdout:\n%s", exc.stdout.strip()) + if exc.stderr: + log.error("stderr:\n%s", exc.stderr.strip()) + raise # re-raise so caller still sees the traceback + +# ────────────────────────── git helpers ───────────────────────────────────── # + +REPO_CACHE_DIR = Path(".repo-cache") +WORKTREES_DIR = Path("branch") +APPS_DIR = Path("app") +UV_ENV_DIR = ".venv" + +def prepare_repo_cache(remote_url: str) -> Path: + if not REPO_CACHE_DIR.exists(): + log.info("Cloning %s → %s", remote_url, REPO_CACHE_DIR) + run([ + "git", "clone", + "--filter=blob:none", + remote_url, + str(REPO_CACHE_DIR), + ]) + else: + log.info("Fetching updates inside %s", REPO_CACHE_DIR) + run(["git", "fetch", "--prune", "origin", "+refs/heads/*:refs/remotes/origin/*"], cwd=REPO_CACHE_DIR) + log.debug("Available branches in %s:", REPO_CACHE_DIR) + branches = run(["git", "branch", "-r"], cwd=REPO_CACHE_DIR, capture_output=True).stdout + log.debug("%s", branches) + return REPO_CACHE_DIR + +def checkout_worktree(repo: Path, branch: str, dest: Path) -> None: + dest = dest.resolve() + if dest.exists(): + log.debug("Removing stale worktree %s", dest) + run(["git", "worktree", "remove", "--force", str(dest)], cwd=repo) + log.info("Creating worktree %s for branch %s", dest, branch) + run(["git", "worktree", "add", "--force", str(dest), f"origin/{branch}"], cwd=repo) + +# ────────────────────────── build helpers ─────────────────────────────────── # + +@lru_cache(maxsize=None) +def ensure_uv_env(repo: Path) -> None: + if not (repo / UV_ENV_DIR).exists(): + log.info("Creating shared uv virtual-env %s", UV_ENV_DIR) + run(["uv", "venv", UV_ENV_DIR], cwd=repo) + log.debug("Ensuring deps are installed in shared env") + lock_file = repo / "uv.lock" # Correct: repo is .repo-cache + log.debug("Checking for uv.lock at %s", lock_file) + if not lock_file.exists(): + log.error("uv.lock not found at %s, installing mkdocs only", lock_file) + run(["uv", "pip", "install", "mkdocs"], cwd=repo) + else: + log.info("Syncing dependencies from %s", lock_file) + run(["uv", "sync", "--frozen"], cwd=repo) + +def build_site(root: Path) -> None: + ensure_uv_env(root.parent) # repo is parent of worktree + log.info("Building MkDocs site in %s", root) + run(["uv", "run", "mkdocs", "build", "-q"], cwd=root) + +# ────────────────────────── misc helpers ──────────────────────────────────── # + +def copy_site(src: Path, dst: Path) -> None: + log.info("Copy site %s → %s", src, dst) + dst.mkdir(parents=True, exist_ok=True) + shutil.copytree(src, dst, dirs_exist_ok=True) + +def delete_tree(path: Path) -> None: + log.debug("Checking if path %s exists", path) + if path.exists(): + log.debug("Deleting %s", path) + shutil.rmtree(path, ignore_errors=True) + else: + log.debug("Path %s does not exist, skipping deletion", path) + +# ────────────────────────── PR helpers ────────────────────────────────────── # + +def update_pr_description(pr_number: str) -> None: + hosted_url = f"https://{HOSTED_SITE_DOMAIN}/{pr_number}" + body = run( + ["gh", "pr", "view", pr_number, "--json", "body", "--jq", ".body"], + capture_output=True + ).stdout + if hosted_url not in body: + log.info("Updating PR #%s description with hosted URL", pr_number) + new_body = f"Hosted url: [{hosted_url}]({hosted_url})\n{body}" + run(["gh", "pr", "edit", pr_number, "--body", new_body]) + +# ────────────────────────── main workflow ─────────────────────────────────── # + +def branch_exists(repo: Path, branch: str) -> bool: + """Check if a branch exists in the repository.""" + try: + run(["git", "rev-parse", "--verify", f"origin/{branch}"], cwd=repo, capture_output=True) + return True + except subprocess.CalledProcessError: + return False + +def process_environment(env: str) -> list[str]: + delete_tree(WORKTREES_DIR) + delete_tree(APPS_DIR) + remote_url = run(["git", "remote", "get-url", "origin"], capture_output=True).stdout.strip() + repo = prepare_repo_cache(remote_url) # repo is .repo-cache + main_branch = "main" if env in {"staging", "prod"} else env + if env == "dev" and not branch_exists(repo, main_branch): + log.warning("Branch 'dev' does not exist, falling back to 'main'") + main_branch = "main" + main_wt = (WORKTREES_DIR / env).resolve() + checkout_worktree(repo, main_branch, main_wt) + ensure_uv_env(repo) # Pass repo (.repo-cache), not main_wt.parent + build_site(main_wt) + copy_site(main_wt / "site", APPS_DIR / env) + + pr_numbers: list[str] = [] + if env == "dev": + prs_json = run( + ["gh", "pr", "list", "--json", "number,headRefName"], + capture_output=True + ).stdout + for pr in json.loads(prs_json): + if not pr["headRefName"].startswith("hosted/"): continue - pr_number = str(branch_data["number"]) - clone_data_to_branch_folder(branch_data["headRefName"], remote_url, - parent_dir, pr_number) - update_pr_description(pr_number) - pr_numbers.append(pr_number) + num = str(pr["number"]) + if not branch_exists(repo, pr["headRefName"]): + log.warning("Skipping PR #%s: branch %s does not exist", num, pr["headRefName"]) + continue + pr_numbers.append(num) + wt = (WORKTREES_DIR / num).resolve() + checkout_worktree(repo, pr["headRefName"], wt) + build_site(wt) + copy_site(wt / "site", APPS_DIR / num) + update_pr_description(num) return pr_numbers -def update_nginx_config(pr_numbers, parsed_env): - """ - Updates nginx.conf file with branches built information to host multiple versions - of software at the same time. - :param pr_numbers: pr numbers a str list of open pr numbers to be hosted - :param parsed_env: Environment which is used to build. - """ - config_file = os.path.join(os.getcwd(), "nginx.conf") - nginx_location_blocks = "" - - for pr_number in pr_numbers: - location_block = f"""location /{pr_number} {{ - alias /app/{pr_number}; - try_files $uri $uri/ =404; - error_page 404 /404.html; - }} - """ - nginx_location_blocks += location_block - print(f"Hosted site: https://{HOSTED_SITE_DOMAIN}/{pr_number}") - - content = "" - with open(config_file, "r+", encoding="utf-8") as f: - content = f.read() - content = content.replace("#REPLACE_APPS", nginx_location_blocks) - content = content.replace("#environment", parsed_env) - f.seek(0) - f.write(content) - f.truncate() - - print(f"NGINX configuration updated successfully! content: \n{content}") +def update_nginx_config(pr_numbers: list[str], env: str) -> None: + blocks = "\n".join( + f"""location /{n} {{ + alias /app/{n}; + try_files $uri $uri/ =404; + error_page 404 /404.html; +}}""" for n in pr_numbers) + conf_template = Path("nginx_template") + conf = Path("nginx.conf") + content = conf_template.read_text(encoding="utf-8") + content = content.replace("#REPLACE_APPS", blocks).replace("#environment", env) + conf.write_text(content, encoding="utf-8") + log.info("NGINX configuration updated with %d blocks", len(pr_numbers)) + log.info("Generated nginx.conf content:\n%s", conf.read_text(encoding="utf-8")) + +# ────────────────────────── CLI ───────────────────────────────────────────── # + +def parse_args() -> tuple[str, int]: + p = argparse.ArgumentParser() + p.add_argument("-env", "--environment", default="dev", + help="dev (default) | staging | prod") + p.add_argument("-v", "--verbose", action="count", default=1, + help="-v INFO (default), -vv DEBUG, -vvv NOTSET") + args = p.parse_args() + return args.environment.strip(), args.verbose + +# ────────────────────────── entry point ───────────────────────────────────── # if __name__ == "__main__": - environment = parse_args() - open_prs = process_branch_folders(environment) - update_nginx_config(open_prs, environment) + env, verbosity = parse_args() + setup_logging(verbosity) + log.info("Start build for environment=%s", env) + prs = process_environment(env) + update_nginx_config(prs, env) + log.info("All done. Hosted PRs: %s", ", ".join(prs) or "none") diff --git a/docs/pos/get-started/openapi.yaml b/docs/pos/get-started/openapi.yaml new file mode 100644 index 000000000..1344b062d --- /dev/null +++ b/docs/pos/get-started/openapi.yaml @@ -0,0 +1,4670 @@ +swagger: '2.0' +info: + title: Heimdall v2 - gRPC Gateway docs + description: A REST interface for state queries. + version: 1.0.0 +paths: + /bor/params: + get: + summary: GetBorParams queries the parameters of x/bor module. + operationId: GetBorParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + type: object + properties: + sprint_duration: + type: string + format: uint64 + span_duration: + type: string + format: uint64 + producer_count: + type: string + format: uint64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /bor/span/latest: + get: + summary: GetLatestSpan queries the latest span. + operationId: GetLatestSpan + responses: + '200': + description: A successful response. + schema: + type: object + properties: + span: + type: object + properties: + id: + type: string + format: uint64 + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + selected_producers: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + bor_chain_id: + type: string + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /bor/span/list: + get: + summary: GetSpanList queries a list of spans. + operationId: GetSpanList + responses: + '200': + description: A successful response. + schema: + type: object + properties: + span_list: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + selected_producers: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + bor_chain_id: + type: string + pagination: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /bor/span/prepare: + get: + summary: GetNextSpan queries the next span given a QueryNextSpanRequest. + operationId: GetNextSpan + responses: + '200': + description: A successful response. + schema: + type: object + properties: + span: + type: object + properties: + id: + type: string + format: uint64 + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + selected_producers: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + bor_chain_id: + type: string + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: span_id + in: query + required: false + type: string + format: uint64 + - name: start_block + in: query + required: false + type: string + format: uint64 + - name: bor_chain_id + in: query + required: false + type: string + tags: + - Query + /bor/span/seed/{id}: + get: + summary: |- + GetNextSpanSeed queries the next span seed given a + QueryNextSpanSeedRequest. + operationId: GetNextSpanSeed + responses: + '200': + description: A successful response. + schema: + type: object + properties: + seed: + type: string + seed_author: + type: string + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: id + in: path + required: true + type: string + format: uint64 + tags: + - Query + /bor/span/{id}: + get: + summary: GetSpanById retrieves a span by its id. + operationId: GetSpanById + responses: + '200': + description: A successful response. + schema: + type: object + properties: + span: + type: object + properties: + id: + type: string + format: uint64 + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + selected_producers: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + bor_chain_id: + type: string + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: id + in: path + required: true + type: string + tags: + - Query + /chainmanager/params: + get: + summary: GetChainManagerParams queries the parameters of x/chainmanager module + operationId: GetChainManagerParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + type: object + properties: + chain_params: + type: object + properties: + bor_chain_id: + type: string + heimdall_chain_id: + type: string + pol_token_address: + type: string + staking_manager_address: + type: string + slash_manager_address: + type: string + root_chain_address: + type: string + staking_info_address: + type: string + state_sender_address: + type: string + state_receiver_address: + type: string + validator_set_address: + type: string + main_chain_tx_confirmations: + type: string + format: uint64 + bor_chain_tx_confirmations: + type: string + format: uint64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /checkpoint/signatures/{tx_hash}: + get: + summary: GetCheckpointSignatures queries signatures for latest checkpoint + operationId: GetCheckpointSignatures + responses: + '200': + description: A successful response. + schema: + type: object + properties: + signatures: + type: array + items: + type: object + properties: + validator_address: + type: string + format: byte + signature: + type: string + format: byte + title: |- + QueryCheckpointSignaturesResponse is response type for + QueryCheckpointSignatures RPC method + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: tx_hash + in: path + required: true + type: string + tags: + - Query + /checkpoints/buffer: + get: + summary: GetCheckpointBuffer queries for the checkpoint in the buffer + operationId: GetCheckpointBuffer + responses: + '200': + description: A successful response. + schema: + type: object + properties: + checkpoint: + type: object + properties: + id: + type: string + format: uint64 + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + root_hash: + type: string + format: byte + bor_chain_id: + type: string + timestamp: + type: string + format: uint64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /checkpoints/count: + get: + summary: GetAckCount queries for the ack count + operationId: GetAckCount + responses: + '200': + description: A successful response. + schema: + type: object + properties: + ack_count: + type: string + format: uint64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /checkpoints/last-no-ack: + get: + summary: GetLastNoAck queries for the last last-no-ack + operationId: GetLastNoAck + responses: + '200': + description: A successful response. + schema: + type: object + properties: + last_no_ack_id: + type: string + format: uint64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /checkpoints/latest: + get: + summary: GetCheckpointLatest queries for the latest checkpoint + operationId: GetCheckpointLatest + responses: + '200': + description: A successful response. + schema: + type: object + properties: + checkpoint: + type: object + properties: + id: + type: string + format: uint64 + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + root_hash: + type: string + format: byte + bor_chain_id: + type: string + timestamp: + type: string + format: uint64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /checkpoints/list: + get: + summary: GetCheckpointList queries for the list of checkpoints + operationId: GetCheckpointList + responses: + '200': + description: A successful response. + schema: + type: object + properties: + checkpoint_list: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + root_hash: + type: string + format: byte + bor_chain_id: + type: string + timestamp: + type: string + format: uint64 + pagination: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: >- + PageResponse is to be embedded in gRPC response messages where + the + + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /checkpoints/overview: + get: + summary: GetChekpointOverview queries for the checkpoint overview + operationId: GetCheckpointOverview + responses: + '200': + description: A successful response. + schema: + type: object + properties: + ack_count: + type: string + format: uint64 + last_no_ack_id: + type: string + format: uint64 + buffer_checkpoint: + type: object + properties: + id: + type: string + format: uint64 + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + root_hash: + type: string + format: byte + bor_chain_id: + type: string + timestamp: + type: string + format: uint64 + validator_count: + type: string + format: uint64 + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /checkpoints/params: + get: + summary: GetCheckpointParams queries for the x/checkpoint params + operationId: GetCheckpointParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + type: object + properties: + checkpoint_buffer_time: + type: string + avg_checkpoint_length: + type: string + format: uint64 + max_checkpoint_length: + type: string + format: uint64 + child_chain_block_interval: + type: string + format: uint64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /checkpoints/prepare-next: + get: + summary: GetNextCheckpoint queries for the next checkpoint + operationId: GetNextCheckpoint + responses: + '200': + description: A successful response. + schema: + type: object + properties: + checkpoint: + type: object + properties: + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + root_hash: + type: string + format: byte + account_root_hash: + type: string + format: byte + bor_chain_id: + type: string + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /checkpoints/{number}: + get: + summary: GetCheckpoint queries for the checkpoint based on the number + operationId: GetCheckpoint + responses: + '200': + description: A successful response. + schema: + type: object + properties: + checkpoint: + type: object + properties: + id: + type: string + format: uint64 + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + root_hash: + type: string + format: byte + bor_chain_id: + type: string + timestamp: + type: string + format: uint64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: number + in: path + required: true + type: string + format: uint64 + tags: + - Query + /clerk/event-record/list: + get: + summary: GetRecordList queries a list of records + operationId: GetRecordList + responses: + '200': + description: A successful response. + schema: + type: object + properties: + event_records: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + contract: + type: string + data: + type: string + format: byte + tx_hash: + type: string + log_index: + type: string + format: uint64 + bor_chain_id: + type: string + record_time: + type: string + format: date-time + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: page + in: query + required: false + type: string + format: uint64 + - name: limit + in: query + required: false + type: string + format: uint64 + tags: + - Query + /clerk/event-record/{record_id}: + get: + summary: GetRecordById retrieves a record by its id + operationId: GetRecordById + responses: + '200': + description: A successful response. + schema: + type: object + properties: + record: + type: object + properties: + id: + type: string + format: uint64 + contract: + type: string + data: + type: string + format: byte + tx_hash: + type: string + log_index: + type: string + format: uint64 + bor_chain_id: + type: string + record_time: + type: string + format: date-time + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: record_id + in: path + required: true + type: string + format: uint64 + tags: + - Query + /clerk/isoldtx: + get: + summary: |- + IsClerkTxOld queries for a specific clerk tx to check its status (old + means already submitted) + operationId: IsClerkTxOld + responses: + '200': + description: A successful response. + schema: + type: object + properties: + is_old: + type: boolean + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: tx_hash + in: query + required: false + type: string + - name: log_index + in: query + required: false + type: string + format: uint64 + tags: + - Query + /clerk/sequence: + get: + summary: GetRecordSequence queries the sequence of the record + operationId: GetRecordSequence + responses: + '200': + description: A successful response. + schema: + type: object + properties: + sequence: + type: string + format: uint64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: tx_hash + in: query + required: false + type: string + - name: log_index + in: query + required: false + type: string + format: uint64 + tags: + - Query + /clerk/time: + get: + summary: GetRecordListWithTime queries a list of records with time + operationId: GetRecordListWithTime + responses: + '200': + description: A successful response. + schema: + type: object + properties: + event_records: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + contract: + type: string + data: + type: string + format: byte + tx_hash: + type: string + log_index: + type: string + format: uint64 + bor_chain_id: + type: string + record_time: + type: string + format: date-time + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: from_id + in: query + required: false + type: string + format: uint64 + - name: to_time + in: query + required: false + type: string + format: date-time + - name: pagination.key + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + in: query + required: false + type: string + format: byte + - name: pagination.offset + description: >- + offset is a numeric offset that can be used when key is unavailable. + + It is less efficient than using key. Only one of offset or key + should + + be set. + in: query + required: false + type: string + format: uint64 + - name: pagination.limit + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + in: query + required: false + type: string + format: uint64 + - name: pagination.count_total + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in + UIs. + + count_total is only respected when offset is used. It is ignored + when key + + is set. + in: query + required: false + type: boolean + - name: pagination.reverse + description: >- + reverse is set to true if results are to be returned in the + descending order. + + + Since: cosmos-sdk 0.43 + in: query + required: false + type: boolean + tags: + - Query + /milestone/count: + get: + summary: GetMilestoneCount queries for the milestone count + operationId: GetMilestoneCount + responses: + '200': + description: A successful response. + schema: + type: object + properties: + count: + type: string + format: uint64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /milestone/latest: + get: + summary: GetLatestMilestone queries for the latest milestone + operationId: GetLatestMilestone + responses: + '200': + description: A successful response. + schema: + type: object + properties: + milestone: + type: object + properties: + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + hash: + type: string + format: byte + bor_chain_id: + type: string + milestone_id: + type: string + timestamp: + type: string + format: uint64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /milestone/params: + get: + summary: GetMilestoneParams queries for the x/milestone parameters + operationId: GetMilestoneParams + responses: + '200': + description: A successful response. + schema: + type: object + properties: + params: + type: object + properties: + max_milestone_proposition_length: + type: string + format: uint64 + ff_milestone_threshold: + type: string + format: uint64 + ff_milestone_block_interval: + type: string + format: uint64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /milestone/{number}: + get: + summary: GetMilestoneByNumber queries for the milestone based on the number + operationId: GetMilestoneByNumber + responses: + '200': + description: A successful response. + schema: + type: object + properties: + milestone: + type: object + properties: + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + hash: + type: string + format: byte + bor_chain_id: + type: string + milestone_id: + type: string + timestamp: + type: string + format: uint64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: number + in: path + required: true + type: string + format: uint64 + tags: + - Query + /stake/is-old-tx: + get: + summary: IsStakeTxOld queries for the staking sequence + operationId: IsStakeTxOld + responses: + '200': + description: A successful response. + schema: + type: object + properties: + is_old: + type: boolean + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: tx_hash + in: query + required: false + type: string + - name: log_index + in: query + required: false + type: string + format: uint64 + tags: + - Query + /stake/proposers/current: + get: + summary: GetCurrentProposer queries validator info for the current proposer + operationId: GetCurrentProposer + responses: + '200': + description: A successful response. + schema: + type: object + properties: + validator: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /stake/proposers/{times}: + get: + summary: GetProposersByTimes queries for the proposers by Tendermint iterations + operationId: GetProposersByTimes + responses: + '200': + description: A successful response. + schema: + type: object + properties: + proposers: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: times + in: path + required: true + type: string + format: uint64 + tags: + - Query + /stake/signer/{val_address}: + get: + summary: GetSignerByAddress queries validator info for a given validator address + operationId: GetSignerByAddress + responses: + '200': + description: A successful response. + schema: + type: object + properties: + validator: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: val_address + in: path + required: true + type: string + tags: + - Query + /stake/total-power: + get: + summary: GetTotalPower queries the total power of a validator set + operationId: GetTotalPower + responses: + '200': + description: A successful response. + schema: + type: object + properties: + total_power: + type: string + format: int64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /stake/validator-set: + get: + summary: GetCurrentValidatorSet queries for the current validator set + operationId: GetCurrentValidatorSet + responses: + '200': + description: A successful response. + schema: + type: object + properties: + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /stake/validator-status/{val_address}: + get: + summary: |- + GetValidatorStatusByAddress queries validator status for given validator + val_address + operationId: GetValidatorStatusByAddress + responses: + '200': + description: A successful response. + schema: + type: object + properties: + is_old: + type: boolean + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: val_address + in: path + required: true + type: string + tags: + - Query + /stake/validator/{id}: + get: + summary: GetValidatorById queries validator info for a given validator id + operationId: GetValidatorById + responses: + '200': + description: A successful response. + schema: + type: object + properties: + validator: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: id + in: path + required: true + type: string + format: uint64 + tags: + - Query + /topup/account-proof/{address}: + get: + summary: GetAccountProof queries for the account proof of a given address + operationId: GetAccountProofByAddress + responses: + '200': + description: A successful response. + schema: + type: object + properties: + proof: + type: object + properties: + address: + type: string + account_proof: + type: string + format: byte + index: + type: string + format: uint64 + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: address + in: path + required: true + type: string + tags: + - Query + /topup/account-proof/{address}/verify: + get: + summary: VerifyAccountProof queries for the proof of an account given its address + operationId: VerifyAccountProofByAddress + responses: + '200': + description: A successful response. + schema: + type: object + properties: + is_verified: + type: boolean + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: address + in: path + required: true + type: string + - name: proof + in: query + required: false + type: string + tags: + - Query + /topup/dividend-account-root: + get: + summary: >- + GetDividendAccountRootHash calculates and returns the dividend account + root + + hash + operationId: GetDividendAccountRootHash + responses: + '200': + description: A successful response. + schema: + type: object + properties: + account_root_hash: + type: string + format: byte + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + tags: + - Query + /topup/dividend-account/{address}: + get: + summary: >- + GetDividendAccountByAddress queries for a specific DividendAccount by + its + + address + operationId: GetDividendAccountByAddress + responses: + '200': + description: A successful response. + schema: + type: object + properties: + dividend_account: + type: object + properties: + user: + type: string + fee_amount: + type: string + title: DividendAccount contains the burned fees + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: address + in: path + required: true + type: string + tags: + - Query + /topup/isoldtx: + get: + summary: |- + IsTopupTxOld queries for a specific topup tx to check its status (old + means already submitted) + operationId: IsTopupTxOld + responses: + '200': + description: A successful response. + schema: + type: object + properties: + is_old: + type: boolean + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: tx_hash + in: query + required: false + type: string + - name: log_index + in: query + required: false + type: string + format: uint64 + tags: + - Query + /topup/sequence: + get: + summary: >- + GetTopupTxSequence queries for a specific topup tx and returns its + sequence + operationId: GetTopupTxSequence + responses: + '200': + description: A successful response. + schema: + type: object + properties: + sequence: + type: string + default: + description: An unexpected error response. + schema: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + parameters: + - name: tx_hash + in: query + required: false + type: string + - name: log_index + in: query + required: false + type: string + format: uint64 + tags: + - Query +definitions: + cosmos.base.query.v1beta1.PageRequest: + type: object + properties: + key: + type: string + format: byte + description: |- + key is a value returned in PageResponse.next_key to begin + querying the next page most efficiently. Only one of offset or key + should be set. + offset: + type: string + format: uint64 + description: |- + offset is a numeric offset that can be used when key is unavailable. + It is less efficient than using key. Only one of offset or key should + be set. + limit: + type: string + format: uint64 + description: >- + limit is the total number of results to be returned in the result + page. + + If left empty it will default to a value to be set by each app. + count_total: + type: boolean + description: >- + count_total is set to true to indicate that the result set should + include + + a count of the total number of items available for pagination in UIs. + + count_total is only respected when offset is used. It is ignored when + key + + is set. + reverse: + type: boolean + description: >- + reverse is set to true if results are to be returned in the descending + order. + + + Since: cosmos-sdk 0.43 + description: |- + message SomeRequest { + Foo some_parameter = 1; + PageRequest pagination = 2; + } + title: |- + PageRequest is to be embedded in gRPC request messages for efficient + pagination. Ex: + cosmos.base.query.v1beta1.PageResponse: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: |- + total is total number of results available if PageRequest.count_total + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + google.protobuf.Any: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + grpc.gateway.runtime.Error: + type: object + properties: + error: + type: string + code: + type: integer + format: int32 + message: + type: string + details: + type: array + items: + type: object + properties: + type_url: + type: string + value: + type: string + format: byte + heimdallv2.bor.Params: + type: object + properties: + sprint_duration: + type: string + format: uint64 + span_duration: + type: string + format: uint64 + producer_count: + type: string + format: uint64 + heimdallv2.bor.QueryLatestSpanResponse: + type: object + properties: + span: + type: object + properties: + id: + type: string + format: uint64 + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + selected_producers: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + bor_chain_id: + type: string + heimdallv2.bor.QueryNextSpanResponse: + type: object + properties: + span: + type: object + properties: + id: + type: string + format: uint64 + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + selected_producers: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + bor_chain_id: + type: string + heimdallv2.bor.QueryNextSpanSeedResponse: + type: object + properties: + seed: + type: string + seed_author: + type: string + heimdallv2.bor.QueryParamsResponse: + type: object + properties: + params: + type: object + properties: + sprint_duration: + type: string + format: uint64 + span_duration: + type: string + format: uint64 + producer_count: + type: string + format: uint64 + heimdallv2.bor.QuerySpanByIdResponse: + type: object + properties: + span: + type: object + properties: + id: + type: string + format: uint64 + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + selected_producers: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + bor_chain_id: + type: string + heimdallv2.bor.QuerySpanListResponse: + type: object + properties: + span_list: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + selected_producers: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + bor_chain_id: + type: string + pagination: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + heimdallv2.bor.Span: + type: object + properties: + id: + type: string + format: uint64 + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + selected_producers: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + bor_chain_id: + type: string + heimdallv2.stake.Validator: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + heimdallv2.stake.ValidatorSet: + type: object + properties: + validators: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + heimdallv2.chainmanager.ChainParams: + type: object + properties: + bor_chain_id: + type: string + heimdall_chain_id: + type: string + pol_token_address: + type: string + staking_manager_address: + type: string + slash_manager_address: + type: string + root_chain_address: + type: string + staking_info_address: + type: string + state_sender_address: + type: string + state_receiver_address: + type: string + validator_set_address: + type: string + heimdallv2.chainmanager.Params: + type: object + properties: + chain_params: + type: object + properties: + bor_chain_id: + type: string + heimdall_chain_id: + type: string + pol_token_address: + type: string + staking_manager_address: + type: string + slash_manager_address: + type: string + root_chain_address: + type: string + staking_info_address: + type: string + state_sender_address: + type: string + state_receiver_address: + type: string + validator_set_address: + type: string + main_chain_tx_confirmations: + type: string + format: uint64 + bor_chain_tx_confirmations: + type: string + format: uint64 + heimdallv2.chainmanager.QueryParamsResponse: + type: object + properties: + params: + type: object + properties: + chain_params: + type: object + properties: + bor_chain_id: + type: string + heimdall_chain_id: + type: string + pol_token_address: + type: string + staking_manager_address: + type: string + slash_manager_address: + type: string + root_chain_address: + type: string + staking_info_address: + type: string + state_sender_address: + type: string + state_receiver_address: + type: string + validator_set_address: + type: string + main_chain_tx_confirmations: + type: string + format: uint64 + bor_chain_tx_confirmations: + type: string + format: uint64 + heimdallv2.checkpoint.Checkpoint: + type: object + properties: + id: + type: string + format: uint64 + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + root_hash: + type: string + format: byte + bor_chain_id: + type: string + timestamp: + type: string + format: uint64 + heimdallv2.checkpoint.CheckpointSignature: + type: object + properties: + validator_address: + type: string + format: byte + signature: + type: string + format: byte + heimdallv2.checkpoint.MsgCheckpoint: + type: object + properties: + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + root_hash: + type: string + format: byte + account_root_hash: + type: string + format: byte + bor_chain_id: + type: string + heimdallv2.checkpoint.Params: + type: object + properties: + checkpoint_buffer_time: + type: string + avg_checkpoint_length: + type: string + format: uint64 + max_checkpoint_length: + type: string + format: uint64 + child_chain_block_interval: + type: string + format: uint64 + heimdallv2.checkpoint.QueryAckCountResponse: + type: object + properties: + ack_count: + type: string + format: uint64 + heimdallv2.checkpoint.QueryCheckpointBufferResponse: + type: object + properties: + checkpoint: + type: object + properties: + id: + type: string + format: uint64 + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + root_hash: + type: string + format: byte + bor_chain_id: + type: string + timestamp: + type: string + format: uint64 + heimdallv2.checkpoint.QueryCheckpointLatestResponse: + type: object + properties: + checkpoint: + type: object + properties: + id: + type: string + format: uint64 + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + root_hash: + type: string + format: byte + bor_chain_id: + type: string + timestamp: + type: string + format: uint64 + heimdallv2.checkpoint.QueryCheckpointListResponse: + type: object + properties: + checkpoint_list: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + root_hash: + type: string + format: byte + bor_chain_id: + type: string + timestamp: + type: string + format: uint64 + pagination: + type: object + properties: + next_key: + type: string + format: byte + description: |- + next_key is the key to be passed to PageRequest.key to + query the next page most efficiently. It will be empty if + there are no more results. + total: + type: string + format: uint64 + title: >- + total is total number of results available if + PageRequest.count_total + + was set, its value is undefined otherwise + description: |- + PageResponse is to be embedded in gRPC response messages where the + corresponding request message has used PageRequest. + + message SomeResponse { + repeated Bar results = 1; + PageResponse page = 2; + } + heimdallv2.checkpoint.QueryCheckpointOverviewResponse: + type: object + properties: + ack_count: + type: string + format: uint64 + last_no_ack_id: + type: string + format: uint64 + buffer_checkpoint: + type: object + properties: + id: + type: string + format: uint64 + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + root_hash: + type: string + format: byte + bor_chain_id: + type: string + timestamp: + type: string + format: uint64 + validator_count: + type: string + format: uint64 + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + heimdallv2.checkpoint.QueryCheckpointResponse: + type: object + properties: + checkpoint: + type: object + properties: + id: + type: string + format: uint64 + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + root_hash: + type: string + format: byte + bor_chain_id: + type: string + timestamp: + type: string + format: uint64 + heimdallv2.checkpoint.QueryCheckpointSignaturesResponse: + type: object + properties: + signatures: + type: array + items: + type: object + properties: + validator_address: + type: string + format: byte + signature: + type: string + format: byte + title: |- + QueryCheckpointSignaturesResponse is response type for + QueryCheckpointSignatures RPC method + heimdallv2.checkpoint.QueryLastNoAckResponse: + type: object + properties: + last_no_ack_id: + type: string + format: uint64 + heimdallv2.checkpoint.QueryNextCheckpointResponse: + type: object + properties: + checkpoint: + type: object + properties: + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + root_hash: + type: string + format: byte + account_root_hash: + type: string + format: byte + bor_chain_id: + type: string + heimdallv2.checkpoint.QueryParamsResponse: + type: object + properties: + params: + type: object + properties: + checkpoint_buffer_time: + type: string + avg_checkpoint_length: + type: string + format: uint64 + max_checkpoint_length: + type: string + format: uint64 + child_chain_block_interval: + type: string + format: uint64 + heimdallv2.clerk.EventRecord: + type: object + properties: + id: + type: string + format: uint64 + contract: + type: string + data: + type: string + format: byte + tx_hash: + type: string + log_index: + type: string + format: uint64 + bor_chain_id: + type: string + record_time: + type: string + format: date-time + heimdallv2.clerk.IsClerkTxOldResponse: + type: object + properties: + is_old: + type: boolean + heimdallv2.clerk.RecordListResponse: + type: object + properties: + event_records: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + contract: + type: string + data: + type: string + format: byte + tx_hash: + type: string + log_index: + type: string + format: uint64 + bor_chain_id: + type: string + record_time: + type: string + format: date-time + heimdallv2.clerk.RecordListWithTimeResponse: + type: object + properties: + event_records: + type: array + items: + type: object + properties: + id: + type: string + format: uint64 + contract: + type: string + data: + type: string + format: byte + tx_hash: + type: string + log_index: + type: string + format: uint64 + bor_chain_id: + type: string + record_time: + type: string + format: date-time + heimdallv2.clerk.RecordResponse: + type: object + properties: + record: + type: object + properties: + id: + type: string + format: uint64 + contract: + type: string + data: + type: string + format: byte + tx_hash: + type: string + log_index: + type: string + format: uint64 + bor_chain_id: + type: string + record_time: + type: string + format: date-time + heimdallv2.clerk.RecordSequenceResponse: + type: object + properties: + sequence: + type: string + format: uint64 + heimdallv2.milestone.Milestone: + type: object + properties: + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + hash: + type: string + format: byte + bor_chain_id: + type: string + milestone_id: + type: string + timestamp: + type: string + format: uint64 + heimdallv2.milestone.Params: + type: object + properties: + max_milestone_proposition_length: + type: string + format: uint64 + ff_milestone_threshold: + type: string + format: uint64 + ff_milestone_block_interval: + type: string + format: uint64 + heimdallv2.milestone.QueryCountResponse: + type: object + properties: + count: + type: string + format: uint64 + heimdallv2.milestone.QueryLatestMilestoneResponse: + type: object + properties: + milestone: + type: object + properties: + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + hash: + type: string + format: byte + bor_chain_id: + type: string + milestone_id: + type: string + timestamp: + type: string + format: uint64 + heimdallv2.milestone.QueryMilestoneResponse: + type: object + properties: + milestone: + type: object + properties: + proposer: + type: string + start_block: + type: string + format: uint64 + end_block: + type: string + format: uint64 + hash: + type: string + format: byte + bor_chain_id: + type: string + milestone_id: + type: string + timestamp: + type: string + format: uint64 + heimdallv2.milestone.QueryParamsResponse: + type: object + properties: + params: + type: object + properties: + max_milestone_proposition_length: + type: string + format: uint64 + ff_milestone_threshold: + type: string + format: uint64 + ff_milestone_block_interval: + type: string + format: uint64 + heimdallv2.stake.QueryCurrentProposerResponse: + type: object + properties: + validator: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + heimdallv2.stake.QueryCurrentValidatorSetResponse: + type: object + properties: + validator_set: + type: object + properties: + validators: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + proposer: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + total_voting_power: + type: string + format: int64 + heimdallv2.stake.QueryProposersResponse: + type: object + properties: + proposers: + type: array + items: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + heimdallv2.stake.QuerySignerResponse: + type: object + properties: + validator: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + heimdallv2.stake.QueryStakeIsOldTxResponse: + type: object + properties: + is_old: + type: boolean + heimdallv2.stake.QueryTotalPowerResponse: + type: object + properties: + total_power: + type: string + format: int64 + heimdallv2.stake.QueryValidatorResponse: + type: object + properties: + validator: + type: object + properties: + val_id: + type: string + format: uint64 + start_epoch: + type: string + format: uint64 + end_epoch: + type: string + format: uint64 + nonce: + type: string + format: uint64 + voting_power: + type: string + format: int64 + pub_key: + type: string + format: byte + signer: + type: string + last_updated: + type: string + jailed: + type: boolean + proposer_priority: + type: string + format: int64 + heimdallv2.stake.QueryValidatorStatusResponse: + type: object + properties: + is_old: + type: boolean + heimdallv2.topup.AccountProof: + type: object + properties: + address: + type: string + account_proof: + type: string + format: byte + index: + type: string + format: uint64 + heimdallv2.topup.QueryAccountProofResponse: + type: object + properties: + proof: + type: object + properties: + address: + type: string + account_proof: + type: string + format: byte + index: + type: string + format: uint64 + heimdallv2.topup.QueryDividendAccountResponse: + type: object + properties: + dividend_account: + type: object + properties: + user: + type: string + fee_amount: + type: string + title: DividendAccount contains the burned fees + heimdallv2.topup.QueryDividendAccountRootHashResponse: + type: object + properties: + account_root_hash: + type: string + format: byte + heimdallv2.topup.QueryIsTopupTxOldResponse: + type: object + properties: + is_old: + type: boolean + heimdallv2.topup.QueryTopupSequenceResponse: + type: object + properties: + sequence: + type: string + heimdallv2.topup.QueryVerifyAccountProofResponse: + type: object + properties: + is_verified: + type: boolean + heimdallv2.types.DividendAccount: + type: object + properties: + user: + type: string + fee_amount: + type: string + title: DividendAccount contains the burned fees \ No newline at end of file diff --git a/docs/pos/get-started/test-swagger.md b/docs/pos/get-started/test-swagger.md new file mode 100644 index 000000000..612518846 --- /dev/null +++ b/docs/pos/get-started/test-swagger.md @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 6f799f975..393b3181a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -270,6 +270,7 @@ nav: - Migrate to POL: pos/get-started/matic-to-pol.md - Building on PoS: pos/get-started/building-on-polygon.md - Becoming a validator: pos/get-started/becoming-a-validator.md + - Test Swagger: pos/get-started/test-swagger.md - Builder how-tos: - Token bridging: - Polygon Portal: pos/how-to/bridging/ethereum-polygon/portal-ui.md @@ -590,6 +591,7 @@ plugins: keep_docs_dir: false - search - open-in-new-tab + - swagger-ui-tag - redirects: redirect_maps: 'docs/develop/network-details/network.md': 'cdk/index.md' diff --git a/nginx.conf b/nginx.conf index cbbb90d46..bfd7018bd 100644 --- a/nginx.conf +++ b/nginx.conf @@ -1,3 +1,4 @@ +# Example nginx configuration file for serving multiple applications worker_processes auto; events { @@ -14,14 +15,28 @@ http { server { listen 80; - #REPLACE_APPS + location /2657 { + alias /app/2657; + try_files $uri $uri/ =404; + error_page 404 /404.html; +} +location /2656 { + alias /app/2656; + try_files $uri $uri/ =404; + error_page 404 /404.html; +} +location /2655 { + alias /app/2655; + try_files $uri $uri/ =404; + error_page 404 /404.html; +} location /cdk/version-matrix/ { return 302 /; # Redirect to the home page with a temporary redirect } location / { - root /app/#environment; + root /app/dev; index index.html; try_files $uri $uri/ /404.html; error_page 404 /404.html; diff --git a/nginx_template b/nginx_template new file mode 100644 index 000000000..cbbb90d46 --- /dev/null +++ b/nginx_template @@ -0,0 +1,30 @@ +worker_processes auto; + +events { + worker_connections 1024; +} + +http { + include mime.types; + default_type application/octet-stream; + + sendfile on; + keepalive_timeout 65; + + server { + listen 80; + + #REPLACE_APPS + + location /cdk/version-matrix/ { + return 302 /; # Redirect to the home page with a temporary redirect + } + + location / { + root /app/#environment; + index index.html; + try_files $uri $uri/ /404.html; + error_page 404 /404.html; + } + } +} diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..fe67bc8b6 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,17 @@ +[project] +name = "polygon-docs" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.13" +dependencies = [ + "markdown-include>=0.8.1", + "mkdocs>=1.6.1", + "mkdocs-material>=9.6.14", + "mkdocs-mermaid2-plugin>=1.2.1", + "mkdocs-multirepo-plugin>=0.8.3", + "mkdocs-open-in-new-tab>=1.0.8", + "mkdocs-redirects>=1.2.2", + "mkdocs-swagger-ui-tag>=0.7.1", + "pymdown-extensions>=10.15", +] diff --git a/requirements.txt b/requirements.txt deleted file mode 100755 index f7ebcb2a4..000000000 --- a/requirements.txt +++ /dev/null @@ -1,6 +0,0 @@ -mkdocs-material==9.4.8 -markdown-include==0.8.1 -mkdocs-open-in-new-tab==1.0.3 -mkdocs-multirepo-plugin==0.7.0 -mkdocs-redirects==1.2.1 -mkdocs-mermaid2-plugin==1.1.1 diff --git a/uv.lock b/uv.lock new file mode 100644 index 000000000..cb2b9f3f1 --- /dev/null +++ b/uv.lock @@ -0,0 +1,601 @@ +version = 1 +revision = 2 +requires-python = ">=3.13" + +[[package]] +name = "babel" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, +] + +[[package]] +name = "backrefs" +version = "5.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/46/caba1eb32fa5784428ab401a5487f73db4104590ecd939ed9daaf18b47e0/backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd", size = 6773994, upload-time = "2025-02-25T18:15:32.003Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337, upload-time = "2025-02-25T16:53:14.607Z" }, + { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142, upload-time = "2025-02-25T16:53:17.266Z" }, + { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021, upload-time = "2025-02-25T16:53:26.378Z" }, + { url = "https://files.pythonhosted.org/packages/04/b8/60dcfb90eb03a06e883a92abbc2ab95c71f0d8c9dd0af76ab1d5ce0b1402/backrefs-5.8-py313-none-any.whl", hash = "sha256:e3a63b073867dbefd0536425f43db618578528e3896fb77be7141328642a1585", size = 399915, upload-time = "2025-02-25T16:53:28.167Z" }, + { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336, upload-time = "2025-02-25T16:53:29.858Z" }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload-time = "2025-04-15T17:05:13.836Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload-time = "2025-04-15T17:05:12.221Z" }, +] + +[[package]] +name = "certifi" +version = "2025.4.26" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705, upload-time = "2025-04-26T02:12:29.51Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618, upload-time = "2025-04-26T02:12:27.662Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload-time = "2025-05-02T08:32:56.363Z" }, + { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload-time = "2025-05-02T08:32:58.551Z" }, + { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload-time = "2025-05-02T08:33:00.342Z" }, + { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload-time = "2025-05-02T08:33:02.081Z" }, + { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload-time = "2025-05-02T08:33:04.063Z" }, + { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload-time = "2025-05-02T08:33:06.418Z" }, + { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload-time = "2025-05-02T08:33:08.183Z" }, + { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload-time = "2025-05-02T08:33:09.986Z" }, + { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload-time = "2025-05-02T08:33:11.814Z" }, + { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload-time = "2025-05-02T08:33:13.707Z" }, + { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload-time = "2025-05-02T08:33:15.458Z" }, + { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload-time = "2025-05-02T08:33:17.06Z" }, + { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload-time = "2025-05-02T08:33:18.753Z" }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, +] + +[[package]] +name = "click" +version = "8.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "dacite" +version = "1.9.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/55/a0/7ca79796e799a3e782045d29bf052b5cde7439a2bbb17f15ff44f7aacc63/dacite-1.9.2.tar.gz", hash = "sha256:6ccc3b299727c7aa17582f0021f6ae14d5de47c7227932c47fec4cdfefd26f09", size = 22420, upload-time = "2025-02-05T09:27:29.757Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/35/386550fd60316d1e37eccdda609b074113298f23cef5bddb2049823fe666/dacite-1.9.2-py3-none-any.whl", hash = "sha256:053f7c3f5128ca2e9aceb66892b1a3c8936d02c686e707bee96e19deef4bc4a0", size = 16600, upload-time = "2025-02-05T09:27:24.345Z" }, +] + +[[package]] +name = "editorconfig" +version = "0.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b4/29/785595a0d8b30ab8d2486559cfba1d46487b8dcbd99f74960b6b4cca92a4/editorconfig-0.17.0.tar.gz", hash = "sha256:8739052279699840065d3a9f5c125d7d5a98daeefe53b0e5274261d77cb49aa2", size = 13369, upload-time = "2024-12-12T21:04:21.278Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/e5/8dba39ea24ca3de0e954e668107692f4dfc13a85300a531fa9a39e83fde4/EditorConfig-0.17.0-py3-none-any.whl", hash = "sha256:fe491719c5f65959ec00b167d07740e7ffec9a3f362038c72b289330b9991dfc", size = 16276, upload-time = "2024-12-12T21:04:01.098Z" }, +] + +[[package]] +name = "ghp-import" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943, upload-time = "2022-05-02T15:47:16.11Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034, upload-time = "2022-05-02T15:47:14.552Z" }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "jsbeautifier" +version = "1.15.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "editorconfig" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ea/98/d6cadf4d5a1c03b2136837a435682418c29fdeb66be137128544cecc5b7a/jsbeautifier-1.15.4.tar.gz", hash = "sha256:5bb18d9efb9331d825735fbc5360ee8f1aac5e52780042803943aa7f854f7592", size = 75257, upload-time = "2025-02-27T17:53:53.252Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2d/14/1c65fccf8413d5f5c6e8425f84675169654395098000d8bddc4e9d3390e1/jsbeautifier-1.15.4-py3-none-any.whl", hash = "sha256:72f65de312a3f10900d7685557f84cb61a9733c50dcc27271a39f5b0051bf528", size = 94707, upload-time = "2025-02-27T17:53:46.152Z" }, +] + +[[package]] +name = "markdown" +version = "3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/15/222b423b0b88689c266d9eac4e61396fe2cc53464459d6a37618ac863b24/markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f", size = 360906, upload-time = "2025-04-11T14:42:50.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/3f/afe76f8e2246ffbc867440cbcf90525264df0e658f8a5ca1f872b3f6192a/markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc", size = 106210, upload-time = "2025-04-11T14:42:49.178Z" }, +] + +[[package]] +name = "markdown-include" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/d8/66bf162fe6c1adb619f94a6da599323eecacf15b6d57469d0fd0421c10df/markdown-include-0.8.1.tar.gz", hash = "sha256:1d0623e0fc2757c38d35df53752768356162284259d259c486b4ab6285cdbbe3", size = 21873, upload-time = "2023-02-07T09:47:26.608Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/e2/c4d20b21a05fe0fee571649cebc05f7f72e80b1a743f932e7326125e6c9e/markdown_include-0.8.1-py3-none-any.whl", hash = "sha256:32f0635b9cfef46997b307e2430022852529f7a5b87c0075c504283e7cc7db53", size = 18837, upload-time = "2023-02-07T09:47:25.03Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload-time = "2024-10-18T15:21:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload-time = "2024-10-18T15:21:25.382Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload-time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" }, +] + +[[package]] +name = "mergedeep" +version = "1.3.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661, upload-time = "2021-02-05T18:55:30.623Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload-time = "2021-02-05T18:55:29.583Z" }, +] + +[[package]] +name = "mkdocs" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "ghp-import" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "markupsafe" }, + { name = "mergedeep" }, + { name = "mkdocs-get-deps" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "pyyaml" }, + { name = "pyyaml-env-tag" }, + { name = "watchdog" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159, upload-time = "2024-08-30T12:24:06.899Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload-time = "2024-08-30T12:24:05.054Z" }, +] + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mergedeep" }, + { name = "platformdirs" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload-time = "2023-11-20T17:51:09.981Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521, upload-time = "2023-11-20T17:51:08.587Z" }, +] + +[[package]] +name = "mkdocs-material" +version = "9.6.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "backrefs" }, + { name = "colorama" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "mkdocs" }, + { name = "mkdocs-material-extensions" }, + { name = "paginate" }, + { name = "pygments" }, + { name = "pymdown-extensions" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/fa/0101de32af88f87cf5cc23ad5f2e2030d00995f74e616306513431b8ab4b/mkdocs_material-9.6.14.tar.gz", hash = "sha256:39d795e90dce6b531387c255bd07e866e027828b7346d3eba5ac3de265053754", size = 3951707, upload-time = "2025-05-13T13:27:57.173Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/a1/7fdb959ad592e013c01558822fd3c22931a95a0f08cf0a7c36da13a5b2b5/mkdocs_material-9.6.14-py3-none-any.whl", hash = "sha256:3b9cee6d3688551bf7a8e8f41afda97a3c39a12f0325436d76c86706114b721b", size = 8703767, upload-time = "2025-05-13T13:27:54.089Z" }, +] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847, upload-time = "2023-11-22T19:09:45.208Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload-time = "2023-11-22T19:09:43.465Z" }, +] + +[[package]] +name = "mkdocs-mermaid2-plugin" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "jsbeautifier" }, + { name = "mkdocs" }, + { name = "pymdown-extensions" }, + { name = "requests" }, + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/1a/f580733da1924ebc9b4bb04a34ca63ae62a50b0e62eeb016e78d9dee6d69/mkdocs_mermaid2_plugin-1.2.1.tar.gz", hash = "sha256:9c7694c73a65905ac1578f966e5c193325c4d5a5bc1836727e74ac9f99d0e921", size = 16104, upload-time = "2024-11-02T06:27:36.302Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/24/ce/c8a41cb0f3044990c8afbdc20c853845a9e940995d4e0cffecafbb5e927b/mkdocs_mermaid2_plugin-1.2.1-py3-none-any.whl", hash = "sha256:22d2cf2c6867d4959a5e0903da2dde78d74581fc0b107b791bc4c7ceb9ce9741", size = 17260, upload-time = "2024-11-02T06:27:34.652Z" }, +] + +[[package]] +name = "mkdocs-multirepo-plugin" +version = "0.8.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dacite" }, + { name = "mkdocs" }, + { name = "python-slugify" }, + { name = "typing-inspect" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/3b/ef032e99788315b898171262df8c685bbba4b7dd91f88de61a8f574d4667/mkdocs_multirepo_plugin-0.8.3.tar.gz", hash = "sha256:c474fe29dc9f8fc73c27c133fe378c240fd98f79ca1b9b46575f83af9a1f2559", size = 21352, upload-time = "2024-08-13T12:57:02.027Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/26/c0fb3e12b53da7969369a86872054ad11c3ef4d8276206c7b0cba33bb848/mkdocs_multirepo_plugin-0.8.3-py2.py3-none-any.whl", hash = "sha256:76190e457d22d768d53b79d4b11be513711c5c8587a4c28a8d605947e5733cde", size = 19905, upload-time = "2024-08-13T12:57:00.572Z" }, +] + +[[package]] +name = "mkdocs-open-in-new-tab" +version = "1.0.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mkdocs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/0e/f72a506a21bdb27b807124e00c688226848a388d1fd3980b80ae3cc27203/mkdocs_open_in_new_tab-1.0.8.tar.gz", hash = "sha256:3e0dad08cc9938b0b13097be8e0aa435919de1eeb2d1a648e66b5dee8d57e048", size = 5791, upload-time = "2024-11-18T13:15:13.977Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/94/44f3c868495481c868d08eea065c82803f1affd8553d3383b782f497613c/mkdocs_open_in_new_tab-1.0.8-py3-none-any.whl", hash = "sha256:051d767a4467b12d89827e1fea0ec660b05b027c726317fe4fceee5456e36ad2", size = 7717, upload-time = "2024-11-18T13:15:12.286Z" }, +] + +[[package]] +name = "mkdocs-redirects" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mkdocs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/a8/6d44a6cf07e969c7420cb36ab287b0669da636a2044de38a7d2208d5a758/mkdocs_redirects-1.2.2.tar.gz", hash = "sha256:3094981b42ffab29313c2c1b8ac3969861109f58b2dd58c45fc81cd44bfa0095", size = 7162, upload-time = "2024-11-07T14:57:21.109Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/ec/38443b1f2a3821bbcb24e46cd8ba979154417794d54baf949fefde1c2146/mkdocs_redirects-1.2.2-py3-none-any.whl", hash = "sha256:7dbfa5647b79a3589da4401403d69494bd1f4ad03b9c15136720367e1f340ed5", size = 6142, upload-time = "2024-11-07T14:57:19.143Z" }, +] + +[[package]] +name = "mkdocs-swagger-ui-tag" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/46/3f/0497d3c4d5a543eebd80cdfce130d1abbc4a1f4484b0c8d27e724b0b32c9/mkdocs_swagger_ui_tag-0.7.1.tar.gz", hash = "sha256:aed3c5f15297d74241f38cfba4763a5789bf10a410e005014763c66e79576b65", size = 1273588, upload-time = "2025-05-04T09:41:41.461Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/49/a9/0f1758916e96f254f8dadfda1f9963ea77fa43e62d4702257569ed685a08/mkdocs_swagger_ui_tag-0.7.1-py3-none-any.whl", hash = "sha256:e4a1019c96ef333ec4dab0ef7d80068a345c7526a87fe8718f18852ee5ad34a5", size = 1287286, upload-time = "2025-05-04T09:41:39.123Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "paginate" +version = "0.5.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload-time = "2024-08-25T14:17:24.139Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload-time = "2024-08-25T14:17:22.55Z" }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, +] + +[[package]] +name = "polygon-docs" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "markdown-include" }, + { name = "mkdocs" }, + { name = "mkdocs-material" }, + { name = "mkdocs-mermaid2-plugin" }, + { name = "mkdocs-multirepo-plugin" }, + { name = "mkdocs-open-in-new-tab" }, + { name = "mkdocs-redirects" }, + { name = "mkdocs-swagger-ui-tag" }, + { name = "pymdown-extensions" }, +] + +[package.metadata] +requires-dist = [ + { name = "markdown-include", specifier = ">=0.8.1" }, + { name = "mkdocs", specifier = ">=1.6.1" }, + { name = "mkdocs-material", specifier = ">=9.6.14" }, + { name = "mkdocs-mermaid2-plugin", specifier = ">=1.2.1" }, + { name = "mkdocs-multirepo-plugin", specifier = ">=0.8.3" }, + { name = "mkdocs-open-in-new-tab", specifier = ">=1.0.8" }, + { name = "mkdocs-redirects", specifier = ">=1.2.2" }, + { name = "mkdocs-swagger-ui-tag", specifier = ">=0.7.1" }, + { name = "pymdown-extensions", specifier = ">=10.15" }, +] + +[[package]] +name = "pygments" +version = "2.19.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581, upload-time = "2025-01-06T17:26:30.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293, upload-time = "2025-01-06T17:26:25.553Z" }, +] + +[[package]] +name = "pymdown-extensions" +version = "10.15" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320, upload-time = "2025-04-27T23:48:29.183Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/d1/c54e608505776ce4e7966d03358ae635cfd51dff1da6ee421c090dbc797b/pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f", size = 265845, upload-time = "2025-04-27T23:48:27.359Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-slugify" +version = "8.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "text-unidecode" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921, upload-time = "2024-02-08T18:32:45.488Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051, upload-time = "2024-02-08T18:32:43.911Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, +] + +[[package]] +name = "pyyaml-env-tag" +version = "1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737, upload-time = "2025-05-13T15:24:01.64Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722, upload-time = "2025-05-13T15:23:59.629Z" }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload-time = "2024-05-29T15:37:49.536Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload-time = "2024-05-29T15:37:47.027Z" }, +] + +[[package]] +name = "setuptools" +version = "80.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8d/d2/ec1acaaff45caed5c2dedb33b67055ba9d4e96b091094df90762e60135fe/setuptools-80.8.0.tar.gz", hash = "sha256:49f7af965996f26d43c8ae34539c8d99c5042fbff34302ea151eaa9c207cd257", size = 1319720, upload-time = "2025-05-20T14:02:53.503Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/29/93c53c098d301132196c3238c312825324740851d77a8500a2462c0fd888/setuptools-80.8.0-py3-none-any.whl", hash = "sha256:95a60484590d24103af13b686121328cc2736bee85de8936383111e421b9edc0", size = 1201470, upload-time = "2025-05-20T14:02:51.348Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "soupsieve" +version = "2.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, +] + +[[package]] +name = "text-unidecode" +version = "1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload-time = "2019-08-30T21:36:45.405Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload-time = "2019-08-30T21:37:03.543Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload-time = "2025-04-10T14:19:05.416Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload-time = "2025-04-10T14:19:03.967Z" }, +] + +[[package]] +name = "typing-inspect" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/23/bed3ea644bcd77ffe9a7f591eb058c00739747e33ab94d80cc4319ddee8e/typing_inspect-0.8.0.tar.gz", hash = "sha256:8b1ff0c400943b6145df8119c41c244ca8207f1f10c9c057aeed1560e4806e3d", size = 13550, upload-time = "2022-08-17T14:00:05.915Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/01/59b743dca816c4b6ca891b9e0f84d20513cd61bdbbaa8615de8f5aab68c1/typing_inspect-0.8.0-py3-none-any.whl", hash = "sha256:5fbf9c1e65d4fa01e701fe12a5bca6c6e08a4ffd5bc60bfac028253a447c5188", size = 8710, upload-time = "2022-08-17T14:00:03.093Z" }, +] + +[[package]] +name = "urllib3" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672, upload-time = "2025-04-10T15:23:39.232Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680, upload-time = "2025-04-10T15:23:37.377Z" }, +] + +[[package]] +name = "watchdog" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload-time = "2024-11-01T14:07:13.037Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480, upload-time = "2024-11-01T14:06:42.952Z" }, + { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451, upload-time = "2024-11-01T14:06:45.084Z" }, + { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057, upload-time = "2024-11-01T14:06:47.324Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload-time = "2024-11-01T14:06:59.472Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload-time = "2024-11-01T14:07:01.431Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload-time = "2024-11-01T14:07:02.568Z" }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload-time = "2024-11-01T14:07:03.893Z" }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload-time = "2024-11-01T14:07:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload-time = "2024-11-01T14:07:06.376Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload-time = "2024-11-01T14:07:07.547Z" }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload-time = "2024-11-01T14:07:09.525Z" }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload-time = "2024-11-01T14:07:10.686Z" }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload-time = "2024-11-01T14:07:11.845Z" }, +]