From 0dac6a019d7fc6f550d9c0616f0dc73241c220ca Mon Sep 17 00:00:00 2001 From: bakebot Date: Fri, 14 Aug 2026 17:38:32 +0000 Subject: [PATCH 01/10] Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool Template: ``` { "template": "https://github.com/networktocode-llc/cookiecutter-ntc.git", "dir": "python", "ref": "main", "path": "/__w/cookiecutter-nautobot-app-drift-manager/cookiecutter-nautobot-app-drift-manager/cookiecutter-ntc/python" } ``` Cookie: ``` { "remote": "https://github.com/networktocode/netutils.git", "path": "/tmp/tmp2byo86xt/netutils", "repository_path": "/tmp/tmp2byo86xt/netutils", "dir": "", "branch_prefix": "drift-manager/develop", "context": { "codeowner_github_usernames": "@itdependsnetworks @jeffkala @qduk", "full_name": "Network to Code, LLC", "email": "info@networktocode.com", "github_org": "networktocode", "description": "Common helper functions useful in network automation.", "project_name": "netutils", "project_slug": "netutils", "repo_url": "https://github.com/networktocode/netutils", "base_url": "netutils", "project_python_name": "netutils", "project_python_base_version": "3.10", "project_with_config_settings": "no", "generate_docs": "yes", "version": "1.15.1", "original_publish_year": "2021", "_template": "/__w/cookiecutter-nautobot-app-drift-manager/cookiecutter-nautobot-app-drift-manager/cookiecutter-ntc/python", "_output_dir": "/tmp/tmp2byo86xt", "_repo_dir": "/__w/cookiecutter-nautobot-app-drift-manager/cookiecutter-nautobot-app-drift-manager/cookiecutter-ntc/python", "_checkout": null }, "drift_managed_branch": "develop", "remote_name": "origin", "pull_request_strategy": "PullRequestStrategy.UPDATE_OR_CREATE", "post_actions": [], "baked_commit_ref": "b23a9ed5a4714810d83670ad47cc182764c6d464", "draft": false } ``` CLI Arguments: ``` { "cookie_dir": "", "input": false, "json_filename": "", "output_dir": "", "push": true, "template": "./cookiecutter-ntc", "template_dir": "python", "template_ref": "main", "pull_request": "update-or-create", "post_action": [], "disable_post_actions": true, "draft": null, "drift_managed_branch": "develop" } ``` --- .cookiecutter.json | 4 + .github/workflows/ci.yml | 58 ++++- .github/workflows/prepare_release.yml | 202 ++++++++++++++++++ .github/workflows/release.yml | 102 ++++++++- LICENSE | 4 + README.md | 8 +- changes/+main.housekeeping | 1 + development/bin/ensure_release_notes.py | 99 +++++++++ .../towncrier_template.j2 | 9 - docs/admin/release_notes/version_1.0.md | 4 + docs/dev/release_checklist.md | 6 +- docs/generate_code_reference_pages.py | 20 ++ example.invoke.yml => invoke.example.yml | 0 pyproject.toml | 65 +++++- tasks.py | 41 +++- 15 files changed, 578 insertions(+), 45 deletions(-) create mode 100644 .github/workflows/prepare_release.yml create mode 100644 changes/+main.housekeeping create mode 100644 development/bin/ensure_release_notes.py rename towncrier_template.j2 => development/towncrier_template.j2 (66%) create mode 100644 docs/generate_code_reference_pages.py rename example.invoke.yml => invoke.example.yml (100%) diff --git a/.cookiecutter.json b/.cookiecutter.json index fd87fa73..51c0d5a6 100644 --- a/.cookiecutter.json +++ b/.cookiecutter.json @@ -23,7 +23,11 @@ "pull_request_strategy": "update-or-create", "post_actions": [], "draft": false, +<<<<<<< HEAD "baked_commit_ref": "b23a9ed5a4714810d83670ad47cc182764c6d464", +======= + "baked_commit_ref": "e4d0e9bd14396e92e7cc2699a9afe91ca5946468", +>>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) "drift_managed_branch": "develop" } } diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 412c9963..01fd4b6e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: - name: "Check out repository code" uses: "actions/checkout@v4" - name: "Setup environment" - uses: "networktocode/gh-action-setup-poetry-environment@v6" + uses: "networktocode/gh-action-setup-poetry-environment@v7" with: poetry-version: "2.1.3" - name: "Linting: ruff format" @@ -36,7 +36,7 @@ jobs: - name: "Check out repository code" uses: "actions/checkout@v4" - name: "Setup environment" - uses: "networktocode/gh-action-setup-poetry-environment@v6" + uses: "networktocode/gh-action-setup-poetry-environment@v7" with: poetry-version: "2.1.3" - name: "Linting: ruff" @@ -65,7 +65,7 @@ jobs: - name: "Check out repository code" uses: "actions/checkout@v4" - name: "Setup environment" - uses: "networktocode/gh-action-setup-poetry-environment@v6" + uses: "networktocode/gh-action-setup-poetry-environment@v7" with: poetry-version: "2.1.3" poetry-install-options: "--only dev,docs" @@ -79,7 +79,7 @@ jobs: - name: "Check out repository code" uses: "actions/checkout@v4" - name: "Setup environment" - uses: "networktocode/gh-action-setup-poetry-environment@v6" + uses: "networktocode/gh-action-setup-poetry-environment@v7" with: poetry-version: "2.1.3" - name: "Checking: poetry lock file" @@ -92,7 +92,7 @@ jobs: - name: "Check out repository code" uses: "actions/checkout@v4" - name: "Setup environment" - uses: "networktocode/gh-action-setup-poetry-environment@v6" + uses: "networktocode/gh-action-setup-poetry-environment@v7" with: poetry-version: "2.1.3" - name: "Linting: yamllint" @@ -107,13 +107,14 @@ jobs: strategy: fail-fast: true matrix: - python-version: ["3.10", "3.13"] + python-version: ["3.10"] env: INVOKE_NETUTILS_PYTHON_VER: "${{ matrix.python-version }}" steps: - name: "Check out repository code" uses: "actions/checkout@v4" - name: "Setup environment" +<<<<<<< HEAD uses: "networktocode/gh-action-setup-poetry-environment@v6" with: poetry-version: "2.1.3" @@ -152,6 +153,9 @@ jobs: uses: "actions/checkout@v4" - name: "Setup environment" uses: "networktocode/gh-action-setup-poetry-environment@v6" +======= + uses: "networktocode/gh-action-setup-poetry-environment@v7" +>>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) with: poetry-version: "2.1.3" - name: "Get image version" @@ -172,6 +176,46 @@ jobs: cache-to: "type=gha,scope=${{ env.INVOKE_NETUTILS_IMAGE_NAME }}-${{ env.INVOKE_NETUTILS_IMAGE_VER }}-py${{ matrix.python-version }}" build-args: | PYTHON_VER=${{ matrix.python-version }} +<<<<<<< HEAD +======= + - name: "Linting: Pylint" + run: "poetry run invoke pylint" + pytest: + needs: + - "check-in-docker" + strategy: + fail-fast: true + matrix: + python-version: ["3.10", "3.14"] + runs-on: "ubuntu-latest" + env: + INVOKE_NETUTILS_PYTHON_VER: "${{ matrix.python-version }}" + steps: + - name: "Check out repository code" + uses: "actions/checkout@v4" + - name: "Setup environment" + uses: "networktocode/gh-action-setup-poetry-environment@v7" + with: + poetry-version: "2.1.3" + - name: "Get image version" + run: "echo INVOKE_NETUTILS_IMAGE_VER=`poetry version -s`-py${{ matrix.python-version }} >> $GITHUB_ENV" + - name: "Set up Docker Buildx" + id: "buildx" + uses: "docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2" # v3.10.0 + - name: "Build" + uses: "docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25" # v5.4.0 + with: + builder: "${{ steps.buildx.outputs.name }}" + context: "./" + push: false + load: true + tags: "${{ env.INVOKE_NETUTILS_IMAGE_NAME }}:${{ env.INVOKE_NETUTILS_IMAGE_VER }}" + file: "./Dockerfile" + cache-from: "type=gha,scope=${{ env.INVOKE_NETUTILS_IMAGE_NAME }}-${{ env.INVOKE_NETUTILS_IMAGE_VER }}-py${{ matrix.python-version }}" + cache-to: "type=gha,scope=${{ env.INVOKE_NETUTILS_IMAGE_NAME }}-${{ env.INVOKE_NETUTILS_IMAGE_VER }}-py${{ matrix.python-version }}" + build-args: | + PYTHON_VER=${{ matrix.python-version }} +>>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) - name: "Run Tests" run: "poetry run invoke pytest" changelog: @@ -185,7 +229,7 @@ jobs: with: fetch-depth: "0" - name: "Setup environment" - uses: "networktocode/gh-action-setup-poetry-environment@v6" + uses: "networktocode/gh-action-setup-poetry-environment@v7" with: poetry-version: "2.1.3" - name: "Check for changelog entry" diff --git a/.github/workflows/prepare_release.yml b/.github/workflows/prepare_release.yml new file mode 100644 index 00000000..1a70ab5b --- /dev/null +++ b/.github/workflows/prepare_release.yml @@ -0,0 +1,202 @@ +--- +name: "Prepare Release" +on: # yamllint disable-line rule:truthy rule:comments + workflow_dispatch: + inputs: + bump_rule: + description: "Select the version bump type" + required: true + default: "patch" + type: "choice" + options: + - "prerelease" + - "patch" + - "minor" + - "major" + target_branch: + description: "Create the release from this branch (default: main)." + required: true + default: "main" + date: + description: "Date of the release YYYY-MM-DD (defaults to today's date in the US Eastern TZ)." + required: false + default: "" + previous_version: + description: "The previous version tag to use for generating release notes (defaults to the latest tag or initial commit if no tags exist)." + required: false + default: "" + +jobs: + prepare-release: + permissions: + contents: "write" + pull-requests: "write" + name: "Prepare Release" + runs-on: "ubuntu-latest" + steps: + - name: "Checkout code" + uses: "actions/checkout@v4" + with: + # If target_branch is 'main', use 'develop' as the source branch. Otherwise, the source and target branch are the same. + ref: "${{ github.event.inputs['target_branch'] == 'main' && 'develop' || github.event.inputs['target_branch'] }}" + fetch-depth: 0 # Fetch all history for git tags + + - name: "Setup environment" + uses: "networktocode/gh-action-setup-poetry-environment@v7" + with: + poetry-version: "2.1.3" + poetry-install-options: "--with dev" + + - name: "Validate Branch and Tags" + run: | + # 1. Verify branch exists + if ! git rev-parse --verify origin/${{ github.event.inputs.target_branch }} > /dev/null 2>&1; then + echo "Error: Branch ${{ github.event.inputs.target_branch }} does not exist." + exit 1 + fi + + # 2. Try to get the previous version tag + # If it fails (no tags), get the hash of the first commit + if [ -n "${{ github.event.inputs.previous_version }}" ]; then + PREV_TAG="${{ github.event.inputs.previous_version }}" + echo "Using user-specified previous version: $PREV_TAG" + echo "PREVIOUS_TAG=$PREV_TAG" >> $GITHUB_ENV + elif PREV_TAG=$(git describe --tags --abbrev=0 2>/dev/null); then + echo "PREVIOUS_TAG=$PREV_TAG" >> $GITHUB_ENV + echo "Found previous tag: $PREV_TAG" + else + # Fallback to the first commit in the repository + FIRST_COMMIT=$(git rev-list --max-parents=0 HEAD) + echo "PREVIOUS_TAG=$FIRST_COMMIT" >> $GITHUB_ENV + echo "No tags found. Falling back to initial commit: $FIRST_COMMIT" + fi + + - name: "Determine New Version" + id: "versioning" + env: + GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + run: | + # Bump the poetry version based on the user input + CURRENT_POETRY_VER=$(poetry version --short) + set +e # continue running if the next command fails + GITHUB_RELEASE_EXISTS=$(gh release view v$CURRENT_POETRY_VER --json publishedAt --jq '.publishedAt') + set -e + # Unconditionally bump the version if the current version is alpha0 or beta0 + if [[ $CURRENT_POETRY_VER == *a0 || $CURRENT_POETRY_VER == *b0 || $CURRENT_POETRY_VER == *rc0 ]]; then + poetry version ${{ github.event.inputs.bump_rule }} + # If the bump rule is prerelease and a release doesn't already exist in github we don't bump the version + + # This is because we've already bumped to the prerelease version after the previous release + elif [[ "${{ github.event.inputs.bump_rule }}" == "prerelease" && "$CURRENT_POETRY_VER" =~ (a|b|rc)[0-9]+$ && -z "$GITHUB_RELEASE_EXISTS" ]]; then + echo "Prerelease v$CURRENT_POETRY_VER does not exist in github, using this version" + else + poetry version ${{ github.event.inputs.bump_rule }} + fi + + # Capture the New version string for use in other steps + NEW_VER=$(poetry version --short) + echo "NEW_VERSION=$NEW_VER" >> $GITHUB_ENV + echo "RELEASE_BRANCH=release/$NEW_VER" >> $GITHUB_ENV + + - name: "Set Date Variable" + run: | + if [ -z "${{ github.event.inputs.date }}" ]; then + RELEASE_DATE=$(TZ=America/New_York date +%Y-%m-%d) + else + RELEASE_DATE="${{ github.event.inputs.date }}" + fi + echo "RELEASE_DATE=$RELEASE_DATE" >> $GITHUB_ENV + + - name: "Create Release Branch" + env: + GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + run: | + git config user.name "${{ github.actor }}" + git config user.email "${{ github.actor }}@users.noreply.github.com" + + # Ensure release branch doesn't already exist + if git rev-parse --verify origin/${{ env.RELEASE_BRANCH }} > /dev/null 2>&1; then + echo "Error: Release branch ${{ env.RELEASE_BRANCH }} already exists." + exit 1 + fi + + # Create a new branch for the release + git checkout -b "${{ env.RELEASE_BRANCH }}" + + - name: "Regenerate poetry.lock" + run: "poetry lock --regenerate" + + - name: "Generate Github Release Notes" + env: + GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + run: | + # 1. Get Towncrier Draft + TOWNCRIER_NOTES=$(poetry run towncrier build --version "${{ env.NEW_VERSION }}" --date "${{ env.RELEASE_DATE }}" --draft) + + # 2. Call GitHub API to generate raw notes + RAW_GH_NOTES=$(gh api /repos/${{ github.repository }}/releases/generate-notes \ + -f tag_name="v${{ env.NEW_VERSION }}" \ + -f target_commitish="${{ github.event.inputs['target_branch'] == 'main' && 'develop' || github.event.inputs['target_branch'] }}" \ + -f previous_tag_name="${{ env.PREVIOUS_TAG }}" --jq '.body') + + # 3. Parse usernames (Regex match) + # We use grep to find "@user" patterns, sort, and uniq them + USERNAMES=$(echo "$RAW_GH_NOTES" | grep -oP 'by @\K[a-zA-Z0-9-]+' | sort -u | grep -vE 'dependabot|nautobot-bot|github-actions' || true) + + # 4. Format the Contributors section + CONTRIBUTORS_SECTION="## Contributors" + for user in $USERNAMES; do + CONTRIBUTORS_SECTION="$CONTRIBUTORS_SECTION"$'\n'"* @$user" + done + + # 5. Extract the "Full Changelog" or "New Contributors" part + # Using awk to grab everything from '## New Contributors' or '**Full Changelog**' to the end + GH_FOOTER=$(echo "$RAW_GH_NOTES" | awk '/## New Contributors/ || /\*\*Full Changelog\*\*/ {found=1} found {print}') + if [ -z "$GH_FOOTER" ]; then + GH_FOOTER=$(echo "$RAW_GH_NOTES" | sed -n '/**Full Changelog**/,$p') + fi + + # 6. Combine everything + FINAL_NOTES="$TOWNCRIER_NOTES"$'\n\n'"$CONTRIBUTORS_SECTION"$'\n\n'"$GH_FOOTER" + + # 7. Save to a temporary file to avoid shell argument length limits + echo "$FINAL_NOTES" > ../consolidated_notes.md + + - name: "Generate App Release Notes and update mkdocs.yml" + run: "poetry run inv generate-release-notes --version '${{ env.NEW_VERSION }}' --date '${{ env.RELEASE_DATE }}'" + + - name: "Commit Changes and Push" + run: | + # Add all changes (pyproject.toml, poetry.lock, etc.) + git add . + git commit -m "prepare release v${{ env.NEW_VERSION }}" + git push origin "${{ env.RELEASE_BRANCH }}" + + - name: "Create Pull Request" + env: + GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + run: | + gh pr create \ + --title "Release v${{ env.NEW_VERSION }}" \ + --body-file "../consolidated_notes.md" \ + --base "${{ github.event.inputs.target_branch }}" \ + --head "${{ env.RELEASE_BRANCH }}" + + - name: "Create Draft Release" + env: + GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + run: | + if [[ "${{ github.event.inputs.bump_rule }}" == "prerelease" ]]; then + RELEASE_FLAGS="--prerelease" + elif [[ "${{ github.event.inputs.target_branch }}" == "main" ]]; then + RELEASE_FLAGS="--latest" + else + RELEASE_FLAGS="--latest=false" + fi + + gh release create "v${{ env.NEW_VERSION }}" \ + --draft \ + $RELEASE_FLAGS \ + --title "v${{ env.NEW_VERSION }} - ${{ env.RELEASE_DATE }}" \ + --notes-file "../consolidated_notes.md" \ + --target "${{ github.event.inputs.target_branch }}" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a6cd1872..19988efb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,9 +1,13 @@ --- name: "Release" -on: # yamllint disable-line rule:truthy rule:comments +on: # yamllint disable-line rule:truthy rule:comments release: types: ["published"] +env: + POETRY_VERSION: "2.1.3" + PYTHON_VERSION: "3.12" + jobs: build: name: "Build package with poetry" @@ -12,11 +16,13 @@ jobs: steps: - uses: "actions/checkout@v4" - name: "Setup environment" - uses: "networktocode/gh-action-setup-poetry-environment@v6" + uses: "networktocode/gh-action-setup-poetry-environment@v7" with: - poetry-version: "2.1.3" - python-version: "3.13" + poetry-version: "${{ env.POETRY_VERSION }}" + python-version: "${{ env.PYTHON_VERSION }}" poetry-install-options: "--no-root" + - name: "Build Documentation" + run: "poetry run invoke build-and-check-docs" - name: "Run Poetry Build" run: "poetry build" @@ -48,7 +54,7 @@ jobs: - name: "Upload binaries to release" run: "gh release upload ${{ github.ref_name }} dist/*.{tar.gz,whl}" env: - GH_TOKEN: "${{ secrets.NTC_GITHUB_TOKEN }}" + GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}" publish-pypi: name: "Push Package to PyPI" @@ -56,20 +62,26 @@ jobs: if: "startsWith(github.ref, 'refs/tags/v')" needs: "build" environment: "pypi" - # Steps to publish to PyPI. + permissions: + # IMPORTANT: this permission is mandatory for Trusted Publishing + id-token: "write" steps: - name: "Retrieve built package from cache" uses: "actions/download-artifact@v4" with: name: "distfiles" path: "dist/" + - name: "Publish package distributions to PyPI" uses: "pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e" # v1.13.0 +<<<<<<< HEAD ## Used for networktocode org since trusted publisher isn't supported for GitHub Plan. with: user: "__token__" password: "${{ secrets.PYPI_API_TOKEN }}" # End publish to PyPI job. +======= +>>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) slack-notify: needs: @@ -104,3 +116,81 @@ jobs: } ] } + + create-pr-to-develop: + if: "github.event.release.target_commitish == 'main'" + permissions: + contents: "write" + pull-requests: "write" + name: "${{ github.event.release.target_commitish == 'main' && 'Create a PR from main into develop' || format('Create a PR to merge into {0}', github.event.release.target_commitish) }}" + needs: + - "publish-github" + - "publish-pypi" + runs-on: "ubuntu-latest" + steps: + - name: "Checkout source branch" + uses: "actions/checkout@v4" + with: + ref: "${{ github.event.release.target_commitish }}" + fetch-depth: 0 + + - name: "Setup environment" + uses: "networktocode/gh-action-setup-poetry-environment@v7" + with: + poetry-version: "${{ env.POETRY_VERSION }}" + poetry-install-options: "--no-root" + + - name: "Create release branch and bump version" + id: "branch" + run: | + + git config user.name "${{ github.actor }}" + git config user.email "${{ github.actor }}@users.noreply.github.com" + + SOURCE_BRANCH="${{ github.event.release.target_commitish }}" + if [ "$SOURCE_BRANCH" = "main" ]; then + TARGET_BRANCH="develop" + else + TARGET_BRANCH="$SOURCE_BRANCH" + fi + + TAG_NAME="${{ github.event.release.tag_name }}" + VERSION="${TAG_NAME#v}" + + BRANCH_NAME="release-${VERSION}-to-${TARGET_BRANCH}" + + # Ensure release branch doesn't already exist + if git rev-parse --verify origin/$BRANCH_NAME > /dev/null 2>&1; then + echo "Error: Release branch $BRANCH_NAME already exists." + exit 1 + fi + + git checkout -b "$BRANCH_NAME" + + poetry version prerelease + git add pyproject.toml && git commit -m "Bump version" + git push origin "$BRANCH_NAME" + + echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT + echo "target_branch=$TARGET_BRANCH" >> $GITHUB_OUTPUT + + - name: "Create Pull Request" + env: + GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + run: | + gh pr create \ + --title "Post release ${{ github.event.release.tag_name }} to ${{ steps.branch.outputs.target_branch }}" \ + --body "Please do a merge commit." \ + --base "${{ steps.branch.outputs.target_branch }}" \ + --head "${{ steps.branch.outputs.branch_name }}" + + - name: "Create Pull Request" + if: "steps.branch.outputs.branch_name != ''" + env: + GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + run: | + gh pr create \ + --title "Sync release notes from ${{ github.event.release.target_commitish }} (${{ github.event.release.tag_name }}) to develop" \ + --body "Please do a merge commit." \ + --base "develop" \ + --head "${{ steps.branch.outputs.branch_name }}" diff --git a/LICENSE b/LICENSE index 6ce362fa..c0caca4d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,10 @@ Apache Software License 2.0 +<<<<<<< HEAD Copyright (c) 2021-2025, Network to Code, LLC +======= +Copyright (c) 2021-2026, Network to Code, LLC +>>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/README.md b/README.md index 969516fe..02793071 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Netutils

- +
@@ -18,9 +18,15 @@ A Python library that is a collection of functions that are used in the common n Full web-based HTML documentation for this library can be found over on the [Netutils Docs](https://netutils.readthedocs.io) website: +<<<<<<< HEAD - [User Guide](https://netutils.readthedocs.io/en/latest/user/lib_overview/) - Overview, Using the library, Getting Started. - [Administrator Guide](https://netutils.readthedocs.io/en/latest/admin/install/) - How to Install, Configure, Upgrade, or Uninstall the library. - [Developer Guide](https://netutils.readthedocs.io/en/latest/dev/contributing/) - Extending the library, Code Reference, Contribution Guide. +======= +- [User Guide](https://netutils.readthedocs.io/en/latest/user/app_overview/) - Overview, Using the Library, Getting Started. +- [Administrator Guide](https://netutils.readthedocs.io/en/latest/admin/install/) - How to Install, Configure, Upgrade, or Uninstall the Library. +- [Developer Guide](https://netutils.readthedocs.io/en/latest/dev/contributing/) - Extending the Library, Code Reference, Contribution Guide. +>>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) - [Release Notes / Changelog](https://netutils.readthedocs.io/en/latest/admin/release_notes/). - [Frequently Asked Questions](https://netutils.readthedocs.io/en/latest/user/faq/). diff --git a/changes/+main.housekeeping b/changes/+main.housekeeping new file mode 100644 index 00000000..3433adf6 --- /dev/null +++ b/changes/+main.housekeeping @@ -0,0 +1 @@ +Rebaked from the cookie `main`. diff --git a/development/bin/ensure_release_notes.py b/development/bin/ensure_release_notes.py new file mode 100644 index 00000000..f038cc4d --- /dev/null +++ b/development/bin/ensure_release_notes.py @@ -0,0 +1,99 @@ +"""Ensure that release notes exist for a given version. + +This script will do the following: + Ensure a release notes file exists at `docs/admin/release_notes/version_{version}.md`. + Ensure the `mkdocs.yml` file is updated to add the release notes file to the navigation. + Ensure the `pyproject.toml` `tool.towncrier.filename` is updated to reference the release notes file. + +It shouldn't be necessary to run this file manually. It is automatically called by `invoke generate-release-notes`. + +Example: + $ python ensure_release_notes.py --version '1.0.0' +""" + +import argparse + +try: + import tomllib +except ImportError: + import tomli as tomllib + +from pathlib import Path + + +def release_notes_pyproject_toml(version): + """Update the pyproject.toml file to set the towncrier filename for the given version.""" + pyproject_file = Path(__file__).parent.parent.parent / "pyproject.toml" + pyproject_content = pyproject_file.read_text() + pyproject_data = tomllib.loads(pyproject_content) + release_notes_file = f"docs/admin/release_notes/version_{version}.md" + + # Update the towncrier filename + if pyproject_data["tool"]["towncrier"].get("filename", "") != release_notes_file: + pyproject_data["tool"]["towncrier"]["filename"] = release_notes_file + + # Write back the updated content to pyproject.toml + # tomllib is not used to write the file because it is not roundtrippable + new_pyproject_content = [] + in_towncrier_section = False + for line in pyproject_content.splitlines(): + if line.strip() == "[tool.towncrier]": + in_towncrier_section = True + new_pyproject_content.append(line) + continue + if in_towncrier_section: + if line.strip().startswith("filename"): + new_pyproject_content.append(f'filename = "docs/admin/release_notes/version_{version}.md"') + in_towncrier_section = False # Only replace the first occurrence + else: + new_pyproject_content.append(line) + else: + new_pyproject_content.append(line) + + pyproject_file.write_text("\n".join(new_pyproject_content)) + # Add a newline at the end of the file if it doesn't exist + if not pyproject_file.read_text().endswith("\n"): + pyproject_file.write_text(pyproject_file.read_text() + "\n") + # Remind the user to update the release notes file. + print( + f"\033[33mRemember to update the Release Overview section in the release notes file: {release_notes_file}\033[0m" + ) + + +def ensure_release_notes_file(version): + """Ensure that the release notes file for the given version exists and is referenced in mkdocs.yml.""" + release_notes_file = ( + Path(__file__).parent.parent.parent / "docs" / "admin" / "release_notes" / f"version_{version}.md" + ) + if not release_notes_file.exists(): + # Create a new release notes file with a basic template from towncrier_header.txt + towncrier_header = Path(__file__).parent.parent / "towncrier_header.txt" + content = towncrier_header.read_text().format(version=version) + release_notes_file.write_text(content) + + +def ensure_mkdocs_version(version): + """Ensure that mkdocs.yml includes the new release notes file in the navigation.""" + mkdocs_yml_file = Path(__file__).parent.parent.parent / "mkdocs.yml" + mkdocs_yml_content = mkdocs_yml_file.read_text() + release_notes_nav_entry = f' - v{version}: "admin/release_notes/version_{version}.md"\n' + if release_notes_nav_entry in mkdocs_yml_content: + return + + # Add the new release notes entry to the mkdocs.yml content + if "Release Notes:" in mkdocs_yml_content: + mkdocs_yml_content = mkdocs_yml_content.replace( + ' - "admin/release_notes/index.md"\n', + f' - "admin/release_notes/index.md"\n{release_notes_nav_entry}', + ) + + mkdocs_yml_file.write_text(mkdocs_yml_content) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Ensure release notes exist for a given version.") + parser.add_argument("--version", help="The version number (e.g. 2.2)") + args = parser.parse_args() + ensure_release_notes_file(args.version) + ensure_mkdocs_version(args.version) + release_notes_pyproject_toml(args.version) diff --git a/towncrier_template.j2 b/development/towncrier_template.j2 similarity index 66% rename from towncrier_template.j2 rename to development/towncrier_template.j2 index 2c1316f5..5fa06c3b 100644 --- a/towncrier_template.j2 +++ b/development/towncrier_template.j2 @@ -1,13 +1,4 @@ -# v{{ versiondata.version.split(".")[:2] | join(".") }} Release Notes - -This document describes all new features and changes in the release. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## Release Overview - -- Major features or milestones -- Changes to compatibility with Nautobot and/or other apps, libraries etc. - {% if render_title %} ## [v{{ versiondata.version }} ({{ versiondata.date }})](https://github.com/networktocode/netutils/releases/tag/v{{ versiondata.version}}) diff --git a/docs/admin/release_notes/version_1.0.md b/docs/admin/release_notes/version_1.0.md index 63ef2244..a3c7773e 100644 --- a/docs/admin/release_notes/version_1.0.md +++ b/docs/admin/release_notes/version_1.0.md @@ -6,7 +6,11 @@ - Commit to SemVer - F5 fixes +<<<<<<< HEAD ## v1.0.0 - 2021-11 +======= +## [v1.0.0] - 2026-08-14 +>>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) ### Added diff --git a/docs/dev/release_checklist.md b/docs/dev/release_checklist.md index 84277f75..3fd49b9e 100644 --- a/docs/dev/release_checklist.md +++ b/docs/dev/release_checklist.md @@ -12,8 +12,8 @@ This document is intended for library maintainers and outlines the steps to perf Choose your own adventure: -- Patch release from `develop`? Jump [here](#all-releases-from-develop). -- Minor release? Continue with [Minor Version Bumps](#minor-version-bumps) and then [All Releases from `develop`](#all-releases-from-develop). +- Patch release from `develop`? Jump [here](#all-release-branches-branch-off-of-develop). +- Minor release? Continue with [Minor Version Bumps](#minor-version-bumps) and then [All Releases from `develop`](#all-release-branches-branch-off-of-develop). ## Minor Version Bumps @@ -45,7 +45,7 @@ The goal of this step is to walk through the entire install process *as document --- -## All Releases from `develop` +## All `release` branches branch off of `develop` ### Verify CI Build Status diff --git a/docs/generate_code_reference_pages.py b/docs/generate_code_reference_pages.py new file mode 100644 index 00000000..59d81288 --- /dev/null +++ b/docs/generate_code_reference_pages.py @@ -0,0 +1,20 @@ +"""Generate code reference pages.""" + +from pathlib import Path + +import mkdocs_gen_files + +for file_path in Path("netutils").rglob("*.py"): + module_path = file_path.with_suffix("") + doc_path = file_path.with_suffix(".md") + full_doc_path = Path("code-reference", doc_path) + + parts = list(module_path.parts) + if parts[-1] == "__init__": + parts = parts[:-1] + + with mkdocs_gen_files.open(full_doc_path, "w") as fd: + identifier = ".".join(parts) + print(f"::: {identifier}", file=fd) + + mkdocs_gen_files.set_edit_path(full_doc_path, file_path) diff --git a/example.invoke.yml b/invoke.example.yml similarity index 100% rename from example.invoke.yml rename to invoke.example.yml diff --git a/pyproject.toml b/pyproject.toml index dd5accfa..e2b58696 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,10 @@ [tool.poetry] name = "netutils" +<<<<<<< HEAD version = "1.18.1a0" +======= +version = "0.1.0a0" +>>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) description = "Common helper functions useful in network automation." authors = ["Network to Code, LLC "] license = "Apache-2.0" @@ -19,14 +23,25 @@ classifiers = [ "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", ] + include = [ +<<<<<<< HEAD "LICENSE", "README.md", "netutils/protocols.json" +======= + # Poetry by default will exclude files that are in .gitignore + { path = "netutils/static/netutils/docs/**/*", format = ["sdist", "wheel"] } +] + +packages = [ + { include = "netutils" }, +>>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) ] [tool.poetry.dependencies] python = ">=3.10,<3.15" +<<<<<<< HEAD napalm = [ {version = "^4.1.0", optional = true, python = ">=3.10,<3.14"}, {version = "^5.0.0", optional = true, python = ">=3.14"} @@ -45,43 +60,68 @@ optionals = ["jinja2", "jsonschema", "legacycrypt", "napalm", "rpds-py"] [tool.poetry.group.dev.dependencies] coverage = "*" invoke = "*" +======= +click = "*" + +[tool.poetry.group.dev.dependencies] +coverage = "~7.15.4" +>>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) pytest = "*" mock = "*" mypy = "*" pyyaml = "^6.0.1" +<<<<<<< HEAD pylint = "*" yamllint = "*" toml = "^0.10.2" attrs = "^23.2.0" towncrier = ">=23.6.0,<=24.8.0" ruff = "0.5.5" +======= +pylint = "~4.0.6" +yamllint = "~1.38.0" +invoke = "~3.0.3" +toml = "^0.10.2" +attrs = "^23.2.0" +towncrier = "~25.8.0" +ruff = "~0.16.2" +>>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) Markdown = "*" [tool.poetry.group.docs.dependencies] # Rendering docs to HTML -mkdocs = "1.6.1" +mkdocs = "~1.6.1" # Embedding YAML files into Markdown documents as tables -markdown-data-tables = "1.0.0" +markdown-data-tables = "~1.0.0" # Render custom markdown for version added/changed/remove notes -markdown-version-annotations = "1.0.1" +markdown-version-annotations = "~1.0.1" # Automatically generate some files as part of mkdocs build -mkdocs-gen-files = "0.5.0" +mkdocs-gen-files = "~0.6.1" # Image lightboxing in mkdocs -mkdocs-glightbox = "0.4.0" +mkdocs-glightbox = "~0.5.2" # Use Jinja2 templating in docs - see settings.md -mkdocs-macros-plugin = "1.3.7" +mkdocs-macros-plugin = "~1.5.0" # Material for mkdocs theme -mkdocs-material = "9.6.15" +mkdocs-material = "~9.7.7" # Handle docs redirections -mkdocs-redirects = "1.2.2" +mkdocs-redirects = "~1.2.3" # Automatically handle index pages for docs sections -mkdocs-section-index = "0.3.10" +mkdocs-section-index = "~0.3.12" # Automatic documentation from sources, for MkDocs -mkdocstrings = "0.27.0" +mkdocstrings = "~1.0.6" # Python-specific extension to mkdocstrings +<<<<<<< HEAD mkdocstrings-python = "1.13.0" griffe = "1.1.1" mkdocs-python-classy = "0.1.3" +======= +mkdocstrings-python = "~2.0.5" + +[tool.poetry.scripts] +netutils = 'netutils.cli:main' + + +>>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) [tool.ruff] line-length = 120 @@ -180,8 +220,13 @@ show_error_codes = true [tool.towncrier] package = "netutils" directory = "changes" +<<<<<<< HEAD filename = "docs/admin/release_notes/version_1.18.md" template = "towncrier_template.j2" +======= +filename = "docs/admin/release_notes/version_X.Y.md" +template = "development/towncrier_template.j2" +>>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) start_string = "" issue_format = "[#{issue}](https://github.com/networktocode/netutils/issues/{issue})" diff --git a/tasks.py b/tasks.py index 84805a24..87bbcd66 100644 --- a/tasks.py +++ b/tasks.py @@ -36,10 +36,14 @@ def is_truthy(arg): { "netutils": { "project_name": "netutils", +<<<<<<< HEAD "python_ver": "3.10", +======= + "python_ver": "3.14", +>>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) "local": is_truthy(os.getenv("INVOKE_NETUTILS_LOCAL", "false")), "image_name": "netutils", - "image_ver": os.getenv("INVOKE_PARSER_IMAGE_VER", "latest"), + "image_ver": os.getenv("INVOKE_NETUTILS_IMAGE_VER", "latest"), "pwd": Path(__file__).parent, } } @@ -66,13 +70,14 @@ def task_wrapper(function=None): return task_wrapper -def run_command(context, exec_cmd, port=None): +def run_command(context, exec_cmd, port=None, rm=True): """Wrapper to run the invoke task commands. Args: context ([invoke.task]): Invoke task object. exec_cmd ([str]): Command to run. port (int): Used to serve local docs. + rm (bool): Whether to remove the container after running the command. Returns: result (obj): Contains Invoke result from running task. @@ -86,12 +91,12 @@ def run_command(context, exec_cmd, port=None): ) if port: result = context.run( - f"docker run -it -p {port} -v {context.netutils.pwd}:/local {context.netutils.image_name}:{context.netutils.image_ver} sh -c '{exec_cmd}'", + f"docker run -it {'--rm' if rm else ''} -p {port} -v {context.netutils.pwd}:/local {context.netutils.image_name}:{context.netutils.image_ver} sh -c '{exec_cmd}'", pty=True, ) else: result = context.run( - f"docker run -it -v {context.netutils.pwd}:/local {context.netutils.image_name}:{context.netutils.image_ver} sh -c '{exec_cmd}'", + f"docker run -it {'--rm' if rm else ''} -v {context.netutils.pwd}:/local {context.netutils.image_name}:{context.netutils.image_ver} sh -c '{exec_cmd}'", pty=True, ) @@ -188,6 +193,16 @@ def pytest(context, pattern=None, label=None): exec_cmd = " && ".join([doc_test_cmd, pytest_cmd, coverage_cmd]) run_command(context, exec_cmd) + doc_test_cmd = "pytest -vv --doctest-modules netutils/" + pytest_cmd = "coverage run --source=netutils -m pytest" + if pattern: + pytest_cmd += "".join([f" -k {_pattern}" for _pattern in pattern]) + if label: + pytest_cmd += "".join([f" {_label}" for _label in label]) + coverage_cmd = "coverage report" + exec_cmd = " && ".join([doc_test_cmd, pytest_cmd, coverage_cmd]) + run_command(context, exec_cmd) + @task(aliases=("a",)) def autoformat(context): @@ -340,14 +355,22 @@ def docs(context): @task( help={ "version": "Version of netutils to generate the release notes for.", + "date": "Date of the release (default: today).", + "keep": "Keep existing release notes files. Useful for testing. (default: False).", } ) -def generate_release_notes(context, version=""): +def generate_release_notes(context, version="", date="", keep=False): """Generate Release Notes using Towncrier.""" command = "poetry run towncrier build" - if version: - command += f" --version {version}" - else: - command += " --version `poetry version -s`" + if not version: + version = context.run("poetry version --short", hide=True).stdout.strip() + command += f" --version {version}" + if date: + command += f" --date {date}" + command += " --keep" if keep else " --yes" + + version_major_minor = ".".join(version.split(".")[:2]) + context.run(f"poetry run python development/bin/ensure_release_notes.py --version {version_major_minor}") + # Due to issues with git repo ownership in the containers, this must always run locally. context.run(command) From b3cded02ca6ab248fdd14943a0b6f29068739dc3 Mon Sep 17 00:00:00 2001 From: Jeff Kala Date: Thu, 20 Aug 2026 12:36:38 -0600 Subject: [PATCH 02/10] Fix merge conflicts --- .cookiecutter.json | 4 --- .github/workflows/ci.yml | 44 ------------------------- .github/workflows/release.yml | 8 ----- LICENSE | 4 --- README.md | 6 ---- docs/admin/release_notes/version_1.0.md | 4 --- pyproject.toml | 38 +-------------------- tasks.py | 28 +++++++++++----- 8 files changed, 20 insertions(+), 116 deletions(-) diff --git a/.cookiecutter.json b/.cookiecutter.json index 51c0d5a6..e1061cf4 100644 --- a/.cookiecutter.json +++ b/.cookiecutter.json @@ -23,11 +23,7 @@ "pull_request_strategy": "update-or-create", "post_actions": [], "draft": false, -<<<<<<< HEAD - "baked_commit_ref": "b23a9ed5a4714810d83670ad47cc182764c6d464", -======= "baked_commit_ref": "e4d0e9bd14396e92e7cc2699a9afe91ca5946468", ->>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) "drift_managed_branch": "develop" } } diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 01fd4b6e..e63747eb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -114,48 +114,7 @@ jobs: - name: "Check out repository code" uses: "actions/checkout@v4" - name: "Setup environment" -<<<<<<< HEAD - uses: "networktocode/gh-action-setup-poetry-environment@v6" - with: - poetry-version: "2.1.3" - - name: "Get image version" - run: "echo INVOKE_NETUTILS_IMAGE_VER=`poetry version -s`-py${{ matrix.python-version }} >> $GITHUB_ENV" - - name: "Set up Docker Buildx" - id: "buildx" - uses: "docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2" # v3.10.0 - - name: "Build" - uses: "docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25" # v5.4.0 - with: - builder: "${{ steps.buildx.outputs.name }}" - context: "./" - push: false - load: true - tags: "${{ env.INVOKE_NETUTILS_IMAGE_NAME }}:${{ env.INVOKE_NETUTILS_IMAGE_VER }}" - file: "./Dockerfile" - cache-from: "type=gha,scope=${{ env.INVOKE_NETUTILS_IMAGE_NAME }}-${{ env.INVOKE_NETUTILS_IMAGE_VER }}-py${{ matrix.python-version }}" - cache-to: "type=gha,scope=${{ env.INVOKE_NETUTILS_IMAGE_NAME }}-${{ env.INVOKE_NETUTILS_IMAGE_VER }}-py${{ matrix.python-version }}" - build-args: | - PYTHON_VER=${{ matrix.python-version }} - - name: "Linting: Pylint" - run: "poetry run invoke pylint" - pytest: - needs: - - "check-in-docker" - strategy: - fail-fast: true - matrix: - python-version: ["3.10", "3.11", "3.12", "3.13"] - runs-on: "ubuntu-latest" - env: - INVOKE_NETUTILS_PYTHON_VER: "${{ matrix.python-version }}" - steps: - - name: "Check out repository code" - uses: "actions/checkout@v4" - - name: "Setup environment" - uses: "networktocode/gh-action-setup-poetry-environment@v6" -======= uses: "networktocode/gh-action-setup-poetry-environment@v7" ->>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) with: poetry-version: "2.1.3" - name: "Get image version" @@ -176,8 +135,6 @@ jobs: cache-to: "type=gha,scope=${{ env.INVOKE_NETUTILS_IMAGE_NAME }}-${{ env.INVOKE_NETUTILS_IMAGE_VER }}-py${{ matrix.python-version }}" build-args: | PYTHON_VER=${{ matrix.python-version }} -<<<<<<< HEAD -======= - name: "Linting: Pylint" run: "poetry run invoke pylint" pytest: @@ -215,7 +172,6 @@ jobs: cache-to: "type=gha,scope=${{ env.INVOKE_NETUTILS_IMAGE_NAME }}-${{ env.INVOKE_NETUTILS_IMAGE_VER }}-py${{ matrix.python-version }}" build-args: | PYTHON_VER=${{ matrix.python-version }} ->>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) - name: "Run Tests" run: "poetry run invoke pytest" changelog: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 19988efb..5f8f1599 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -74,14 +74,6 @@ jobs: - name: "Publish package distributions to PyPI" uses: "pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e" # v1.13.0 -<<<<<<< HEAD - ## Used for networktocode org since trusted publisher isn't supported for GitHub Plan. - with: - user: "__token__" - password: "${{ secrets.PYPI_API_TOKEN }}" - # End publish to PyPI job. -======= ->>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) slack-notify: needs: diff --git a/LICENSE b/LICENSE index c0caca4d..9e40eee1 100644 --- a/LICENSE +++ b/LICENSE @@ -1,10 +1,6 @@ Apache Software License 2.0 -<<<<<<< HEAD -Copyright (c) 2021-2025, Network to Code, LLC -======= Copyright (c) 2021-2026, Network to Code, LLC ->>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/README.md b/README.md index 02793071..bac8d86e 100644 --- a/README.md +++ b/README.md @@ -18,15 +18,9 @@ A Python library that is a collection of functions that are used in the common n Full web-based HTML documentation for this library can be found over on the [Netutils Docs](https://netutils.readthedocs.io) website: -<<<<<<< HEAD - [User Guide](https://netutils.readthedocs.io/en/latest/user/lib_overview/) - Overview, Using the library, Getting Started. - [Administrator Guide](https://netutils.readthedocs.io/en/latest/admin/install/) - How to Install, Configure, Upgrade, or Uninstall the library. - [Developer Guide](https://netutils.readthedocs.io/en/latest/dev/contributing/) - Extending the library, Code Reference, Contribution Guide. -======= -- [User Guide](https://netutils.readthedocs.io/en/latest/user/app_overview/) - Overview, Using the Library, Getting Started. -- [Administrator Guide](https://netutils.readthedocs.io/en/latest/admin/install/) - How to Install, Configure, Upgrade, or Uninstall the Library. -- [Developer Guide](https://netutils.readthedocs.io/en/latest/dev/contributing/) - Extending the Library, Code Reference, Contribution Guide. ->>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) - [Release Notes / Changelog](https://netutils.readthedocs.io/en/latest/admin/release_notes/). - [Frequently Asked Questions](https://netutils.readthedocs.io/en/latest/user/faq/). diff --git a/docs/admin/release_notes/version_1.0.md b/docs/admin/release_notes/version_1.0.md index a3c7773e..63ef2244 100644 --- a/docs/admin/release_notes/version_1.0.md +++ b/docs/admin/release_notes/version_1.0.md @@ -6,11 +6,7 @@ - Commit to SemVer - F5 fixes -<<<<<<< HEAD ## v1.0.0 - 2021-11 -======= -## [v1.0.0] - 2026-08-14 ->>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) ### Added diff --git a/pyproject.toml b/pyproject.toml index e2b58696..77ecd4d4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,10 +1,6 @@ [tool.poetry] name = "netutils" -<<<<<<< HEAD version = "1.18.1a0" -======= -version = "0.1.0a0" ->>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) description = "Common helper functions useful in network automation." authors = ["Network to Code, LLC "] license = "Apache-2.0" @@ -25,23 +21,19 @@ classifiers = [ ] include = [ -<<<<<<< HEAD "LICENSE", "README.md", - "netutils/protocols.json" -======= + "netutils/protocols.json", # Poetry by default will exclude files that are in .gitignore { path = "netutils/static/netutils/docs/**/*", format = ["sdist", "wheel"] } ] packages = [ { include = "netutils" }, ->>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) ] [tool.poetry.dependencies] python = ">=3.10,<3.15" -<<<<<<< HEAD napalm = [ {version = "^4.1.0", optional = true, python = ">=3.10,<3.14"}, {version = "^5.0.0", optional = true, python = ">=3.14"} @@ -60,24 +52,10 @@ optionals = ["jinja2", "jsonschema", "legacycrypt", "napalm", "rpds-py"] [tool.poetry.group.dev.dependencies] coverage = "*" invoke = "*" -======= -click = "*" - -[tool.poetry.group.dev.dependencies] -coverage = "~7.15.4" ->>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) pytest = "*" mock = "*" mypy = "*" pyyaml = "^6.0.1" -<<<<<<< HEAD -pylint = "*" -yamllint = "*" -toml = "^0.10.2" -attrs = "^23.2.0" -towncrier = ">=23.6.0,<=24.8.0" -ruff = "0.5.5" -======= pylint = "~4.0.6" yamllint = "~1.38.0" invoke = "~3.0.3" @@ -85,7 +63,6 @@ toml = "^0.10.2" attrs = "^23.2.0" towncrier = "~25.8.0" ruff = "~0.16.2" ->>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) Markdown = "*" [tool.poetry.group.docs.dependencies] @@ -110,19 +87,11 @@ mkdocs-section-index = "~0.3.12" # Automatic documentation from sources, for MkDocs mkdocstrings = "~1.0.6" # Python-specific extension to mkdocstrings -<<<<<<< HEAD -mkdocstrings-python = "1.13.0" -griffe = "1.1.1" -mkdocs-python-classy = "0.1.3" -======= mkdocstrings-python = "~2.0.5" [tool.poetry.scripts] netutils = 'netutils.cli:main' - ->>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) - [tool.ruff] line-length = 120 target-version = "py310" @@ -220,13 +189,8 @@ show_error_codes = true [tool.towncrier] package = "netutils" directory = "changes" -<<<<<<< HEAD filename = "docs/admin/release_notes/version_1.18.md" -template = "towncrier_template.j2" -======= -filename = "docs/admin/release_notes/version_X.Y.md" template = "development/towncrier_template.j2" ->>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) start_string = "" issue_format = "[#{issue}](https://github.com/networktocode/netutils/issues/{issue})" diff --git a/tasks.py b/tasks.py index 87bbcd66..b90cbb8b 100644 --- a/tasks.py +++ b/tasks.py @@ -36,11 +36,7 @@ def is_truthy(arg): { "netutils": { "project_name": "netutils", -<<<<<<< HEAD - "python_ver": "3.10", -======= "python_ver": "3.14", ->>>>>>> e865bbc (Cookie updated targeting develop by NetworkToCode Cookie Drift Manager Tool) "local": is_truthy(os.getenv("INVOKE_NETUTILS_LOCAL", "false")), "image_name": "netutils", "image_ver": os.getenv("INVOKE_NETUTILS_IMAGE_VER", "latest"), @@ -153,9 +149,15 @@ def lock(context, check=False): @task def clean(context): """Remove the project specific image.""" - print(f"Attempting to forcefully remove image {context.netutils.image_name}:{context.netutils.image_ver}") - context.run(f"docker rmi {context.netutils.image_name}:{context.netutils.image_ver} --force") - print(f"Successfully removed image {context.netutils.image_name}:{context.netutils.image_ver}") + print( + f"Attempting to forcefully remove image {context.netutils.image_name}:{context.netutils.image_ver}" + ) + context.run( + f"docker rmi {context.netutils.image_name}:{context.netutils.image_ver} --force" + ) + print( + f"Successfully removed image {context.netutils.image_name}:{context.netutils.image_ver}" + ) @task @@ -339,7 +341,13 @@ def build_and_check_docs(context): if match: major = match.group(1) minor = match.group(2) - release_notes_file = Path(__file__).parent / "docs" / "admin" / "release_notes" / f"version_{major}.{minor}.md" + release_notes_file = ( + Path(__file__).parent + / "docs" + / "admin" + / "release_notes" + / f"version_{major}.{minor}.md" + ) if not release_notes_file.exists(): print(f"Release notes file `version_{major}.{minor}.md` does not exist.") raise Exit(code=1) @@ -370,7 +378,9 @@ def generate_release_notes(context, version="", date="", keep=False): command += " --keep" if keep else " --yes" version_major_minor = ".".join(version.split(".")[:2]) - context.run(f"poetry run python development/bin/ensure_release_notes.py --version {version_major_minor}") + context.run( + f"poetry run python development/bin/ensure_release_notes.py --version {version_major_minor}" + ) # Due to issues with git repo ownership in the containers, this must always run locally. context.run(command) From de65c902a2d162c4173be0d881a52dd44a9dfd00 Mon Sep 17 00:00:00 2001 From: Jeff Kala Date: Thu, 20 Aug 2026 13:30:55 -0600 Subject: [PATCH 03/10] remove extra create pull request from release.yml --- .github/workflows/release.yml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5f8f1599..a1455227 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -175,14 +175,3 @@ jobs: --body "Please do a merge commit." \ --base "${{ steps.branch.outputs.target_branch }}" \ --head "${{ steps.branch.outputs.branch_name }}" - - - name: "Create Pull Request" - if: "steps.branch.outputs.branch_name != ''" - env: - GH_TOKEN: "${{ secrets.GITHUB_TOKEN }}" - run: | - gh pr create \ - --title "Sync release notes from ${{ github.event.release.target_commitish }} (${{ github.event.release.tag_name }}) to develop" \ - --body "Please do a merge commit." \ - --base "develop" \ - --head "${{ steps.branch.outputs.branch_name }}" From 130f06f62f5f38f69d02c0008ad2ed7ab3f26435 Mon Sep 17 00:00:00 2001 From: Jeff Kala Date: Thu, 20 Aug 2026 13:35:03 -0600 Subject: [PATCH 04/10] fix double invoke line --- poetry.lock | 313 ++++++++++++++++++++++++++++++++----------------- pyproject.toml | 1 - 2 files changed, 205 insertions(+), 109 deletions(-) diff --git a/poetry.lock b/poetry.lock index 1e066a76..d29945f9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 2.2.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.3 and should not be changed by hand. [[package]] name = "annotated-types" @@ -699,19 +699,19 @@ python-dateutil = ">=2.8.1" dev = ["flake8", "markdown", "twine", "wheel"] [[package]] -name = "griffe" -version = "1.1.1" +name = "griffelib" +version = "2.2.0" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["docs"] files = [ - {file = "griffe-1.1.1-py3-none-any.whl", hash = "sha256:0c469411e8d671a545725f5c0851a746da8bd99d354a79fdc4abd45219252efb"}, - {file = "griffe-1.1.1.tar.gz", hash = "sha256:faeb78764c0b2bd010719d6e015d07709b0f260258b5d4dd6c88343d9702aa30"}, + {file = "griffelib-2.2.0-py3-none-any.whl", hash = "sha256:d71c3bc2bbed9f958488634fe788b843a9f705d6d2838ca32cd6c25eeb64dfc4"}, + {file = "griffelib-2.2.0.tar.gz", hash = "sha256:e1bc36fe9cd21d4b6b659b456346755e4cfdc5676c0a5214083126ee12612b3c"}, ] -[package.dependencies] -colorama = ">=0.4" +[package.extras] +pypi = ["pip (>=24.0)", "platformdirs (>=4.2)", "wheel (>=0.42)"] [[package]] name = "hjson" @@ -1391,18 +1391,19 @@ mkdocs = ">=1.1" [[package]] name = "mkdocs-gen-files" -version = "0.5.0" +version = "0.6.1" description = "MkDocs plugin to programmatically generate documentation pages during the build" optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" groups = ["docs"] files = [ - {file = "mkdocs_gen_files-0.5.0-py3-none-any.whl", hash = "sha256:7ac060096f3f40bd19039e7277dd3050be9a453c8ac578645844d4d91d7978ea"}, - {file = "mkdocs_gen_files-0.5.0.tar.gz", hash = "sha256:4c7cf256b5d67062a788f6b1d035e157fc1a9498c2399be9af5257d4ff4d19bc"}, + {file = "mkdocs_gen_files-0.6.1-py3-none-any.whl", hash = "sha256:b3182bfc6219e35b8d26658cb988368659d5d023aac30c2a819247558fc12189"}, + {file = "mkdocs_gen_files-0.6.1.tar.gz", hash = "sha256:57d7ff2229e23d077e46d14a33db6d37c8823f6ce1a503c874c1764a71679763"}, ] [package.dependencies] -mkdocs = ">=1.0.3" +mkdocs = ">=1.4.1,<=1.6.1" +properdocs = ">=1.6.5" [[package]] name = "mkdocs-get-deps" @@ -1423,26 +1424,29 @@ pyyaml = ">=5.1" [[package]] name = "mkdocs-glightbox" -version = "0.4.0" +version = "0.5.2" description = "MkDocs plugin supports image lightbox with GLightbox." optional = false -python-versions = "*" +python-versions = ">=3.8" groups = ["docs"] files = [ - {file = "mkdocs-glightbox-0.4.0.tar.gz", hash = "sha256:392b34207bf95991071a16d5f8916d1d2f2cd5d5bb59ae2997485ccd778c70d9"}, - {file = "mkdocs_glightbox-0.4.0-py3-none-any.whl", hash = "sha256:e0107beee75d3eb7380ac06ea2d6eac94c999eaa49f8c3cbab0e7be2ac006ccf"}, + {file = "mkdocs_glightbox-0.5.2-py3-none-any.whl", hash = "sha256:23a431ea802b60b1030c73323db2eed6ba859df1a0822ce575afa43e0ea3f47e"}, + {file = "mkdocs_glightbox-0.5.2.tar.gz", hash = "sha256:c7622799347c32310878e01ccf14f70648445561010911c80590cec0353370ac"}, ] +[package.dependencies] +selectolax = ">=0.3.29" + [[package]] name = "mkdocs-macros-plugin" -version = "1.3.7" +version = "1.5.0" description = "Unleash the power of MkDocs with macros and variables" optional = false python-versions = ">=3.8" groups = ["docs"] files = [ - {file = "mkdocs_macros_plugin-1.3.7-py3-none-any.whl", hash = "sha256:02432033a5b77fb247d6ec7924e72fc4ceec264165b1644ab8d0dc159c22ce59"}, - {file = "mkdocs_macros_plugin-1.3.7.tar.gz", hash = "sha256:17c7fd1a49b94defcdb502fd453d17a1e730f8836523379d21292eb2be4cb523"}, + {file = "mkdocs_macros_plugin-1.5.0-py3-none-any.whl", hash = "sha256:c10fabd812bf50f9170609d0ed518e54f1f0e12c334ac29141723a83c881dd6f"}, + {file = "mkdocs_macros_plugin-1.5.0.tar.gz", hash = "sha256:12aa45ce7ecb7a445c66b9f649f3dd05e9b92e8af6bc65e4acd91d26f878c01f"}, ] [package.dependencies] @@ -1453,41 +1457,43 @@ packaging = "*" pathspec = "*" python-dateutil = "*" pyyaml = "*" -super-collections = "*" +requests = "*" +super-collections = ">=0.6.2" termcolor = "*" [package.extras] -test = ["mkdocs-d2-plugin", "mkdocs-include-markdown-plugin", "mkdocs-macros-test", "mkdocs-material (>=6.2)", "mkdocs-test"] +doc = ["mkdocs-mermaid2-plugin"] +test = ["mkdocs-d2-plugin", "mkdocs-include-markdown-plugin", "mkdocs-macros-test", "mkdocs-material (>=6.2)", "mkdocs-test (>=0.6.0)", "pytest"] [[package]] name = "mkdocs-material" -version = "9.6.15" +version = "9.7.7" description = "Documentation that simply works" optional = false python-versions = ">=3.8" groups = ["docs"] files = [ - {file = "mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a"}, - {file = "mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5"}, + {file = "mkdocs_material-9.7.7-py3-none-any.whl", hash = "sha256:8ea9bb1737a5b524a5f9dcf2e1b4ebda8274ae3008aa7845720a97083bef708f"}, + {file = "mkdocs_material-9.7.7.tar.gz", hash = "sha256:c0649c065b1b0512d60aad8c10f947f8e455284475239b364b610f2deb4d0855"}, ] [package.dependencies] -babel = ">=2.10,<3.0" -backrefs = ">=5.7.post1,<6.0" -colorama = ">=0.4,<1.0" -jinja2 = ">=3.1,<4.0" -markdown = ">=3.2,<4.0" -mkdocs = ">=1.6,<2.0" -mkdocs-material-extensions = ">=1.3,<2.0" -paginate = ">=0.5,<1.0" -pygments = ">=2.16,<3.0" -pymdown-extensions = ">=10.2,<11.0" -requests = ">=2.26,<3.0" +babel = ">=2.10" +backrefs = ">=5.7.post1" +colorama = ">=0.4" +jinja2 = ">=3.1" +markdown = ">=3.2" +mkdocs = ">=1.6,<2" +mkdocs-material-extensions = ">=1.3" +paginate = ">=0.5" +pygments = ">=2.16" +pymdown-extensions = ">=10.2" +requests = ">=2.30" [package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1,<3)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] -imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] -recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] +git = ["mkdocs-git-committers-plugin-2 (>=1.1)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4)"] +imaging = ["cairosvg (>=2.6)", "pillow (>=10.2)"] +recommended = ["mkdocs-minify-plugin (>=0.7)", "mkdocs-redirects (>=1.2)", "mkdocs-rss-plugin (>=1.6)"] [[package]] name = "mkdocs-material-extensions" @@ -1501,95 +1507,80 @@ files = [ {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, ] -[[package]] -name = "mkdocs-python-classy" -version = "0.1.3" -description = "Mkdocs plugin to view Python Classes." -optional = false -python-versions = ">=3.8,<4.0" -groups = ["docs"] -files = [ - {file = "mkdocs_python_classy-0.1.3-py3-none-any.whl", hash = "sha256:fdcfe1cffb39069abdd00873556a88493f463448fad27337ca781e39ad3472a8"}, - {file = "mkdocs_python_classy-0.1.3.tar.gz", hash = "sha256:a6ffdc7ac995b5773eaca97aea88cab43c10bb8e127b238ec052bd92389cc175"}, -] - -[package.dependencies] -mkdocs = ">=1.4.0,<2.0.0" -pymdown-extensions = ">=6.3" - [[package]] name = "mkdocs-redirects" -version = "1.2.2" +version = "1.2.3" description = "A MkDocs plugin for dynamic page redirects to prevent broken links" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" groups = ["docs"] files = [ - {file = "mkdocs_redirects-1.2.2-py3-none-any.whl", hash = "sha256:7dbfa5647b79a3589da4401403d69494bd1f4ad03b9c15136720367e1f340ed5"}, - {file = "mkdocs_redirects-1.2.2.tar.gz", hash = "sha256:3094981b42ffab29313c2c1b8ac3969861109f58b2dd58c45fc81cd44bfa0095"}, + {file = "mkdocs_redirects-1.2.3-py3-none-any.whl", hash = "sha256:ec7312fff462d03ec16395d0c001006a418f8d0c21cdf2b47ff11cf839dc3ce0"}, + {file = "mkdocs_redirects-1.2.3.tar.gz", hash = "sha256:5e980330999299729a2d6a125347d1af78023d68a23681a4de3053ce7dfe2e51"}, ] [package.dependencies] -mkdocs = ">=1.1.1" +mkdocs = ">=1.2,<=1.6.1" +properdocs = ">=1.6.5" [[package]] name = "mkdocs-section-index" -version = "0.3.10" +version = "0.3.12" description = "MkDocs plugin to allow clickable sections that lead to an index page" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["docs"] files = [ - {file = "mkdocs_section_index-0.3.10-py3-none-any.whl", hash = "sha256:bc27c0d0dc497c0ebaee1fc72839362aed77be7318b5ec0c30628f65918e4776"}, - {file = "mkdocs_section_index-0.3.10.tar.gz", hash = "sha256:a82afbda633c82c5568f0e3b008176b9b365bf4bd8b6f919d6eff09ee146b9f8"}, + {file = "mkdocs_section_index-0.3.12-py3-none-any.whl", hash = "sha256:a1100039546beb4ebef63ce6fc91f3195fb9c0c3763105d4d3d7cd31e0a046eb"}, + {file = "mkdocs_section_index-0.3.12.tar.gz", hash = "sha256:285635bf86c643b0fc7a343053d7a818049817bff4408f52b80c4367bd5e7268"}, ] [package.dependencies] -mkdocs = ">=1.2" +mkdocs = ">=1.2,<=1.6.1" +properdocs = ">=1.6.5" [[package]] name = "mkdocstrings" -version = "0.27.0" +version = "1.0.6" description = "Automatic documentation from sources, for MkDocs." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["docs"] files = [ - {file = "mkdocstrings-0.27.0-py3-none-any.whl", hash = "sha256:6ceaa7ea830770959b55a16203ac63da24badd71325b96af950e59fd37366332"}, - {file = "mkdocstrings-0.27.0.tar.gz", hash = "sha256:16adca6d6b0a1f9e0c07ff0b02ced8e16f228a9d65a37c063ec4c14d7b76a657"}, + {file = "mkdocstrings-1.0.6-py3-none-any.whl", hash = "sha256:2703708697487d1b6d6d7b412e176fa436edf120c1bf81dc9e126b12d00893c7"}, + {file = "mkdocstrings-1.0.6.tar.gz", hash = "sha256:a0b8c2bdd29a6416c80d717aa369bbf7831946bd9f23c2a66db1b1dbe7693dbd"}, ] [package.dependencies] -click = ">=7.0" -Jinja2 = ">=2.11.1" +Jinja2 = ">=3.1" Markdown = ">=3.6" MarkupSafe = ">=1.1" -mkdocs = ">=1.4" -mkdocs-autorefs = ">=1.2" -platformdirs = ">=2.2" +mkdocs = ">=1.6" +mkdocs-autorefs = ">=1.4" pymdown-extensions = ">=6.3" [package.extras] crystal = ["mkdocstrings-crystal (>=0.3.4)"] -python = ["mkdocstrings-python (>=0.5.2)"] +python = ["mkdocstrings-python (>=1.16.2)"] python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] [[package]] name = "mkdocstrings-python" -version = "1.13.0" +version = "2.0.7" description = "A Python handler for mkdocstrings." optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" groups = ["docs"] files = [ - {file = "mkdocstrings_python-1.13.0-py3-none-any.whl", hash = "sha256:b88bbb207bab4086434743849f8e796788b373bd32e7bfefbf8560ac45d88f97"}, - {file = "mkdocstrings_python-1.13.0.tar.gz", hash = "sha256:2dbd5757e8375b9720e81db16f52f1856bf59905428fd7ef88005d1370e2f64c"}, + {file = "mkdocstrings_python-2.0.7-py3-none-any.whl", hash = "sha256:1fce5fbfe4ffa6e8136a35351cdc97c3bf55219c7efbd3f92a82260f93235d60"}, + {file = "mkdocstrings_python-2.0.7.tar.gz", hash = "sha256:8c49faf66d243072d7590a1b5dea028d9d7425fac191f54f096123a4a9c1a783"}, ] [package.dependencies] -griffe = ">=0.49" -mkdocs-autorefs = ">=1.2" -mkdocstrings = ">=0.26" +griffelib = ">=2.0" +mkdocs-autorefs = ">=1.4" +mkdocstrings = ">=0.30" +typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} [[package]] name = "mock" @@ -1923,6 +1914,35 @@ files = [ dev = ["pre-commit", "tox"] testing = ["coverage", "pytest", "pytest-benchmark"] +[[package]] +name = "properdocs" +version = "1.6.7" +description = "Project documentation with Markdown." +optional = false +python-versions = ">=3.9" +groups = ["docs"] +files = [ + {file = "properdocs-1.6.7-py3-none-any.whl", hash = "sha256:6fa0cfa2e01bf338f684892c8a506cf70ea88ae7f3479c933b6fa20168101cbd"}, + {file = "properdocs-1.6.7.tar.gz", hash = "sha256:adc7b16e562890af0e098a7e5b02e3a81c20894a87d6a28d345c9300de73c26e"}, +] + +[package.dependencies] +click = ">=7.0" +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} +ghp-import = ">=1.0" +jinja2 = ">=2.11.1" +markdown = ">=3.3.6" +markupsafe = ">=2.0.1" +packaging = ">=20.5" +pathspec = ">=0.11.1" +platformdirs = ">=2.2.0" +pyyaml = ">=5.1" +pyyaml-env-tag = ">=0.1" +watchdog = ">=2.0" + +[package.extras] +i18n = ["babel (>=2.9.0)"] + [[package]] name = "pycparser" version = "3.0" @@ -2724,30 +2744,30 @@ oldlibyaml = ["ruamel.yaml.clib ; platform_python_implementation == \"CPython\"" [[package]] name = "ruff" -version = "0.5.5" +version = "0.16.4" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "ruff-0.5.5-py3-none-linux_armv6l.whl", hash = "sha256:605d589ec35d1da9213a9d4d7e7a9c761d90bba78fc8790d1c5e65026c1b9eaf"}, - {file = "ruff-0.5.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:00817603822a3e42b80f7c3298c8269e09f889ee94640cd1fc7f9329788d7bf8"}, - {file = "ruff-0.5.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:187a60f555e9f865a2ff2c6984b9afeffa7158ba6e1eab56cb830404c942b0f3"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe26fc46fa8c6e0ae3f47ddccfbb136253c831c3289bba044befe68f467bfb16"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4ad25dd9c5faac95c8e9efb13e15803cd8bbf7f4600645a60ffe17c73f60779b"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f70737c157d7edf749bcb952d13854e8f745cec695a01bdc6e29c29c288fc36e"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:cfd7de17cef6ab559e9f5ab859f0d3296393bc78f69030967ca4d87a541b97a0"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a09b43e02f76ac0145f86a08e045e2ea452066f7ba064fd6b0cdccb486f7c3e7"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d0b856cb19c60cd40198be5d8d4b556228e3dcd545b4f423d1ad812bfdca5884"}, - {file = "ruff-0.5.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3687d002f911e8a5faf977e619a034d159a8373514a587249cc00f211c67a091"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ac9dc814e510436e30d0ba535f435a7f3dc97f895f844f5b3f347ec8c228a523"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:af9bdf6c389b5add40d89b201425b531e0a5cceb3cfdcc69f04d3d531c6be74f"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:d40a8533ed545390ef8315b8e25c4bb85739b90bd0f3fe1280a29ae364cc55d8"}, - {file = "ruff-0.5.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:cab904683bf9e2ecbbe9ff235bfe056f0eba754d0168ad5407832928d579e7ab"}, - {file = "ruff-0.5.5-py3-none-win32.whl", hash = "sha256:696f18463b47a94575db635ebb4c178188645636f05e934fdf361b74edf1bb2d"}, - {file = "ruff-0.5.5-py3-none-win_amd64.whl", hash = "sha256:50f36d77f52d4c9c2f1361ccbfbd09099a1b2ea5d2b2222c586ab08885cf3445"}, - {file = "ruff-0.5.5-py3-none-win_arm64.whl", hash = "sha256:3191317d967af701f1b73a31ed5788795936e423b7acce82a2b63e26eb3e89d6"}, - {file = "ruff-0.5.5.tar.gz", hash = "sha256:cc5516bdb4858d972fbc31d246bdb390eab8df1a26e2353be2dbc0c2d7f5421a"}, + {file = "ruff-0.16.4-py3-none-linux_armv6l.whl", hash = "sha256:df4075f71ddac40b9934af60c3ec8a53047dd5a5fdc43224e6e4e8e9a27cb6f7"}, + {file = "ruff-0.16.4-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:0c95538517af68004306b0fb3214ff2f2af67a65092aee77cd9eb86db6656604"}, + {file = "ruff-0.16.4-py3-none-macosx_11_0_arm64.whl", hash = "sha256:963f83df8e69e575b64d67dd447ebbc917db41a14bf38d4593a4183e7aaa8255"}, + {file = "ruff-0.16.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32a5057c7ff3f6e6480a48fccfb3a412a690f48a3d03ac5cf08177d6c2da3ade"}, + {file = "ruff-0.16.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b3dce8d9b0c57c265b91885a66a567d8ea1372e8eb4e250fa8e5e3f579e99cff"}, + {file = "ruff-0.16.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7dc651db49283c69f8e72c834eec4fe5573e4c646856aebece0ce385dceb2a80"}, + {file = "ruff-0.16.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3817b87dbcabc92f13b05019257c5b89b5b4d51b5fb20f56fb5235ceb723cd07"}, + {file = "ruff-0.16.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9fce1499134b2c8c68e5166f95705a5812062bb93aacc5f9873bb1a27084bc7"}, + {file = "ruff-0.16.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2d812e482f5a7e02eee26cd73d2a37ebbdf47d795ea63ba1b89110ae93e9fb3"}, + {file = "ruff-0.16.4-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:6baaf984aa7976edf93d3b627fe2d1d22ee94bbca05fa6f90fc76d73924e3454"}, + {file = "ruff-0.16.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:bdfcf0b28662eb890372d50f92c283bb94e67e7635ed93c7fd533970acff7b2b"}, + {file = "ruff-0.16.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b66b02cb9b04f537643cadf5768e5f98dc461890d530cb67113d71c8c76e605d"}, + {file = "ruff-0.16.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:8528bf9a4b291a60bf02ea453511e8ce6215bd2b982ee80405b66b008b6c30a0"}, + {file = "ruff-0.16.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:fbd85d2875fdd67e833213a651f613bbf25303abf6aa822a5121f4531195678d"}, + {file = "ruff-0.16.4-py3-none-win32.whl", hash = "sha256:312769988007aaeb8e189b443ccdd03c0e6374489e053467be6d96518ebff76e"}, + {file = "ruff-0.16.4-py3-none-win_amd64.whl", hash = "sha256:05d9d27a18c4bcbefada602480ec9e01e0bc949d432e0ced5df77edac195919c"}, + {file = "ruff-0.16.4-py3-none-win_arm64.whl", hash = "sha256:a3a61621c9b6f6a89573e938a080e648f1695baa3f58570a3a707bc51ff65a21"}, + {file = "ruff-0.16.4.tar.gz", hash = "sha256:13171aa9d9af2240ee3504e639de73122c67e74036de5ba2e1d01422cd17e3dc"}, ] [[package]] @@ -2766,6 +2786,83 @@ files = [ [package.dependencies] paramiko = "*" +[[package]] +name = "selectolax" +version = "0.4.11" +description = "A fast HTML5 parser with CSS selectors, written in Cython, using Modest and Lexbor engines." +optional = false +python-versions = "<3.15,>=3.9" +groups = ["docs"] +files = [ + {file = "selectolax-0.4.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3066be35f630e4c4a00cf2c829548574fcba5963735411e6a9ac78bd4ca830ce"}, + {file = "selectolax-0.4.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:57e71c021d9950113e7d49892eba56014c072c9d86b71c0b3b7cb846ee913e20"}, + {file = "selectolax-0.4.11-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dbee8998d426c1b6b78aab7a051009f9de38d77b93d073025ae19f7d71b3ead3"}, + {file = "selectolax-0.4.11-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:75eeddbd3db7e82293a325c210cf4d218d25961870dbb468383c7516e3f577aa"}, + {file = "selectolax-0.4.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:991866e2f45ce85e3ce7a31714e522f620d83b1eca15fe530055108a94e6087e"}, + {file = "selectolax-0.4.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:dc8d449adfdef675bcbfc67d5548513271c7ea869e9b71a2e898138bf34a976a"}, + {file = "selectolax-0.4.11-cp310-cp310-win32.whl", hash = "sha256:3abf5aecfd0c314b62c10ce6e9baee2094cb385e2ec154bd1743febd2fcc9bdb"}, + {file = "selectolax-0.4.11-cp310-cp310-win_amd64.whl", hash = "sha256:21359cf4d1261b314895c07321e76aa2334b1967956efba04cc0d223d7817f48"}, + {file = "selectolax-0.4.11-cp310-cp310-win_arm64.whl", hash = "sha256:96de39e2f28c359cf930547193b2cacf0ab6b9187309e2515461fff9d5a5aa3c"}, + {file = "selectolax-0.4.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:80af1c7345701934769679a83fcc86526c56eef590423cc2d55cc1eb81adfa5f"}, + {file = "selectolax-0.4.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a532f1993f08f627300891751982dd9641ce1bd29618b535232aec9fa023a1c8"}, + {file = "selectolax-0.4.11-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8166bb8cad8f2eabed664f689b708851078b74dd50dd93e426b291095badc2cb"}, + {file = "selectolax-0.4.11-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ad4bbf08af4e2c89f78dd12a7b8265f0924d0434705bd955b5a262297a924452"}, + {file = "selectolax-0.4.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:81f21972788df01b83a5940d9b7d62e6e222f80872c2cfaf67927276e8ef4975"}, + {file = "selectolax-0.4.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9862c1d0435e89e419e0c595084eaa8f6f71c3fb7a968bdff51db595cec07161"}, + {file = "selectolax-0.4.11-cp311-cp311-win32.whl", hash = "sha256:e2d7e1a2b67a5e8d251733b2c3f978ed26a56d04552472e0a2fb5ea41fa4e663"}, + {file = "selectolax-0.4.11-cp311-cp311-win_amd64.whl", hash = "sha256:8da39a07a589fd181b5e8d25f695d7d40d3a1d89e47c2e00c08ece7fff5ddd3d"}, + {file = "selectolax-0.4.11-cp311-cp311-win_arm64.whl", hash = "sha256:dcd24bfc4899e4df2bdcbabc973384367686f391e5a2d8ebb229c043f43be82a"}, + {file = "selectolax-0.4.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:25d633cddca0fc769e7d890e9e838908fb4a7326eec5e3b23ae42c27f457541d"}, + {file = "selectolax-0.4.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:634db1b7ae1b1f10ee0b0adbef0eee1aec65a3d01f09b75132bc5b043b7623d1"}, + {file = "selectolax-0.4.11-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:168b34466dc4f998d7ceb04f218693546d141543e7c5d327f9e006c0799cd62c"}, + {file = "selectolax-0.4.11-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c3d4fd42deabfd03cc5c4fce9517e7226054f9de3984759476e6c4a7b7fe187"}, + {file = "selectolax-0.4.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8f0223a83051ece2591a1d0cf487f1d0719cb76660d7c5de4c0a201b761c5c23"}, + {file = "selectolax-0.4.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dff45ee85409e6126e4900e0db6950a59a7b58b7ff9d667a6a275b0405b87692"}, + {file = "selectolax-0.4.11-cp312-cp312-win32.whl", hash = "sha256:f69c377298a09f571c89af5916ac85f69a9aaedd7312b0bb803a46d2ca2f9048"}, + {file = "selectolax-0.4.11-cp312-cp312-win_amd64.whl", hash = "sha256:48545b0351b6f92c4ad2fff835e832768d0cb37834766a82f40242e51fc9901d"}, + {file = "selectolax-0.4.11-cp312-cp312-win_arm64.whl", hash = "sha256:daf7a841d1baa795f940200bec45019c4a31020def16e3a4e35485e82ed64167"}, + {file = "selectolax-0.4.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5153157ed60d968ed303acbfd2c8762fa0c0462e2663bd04466471c565deb88a"}, + {file = "selectolax-0.4.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:386494779e5464e587ed4dc076e1c48c24ebaf2da1e3a249690551d1f97fe8ed"}, + {file = "selectolax-0.4.11-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:47be0e591125484de14ff0c9aaaa814dd4a4019de35eabe360e88169a263a2b5"}, + {file = "selectolax-0.4.11-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f8f014f328f6f79a364293bca54d43af1cec776dc10a5302054a54b5fb2d8675"}, + {file = "selectolax-0.4.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c3f6fac361b5f415c409dfd1a07dd0e9a5899d10daba8d88ce16bd552b0e06f2"}, + {file = "selectolax-0.4.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f8121f4cbfe870d9ad24ae418a735d918d55844e905c3270077e97f4e579770f"}, + {file = "selectolax-0.4.11-cp313-cp313-win32.whl", hash = "sha256:bde121202b33e6041e9d2db1d62e7466b5883fd1c441eb96ff68d3ea015cfcbd"}, + {file = "selectolax-0.4.11-cp313-cp313-win_amd64.whl", hash = "sha256:5c7a91fbe1a94849d85228897c416ab9b4518bea6b04dce8ef8acd825ec80e9d"}, + {file = "selectolax-0.4.11-cp313-cp313-win_arm64.whl", hash = "sha256:597b8e065978be200c598ae6d682496d96fbce14d34b5d519e93cf5b6be5fb60"}, + {file = "selectolax-0.4.11-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:663ff792f92ed749cfcf452ac19aff5da74b05521e7daacb3b74388deb14d117"}, + {file = "selectolax-0.4.11-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d5ce592a92fceeca2694b369a83ad72891a9c356f668718fe7e1c83eea407bb4"}, + {file = "selectolax-0.4.11-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0f56c49161b18621ac452e42e02b0c5c61ba4c21095cfff3990e040bd9a043c"}, + {file = "selectolax-0.4.11-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:224682039ca13eb822be626e49a03592ee2b8557bcdc6381e49417a995170c94"}, + {file = "selectolax-0.4.11-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:bd843540a197a33049a08fd80e59bfeafbaa688e632d53a05a9b65af5e88296f"}, + {file = "selectolax-0.4.11-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2b842c829f916fecb51f0f55882eca3e2ad49e85388178f14ae6fe0912be0a57"}, + {file = "selectolax-0.4.11-cp314-cp314-win32.whl", hash = "sha256:d33e2ed75cc33e7af3fd50521c33e7d8634fae23bc197a6cee6a5015e056eef6"}, + {file = "selectolax-0.4.11-cp314-cp314-win_amd64.whl", hash = "sha256:e5929cbe3eedfaf51a09ec89642ab5355b703486d43bcf3c8f0c27d6043a488d"}, + {file = "selectolax-0.4.11-cp314-cp314-win_arm64.whl", hash = "sha256:466daca0599408c9d2cad7658a68490facc5c9b8d0f41ac5d17948914f57306f"}, + {file = "selectolax-0.4.11-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:086ca6f7e4c475bfff871ec1448ae5d342d43d6a2ca2cea65160d01b3a6a75ec"}, + {file = "selectolax-0.4.11-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b530a2c4fad7400af27b2b7e0333c1318ecb5f5dc38e8a141dbe3bd81b398fdf"}, + {file = "selectolax-0.4.11-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3637d21f7fe60fbd6ca3dbc67a1747f6a55a9389114d72f06b5d69ba2beddf01"}, + {file = "selectolax-0.4.11-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fad5b1065f73eeaa07ea343cbc548aaa9f9a5c359c3bdd8d98f5d80b61550d1c"}, + {file = "selectolax-0.4.11-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1da54e42ab99b9191269306e13c0fd67ada1c6654e8dc8d74fac615931dd3c62"}, + {file = "selectolax-0.4.11-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:28915b8fa90c1c3cb585858a6d24d433a3f38ea514aea59013bdb0930d9f6025"}, + {file = "selectolax-0.4.11-cp314-cp314t-win32.whl", hash = "sha256:1a6deb4464198ac67f32e56c4463aedf3e1d834b458eaac5b5b5b1ef02dcf15e"}, + {file = "selectolax-0.4.11-cp314-cp314t-win_amd64.whl", hash = "sha256:41f388c26304c1d840f5ee5e07c06bb9388ec834d10fec60dc148f22f98efd38"}, + {file = "selectolax-0.4.11-cp314-cp314t-win_arm64.whl", hash = "sha256:9077fa36e99ef4bb801194ff8f492f67279c0562e7cdfa9b4d06f5c010131969"}, + {file = "selectolax-0.4.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:36183968e5c122da414db0dd7d22d4a6ca808e9b9e4837532dfbe55df6f26bff"}, + {file = "selectolax-0.4.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:83515cc0fe9b8c4a1ca8bfcd83cf48408bcdd3f2fccd088f04635619e93695c9"}, + {file = "selectolax-0.4.11-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d00753a5f832625f69b585dda7a7ddc1a7d2803c31aa8710c5d209fca064d774"}, + {file = "selectolax-0.4.11-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8ff49b24d4e5c81bcc96b25e2cf23d9af2d06e4d473865c812487be6665416c0"}, + {file = "selectolax-0.4.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5ff73122f5fee3350528235349f1b9e5626a1a0ef1887fef82d7fddac18f6605"}, + {file = "selectolax-0.4.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:75c13f519ecb85185e149049bd4c4937aa0b953bd21e1748eb711c6cdcee571e"}, + {file = "selectolax-0.4.11-cp39-cp39-win32.whl", hash = "sha256:903286e6d9752b63b3b37f9ee98a8ff7db403b23416b469b065cc992b2556b80"}, + {file = "selectolax-0.4.11-cp39-cp39-win_amd64.whl", hash = "sha256:f4894d4cb2b9cd4828dc9d9cbed683db051748fde66f5937aa823f2afff16b36"}, + {file = "selectolax-0.4.11-cp39-cp39-win_arm64.whl", hash = "sha256:2e8d01d9688e9670b7ed3f042dc7ba379f844fb7fcb8e85191885ed75d6178fb"}, + {file = "selectolax-0.4.11.tar.gz", hash = "sha256:2b565ddabce6c9a7b73fa28a39acf8f411a084fa2f169234ec2470f552d4421d"}, +] + +[package.extras] +cython = ["Cython"] + [[package]] name = "setuptools" version = "83.0.0" @@ -2946,14 +3043,14 @@ files = [ [[package]] name = "towncrier" -version = "24.8.0" +version = "25.8.0" description = "Building newsfiles for your project." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" groups = ["dev"] files = [ - {file = "towncrier-24.8.0-py3-none-any.whl", hash = "sha256:9343209592b839209cdf28c339ba45792fbfe9775b5f9c177462fd693e127d8d"}, - {file = "towncrier-24.8.0.tar.gz", hash = "sha256:013423ee7eed102b2f393c287d22d95f66f1a3ea10a4baa82d298001a7f18af3"}, + {file = "towncrier-25.8.0-py3-none-any.whl", hash = "sha256:b953d133d98f9aeae9084b56a3563fd2519dfc6ec33f61c9cd2c61ff243fb513"}, + {file = "towncrier-25.8.0.tar.gz", hash = "sha256:eef16d29f831ad57abb3ae32a0565739866219f1ebfbdd297d32894eb9940eb1"}, ] [package.dependencies] @@ -3027,12 +3124,12 @@ version = "4.16.0" description = "Backported and Experimental Type Hints for Python 3.9+" optional = false python-versions = ">=3.9" -groups = ["main", "dev"] +groups = ["main", "dev", "docs"] files = [ {file = "typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8"}, {file = "typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5"}, ] -markers = {main = "extra == \"optionals\""} +markers = {main = "extra == \"optionals\"", docs = "python_version == \"3.10\""} [[package]] name = "typing-inspection" @@ -3158,4 +3255,4 @@ optionals = ["jinja2", "jsonschema", "legacycrypt", "napalm", "napalm", "rpds-py [metadata] lock-version = "2.1" python-versions = ">=3.10,<3.15" -content-hash = "15c6e194fae6de97dd0b0f5677d23b4f8f33914f1d502026e36332d4e91161ae" +content-hash = "1e2aeb0305165b7a6bb4337c105d5b1df12183225c6ef221c5b2c3f64aa5990f" diff --git a/pyproject.toml b/pyproject.toml index 77ecd4d4..4392bbad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,7 +51,6 @@ optionals = ["jinja2", "jsonschema", "legacycrypt", "napalm", "rpds-py"] [tool.poetry.group.dev.dependencies] coverage = "*" -invoke = "*" pytest = "*" mock = "*" mypy = "*" From e242138a5fd8558b6ea783759a294817c1cd8330 Mon Sep 17 00:00:00 2001 From: Jeff Kala Date: Thu, 20 Aug 2026 13:48:27 -0600 Subject: [PATCH 05/10] few other fixes --- docs/code-reference/netutils/__init__.md | 1 + .../netutils/_private/version.md | 1 + docs/code-reference/netutils/acl.md | 1 + docs/code-reference/netutils/asn.md | 1 + docs/code-reference/netutils/bandwidth.md | 1 + docs/code-reference/netutils/banner.md | 1 + .../netutils/config/__init__.md | 1 + docs/code-reference/netutils/config/clean.md | 1 + .../netutils/config/compliance.md | 1 + .../netutils/config/conversion.md | 1 + docs/code-reference/netutils/config/parser.md | 1 + docs/code-reference/netutils/config/utils.md | 1 + docs/code-reference/netutils/constants.md | 1 + .../netutils/data_files/__init__.md | 1 + .../netutils/data_files/oui_mappings.md | 1 + .../netutils/data_files/protocol_mappings.md | 1 + .../data_files/protocol_number_mappings.md | 1 + docs/code-reference/netutils/dns.md | 1 + docs/code-reference/netutils/hash.md | 1 + docs/code-reference/netutils/interface.md | 1 + docs/code-reference/netutils/ip.md | 1 + docs/code-reference/netutils/lib_helpers.md | 1 + docs/code-reference/netutils/lib_mapper.md | 1 + docs/code-reference/netutils/mac.md | 1 + docs/code-reference/netutils/nist.md | 1 + docs/code-reference/netutils/os_version.md | 1 + docs/code-reference/netutils/password.md | 1 + docs/code-reference/netutils/ping.md | 1 + .../netutils/protocol_mapper.md | 1 + docs/code-reference/netutils/regex.md | 1 + docs/code-reference/netutils/route.md | 1 + .../code-reference/netutils/running_config.md | 1 + .../docs/generate_code_reference_pages.md | 1 + docs/code-reference/netutils/time.md | 1 + docs/code-reference/netutils/utils.md | 1 + docs/code-reference/netutils/vlan.md | 1 + docs/user/lib_use_cases_acl.md | 2 +- docs/user/lib_use_cases_jinja_filters.md | 18 ++++---------- docs/user/lib_use_cases_lib_mapper.md | 11 +++------ docs/user/lib_use_cases_nist.md | 1 - docs/user/lib_use_cases_protocol_mappers.md | 2 -- tasks.py | 24 ++++--------------- 42 files changed, 50 insertions(+), 44 deletions(-) create mode 100644 docs/code-reference/netutils/__init__.md create mode 100644 docs/code-reference/netutils/_private/version.md create mode 100644 docs/code-reference/netutils/acl.md create mode 100644 docs/code-reference/netutils/asn.md create mode 100644 docs/code-reference/netutils/bandwidth.md create mode 100644 docs/code-reference/netutils/banner.md create mode 100644 docs/code-reference/netutils/config/__init__.md create mode 100644 docs/code-reference/netutils/config/clean.md create mode 100644 docs/code-reference/netutils/config/compliance.md create mode 100644 docs/code-reference/netutils/config/conversion.md create mode 100644 docs/code-reference/netutils/config/parser.md create mode 100644 docs/code-reference/netutils/config/utils.md create mode 100644 docs/code-reference/netutils/constants.md create mode 100644 docs/code-reference/netutils/data_files/__init__.md create mode 100644 docs/code-reference/netutils/data_files/oui_mappings.md create mode 100644 docs/code-reference/netutils/data_files/protocol_mappings.md create mode 100644 docs/code-reference/netutils/data_files/protocol_number_mappings.md create mode 100644 docs/code-reference/netutils/dns.md create mode 100644 docs/code-reference/netutils/hash.md create mode 100644 docs/code-reference/netutils/interface.md create mode 100644 docs/code-reference/netutils/ip.md create mode 100644 docs/code-reference/netutils/lib_helpers.md create mode 100644 docs/code-reference/netutils/lib_mapper.md create mode 100644 docs/code-reference/netutils/mac.md create mode 100644 docs/code-reference/netutils/nist.md create mode 100644 docs/code-reference/netutils/os_version.md create mode 100644 docs/code-reference/netutils/password.md create mode 100644 docs/code-reference/netutils/ping.md create mode 100644 docs/code-reference/netutils/protocol_mapper.md create mode 100644 docs/code-reference/netutils/regex.md create mode 100644 docs/code-reference/netutils/route.md create mode 100644 docs/code-reference/netutils/running_config.md create mode 100644 docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md create mode 100644 docs/code-reference/netutils/time.md create mode 100644 docs/code-reference/netutils/utils.md create mode 100644 docs/code-reference/netutils/vlan.md diff --git a/docs/code-reference/netutils/__init__.md b/docs/code-reference/netutils/__init__.md new file mode 100644 index 00000000..23c1c4e9 --- /dev/null +++ b/docs/code-reference/netutils/__init__.md @@ -0,0 +1 @@ +::: netutils diff --git a/docs/code-reference/netutils/_private/version.md b/docs/code-reference/netutils/_private/version.md new file mode 100644 index 00000000..cb2aa6ff --- /dev/null +++ b/docs/code-reference/netutils/_private/version.md @@ -0,0 +1 @@ +::: netutils._private.version diff --git a/docs/code-reference/netutils/acl.md b/docs/code-reference/netutils/acl.md new file mode 100644 index 00000000..31d75b48 --- /dev/null +++ b/docs/code-reference/netutils/acl.md @@ -0,0 +1 @@ +::: netutils.acl diff --git a/docs/code-reference/netutils/asn.md b/docs/code-reference/netutils/asn.md new file mode 100644 index 00000000..0a651d99 --- /dev/null +++ b/docs/code-reference/netutils/asn.md @@ -0,0 +1 @@ +::: netutils.asn diff --git a/docs/code-reference/netutils/bandwidth.md b/docs/code-reference/netutils/bandwidth.md new file mode 100644 index 00000000..fbb12098 --- /dev/null +++ b/docs/code-reference/netutils/bandwidth.md @@ -0,0 +1 @@ +::: netutils.bandwidth diff --git a/docs/code-reference/netutils/banner.md b/docs/code-reference/netutils/banner.md new file mode 100644 index 00000000..2e471589 --- /dev/null +++ b/docs/code-reference/netutils/banner.md @@ -0,0 +1 @@ +::: netutils.banner diff --git a/docs/code-reference/netutils/config/__init__.md b/docs/code-reference/netutils/config/__init__.md new file mode 100644 index 00000000..43fe1ab6 --- /dev/null +++ b/docs/code-reference/netutils/config/__init__.md @@ -0,0 +1 @@ +::: netutils.config diff --git a/docs/code-reference/netutils/config/clean.md b/docs/code-reference/netutils/config/clean.md new file mode 100644 index 00000000..c0aae231 --- /dev/null +++ b/docs/code-reference/netutils/config/clean.md @@ -0,0 +1 @@ +::: netutils.config.clean diff --git a/docs/code-reference/netutils/config/compliance.md b/docs/code-reference/netutils/config/compliance.md new file mode 100644 index 00000000..b66957d2 --- /dev/null +++ b/docs/code-reference/netutils/config/compliance.md @@ -0,0 +1 @@ +::: netutils.config.compliance diff --git a/docs/code-reference/netutils/config/conversion.md b/docs/code-reference/netutils/config/conversion.md new file mode 100644 index 00000000..1ed59530 --- /dev/null +++ b/docs/code-reference/netutils/config/conversion.md @@ -0,0 +1 @@ +::: netutils.config.conversion diff --git a/docs/code-reference/netutils/config/parser.md b/docs/code-reference/netutils/config/parser.md new file mode 100644 index 00000000..47fe40b8 --- /dev/null +++ b/docs/code-reference/netutils/config/parser.md @@ -0,0 +1 @@ +::: netutils.config.parser diff --git a/docs/code-reference/netutils/config/utils.md b/docs/code-reference/netutils/config/utils.md new file mode 100644 index 00000000..71a82370 --- /dev/null +++ b/docs/code-reference/netutils/config/utils.md @@ -0,0 +1 @@ +::: netutils.config.utils diff --git a/docs/code-reference/netutils/constants.md b/docs/code-reference/netutils/constants.md new file mode 100644 index 00000000..52872616 --- /dev/null +++ b/docs/code-reference/netutils/constants.md @@ -0,0 +1 @@ +::: netutils.constants diff --git a/docs/code-reference/netutils/data_files/__init__.md b/docs/code-reference/netutils/data_files/__init__.md new file mode 100644 index 00000000..60bf78dd --- /dev/null +++ b/docs/code-reference/netutils/data_files/__init__.md @@ -0,0 +1 @@ +::: netutils.data_files diff --git a/docs/code-reference/netutils/data_files/oui_mappings.md b/docs/code-reference/netutils/data_files/oui_mappings.md new file mode 100644 index 00000000..fda558ec --- /dev/null +++ b/docs/code-reference/netutils/data_files/oui_mappings.md @@ -0,0 +1 @@ +::: netutils.data_files.oui_mappings diff --git a/docs/code-reference/netutils/data_files/protocol_mappings.md b/docs/code-reference/netutils/data_files/protocol_mappings.md new file mode 100644 index 00000000..9104f607 --- /dev/null +++ b/docs/code-reference/netutils/data_files/protocol_mappings.md @@ -0,0 +1 @@ +::: netutils.data_files.protocol_mappings diff --git a/docs/code-reference/netutils/data_files/protocol_number_mappings.md b/docs/code-reference/netutils/data_files/protocol_number_mappings.md new file mode 100644 index 00000000..1855c3ef --- /dev/null +++ b/docs/code-reference/netutils/data_files/protocol_number_mappings.md @@ -0,0 +1 @@ +::: netutils.data_files.protocol_number_mappings diff --git a/docs/code-reference/netutils/dns.md b/docs/code-reference/netutils/dns.md new file mode 100644 index 00000000..5eeb6fe6 --- /dev/null +++ b/docs/code-reference/netutils/dns.md @@ -0,0 +1 @@ +::: netutils.dns diff --git a/docs/code-reference/netutils/hash.md b/docs/code-reference/netutils/hash.md new file mode 100644 index 00000000..53725f56 --- /dev/null +++ b/docs/code-reference/netutils/hash.md @@ -0,0 +1 @@ +::: netutils.hash diff --git a/docs/code-reference/netutils/interface.md b/docs/code-reference/netutils/interface.md new file mode 100644 index 00000000..fe8e116a --- /dev/null +++ b/docs/code-reference/netutils/interface.md @@ -0,0 +1 @@ +::: netutils.interface diff --git a/docs/code-reference/netutils/ip.md b/docs/code-reference/netutils/ip.md new file mode 100644 index 00000000..e1d51c52 --- /dev/null +++ b/docs/code-reference/netutils/ip.md @@ -0,0 +1 @@ +::: netutils.ip diff --git a/docs/code-reference/netutils/lib_helpers.md b/docs/code-reference/netutils/lib_helpers.md new file mode 100644 index 00000000..b90be079 --- /dev/null +++ b/docs/code-reference/netutils/lib_helpers.md @@ -0,0 +1 @@ +::: netutils.lib_helpers diff --git a/docs/code-reference/netutils/lib_mapper.md b/docs/code-reference/netutils/lib_mapper.md new file mode 100644 index 00000000..4deb6286 --- /dev/null +++ b/docs/code-reference/netutils/lib_mapper.md @@ -0,0 +1 @@ +::: netutils.lib_mapper diff --git a/docs/code-reference/netutils/mac.md b/docs/code-reference/netutils/mac.md new file mode 100644 index 00000000..695fade1 --- /dev/null +++ b/docs/code-reference/netutils/mac.md @@ -0,0 +1 @@ +::: netutils.mac diff --git a/docs/code-reference/netutils/nist.md b/docs/code-reference/netutils/nist.md new file mode 100644 index 00000000..f84f9323 --- /dev/null +++ b/docs/code-reference/netutils/nist.md @@ -0,0 +1 @@ +::: netutils.nist diff --git a/docs/code-reference/netutils/os_version.md b/docs/code-reference/netutils/os_version.md new file mode 100644 index 00000000..113a3722 --- /dev/null +++ b/docs/code-reference/netutils/os_version.md @@ -0,0 +1 @@ +::: netutils.os_version diff --git a/docs/code-reference/netutils/password.md b/docs/code-reference/netutils/password.md new file mode 100644 index 00000000..eb1ae9c2 --- /dev/null +++ b/docs/code-reference/netutils/password.md @@ -0,0 +1 @@ +::: netutils.password diff --git a/docs/code-reference/netutils/ping.md b/docs/code-reference/netutils/ping.md new file mode 100644 index 00000000..505ac70d --- /dev/null +++ b/docs/code-reference/netutils/ping.md @@ -0,0 +1 @@ +::: netutils.ping diff --git a/docs/code-reference/netutils/protocol_mapper.md b/docs/code-reference/netutils/protocol_mapper.md new file mode 100644 index 00000000..44e07fd8 --- /dev/null +++ b/docs/code-reference/netutils/protocol_mapper.md @@ -0,0 +1 @@ +::: netutils.protocol_mapper diff --git a/docs/code-reference/netutils/regex.md b/docs/code-reference/netutils/regex.md new file mode 100644 index 00000000..06e3162e --- /dev/null +++ b/docs/code-reference/netutils/regex.md @@ -0,0 +1 @@ +::: netutils.regex diff --git a/docs/code-reference/netutils/route.md b/docs/code-reference/netutils/route.md new file mode 100644 index 00000000..000280a7 --- /dev/null +++ b/docs/code-reference/netutils/route.md @@ -0,0 +1 @@ +::: netutils.route diff --git a/docs/code-reference/netutils/running_config.md b/docs/code-reference/netutils/running_config.md new file mode 100644 index 00000000..64fbec42 --- /dev/null +++ b/docs/code-reference/netutils/running_config.md @@ -0,0 +1 @@ +::: netutils.running_config diff --git a/docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md b/docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md new file mode 100644 index 00000000..02bb15ac --- /dev/null +++ b/docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md @@ -0,0 +1 @@ +::: netutils.static.netutils.docs.generate_code_reference_pages diff --git a/docs/code-reference/netutils/time.md b/docs/code-reference/netutils/time.md new file mode 100644 index 00000000..7ea497e7 --- /dev/null +++ b/docs/code-reference/netutils/time.md @@ -0,0 +1 @@ +::: netutils.time diff --git a/docs/code-reference/netutils/utils.md b/docs/code-reference/netutils/utils.md new file mode 100644 index 00000000..8ff71539 --- /dev/null +++ b/docs/code-reference/netutils/utils.md @@ -0,0 +1 @@ +::: netutils.utils diff --git a/docs/code-reference/netutils/vlan.md b/docs/code-reference/netutils/vlan.md new file mode 100644 index 00000000..edb8b5d0 --- /dev/null +++ b/docs/code-reference/netutils/vlan.md @@ -0,0 +1 @@ +::: netutils.vlan diff --git a/docs/user/lib_use_cases_acl.md b/docs/user/lib_use_cases_acl.md index 15c33e4d..53c57460 100644 --- a/docs/user/lib_use_cases_acl.md +++ b/docs/user/lib_use_cases_acl.md @@ -230,9 +230,9 @@ Here we can test if a rule is matched via the existing ruleset. We can leverage **Inherit Example** ```python - from netutils.acl import ACLRule + class ExpandAddrGroups(ACLRule): address_groups = {"red": ["white", "blue"], "blue": ["cyan"], "yellow": ["orange"]} addresses = {"white": ["10.1.1.1", "10.2.2.2"], "cyan": ["10.3.3.3"], "orange": ["10.4.4.4"]} diff --git a/docs/user/lib_use_cases_jinja_filters.md b/docs/user/lib_use_cases_jinja_filters.md index 14cd4d14..92352742 100644 --- a/docs/user/lib_use_cases_jinja_filters.md +++ b/docs/user/lib_use_cases_jinja_filters.md @@ -20,15 +20,11 @@ IP Address + 200 = {{ "192.168.0.1" | ip_addition(200) }} Below is a code in the `jinja2_environment.py` folder. ```python - from jinja2.loaders import FileSystemLoader, PackageLoader from jinja2 import Environment, PackageLoader, select_autoescape from netutils.utils import jinja2_convenience_function -env = Environment( - loader=FileSystemLoader("templates"), - autoescape=select_autoescape() -) +env = Environment(loader=FileSystemLoader("templates"), autoescape=select_autoescape()) env.filters.update(jinja2_convenience_function()) @@ -51,6 +47,8 @@ In Ansible, one can add with the following code by adding to a folder called `fi ```python from netutils.utils import jinja2_convenience_function + + class FilterModule(object): def filters(self): return jinja2_convenience_function() @@ -91,10 +89,7 @@ from jinja2.loaders import FileSystemLoader, PackageLoader from jinja2 import Environment, PackageLoader, select_autoescape from netutils.utils import jinja2_convenience_function -env = Environment( - loader=FileSystemLoader("templates"), - autoescape=select_autoescape() -) +env = Environment(loader=FileSystemLoader("templates"), autoescape=select_autoescape()) env.filters.update(jinja2_convenience_function()) @@ -132,10 +127,7 @@ from netutils.utils import jinja2_convenience_function env = Environment(loader=BaseLoader()) env.filters.update(jinja2_convenience_function()) -DATA = { - "device": "USSCAMS07", - "comma_seperated_devices": "NYC-RT01,NYC-RT02,SFO-SW01,SFO-RT01" -} +DATA = {"device": "USSCAMS07", "comma_seperated_devices": "NYC-RT01,NYC-RT02,SFO-SW01,SFO-RT01"} TEMPLATE_STRING = """ {% set device_details = '([A-Z]{2})([A-Z]{2})([A-Z]{3})(\d*)' | regex_match(device) %} diff --git a/docs/user/lib_use_cases_lib_mapper.md b/docs/user/lib_use_cases_lib_mapper.md index 55780b9d..91e56be4 100644 --- a/docs/user/lib_use_cases_lib_mapper.md +++ b/docs/user/lib_use_cases_lib_mapper.md @@ -5,14 +5,13 @@ These dictionaries provide mappings in expected vendor names between Netmiko, NA These dictionaries allow you to keep your Source of Truth platform data consistent and still easily switch between automation libraries. For example, you may be storing your device platform data in Nautobot. In a Nautobot platform, you can store the NAPALM driver needed for that platform. What if you wanted to write a python script to leverage the backup capabilities of pyntc? Here's an example of how you could use the following dictionaries to perform mappings from your stored Nautobot NAPALM driver to the pyntc driver needed for your script. ```python - import pynautobot from netutils.lib_mapper import NAPALM_LIB_MAPPER, PYNTC_LIB_MAPPER_REVERSE from pyntc import ntc_device as NTC # Get device from Nautobot -nautobot = pynautobot.api(url="http://mynautobotinstance.com",token="mytoken") +nautobot = pynautobot.api(url="http://mynautobotinstance.com", token="mytoken") # Get Napalm driver and save for later use. device = nautobot.dcim.devices.get(name="mydevice") @@ -22,11 +21,7 @@ sot_driver = device.platform.napalm_driver # Connect to device via Napalm driver = napalm.get_network_driver(sot_driver) -device = driver( - hostname="device.name", - username="demo", - password="secret" -) +device = driver(hostname="device.name", username="demo", password="secret") # Do Napalm tasks @@ -49,7 +44,7 @@ There is also a dynamically built mapping that gives you all of the libraries gi "cisco_nxos": { "ansible": "cisco.nxos.nxos", "napalm": "nxos", - } + }, } ``` diff --git a/docs/user/lib_use_cases_nist.md b/docs/user/lib_use_cases_nist.md index 4fd080fb..3b5cacb1 100644 --- a/docs/user/lib_use_cases_nist.md +++ b/docs/user/lib_use_cases_nist.md @@ -25,7 +25,6 @@ For this reason, for certain Vendor/OS combinations, a custom URL needs to be bu Here are a few examples showing how to use this in your python code. ```python - from netutils.nist import get_nist_urls # Get NIST URL for the Cisco IOS object diff --git a/docs/user/lib_use_cases_protocol_mappers.md b/docs/user/lib_use_cases_protocol_mappers.md index 7c071de4..fa3459dc 100644 --- a/docs/user/lib_use_cases_protocol_mappers.md +++ b/docs/user/lib_use_cases_protocol_mappers.md @@ -30,9 +30,7 @@ Here are currently available mappers: Here are a few examples showing how you would use these in your python code. ```python - from netutils.protocol_mapper import ( - PROTO_NAME_TO_NUM, PROTO_NUM_TO_NAME, TCP_NAME_TO_NUM, diff --git a/tasks.py b/tasks.py index b90cbb8b..dbe3c315 100644 --- a/tasks.py +++ b/tasks.py @@ -149,15 +149,9 @@ def lock(context, check=False): @task def clean(context): """Remove the project specific image.""" - print( - f"Attempting to forcefully remove image {context.netutils.image_name}:{context.netutils.image_ver}" - ) - context.run( - f"docker rmi {context.netutils.image_name}:{context.netutils.image_ver} --force" - ) - print( - f"Successfully removed image {context.netutils.image_name}:{context.netutils.image_ver}" - ) + print(f"Attempting to forcefully remove image {context.netutils.image_name}:{context.netutils.image_ver}") + context.run(f"docker rmi {context.netutils.image_name}:{context.netutils.image_ver} --force") + print(f"Successfully removed image {context.netutils.image_name}:{context.netutils.image_ver}") @task @@ -341,13 +335,7 @@ def build_and_check_docs(context): if match: major = match.group(1) minor = match.group(2) - release_notes_file = ( - Path(__file__).parent - / "docs" - / "admin" - / "release_notes" - / f"version_{major}.{minor}.md" - ) + release_notes_file = Path(__file__).parent / "docs" / "admin" / "release_notes" / f"version_{major}.{minor}.md" if not release_notes_file.exists(): print(f"Release notes file `version_{major}.{minor}.md` does not exist.") raise Exit(code=1) @@ -378,9 +366,7 @@ def generate_release_notes(context, version="", date="", keep=False): command += " --keep" if keep else " --yes" version_major_minor = ".".join(version.split(".")[:2]) - context.run( - f"poetry run python development/bin/ensure_release_notes.py --version {version_major_minor}" - ) + context.run(f"poetry run python development/bin/ensure_release_notes.py --version {version_major_minor}") # Due to issues with git repo ownership in the containers, this must always run locally. context.run(command) From 1e0cf40a3e7cc1bd88f0b34339b8204dd475c1ac Mon Sep 17 00:00:00 2001 From: Jeff Kala Date: Thu, 20 Aug 2026 13:50:27 -0600 Subject: [PATCH 06/10] get rid of code-references --- docs/code-reference/netutils/__init__.md | 1 - docs/code-reference/netutils/_private/version.md | 1 - docs/code-reference/netutils/acl.md | 1 - docs/code-reference/netutils/asn.md | 1 - docs/code-reference/netutils/bandwidth.md | 1 - docs/code-reference/netutils/banner.md | 1 - docs/code-reference/netutils/config/__init__.md | 1 - docs/code-reference/netutils/config/clean.md | 1 - docs/code-reference/netutils/config/compliance.md | 1 - docs/code-reference/netutils/config/conversion.md | 1 - docs/code-reference/netutils/config/parser.md | 1 - docs/code-reference/netutils/config/utils.md | 1 - docs/code-reference/netutils/constants.md | 1 - docs/code-reference/netutils/data_files/__init__.md | 1 - docs/code-reference/netutils/data_files/oui_mappings.md | 1 - docs/code-reference/netutils/data_files/protocol_mappings.md | 1 - .../netutils/data_files/protocol_number_mappings.md | 1 - docs/code-reference/netutils/dns.md | 1 - docs/code-reference/netutils/hash.md | 1 - docs/code-reference/netutils/interface.md | 1 - docs/code-reference/netutils/ip.md | 1 - docs/code-reference/netutils/lib_helpers.md | 1 - docs/code-reference/netutils/lib_mapper.md | 1 - docs/code-reference/netutils/mac.md | 1 - docs/code-reference/netutils/nist.md | 1 - docs/code-reference/netutils/os_version.md | 1 - docs/code-reference/netutils/password.md | 1 - docs/code-reference/netutils/ping.md | 1 - docs/code-reference/netutils/protocol_mapper.md | 1 - docs/code-reference/netutils/regex.md | 1 - docs/code-reference/netutils/route.md | 1 - docs/code-reference/netutils/running_config.md | 1 - .../static/netutils/docs/generate_code_reference_pages.md | 1 - docs/code-reference/netutils/time.md | 1 - docs/code-reference/netutils/utils.md | 1 - docs/code-reference/netutils/vlan.md | 1 - 36 files changed, 36 deletions(-) delete mode 100644 docs/code-reference/netutils/__init__.md delete mode 100644 docs/code-reference/netutils/_private/version.md delete mode 100644 docs/code-reference/netutils/acl.md delete mode 100644 docs/code-reference/netutils/asn.md delete mode 100644 docs/code-reference/netutils/bandwidth.md delete mode 100644 docs/code-reference/netutils/banner.md delete mode 100644 docs/code-reference/netutils/config/__init__.md delete mode 100644 docs/code-reference/netutils/config/clean.md delete mode 100644 docs/code-reference/netutils/config/compliance.md delete mode 100644 docs/code-reference/netutils/config/conversion.md delete mode 100644 docs/code-reference/netutils/config/parser.md delete mode 100644 docs/code-reference/netutils/config/utils.md delete mode 100644 docs/code-reference/netutils/constants.md delete mode 100644 docs/code-reference/netutils/data_files/__init__.md delete mode 100644 docs/code-reference/netutils/data_files/oui_mappings.md delete mode 100644 docs/code-reference/netutils/data_files/protocol_mappings.md delete mode 100644 docs/code-reference/netutils/data_files/protocol_number_mappings.md delete mode 100644 docs/code-reference/netutils/dns.md delete mode 100644 docs/code-reference/netutils/hash.md delete mode 100644 docs/code-reference/netutils/interface.md delete mode 100644 docs/code-reference/netutils/ip.md delete mode 100644 docs/code-reference/netutils/lib_helpers.md delete mode 100644 docs/code-reference/netutils/lib_mapper.md delete mode 100644 docs/code-reference/netutils/mac.md delete mode 100644 docs/code-reference/netutils/nist.md delete mode 100644 docs/code-reference/netutils/os_version.md delete mode 100644 docs/code-reference/netutils/password.md delete mode 100644 docs/code-reference/netutils/ping.md delete mode 100644 docs/code-reference/netutils/protocol_mapper.md delete mode 100644 docs/code-reference/netutils/regex.md delete mode 100644 docs/code-reference/netutils/route.md delete mode 100644 docs/code-reference/netutils/running_config.md delete mode 100644 docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md delete mode 100644 docs/code-reference/netutils/time.md delete mode 100644 docs/code-reference/netutils/utils.md delete mode 100644 docs/code-reference/netutils/vlan.md diff --git a/docs/code-reference/netutils/__init__.md b/docs/code-reference/netutils/__init__.md deleted file mode 100644 index 23c1c4e9..00000000 --- a/docs/code-reference/netutils/__init__.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils diff --git a/docs/code-reference/netutils/_private/version.md b/docs/code-reference/netutils/_private/version.md deleted file mode 100644 index cb2aa6ff..00000000 --- a/docs/code-reference/netutils/_private/version.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils._private.version diff --git a/docs/code-reference/netutils/acl.md b/docs/code-reference/netutils/acl.md deleted file mode 100644 index 31d75b48..00000000 --- a/docs/code-reference/netutils/acl.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.acl diff --git a/docs/code-reference/netutils/asn.md b/docs/code-reference/netutils/asn.md deleted file mode 100644 index 0a651d99..00000000 --- a/docs/code-reference/netutils/asn.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.asn diff --git a/docs/code-reference/netutils/bandwidth.md b/docs/code-reference/netutils/bandwidth.md deleted file mode 100644 index fbb12098..00000000 --- a/docs/code-reference/netutils/bandwidth.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.bandwidth diff --git a/docs/code-reference/netutils/banner.md b/docs/code-reference/netutils/banner.md deleted file mode 100644 index 2e471589..00000000 --- a/docs/code-reference/netutils/banner.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.banner diff --git a/docs/code-reference/netutils/config/__init__.md b/docs/code-reference/netutils/config/__init__.md deleted file mode 100644 index 43fe1ab6..00000000 --- a/docs/code-reference/netutils/config/__init__.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.config diff --git a/docs/code-reference/netutils/config/clean.md b/docs/code-reference/netutils/config/clean.md deleted file mode 100644 index c0aae231..00000000 --- a/docs/code-reference/netutils/config/clean.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.config.clean diff --git a/docs/code-reference/netutils/config/compliance.md b/docs/code-reference/netutils/config/compliance.md deleted file mode 100644 index b66957d2..00000000 --- a/docs/code-reference/netutils/config/compliance.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.config.compliance diff --git a/docs/code-reference/netutils/config/conversion.md b/docs/code-reference/netutils/config/conversion.md deleted file mode 100644 index 1ed59530..00000000 --- a/docs/code-reference/netutils/config/conversion.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.config.conversion diff --git a/docs/code-reference/netutils/config/parser.md b/docs/code-reference/netutils/config/parser.md deleted file mode 100644 index 47fe40b8..00000000 --- a/docs/code-reference/netutils/config/parser.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.config.parser diff --git a/docs/code-reference/netutils/config/utils.md b/docs/code-reference/netutils/config/utils.md deleted file mode 100644 index 71a82370..00000000 --- a/docs/code-reference/netutils/config/utils.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.config.utils diff --git a/docs/code-reference/netutils/constants.md b/docs/code-reference/netutils/constants.md deleted file mode 100644 index 52872616..00000000 --- a/docs/code-reference/netutils/constants.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.constants diff --git a/docs/code-reference/netutils/data_files/__init__.md b/docs/code-reference/netutils/data_files/__init__.md deleted file mode 100644 index 60bf78dd..00000000 --- a/docs/code-reference/netutils/data_files/__init__.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.data_files diff --git a/docs/code-reference/netutils/data_files/oui_mappings.md b/docs/code-reference/netutils/data_files/oui_mappings.md deleted file mode 100644 index fda558ec..00000000 --- a/docs/code-reference/netutils/data_files/oui_mappings.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.data_files.oui_mappings diff --git a/docs/code-reference/netutils/data_files/protocol_mappings.md b/docs/code-reference/netutils/data_files/protocol_mappings.md deleted file mode 100644 index 9104f607..00000000 --- a/docs/code-reference/netutils/data_files/protocol_mappings.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.data_files.protocol_mappings diff --git a/docs/code-reference/netutils/data_files/protocol_number_mappings.md b/docs/code-reference/netutils/data_files/protocol_number_mappings.md deleted file mode 100644 index 1855c3ef..00000000 --- a/docs/code-reference/netutils/data_files/protocol_number_mappings.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.data_files.protocol_number_mappings diff --git a/docs/code-reference/netutils/dns.md b/docs/code-reference/netutils/dns.md deleted file mode 100644 index 5eeb6fe6..00000000 --- a/docs/code-reference/netutils/dns.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.dns diff --git a/docs/code-reference/netutils/hash.md b/docs/code-reference/netutils/hash.md deleted file mode 100644 index 53725f56..00000000 --- a/docs/code-reference/netutils/hash.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.hash diff --git a/docs/code-reference/netutils/interface.md b/docs/code-reference/netutils/interface.md deleted file mode 100644 index fe8e116a..00000000 --- a/docs/code-reference/netutils/interface.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.interface diff --git a/docs/code-reference/netutils/ip.md b/docs/code-reference/netutils/ip.md deleted file mode 100644 index e1d51c52..00000000 --- a/docs/code-reference/netutils/ip.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.ip diff --git a/docs/code-reference/netutils/lib_helpers.md b/docs/code-reference/netutils/lib_helpers.md deleted file mode 100644 index b90be079..00000000 --- a/docs/code-reference/netutils/lib_helpers.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.lib_helpers diff --git a/docs/code-reference/netutils/lib_mapper.md b/docs/code-reference/netutils/lib_mapper.md deleted file mode 100644 index 4deb6286..00000000 --- a/docs/code-reference/netutils/lib_mapper.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.lib_mapper diff --git a/docs/code-reference/netutils/mac.md b/docs/code-reference/netutils/mac.md deleted file mode 100644 index 695fade1..00000000 --- a/docs/code-reference/netutils/mac.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.mac diff --git a/docs/code-reference/netutils/nist.md b/docs/code-reference/netutils/nist.md deleted file mode 100644 index f84f9323..00000000 --- a/docs/code-reference/netutils/nist.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.nist diff --git a/docs/code-reference/netutils/os_version.md b/docs/code-reference/netutils/os_version.md deleted file mode 100644 index 113a3722..00000000 --- a/docs/code-reference/netutils/os_version.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.os_version diff --git a/docs/code-reference/netutils/password.md b/docs/code-reference/netutils/password.md deleted file mode 100644 index eb1ae9c2..00000000 --- a/docs/code-reference/netutils/password.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.password diff --git a/docs/code-reference/netutils/ping.md b/docs/code-reference/netutils/ping.md deleted file mode 100644 index 505ac70d..00000000 --- a/docs/code-reference/netutils/ping.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.ping diff --git a/docs/code-reference/netutils/protocol_mapper.md b/docs/code-reference/netutils/protocol_mapper.md deleted file mode 100644 index 44e07fd8..00000000 --- a/docs/code-reference/netutils/protocol_mapper.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.protocol_mapper diff --git a/docs/code-reference/netutils/regex.md b/docs/code-reference/netutils/regex.md deleted file mode 100644 index 06e3162e..00000000 --- a/docs/code-reference/netutils/regex.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.regex diff --git a/docs/code-reference/netutils/route.md b/docs/code-reference/netutils/route.md deleted file mode 100644 index 000280a7..00000000 --- a/docs/code-reference/netutils/route.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.route diff --git a/docs/code-reference/netutils/running_config.md b/docs/code-reference/netutils/running_config.md deleted file mode 100644 index 64fbec42..00000000 --- a/docs/code-reference/netutils/running_config.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.running_config diff --git a/docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md b/docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md deleted file mode 100644 index 02bb15ac..00000000 --- a/docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.static.netutils.docs.generate_code_reference_pages diff --git a/docs/code-reference/netutils/time.md b/docs/code-reference/netutils/time.md deleted file mode 100644 index 7ea497e7..00000000 --- a/docs/code-reference/netutils/time.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.time diff --git a/docs/code-reference/netutils/utils.md b/docs/code-reference/netutils/utils.md deleted file mode 100644 index 8ff71539..00000000 --- a/docs/code-reference/netutils/utils.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.utils diff --git a/docs/code-reference/netutils/vlan.md b/docs/code-reference/netutils/vlan.md deleted file mode 100644 index edb8b5d0..00000000 --- a/docs/code-reference/netutils/vlan.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.vlan From cd970931c90d347283e9374c4c7b7a2c868bb4bb Mon Sep 17 00:00:00 2001 From: Jeff Kala Date: Thu, 20 Aug 2026 14:01:23 -0600 Subject: [PATCH 07/10] get rid of code-references --- poetry.lock | 18 +++++++++++++++++- pyproject.toml | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index d29945f9..2b2db648 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1507,6 +1507,22 @@ files = [ {file = "mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443"}, ] +[[package]] +name = "mkdocs-python-classy" +version = "0.1.3" +description = "Mkdocs plugin to view Python Classes." +optional = false +python-versions = ">=3.8,<4.0" +groups = ["docs"] +files = [ + {file = "mkdocs_python_classy-0.1.3-py3-none-any.whl", hash = "sha256:fdcfe1cffb39069abdd00873556a88493f463448fad27337ca781e39ad3472a8"}, + {file = "mkdocs_python_classy-0.1.3.tar.gz", hash = "sha256:a6ffdc7ac995b5773eaca97aea88cab43c10bb8e127b238ec052bd92389cc175"}, +] + +[package.dependencies] +mkdocs = ">=1.4.0,<2.0.0" +pymdown-extensions = ">=6.3" + [[package]] name = "mkdocs-redirects" version = "1.2.3" @@ -3255,4 +3271,4 @@ optionals = ["jinja2", "jsonschema", "legacycrypt", "napalm", "napalm", "rpds-py [metadata] lock-version = "2.1" python-versions = ">=3.10,<3.15" -content-hash = "1e2aeb0305165b7a6bb4337c105d5b1df12183225c6ef221c5b2c3f64aa5990f" +content-hash = "f86e344e824436f121dd7644e0f67a119b6492c330b5a5631934be7be6992aca" diff --git a/pyproject.toml b/pyproject.toml index 4392bbad..13d6d467 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -87,6 +87,7 @@ mkdocs-section-index = "~0.3.12" mkdocstrings = "~1.0.6" # Python-specific extension to mkdocstrings mkdocstrings-python = "~2.0.5" +mkdocs-python-classy = "0.1.3" [tool.poetry.scripts] netutils = 'netutils.cli:main' From c7a17335c139c8be582a0a4c9dcd17c2b047dde8 Mon Sep 17 00:00:00 2001 From: Jeff Kala Date: Thu, 20 Aug 2026 14:17:27 -0600 Subject: [PATCH 08/10] get rid of code-references --- docs/code-reference/netutils/__init__.md | 1 + docs/code-reference/netutils/_private/version.md | 1 + docs/code-reference/netutils/acl.md | 1 + docs/code-reference/netutils/asn.md | 1 + docs/code-reference/netutils/bandwidth.md | 1 + docs/code-reference/netutils/banner.md | 1 + docs/code-reference/netutils/config/__init__.md | 1 + docs/code-reference/netutils/config/clean.md | 1 + docs/code-reference/netutils/config/compliance.md | 1 + docs/code-reference/netutils/config/conversion.md | 1 + docs/code-reference/netutils/config/parser.md | 1 + docs/code-reference/netutils/config/utils.md | 1 + docs/code-reference/netutils/constants.md | 1 + docs/code-reference/netutils/data_files/__init__.md | 1 + docs/code-reference/netutils/data_files/oui_mappings.md | 1 + docs/code-reference/netutils/data_files/protocol_mappings.md | 1 + .../netutils/data_files/protocol_number_mappings.md | 1 + docs/code-reference/netutils/dns.md | 1 + docs/code-reference/netutils/hash.md | 1 + docs/code-reference/netutils/interface.md | 1 + docs/code-reference/netutils/ip.md | 1 + docs/code-reference/netutils/lib_helpers.md | 1 + docs/code-reference/netutils/lib_mapper.md | 1 + docs/code-reference/netutils/mac.md | 1 + docs/code-reference/netutils/nist.md | 1 + docs/code-reference/netutils/os_version.md | 1 + docs/code-reference/netutils/password.md | 1 + docs/code-reference/netutils/ping.md | 1 + docs/code-reference/netutils/protocol_mapper.md | 1 + docs/code-reference/netutils/regex.md | 1 + docs/code-reference/netutils/route.md | 1 + docs/code-reference/netutils/running_config.md | 1 + .../static/netutils/docs/generate_code_reference_pages.md | 1 + docs/code-reference/netutils/time.md | 1 + docs/code-reference/netutils/utils.md | 1 + docs/code-reference/netutils/vlan.md | 1 + pyproject.toml | 4 +--- 37 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 docs/code-reference/netutils/__init__.md create mode 100644 docs/code-reference/netutils/_private/version.md create mode 100644 docs/code-reference/netutils/acl.md create mode 100644 docs/code-reference/netutils/asn.md create mode 100644 docs/code-reference/netutils/bandwidth.md create mode 100644 docs/code-reference/netutils/banner.md create mode 100644 docs/code-reference/netutils/config/__init__.md create mode 100644 docs/code-reference/netutils/config/clean.md create mode 100644 docs/code-reference/netutils/config/compliance.md create mode 100644 docs/code-reference/netutils/config/conversion.md create mode 100644 docs/code-reference/netutils/config/parser.md create mode 100644 docs/code-reference/netutils/config/utils.md create mode 100644 docs/code-reference/netutils/constants.md create mode 100644 docs/code-reference/netutils/data_files/__init__.md create mode 100644 docs/code-reference/netutils/data_files/oui_mappings.md create mode 100644 docs/code-reference/netutils/data_files/protocol_mappings.md create mode 100644 docs/code-reference/netutils/data_files/protocol_number_mappings.md create mode 100644 docs/code-reference/netutils/dns.md create mode 100644 docs/code-reference/netutils/hash.md create mode 100644 docs/code-reference/netutils/interface.md create mode 100644 docs/code-reference/netutils/ip.md create mode 100644 docs/code-reference/netutils/lib_helpers.md create mode 100644 docs/code-reference/netutils/lib_mapper.md create mode 100644 docs/code-reference/netutils/mac.md create mode 100644 docs/code-reference/netutils/nist.md create mode 100644 docs/code-reference/netutils/os_version.md create mode 100644 docs/code-reference/netutils/password.md create mode 100644 docs/code-reference/netutils/ping.md create mode 100644 docs/code-reference/netutils/protocol_mapper.md create mode 100644 docs/code-reference/netutils/regex.md create mode 100644 docs/code-reference/netutils/route.md create mode 100644 docs/code-reference/netutils/running_config.md create mode 100644 docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md create mode 100644 docs/code-reference/netutils/time.md create mode 100644 docs/code-reference/netutils/utils.md create mode 100644 docs/code-reference/netutils/vlan.md diff --git a/docs/code-reference/netutils/__init__.md b/docs/code-reference/netutils/__init__.md new file mode 100644 index 00000000..23c1c4e9 --- /dev/null +++ b/docs/code-reference/netutils/__init__.md @@ -0,0 +1 @@ +::: netutils diff --git a/docs/code-reference/netutils/_private/version.md b/docs/code-reference/netutils/_private/version.md new file mode 100644 index 00000000..cb2aa6ff --- /dev/null +++ b/docs/code-reference/netutils/_private/version.md @@ -0,0 +1 @@ +::: netutils._private.version diff --git a/docs/code-reference/netutils/acl.md b/docs/code-reference/netutils/acl.md new file mode 100644 index 00000000..31d75b48 --- /dev/null +++ b/docs/code-reference/netutils/acl.md @@ -0,0 +1 @@ +::: netutils.acl diff --git a/docs/code-reference/netutils/asn.md b/docs/code-reference/netutils/asn.md new file mode 100644 index 00000000..0a651d99 --- /dev/null +++ b/docs/code-reference/netutils/asn.md @@ -0,0 +1 @@ +::: netutils.asn diff --git a/docs/code-reference/netutils/bandwidth.md b/docs/code-reference/netutils/bandwidth.md new file mode 100644 index 00000000..fbb12098 --- /dev/null +++ b/docs/code-reference/netutils/bandwidth.md @@ -0,0 +1 @@ +::: netutils.bandwidth diff --git a/docs/code-reference/netutils/banner.md b/docs/code-reference/netutils/banner.md new file mode 100644 index 00000000..2e471589 --- /dev/null +++ b/docs/code-reference/netutils/banner.md @@ -0,0 +1 @@ +::: netutils.banner diff --git a/docs/code-reference/netutils/config/__init__.md b/docs/code-reference/netutils/config/__init__.md new file mode 100644 index 00000000..43fe1ab6 --- /dev/null +++ b/docs/code-reference/netutils/config/__init__.md @@ -0,0 +1 @@ +::: netutils.config diff --git a/docs/code-reference/netutils/config/clean.md b/docs/code-reference/netutils/config/clean.md new file mode 100644 index 00000000..c0aae231 --- /dev/null +++ b/docs/code-reference/netutils/config/clean.md @@ -0,0 +1 @@ +::: netutils.config.clean diff --git a/docs/code-reference/netutils/config/compliance.md b/docs/code-reference/netutils/config/compliance.md new file mode 100644 index 00000000..b66957d2 --- /dev/null +++ b/docs/code-reference/netutils/config/compliance.md @@ -0,0 +1 @@ +::: netutils.config.compliance diff --git a/docs/code-reference/netutils/config/conversion.md b/docs/code-reference/netutils/config/conversion.md new file mode 100644 index 00000000..1ed59530 --- /dev/null +++ b/docs/code-reference/netutils/config/conversion.md @@ -0,0 +1 @@ +::: netutils.config.conversion diff --git a/docs/code-reference/netutils/config/parser.md b/docs/code-reference/netutils/config/parser.md new file mode 100644 index 00000000..47fe40b8 --- /dev/null +++ b/docs/code-reference/netutils/config/parser.md @@ -0,0 +1 @@ +::: netutils.config.parser diff --git a/docs/code-reference/netutils/config/utils.md b/docs/code-reference/netutils/config/utils.md new file mode 100644 index 00000000..71a82370 --- /dev/null +++ b/docs/code-reference/netutils/config/utils.md @@ -0,0 +1 @@ +::: netutils.config.utils diff --git a/docs/code-reference/netutils/constants.md b/docs/code-reference/netutils/constants.md new file mode 100644 index 00000000..52872616 --- /dev/null +++ b/docs/code-reference/netutils/constants.md @@ -0,0 +1 @@ +::: netutils.constants diff --git a/docs/code-reference/netutils/data_files/__init__.md b/docs/code-reference/netutils/data_files/__init__.md new file mode 100644 index 00000000..60bf78dd --- /dev/null +++ b/docs/code-reference/netutils/data_files/__init__.md @@ -0,0 +1 @@ +::: netutils.data_files diff --git a/docs/code-reference/netutils/data_files/oui_mappings.md b/docs/code-reference/netutils/data_files/oui_mappings.md new file mode 100644 index 00000000..fda558ec --- /dev/null +++ b/docs/code-reference/netutils/data_files/oui_mappings.md @@ -0,0 +1 @@ +::: netutils.data_files.oui_mappings diff --git a/docs/code-reference/netutils/data_files/protocol_mappings.md b/docs/code-reference/netutils/data_files/protocol_mappings.md new file mode 100644 index 00000000..9104f607 --- /dev/null +++ b/docs/code-reference/netutils/data_files/protocol_mappings.md @@ -0,0 +1 @@ +::: netutils.data_files.protocol_mappings diff --git a/docs/code-reference/netutils/data_files/protocol_number_mappings.md b/docs/code-reference/netutils/data_files/protocol_number_mappings.md new file mode 100644 index 00000000..1855c3ef --- /dev/null +++ b/docs/code-reference/netutils/data_files/protocol_number_mappings.md @@ -0,0 +1 @@ +::: netutils.data_files.protocol_number_mappings diff --git a/docs/code-reference/netutils/dns.md b/docs/code-reference/netutils/dns.md new file mode 100644 index 00000000..5eeb6fe6 --- /dev/null +++ b/docs/code-reference/netutils/dns.md @@ -0,0 +1 @@ +::: netutils.dns diff --git a/docs/code-reference/netutils/hash.md b/docs/code-reference/netutils/hash.md new file mode 100644 index 00000000..53725f56 --- /dev/null +++ b/docs/code-reference/netutils/hash.md @@ -0,0 +1 @@ +::: netutils.hash diff --git a/docs/code-reference/netutils/interface.md b/docs/code-reference/netutils/interface.md new file mode 100644 index 00000000..fe8e116a --- /dev/null +++ b/docs/code-reference/netutils/interface.md @@ -0,0 +1 @@ +::: netutils.interface diff --git a/docs/code-reference/netutils/ip.md b/docs/code-reference/netutils/ip.md new file mode 100644 index 00000000..e1d51c52 --- /dev/null +++ b/docs/code-reference/netutils/ip.md @@ -0,0 +1 @@ +::: netutils.ip diff --git a/docs/code-reference/netutils/lib_helpers.md b/docs/code-reference/netutils/lib_helpers.md new file mode 100644 index 00000000..b90be079 --- /dev/null +++ b/docs/code-reference/netutils/lib_helpers.md @@ -0,0 +1 @@ +::: netutils.lib_helpers diff --git a/docs/code-reference/netutils/lib_mapper.md b/docs/code-reference/netutils/lib_mapper.md new file mode 100644 index 00000000..4deb6286 --- /dev/null +++ b/docs/code-reference/netutils/lib_mapper.md @@ -0,0 +1 @@ +::: netutils.lib_mapper diff --git a/docs/code-reference/netutils/mac.md b/docs/code-reference/netutils/mac.md new file mode 100644 index 00000000..695fade1 --- /dev/null +++ b/docs/code-reference/netutils/mac.md @@ -0,0 +1 @@ +::: netutils.mac diff --git a/docs/code-reference/netutils/nist.md b/docs/code-reference/netutils/nist.md new file mode 100644 index 00000000..f84f9323 --- /dev/null +++ b/docs/code-reference/netutils/nist.md @@ -0,0 +1 @@ +::: netutils.nist diff --git a/docs/code-reference/netutils/os_version.md b/docs/code-reference/netutils/os_version.md new file mode 100644 index 00000000..113a3722 --- /dev/null +++ b/docs/code-reference/netutils/os_version.md @@ -0,0 +1 @@ +::: netutils.os_version diff --git a/docs/code-reference/netutils/password.md b/docs/code-reference/netutils/password.md new file mode 100644 index 00000000..eb1ae9c2 --- /dev/null +++ b/docs/code-reference/netutils/password.md @@ -0,0 +1 @@ +::: netutils.password diff --git a/docs/code-reference/netutils/ping.md b/docs/code-reference/netutils/ping.md new file mode 100644 index 00000000..505ac70d --- /dev/null +++ b/docs/code-reference/netutils/ping.md @@ -0,0 +1 @@ +::: netutils.ping diff --git a/docs/code-reference/netutils/protocol_mapper.md b/docs/code-reference/netutils/protocol_mapper.md new file mode 100644 index 00000000..44e07fd8 --- /dev/null +++ b/docs/code-reference/netutils/protocol_mapper.md @@ -0,0 +1 @@ +::: netutils.protocol_mapper diff --git a/docs/code-reference/netutils/regex.md b/docs/code-reference/netutils/regex.md new file mode 100644 index 00000000..06e3162e --- /dev/null +++ b/docs/code-reference/netutils/regex.md @@ -0,0 +1 @@ +::: netutils.regex diff --git a/docs/code-reference/netutils/route.md b/docs/code-reference/netutils/route.md new file mode 100644 index 00000000..000280a7 --- /dev/null +++ b/docs/code-reference/netutils/route.md @@ -0,0 +1 @@ +::: netutils.route diff --git a/docs/code-reference/netutils/running_config.md b/docs/code-reference/netutils/running_config.md new file mode 100644 index 00000000..64fbec42 --- /dev/null +++ b/docs/code-reference/netutils/running_config.md @@ -0,0 +1 @@ +::: netutils.running_config diff --git a/docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md b/docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md new file mode 100644 index 00000000..02bb15ac --- /dev/null +++ b/docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md @@ -0,0 +1 @@ +::: netutils.static.netutils.docs.generate_code_reference_pages diff --git a/docs/code-reference/netutils/time.md b/docs/code-reference/netutils/time.md new file mode 100644 index 00000000..7ea497e7 --- /dev/null +++ b/docs/code-reference/netutils/time.md @@ -0,0 +1 @@ +::: netutils.time diff --git a/docs/code-reference/netutils/utils.md b/docs/code-reference/netutils/utils.md new file mode 100644 index 00000000..8ff71539 --- /dev/null +++ b/docs/code-reference/netutils/utils.md @@ -0,0 +1 @@ +::: netutils.utils diff --git a/docs/code-reference/netutils/vlan.md b/docs/code-reference/netutils/vlan.md new file mode 100644 index 00000000..edb8b5d0 --- /dev/null +++ b/docs/code-reference/netutils/vlan.md @@ -0,0 +1 @@ +::: netutils.vlan diff --git a/pyproject.toml b/pyproject.toml index 13d6d467..c991de7d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,9 +23,7 @@ classifiers = [ include = [ "LICENSE", "README.md", - "netutils/protocols.json", - # Poetry by default will exclude files that are in .gitignore - { path = "netutils/static/netutils/docs/**/*", format = ["sdist", "wheel"] } + "netutils/protocols.json" ] packages = [ From 0731ef41fd13332499f3d0c34fcf8d0cd6c50fe9 Mon Sep 17 00:00:00 2001 From: Jeff Kala Date: Thu, 20 Aug 2026 14:52:38 -0600 Subject: [PATCH 09/10] revert a bunch of odd docs changes that were done --- docs/code-reference/netutils/__init__.md | 1 - .../netutils/_private/version.md | 1 - docs/code-reference/netutils/acl.md | 1 - docs/code-reference/netutils/asn.md | 1 - docs/code-reference/netutils/bandwidth.md | 1 - docs/code-reference/netutils/banner.md | 1 - .../netutils/config/__init__.md | 1 - docs/code-reference/netutils/config/clean.md | 1 - .../netutils/config/compliance.md | 1 - .../netutils/config/conversion.md | 1 - docs/code-reference/netutils/config/parser.md | 1 - docs/code-reference/netutils/config/utils.md | 1 - docs/code-reference/netutils/constants.md | 1 - .../netutils/data_files/__init__.md | 1 - .../netutils/data_files/oui_mappings.md | 1 - .../netutils/data_files/protocol_mappings.md | 1 - .../data_files/protocol_number_mappings.md | 1 - docs/code-reference/netutils/dns.md | 1 - docs/code-reference/netutils/hash.md | 1 - docs/code-reference/netutils/interface.md | 1 - docs/code-reference/netutils/ip.md | 1 - docs/code-reference/netutils/lib_helpers.md | 1 - docs/code-reference/netutils/lib_mapper.md | 1 - docs/code-reference/netutils/mac.md | 1 - docs/code-reference/netutils/nist.md | 1 - docs/code-reference/netutils/os_version.md | 1 - docs/code-reference/netutils/password.md | 1 - docs/code-reference/netutils/ping.md | 1 - .../netutils/protocol_mapper.md | 1 - docs/code-reference/netutils/regex.md | 1 - docs/code-reference/netutils/route.md | 1 - .../code-reference/netutils/running_config.md | 1 - .../docs/generate_code_reference_pages.md | 1 - docs/code-reference/netutils/time.md | 1 - docs/code-reference/netutils/utils.md | 1 - docs/code-reference/netutils/vlan.md | 1 - docs/dev/release_checklist.md | 6 +- docs/generate_code_reference_pages.py | 20 -- poetry.lock | 257 +++++------------- pyproject.toml | 23 +- 40 files changed, 87 insertions(+), 255 deletions(-) delete mode 100644 docs/code-reference/netutils/__init__.md delete mode 100644 docs/code-reference/netutils/_private/version.md delete mode 100644 docs/code-reference/netutils/acl.md delete mode 100644 docs/code-reference/netutils/asn.md delete mode 100644 docs/code-reference/netutils/bandwidth.md delete mode 100644 docs/code-reference/netutils/banner.md delete mode 100644 docs/code-reference/netutils/config/__init__.md delete mode 100644 docs/code-reference/netutils/config/clean.md delete mode 100644 docs/code-reference/netutils/config/compliance.md delete mode 100644 docs/code-reference/netutils/config/conversion.md delete mode 100644 docs/code-reference/netutils/config/parser.md delete mode 100644 docs/code-reference/netutils/config/utils.md delete mode 100644 docs/code-reference/netutils/constants.md delete mode 100644 docs/code-reference/netutils/data_files/__init__.md delete mode 100644 docs/code-reference/netutils/data_files/oui_mappings.md delete mode 100644 docs/code-reference/netutils/data_files/protocol_mappings.md delete mode 100644 docs/code-reference/netutils/data_files/protocol_number_mappings.md delete mode 100644 docs/code-reference/netutils/dns.md delete mode 100644 docs/code-reference/netutils/hash.md delete mode 100644 docs/code-reference/netutils/interface.md delete mode 100644 docs/code-reference/netutils/ip.md delete mode 100644 docs/code-reference/netutils/lib_helpers.md delete mode 100644 docs/code-reference/netutils/lib_mapper.md delete mode 100644 docs/code-reference/netutils/mac.md delete mode 100644 docs/code-reference/netutils/nist.md delete mode 100644 docs/code-reference/netutils/os_version.md delete mode 100644 docs/code-reference/netutils/password.md delete mode 100644 docs/code-reference/netutils/ping.md delete mode 100644 docs/code-reference/netutils/protocol_mapper.md delete mode 100644 docs/code-reference/netutils/regex.md delete mode 100644 docs/code-reference/netutils/route.md delete mode 100644 docs/code-reference/netutils/running_config.md delete mode 100644 docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md delete mode 100644 docs/code-reference/netutils/time.md delete mode 100644 docs/code-reference/netutils/utils.md delete mode 100644 docs/code-reference/netutils/vlan.md delete mode 100644 docs/generate_code_reference_pages.py diff --git a/docs/code-reference/netutils/__init__.md b/docs/code-reference/netutils/__init__.md deleted file mode 100644 index 23c1c4e9..00000000 --- a/docs/code-reference/netutils/__init__.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils diff --git a/docs/code-reference/netutils/_private/version.md b/docs/code-reference/netutils/_private/version.md deleted file mode 100644 index cb2aa6ff..00000000 --- a/docs/code-reference/netutils/_private/version.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils._private.version diff --git a/docs/code-reference/netutils/acl.md b/docs/code-reference/netutils/acl.md deleted file mode 100644 index 31d75b48..00000000 --- a/docs/code-reference/netutils/acl.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.acl diff --git a/docs/code-reference/netutils/asn.md b/docs/code-reference/netutils/asn.md deleted file mode 100644 index 0a651d99..00000000 --- a/docs/code-reference/netutils/asn.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.asn diff --git a/docs/code-reference/netutils/bandwidth.md b/docs/code-reference/netutils/bandwidth.md deleted file mode 100644 index fbb12098..00000000 --- a/docs/code-reference/netutils/bandwidth.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.bandwidth diff --git a/docs/code-reference/netutils/banner.md b/docs/code-reference/netutils/banner.md deleted file mode 100644 index 2e471589..00000000 --- a/docs/code-reference/netutils/banner.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.banner diff --git a/docs/code-reference/netutils/config/__init__.md b/docs/code-reference/netutils/config/__init__.md deleted file mode 100644 index 43fe1ab6..00000000 --- a/docs/code-reference/netutils/config/__init__.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.config diff --git a/docs/code-reference/netutils/config/clean.md b/docs/code-reference/netutils/config/clean.md deleted file mode 100644 index c0aae231..00000000 --- a/docs/code-reference/netutils/config/clean.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.config.clean diff --git a/docs/code-reference/netutils/config/compliance.md b/docs/code-reference/netutils/config/compliance.md deleted file mode 100644 index b66957d2..00000000 --- a/docs/code-reference/netutils/config/compliance.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.config.compliance diff --git a/docs/code-reference/netutils/config/conversion.md b/docs/code-reference/netutils/config/conversion.md deleted file mode 100644 index 1ed59530..00000000 --- a/docs/code-reference/netutils/config/conversion.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.config.conversion diff --git a/docs/code-reference/netutils/config/parser.md b/docs/code-reference/netutils/config/parser.md deleted file mode 100644 index 47fe40b8..00000000 --- a/docs/code-reference/netutils/config/parser.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.config.parser diff --git a/docs/code-reference/netutils/config/utils.md b/docs/code-reference/netutils/config/utils.md deleted file mode 100644 index 71a82370..00000000 --- a/docs/code-reference/netutils/config/utils.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.config.utils diff --git a/docs/code-reference/netutils/constants.md b/docs/code-reference/netutils/constants.md deleted file mode 100644 index 52872616..00000000 --- a/docs/code-reference/netutils/constants.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.constants diff --git a/docs/code-reference/netutils/data_files/__init__.md b/docs/code-reference/netutils/data_files/__init__.md deleted file mode 100644 index 60bf78dd..00000000 --- a/docs/code-reference/netutils/data_files/__init__.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.data_files diff --git a/docs/code-reference/netutils/data_files/oui_mappings.md b/docs/code-reference/netutils/data_files/oui_mappings.md deleted file mode 100644 index fda558ec..00000000 --- a/docs/code-reference/netutils/data_files/oui_mappings.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.data_files.oui_mappings diff --git a/docs/code-reference/netutils/data_files/protocol_mappings.md b/docs/code-reference/netutils/data_files/protocol_mappings.md deleted file mode 100644 index 9104f607..00000000 --- a/docs/code-reference/netutils/data_files/protocol_mappings.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.data_files.protocol_mappings diff --git a/docs/code-reference/netutils/data_files/protocol_number_mappings.md b/docs/code-reference/netutils/data_files/protocol_number_mappings.md deleted file mode 100644 index 1855c3ef..00000000 --- a/docs/code-reference/netutils/data_files/protocol_number_mappings.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.data_files.protocol_number_mappings diff --git a/docs/code-reference/netutils/dns.md b/docs/code-reference/netutils/dns.md deleted file mode 100644 index 5eeb6fe6..00000000 --- a/docs/code-reference/netutils/dns.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.dns diff --git a/docs/code-reference/netutils/hash.md b/docs/code-reference/netutils/hash.md deleted file mode 100644 index 53725f56..00000000 --- a/docs/code-reference/netutils/hash.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.hash diff --git a/docs/code-reference/netutils/interface.md b/docs/code-reference/netutils/interface.md deleted file mode 100644 index fe8e116a..00000000 --- a/docs/code-reference/netutils/interface.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.interface diff --git a/docs/code-reference/netutils/ip.md b/docs/code-reference/netutils/ip.md deleted file mode 100644 index e1d51c52..00000000 --- a/docs/code-reference/netutils/ip.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.ip diff --git a/docs/code-reference/netutils/lib_helpers.md b/docs/code-reference/netutils/lib_helpers.md deleted file mode 100644 index b90be079..00000000 --- a/docs/code-reference/netutils/lib_helpers.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.lib_helpers diff --git a/docs/code-reference/netutils/lib_mapper.md b/docs/code-reference/netutils/lib_mapper.md deleted file mode 100644 index 4deb6286..00000000 --- a/docs/code-reference/netutils/lib_mapper.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.lib_mapper diff --git a/docs/code-reference/netutils/mac.md b/docs/code-reference/netutils/mac.md deleted file mode 100644 index 695fade1..00000000 --- a/docs/code-reference/netutils/mac.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.mac diff --git a/docs/code-reference/netutils/nist.md b/docs/code-reference/netutils/nist.md deleted file mode 100644 index f84f9323..00000000 --- a/docs/code-reference/netutils/nist.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.nist diff --git a/docs/code-reference/netutils/os_version.md b/docs/code-reference/netutils/os_version.md deleted file mode 100644 index 113a3722..00000000 --- a/docs/code-reference/netutils/os_version.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.os_version diff --git a/docs/code-reference/netutils/password.md b/docs/code-reference/netutils/password.md deleted file mode 100644 index eb1ae9c2..00000000 --- a/docs/code-reference/netutils/password.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.password diff --git a/docs/code-reference/netutils/ping.md b/docs/code-reference/netutils/ping.md deleted file mode 100644 index 505ac70d..00000000 --- a/docs/code-reference/netutils/ping.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.ping diff --git a/docs/code-reference/netutils/protocol_mapper.md b/docs/code-reference/netutils/protocol_mapper.md deleted file mode 100644 index 44e07fd8..00000000 --- a/docs/code-reference/netutils/protocol_mapper.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.protocol_mapper diff --git a/docs/code-reference/netutils/regex.md b/docs/code-reference/netutils/regex.md deleted file mode 100644 index 06e3162e..00000000 --- a/docs/code-reference/netutils/regex.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.regex diff --git a/docs/code-reference/netutils/route.md b/docs/code-reference/netutils/route.md deleted file mode 100644 index 000280a7..00000000 --- a/docs/code-reference/netutils/route.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.route diff --git a/docs/code-reference/netutils/running_config.md b/docs/code-reference/netutils/running_config.md deleted file mode 100644 index 64fbec42..00000000 --- a/docs/code-reference/netutils/running_config.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.running_config diff --git a/docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md b/docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md deleted file mode 100644 index 02bb15ac..00000000 --- a/docs/code-reference/netutils/static/netutils/docs/generate_code_reference_pages.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.static.netutils.docs.generate_code_reference_pages diff --git a/docs/code-reference/netutils/time.md b/docs/code-reference/netutils/time.md deleted file mode 100644 index 7ea497e7..00000000 --- a/docs/code-reference/netutils/time.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.time diff --git a/docs/code-reference/netutils/utils.md b/docs/code-reference/netutils/utils.md deleted file mode 100644 index 8ff71539..00000000 --- a/docs/code-reference/netutils/utils.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.utils diff --git a/docs/code-reference/netutils/vlan.md b/docs/code-reference/netutils/vlan.md deleted file mode 100644 index edb8b5d0..00000000 --- a/docs/code-reference/netutils/vlan.md +++ /dev/null @@ -1 +0,0 @@ -::: netutils.vlan diff --git a/docs/dev/release_checklist.md b/docs/dev/release_checklist.md index 3fd49b9e..84277f75 100644 --- a/docs/dev/release_checklist.md +++ b/docs/dev/release_checklist.md @@ -12,8 +12,8 @@ This document is intended for library maintainers and outlines the steps to perf Choose your own adventure: -- Patch release from `develop`? Jump [here](#all-release-branches-branch-off-of-develop). -- Minor release? Continue with [Minor Version Bumps](#minor-version-bumps) and then [All Releases from `develop`](#all-release-branches-branch-off-of-develop). +- Patch release from `develop`? Jump [here](#all-releases-from-develop). +- Minor release? Continue with [Minor Version Bumps](#minor-version-bumps) and then [All Releases from `develop`](#all-releases-from-develop). ## Minor Version Bumps @@ -45,7 +45,7 @@ The goal of this step is to walk through the entire install process *as document --- -## All `release` branches branch off of `develop` +## All Releases from `develop` ### Verify CI Build Status diff --git a/docs/generate_code_reference_pages.py b/docs/generate_code_reference_pages.py deleted file mode 100644 index 59d81288..00000000 --- a/docs/generate_code_reference_pages.py +++ /dev/null @@ -1,20 +0,0 @@ -"""Generate code reference pages.""" - -from pathlib import Path - -import mkdocs_gen_files - -for file_path in Path("netutils").rglob("*.py"): - module_path = file_path.with_suffix("") - doc_path = file_path.with_suffix(".md") - full_doc_path = Path("code-reference", doc_path) - - parts = list(module_path.parts) - if parts[-1] == "__init__": - parts = parts[:-1] - - with mkdocs_gen_files.open(full_doc_path, "w") as fd: - identifier = ".".join(parts) - print(f"::: {identifier}", file=fd) - - mkdocs_gen_files.set_edit_path(full_doc_path, file_path) diff --git a/poetry.lock b/poetry.lock index 2b2db648..d8452e06 100644 --- a/poetry.lock +++ b/poetry.lock @@ -699,19 +699,19 @@ python-dateutil = ">=2.8.1" dev = ["flake8", "markdown", "twine", "wheel"] [[package]] -name = "griffelib" -version = "2.2.0" +name = "griffe" +version = "1.1.1" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." optional = false -python-versions = ">=3.10" +python-versions = ">=3.8" groups = ["docs"] files = [ - {file = "griffelib-2.2.0-py3-none-any.whl", hash = "sha256:d71c3bc2bbed9f958488634fe788b843a9f705d6d2838ca32cd6c25eeb64dfc4"}, - {file = "griffelib-2.2.0.tar.gz", hash = "sha256:e1bc36fe9cd21d4b6b659b456346755e4cfdc5676c0a5214083126ee12612b3c"}, + {file = "griffe-1.1.1-py3-none-any.whl", hash = "sha256:0c469411e8d671a545725f5c0851a746da8bd99d354a79fdc4abd45219252efb"}, + {file = "griffe-1.1.1.tar.gz", hash = "sha256:faeb78764c0b2bd010719d6e015d07709b0f260258b5d4dd6c88343d9702aa30"}, ] -[package.extras] -pypi = ["pip (>=24.0)", "platformdirs (>=4.2)", "wheel (>=0.42)"] +[package.dependencies] +colorama = ">=0.4" [[package]] name = "hjson" @@ -1374,14 +1374,14 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4) ; platform [[package]] name = "mkdocs-autorefs" -version = "1.4.4" +version = "1.2.0" description = "Automatically link across pages in MkDocs." optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" groups = ["docs"] files = [ - {file = "mkdocs_autorefs-1.4.4-py3-none-any.whl", hash = "sha256:834ef5408d827071ad1bc69e0f39704fa34c7fc05bc8e1c72b227dfdc5c76089"}, - {file = "mkdocs_autorefs-1.4.4.tar.gz", hash = "sha256:d54a284f27a7346b9c38f1f852177940c222da508e66edc816a0fa55fc6da197"}, + {file = "mkdocs_autorefs-1.2.0-py3-none-any.whl", hash = "sha256:d588754ae89bd0ced0c70c06f58566a4ee43471eeeee5202427da7de9ef85a2f"}, + {file = "mkdocs_autorefs-1.2.0.tar.gz", hash = "sha256:a86b93abff653521bda71cf3fc5596342b7a23982093915cb74273f67522190f"}, ] [package.dependencies] @@ -1391,19 +1391,18 @@ mkdocs = ">=1.1" [[package]] name = "mkdocs-gen-files" -version = "0.6.1" +version = "0.5.0" description = "MkDocs plugin to programmatically generate documentation pages during the build" optional = false -python-versions = ">=3.9" +python-versions = ">=3.7" groups = ["docs"] files = [ - {file = "mkdocs_gen_files-0.6.1-py3-none-any.whl", hash = "sha256:b3182bfc6219e35b8d26658cb988368659d5d023aac30c2a819247558fc12189"}, - {file = "mkdocs_gen_files-0.6.1.tar.gz", hash = "sha256:57d7ff2229e23d077e46d14a33db6d37c8823f6ce1a503c874c1764a71679763"}, + {file = "mkdocs_gen_files-0.5.0-py3-none-any.whl", hash = "sha256:7ac060096f3f40bd19039e7277dd3050be9a453c8ac578645844d4d91d7978ea"}, + {file = "mkdocs_gen_files-0.5.0.tar.gz", hash = "sha256:4c7cf256b5d67062a788f6b1d035e157fc1a9498c2399be9af5257d4ff4d19bc"}, ] [package.dependencies] -mkdocs = ">=1.4.1,<=1.6.1" -properdocs = ">=1.6.5" +mkdocs = ">=1.0.3" [[package]] name = "mkdocs-get-deps" @@ -1424,29 +1423,26 @@ pyyaml = ">=5.1" [[package]] name = "mkdocs-glightbox" -version = "0.5.2" +version = "0.4.0" description = "MkDocs plugin supports image lightbox with GLightbox." optional = false -python-versions = ">=3.8" +python-versions = "*" groups = ["docs"] files = [ - {file = "mkdocs_glightbox-0.5.2-py3-none-any.whl", hash = "sha256:23a431ea802b60b1030c73323db2eed6ba859df1a0822ce575afa43e0ea3f47e"}, - {file = "mkdocs_glightbox-0.5.2.tar.gz", hash = "sha256:c7622799347c32310878e01ccf14f70648445561010911c80590cec0353370ac"}, + {file = "mkdocs-glightbox-0.4.0.tar.gz", hash = "sha256:392b34207bf95991071a16d5f8916d1d2f2cd5d5bb59ae2997485ccd778c70d9"}, + {file = "mkdocs_glightbox-0.4.0-py3-none-any.whl", hash = "sha256:e0107beee75d3eb7380ac06ea2d6eac94c999eaa49f8c3cbab0e7be2ac006ccf"}, ] -[package.dependencies] -selectolax = ">=0.3.29" - [[package]] name = "mkdocs-macros-plugin" -version = "1.5.0" +version = "1.3.7" description = "Unleash the power of MkDocs with macros and variables" optional = false python-versions = ">=3.8" groups = ["docs"] files = [ - {file = "mkdocs_macros_plugin-1.5.0-py3-none-any.whl", hash = "sha256:c10fabd812bf50f9170609d0ed518e54f1f0e12c334ac29141723a83c881dd6f"}, - {file = "mkdocs_macros_plugin-1.5.0.tar.gz", hash = "sha256:12aa45ce7ecb7a445c66b9f649f3dd05e9b92e8af6bc65e4acd91d26f878c01f"}, + {file = "mkdocs_macros_plugin-1.3.7-py3-none-any.whl", hash = "sha256:02432033a5b77fb247d6ec7924e72fc4ceec264165b1644ab8d0dc159c22ce59"}, + {file = "mkdocs_macros_plugin-1.3.7.tar.gz", hash = "sha256:17c7fd1a49b94defcdb502fd453d17a1e730f8836523379d21292eb2be4cb523"}, ] [package.dependencies] @@ -1457,43 +1453,41 @@ packaging = "*" pathspec = "*" python-dateutil = "*" pyyaml = "*" -requests = "*" -super-collections = ">=0.6.2" +super-collections = "*" termcolor = "*" [package.extras] -doc = ["mkdocs-mermaid2-plugin"] -test = ["mkdocs-d2-plugin", "mkdocs-include-markdown-plugin", "mkdocs-macros-test", "mkdocs-material (>=6.2)", "mkdocs-test (>=0.6.0)", "pytest"] +test = ["mkdocs-d2-plugin", "mkdocs-include-markdown-plugin", "mkdocs-macros-test", "mkdocs-material (>=6.2)", "mkdocs-test"] [[package]] name = "mkdocs-material" -version = "9.7.7" +version = "9.6.15" description = "Documentation that simply works" optional = false python-versions = ">=3.8" groups = ["docs"] files = [ - {file = "mkdocs_material-9.7.7-py3-none-any.whl", hash = "sha256:8ea9bb1737a5b524a5f9dcf2e1b4ebda8274ae3008aa7845720a97083bef708f"}, - {file = "mkdocs_material-9.7.7.tar.gz", hash = "sha256:c0649c065b1b0512d60aad8c10f947f8e455284475239b364b610f2deb4d0855"}, + {file = "mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a"}, + {file = "mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5"}, ] [package.dependencies] -babel = ">=2.10" -backrefs = ">=5.7.post1" -colorama = ">=0.4" -jinja2 = ">=3.1" -markdown = ">=3.2" -mkdocs = ">=1.6,<2" -mkdocs-material-extensions = ">=1.3" -paginate = ">=0.5" -pygments = ">=2.16" -pymdown-extensions = ">=10.2" -requests = ">=2.30" +babel = ">=2.10,<3.0" +backrefs = ">=5.7.post1,<6.0" +colorama = ">=0.4,<1.0" +jinja2 = ">=3.1,<4.0" +markdown = ">=3.2,<4.0" +mkdocs = ">=1.6,<2.0" +mkdocs-material-extensions = ">=1.3,<2.0" +paginate = ">=0.5,<1.0" +pygments = ">=2.16,<3.0" +pymdown-extensions = ">=10.2,<11.0" +requests = ">=2.26,<3.0" [package.extras] -git = ["mkdocs-git-committers-plugin-2 (>=1.1)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4)"] -imaging = ["cairosvg (>=2.6)", "pillow (>=10.2)"] -recommended = ["mkdocs-minify-plugin (>=0.7)", "mkdocs-redirects (>=1.2)", "mkdocs-rss-plugin (>=1.6)"] +git = ["mkdocs-git-committers-plugin-2 (>=1.1,<3)", "mkdocs-git-revision-date-localized-plugin (>=1.2.4,<2.0)"] +imaging = ["cairosvg (>=2.6,<3.0)", "pillow (>=10.2,<11.0)"] +recommended = ["mkdocs-minify-plugin (>=0.7,<1.0)", "mkdocs-redirects (>=1.2,<2.0)", "mkdocs-rss-plugin (>=1.6,<2.0)"] [[package]] name = "mkdocs-material-extensions" @@ -1525,78 +1519,77 @@ pymdown-extensions = ">=6.3" [[package]] name = "mkdocs-redirects" -version = "1.2.3" +version = "1.2.2" description = "A MkDocs plugin for dynamic page redirects to prevent broken links" optional = false -python-versions = ">=3.10" +python-versions = ">=3.8" groups = ["docs"] files = [ - {file = "mkdocs_redirects-1.2.3-py3-none-any.whl", hash = "sha256:ec7312fff462d03ec16395d0c001006a418f8d0c21cdf2b47ff11cf839dc3ce0"}, - {file = "mkdocs_redirects-1.2.3.tar.gz", hash = "sha256:5e980330999299729a2d6a125347d1af78023d68a23681a4de3053ce7dfe2e51"}, + {file = "mkdocs_redirects-1.2.2-py3-none-any.whl", hash = "sha256:7dbfa5647b79a3589da4401403d69494bd1f4ad03b9c15136720367e1f340ed5"}, + {file = "mkdocs_redirects-1.2.2.tar.gz", hash = "sha256:3094981b42ffab29313c2c1b8ac3969861109f58b2dd58c45fc81cd44bfa0095"}, ] [package.dependencies] -mkdocs = ">=1.2,<=1.6.1" -properdocs = ">=1.6.5" +mkdocs = ">=1.1.1" [[package]] name = "mkdocs-section-index" -version = "0.3.12" +version = "0.3.10" description = "MkDocs plugin to allow clickable sections that lead to an index page" optional = false -python-versions = ">=3.10" +python-versions = ">=3.9" groups = ["docs"] files = [ - {file = "mkdocs_section_index-0.3.12-py3-none-any.whl", hash = "sha256:a1100039546beb4ebef63ce6fc91f3195fb9c0c3763105d4d3d7cd31e0a046eb"}, - {file = "mkdocs_section_index-0.3.12.tar.gz", hash = "sha256:285635bf86c643b0fc7a343053d7a818049817bff4408f52b80c4367bd5e7268"}, + {file = "mkdocs_section_index-0.3.10-py3-none-any.whl", hash = "sha256:bc27c0d0dc497c0ebaee1fc72839362aed77be7318b5ec0c30628f65918e4776"}, + {file = "mkdocs_section_index-0.3.10.tar.gz", hash = "sha256:a82afbda633c82c5568f0e3b008176b9b365bf4bd8b6f919d6eff09ee146b9f8"}, ] [package.dependencies] -mkdocs = ">=1.2,<=1.6.1" -properdocs = ">=1.6.5" +mkdocs = ">=1.2" [[package]] name = "mkdocstrings" -version = "1.0.6" +version = "0.27.0" description = "Automatic documentation from sources, for MkDocs." optional = false -python-versions = ">=3.10" +python-versions = ">=3.9" groups = ["docs"] files = [ - {file = "mkdocstrings-1.0.6-py3-none-any.whl", hash = "sha256:2703708697487d1b6d6d7b412e176fa436edf120c1bf81dc9e126b12d00893c7"}, - {file = "mkdocstrings-1.0.6.tar.gz", hash = "sha256:a0b8c2bdd29a6416c80d717aa369bbf7831946bd9f23c2a66db1b1dbe7693dbd"}, + {file = "mkdocstrings-0.27.0-py3-none-any.whl", hash = "sha256:6ceaa7ea830770959b55a16203ac63da24badd71325b96af950e59fd37366332"}, + {file = "mkdocstrings-0.27.0.tar.gz", hash = "sha256:16adca6d6b0a1f9e0c07ff0b02ced8e16f228a9d65a37c063ec4c14d7b76a657"}, ] [package.dependencies] -Jinja2 = ">=3.1" +click = ">=7.0" +Jinja2 = ">=2.11.1" Markdown = ">=3.6" MarkupSafe = ">=1.1" -mkdocs = ">=1.6" -mkdocs-autorefs = ">=1.4" +mkdocs = ">=1.4" +mkdocs-autorefs = ">=1.2" +platformdirs = ">=2.2" pymdown-extensions = ">=6.3" [package.extras] crystal = ["mkdocstrings-crystal (>=0.3.4)"] -python = ["mkdocstrings-python (>=1.16.2)"] +python = ["mkdocstrings-python (>=0.5.2)"] python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] [[package]] name = "mkdocstrings-python" -version = "2.0.7" +version = "1.13.0" description = "A Python handler for mkdocstrings." optional = false -python-versions = ">=3.10" +python-versions = ">=3.9" groups = ["docs"] files = [ - {file = "mkdocstrings_python-2.0.7-py3-none-any.whl", hash = "sha256:1fce5fbfe4ffa6e8136a35351cdc97c3bf55219c7efbd3f92a82260f93235d60"}, - {file = "mkdocstrings_python-2.0.7.tar.gz", hash = "sha256:8c49faf66d243072d7590a1b5dea028d9d7425fac191f54f096123a4a9c1a783"}, + {file = "mkdocstrings_python-1.13.0-py3-none-any.whl", hash = "sha256:b88bbb207bab4086434743849f8e796788b373bd32e7bfefbf8560ac45d88f97"}, + {file = "mkdocstrings_python-1.13.0.tar.gz", hash = "sha256:2dbd5757e8375b9720e81db16f52f1856bf59905428fd7ef88005d1370e2f64c"}, ] [package.dependencies] -griffelib = ">=2.0" -mkdocs-autorefs = ">=1.4" -mkdocstrings = ">=0.30" -typing-extensions = {version = ">=4.0", markers = "python_version < \"3.11\""} +griffe = ">=0.49" +mkdocs-autorefs = ">=1.2" +mkdocstrings = ">=0.26" [[package]] name = "mock" @@ -1930,35 +1923,6 @@ files = [ dev = ["pre-commit", "tox"] testing = ["coverage", "pytest", "pytest-benchmark"] -[[package]] -name = "properdocs" -version = "1.6.7" -description = "Project documentation with Markdown." -optional = false -python-versions = ">=3.9" -groups = ["docs"] -files = [ - {file = "properdocs-1.6.7-py3-none-any.whl", hash = "sha256:6fa0cfa2e01bf338f684892c8a506cf70ea88ae7f3479c933b6fa20168101cbd"}, - {file = "properdocs-1.6.7.tar.gz", hash = "sha256:adc7b16e562890af0e098a7e5b02e3a81c20894a87d6a28d345c9300de73c26e"}, -] - -[package.dependencies] -click = ">=7.0" -colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} -ghp-import = ">=1.0" -jinja2 = ">=2.11.1" -markdown = ">=3.3.6" -markupsafe = ">=2.0.1" -packaging = ">=20.5" -pathspec = ">=0.11.1" -platformdirs = ">=2.2.0" -pyyaml = ">=5.1" -pyyaml-env-tag = ">=0.1" -watchdog = ">=2.0" - -[package.extras] -i18n = ["babel (>=2.9.0)"] - [[package]] name = "pycparser" version = "3.0" @@ -2802,83 +2766,6 @@ files = [ [package.dependencies] paramiko = "*" -[[package]] -name = "selectolax" -version = "0.4.11" -description = "A fast HTML5 parser with CSS selectors, written in Cython, using Modest and Lexbor engines." -optional = false -python-versions = "<3.15,>=3.9" -groups = ["docs"] -files = [ - {file = "selectolax-0.4.11-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3066be35f630e4c4a00cf2c829548574fcba5963735411e6a9ac78bd4ca830ce"}, - {file = "selectolax-0.4.11-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:57e71c021d9950113e7d49892eba56014c072c9d86b71c0b3b7cb846ee913e20"}, - {file = "selectolax-0.4.11-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dbee8998d426c1b6b78aab7a051009f9de38d77b93d073025ae19f7d71b3ead3"}, - {file = "selectolax-0.4.11-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:75eeddbd3db7e82293a325c210cf4d218d25961870dbb468383c7516e3f577aa"}, - {file = "selectolax-0.4.11-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:991866e2f45ce85e3ce7a31714e522f620d83b1eca15fe530055108a94e6087e"}, - {file = "selectolax-0.4.11-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:dc8d449adfdef675bcbfc67d5548513271c7ea869e9b71a2e898138bf34a976a"}, - {file = "selectolax-0.4.11-cp310-cp310-win32.whl", hash = "sha256:3abf5aecfd0c314b62c10ce6e9baee2094cb385e2ec154bd1743febd2fcc9bdb"}, - {file = "selectolax-0.4.11-cp310-cp310-win_amd64.whl", hash = "sha256:21359cf4d1261b314895c07321e76aa2334b1967956efba04cc0d223d7817f48"}, - {file = "selectolax-0.4.11-cp310-cp310-win_arm64.whl", hash = "sha256:96de39e2f28c359cf930547193b2cacf0ab6b9187309e2515461fff9d5a5aa3c"}, - {file = "selectolax-0.4.11-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:80af1c7345701934769679a83fcc86526c56eef590423cc2d55cc1eb81adfa5f"}, - {file = "selectolax-0.4.11-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a532f1993f08f627300891751982dd9641ce1bd29618b535232aec9fa023a1c8"}, - {file = "selectolax-0.4.11-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8166bb8cad8f2eabed664f689b708851078b74dd50dd93e426b291095badc2cb"}, - {file = "selectolax-0.4.11-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ad4bbf08af4e2c89f78dd12a7b8265f0924d0434705bd955b5a262297a924452"}, - {file = "selectolax-0.4.11-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:81f21972788df01b83a5940d9b7d62e6e222f80872c2cfaf67927276e8ef4975"}, - {file = "selectolax-0.4.11-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9862c1d0435e89e419e0c595084eaa8f6f71c3fb7a968bdff51db595cec07161"}, - {file = "selectolax-0.4.11-cp311-cp311-win32.whl", hash = "sha256:e2d7e1a2b67a5e8d251733b2c3f978ed26a56d04552472e0a2fb5ea41fa4e663"}, - {file = "selectolax-0.4.11-cp311-cp311-win_amd64.whl", hash = "sha256:8da39a07a589fd181b5e8d25f695d7d40d3a1d89e47c2e00c08ece7fff5ddd3d"}, - {file = "selectolax-0.4.11-cp311-cp311-win_arm64.whl", hash = "sha256:dcd24bfc4899e4df2bdcbabc973384367686f391e5a2d8ebb229c043f43be82a"}, - {file = "selectolax-0.4.11-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:25d633cddca0fc769e7d890e9e838908fb4a7326eec5e3b23ae42c27f457541d"}, - {file = "selectolax-0.4.11-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:634db1b7ae1b1f10ee0b0adbef0eee1aec65a3d01f09b75132bc5b043b7623d1"}, - {file = "selectolax-0.4.11-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:168b34466dc4f998d7ceb04f218693546d141543e7c5d327f9e006c0799cd62c"}, - {file = "selectolax-0.4.11-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4c3d4fd42deabfd03cc5c4fce9517e7226054f9de3984759476e6c4a7b7fe187"}, - {file = "selectolax-0.4.11-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8f0223a83051ece2591a1d0cf487f1d0719cb76660d7c5de4c0a201b761c5c23"}, - {file = "selectolax-0.4.11-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dff45ee85409e6126e4900e0db6950a59a7b58b7ff9d667a6a275b0405b87692"}, - {file = "selectolax-0.4.11-cp312-cp312-win32.whl", hash = "sha256:f69c377298a09f571c89af5916ac85f69a9aaedd7312b0bb803a46d2ca2f9048"}, - {file = "selectolax-0.4.11-cp312-cp312-win_amd64.whl", hash = "sha256:48545b0351b6f92c4ad2fff835e832768d0cb37834766a82f40242e51fc9901d"}, - {file = "selectolax-0.4.11-cp312-cp312-win_arm64.whl", hash = "sha256:daf7a841d1baa795f940200bec45019c4a31020def16e3a4e35485e82ed64167"}, - {file = "selectolax-0.4.11-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5153157ed60d968ed303acbfd2c8762fa0c0462e2663bd04466471c565deb88a"}, - {file = "selectolax-0.4.11-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:386494779e5464e587ed4dc076e1c48c24ebaf2da1e3a249690551d1f97fe8ed"}, - {file = "selectolax-0.4.11-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:47be0e591125484de14ff0c9aaaa814dd4a4019de35eabe360e88169a263a2b5"}, - {file = "selectolax-0.4.11-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f8f014f328f6f79a364293bca54d43af1cec776dc10a5302054a54b5fb2d8675"}, - {file = "selectolax-0.4.11-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c3f6fac361b5f415c409dfd1a07dd0e9a5899d10daba8d88ce16bd552b0e06f2"}, - {file = "selectolax-0.4.11-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f8121f4cbfe870d9ad24ae418a735d918d55844e905c3270077e97f4e579770f"}, - {file = "selectolax-0.4.11-cp313-cp313-win32.whl", hash = "sha256:bde121202b33e6041e9d2db1d62e7466b5883fd1c441eb96ff68d3ea015cfcbd"}, - {file = "selectolax-0.4.11-cp313-cp313-win_amd64.whl", hash = "sha256:5c7a91fbe1a94849d85228897c416ab9b4518bea6b04dce8ef8acd825ec80e9d"}, - {file = "selectolax-0.4.11-cp313-cp313-win_arm64.whl", hash = "sha256:597b8e065978be200c598ae6d682496d96fbce14d34b5d519e93cf5b6be5fb60"}, - {file = "selectolax-0.4.11-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:663ff792f92ed749cfcf452ac19aff5da74b05521e7daacb3b74388deb14d117"}, - {file = "selectolax-0.4.11-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d5ce592a92fceeca2694b369a83ad72891a9c356f668718fe7e1c83eea407bb4"}, - {file = "selectolax-0.4.11-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0f56c49161b18621ac452e42e02b0c5c61ba4c21095cfff3990e040bd9a043c"}, - {file = "selectolax-0.4.11-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:224682039ca13eb822be626e49a03592ee2b8557bcdc6381e49417a995170c94"}, - {file = "selectolax-0.4.11-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:bd843540a197a33049a08fd80e59bfeafbaa688e632d53a05a9b65af5e88296f"}, - {file = "selectolax-0.4.11-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2b842c829f916fecb51f0f55882eca3e2ad49e85388178f14ae6fe0912be0a57"}, - {file = "selectolax-0.4.11-cp314-cp314-win32.whl", hash = "sha256:d33e2ed75cc33e7af3fd50521c33e7d8634fae23bc197a6cee6a5015e056eef6"}, - {file = "selectolax-0.4.11-cp314-cp314-win_amd64.whl", hash = "sha256:e5929cbe3eedfaf51a09ec89642ab5355b703486d43bcf3c8f0c27d6043a488d"}, - {file = "selectolax-0.4.11-cp314-cp314-win_arm64.whl", hash = "sha256:466daca0599408c9d2cad7658a68490facc5c9b8d0f41ac5d17948914f57306f"}, - {file = "selectolax-0.4.11-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:086ca6f7e4c475bfff871ec1448ae5d342d43d6a2ca2cea65160d01b3a6a75ec"}, - {file = "selectolax-0.4.11-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b530a2c4fad7400af27b2b7e0333c1318ecb5f5dc38e8a141dbe3bd81b398fdf"}, - {file = "selectolax-0.4.11-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3637d21f7fe60fbd6ca3dbc67a1747f6a55a9389114d72f06b5d69ba2beddf01"}, - {file = "selectolax-0.4.11-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fad5b1065f73eeaa07ea343cbc548aaa9f9a5c359c3bdd8d98f5d80b61550d1c"}, - {file = "selectolax-0.4.11-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1da54e42ab99b9191269306e13c0fd67ada1c6654e8dc8d74fac615931dd3c62"}, - {file = "selectolax-0.4.11-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:28915b8fa90c1c3cb585858a6d24d433a3f38ea514aea59013bdb0930d9f6025"}, - {file = "selectolax-0.4.11-cp314-cp314t-win32.whl", hash = "sha256:1a6deb4464198ac67f32e56c4463aedf3e1d834b458eaac5b5b5b1ef02dcf15e"}, - {file = "selectolax-0.4.11-cp314-cp314t-win_amd64.whl", hash = "sha256:41f388c26304c1d840f5ee5e07c06bb9388ec834d10fec60dc148f22f98efd38"}, - {file = "selectolax-0.4.11-cp314-cp314t-win_arm64.whl", hash = "sha256:9077fa36e99ef4bb801194ff8f492f67279c0562e7cdfa9b4d06f5c010131969"}, - {file = "selectolax-0.4.11-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:36183968e5c122da414db0dd7d22d4a6ca808e9b9e4837532dfbe55df6f26bff"}, - {file = "selectolax-0.4.11-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:83515cc0fe9b8c4a1ca8bfcd83cf48408bcdd3f2fccd088f04635619e93695c9"}, - {file = "selectolax-0.4.11-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d00753a5f832625f69b585dda7a7ddc1a7d2803c31aa8710c5d209fca064d774"}, - {file = "selectolax-0.4.11-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8ff49b24d4e5c81bcc96b25e2cf23d9af2d06e4d473865c812487be6665416c0"}, - {file = "selectolax-0.4.11-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5ff73122f5fee3350528235349f1b9e5626a1a0ef1887fef82d7fddac18f6605"}, - {file = "selectolax-0.4.11-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:75c13f519ecb85185e149049bd4c4937aa0b953bd21e1748eb711c6cdcee571e"}, - {file = "selectolax-0.4.11-cp39-cp39-win32.whl", hash = "sha256:903286e6d9752b63b3b37f9ee98a8ff7db403b23416b469b065cc992b2556b80"}, - {file = "selectolax-0.4.11-cp39-cp39-win_amd64.whl", hash = "sha256:f4894d4cb2b9cd4828dc9d9cbed683db051748fde66f5937aa823f2afff16b36"}, - {file = "selectolax-0.4.11-cp39-cp39-win_arm64.whl", hash = "sha256:2e8d01d9688e9670b7ed3f042dc7ba379f844fb7fcb8e85191885ed75d6178fb"}, - {file = "selectolax-0.4.11.tar.gz", hash = "sha256:2b565ddabce6c9a7b73fa28a39acf8f411a084fa2f169234ec2470f552d4421d"}, -] - -[package.extras] -cython = ["Cython"] - [[package]] name = "setuptools" version = "83.0.0" @@ -3140,12 +3027,12 @@ version = "4.16.0" description = "Backported and Experimental Type Hints for Python 3.9+" optional = false python-versions = ">=3.9" -groups = ["main", "dev", "docs"] +groups = ["main", "dev"] files = [ {file = "typing_extensions-4.16.0-py3-none-any.whl", hash = "sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8"}, {file = "typing_extensions-4.16.0.tar.gz", hash = "sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5"}, ] -markers = {main = "extra == \"optionals\"", docs = "python_version == \"3.10\""} +markers = {main = "extra == \"optionals\""} [[package]] name = "typing-inspection" @@ -3271,4 +3158,4 @@ optionals = ["jinja2", "jsonschema", "legacycrypt", "napalm", "napalm", "rpds-py [metadata] lock-version = "2.1" python-versions = ">=3.10,<3.15" -content-hash = "f86e344e824436f121dd7644e0f67a119b6492c330b5a5631934be7be6992aca" +content-hash = "3cbcfe476ccbba7c200e04803408516f8d925dab47f1821806d4b78ad5ee0131" diff --git a/pyproject.toml b/pyproject.toml index c991de7d..30165f98 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,27 +64,28 @@ Markdown = "*" [tool.poetry.group.docs.dependencies] # Rendering docs to HTML -mkdocs = "~1.6.1" +mkdocs = "1.6.1" # Embedding YAML files into Markdown documents as tables -markdown-data-tables = "~1.0.0" +markdown-data-tables = "1.0.0" # Render custom markdown for version added/changed/remove notes -markdown-version-annotations = "~1.0.1" +markdown-version-annotations = "1.0.1" # Automatically generate some files as part of mkdocs build -mkdocs-gen-files = "~0.6.1" +mkdocs-gen-files = "0.5.0" # Image lightboxing in mkdocs -mkdocs-glightbox = "~0.5.2" +mkdocs-glightbox = "0.4.0" # Use Jinja2 templating in docs - see settings.md -mkdocs-macros-plugin = "~1.5.0" +mkdocs-macros-plugin = "1.3.7" # Material for mkdocs theme -mkdocs-material = "~9.7.7" +mkdocs-material = "9.6.15" # Handle docs redirections -mkdocs-redirects = "~1.2.3" +mkdocs-redirects = "1.2.2" # Automatically handle index pages for docs sections -mkdocs-section-index = "~0.3.12" +mkdocs-section-index = "0.3.10" # Automatic documentation from sources, for MkDocs -mkdocstrings = "~1.0.6" +mkdocstrings = "0.27.0" # Python-specific extension to mkdocstrings -mkdocstrings-python = "~2.0.5" +mkdocstrings-python = "1.13.0" +griffe = "1.1.1" mkdocs-python-classy = "0.1.3" [tool.poetry.scripts] From 6121fce78a9c660080808b6d484e8d2fdc2bc372 Mon Sep 17 00:00:00 2001 From: Jeff Kala Date: Thu, 20 Aug 2026 15:08:27 -0600 Subject: [PATCH 10/10] fixing icon name --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bac8d86e..969516fe 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Netutils

- +