diff --git a/.dockerignore b/.dockerignore index f991e11..085013a 100644 --- a/.dockerignore +++ b/.dockerignore @@ -3,6 +3,7 @@ .gitignore .idea .vscode +.venv venv backend/plugins/extensibles/ntc-templates static diff --git a/.gitignore b/.gitignore index 1bd18d0..18d132b 100755 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ venv backend/plugins/extensibles/ntc-templates/ backend/plugins/extensibles/ntc-templates +.venv diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..cc1923a --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.8 diff --git a/docker-compose.ci.yml b/docker-compose.ci.yml index f104a78..6389f0c 100644 --- a/docker-compose.ci.yml +++ b/docker-compose.ci.yml @@ -5,7 +5,7 @@ services: netpalm-controller: build: context: . - dockerfile: ./dockerfiles/netpalm_controller_dockerfile + dockerfile: ./dockerfiles/controller.dockerfile environment: - NET_TEXTFSM=/usr/local/lib/python3.8/site-packages/ntc_templates/templates/ - NETPALM_CONFIG=/code/config/config.json diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index c04d75a..7a54ef6 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -5,7 +5,7 @@ services: controller: build: context: . - dockerfile: ./dockerfiles/netpalm_controller_dockerfile + dockerfile: ./dockerfiles/controller.dockerfile command: gunicorn -c gunicorn.conf.py netpalm.netpalm_controller:app environment: diff --git a/docker-compose.yml b/docker-compose.yml index e4a7f29..39eab33 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: netpalm-controller: build: context: . - dockerfile: ./dockerfiles/netpalm_controller_dockerfile + dockerfile: ./dockerfiles/controller.dockerfile environment: - NET_TEXTFSM=/usr/local/lib/python3.8/site-packages/ntc_templates/templates/ - NETPALM_CONFIG=/code/config/config.json @@ -21,7 +21,12 @@ services: netpalm-worker-pinned: build: context: . - dockerfile: ./dockerfiles/netpalm_pinned_worker_dockerfile + dockerfile: ./dockerfiles/worker.dockerfile + image: netpalm-worker + command: + - "python3" + - "worker.py" + - "pinned" environment: - NET_TEXTFSM=/usr/local/lib/python3.8/site-packages/ntc_templates/templates/ - NETPALM_CONFIG=/code/config/config.json @@ -33,9 +38,11 @@ services: restart: always netpalm-worker-fifo: - build: - context: . - dockerfile: ./dockerfiles/netpalm_fifo_worker_dockerfile + image: netpalm-worker + command: + - "python3" + - "worker.py" + - "fifo" environment: - NET_TEXTFSM=/usr/local/lib/python3.8/site-packages/ntc_templates/templates/ - NETPALM_CONFIG=/code/config/config.json diff --git a/dockerfiles/controller.dockerfile b/dockerfiles/controller.dockerfile new file mode 100644 index 0000000..56000e5 --- /dev/null +++ b/dockerfiles/controller.dockerfile @@ -0,0 +1,47 @@ +FROM python:3.8-slim AS builder +RUN apt-get update \ + && pip3 install --upgrade pip + +ENV PYTHONUNBUFFERED 1 + +# Install uv +RUN pip install uv --no-cache-dir + +# Copy dependency files +RUN mkdir /code +WORKDIR /code +COPY pyproject.toml uv.lock . + +# Create venv and install dependencies +ENV UV_COMPILE_BYTECODE=1 +RUN uv venv /code/.venv +RUN uv sync --locked +RUN uv sync --locked --group controller + + +FROM python:3.8-slim AS runtime + +RUN apt-get update \ + && apt-get install -y git \ + && git clone https://github.com/networktocode/ntc-templates.git \ + && mv ntc-templates ntc_templates \ + && pip3 install --upgrade pip + +ENV PYTHONUNBUFFERED 1 + +RUN addgroup --system app \ + && adduser --system --ingroup app app + +RUN mkdir /code +WORKDIR /code + +COPY --chown=app:app . /code + +RUN chown -R app:app /code +RUN mkdir /code/.venv + +COPY --from=builder /code/.venv/ /code/.venv/ +ENV PATH=/code/.venv/bin:$PATH + +USER app +CMD gunicorn -p controller.pid -c gunicorn.conf.py netpalm.netpalm_controller:app diff --git a/dockerfiles/netpalm_controller_dockerfile b/dockerfiles/netpalm_controller_dockerfile deleted file mode 100644 index 1a6cdc9..0000000 --- a/dockerfiles/netpalm_controller_dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM python:3.8-slim -WORKDIR /usr/local/lib/python3.8/site-packages -RUN apt-get update \ - && apt-get install -y git \ - && git clone https://github.com/networktocode/ntc-templates.git \ - && mv ntc-templates ntc_templates \ - && pip3 install --upgrade pip - -ADD netpalm/requirements.txt /code/ -RUN pip3 install -r /code/requirements.txt - -ADD netpalm/controller_addtl_requirements.txt /code/ -RUN pip3 install -r /code/controller_addtl_requirements.txt - -ADD . /code -WORKDIR /code - -CMD gunicorn -p controller.pid -c gunicorn.conf.py netpalm.netpalm_controller:app \ No newline at end of file diff --git a/dockerfiles/netpalm_fifo_worker_dockerfile b/dockerfiles/netpalm_fifo_worker_dockerfile deleted file mode 100644 index d270e2b..0000000 --- a/dockerfiles/netpalm_fifo_worker_dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM python:3.8-slim -WORKDIR /usr/local/lib/python3.8/site-packages -RUN apt-get update \ - && apt-get install -y git \ - && git clone https://github.com/networktocode/ntc-templates.git \ - && mv ntc-templates ntc_templates \ - && pip3 install --upgrade pip - -ADD netpalm/requirements.txt /code/ -RUN pip3 install -r /code/requirements.txt - -ADD . /code -WORKDIR /code -STOPSIGNAL SIGINT -CMD ["python3", "worker.py", "fifo"] diff --git a/dockerfiles/netpalm_pinned_worker_dockerfile b/dockerfiles/netpalm_pinned_worker_dockerfile deleted file mode 100644 index 016f269..0000000 --- a/dockerfiles/netpalm_pinned_worker_dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM python:3.8-slim -WORKDIR /usr/local/lib/python3.8/site-packages -RUN apt-get update \ - && apt-get install -y git \ - && git clone https://github.com/networktocode/ntc-templates.git \ - && mv ntc-templates ntc_templates \ - && pip3 install --upgrade pip - -ADD netpalm/requirements.txt /code/ -RUN pip3 install -r /code/requirements.txt - -ADD . /code -WORKDIR /code -STOPSIGNAL SIGINT -CMD ["python3", "worker.py", "pinned"] diff --git a/dockerfiles/worker.dockerfile b/dockerfiles/worker.dockerfile new file mode 100644 index 0000000..2de0e30 --- /dev/null +++ b/dockerfiles/worker.dockerfile @@ -0,0 +1,47 @@ +FROM python:3.8-slim AS builder +RUN apt-get update \ + && pip3 install --upgrade pip + +ENV PYTHONUNBUFFERED 1 + +# Install uv +RUN pip install uv --no-cache-dir + +# Copy dependency files +RUN mkdir /code +WORKDIR /code +COPY pyproject.toml uv.lock . + +# Create venv and install dependencies +ENV UV_COMPILE_BYTECODE=1 +RUN uv venv /code/.venv +RUN uv sync --locked + + +FROM python:3.8-slim AS runtime + +RUN apt-get update \ + && apt-get install -y git \ + && git clone https://github.com/networktocode/ntc-templates.git \ + && mv ntc-templates ntc_templates \ + && pip3 install --upgrade pip + +ENV PYTHONUNBUFFERED 1 + +RUN addgroup --system app \ + && adduser --system --ingroup app app + +RUN mkdir /code +WORKDIR /code + +COPY --chown=app:app . /code + +RUN chown -R app:app /code +RUN mkdir /code/.venv + +COPY --from=builder /code/.venv/ /code/.venv/ +ENV PATH=/code/.venv/bin:$PATH + +USER app +STOPSIGNAL SIGINT +CMD ["python3", "worker.py", "pinned"] \ No newline at end of file diff --git a/netpalm/backend/core/security/cert/tls/ca.crt b/netpalm/backend/core/security/cert/tls/ca.crt index 87dc018..1721d3c 100644 --- a/netpalm/backend/core/security/cert/tls/ca.crt +++ b/netpalm/backend/core/security/cert/tls/ca.crt @@ -1,31 +1,31 @@ -----BEGIN CERTIFICATE----- -MIIFPTCCAyWgAwIBAgIJAJmgbenJU3cuMA0GCSqGSIb3DQEBCwUAMDUxEzARBgNV -BAoMClJlZGlzIFRlc3QxHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTAe -Fw0yMzEyMDQxNTA5NDhaFw0zMzEyMDExNTA5NDhaMDUxEzARBgNVBAoMClJlZGlz -IFRlc3QxHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBANzDgsD+Glytgo1+nkb6Kge1McyHiHN7SfPl -rlAOfxtopF/ENfpt5G0GoGf+YY+4f8iYB+fMgWYE8wDVatxOznkJQeVebu+6/rlr -zNplyBwMCIsKUu49+hlnOf3X+sLAhmMcggbRUnTuCXUbEg7BRes8H7TzbmTyvAgP -Idi7XsVSnnyeRvjQiWYbv4N8WJmcWLEvCzsiwGOFmkZuz1fbqrehDJTJ/Djgf6yT -ZVYH8rd0MZai2KJMI7//sJUEY+cuFNP88hizn61Cw6DNR1eqOufktEHC0Q/yXK6g -YSbtAgNjZ1kCG2nP1grpFTnmHeU1GvR3RrLv3oE4FNMs6TVuGwUUnV8hhIFnjuPP -6Lx9X0tYDIsYKVf1BmFSB75CydzWiBesgaGYmwt+OUbeUGxzjUQ/rjyiUl9djfl4 -gATGknxKiXO9h+XkS5Pja3PLe1xtFHxd8XwlYhoIAEHsL9I7EvREtPUFwFkRIFbt -6OFf15475ZlCHKdG1Br65mV4wty5beUrdLVoOOZEhOHLvBefvbj8VBXz57nGJuES -cYvZ1CHUAwo+Z0Q3ilZMKDfE84v659ZtWbc9BYuUVRJhcUKSqzOPEL4rmVPePLx0 -++7HVeJY2EFHxGJBJi2yQBrhdvxFglXidLTdgIvjkNm9h4S/gjwayM4P20Mo/wW9 -FZgVhKL7AgMBAAGjUDBOMB0GA1UdDgQWBBQ2N9LA6zvwTdTxiCtfz0d/qE/XdzAf -BgNVHSMEGDAWgBQ2N9LA6zvwTdTxiCtfz0d/qE/XdzAMBgNVHRMEBTADAQH/MA0G -CSqGSIb3DQEBCwUAA4ICAQAVMrQG0Zl2MEuRjHfNJOWT4xTA+5SCRZaRruAIr6Ge -XaUn+bVwQjG0FDsb+XmDz0oc39yp2ZGG5IgFqNonYARnsUusiJLVAPcm830nOYrm -7zlqyY3Ax7rn1fUgI8pbGdrN/WyuuGFBjIo9iRaqW6cHP08pBenXg7VTXVAPdf3w -IZpB+S/hzYLoJSwLafD2f/HGCtw2avA30UozuXTVri1e0fOVUcq3yC6/qBKkiesY -tjrJdjsmlCM+h+abaKR1aVoEUCPAq03O0w1RTCxntCnU7i1fLmnsGfy8s3FcusN5 -pEqHaN5swnXVkC++YVm2iObzhag53mslCbhelxk7PdnbrOZmCdeCnWhpaPf97CtR -4aobqlsni6iIaKcac3DTUqTRU6NcYHOxdviaK+VZ9d2HZ5+SpqoPckYK0waA/XN9 -zfyFmpEWXa63kWqVJZdEH5lLWfVvKGucyDcf+tIsUzbCaArHh9HJEuUf4QiTF16i -kEUMCHiCNMHlPIvWbo3+K8UDuZ+g3VcAgdV8C57J/f6nWgmIeow01KilYSrAFBm4 -E4qvLYAVzo2z2T03iyLPWucisdkDRk1YaP68oMx99ijtfjrdcDN5K1XCpV5uefu4 -9r/fwNTjDJmL61N+qtnlwJJ2P6CaZY9tQ9BHrdqAezQpuAv53AS0FN/BtFrZXm6l -AQ== +MIIFSzCCAzOgAwIBAgIUAwBMgsOktGRHqVSgk6JVOcdCsekwDQYJKoZIhvcNAQEL +BQAwNTETMBEGA1UECgwKUmVkaXMgVGVzdDEeMBwGA1UEAwwVQ2VydGlmaWNhdGUg +QXV0aG9yaXR5MB4XDTI1MDUwOTAyMDYxMloXDTM1MDUwNzAyMDYxMlowNTETMBEG +A1UECgwKUmVkaXMgVGVzdDEeMBwGA1UEAwwVQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwF5j7uo801VDBst3KpfY +EKs//dpzPLyWf6tObNPRGbSefwo4HNgbqPxX10zs8dlmKqJV/J79SDMHSSJgassD +IAlcD8F8poXDa6bzTzMAtKLQStgoLv93Gw729s+ZMUcheKhBXkXBIKsttnWRu5e6 +PbjgL908NxzmBt1miJS1os+9/MYwxW8yrBYMecN4jMdQrwqXTyOGfxUZdn2JnA5Y +EWfA+AaZO5NHS9tRUSCzj4BB0MRAIf6bzrhoTpfOlco04BToSFOZnbSpVnPO7bfl +Mma4WuqZhsHjLAajR6szKSaBieie0hMh4zxH7r1a+iCcE+tY/D6lUaWS/2zT7uzn +46fXkaFXGe6N+5XG5kt4ew74G/oGtrO1bEbNAPRd/m7CmQ8DMfTsUImebDKuKIbL +iq68RHlU9zeAywNJg0XmCGpLcNLXJNmby/9ZWcQ4cbMfp2x3/QmrRfQTTrQqqGaT +0dkDIGaRze/K2KvCK8ytmUjMIBwEMU8C/M/k2UEZu2wSqgjmf0dzTz1cAY61SzAO +iwnKUlB22NMJ/N3BgqUyJFebj21zV3dklNIDhyY7JiiyN9r5biFjI9VPq0KSU1l0 +dEJPnmeXVrU1yThbahq8gueRtxoCK4zEQbyBI70uq+EGi2YUsvWkLV8Qrq3MIy8b +RCCFOtXDdqRM7m1QCYIQI4cCAwEAAaNTMFEwHQYDVR0OBBYEFLs4OmjwFKeSFbH/ +3DQEK5TW4vVhMB8GA1UdIwQYMBaAFLs4OmjwFKeSFbH/3DQEK5TW4vVhMA8GA1Ud +EwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBADmXi6tWn9qu9aKP7QklyB9X +6fnH9fELwUtVC5yHbtkmLxryw3SI+zdNSh/Obp7UMpRDaGfMbM3/JKG/nJ++Q+rH +qe+fZmV0e04BbXdYfrGHiKJSoyWyUxfx/SevUlwCgUjZ0lo3REqT9jJ1JLELFZN3 +HUczEFhK1hkAX9DzJjdGTDgXFzbb0hHL3peG+V+NSySgZZ+SScWXXp4IpwEwkbvZ +xsnwbDrlA1oHf8TXYhujYTHqEkzAwhiWlBywwqWAL5510ODn/8hQotCFShP2GQco +0HEZpKZolAbLByOMOoNsbRXLaq+ffXjxRB/W+WpJhGi+dLEo3sIePXzIMi34Kh6N +IMX1x8neP5rTgdboRDmIjM+tdFecS1G0lZQXnzRxFBXRf5tno/UnDoGkXur32qCq +Uqqiapha7FkQCFHWJKwkaWXXfEj6ePorC6wwMgKpj9QI9RKkUY/6OFoAazqCuL2/ +JdQ8pNeiZOLi585VMvfBgy2Z+BAc3BiRE/UxbZxD02r/mTMxuHINP8mUA5BPat3D +HBzTIJPACpvs3RRcUJuj5XWljfJmfgUr0rWMQXliyaUsUn/gIpSiAoZr+6ZeF+qV ++6xAky62780QJ2IZVaK2ONmGEvuu5lWT9JtF2gksMwof/6FuCM6PPJhiq5ikC0po +Y+6wtoKoW3TWIwpsGwXr -----END CERTIFICATE----- diff --git a/netpalm/backend/core/security/cert/tls/ca.key b/netpalm/backend/core/security/cert/tls/ca.key index ea827b5..d9740db 100644 --- a/netpalm/backend/core/security/cert/tls/ca.key +++ b/netpalm/backend/core/security/cert/tls/ca.key @@ -1,51 +1,52 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIJQQIBADANBgkqhkiG9w0BAQEFAASCCSswggknAgEAAoICAQDAXmPu6jzTVUMG +y3cql9gQqz/92nM8vJZ/q05s09EZtJ5/Cjgc2Buo/FfXTOzx2WYqolX8nv1IMwdJ +ImBqywMgCVwPwXymhcNrpvNPMwC0otBK2Cgu/3cbDvb2z5kxRyF4qEFeRcEgqy22 +dZG7l7o9uOAv3Tw3HOYG3WaIlLWiz738xjDFbzKsFgx5w3iMx1CvCpdPI4Z/FRl2 +fYmcDlgRZ8D4Bpk7k0dL21FRILOPgEHQxEAh/pvOuGhOl86VyjTgFOhIU5mdtKlW +c87tt+UyZrha6pmGweMsBqNHqzMpJoGJ6J7SEyHjPEfuvVr6IJwT61j8PqVRpZL/ +bNPu7Ofjp9eRoVcZ7o37lcbmS3h7Dvgb+ga2s7VsRs0A9F3+bsKZDwMx9OxQiZ5s +Mq4ohsuKrrxEeVT3N4DLA0mDReYIaktw0tck2ZvL/1lZxDhxsx+nbHf9CatF9BNO +tCqoZpPR2QMgZpHN78rYq8IrzK2ZSMwgHAQxTwL8z+TZQRm7bBKqCOZ/R3NPPVwB +jrVLMA6LCcpSUHbY0wn83cGCpTIkV5uPbXNXd2SU0gOHJjsmKLI32vluIWMj1U+r +QpJTWXR0Qk+eZ5dWtTXJOFtqGryC55G3GgIrjMRBvIEjvS6r4QaLZhSy9aQtXxCu +rcwjLxtEIIU61cN2pEzubVAJghAjhwIDAQABAoICAC/NBK4QfI7TB/W/R1xJIQJ7 +W0pcJvh3sDoHOlSmibYGgL/2rRzVwoHKOpWgYtxx9gYwEofUhgGT1IKizSycR6mF +SeAMZ0oFwRqWAK20cb9xGasPbWTITDNoE4we5+Ur1LBjtuKTGLtibdiB/HWN7VR7 +BRI/uj/DqZEZIOpdcYkEcCRIp0PYLtI+JFl5bhIlUPI+An1CyZ/4gTxFU5V4pv+k +NXosQZVhMn0yAVHUe2n0J+aVbY5E8zh58ElfRZFJDryD1XhrdaePheianFfLs2ND +zRmiZAXtVeLRv28Gpo7aJ6Q6LoTrBieuCf3UBbBTvBTjDViYxIG2UAGybDNZoQEs +93mdC3irXghX5Guf5Mh9phfcbaqKldfZPb6bwdqewJwkXc3l6bht1VpfhYiSeUJo +6KgVptnIWarcHvdhaNM3MjB/FdUYTofQle4MQOM76dofQjuG8FIyj58kUsF44QKO +SVUrRTw1eR4WWmaYl8Uy+kJO9XnYuKmahD9XEvTtxXyf45iB3D/xfWadG8rlzlCo +rvq8MybkypXPho9jqBCCcGNEMu1VOENB3H0zZRwqNtN1ia6EUDpHQPp2/C/sYNEj +TY4fonE1Wxuy5T1Mwab0twnm5Yd7TN3wXT2gYdi7Uj7LazeKZQ9kYb0+slycb73r +hbP/OkRJV/Z58iWSEvxxAoIBAQDG38XVKcTy6BG8p/V9UihvF4YLx197nMETQzjg +Fi/DVQ357/bzAN9Q6F6RPYxqDULj4JtxW5cWuiJUHMyBxNbaHX+e2RCoEN4cbJAM +9+G4/mvnyW0yJkb1/ywTwelq/CigT3xBpEpbNYNnNbwq56Ny1t3CW3IsLAXyfz+G +SkX5cXpI6pE9GTgw2wai/YvU7SiYYiymQkt6RwPqoi3KcfBTLiEsa2KXBCHTBTgM +NDGHSldmRX+etWuR7m5qBZeG9SumGkuGRxsh8ogBw2OOw9hkOACVczdiKk8eoweU ++q+XT6y8N3eS29It9nUOSvpKNTYOxCui/MyJwTdONI+3LI4pAoIBAQD3oD4K0eSu +k+MfBAESDbsLrQAYYmmXgrmFWfa2aMAefp3qTUe+wRJPrnUN7MvWilvxWvHzigYk +xwxyV06lkRgozGeN9/H8EbXj1znT8TNDgmWtdDZwik6pynnfluMtCjixct4gNJec +vKPUMK3mHjcwDsy20bdJ6V4IRIMejI3xm/IPDVtptpLlHq5zY/3FSL12NQTmzr9+ +j4b2WtlCsy82/AwKwzxygBoM6Nmo0plm/Y1Kmj6OhQ7/n2YgjYFh1gzDJsqx5J27 +6N0r053yLvepOFBi1Q8Y8TyvhLHhUG/XyrzvCC37mljfv9tT5cdOwGJfGjcIrHuM +FlpL4j8zXvovAoIBACPfBwMM9q5Nt61MqlYBdLOdDZugSZO1UYoU7PRWbCUSeWPk +qalpNd6VG0GdVW9nlvIdeEw5FgaOalS7oROjGpHbEkLnqj52VGnSFyWPrJI+qd30 +EhMinlgOv7eMmXqnovhPff0lEhhjjaEXKyqd/3heUz+UWQKoqiX0V9P0H6z/j+wJ +C0t2+hCt4QOTMh6k7FaYFq+ic5TJrGYs/I9wf8WxI2Csueq9XxB9938UBv79JMiY +ro1E8fMvi5DqE0vPeyEJyyecOcOkyG1w/cspfiWNiGVsk8fME9tV0q9HjFaBk4mb +g6Dkr4OE2dZLJdwuvuJo9en/KTGLvVsI1gdXLQkCggEAT3itELnmI6Uwyh513X5s +nkWqdyj2bHq24bZKuKYLqn3GXpDoyq6aGtqJlKt/i94hvecLKbcNW7ZKJ1Qf2IEl +eMqJHYYKsnRYpMPJOlz5r9vkl/NpGVs5/cIOtRRu2mCia0jLQxi9476i8ZGh7e2a +lqDZUH8jzOPJmuuqDR7c20LKP8xwnw/KOyBKqpvXsP40WACSDyUhThPwI5Zqjb6G +E6Z2kumvt6unMKd2W3kjZGtRcjToiMLpWl6k3yOq92RD+kmz2b3eZZVJjiw/T5+F +Oljpa56nVsDtUgNLN12iV2YolqpQX6Rci4q+cEGZYovZxl3adb0tdXsjBaGZ2PnN +XwKCAQB2Tak3CNMJ4bJoy54L6w2ndq6Whq+J7IMGIYUFv+Bat8yy12fOXjtwNeib +9CBBbRsf6iAY8QiNiB/0l/VuXAWHbHTedwXKBVFtemETv6yLnnhxKM4FwkojudT2 +SACyKRIXZqRN8eKIeuu5Ilf2aProCRkQQpBhsrkR9wApb9YsVP7uid+Rk9xGKNr4 +fXBjVothCt7EmVgs3JhVy/Y2ba4pNAAk2WZ7FvFBWXewmyuWHDiGPR2pLL5s3vZY +C2mabOMuQVMyNnawK4p39G1BVz5GG82rfumIFHGHgKaVBV6f6frjGB+hmUVok0dK +YuFppYk94YvLsTZwGPImIMoH/G4H +-----END PRIVATE KEY----- diff --git a/netpalm/backend/core/security/cert/tls/redis.crt b/netpalm/backend/core/security/cert/tls/redis.crt index 7c199d5..5815d50 100644 --- a/netpalm/backend/core/security/cert/tls/redis.crt +++ b/netpalm/backend/core/security/cert/tls/redis.crt @@ -1,23 +1,23 @@ -----BEGIN CERTIFICATE----- -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 -----END CERTIFICATE----- diff --git a/netpalm/backend/core/security/cert/tls/redis.dh b/netpalm/backend/core/security/cert/tls/redis.dh index c67f3af..2bcf20b 100644 --- a/netpalm/backend/core/security/cert/tls/redis.dh +++ b/netpalm/backend/core/security/cert/tls/redis.dh @@ -1,8 +1,8 @@ -----BEGIN DH PARAMETERS----- -MIIBCAKCAQEA3VGxJe0EnE5qjYaJOKH7Cf0sVP0ve5ZajERRQWErm+DnnKnMUXHm -g8rp2OAXwhPIuAZ012jiP3sxBbi53F+8h4EDpNLGVMxaF0t/yeSSPIj33KYuZKRi -xiec1rfnLF8B7W44UBdAop0Xxxv4TbMVH2azZVOfA0NAarGjT+O5REAnjmHHzOTl -gQh4EEyeZKB5nuKWZ5iXpYQyLRuWgpsWQOhi4XkEjd9XR3ogRMlM8YWFxsuKMVwh -tAUnq2mN7EAuxZopItMaKKEFDoarWSkNjjCYs72iJ8j+XjmAmBVLwCt0kkynPY7v -DHKnt6Bbb0GKM/BDCSCwMPOC0x7N7l3GUwIBAg== +MIIBCAKCAQEApF1TmTWkq73t1lna42s0D6Xb9pFOZS9iCnbEvEqLeeQmV5QFcp1P +p6YKKslMdp03xnl32VH977Hi7vxQzbCyVf5r0WM0mpEcgu51hn9H9qxqckKizjvD +xKQs+50+FnQ1wtE1VgPzKX+Tawu5/a+nMpafRJgmPRgBV2EraO/T9P2CB2IlYyvp +tkrxz43fh4/knDpwKOXcUPajCoDty9hC6LOwppH7QDUsjNZN1gzIB5wSc+MNtAJ+ +oZv5TTImZv55OdN7o0TLesOYtOwjf6TFZ1QwtKId7cU8mUtRLr/3t1yTYgzczbh3 +XFIsxFiBDPUcvZXoq9VRpBxNrCeCyp+kTwIBAg== -----END DH PARAMETERS----- diff --git a/netpalm/backend/core/security/cert/tls/redis.key b/netpalm/backend/core/security/cert/tls/redis.key index 4679848..8118af4 100644 --- a/netpalm/backend/core/security/cert/tls/redis.key +++ b/netpalm/backend/core/security/cert/tls/redis.key @@ -1,27 +1,28 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEpQIBAAKCAQEA6chx4oBZSJiZ9ZU1Akgzt9+Ij4+DcDimNDf1IbX5CUeS9LDp -jeN70duaBxeEbo8ReLvWk8N5sU+v4uAd0D1bvoJjlDuKJjqozv8Xv0UCGr4c4gD0 -17lvXvq0VRgV7j6QwXX9YbqO2g8t0GnlKvAQW648c5bIvjHyz6apo4tfYTY5Cgrh -/krIsLh17WL6aJLKtPDR4eWLwLAtXaiBJMkHZ/aSEjqJf+GBc/IWK1aP3aioEEhn -yj8Jz6b6XCHbhLK798C0k/ZpkRpfVLTuO5K02RIRosj/y6H4eOgwS/RL29m6EkIy -8m7pJoqktyt/haepeQIlFPdT1N2dZt/Wv+IstwIDAQABAoIBAQCE5x/fHQok3CQC -We2Fu5gzOs++lV6qiHnsC7e+j13hKaBgnMZZlG5KsmYRDAyMcacEFPz6idD/vQaH -mtM4E/m5BxUnKuXxr71R1/EfGlME8vkmflay4MdwnmOwUH3/L/BJGxON4Gnfi2uH -JPxT+Z/DDv1s1NaQUYLxC5U61TvG3d9M8hmUZwU+1y35lFgdzwGoRDlk8mf54mUn -lR2ncAoNqUgRPvfyRk3WCX4g4rbPel+MhFtqkyhBx0cgxU992xQfKngjnGbGWHGf -iSLca4EfV5yn7OszxdTgZngw/RAgN5wqVg7p8qxRMuSsPpNB2YnOWR1Em/cJkYpn -HoLYCvD5AoGBAPYEcVp4WYkYcVq4I/zfqAvO4jUuscFYG5GtWIy21tUn9q/R757f -vCvrYGhcJF0CPeW/ihE8nU1320HrEZt3DJyem3gijXLyR1nXlDP8aS6Oo1BqKTd/ -jBSLwpF8pcq+ZFF4XrgJX820YpGjXI8tR9lnAip64v9JJw3Km81xj2SjAoGBAPNE -6j3eEXMBjGIGLt2jQN91mNsfpROXckQDMNclxC0x4kHP4vX+55wEDIqlmVZb9kdG -ErzGxMeqyEkX+be/kxNevAr9kJuEWt866WzqHW1z05brHroP7ZDTFsnK9lphV0hc -oyL1hrSSQd6u/9g0K95yFJFRBfcLuC7KcNY2/0TdAoGAGbAPEe49ExaNR3aws0e7 -KTh54Cm2/8QuZMCf3Vl+BxW8KVGXXpRn9oIGN/9fAKMqSWH9jZ0xo5QfPbvIw93j -YDsjaqDY+iaYEqZy4Ba7+NOF8/CRyyyzOLX7I+vK9+d3XBZgdYDtEvKB1EklcgG9 -XdLmo/7e0t8Vh9ge+o2f9lcCgYEAvDerzKZOdd7S0Nzb0dwHy1zfIVrAjAH3BKw7 -U5sCx7z6w9SmU5IffNSdJ4CsvOZ2C/spcCmSArIeOH92VDbDAo+fihlZkxm6fVDF -XeFdV1vwb6oGogrE0fKghQylwpPhxjj2d4vj5z3p/PMFPDBRaNB3HV/E77l/jaRP -3U27/3kCgYEA8IvOTXJc9+YKxZ6/Ep2AkKJXALVklh9RsZ0V/thQ2o3s3i3mtyHQ -qK7CsrVU8p2IiQyrj7nUJQIFXfZ0msLPnCqeTlFXVK78rr2EB5IF6qmimM8orcj9 -h9SfLx8wve1QvqWF/L72l3T881BvgFAX0C0OzflfhWg2V92oxxu5bRM= ------END RSA PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCbff/+ectsMs72 +wTgf/hg34EwfhwnZw+nJOWctmpWnSUp6vLGmIxR8F5yTIScpOonTcDAD+PC/DGr8 +BMqpRJyDBNA1CHe9ATprVXB6Q92Zk8p1Megxtn84vLt3U1P7yQBmbEdHHlXxd1ee +FLIC8BF/rk1KAvHS/B1FJh6RiWJ36BSJ82bfaiZ/6YwyOjHguIk7VS13zHniyMtj +i/wrfBc2tEeXMAyp6C+NsLXiRJh6mHIKfyaTnPU5UUrZuF7A9wmNaa4wNmjCo7wv +jV/SxxaXe4Ky1Fqj5eUeW9LIgHFRk0WGjfooPTAsQz1wfo9ZniLoS5GlbGhWysN/ +CNSXG6nNAgMBAAECggEAIpoPdZm04wcLd23YB4aL7SNEzV9HmeY3CEh15XgZBXkR +0e5buhTkYhj/Bt7B0DLuqNa2WKv1Jw6kYCDQ2IokKiPQEX0o6C51yZzhwtOHZL22 +uA27FhT+iqm1LgClF8rLA//kfLcLeQiNvufsFStHOZqYKHgvSDxCZzjsZIamGvh5 +ezg5fePGkPwnlozDOAXGvDdL8hprfUoPQovShTD8qKkzMx5bYM+j1vuvbvtaD3kK +TGdjL5Traj5YGP+k3wZcq6lDa/PjxcNvvKM3PGAGKcnm9av6vXdI83Urqp/zsTbW +md8S4qJhiiG5wTcH9zwfIAIeGCZNC0ahnuCk4ZtOIQKBgQDPqTJbabQnwbYREKIz +JZk0UJ2hFlARfoJagBvNULmAfIBwKVLvDiGX7FaWykWtF+Of21pssb+536TKeRMA +PMCltKGThVX7EwA3ErME3vd9cHzfvdx+R+Ba1C3KOi3t5iz+3tSvnbI1fwpGlTt1 +jVNfB4fHYziEBE3DZnUOk16uqwKBgQC/r/7kCF2WdkEXqSuxsUZkeCmSrOym4x/i +Rfbno8qPiV8GiYAtxbXwr4somJQtDmUq1sjkuxqvx5kU0kGz64K3yYLjqytr+NDI +GHKmymXPvzejGtUHBi9Gajr32T9N5WMMpWCZAqgdbG2Od4tmgIeZZXKEAT90y3j7 +gW/l/h4pZwKBgA77Ld7aaVzU5MWmZY07ESptBnIwoeYhMlZFF7xgLoHOeZWd5ZXJ +dzL2oeiO/yfVqV5G/OcKi8JlGAZjZbOGrn9F4MI7xFAwtrtCZhfb3g72poudruKN +XOowlH0aZWXcTTK18LIatliVqbAd5AQ/Bdy9NlZ0GgesJ9AI/Djo+NOxAoGBAImD +UYD3O2RgS0wVEYJ1IYGb7n8JzO/gShRCiuEcUIluTBxdcfXkOySCWntyEgLMq+jy +ksX8MCXgM8KLH5VaI7mDN4HqXskjg2u4li9vTWCe1eQNsLtMRYfnV4xMbqyMHeWJ +kmXSURZinamxuvB6zkxOSbvHRWWdPpp2/fZpueuLAoGAMiCaVj88pqgOXU8tXgpj +ImUi9NKJYmEpTYbMLu92SYb9XfW0lM9D63bWv9NQi9wwlGJRQf9rGdFMYlVHl1dF +OCH35TEOvziJXfx5M+ELdV15EaaVofwSJKEHSp6SDPP+7LR5L6094oQaWog9qurq +eT/HacJAm1feylvayTU40GA= +-----END PRIVATE KEY----- diff --git a/netpalm/controller_addtl_requirements.txt b/netpalm/controller_addtl_requirements.txt index 5daa5e4..0af2e4a 100644 --- a/netpalm/controller_addtl_requirements.txt +++ b/netpalm/controller_addtl_requirements.txt @@ -1,9 +1,360 @@ -fastapi -uvicorn -uvloop -httptools -gunicorn -pytest -pytest-timeout -pytest-mock -aiofiles \ No newline at end of file +# This file was autogenerated by uv via the following command: +# uv export --no-hashes --group controller +aiofiles==24.1.0 +anyio==4.5.2 + # via starlette +apscheduler==3.6.3 + # via netpalm +async-timeout==5.0.1 + # via redis +attrs==25.3.0 + # via + # jsonschema + # referencing +backports-zoneinfo==0.2.1 + # via tzlocal +bcrypt==4.3.0 + # via paramiko +cachelib==0.3.0 + # via netpalm +certifi==2025.4.26 + # via requests +cffi==1.17.1 + # via + # cryptography + # napalm + # pynacl +charset-normalizer==3.4.2 + # via requests +ciscoconfparse==1.9.52 + # via napalm +click==8.1.8 + # via + # rq + # uvicorn +cmdkit==2.7.5 + # via names-generator +colorama==0.4.6 ; sys_platform == 'win32' + # via + # click + # loguru + # pytest + # tqdm +cryptography==44.0.3 + # via + # paramiko + # pysnmpcrypto +deprecated==1.2.18 + # via ciscoconfparse +dict2xml==1.7.6 + # via rest-connector +dill==0.4.0 + # via + # genie + # unicon +dnspython==2.6.1 + # via ciscoconfparse +exceptiongroup==1.2.2 + # via + # anyio + # pytest +f5-icontrol-rest==1.3.13 + # via rest-connector +fastapi==0.115.12 + # via netpalm +filelock==3.16.1 + # via netpalm +future==1.0.0 + # via + # napalm + # textfsm +genie==23.11 + # via + # genie-libs-clean + # genie-libs-health + # netpalm +genie-libs-clean==23.11 + # via genie +genie-libs-conf==23.11 + # via genie +genie-libs-filetransferutils==23.11 + # via genie +genie-libs-health==23.11 + # via genie +genie-libs-ops==23.11 + # via genie +genie-libs-parser==23.11 + # via genie +genie-libs-sdk==23.11 + # via genie +grpcio==1.70.0 + # via yang-connector +gunicorn==23.0.0 +h11==0.16.0 + # via uvicorn +hier-config==2.2.3 + # via ciscoconfparse +httptools==0.6.4 +idna==3.10 + # via + # anyio + # requests +importlib-resources==6.4.5 + # via + # jsonschema + # jsonschema-specifications +iniconfig==2.1.0 + # via pytest +ipaddress==1.0.23 + # via puresnmp +jinja2==3.1.6 + # via + # jinja2schema + # junos-eznc + # napalm + # pysmi-lextudio +jinja2schema==0.1.4 + # via netpalm +jsonpath-ng==1.7.0 + # via netpalm +jsonpickle==4.0.5 + # via genie +jsonschema==4.23.0 + # via netpalm +jsonschema-specifications==2023.12.1 + # via jsonschema +junos-eznc==2.6.3 + # via napalm +loguru==0.7.2 + # via ciscoconfparse +lxml==5.4.0 + # via + # junos-eznc + # napalm + # ncclient + # yang-connector +markupsafe==2.1.5 + # via jinja2 +mock==5.2.0 + # via puresnmp +names-generator==0.1.0 + # via netpalm +napalm==3.4.1 + # via netpalm +ncclient==0.6.9 + # via + # junos-eznc + # napalm + # netpalm + # yang-connector +netaddr==1.3.0 + # via + # genie + # junos-eznc + # napalm + # pyeapi +netmiko==3.3.2 + # via + # napalm + # netpalm +ntc-templates==7.8.0 + # via netmiko +packaging==25.0 + # via + # gunicorn + # pytest +paramiko==3.5.1 + # via + # junos-eznc + # napalm + # ncclient + # netmiko + # scp + # yang-connector +passlib==1.7.4 + # via ciscoconfparse +pkgutil-resolve-name==1.3.10 + # via jsonschema +pluggy==1.5.0 + # via pytest +ply==3.11 + # via + # jsonpath-ng + # pysmi-lextudio +prettytable==3.11.0 + # via + # genie + # unicon-plugins +protobuf==5.29.4 + # via yang-connector +puresnmp==1.9.1 + # via netpalm +pyasn1==0.4.8 + # via + # genie-libs-sdk + # pysnmp-lextudio +pycparser==2.22 + # via cffi +pydantic==1.10.13 + # via + # fastapi + # netpalm +pyeapi==1.0.4 + # via napalm +pyftpdlib==2.0.1 + # via genie-libs-filetransferutils +pynacl==1.5.0 + # via paramiko +pyparsing==3.1.4 + # via junos-eznc +pyserial==3.5 + # via + # junos-eznc + # netmiko +pysmi-lextudio==1.4.3 + # via pysnmp-lextudio +pysnmp-lextudio==5.0.29 + # via genie-libs-sdk +pysnmpcrypto==0.0.4 + # via pysnmp-lextudio +pytest==8.3.5 + # via + # pytest-mock + # pytest-timeout +pytest-mock==3.14.0 +pytest-timeout==2.4.0 +python-redis-lock==4.0.0 + # via netpalm +pytz==2025.2 + # via apscheduler +pyyaml==6.0.2 + # via + # cmdkit + # hier-config + # junos-eznc + # napalm + # netpalm + # unicon + # unicon-plugins + # yamlordereddictloader +redis==4.5.1 + # via + # netpalm + # python-redis-lock + # rq +referencing==0.35.1 + # via + # jsonschema + # jsonschema-specifications +requests==2.32.3 + # via + # f5-icontrol-rest + # napalm + # netpalm + # pysmi-lextudio + # rest-connector +rest-connector==23.11 + # via genie-libs-sdk +rpds-py==0.20.1 + # via + # jsonschema + # referencing +rq==1.16.2 + # via netpalm +ruamel-yaml==0.18.10 + # via genie-libs-sdk +ruamel-yaml-clib==0.2.8 ; platform_python_implementation == 'CPython' + # via ruamel-yaml +scp==0.15.0 + # via + # junos-eznc + # napalm + # netmiko +setuptools==75.3.2 + # via + # apscheduler + # genie-libs-clean + # genie-libs-health + # napalm + # ncclient + # netmiko +six==1.17.0 + # via + # apscheduler + # junos-eznc + # ncclient + # puresnmp + # textfsm + # transitions +sniffio==1.3.1 + # via anyio +starlette==0.44.0 + # via fastapi +t61codec==2.0.0 + # via puresnmp +tenacity==9.0.0 + # via netmiko +textfsm==1.1.3 + # via + # napalm + # ntc-templates +tftpy==0.8.0 + # via genie-libs-filetransferutils +toml==0.10.2 + # via + # ciscoconfparse + # cmdkit +tomli==2.2.1 + # via pytest +tqdm==4.67.1 + # via genie +transitions==0.9.2 + # via junos-eznc +ttp==0.9.5 + # via netpalm +typing==3.10.0.0 + # via puresnmp +typing-extensions==4.13.2 + # via + # anyio + # fastapi + # pydantic + # starlette + # uvicorn +tzdata==2025.2 ; sys_platform == 'win32' + # via tzlocal +tzlocal==5.2 + # via apscheduler +unicon==23.11 + # via + # genie-libs-filetransferutils + # netpalm + # unicon-plugins +unicon-plugins==23.11 + # via unicon +urllib3==2.2.3 + # via requests +uvicorn==0.33.0 +uvloop==0.21.0 +verlib==0.1 + # via puresnmp +wcwidth==0.2.13 + # via prettytable +wheel==0.45.1 + # via + # genie-libs-clean + # genie-libs-health +win32-setctime==1.2.0 ; sys_platform == 'win32' + # via loguru +wrapt==1.17.2 + # via deprecated +xmltodict==0.14.2 + # via + # genie-libs-parser + # netpalm +yamlordereddictloader==0.4.2 + # via junos-eznc +yang-connector==23.11.1 + # via genie-libs-sdk +zipp==3.20.2 + # via importlib-resources diff --git a/netpalm/requirements.txt b/netpalm/requirements.txt index ad51c75..a453c41 100644 --- a/netpalm/requirements.txt +++ b/netpalm/requirements.txt @@ -1,22 +1,331 @@ -fastapi -ttp -netmiko==3.3.2 -napalm -ncclient==0.6.9 -requests -redis==4.5.1 -rq -xmltodict -jinja2 -jinja2schema -jsonschema -genie -pyyaml -cachelib==0.3.0 -python-redis-lock -filelock -jsonpath_ng +# This file was autogenerated by uv via the following command: +# uv export --no-hashes +anyio==4.5.2 + # via starlette apscheduler==3.6.3 + # via netpalm +async-timeout==5.0.1 + # via redis +attrs==25.3.0 + # via + # jsonschema + # referencing +backports-zoneinfo==0.2.1 + # via tzlocal +bcrypt==4.3.0 + # via paramiko +cachelib==0.3.0 + # via netpalm +certifi==2025.4.26 + # via requests +cffi==1.17.1 + # via + # cryptography + # napalm + # pynacl +charset-normalizer==3.4.2 + # via requests +ciscoconfparse==1.9.52 + # via napalm +click==8.1.8 + # via rq +cmdkit==2.7.5 + # via names-generator +colorama==0.4.6 ; sys_platform == 'win32' + # via + # click + # loguru + # tqdm +cryptography==44.0.3 + # via + # paramiko + # pysnmpcrypto +deprecated==1.2.18 + # via ciscoconfparse +dict2xml==1.7.6 + # via rest-connector +dill==0.4.0 + # via + # genie + # unicon +dnspython==2.6.1 + # via ciscoconfparse +exceptiongroup==1.2.2 + # via anyio +f5-icontrol-rest==1.3.13 + # via rest-connector +fastapi==0.115.12 + # via netpalm +filelock==3.16.1 + # via netpalm +future==1.0.0 + # via + # napalm + # textfsm +genie==23.11 + # via + # genie-libs-clean + # genie-libs-health + # netpalm +genie-libs-clean==23.11 + # via genie +genie-libs-conf==23.11 + # via genie +genie-libs-filetransferutils==23.11 + # via genie +genie-libs-health==23.11 + # via genie +genie-libs-ops==23.11 + # via genie +genie-libs-parser==23.11 + # via genie +genie-libs-sdk==23.11 + # via genie +grpcio==1.70.0 + # via yang-connector +hier-config==2.2.3 + # via ciscoconfparse +idna==3.10 + # via + # anyio + # requests +importlib-resources==6.4.5 + # via + # jsonschema + # jsonschema-specifications +ipaddress==1.0.23 + # via puresnmp +jinja2==3.1.6 + # via + # jinja2schema + # junos-eznc + # napalm + # pysmi-lextudio +jinja2schema==0.1.4 + # via netpalm +jsonpath-ng==1.7.0 + # via netpalm +jsonpickle==4.0.5 + # via genie +jsonschema==4.23.0 + # via netpalm +jsonschema-specifications==2023.12.1 + # via jsonschema +junos-eznc==2.6.3 + # via napalm +loguru==0.7.2 + # via ciscoconfparse +lxml==5.4.0 + # via + # junos-eznc + # napalm + # ncclient + # yang-connector +markupsafe==2.1.5 + # via jinja2 +mock==5.2.0 + # via puresnmp +names-generator==0.1.0 + # via netpalm +napalm==3.4.1 + # via netpalm +ncclient==0.6.9 + # via + # junos-eznc + # napalm + # netpalm + # yang-connector +netaddr==1.3.0 + # via + # genie + # junos-eznc + # napalm + # pyeapi +netmiko==3.3.2 + # via + # napalm + # netpalm +ntc-templates==7.8.0 + # via netmiko +paramiko==3.5.1 + # via + # junos-eznc + # napalm + # ncclient + # netmiko + # scp + # yang-connector +passlib==1.7.4 + # via ciscoconfparse +pkgutil-resolve-name==1.3.10 + # via jsonschema +ply==3.11 + # via + # jsonpath-ng + # pysmi-lextudio +prettytable==3.11.0 + # via + # genie + # unicon-plugins +protobuf==5.29.4 + # via yang-connector puresnmp==1.9.1 + # via netpalm +pyasn1==0.4.8 + # via + # genie-libs-sdk + # pysnmp-lextudio +pycparser==2.22 + # via cffi pydantic==1.10.13 -names_generator==0.1.0 + # via + # fastapi + # netpalm +pyeapi==1.0.4 + # via napalm +pyftpdlib==2.0.1 + # via genie-libs-filetransferutils +pynacl==1.5.0 + # via paramiko +pyparsing==3.1.4 + # via junos-eznc +pyserial==3.5 + # via + # junos-eznc + # netmiko +pysmi-lextudio==1.4.3 + # via pysnmp-lextudio +pysnmp-lextudio==5.0.29 + # via genie-libs-sdk +pysnmpcrypto==0.0.4 + # via pysnmp-lextudio +python-redis-lock==4.0.0 + # via netpalm +pytz==2025.2 + # via apscheduler +pyyaml==6.0.2 + # via + # cmdkit + # hier-config + # junos-eznc + # napalm + # netpalm + # unicon + # unicon-plugins + # yamlordereddictloader +redis==4.5.1 + # via + # netpalm + # python-redis-lock + # rq +referencing==0.35.1 + # via + # jsonschema + # jsonschema-specifications +requests==2.32.3 + # via + # f5-icontrol-rest + # napalm + # netpalm + # pysmi-lextudio + # rest-connector +rest-connector==23.11 + # via genie-libs-sdk +rpds-py==0.20.1 + # via + # jsonschema + # referencing +rq==1.16.2 + # via netpalm +ruamel-yaml==0.18.10 + # via genie-libs-sdk +ruamel-yaml-clib==0.2.8 ; platform_python_implementation == 'CPython' + # via ruamel-yaml +scp==0.15.0 + # via + # junos-eznc + # napalm + # netmiko +setuptools==75.3.2 + # via + # apscheduler + # genie-libs-clean + # genie-libs-health + # napalm + # ncclient + # netmiko +six==1.17.0 + # via + # apscheduler + # junos-eznc + # ncclient + # puresnmp + # textfsm + # transitions +sniffio==1.3.1 + # via anyio +starlette==0.44.0 + # via fastapi +t61codec==2.0.0 + # via puresnmp +tenacity==9.0.0 + # via netmiko +textfsm==1.1.3 + # via + # napalm + # ntc-templates +tftpy==0.8.0 + # via genie-libs-filetransferutils +toml==0.10.2 + # via + # ciscoconfparse + # cmdkit +tqdm==4.67.1 + # via genie +transitions==0.9.2 + # via junos-eznc +ttp==0.9.5 + # via netpalm +typing==3.10.0.0 + # via puresnmp +typing-extensions==4.13.2 + # via + # anyio + # fastapi + # pydantic + # starlette +tzdata==2025.2 ; sys_platform == 'win32' + # via tzlocal +tzlocal==5.2 + # via apscheduler +unicon==23.11 + # via + # genie-libs-filetransferutils + # netpalm + # unicon-plugins +unicon-plugins==23.11 + # via unicon +urllib3==2.2.3 + # via requests +verlib==0.1 + # via puresnmp +wcwidth==0.2.13 + # via prettytable +wheel==0.45.1 + # via + # genie-libs-clean + # genie-libs-health +win32-setctime==1.2.0 ; sys_platform == 'win32' + # via loguru +wrapt==1.17.2 + # via deprecated +xmltodict==0.14.2 + # via + # genie-libs-parser + # netpalm +yamlordereddictloader==0.4.2 + # via junos-eznc +yang-connector==23.11.1 + # via genie-libs-sdk +zipp==3.20.2 + # via importlib-resources diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..d89ddb6 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,42 @@ +[project] +name = "netpalm" +version = "0.2.8" +description = "The Open API Platform for Network Devices" +readme = "README.md" +requires-python = "==3.8.*" +dependencies = [ + "apscheduler==3.6.3", + "cachelib==0.3.0", + "fastapi==0.115.12", + "filelock==3.16.1", + "genie==23.11", + "jinja2schema==0.1.4", + "jsonpath-ng==1.7.0", + "jsonschema==4.23.0", + "names-generator==0.1.0", + "napalm>=3.4.1", + "ncclient==0.6.9", + "netmiko==3.3.2", + "puresnmp==1.9.1", + "pydantic==1.10.13", + "python-redis-lock==4.0.0", + "pyyaml==6.0.2", + "redis==4.5.1", + "requests==2.32.3", + "rq==1.16.2", + "ttp==0.9.5", + "unicon==23.11", + "xmltodict==0.14.2", +] + +[dependency-groups] +controller = [ + "aiofiles==24.1.0", + "gunicorn==23.0.0", + "httptools==0.6.4", + "pytest==8.3.5", + "pytest-mock==3.14.0", + "pytest-timeout==2.4.0", + "uvicorn==0.33.0", + "uvloop==0.21.0", +] diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..fd7e343 --- /dev/null +++ b/uv.lock @@ -0,0 +1,1648 @@ +version = 1 +revision = 1 +requires-python = "==3.8.*" + +[[package]] +name = "aiofiles" +version = "24.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/03/a88171e277e8caa88a4c77808c20ebb04ba74cc4681bf1e9416c862de237/aiofiles-24.1.0.tar.gz", hash = "sha256:22a075c9e5a3810f0c2e48f3008c94d68c65d763b9b03857924c99e57355166c", size = 30247 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/45/30bb92d442636f570cb5651bc661f52b610e2eec3f891a5dc3a4c3667db0/aiofiles-24.1.0-py3-none-any.whl", hash = "sha256:b4ec55f4195e3eb5d7abd1bf7e061763e864dd4954231fb8539a0ef8bb8260e5", size = 15896 }, +] + +[[package]] +name = "anyio" +version = "4.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "exceptiongroup" }, + { name = "idna" }, + { name = "sniffio" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4d/f9/9a7ce600ebe7804daf90d4d48b1c0510a4561ddce43a596be46676f82343/anyio-4.5.2.tar.gz", hash = "sha256:23009af4ed04ce05991845451e11ef02fc7c5ed29179ac9a420e5ad0ac7ddc5b", size = 171293 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/b4/f7e396030e3b11394436358ca258a81d6010106582422f23443c16ca1873/anyio-4.5.2-py3-none-any.whl", hash = "sha256:c011ee36bc1e8ba40e5a81cb9df91925c218fe9b778554e0b56a21e1b5d4716f", size = 89766 }, +] + +[[package]] +name = "apscheduler" +version = "3.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytz" }, + { name = "setuptools" }, + { name = "six" }, + { name = "tzlocal" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/3d/f65972547c5aa533276ada2bea3c2ef51bb4c4de55b67a66129c111b89ad/APScheduler-3.6.3.tar.gz", hash = "sha256:3bb5229eed6fbbdafc13ce962712ae66e175aa214c69bed35a06bffcf0c5e244", size = 96309 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/34/9ef20ed473c4fd2c3df54ef77a27ae3fc7500b16b192add4720cab8b2c09/APScheduler-3.6.3-py2.py3-none-any.whl", hash = "sha256:e8b1ecdb4c7cb2818913f766d5898183c7cb8936680710a4d3a966e02262e526", size = 58881 }, +] + +[[package]] +name = "async-timeout" +version = "5.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233 }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, +] + +[[package]] +name = "backports-zoneinfo" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ad/85/475e514c3140937cf435954f78dedea1861aeab7662d11de232bdaa90655/backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2", size = 74098 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4a/6d/eca004eeadcbf8bd64cc96feb9e355536147f0577420b44d80c7cac70767/backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987", size = 35816 }, + { url = "https://files.pythonhosted.org/packages/c1/8f/9b1b920a6a95652463143943fa3b8c000cb0b932ab463764a6f2a2416560/backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1", size = 72147 }, + { url = "https://files.pythonhosted.org/packages/1a/ab/3e941e3fcf1b7d3ab3d0233194d99d6a0ed6b24f8f956fc81e47edc8c079/backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9", size = 74033 }, + { url = "https://files.pythonhosted.org/packages/c0/34/5fdb0a3a28841d215c255be8fc60b8666257bb6632193c86fd04b63d4a31/backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328", size = 36803 }, + { url = "https://files.pythonhosted.org/packages/78/cc/e27fd6493bbce8dbea7e6c1bc861fe3d3bc22c4f7c81f4c3befb8ff5bfaf/backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6", size = 38967 }, +] + +[[package]] +name = "bcrypt" +version = "4.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/5d/6d7433e0f3cd46ce0b43cd65e1db465ea024dbb8216fb2404e919c2ad77b/bcrypt-4.3.0.tar.gz", hash = "sha256:3a3fd2204178b6d2adcf09cb4f6426ffef54762577a7c9b54c159008cb288c18", size = 25697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/22/5ada0b9af72b60cbc4c9a399fdde4af0feaa609d27eb0adc61607997a3fa/bcrypt-4.3.0-cp38-abi3-macosx_10_12_universal2.whl", hash = "sha256:f81b0ed2639568bf14749112298f9e4e2b28853dab50a8b357e31798686a036d", size = 498019 }, + { url = "https://files.pythonhosted.org/packages/b8/8c/252a1edc598dc1ce57905be173328eda073083826955ee3c97c7ff5ba584/bcrypt-4.3.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:864f8f19adbe13b7de11ba15d85d4a428c7e2f344bac110f667676a0ff84924b", size = 279174 }, + { url = "https://files.pythonhosted.org/packages/29/5b/4547d5c49b85f0337c13929f2ccbe08b7283069eea3550a457914fc078aa/bcrypt-4.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e36506d001e93bffe59754397572f21bb5dc7c83f54454c990c74a468cd589e", size = 283870 }, + { url = "https://files.pythonhosted.org/packages/be/21/7dbaf3fa1745cb63f776bb046e481fbababd7d344c5324eab47f5ca92dd2/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:842d08d75d9fe9fb94b18b071090220697f9f184d4547179b60734846461ed59", size = 279601 }, + { url = "https://files.pythonhosted.org/packages/6d/64/e042fc8262e971347d9230d9abbe70d68b0a549acd8611c83cebd3eaec67/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7c03296b85cb87db865d91da79bf63d5609284fc0cab9472fdd8367bbd830753", size = 297660 }, + { url = "https://files.pythonhosted.org/packages/50/b8/6294eb84a3fef3b67c69b4470fcdd5326676806bf2519cda79331ab3c3a9/bcrypt-4.3.0-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:62f26585e8b219cdc909b6a0069efc5e4267e25d4a3770a364ac58024f62a761", size = 284083 }, + { url = "https://files.pythonhosted.org/packages/62/e6/baff635a4f2c42e8788fe1b1633911c38551ecca9a749d1052d296329da6/bcrypt-4.3.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:beeefe437218a65322fbd0069eb437e7c98137e08f22c4660ac2dc795c31f8bb", size = 279237 }, + { url = "https://files.pythonhosted.org/packages/39/48/46f623f1b0c7dc2e5de0b8af5e6f5ac4cc26408ac33f3d424e5ad8da4a90/bcrypt-4.3.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:97eea7408db3a5bcce4a55d13245ab3fa566e23b4c67cd227062bb49e26c585d", size = 283737 }, + { url = "https://files.pythonhosted.org/packages/49/8b/70671c3ce9c0fca4a6cc3cc6ccbaa7e948875a2e62cbd146e04a4011899c/bcrypt-4.3.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:191354ebfe305e84f344c5964c7cd5f924a3bfc5d405c75ad07f232b6dffb49f", size = 312741 }, + { url = "https://files.pythonhosted.org/packages/27/fb/910d3a1caa2d249b6040a5caf9f9866c52114d51523ac2fb47578a27faee/bcrypt-4.3.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:41261d64150858eeb5ff43c753c4b216991e0ae16614a308a15d909503617732", size = 316472 }, + { url = "https://files.pythonhosted.org/packages/dc/cf/7cf3a05b66ce466cfb575dbbda39718d45a609daa78500f57fa9f36fa3c0/bcrypt-4.3.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:33752b1ba962ee793fa2b6321404bf20011fe45b9afd2a842139de3011898fef", size = 343606 }, + { url = "https://files.pythonhosted.org/packages/e3/b8/e970ecc6d7e355c0d892b7f733480f4aa8509f99b33e71550242cf0b7e63/bcrypt-4.3.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:50e6e80a4bfd23a25f5c05b90167c19030cf9f87930f7cb2eacb99f45d1c3304", size = 362867 }, + { url = "https://files.pythonhosted.org/packages/a9/97/8d3118efd8354c555a3422d544163f40d9f236be5b96c714086463f11699/bcrypt-4.3.0-cp38-abi3-win32.whl", hash = "sha256:67a561c4d9fb9465ec866177e7aebcad08fe23aaf6fbd692a6fab69088abfc51", size = 160589 }, + { url = "https://files.pythonhosted.org/packages/29/07/416f0b99f7f3997c69815365babbc2e8754181a4b1899d921b3c7d5b6f12/bcrypt-4.3.0-cp38-abi3-win_amd64.whl", hash = "sha256:584027857bc2843772114717a7490a37f68da563b3620f78a849bcb54dc11e62", size = 152794 }, + { url = "https://files.pythonhosted.org/packages/6e/c1/3fa0e9e4e0bfd3fd77eb8b52ec198fd6e1fd7e9402052e43f23483f956dd/bcrypt-4.3.0-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3efb1157edebfd9128e4e46e2ac1a64e0c1fe46fb023158a407c7892b0f8c3", size = 498969 }, + { url = "https://files.pythonhosted.org/packages/ce/d4/755ce19b6743394787fbd7dff6bf271b27ee9b5912a97242e3caf125885b/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08bacc884fd302b611226c01014eca277d48f0a05187666bca23aac0dad6fe24", size = 279158 }, + { url = "https://files.pythonhosted.org/packages/9b/5d/805ef1a749c965c46b28285dfb5cd272a7ed9fa971f970435a5133250182/bcrypt-4.3.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6746e6fec103fcd509b96bacdfdaa2fbde9a553245dbada284435173a6f1aef", size = 284285 }, + { url = "https://files.pythonhosted.org/packages/ab/2b/698580547a4a4988e415721b71eb45e80c879f0fb04a62da131f45987b96/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:afe327968aaf13fc143a56a3360cb27d4ad0345e34da12c7290f1b00b8fe9a8b", size = 279583 }, + { url = "https://files.pythonhosted.org/packages/f2/87/62e1e426418204db520f955ffd06f1efd389feca893dad7095bf35612eec/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d9af79d322e735b1fc33404b5765108ae0ff232d4b54666d46730f8ac1a43676", size = 297896 }, + { url = "https://files.pythonhosted.org/packages/cb/c6/8fedca4c2ada1b6e889c52d2943b2f968d3427e5d65f595620ec4c06fa2f/bcrypt-4.3.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f1e3ffa1365e8702dc48c8b360fef8d7afeca482809c5e45e653af82ccd088c1", size = 284492 }, + { url = "https://files.pythonhosted.org/packages/4d/4d/c43332dcaaddb7710a8ff5269fcccba97ed3c85987ddaa808db084267b9a/bcrypt-4.3.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:3004df1b323d10021fda07a813fd33e0fd57bef0e9a480bb143877f6cba996fe", size = 279213 }, + { url = "https://files.pythonhosted.org/packages/dc/7f/1e36379e169a7df3a14a1c160a49b7b918600a6008de43ff20d479e6f4b5/bcrypt-4.3.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:531457e5c839d8caea9b589a1bcfe3756b0547d7814e9ce3d437f17da75c32b0", size = 284162 }, + { url = "https://files.pythonhosted.org/packages/1c/0a/644b2731194b0d7646f3210dc4d80c7fee3ecb3a1f791a6e0ae6bb8684e3/bcrypt-4.3.0-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:17a854d9a7a476a89dcef6c8bd119ad23e0f82557afbd2c442777a16408e614f", size = 312856 }, + { url = "https://files.pythonhosted.org/packages/dc/62/2a871837c0bb6ab0c9a88bf54de0fc021a6a08832d4ea313ed92a669d437/bcrypt-4.3.0-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6fb1fd3ab08c0cbc6826a2e0447610c6f09e983a281b919ed721ad32236b8b23", size = 316726 }, + { url = "https://files.pythonhosted.org/packages/0c/a1/9898ea3faac0b156d457fd73a3cb9c2855c6fd063e44b8522925cdd8ce46/bcrypt-4.3.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e965a9c1e9a393b8005031ff52583cedc15b7884fce7deb8b0346388837d6cfe", size = 343664 }, + { url = "https://files.pythonhosted.org/packages/40/f2/71b4ed65ce38982ecdda0ff20c3ad1b15e71949c78b2c053df53629ce940/bcrypt-4.3.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:79e70b8342a33b52b55d93b3a59223a844962bef479f6a0ea318ebbcadf71505", size = 363128 }, + { url = "https://files.pythonhosted.org/packages/11/99/12f6a58eca6dea4be992d6c681b7ec9410a1d9f5cf368c61437e31daa879/bcrypt-4.3.0-cp39-abi3-win32.whl", hash = "sha256:b4d4e57f0a63fd0b358eb765063ff661328f69a04494427265950c71b992a39a", size = 160598 }, + { url = "https://files.pythonhosted.org/packages/a9/cf/45fb5261ece3e6b9817d3d82b2f343a505fd58674a92577923bc500bd1aa/bcrypt-4.3.0-cp39-abi3-win_amd64.whl", hash = "sha256:e53e074b120f2877a35cc6c736b8eb161377caae8925c17688bd46ba56daaa5b", size = 152799 }, +] + +[[package]] +name = "cachelib" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/74/8c71941dc0a8f0b2324e5ca53149d3331c5d7a31ee24769e1ec08eae4a0a/cachelib-0.3.0.tar.gz", hash = "sha256:cc1856259f102c9273efa342100f70d9fafbd07b41ce05c501ee28e1dbbb5133", size = 18340 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/bc/5930b7b2cd74ac7fd986a37ffaf59fe3754365c8a4bf878e70e30f496c11/cachelib-0.3.0-py3-none-any.whl", hash = "sha256:2d636c61a45cbcef74f7e6d688badf9a0c9141ece08d2e4e45c4326b3daf8637", size = 12966 }, +] + +[[package]] +name = "certifi" +version = "2025.4.26" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618 }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/08/15bf6b43ae9bd06f6b00ad8a91f5a8fe1069d4c9fab550a866755402724e/cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b", size = 182457 }, + { url = "https://files.pythonhosted.org/packages/c2/5b/f1523dd545f92f7df468e5f653ffa4df30ac222f3c884e51e139878f1cb5/cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964", size = 425932 }, + { url = "https://files.pythonhosted.org/packages/53/93/7e547ab4105969cc8c93b38a667b82a835dd2cc78f3a7dad6130cfd41e1d/cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9", size = 448585 }, + { url = "https://files.pythonhosted.org/packages/56/c4/a308f2c332006206bb511de219efeff090e9d63529ba0a77aae72e82248b/cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc", size = 456268 }, + { url = "https://files.pythonhosted.org/packages/ca/5b/b63681518265f2f4060d2b60755c1c77ec89e5e045fc3773b72735ddaad5/cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c", size = 436592 }, + { url = "https://files.pythonhosted.org/packages/bb/19/b51af9f4a4faa4a8ac5a0e5d5c2522dcd9703d07fac69da34a36c4d960d3/cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1", size = 446512 }, + { url = "https://files.pythonhosted.org/packages/e2/63/2bed8323890cb613bbecda807688a31ed11a7fe7afe31f8faaae0206a9a3/cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8", size = 171576 }, + { url = "https://files.pythonhosted.org/packages/2f/70/80c33b044ebc79527447fd4fbc5455d514c3bb840dede4455de97da39b4d/cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1", size = 181229 }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/fd/f700cfd4ad876def96d2c769d8a32d808b12d1010b6003dc6639157f99ee/charset_normalizer-3.4.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76af085e67e56c8816c3ccf256ebd136def2ed9654525348cfa744b6802b69eb", size = 198257 }, + { url = "https://files.pythonhosted.org/packages/3a/95/6eec4cbbbd119e6a402e3bfd16246785cc52ce64cf21af2ecdf7b3a08e91/charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45ba65510e2647721e35323d6ef54c7974959f6081b58d4ef5d87c60c84919a", size = 143453 }, + { url = "https://files.pythonhosted.org/packages/b6/b3/d4f913660383b3d93dbe6f687a312ea9f7e89879ae883c4e8942048174d4/charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:046595208aae0120559a67693ecc65dd75d46f7bf687f159127046628178dc45", size = 153130 }, + { url = "https://files.pythonhosted.org/packages/e5/69/7540141529eabc55bf19cc05cd9b61c2078bebfcdbd3e799af99b777fc28/charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75d10d37a47afee94919c4fab4c22b9bc2a8bf7d4f46f87363bcf0573f3ff4f5", size = 145688 }, + { url = "https://files.pythonhosted.org/packages/2e/bb/d76d3d6e340fb0967c43c564101e28a78c9a363ea62f736a68af59ee3683/charset_normalizer-3.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6333b3aa5a12c26b2a4d4e7335a28f1475e0e5e17d69d55141ee3cab736f66d1", size = 147418 }, + { url = "https://files.pythonhosted.org/packages/3e/ef/b7c1f39c0dc3808160c8b72e0209c2479393966313bfebc833533cfff9cc/charset_normalizer-3.4.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8323a9b031aa0393768b87f04b4164a40037fb2a3c11ac06a03ffecd3618027", size = 150066 }, + { url = "https://files.pythonhosted.org/packages/20/26/4e47cc23d2a4a5eb6ed7d6f0f8cda87d753e2f8abc936d5cf5ad2aae8518/charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:24498ba8ed6c2e0b56d4acbf83f2d989720a93b41d712ebd4f4979660db4417b", size = 144499 }, + { url = "https://files.pythonhosted.org/packages/d7/9c/efdf59dd46593cecad0548d36a702683a0bdc056793398a9cd1e1546ad21/charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:844da2b5728b5ce0e32d863af26f32b5ce61bc4273a9c720a9f3aa9df73b1455", size = 152954 }, + { url = "https://files.pythonhosted.org/packages/59/b3/4e8b73f7299d9aaabd7cd26db4a765f741b8e57df97b034bb8de15609002/charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:65c981bdbd3f57670af8b59777cbfae75364b483fa8a9f420f08094531d54a01", size = 155876 }, + { url = "https://files.pythonhosted.org/packages/53/cb/6fa0ccf941a069adce3edb8a1e430bc80e4929f4d43b5140fdf8628bdf7d/charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:3c21d4fca343c805a52c0c78edc01e3477f6dd1ad7c47653241cf2a206d4fc58", size = 153186 }, + { url = "https://files.pythonhosted.org/packages/ac/c6/80b93fabc626b75b1665ffe405e28c3cef0aae9237c5c05f15955af4edd8/charset_normalizer-3.4.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:dc7039885fa1baf9be153a0626e337aa7ec8bf96b0128605fb0d77788ddc1681", size = 148007 }, + { url = "https://files.pythonhosted.org/packages/41/eb/c7367ac326a2628e4f05b5c737c86fe4a8eb3ecc597a4243fc65720b3eeb/charset_normalizer-3.4.2-cp38-cp38-win32.whl", hash = "sha256:8272b73e1c5603666618805fe821edba66892e2870058c94c53147602eab29c7", size = 97923 }, + { url = "https://files.pythonhosted.org/packages/7c/02/1c82646582ccf2c757fa6af69b1a3ea88744b8d2b4ab93b7686b2533e023/charset_normalizer-3.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:70f7172939fdf8790425ba31915bfbe8335030f05b9913d7ae00a87d4395620a", size = 105020 }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, +] + +[[package]] +name = "ciscoconfparse" +version = "1.9.52" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "deprecated" }, + { name = "dnspython" }, + { name = "hier-config" }, + { name = "loguru" }, + { name = "passlib" }, + { name = "toml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4b/09/9138fa2124d7a610426593a665250f15abd1acd9af91653b46aeffbf42a6/ciscoconfparse-1.9.52.tar.gz", hash = "sha256:28b13af4f12aadf60b4ced921a72cc5e5514ce4a89aceba10a7239e2551d9a0a", size = 389869 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/56/a2621f991d9fa6e28402b22a1a5f0e5ee4b60b705956e0f69d447d6bce2f/ciscoconfparse-1.9.52-py3-none-any.whl", hash = "sha256:640797f7b9288a4bcef0e002907797a34233fc0186c3081343692500bdda5559", size = 239573 }, +] + +[[package]] +name = "click" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, +] + +[[package]] +name = "cmdkit" +version = "2.7.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, + { name = "toml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/16/f524da9cc0be93d48b19347380c0e66a28841f82848dd678d28443fa13af/cmdkit-2.7.5.tar.gz", hash = "sha256:b7bf4a9b8cc5737eb5e16ac8675c9edcf0ddd99b0b9aa7672a3fb2694f44ca12", size = 23308 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/24/aa4e037d44d99af766598123a8999337386aaead1b8ecd6796f1e073dde2/cmdkit-2.7.5-py3-none-any.whl", hash = "sha256:1562e4fc40cba195afe62478b51bac0988896851d5eca45335421131df9698fa", size = 26654 }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, +] + +[[package]] +name = "cryptography" +version = "44.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/53/d6/1411ab4d6108ab167d06254c5be517681f1e331f90edf1379895bcb87020/cryptography-44.0.3.tar.gz", hash = "sha256:fe19d8bc5536a91a24a8133328880a41831b6c5df54599a8417b62fe015d3053", size = 711096 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/53/c776d80e9d26441bb3868457909b4e74dd9ccabd182e10b2b0ae7a07e265/cryptography-44.0.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:962bc30480a08d133e631e8dfd4783ab71cc9e33d5d7c1e192f0b7c06397bb88", size = 6670281 }, + { url = "https://files.pythonhosted.org/packages/6a/06/af2cf8d56ef87c77319e9086601bef621bedf40f6f59069e1b6d1ec498c5/cryptography-44.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffc61e8f3bf5b60346d89cd3d37231019c17a081208dfbbd6e1605ba03fa137", size = 3959305 }, + { url = "https://files.pythonhosted.org/packages/ae/01/80de3bec64627207d030f47bf3536889efee8913cd363e78ca9a09b13c8e/cryptography-44.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58968d331425a6f9eedcee087f77fd3c927c88f55368f43ff7e0a19891f2642c", size = 4171040 }, + { url = "https://files.pythonhosted.org/packages/bd/48/bb16b7541d207a19d9ae8b541c70037a05e473ddc72ccb1386524d4f023c/cryptography-44.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:e28d62e59a4dbd1d22e747f57d4f00c459af22181f0b2f787ea83f5a876d7c76", size = 3963411 }, + { url = "https://files.pythonhosted.org/packages/42/b2/7d31f2af5591d217d71d37d044ef5412945a8a8e98d5a2a8ae4fd9cd4489/cryptography-44.0.3-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af653022a0c25ef2e3ffb2c673a50e5a0d02fecc41608f4954176f1933b12359", size = 3689263 }, + { url = "https://files.pythonhosted.org/packages/25/50/c0dfb9d87ae88ccc01aad8eb93e23cfbcea6a6a106a9b63a7b14c1f93c75/cryptography-44.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:157f1f3b8d941c2bd8f3ffee0af9b049c9665c39d3da9db2dc338feca5e98a43", size = 4196198 }, + { url = "https://files.pythonhosted.org/packages/66/c9/55c6b8794a74da652690c898cb43906310a3e4e4f6ee0b5f8b3b3e70c441/cryptography-44.0.3-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:c6cd67722619e4d55fdb42ead64ed8843d64638e9c07f4011163e46bc512cf01", size = 3966502 }, + { url = "https://files.pythonhosted.org/packages/b6/f7/7cb5488c682ca59a02a32ec5f975074084db4c983f849d47b7b67cc8697a/cryptography-44.0.3-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:b424563394c369a804ecbee9b06dfb34997f19d00b3518e39f83a5642618397d", size = 4196173 }, + { url = "https://files.pythonhosted.org/packages/d2/0b/2f789a8403ae089b0b121f8f54f4a3e5228df756e2146efdf4a09a3d5083/cryptography-44.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c91fc8e8fd78af553f98bc7f2a1d8db977334e4eea302a4bfd75b9461c2d8904", size = 4087713 }, + { url = "https://files.pythonhosted.org/packages/1d/aa/330c13655f1af398fc154089295cf259252f0ba5df93b4bc9d9c7d7f843e/cryptography-44.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:25cd194c39fa5a0aa4169125ee27d1172097857b27109a45fadc59653ec06f44", size = 4299064 }, + { url = "https://files.pythonhosted.org/packages/10/a8/8c540a421b44fd267a7d58a1fd5f072a552d72204a3f08194f98889de76d/cryptography-44.0.3-cp37-abi3-win32.whl", hash = "sha256:3be3f649d91cb182c3a6bd336de8b61a0a71965bd13d1a04a0e15b39c3d5809d", size = 2773887 }, + { url = "https://files.pythonhosted.org/packages/b9/0d/c4b1657c39ead18d76bbd122da86bd95bdc4095413460d09544000a17d56/cryptography-44.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:3883076d5c4cc56dbef0b898a74eb6992fdac29a7b9013870b34efe4ddb39a0d", size = 3209737 }, + { url = "https://files.pythonhosted.org/packages/34/a3/ad08e0bcc34ad436013458d7528e83ac29910943cea42ad7dd4141a27bbb/cryptography-44.0.3-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:5639c2b16764c6f76eedf722dbad9a0914960d3489c0cc38694ddf9464f1bb2f", size = 6673501 }, + { url = "https://files.pythonhosted.org/packages/b1/f0/7491d44bba8d28b464a5bc8cc709f25a51e3eac54c0a4444cf2473a57c37/cryptography-44.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3ffef566ac88f75967d7abd852ed5f182da252d23fac11b4766da3957766759", size = 3960307 }, + { url = "https://files.pythonhosted.org/packages/f7/c8/e5c5d0e1364d3346a5747cdcd7ecbb23ca87e6dea4f942a44e88be349f06/cryptography-44.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:192ed30fac1728f7587c6f4613c29c584abdc565d7417c13904708db10206645", size = 4170876 }, + { url = "https://files.pythonhosted.org/packages/73/96/025cb26fc351d8c7d3a1c44e20cf9a01e9f7cf740353c9c7a17072e4b264/cryptography-44.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7d5fe7195c27c32a64955740b949070f21cba664604291c298518d2e255931d2", size = 3964127 }, + { url = "https://files.pythonhosted.org/packages/01/44/eb6522db7d9f84e8833ba3bf63313f8e257729cf3a8917379473fcfd6601/cryptography-44.0.3-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3f07943aa4d7dad689e3bb1638ddc4944cc5e0921e3c227486daae0e31a05e54", size = 3689164 }, + { url = "https://files.pythonhosted.org/packages/68/fb/d61a4defd0d6cee20b1b8a1ea8f5e25007e26aeb413ca53835f0cae2bcd1/cryptography-44.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cb90f60e03d563ca2445099edf605c16ed1d5b15182d21831f58460c48bffb93", size = 4198081 }, + { url = "https://files.pythonhosted.org/packages/1b/50/457f6911d36432a8811c3ab8bd5a6090e8d18ce655c22820994913dd06ea/cryptography-44.0.3-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ab0b005721cc0039e885ac3503825661bd9810b15d4f374e473f8c89b7d5460c", size = 3967716 }, + { url = "https://files.pythonhosted.org/packages/35/6e/dca39d553075980ccb631955c47b93d87d27f3596da8d48b1ae81463d915/cryptography-44.0.3-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:3bb0847e6363c037df8f6ede57d88eaf3410ca2267fb12275370a76f85786a6f", size = 4197398 }, + { url = "https://files.pythonhosted.org/packages/9b/9d/d1f2fe681eabc682067c66a74addd46c887ebacf39038ba01f8860338d3d/cryptography-44.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b0cc66c74c797e1db750aaa842ad5b8b78e14805a9b5d1348dc603612d3e3ff5", size = 4087900 }, + { url = "https://files.pythonhosted.org/packages/c4/f5/3599e48c5464580b73b236aafb20973b953cd2e7b44c7c2533de1d888446/cryptography-44.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6866df152b581f9429020320e5eb9794c8780e90f7ccb021940d7f50ee00ae0b", size = 4301067 }, + { url = "https://files.pythonhosted.org/packages/a7/6c/d2c48c8137eb39d0c193274db5c04a75dab20d2f7c3f81a7dcc3a8897701/cryptography-44.0.3-cp39-abi3-win32.whl", hash = "sha256:c138abae3a12a94c75c10499f1cbae81294a6f983b3af066390adee73f433028", size = 2775467 }, + { url = "https://files.pythonhosted.org/packages/c9/ad/51f212198681ea7b0deaaf8846ee10af99fba4e894f67b353524eab2bbe5/cryptography-44.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:5d186f32e52e66994dce4f766884bcb9c68b8da62d61d9d215bfe5fb56d21334", size = 3210375 }, +] + +[[package]] +name = "deprecated" +version = "1.2.18" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/97/06afe62762c9a8a86af0cfb7bfdab22a43ad17138b07af5b1a58442690a2/deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d", size = 2928744 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/c6/ac0b6c1e2d138f1002bcf799d330bd6d85084fece321e662a14223794041/Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec", size = 9998 }, +] + +[[package]] +name = "dict2xml" +version = "1.7.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/07/b3/2db1b077f9a80d30d1729a0af69b7cef8ce5b45c77a1f0f9ebb01b9edce1/dict2xml-1.7.6.tar.gz", hash = "sha256:3e4811f4ef7fca86dede6acf382268ff9bc5735a4aa0e21b465f6eb0c4e81732", size = 15210 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/ad/5a193b6461c713058e3c5b6dbec7a9f92230a968650129cc46f32d3c9de2/dict2xml-1.7.6-py3-none-any.whl", hash = "sha256:841a0c1720e4bfa121e958b805f1062fccf5af2970e7a1f81d7fa056f49e5065", size = 8038 }, +] + +[[package]] +name = "dill" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/12/80/630b4b88364e9a8c8c5797f4602d0f76ef820909ee32f0bacb9f90654042/dill-0.4.0.tar.gz", hash = "sha256:0633f1d2df477324f53a895b02c901fb961bdbf65a17122586ea7019292cbcf0", size = 186976 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/3d/9373ad9c56321fdab5b41197068e1d8c25883b3fea29dd361f9b55116869/dill-0.4.0-py3-none-any.whl", hash = "sha256:44f54bf6412c2c8464c14e8243eb163690a9800dbe2c367330883b19c7561049", size = 119668 }, +] + +[[package]] +name = "dnspython" +version = "2.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/37/7d/c871f55054e403fdfd6b8f65fd6d1c4e147ed100d3e9f9ba1fe695403939/dnspython-2.6.1.tar.gz", hash = "sha256:e8f0f9c23a7b7cb99ded64e6c3a6f3e701d78f50c55e002b839dea7225cff7cc", size = 332727 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/a1/8c5287991ddb8d3e4662f71356d9656d91ab3a36618c3dd11b280df0d255/dnspython-2.6.1-py3-none-any.whl", hash = "sha256:5ef3b9680161f6fa89daf8ad451b5f1a33b18ae8a1c6778cdf4b43f08c0a6e50", size = 307696 }, +] + +[[package]] +name = "exceptiongroup" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, +] + +[[package]] +name = "f5-icontrol-rest" +version = "1.3.13" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e0/44/91979de0a81253d025a0814f16f53df46d3ed3edd5b9fd7181f28a9dd0bb/f5-icontrol-rest-1.3.13.tar.gz", hash = "sha256:49fffd999fb4971d6754beb0e066051175db9d9baeb8a76fca6c801dacc89359", size = 12950 } + +[[package]] +name = "fastapi" +version = "0.115.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/55/ae499352d82338331ca1e28c7f4a63bfd09479b16395dce38cf50a39e2c2/fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681", size = 295236 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/b3/b51f09c2ba432a576fe63758bddc81f78f0c6309d9e5c10d194313bf021e/fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d", size = 95164 }, +] + +[[package]] +name = "filelock" +version = "3.16.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/db/3ef5bb276dae18d6ec2124224403d1d67bccdbefc17af4cc8f553e341ab1/filelock-3.16.1.tar.gz", hash = "sha256:c249fbfcd5db47e5e2d6d62198e565475ee65e4831e2561c8e313fa7eb961435", size = 18037 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/f8/feced7779d755758a52d1f6635d990b8d98dc0a29fa568bbe0625f18fdf3/filelock-3.16.1-py3-none-any.whl", hash = "sha256:2082e5703d51fbf98ea75855d9d5527e33d8ff23099bec374a134febee6946b0", size = 16163 }, +] + +[[package]] +name = "future" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/b2/4140c69c6a66432916b26158687e821ba631a4c9273c474343badf84d3ba/future-1.0.0.tar.gz", hash = "sha256:bd2968309307861edae1458a4f8a4f3598c03be43b97521076aebf5d94c07b05", size = 1228490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl", hash = "sha256:929292d34f5872e70396626ef385ec22355a1fae8ad29e1a734c3e43f9fbc216", size = 491326 }, +] + +[[package]] +name = "genie" +version = "23.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dill" }, + { name = "genie-libs-clean" }, + { name = "genie-libs-conf" }, + { name = "genie-libs-filetransferutils" }, + { name = "genie-libs-health" }, + { name = "genie-libs-ops" }, + { name = "genie-libs-parser" }, + { name = "genie-libs-sdk" }, + { name = "jsonpickle" }, + { name = "netaddr" }, + { name = "prettytable" }, + { name = "tqdm" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/59/ab118805636e0b7cb2dd108e91873a29dcd5c52b6f75e0da4a576a335d29/genie-23.11-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:81f8b776de6ffd3855bb8da37929b093aa6c1a852f25e676ab95201f252360d5", size = 10229480 }, + { url = "https://files.pythonhosted.org/packages/de/95/2f3755663dc6e21017b988f71948e721eaacb47f1923b9b7ae72ab4ba262/genie-23.11-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:15c769b0f15745ec5100715f884349a8e39caaee75bc5214ed6bdff740d2630d", size = 28008852 }, + { url = "https://files.pythonhosted.org/packages/7d/f5/322ced335898055033b60c4eb447b0622c7ec3a22739b6fab2e8832e8e2c/genie-23.11-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:bef97df5b6e321e6bf32e9b32964057ea88ec0ffaf3bc52abc3eebeeb636d173", size = 30974507 }, +] + +[[package]] +name = "genie-libs-clean" +version = "23.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "genie" }, + { name = "setuptools" }, + { name = "wheel" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/3c/f9b3989e23e3a416fbd21bcb36ab4d1fa0c987ef2784ce06590ac8304b07/genie.libs.clean-23.11-py3-none-any.whl", hash = "sha256:579b09e2bb4406f6184228ea0d2acec3c88492d07757e5e87cc0c05c6e3b149f", size = 304867 }, +] + +[[package]] +name = "genie-libs-conf" +version = "23.11" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/6e/7927333d409fb7e96150ee04df0b9ec4ea11c0362a804352e46b83804bf6/genie.libs.conf-23.11-py3-none-any.whl", hash = "sha256:8e9989a21f7ec975d9f8450d95441ffa7cb3ecef2e9f486792f2655f9852f45e", size = 933919 }, +] + +[[package]] +name = "genie-libs-filetransferutils" +version = "23.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyftpdlib" }, + { name = "tftpy" }, + { name = "unicon" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/23/6cdc866614da65a094b9106d52f4e80d8ec4cde8b624bc789939e82504c5/genie.libs.filetransferutils-23.11-py3-none-any.whl", hash = "sha256:65c1c0baa02d45186d6ae9666afb8d3c561a3fc7c02a67ad4151206445f11e9e", size = 51374 }, +] + +[[package]] +name = "genie-libs-health" +version = "23.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "genie" }, + { name = "setuptools" }, + { name = "wheel" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/27/3712aec98192352f26671b3407654aaeaaa990d286e1d413d3af38ba11b5/genie.libs.health-23.11-py3-none-any.whl", hash = "sha256:ee21d1414d4c783787e26d3af49ffe3d4bef8e99e18b0851cc50eebf037c60dd", size = 20813 }, +] + +[[package]] +name = "genie-libs-ops" +version = "23.11" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/e1/92eedee23b7a1becb15c55f9fa59e2fcf4a40a145f880b807ecbeab8910e/genie.libs.ops-23.11-py3-none-any.whl", hash = "sha256:6154133a2d87ffe906b177ce95b010e74432646306fb8bf6081731db36d3ee82", size = 1646745 }, +] + +[[package]] +name = "genie-libs-parser" +version = "23.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "xmltodict" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/6e/361d2ca331749fc938d7af662f1cefbafbac85ca4eed6adb667587f48828/genie.libs.parser-23.11-py3-none-any.whl", hash = "sha256:f872f214883d6816623320fe4ff5e7556282494a92184bdbc8e10d596c1757c6", size = 3814564 }, +] + +[[package]] +name = "genie-libs-sdk" +version = "23.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, + { name = "pysnmp-lextudio" }, + { name = "rest-connector" }, + { name = "ruamel-yaml" }, + { name = "yang-connector" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/e7/7416d118945d9bd622c4e86540f52dc18060423ce72d1fbc4c4f7981eeff/genie.libs.sdk-23.11-py3-none-any.whl", hash = "sha256:f82b0fa64f0efcd8db1c51469f3ab2c9dbfabe6f9840f643d5c553eab3305045", size = 2380447 }, +] + +[[package]] +name = "grpcio" +version = "1.70.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/69/e1/4b21b5017c33f3600dcc32b802bb48fe44a4d36d6c066f52650c7c2690fa/grpcio-1.70.0.tar.gz", hash = "sha256:8d1584a68d5922330025881e63a6c1b54cc8117291d382e4fa69339b6d914c56", size = 12788932 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/5f/d7fe323c18a2ec98a2a9b38fb985f5e843f76990298d7c4ce095f44b46a7/grpcio-1.70.0-cp38-cp38-linux_armv7l.whl", hash = "sha256:8058667a755f97407fca257c844018b80004ae8035565ebc2812cc550110718d", size = 5232027 }, + { url = "https://files.pythonhosted.org/packages/d4/4b/3d3b5548575b635f51883212a482cd237e8525535d4591b9dc7e5b2c2ddc/grpcio-1.70.0-cp38-cp38-macosx_10_14_universal2.whl", hash = "sha256:879a61bf52ff8ccacbedf534665bb5478ec8e86ad483e76fe4f729aaef867cab", size = 11448811 }, + { url = "https://files.pythonhosted.org/packages/8a/d7/9a0922fc12d339271c7e4e6691470172b7c13715fed7bd934274803f1527/grpcio-1.70.0-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:0ba0a173f4feacf90ee618fbc1a27956bfd21260cd31ced9bc707ef551ff7dc7", size = 5711890 }, + { url = "https://files.pythonhosted.org/packages/1e/ae/d4dbf8bff0f1d270f118d08558bc8dc0489e026d6620a4e3ee2d79d79041/grpcio-1.70.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:558c386ecb0148f4f99b1a65160f9d4b790ed3163e8610d11db47838d452512d", size = 6331933 }, + { url = "https://files.pythonhosted.org/packages/2c/64/66a74c02b00e00b919c245ca9da8e5c44e8692bf3fe7f27efbc97572566c/grpcio-1.70.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:412faabcc787bbc826f51be261ae5fa996b21263de5368a55dc2cf824dc5090e", size = 5950685 }, + { url = "https://files.pythonhosted.org/packages/b0/64/e992ac693118c37164e085676216d258804d7a5bbf3581d3f989c843a9a5/grpcio-1.70.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3b0f01f6ed9994d7a0b27eeddea43ceac1b7e6f3f9d86aeec0f0064b8cf50fdb", size = 6640974 }, + { url = "https://files.pythonhosted.org/packages/57/17/34d0a6af4477fd48b8b41d13782fb1e35b8841b17d6ac7a3eb24d2f3b17e/grpcio-1.70.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7385b1cb064734005204bc8994eed7dcb801ed6c2eda283f613ad8c6c75cf873", size = 6204792 }, + { url = "https://files.pythonhosted.org/packages/d3/e5/e45d8eb81929c0becd5bda413b60262f79d862e19cff632d496909aa3bd0/grpcio-1.70.0-cp38-cp38-win32.whl", hash = "sha256:07269ff4940f6fb6710951116a04cd70284da86d0a4368fd5a3b552744511f5a", size = 3620015 }, + { url = "https://files.pythonhosted.org/packages/87/7d/36009c38093e62969c708f20b86ab6761c2ba974b12ff10def6f397f24fa/grpcio-1.70.0-cp38-cp38-win_amd64.whl", hash = "sha256:aba19419aef9b254e15011b230a180e26e0f6864c90406fdbc255f01d83bc83c", size = 4307043 }, +] + +[[package]] +name = "gunicorn" +version = "23.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/34/72/9614c465dc206155d93eff0ca20d42e1e35afc533971379482de953521a4/gunicorn-23.0.0.tar.gz", hash = "sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec", size = 375031 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/7d/6dac2a6e1eba33ee43f318edbed4ff29151a49b5d37f080aad1e6469bca4/gunicorn-23.0.0-py3-none-any.whl", hash = "sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d", size = 85029 }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 }, +] + +[[package]] +name = "hier-config" +version = "2.2.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/a8/c2cab8410104de084142885e1a40453b6dc3f78758b8f221be89f0d00fcb/hier_config-2.2.3.tar.gz", hash = "sha256:6b0fb526c229b0f930f15a67be742d36230bf75a3041bf1d9d9487bbf9b01277", size = 18543 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/83/a22b6e7ae12f170c147c999932bb0ee1d257d3d48a27dbf2b6cb7b8e12d9/hier_config-2.2.3-py3-none-any.whl", hash = "sha256:9adb860278afcf3813a49b75886649c9a21f7cc0c89f9d720f47ce8edcf021ca", size = 21295 }, +] + +[[package]] +name = "httptools" +version = "0.6.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/9a/ce5e1f7e131522e6d3426e8e7a490b3a01f39a6696602e1c4f33f9e94277/httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c", size = 240639 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/73/e4877dfa233da9912062e49efd74d9f5deae95b4b736eb99742f8d751074/httptools-0.6.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d3f0d369e7ffbe59c4b6116a44d6a8eb4783aae027f2c0b366cf0aa964185dba", size = 202417 }, + { url = "https://files.pythonhosted.org/packages/04/06/24f105db5254d9689d9126ca09cd55c471241f26549041f33aea91a4c77e/httptools-0.6.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:94978a49b8f4569ad607cd4946b759d90b285e39c0d4640c6b36ca7a3ddf2efc", size = 105139 }, + { url = "https://files.pythonhosted.org/packages/32/c6/3623958d7899c439d5aeadcc936c3354baaf2d797e07670ccddbae5c4398/httptools-0.6.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40dc6a8e399e15ea525305a2ddba998b0af5caa2566bcd79dcbe8948181eeaff", size = 455956 }, + { url = "https://files.pythonhosted.org/packages/a0/cf/3de90444de495cbab24e648278a4fecb36c5bbf9ecdeeff09fca69e94ca9/httptools-0.6.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab9ba8dcf59de5181f6be44a77458e45a578fc99c31510b8c65b7d5acc3cf490", size = 453707 }, + { url = "https://files.pythonhosted.org/packages/33/92/f0928f8bae0a07d75bddff71835e554762974502165ea5ea78c624e3533e/httptools-0.6.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:fc411e1c0a7dcd2f902c7c48cf079947a7e65b5485dea9decb82b9105ca71a43", size = 434037 }, + { url = "https://files.pythonhosted.org/packages/d4/2b/618e8f2cf8b266a046c4524f4c214919762a9da4617e8b02da406e3747bc/httptools-0.6.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:d54efd20338ac52ba31e7da78e4a72570cf729fac82bc31ff9199bedf1dc7440", size = 434347 }, + { url = "https://files.pythonhosted.org/packages/a3/59/b7dc35b45ae31d692427f15870ff9ab082e667b96c5606fda2cd7b385687/httptools-0.6.4-cp38-cp38-win_amd64.whl", hash = "sha256:df959752a0c2748a65ab5387d08287abf6779ae9165916fe053e68ae1fbdc47f", size = 89888 }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, +] + +[[package]] +name = "importlib-resources" +version = "6.4.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/be/f3e8c6081b684f176b761e6a2fef02a0be939740ed6f54109a2951d806f3/importlib_resources-6.4.5.tar.gz", hash = "sha256:980862a1d16c9e147a59603677fa2aa5fd82b87f223b6cb870695bcfce830065", size = 43372 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/6a/4604f9ae2fa62ef47b9de2fa5ad599589d28c9fd1d335f32759813dfa91e/importlib_resources-6.4.5-py3-none-any.whl", hash = "sha256:ac29d5f956f01d5e4bb63102a5a19957f1b9175e45649977264a1416783bb717", size = 36115 }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, +] + +[[package]] +name = "ipaddress" +version = "1.0.23" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/9a/3e9da40ea28b8210dd6504d3fe9fe7e013b62bf45902b458d1cdc3c34ed9/ipaddress-1.0.23.tar.gz", hash = "sha256:b7f8e0369580bb4a24d5ba1d7cc29660a4a6987763faf1d8a8046830e020e7e2", size = 32958 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/f8/49697181b1651d8347d24c095ce46c7346c37335ddc7d255833e7cde674d/ipaddress-1.0.23-py2.py3-none-any.whl", hash = "sha256:6e0f4a39e66cb5bb9a137b00276a2eff74f93b71dcbdad6f10ff7df9d3557fcc", size = 18159 }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, +] + +[[package]] +name = "jinja2schema" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jinja2" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/60/6f/8db433c9b644654f77a5a85a251298b278b6fefe668c1d856ad34c61c811/jinja2schema-0.1.4.tar.gz", hash = "sha256:236e4ee6612a0ab5a5664c453c954a2c7e42b6be986c12f7b31f34f9082043bc", size = 19794 } + +[[package]] +name = "jsonpath-ng" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ply" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105 }, +] + +[[package]] +name = "jsonpickle" +version = "4.0.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/33/4bda317ab294722fcdfff8f63aab74af9fda3675a4652d984a101aa7587e/jsonpickle-4.0.5.tar.gz", hash = "sha256:f299818b39367c361b3f26bdba827d4249ab5d383cd93144d0f94b5417aacb35", size = 315661 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/1b/0e79cf115e0f54f1e8f56effb6ffd2ef8f92e9c324d692ede660067f1bfe/jsonpickle-4.0.5-py3-none-any.whl", hash = "sha256:b4ac7d0a75ddcdfd93445737f1d36ff28768690d43e54bf5d0ddb1d915e580df", size = 46382 }, +] + +[[package]] +name = "jsonschema" +version = "4.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "importlib-resources" }, + { name = "jsonschema-specifications" }, + { name = "pkgutil-resolve-name" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2023.12.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-resources" }, + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/b9/cc0cc592e7c195fb8a650c1d5990b10175cf13b4c97465c72ec841de9e4b/jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc", size = 13983 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/07/44bd408781594c4d0a027666ef27fab1e441b109dc3b76b4f836f8fd04fe/jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c", size = 18482 }, +] + +[[package]] +name = "junos-eznc" +version = "2.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jinja2" }, + { name = "lxml" }, + { name = "ncclient" }, + { name = "netaddr" }, + { name = "paramiko" }, + { name = "pyparsing" }, + { name = "pyserial" }, + { name = "pyyaml" }, + { name = "scp" }, + { name = "six" }, + { name = "transitions" }, + { name = "yamlordereddictloader" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5b/ea/1e0f77b4ecf101db14a56d71f3dc4c208189364ce846523943b72a734124/junos-eznc-2.6.3.tar.gz", hash = "sha256:4eee93d0af203af7cee54a8f0c7bd28af683e829edf1fd68feba85d0ad737395", size = 156166 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/5a/d4ac13a08b20cef8be2e4ae48e7bca4d2ae32d3fa22eb767e09b77a8be00/junos_eznc-2.6.3-py2.py3-none-any.whl", hash = "sha256:353fbe230a21caa021d37a0f840b09a9748a4f3d9689f46222200c3853d9bd20", size = 196721 }, +] + +[[package]] +name = "loguru" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "win32-setctime", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/30/d87a423766b24db416a46e9335b9602b054a72b96a88a241f2b09b560fa8/loguru-0.7.2.tar.gz", hash = "sha256:e671a53522515f34fd406340ee968cb9ecafbc4b36c679da03c18fd8d0bd51ac", size = 145103 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/0a/4f6fed21aa246c6b49b561ca55facacc2a44b87d65b8b92362a8e99ba202/loguru-0.7.2-py3-none-any.whl", hash = "sha256:003d71e3d3ed35f0f8984898359d65b79e5b21943f78af86aa5491210429b8eb", size = 62549 }, +] + +[[package]] +name = "lxml" +version = "5.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/3d/14e82fc7c8fb1b7761f7e748fd47e2ec8276d137b6acfe5a4bb73853e08f/lxml-5.4.0.tar.gz", hash = "sha256:d12832e1dbea4be280b22fd0ea7c9b87f0d8fc51ba06e92dc62d52f804f78ebd", size = 3679479 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/2f/18df18629d0b28ed00a1903033c627249ee002231c0c272cbb616a54dc61/lxml-5.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:eaf24066ad0b30917186420d51e2e3edf4b0e2ea68d8cd885b14dc8afdcf6556", size = 4439701 }, + { url = "https://files.pythonhosted.org/packages/a0/95/2a31efe19c8d6e4b7bdbcd1a9a6e0a2cb28472c9ea4c29b0e170c6bc7b08/lxml-5.4.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b31a3a77501d86d8ade128abb01082724c0dfd9524f542f2f07d693c9f1175f", size = 5109242 }, + { url = "https://files.pythonhosted.org/packages/d8/f9/afc3d28beb7125b09bc54b5e7194b4e1bf9f75e8a0ba3f357adc1f6c6f86/lxml-5.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e108352e203c7afd0eb91d782582f00a0b16a948d204d4dec8565024fafeea5", size = 4831235 }, + { url = "https://files.pythonhosted.org/packages/94/a7/31be3410d202bcd7fb3f21efd2fb868e07eff5c83d7db26e2c76aa1d72fb/lxml-5.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a11a96c3b3f7551c8a8109aa65e8594e551d5a84c76bf950da33d0fb6dfafab7", size = 4986329 }, + { url = "https://files.pythonhosted.org/packages/b6/72/ff7408e60fa972b5a34e719ecfa3fe292ec72868a703d7eb5fe92eae7183/lxml-5.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:ca755eebf0d9e62d6cb013f1261e510317a41bf4650f22963474a663fdfe02aa", size = 4819967 }, + { url = "https://files.pythonhosted.org/packages/03/b4/17df5c25d95198ffac5f8fc2a04586c2e8d1c1b7d9e77a8b7e016772f4ea/lxml-5.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:4cd915c0fb1bed47b5e6d6edd424ac25856252f09120e3e8ba5154b6b921860e", size = 5030259 }, + { url = "https://files.pythonhosted.org/packages/93/ab/3ddf099739ee9ffaf75c6367d4ea9512f1a7b0c72b6d2d37330c8fd23a02/lxml-5.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:226046e386556a45ebc787871d6d2467b32c37ce76c2680f5c608e25823ffc84", size = 4895573 }, + { url = "https://files.pythonhosted.org/packages/3e/e2/e6b880194eb24bd55fb48989ce4f653ec4cb31dbe3deeda16957601f71f3/lxml-5.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:b108134b9667bcd71236c5a02aad5ddd073e372fb5d48ea74853e009fe38acb6", size = 5084328 }, + { url = "https://files.pythonhosted.org/packages/c2/1a/16467b52c9b5fea958b2173b3fb03be295f308520c9fda1556099641b14e/lxml-5.4.0-cp38-cp38-win32.whl", hash = "sha256:1320091caa89805df7dcb9e908add28166113dcd062590668514dbd510798c88", size = 3484259 }, + { url = "https://files.pythonhosted.org/packages/7a/c2/1365fd76b35a9a03a7ac4a0ce8372b4f792bd64c9d226532fe4ff6923cb4/lxml-5.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:073eb6dcdf1f587d9b88c8c93528b57eccda40209cf9be549d469b942b41d70b", size = 3814595 }, + { url = "https://files.pythonhosted.org/packages/b9/61/08ef39c34841750f3ba4c7a7b69a0adef131b1863d5547bbd3a8508c6e8e/lxml-5.4.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:56dbdbab0551532bb26c19c914848d7251d73edb507c3079d6805fa8bba5b706", size = 3893294 }, + { url = "https://files.pythonhosted.org/packages/8e/79/4194b498e7e936d1d958e89451292f371764e5dd3b2cba5c99f34a94ec87/lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14479c2ad1cb08b62bb941ba8e0e05938524ee3c3114644df905d2331c76cd57", size = 4219875 }, + { url = "https://files.pythonhosted.org/packages/3b/65/30be662dff12cfb38cd54a83b007864672717a0fa9d026452fb7933a3aec/lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32697d2ea994e0db19c1df9e40275ffe84973e4232b5c274f47e7c1ec9763cdd", size = 4309450 }, + { url = "https://files.pythonhosted.org/packages/c2/f9/dbba21a5ed4b2e7d96dedd9a9eb6da0aa3730964965b02e412b58c8539e9/lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:24f6df5f24fc3385f622c0c9d63fe34604893bc1a5bdbb2dbf5870f85f9a404a", size = 4213198 }, + { url = "https://files.pythonhosted.org/packages/06/de/96e9fd26038b74306967f854bfad25ed9f9f2a3150361bc0562f770a17c9/lxml-5.4.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:151d6c40bc9db11e960619d2bf2ec5829f0aaffb10b41dcf6ad2ce0f3c0b2325", size = 4331737 }, + { url = "https://files.pythonhosted.org/packages/61/21/dbf79a9c96172111c546f7ec9cab1fb4ab7a49fec42a62021840293d1468/lxml-5.4.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:4025bf2884ac4370a3243c5aa8d66d3cb9e15d3ddd0af2d796eccc5f0244390e", size = 3489930 }, +] + +[[package]] +name = "markupsafe" +version = "2.1.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/87/5b/aae44c6655f3801e81aa3eef09dbbf012431987ba564d7231722f68df02d/MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b", size = 19384 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ff/2c942a82c35a49df5de3a630ce0a8456ac2969691b230e530ac12314364c/MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a", size = 18192 }, + { url = "https://files.pythonhosted.org/packages/4f/14/6f294b9c4f969d0c801a4615e221c1e084722ea6114ab2114189c5b8cbe0/MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46", size = 14072 }, + { url = "https://files.pythonhosted.org/packages/81/d4/fd74714ed30a1dedd0b82427c02fa4deec64f173831ec716da11c51a50aa/MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532", size = 26928 }, + { url = "https://files.pythonhosted.org/packages/c7/bd/50319665ce81bb10e90d1cf76f9e1aa269ea6f7fa30ab4521f14d122a3df/MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab", size = 26106 }, + { url = "https://files.pythonhosted.org/packages/4c/6f/f2b0f675635b05f6afd5ea03c094557bdb8622fa8e673387444fe8d8e787/MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68", size = 25781 }, + { url = "https://files.pythonhosted.org/packages/51/e0/393467cf899b34a9d3678e78961c2c8cdf49fb902a959ba54ece01273fb1/MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0", size = 30518 }, + { url = "https://files.pythonhosted.org/packages/f6/02/5437e2ad33047290dafced9df741d9efc3e716b75583bbd73a9984f1b6f7/MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4", size = 29669 }, + { url = "https://files.pythonhosted.org/packages/0e/7d/968284145ffd9d726183ed6237c77938c021abacde4e073020f920e060b2/MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3", size = 29933 }, + { url = "https://files.pythonhosted.org/packages/bf/f3/ecb00fc8ab02b7beae8699f34db9357ae49d9f21d4d3de6f305f34fa949e/MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff", size = 16656 }, + { url = "https://files.pythonhosted.org/packages/92/21/357205f03514a49b293e214ac39de01fadd0970a6e05e4bf1ddd0ffd0881/MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029", size = 17206 }, +] + +[[package]] +name = "mock" +version = "5.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/07/8c/14c2ae915e5f9dca5a22edd68b35be94400719ccfa068a03e0fb63d0f6f6/mock-5.2.0.tar.gz", hash = "sha256:4e460e818629b4b173f32d08bf30d3af8123afbb8e04bb5707a1fd4799e503f0", size = 92796 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/d9/617e6af809bf3a1d468e0d58c3997b1dc219a9a9202e650d30c2fc85d481/mock-5.2.0-py3-none-any.whl", hash = "sha256:7ba87f72ca0e915175596069dbbcc7c75af7b5e9b9bc107ad6349ede0819982f", size = 31617 }, +] + +[[package]] +name = "names-generator" +version = "0.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cmdkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e5/07/61bf80261e47a4b4f827023c83756414b02860c067e4ce593e829b6d46be/names_generator-0.1.0.tar.gz", hash = "sha256:03d0deb20e4c179688018103eaee4004ac2b8d8ccc1f8152272f75168b6a0b41", size = 22929 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ae/56/788584aef9785906b3bbec1216dfc63a57f5ad4203af71457ed1062e35a1/names_generator-0.1.0-py3-none-any.whl", hash = "sha256:8fec2903c71204b64bbb12f2cce0fdabdcde2aa83ebea29025c7b6f62b55832b", size = 26689 }, +] + +[[package]] +name = "napalm" +version = "3.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, + { name = "ciscoconfparse" }, + { name = "future" }, + { name = "jinja2" }, + { name = "junos-eznc" }, + { name = "lxml" }, + { name = "ncclient" }, + { name = "netaddr" }, + { name = "netmiko" }, + { name = "paramiko" }, + { name = "pyeapi" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "scp" }, + { name = "setuptools" }, + { name = "textfsm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/96/3138d9ef2186647fc02af1dc330fb9f778e72ad2d632a99ee727a361cb5a/napalm-3.4.1.tar.gz", hash = "sha256:9a9673f79a1c257a23af62675689d0d34a8c7b1a98702f5c1aab841bf1a829cd", size = 223322 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/60/8e2e0cca6d76c16c06a6ca9421a3bded96780a2b9ceccf3e720d1c536c6a/napalm-3.4.1-py2.py3-none-any.whl", hash = "sha256:c1ab88c8a7474d3657fed69afb2d94cef27f5d57bb1973ecba8def39a1990839", size = 256838 }, +] + +[[package]] +name = "ncclient" +version = "0.6.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lxml" }, + { name = "paramiko" }, + { name = "setuptools" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/fd/ccae38393c22099229b68e8cdf061408b824e09ee207e2401c224398c5b0/ncclient-0.6.9.tar.gz", hash = "sha256:0112f2ad41fb658f52446d870853a63691d69299c73c7351c520d38dbd8dc0c4", size = 118081 } + +[[package]] +name = "netaddr" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/90/188b2a69654f27b221fba92fda7217778208532c962509e959a9cee5229d/netaddr-1.3.0.tar.gz", hash = "sha256:5c3c3d9895b551b763779ba7db7a03487dc1f8e3b385af819af341ae9ef6e48a", size = 2260504 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/cc/f4fe2c7ce68b92cbf5b2d379ca366e1edae38cccaad00f69f529b460c3ef/netaddr-1.3.0-py3-none-any.whl", hash = "sha256:c2c6a8ebe5554ce33b7d5b3a306b71bbb373e000bbbf2350dd5213cc56e3dbbe", size = 2262023 }, +] + +[[package]] +name = "netmiko" +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ntc-templates" }, + { name = "paramiko" }, + { name = "pyserial" }, + { name = "scp" }, + { name = "setuptools" }, + { name = "tenacity" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/80/07/896503d8744409eb677edf8d656dbee73b036b50fcbc07ec0e9d6d7a6b57/netmiko-3.3.2.tar.gz", hash = "sha256:84832d2b7d19ef28b7255a6e0217a68ed5727c03206a5e74abc101dc42550d97", size = 483570 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/5a/8db044231644359b1542a7d6e423aed7c925e62021c19d3f23256c3567cb/netmiko-3.3.2-py2.py3-none-any.whl", hash = "sha256:1f8b86432fde2fb3c15ed86e130a05e7da358aa1de23fc7c520d8dbac2d4781a", size = 165508 }, +] + +[[package]] +name = "netpalm" +version = "0.2.8" +source = { virtual = "." } +dependencies = [ + { name = "apscheduler" }, + { name = "cachelib" }, + { name = "fastapi" }, + { name = "filelock" }, + { name = "genie" }, + { name = "jinja2schema" }, + { name = "jsonpath-ng" }, + { name = "jsonschema" }, + { name = "names-generator" }, + { name = "napalm" }, + { name = "ncclient" }, + { name = "netmiko" }, + { name = "puresnmp" }, + { name = "pydantic" }, + { name = "python-redis-lock" }, + { name = "pyyaml" }, + { name = "redis" }, + { name = "requests" }, + { name = "rq" }, + { name = "ttp" }, + { name = "unicon" }, + { name = "xmltodict" }, +] + +[package.dev-dependencies] +controller = [ + { name = "aiofiles" }, + { name = "gunicorn" }, + { name = "httptools" }, + { name = "pytest" }, + { name = "pytest-mock" }, + { name = "pytest-timeout" }, + { name = "uvicorn" }, + { name = "uvloop" }, +] + +[package.metadata] +requires-dist = [ + { name = "apscheduler", specifier = "==3.6.3" }, + { name = "cachelib", specifier = "==0.3.0" }, + { name = "fastapi", specifier = "==0.115.12" }, + { name = "filelock", specifier = "==3.16.1" }, + { name = "genie", specifier = "==23.11" }, + { name = "jinja2schema", specifier = "==0.1.4" }, + { name = "jsonpath-ng", specifier = "==1.7.0" }, + { name = "jsonschema", specifier = "==4.23.0" }, + { name = "names-generator", specifier = "==0.1.0" }, + { name = "napalm", specifier = ">=3.4.1" }, + { name = "ncclient", specifier = "==0.6.9" }, + { name = "netmiko", specifier = "==3.3.2" }, + { name = "puresnmp", specifier = "==1.9.1" }, + { name = "pydantic", specifier = "==1.10.13" }, + { name = "python-redis-lock", specifier = "==4.0.0" }, + { name = "pyyaml", specifier = "==6.0.2" }, + { name = "redis", specifier = "==4.5.1" }, + { name = "requests", specifier = "==2.32.3" }, + { name = "rq", specifier = "==1.16.2" }, + { name = "ttp", specifier = "==0.9.5" }, + { name = "unicon", specifier = "==23.11" }, + { name = "xmltodict", specifier = "==0.14.2" }, +] + +[package.metadata.requires-dev] +controller = [ + { name = "aiofiles", specifier = "==24.1.0" }, + { name = "gunicorn", specifier = "==23.0.0" }, + { name = "httptools", specifier = "==0.6.4" }, + { name = "pytest", specifier = "==8.3.5" }, + { name = "pytest-mock", specifier = "==3.14.0" }, + { name = "pytest-timeout", specifier = "==2.4.0" }, + { name = "uvicorn", specifier = "==0.33.0" }, + { name = "uvloop", specifier = "==0.21.0" }, +] + +[[package]] +name = "ntc-templates" +version = "7.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "textfsm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/0f/b7167c3923373a409893721a68e6383dc6503d667611efdcfd46c957849c/ntc_templates-7.8.0.tar.gz", hash = "sha256:693536d228de466e0ce895226586f090eb91fcd4e209aeb12527391b4340fc62", size = 301749 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/19/c0deb057ab557fe6bd406d3125d509866184d5bc25517d2a8362236fbe25/ntc_templates-7.8.0-py3-none-any.whl", hash = "sha256:db0e8328117b6ce51e0fffee291a2cf7d8771977fbf4d751e457c49748e9c56b", size = 602453 }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, +] + +[[package]] +name = "paramiko" +version = "3.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "bcrypt" }, + { name = "cryptography" }, + { name = "pynacl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7d/15/ad6ce226e8138315f2451c2aeea985bf35ee910afb477bae7477dc3a8f3b/paramiko-3.5.1.tar.gz", hash = "sha256:b2c665bc45b2b215bd7d7f039901b14b067da00f3a11e6640995fd58f2664822", size = 1566110 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/f8/c7bd0ef12954a81a1d3cea60a13946bd9a49a0036a5927770c461eade7ae/paramiko-3.5.1-py3-none-any.whl", hash = "sha256:43b9a0501fc2b5e70680388d9346cf252cfb7d00b0667c39e80eb43a408b8f61", size = 227298 }, +] + +[[package]] +name = "passlib" +version = "1.7.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/06/9da9ee59a67fae7761aab3ccc84fa4f3f33f125b370f1ccdb915bf967c11/passlib-1.7.4.tar.gz", hash = "sha256:defd50f72b65c5402ab2c573830a6978e5f202ad0d984793c8dde2c4152ebe04", size = 689844 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/a4/ab6b7589382ca3df236e03faa71deac88cae040af60c071a78d254a62172/passlib-1.7.4-py2.py3-none-any.whl", hash = "sha256:aa6bca462b8d8bda89c70b382f0c298a20b5560af6cbfa2dce410c0a2fb669f1", size = 525554 }, +] + +[[package]] +name = "pkgutil-resolve-name" +version = "1.3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/f2/f2891a9dc37398696ddd945012b90ef8d0a034f0012e3f83c3f7a70b0f79/pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174", size = 5054 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/5c/3d4882ba113fd55bdba9326c1e4c62a15e674a2501de4869e6bd6301f87e/pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e", size = 4734 }, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, +] + +[[package]] +name = "ply" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567 }, +] + +[[package]] +name = "prettytable" +version = "3.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/57/0a642bec16d5736b9baaac7e830bedccd10341dc2858075c34d5aec5c8b6/prettytable-3.11.0.tar.gz", hash = "sha256:7e23ca1e68bbfd06ba8de98bf553bf3493264c96d5e8a615c0471025deeba722", size = 57527 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/5a/bfdc26c0e19156992b1dc9de47f0b2e8992fe43db9981d814f860bdce2b3/prettytable-3.11.0-py3-none-any.whl", hash = "sha256:aa17083feb6c71da11a68b2c213b04675c4af4ce9c541762632ca3f2cb3546dd", size = 28734 }, +] + +[[package]] +name = "protobuf" +version = "5.29.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/17/7d/b9dca7365f0e2c4fa7c193ff795427cfa6290147e5185ab11ece280a18e7/protobuf-5.29.4.tar.gz", hash = "sha256:4f1dfcd7997b31ef8f53ec82781ff434a28bf71d9102ddde14d076adcfc78c99", size = 424902 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/b2/043a1a1a20edd134563699b0e91862726a0dc9146c090743b6c44d798e75/protobuf-5.29.4-cp310-abi3-win32.whl", hash = "sha256:13eb236f8eb9ec34e63fc8b1d6efd2777d062fa6aaa68268fb67cf77f6839ad7", size = 422709 }, + { url = "https://files.pythonhosted.org/packages/79/fc/2474b59570daa818de6124c0a15741ee3e5d6302e9d6ce0bdfd12e98119f/protobuf-5.29.4-cp310-abi3-win_amd64.whl", hash = "sha256:bcefcdf3976233f8a502d265eb65ea740c989bacc6c30a58290ed0e519eb4b8d", size = 434506 }, + { url = "https://files.pythonhosted.org/packages/46/de/7c126bbb06aa0f8a7b38aaf8bd746c514d70e6a2a3f6dd460b3b7aad7aae/protobuf-5.29.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:307ecba1d852ec237e9ba668e087326a67564ef83e45a0189a772ede9e854dd0", size = 417826 }, + { url = "https://files.pythonhosted.org/packages/a2/b5/bade14ae31ba871a139aa45e7a8183d869efe87c34a4850c87b936963261/protobuf-5.29.4-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:aec4962f9ea93c431d5714ed1be1c93f13e1a8618e70035ba2b0564d9e633f2e", size = 319574 }, + { url = "https://files.pythonhosted.org/packages/46/88/b01ed2291aae68b708f7d334288ad5fb3e7aa769a9c309c91a0d55cb91b0/protobuf-5.29.4-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:d7d3f7d1d5a66ed4942d4fefb12ac4b14a29028b209d4bfb25c68ae172059922", size = 319672 }, + { url = "https://files.pythonhosted.org/packages/a2/3e/b8f4eef854d23e4283864d7554069e6c72469475202bda22d5a17754efd9/protobuf-5.29.4-cp38-cp38-win32.whl", hash = "sha256:1832f0515b62d12d8e6ffc078d7e9eb06969aa6dc13c13e1036e39d73bebc2de", size = 422593 }, + { url = "https://files.pythonhosted.org/packages/0c/d9/9716a66e4220f6a327aaee2ae2d4de3d9bf414247f7aab081ad2ce980371/protobuf-5.29.4-cp38-cp38-win_amd64.whl", hash = "sha256:476cb7b14914c780605a8cf62e38c2a85f8caff2e28a6a0bad827ec7d6c85d68", size = 434517 }, + { url = "https://files.pythonhosted.org/packages/12/fb/a586e0c973c95502e054ac5f81f88394f24ccc7982dac19c515acd9e2c93/protobuf-5.29.4-py3-none-any.whl", hash = "sha256:3fde11b505e1597f71b875ef2fc52062b6a9740e5f7c8997ce878b6009145862", size = 172551 }, +] + +[[package]] +name = "puresnmp" +version = "1.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipaddress" }, + { name = "mock" }, + { name = "six" }, + { name = "t61codec" }, + { name = "typing" }, + { name = "verlib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e3/95/ac16b6324194b09b4fd4e5943e1d9ed74b4a2737e42d8eb6a4c6b9d24cea/puresnmp-1.9.1.tar.gz", hash = "sha256:4c9d9784733deadbd4a83a50e8d4c5b4df2ab7eaa81fb604c4319515982904ca", size = 61876 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/f2/9da08e8e3c47de9f74fe46685355c2bd735ba2f14dd24ab099a9c8c0066d/puresnmp-1.9.1-py2.py3-none-any.whl", hash = "sha256:bc7c442b834501a7f9ca31507b8979e0a5a5d6e4d036946d66eac4af9ff8defa", size = 79618 }, +] + +[[package]] +name = "pyasn1" +version = "0.4.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a4/db/fffec68299e6d7bad3d504147f9094830b704527a7fc098b721d38cc7fa7/pyasn1-0.4.8.tar.gz", hash = "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba", size = 146820 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/1e/a94a8d635fa3ce4cfc7f506003548d0a2447ae76fd5ca53932970fe3053f/pyasn1-0.4.8-py2.py3-none-any.whl", hash = "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d", size = 77145 }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, +] + +[[package]] +name = "pydantic" +version = "1.10.13" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/51/cd/721eb771f3f09f60de0807e240c3acf44c38828d0ced869fe8df7e79801b/pydantic-1.10.13.tar.gz", hash = "sha256:32c8b48dcd3b2ac4e78b0ba4af3a2c2eb6048cb75202f0ea7b34feb740efc340", size = 348297 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/d7/dcc878bac609c805925696d29a9a517802cb53d9d750b17935c22bc2177c/pydantic-1.10.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c958d053453a1c4b1c2062b05cd42d9d5c8eb67537b8d5a7e3c3032943ecd261", size = 2879568 }, + { url = "https://files.pythonhosted.org/packages/b4/6e/91c24ce6d5dc1edf2b5322443e3ea80c340cb1305f6be35f96d93c55215b/pydantic-1.10.13-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4c5370a7edaac06daee3af1c8b1192e305bc102abcbf2a92374b5bc793818599", size = 2542761 }, + { url = "https://files.pythonhosted.org/packages/74/0f/25686a4276c07a3d7b72595c58d46820a75d98e07ed25888ef1ad1a81e34/pydantic-1.10.13-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d6f6e7305244bddb4414ba7094ce910560c907bdfa3501e9db1a7fd7eaea127", size = 3204846 }, + { url = "https://files.pythonhosted.org/packages/2a/f0/72dc0abf97451a3dea9014c4d93d201e23f793dea3ae191089a78754afc9/pydantic-1.10.13-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3a3c792a58e1622667a2837512099eac62490cdfd63bd407993aaf200a4cf1f", size = 3222996 }, + { url = "https://files.pythonhosted.org/packages/10/3a/56fc263bb2cfcfda69659b3d0441060850237670577696df7e6e7b30228e/pydantic-1.10.13-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c636925f38b8db208e09d344c7aa4f29a86bb9947495dd6b6d376ad10334fb78", size = 3249510 }, + { url = "https://files.pythonhosted.org/packages/e7/93/d60c03d39e966ab7b538c92210a7afe30c92e678f53ef62f700488f07165/pydantic-1.10.13-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:678bcf5591b63cc917100dc50ab6caebe597ac67e8c9ccb75e698f66038ea953", size = 3227852 }, + { url = "https://files.pythonhosted.org/packages/ec/c1/876164acacfa55790cf47acc67c794afcb5805394517af67e026409b24e6/pydantic-1.10.13-cp38-cp38-win_amd64.whl", hash = "sha256:6cf25c1a65c27923a17b3da28a0bdb99f62ee04230c931d83e888012851f4e7f", size = 2225311 }, + { url = "https://files.pythonhosted.org/packages/39/9f/ab6d19c5d3fccc1e3e0d835ac773031388802b31d93937daf878465c2ecf/pydantic-1.10.13-py3-none-any.whl", hash = "sha256:b87326822e71bd5f313e7d3bfdc77ac3247035ac10b0c0618bd99dcf95b1e687", size = 158601 }, +] + +[[package]] +name = "pyeapi" +version = "1.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "netaddr" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/32/af/23dd251e108807a31a19d8f6ea7040ba597d2c67f6716c82e5428fd9ce91/pyeapi-1.0.4.tar.gz", hash = "sha256:05920677246823cd3dddf7d4d0f831fbc86fd416f356706a03bc56a291d78f3d", size = 151406 } + +[[package]] +name = "pyftpdlib" +version = "2.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b4/0c/32bf0a7c88efe147bc3bc6586216d92269d196c59f149b05efa973834946/pyftpdlib-2.0.1.tar.gz", hash = "sha256:ef0d172a82bfae10e2dec222e87533514609d41bf4b0fd0f07e29d4380fb96bf", size = 202285 } + +[[package]] +name = "pynacl" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba", size = 3392854 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1", size = 349920 }, + { url = "https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92", size = 601722 }, + { url = "https://files.pythonhosted.org/packages/5d/70/87a065c37cca41a75f2ce113a5a2c2aa7533be648b184ade58971b5f7ccc/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394", size = 680087 }, + { url = "https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d", size = 856678 }, + { url = "https://files.pythonhosted.org/packages/66/28/ca86676b69bf9f90e710571b67450508484388bfce09acf8a46f0b8c785f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858", size = 1133660 }, + { url = "https://files.pythonhosted.org/packages/3d/85/c262db650e86812585e2bc59e497a8f59948a005325a11bbbc9ecd3fe26b/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b", size = 663824 }, + { url = "https://files.pythonhosted.org/packages/fd/1a/cc308a884bd299b651f1633acb978e8596c71c33ca85e9dc9fa33a5399b9/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff", size = 1117912 }, + { url = "https://files.pythonhosted.org/packages/25/2d/b7df6ddb0c2a33afdb358f8af6ea3b8c4d1196ca45497dd37a56f0c122be/PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543", size = 204624 }, + { url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93", size = 212141 }, +] + +[[package]] +name = "pyparsing" +version = "3.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/08/13f3bce01b2061f2bbd582c9df82723de943784cf719a35ac886c652043a/pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032", size = 900231 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/0c/0e3c05b1c87bb6a1c76d281b0f35e78d2d80ac91b5f8f524cebf77f51049/pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c", size = 104100 }, +] + +[[package]] +name = "pyserial" +version = "3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1e/7d/ae3f0a63f41e4d2f6cb66a5b57197850f919f59e558159a4dd3a818f5082/pyserial-3.5.tar.gz", hash = "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb", size = 159125 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/bc/587a445451b253b285629263eb51c2d8e9bcea4fc97826266d186f96f558/pyserial-3.5-py2.py3-none-any.whl", hash = "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0", size = 90585 }, +] + +[[package]] +name = "pysmi-lextudio" +version = "1.4.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jinja2" }, + { name = "ply" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c8/0c/bec628167236bfea4bdf780f573f9c16f8977d1fe1e9123100abb1e7b683/pysmi_lextudio-1.4.3.tar.gz", hash = "sha256:7d255fb38669410835acf6c2e8ab41975a6d8e64593b119552e36ecba004054f", size = 108710 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/f4/8a64590456991348c99b526aec421ced5d0b4e7c1f05baf02a8338be4464/pysmi_lextudio-1.4.3-py3-none-any.whl", hash = "sha256:cb629c6386a30c976f83c29fc71e53b06d60f15094d0c0114cf8d095351b76e5", size = 83711 }, +] + +[[package]] +name = "pysnmp-lextudio" +version = "5.0.29" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, + { name = "pysmi-lextudio" }, + { name = "pysnmpcrypto" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/3f/25305c871230504e93367e4a93394bb1b266b13a61c06a005e4b946cfaeb/pysnmp_lextudio-5.0.29.tar.gz", hash = "sha256:eacc5f33d3a8c7a30122e5f06fd97393a0f101961ffb3f549eabd33ea22f5f6c", size = 405783 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/82/40bc01bd3da64befbf9b8124b7d376b59767da2891e1feb41fcaaa302a8f/pysnmp_lextudio-5.0.29-py3-none-any.whl", hash = "sha256:073e93cac4b29be9f40ea5514ad5ac3ba6c26824a96b7a2a96dab7cfa6422e5d", size = 289870 }, +] + +[[package]] +name = "pysnmpcrypto" +version = "0.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/87/86a32362944ea2d554dce797f3988e9a9bdd24447b906c99d44d1f70506a/pysnmpcrypto-0.0.4.tar.gz", hash = "sha256:b635fb3b1ec6637b9a0033f50506214e16eb84574b1d25ab027bbde4caa55129", size = 7244 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/ee/3ba0ddd4650ad5251479be614dacff65db920274f575825d48663a4ce7b9/pysnmpcrypto-0.0.4-py2.py3-none-any.whl", hash = "sha256:5889733caa030f45d9e03ea9d6370fb06426a8cb7f839aabbcdde33c6f634679", size = 6502 }, +] + +[[package]] +name = "pytest" +version = "8.3.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "tomli" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, +] + +[[package]] +name = "pytest-mock" +version = "3.14.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/90/a955c3ab35ccd41ad4de556596fa86685bf4fc5ffcc62d22d856cfd4e29a/pytest-mock-3.14.0.tar.gz", hash = "sha256:2719255a1efeceadbc056d6bf3df3d1c5015530fb40cf347c0f9afac88410bd0", size = 32814 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/3b/b26f90f74e2986a82df6e7ac7e319b8ea7ccece1caec9f8ab6104dc70603/pytest_mock-3.14.0-py3-none-any.whl", hash = "sha256:0b72c38033392a5f4621342fe11e9219ac11ec9d375f8e2a0c164539e0d70f6f", size = 9863 }, +] + +[[package]] +name = "pytest-timeout" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ac/82/4c9ecabab13363e72d880f2fb504c5f750433b2b6f16e99f4ec21ada284c/pytest_timeout-2.4.0.tar.gz", hash = "sha256:7e68e90b01f9eff71332b25001f85c75495fc4e3a836701876183c4bcfd0540a", size = 17973 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/b6/3127540ecdf1464a00e5a01ee60a1b09175f6913f0644ac748494d9c4b21/pytest_timeout-2.4.0-py3-none-any.whl", hash = "sha256:c42667e5cdadb151aeb5b26d114aff6bdf5a907f176a007a30b940d3d865b5c2", size = 14382 }, +] + +[[package]] +name = "python-redis-lock" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "redis" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/19/d7/a2a97c73d39e68aacce02667885b9e0b575eb9082866a04fbf098b4c4d99/python-redis-lock-4.0.0.tar.gz", hash = "sha256:4abd0bcf49136acad66727bf5486dd2494078ca55e49efa693f794077319091a", size = 162533 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/70/c5dfaec2085d9be10792704f108543ba1802e228bf040632c673066d8e78/python_redis_lock-4.0.0-py3-none-any.whl", hash = "sha256:ff786e587569415f31e64ca9337fce47c4206e832776e9e42b83bfb9ee1af4bd", size = 12165 }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/74/d9/323a59d506f12f498c2097488d80d16f4cf965cee1791eab58b56b19f47a/PyYAML-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a", size = 183218 }, + { url = "https://files.pythonhosted.org/packages/74/cc/20c34d00f04d785f2028737e2e2a8254e1425102e730fee1d6396f832577/PyYAML-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5", size = 728067 }, + { url = "https://files.pythonhosted.org/packages/20/52/551c69ca1501d21c0de51ddafa8c23a0191ef296ff098e98358f69080577/PyYAML-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d", size = 757812 }, + { url = "https://files.pythonhosted.org/packages/fd/7f/2c3697bba5d4aa5cc2afe81826d73dfae5f049458e44732c7a0938baa673/PyYAML-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083", size = 746531 }, + { url = "https://files.pythonhosted.org/packages/8c/ab/6226d3df99900e580091bb44258fde77a8433511a86883bd4681ea19a858/PyYAML-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706", size = 800820 }, + { url = "https://files.pythonhosted.org/packages/a0/99/a9eb0f3e710c06c5d922026f6736e920d431812ace24aae38228d0d64b04/PyYAML-6.0.2-cp38-cp38-win32.whl", hash = "sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a", size = 145514 }, + { url = "https://files.pythonhosted.org/packages/75/8a/ee831ad5fafa4431099aa4e078d4c8efd43cd5e48fbc774641d233b683a9/PyYAML-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff", size = 162702 }, +] + +[[package]] +name = "redis" +version = "4.5.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "async-timeout" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/44/f4/6e22050869494f304c8f55341f45e68664c1da75d608a02832c70be96f6a/redis-4.5.1.tar.gz", hash = "sha256:1eec3741cda408d3a5f84b78d089c8b8d895f21b3b050988351e925faf202864", size = 4550408 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/06/b5/328851ee54bbf00cc609671a658e0420d88aa2b4f5ace7aa669932d59a0e/redis-4.5.1-py3-none-any.whl", hash = "sha256:5deb072d26e67d2be1712603bfb7947ec3431fb0eec9c578994052e33035af6d", size = 238453 }, +] + +[[package]] +name = "referencing" +version = "0.35.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/73ca1f8e72fff6fa52119dbd185f73a907b1989428917b24cff660129b6d/referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c", size = 62991 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/59/2056f61236782a2c86b33906c025d4f4a0b17be0161b63b70fd9e8775d36/referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de", size = 26684 }, +] + +[[package]] +name = "requests" +version = "2.32.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, +] + +[[package]] +name = "rest-connector" +version = "23.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dict2xml" }, + { name = "f5-icontrol-rest" }, + { name = "requests" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/34/979ef44739d979df87f17b65f2bedb3fac6c9540c16e456102dd58770332/rest.connector-23.11-py3-none-any.whl", hash = "sha256:299d273355858d8b2b4039ea3e1afe0e30b79f10145a2898ea398897608543df", size = 80293 }, +] + +[[package]] +name = "rpds-py" +version = "0.20.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/25/cb/8e919951f55d109d658f81c9b49d0cc3b48637c50792c5d2e77032b8c5da/rpds_py-0.20.1.tar.gz", hash = "sha256:e1791c4aabd117653530dccd24108fa03cc6baf21f58b950d0a73c3b3b29a350", size = 25931 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/ef/b1883734ea0cd9996de793cdc38c32a28143b04911d1e570090acd8a9162/rpds_py-0.20.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:5b48e790e0355865197ad0aca8cde3d8ede347831e1959e158369eb3493d2191", size = 327757 }, + { url = "https://files.pythonhosted.org/packages/54/63/47d34dc4ddb3da73e78e10c9009dcf8edc42d355a221351c05c822c2a50b/rpds_py-0.20.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3e310838a5801795207c66c73ea903deda321e6146d6f282e85fa7e3e4854804", size = 318785 }, + { url = "https://files.pythonhosted.org/packages/f7/e1/d6323be4afbe3013f28725553b7bfa80b3f013f91678af258f579f8ea8f9/rpds_py-0.20.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2249280b870e6a42c0d972339e9cc22ee98730a99cd7f2f727549af80dd5a963", size = 361511 }, + { url = "https://files.pythonhosted.org/packages/ab/d3/c40e4d9ecd571f0f50fe69bc53fe608d7b2c49b30738b480044990260838/rpds_py-0.20.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e79059d67bea28b53d255c1437b25391653263f0e69cd7dec170d778fdbca95e", size = 370201 }, + { url = "https://files.pythonhosted.org/packages/f1/b6/96a4a9977a8a06c2c49d90aa571346aff1642abf15066a39a0b4817bf049/rpds_py-0.20.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2b431c777c9653e569986ecf69ff4a5dba281cded16043d348bf9ba505486f36", size = 403866 }, + { url = "https://files.pythonhosted.org/packages/cd/8f/702b52287949314b498a311f92b5ee0ba30c702a27e0e6b560e2da43b8d5/rpds_py-0.20.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da584ff96ec95e97925174eb8237e32f626e7a1a97888cdd27ee2f1f24dd0ad8", size = 430163 }, + { url = "https://files.pythonhosted.org/packages/c4/ce/af016c81fda833bf125b20d1677d816f230cad2ab189f46bcbfea3c7a375/rpds_py-0.20.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02a0629ec053fc013808a85178524e3cb63a61dbc35b22499870194a63578fb9", size = 360776 }, + { url = "https://files.pythonhosted.org/packages/08/a7/988e179c9bef55821abe41762228d65077e0570ca75c9efbcd1bc6e263b4/rpds_py-0.20.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fbf15aff64a163db29a91ed0868af181d6f68ec1a3a7d5afcfe4501252840bad", size = 383008 }, + { url = "https://files.pythonhosted.org/packages/96/b0/e4077f7f1b9622112ae83254aedfb691490278793299bc06dcf54ec8c8e4/rpds_py-0.20.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:07924c1b938798797d60c6308fa8ad3b3f0201802f82e4a2c41bb3fafb44cc28", size = 546371 }, + { url = "https://files.pythonhosted.org/packages/e4/5e/1d4dd08ec0352cfe516ea93ea1993c2f656f893c87dafcd9312bd07f65f7/rpds_py-0.20.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:4a5a844f68776a7715ecb30843b453f07ac89bad393431efbf7accca3ef599c1", size = 549809 }, + { url = "https://files.pythonhosted.org/packages/57/ac/a716b4729ff23ec034b7d2ff76a86e6f0753c4098401bdfdf55b2efe90e6/rpds_py-0.20.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:518d2ca43c358929bf08f9079b617f1c2ca6e8848f83c1225c88caeac46e6cbc", size = 528492 }, + { url = "https://files.pythonhosted.org/packages/e0/ed/a0b58a9ecef79918169eacdabd14eb4c5c86ce71184ed56b80c6eb425828/rpds_py-0.20.1-cp38-none-win32.whl", hash = "sha256:3aea7eed3e55119635a74bbeb80b35e776bafccb70d97e8ff838816c124539f1", size = 200512 }, + { url = "https://files.pythonhosted.org/packages/5f/c3/222e25124283afc76c473fcd2c547e82ec57683fa31cb4d6c6eb44e5d57a/rpds_py-0.20.1-cp38-none-win_amd64.whl", hash = "sha256:7dca7081e9a0c3b6490a145593f6fe3173a94197f2cb9891183ef75e9d64c425", size = 218627 }, +] + +[[package]] +name = "rq" +version = "1.16.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "redis" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/1d/a020e8f3559293635dd6283d037bfc15f866136498da3db1e5416c65773d/rq-1.16.2.tar.gz", hash = "sha256:5c5b9ad5fbaf792b8fada25cc7627f4d206a9a4455aced371d4f501cc3f13b34", size = 629881 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/35/db396caf7cfe71a9e661cea520b276f1472df25015e7cb9143c65a1dca6d/rq-1.16.2-py3-none-any.whl", hash = "sha256:52e619f6cb469b00e04da74305045d244b75fecb2ecaa4f26422add57d3c5f09", size = 90911 }, +] + +[[package]] +name = "ruamel-yaml" +version = "0.18.10" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ruamel-yaml-clib", marker = "platform_python_implementation == 'CPython'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ea/46/f44d8be06b85bc7c4d8c95d658be2b68f27711f279bf9dd0612a5e4794f5/ruamel.yaml-0.18.10.tar.gz", hash = "sha256:20c86ab29ac2153f80a428e1254a8adf686d3383df04490514ca3b79a362db58", size = 143447 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c2/36/dfc1ebc0081e6d39924a2cc53654497f967a084a436bb64402dfce4254d9/ruamel.yaml-0.18.10-py3-none-any.whl", hash = "sha256:30f22513ab2301b3d2b577adc121c6471f28734d3d9728581245f1e76468b4f1", size = 117729 }, +] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/46/ab/bab9eb1566cd16f060b54055dd39cf6a34bfa0240c53a7218c43e974295b/ruamel.yaml.clib-0.2.8.tar.gz", hash = "sha256:beb2e0404003de9a4cab9753a8805a8fe9320ee6673136ed7f04255fe60bb512", size = 213824 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/52/8dc27bbd9ef1d4695975b8dc132c27c431d0186037ad3c731a6dd1c154b9/ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1b617618914cb00bf5c34d4357c37aa15183fa229b24767259657746c9077615", size = 146177 }, + { url = "https://files.pythonhosted.org/packages/08/4c/5770b8f318fe404a455141a7a33a5568c27a1f944724e82354c8f3554db2/ruamel.yaml.clib-0.2.8-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:a6a9ffd280b71ad062eae53ac1659ad86a17f59a0fdc7699fd9be40525153337", size = 133289 }, + { url = "https://files.pythonhosted.org/packages/5a/45/644d839c09c0717c2d7f26b705560ad74b3056085b3bc7f9c2ac2081317b/ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_24_aarch64.whl", hash = "sha256:305889baa4043a09e5b76f8e2a51d4ffba44259f6b4c72dec8ca56207d9c6fe1", size = 641518 }, + { url = "https://files.pythonhosted.org/packages/22/fa/b2a8fd49c92693e9b9b6b11eef4c2a8aedaca2b521ab3e020aa4778efc23/ruamel.yaml.clib-0.2.8-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:700e4ebb569e59e16a976857c8798aee258dceac7c7d6b50cab63e080058df91", size = 596029 }, + { url = "https://files.pythonhosted.org/packages/5c/f0/702e56e12497da7960ed8a6972e5edc50545757c40f1a86a41a5217da7e9/ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e2b4c44b60eadec492926a7270abb100ef9f72798e18743939bdbf037aab8c28", size = 724558 }, + { url = "https://files.pythonhosted.org/packages/87/a6/efb1add3bac06c25aa4c8ff8c6d3e5e91c539f6600832dd63ff98e2b44cc/ruamel.yaml.clib-0.2.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e79e5db08739731b0ce4850bed599235d601701d5694c36570a99a0c5ca41a9d", size = 767665 }, + { url = "https://files.pythonhosted.org/packages/1d/fe/a638c3ad6e74f4b15c8c1aa7de61a0cfe58c629d48ea59cf07dce5eaee1e/ruamel.yaml.clib-0.2.8-cp38-cp38-win32.whl", hash = "sha256:955eae71ac26c1ab35924203fda6220f84dce57d6d7884f189743e2abe3a9fbe", size = 100578 }, + { url = "https://files.pythonhosted.org/packages/24/ce/6f587283caaff93d0b9cac2f244fcda686897e83401bb1aa91803db7bf94/ruamel.yaml.clib-0.2.8-cp38-cp38-win_amd64.whl", hash = "sha256:56f4252222c067b4ce51ae12cbac231bce32aee1d33fbfc9d17e5b8d6966c312", size = 118511 }, +] + +[[package]] +name = "scp" +version = "0.15.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "paramiko" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/1c/d213e1c6651d0bd37636b21b1ba9b895f276e8057f882c9f944931e4f002/scp-0.15.0.tar.gz", hash = "sha256:f1b22e9932123ccf17eebf19e0953c6e9148f589f93d91b872941a696305c83f", size = 13905 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/b3/561cd6afa959e9dd522af12acc4f803e8bab1bd0e383bffc5211721c5fcb/scp-0.15.0-py2.py3-none-any.whl", hash = "sha256:9e7f721e5ac563c33eb0831d0f949c6342f1c28c3bdc3b02f39d77b5ea20df7e", size = 8753 }, +] + +[[package]] +name = "setuptools" +version = "75.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/01/771ea46cce201dd42cff043a5eea929d1c030fb3d1c2ee2729d02ca7814c/setuptools-75.3.2.tar.gz", hash = "sha256:3c1383e1038b68556a382c1e8ded8887cd20141b0eb5708a6c8d277de49364f5", size = 1354489 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/65/3f0dba35760d902849d39d38c0a72767794b1963227b69a587f8a336d08c/setuptools-75.3.2-py3-none-any.whl", hash = "sha256:90ab613b6583fc02d5369cbca13ea26ea0e182d1df2d943ee9cbe81d4c61add9", size = 1251198 }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, +] + +[[package]] +name = "starlette" +version = "0.44.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8d/b4/910f693584958b687b8f9c628f8217cfef19a42b64d2de7840814937365c/starlette-0.44.0.tar.gz", hash = "sha256:e35166950a3ccccc701962fe0711db0bc14f2ecd37c6f9fe5e3eae0cbaea8715", size = 2575579 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/c5/7ae467eeddb57260c8ce17a3a09f9f5edba35820fc022d7c55b7decd5d3a/starlette-0.44.0-py3-none-any.whl", hash = "sha256:19edeb75844c16dcd4f9dd72f22f9108c1539f3fc9c4c88885654fef64f85aea", size = 73412 }, +] + +[[package]] +name = "t61codec" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5c/a1/3dad66921f116dab998b9c983a6b78da1c692f5b61b2962a7c6348c0cc40/t61codec-2.0.0.tar.gz", hash = "sha256:21c238fbf897b32e5fe9450b71193a1d223abb591dd84b5da8fbc50a2c9277db", size = 5923 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/24/ae/bcc70c2b2652d2229bbae04740185c137f1bc8489ef16a60b48791308c5d/t61codec-2.0.0-py3-none-any.whl", hash = "sha256:7475de8a568c5d381bc8cd823258bcaae0ec8365d037713c3c9ba9c7abce14eb", size = 6097 }, +] + +[[package]] +name = "tenacity" +version = "9.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/94/91fccdb4b8110642462e653d5dcb27e7b674742ad68efd146367da7bdb10/tenacity-9.0.0.tar.gz", hash = "sha256:807f37ca97d62aa361264d497b0e31e92b8027044942bfa756160d908320d73b", size = 47421 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/cb/b86984bed139586d01532a587464b5805f12e397594f19f931c4c2fbfa61/tenacity-9.0.0-py3-none-any.whl", hash = "sha256:93de0c98785b27fcf659856aa9f54bfbd399e29969b0621bc7f762bd441b4539", size = 28169 }, +] + +[[package]] +name = "textfsm" +version = "1.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "future" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b8/bf/c9147d29c5a3ff4c1c876e16ea02f6d4e4f35ba1bcbb2ac80a254924f0aa/textfsm-1.1.3.tar.gz", hash = "sha256:577ef278a9237f5341ae9b682947cefa4a2c1b24dbe486f94f2c95addc6504b5", size = 55454 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/f2/235703136dc9f25d1498c0f0b49ed99a4d7f98c361f322a5da586eb1ee06/textfsm-1.1.3-py2.py3-none-any.whl", hash = "sha256:dcbeebc6a6137bed561c71a56344d752e6dbc04ae5ea309252cb70fb97ccc9cd", size = 44664 }, +] + +[[package]] +name = "tftpy" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/15/d3/31d5b1dfa748bedcfb947f26b2e0c50483f853f698317366b84138369577/tftpy-0.8.0.tar.gz", hash = "sha256:c9095f6420125690865717e251dac3382abe5562d98b79780857b4535f554ffe", size = 32872 } + +[[package]] +name = "toml" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c/toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f", size = 22253 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", size = 16588 }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 }, +] + +[[package]] +name = "transitions" +version = "0.9.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4a/82/4dfbb3cf62501cb3e8d026cbeb2d5cdeaf5bfe916ea50d3a9435faa2b0e1/transitions-0.9.2.tar.gz", hash = "sha256:2f8490dbdbd419366cef1516032ab06d07ccb5839ef54905e842a472692d4204", size = 1188079 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/47/852f96b115425618382472ea06860069da5bb078bdec3e4449f185a40e07/transitions-0.9.2-py2.py3-none-any.whl", hash = "sha256:f7b40c9b4a93869f36c4d1c33809aeb18cdeeb065fd1adba018ee39c3db216f3", size = 111773 }, +] + +[[package]] +name = "ttp" +version = "0.9.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6e/4f/b95e48d3b653e1b1494a3a5b15614db5a340826282c5389e38cb2248da39/ttp-0.9.5.tar.gz", hash = "sha256:234414f4d3039d2d1cde09993f89f8db1b34d447f76c6a402555cefac2e59c4e", size = 69141 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/38/d475e7bde8d192ca5d64ccc0988f3d58f36211bd68c32b6c5883332a8abf/ttp-0.9.5-py2.py3-none-any.whl", hash = "sha256:2c9fcf560b3f696e9fdd3554dc8e4622cbb10cac1d4fca13a7cf608c4a7fd137", size = 85763 }, +] + +[[package]] +name = "typing" +version = "3.10.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/1b/835d4431805939d2996f8772aca1d2313a57e8860fec0e48e8e7dfe3a477/typing-3.10.0.0.tar.gz", hash = "sha256:13b4ad211f54ddbf93e5901a9967b1e07720c1d1b78d596ac6a439641aa1b130", size = 78962 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/5d/865e17349564eb1772688d8afc5e3081a5964c640d64d1d2880ebaed002d/typing-3.10.0.0-py3-none-any.whl", hash = "sha256:12fbdfbe7d6cca1a42e485229afcb0b0c8259258cfb919b8a5e2a5c953742f89", size = 26320 }, +] + +[[package]] +name = "typing-extensions" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, +] + +[[package]] +name = "tzdata" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, +] + +[[package]] +name = "tzlocal" +version = "5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "backports-zoneinfo" }, + { name = "tzdata", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/d3/c19d65ae67636fe63953b20c2e4a8ced4497ea232c43ff8d01db16de8dc0/tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e", size = 30201 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/3f/c4c51c55ff8487f2e6d0e618dba917e3c3ee2caae6cf0fbb59c9b1876f2e/tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8", size = 17859 }, +] + +[[package]] +name = "unicon" +version = "23.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dill" }, + { name = "pyyaml" }, + { name = "unicon-plugins" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/54/3b4df2adc75d8ba5130ebc9dd00d308bb420f17298e14113afa902c75f78/unicon-23.11-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:5d6407cdbf378d3fa75c0ef3aabcc68c07b4aee7a75990368fea5cb3abe60dae", size = 5235465 }, + { url = "https://files.pythonhosted.org/packages/6d/69/a3958d6fb04726a1d364c7841472448f0e2dc7c61ac38e91814078835b8a/unicon-23.11-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:46c2d90bd34fa528828cf654c31a781a4092161f60007f8904a8ad61605247de", size = 14448875 }, + { url = "https://files.pythonhosted.org/packages/c0/2c/f76fbfc6b7fff559ccefc3e1e782896317be6ef632b314ff4a4cff380641/unicon-23.11-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:8181bd9eda418e9857c748c71bbb6510302fd43263acb8aa85107a84847a2abc", size = 15036718 }, +] + +[[package]] +name = "unicon-plugins" +version = "23.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "prettytable" }, + { name = "pyyaml" }, + { name = "unicon" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/86/52c825e69958bf8648e1bb9bde9b0ac46325789a629f0c5ee5f89db5bd5e/unicon.plugins-23.11-py3-none-any.whl", hash = "sha256:5640c90eaff78d4cf2e77192716f5f6336f5844059ad94c335c63fa06672dc06", size = 835686 }, +] + +[[package]] +name = "urllib3" +version = "2.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ed/63/22ba4ebfe7430b76388e7cd448d5478814d3032121827c12a2cc287e2260/urllib3-2.2.3.tar.gz", hash = "sha256:e7d814a81dad81e6caf2ec9fdedb284ecc9c73076b62654547cc64ccdcae26e9", size = 300677 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/d9/5f4c13cecde62396b0d3fe530a50ccea91e7dfc1ccf0e09c228841bb5ba8/urllib3-2.2.3-py3-none-any.whl", hash = "sha256:ca899ca043dcb1bafa3e262d73aa25c465bfb49e0bd9dd5d59f1d0acba2f8fac", size = 126338 }, +] + +[[package]] +name = "uvicorn" +version = "0.33.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h11" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/81/a083ae41716b00df56d45d4b5f6ca8e90fc233a62e6c04ab3ad3c476b6c4/uvicorn-0.33.0.tar.gz", hash = "sha256:3577119f82b7091cf4d3d4177bfda0bae4723ed92ab1439e8d779de880c9cc59", size = 76590 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/79/2e2620337ef1e4ef7a058b351603b765f59ac28e6e3ac7c5e7cdee9ea1ab/uvicorn-0.33.0-py3-none-any.whl", hash = "sha256:2c30de4aeea83661a520abab179b24084a0019c0c1bbe137e5409f741cbde5f8", size = 62297 }, +] + +[[package]] +name = "uvloop" +version = "0.21.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/7b/85a2c8231eac451ef9caecba8715295820c9f94fb51c4f5b2e39c79a5c11/uvloop-0.21.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:17df489689befc72c39a08359efac29bbee8eee5209650d4b9f34df73d22e414", size = 1433814 }, + { url = "https://files.pythonhosted.org/packages/78/c9/10272e791562be6cfc4ee127883087de6443fede8f010b019ca0fdf841c1/uvloop-0.21.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bc09f0ff191e61c2d592a752423c767b4ebb2986daa9ed62908e2b1b9a9ae206", size = 797954 }, + { url = "https://files.pythonhosted.org/packages/62/23/29da7a6d3fba8dfe375ea48a8c3a3e5562b770d24008d79a7a6e0150d7c1/uvloop-0.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0ce1b49560b1d2d8a2977e3ba4afb2414fb46b86a1b64056bc4ab929efdafbe", size = 4302867 }, + { url = "https://files.pythonhosted.org/packages/9a/46/72fb3fbb457cd68632542ecc7fa191a17dac501f70b7f3786a18912bbe0e/uvloop-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e678ad6fe52af2c58d2ae3c73dc85524ba8abe637f134bf3564ed07f555c5e79", size = 4303228 }, + { url = "https://files.pythonhosted.org/packages/1a/80/3f57f2458460501b709aec7c7e7f303b81b38ca35f786b41bf402b3349e8/uvloop-0.21.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:460def4412e473896ef179a1671b40c039c7012184b627898eea5072ef6f017a", size = 4163776 }, + { url = "https://files.pythonhosted.org/packages/4f/9f/07c88dd3e76171e7808ff63719af12ee8bb6ea56fe40ea274da606ae5ade/uvloop-0.21.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:10da8046cc4a8f12c91a1c39d1dd1585c41162a15caaef165c2174db9ef18bdc", size = 4292873 }, +] + +[[package]] +name = "verlib" +version = "0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/13/f457a56a9387237782dd51b240d55f4838e6e057f2b86458b56851b7b1e0/verlib-0.1.tar.gz", hash = "sha256:652d097d114dc9076606a5416b0dc193df3ef2632596e6e0e9d21d2ba51bf267", size = 4699 } + +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, +] + +[[package]] +name = "wheel" +version = "0.45.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494 }, +] + +[[package]] +name = "win32-setctime" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083 }, +] + +[[package]] +name = "wrapt" +version = "1.17.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/66/95b9e90e6e1274999b183c9c3f984996d870e933ca9560115bd1cd1d6f77/wrapt-1.17.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5c803c401ea1c1c18de70a06a6f79fcc9c5acfc79133e9869e730ad7f8ad8ef9", size = 53234 }, + { url = "https://files.pythonhosted.org/packages/a4/b6/6eced5e2db5924bf6d9223d2bb96b62e00395aae77058e6a9e11bf16b3bd/wrapt-1.17.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f917c1180fdb8623c2b75a99192f4025e412597c50b2ac870f156de8fb101119", size = 38462 }, + { url = "https://files.pythonhosted.org/packages/5d/a4/c8472fe2568978b5532df84273c53ddf713f689d408a4335717ab89547e0/wrapt-1.17.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ecc840861360ba9d176d413a5489b9a0aff6d6303d7e733e2c4623cfa26904a6", size = 38730 }, + { url = "https://files.pythonhosted.org/packages/3c/70/1d259c6b1ad164eb23ff70e3e452dd1950f96e6473f72b7207891d0fd1f0/wrapt-1.17.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb87745b2e6dc56361bfde481d5a378dc314b252a98d7dd19a651a3fa58f24a9", size = 86225 }, + { url = "https://files.pythonhosted.org/packages/a9/68/6b83367e1afb8de91cbea4ef8e85b58acdf62f034f05d78c7b82afaa23d8/wrapt-1.17.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58455b79ec2661c3600e65c0a716955adc2410f7383755d537584b0de41b1d8a", size = 78055 }, + { url = "https://files.pythonhosted.org/packages/0d/21/09573d2443916705c57fdab85d508f592c0a58d57becc53e15755d67fba2/wrapt-1.17.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4e42a40a5e164cbfdb7b386c966a588b1047558a990981ace551ed7e12ca9c2", size = 85592 }, + { url = "https://files.pythonhosted.org/packages/45/ce/700e17a852dd5dec894e241c72973ea82363486bcc1fb05d47b4fbd1d683/wrapt-1.17.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:91bd7d1773e64019f9288b7a5101f3ae50d3d8e6b1de7edee9c2ccc1d32f0c0a", size = 83906 }, + { url = "https://files.pythonhosted.org/packages/37/14/bd210faf0a66faeb8529d42b6b45a25d6aa6ce25ddfc19168e4161aed227/wrapt-1.17.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:bb90fb8bda722a1b9d48ac1e6c38f923ea757b3baf8ebd0c82e09c5c1a0e7a04", size = 76763 }, + { url = "https://files.pythonhosted.org/packages/34/0c/85af70d291f44659c422416f0272046109e785bf6db8c081cfeeae5715c5/wrapt-1.17.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:08e7ce672e35efa54c5024936e559469436f8b8096253404faeb54d2a878416f", size = 83573 }, + { url = "https://files.pythonhosted.org/packages/f8/1e/b215068e824878f69ea945804fa26c176f7c2735a3ad5367d78930bd076a/wrapt-1.17.2-cp38-cp38-win32.whl", hash = "sha256:410a92fefd2e0e10d26210e1dfb4a876ddaf8439ef60d6434f21ef8d87efc5b7", size = 36408 }, + { url = "https://files.pythonhosted.org/packages/52/27/3dd9ad5f1097b33c95d05929e409cc86d7c765cb5437b86694dc8f8e9af0/wrapt-1.17.2-cp38-cp38-win_amd64.whl", hash = "sha256:95c658736ec15602da0ed73f312d410117723914a5c91a14ee4cdd72f1d790b3", size = 38737 }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, +] + +[[package]] +name = "xmltodict" +version = "0.14.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/50/05/51dcca9a9bf5e1bce52582683ce50980bcadbc4fa5143b9f2b19ab99958f/xmltodict-0.14.2.tar.gz", hash = "sha256:201e7c28bb210e374999d1dde6382923ab0ed1a8a5faeece48ab525b7810a553", size = 51942 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/45/fc303eb433e8a2a271739c98e953728422fa61a3c1f36077a49e395c972e/xmltodict-0.14.2-py2.py3-none-any.whl", hash = "sha256:20cc7d723ed729276e808f26fb6b3599f786cbc37e06c65e192ba77c40f20aac", size = 9981 }, +] + +[[package]] +name = "yamlordereddictloader" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/78/f853b0db6d8f3ea0ae4c648e4504ba376d024c139ba1292a256ce6180dd0/yamlordereddictloader-0.4.2.tar.gz", hash = "sha256:36af2f6210fcff5da4fc4c12e1d815f973dceb41044e795e1f06115d634bca13", size = 3905 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d3/b6/64e84e26c52343dc48e9ffefd7d5e82b986f3bc2bd6da753420f41645718/yamlordereddictloader-0.4.2-py3-none-any.whl", hash = "sha256:dc048adb67026786cd24119bd71241f35bc8b0fd37d24b415c37bbc8049f9cd7", size = 4190 }, +] + +[[package]] +name = "yang-connector" +version = "23.11.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "grpcio" }, + { name = "lxml" }, + { name = "ncclient" }, + { name = "paramiko" }, + { name = "protobuf" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/a5/ff924999769d18003082a753d4c492fa7a8bb2d065b249bbc8ac80b88700/yang.connector-23.11.1-py3-none-any.whl", hash = "sha256:1db56a829072f82b5a6c39fcfd946e3e15c73bd25060c077e4d6af48df914e23", size = 37851 }, +] + +[[package]] +name = "zipp" +version = "3.20.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/bf/5c0000c44ebc80123ecbdddba1f5dcd94a5ada602a9c225d84b5aaa55e86/zipp-3.20.2.tar.gz", hash = "sha256:bc9eb26f4506fda01b81bcde0ca78103b6e62f991b381fec825435c836edbc29", size = 24199 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/8b/5ba542fa83c90e09eac972fc9baca7a88e7e7ca4b221a89251954019308b/zipp-3.20.2-py3-none-any.whl", hash = "sha256:a817ac80d6cf4b23bf7f2828b7cabf326f15a001bea8b1f9b49631780ba28350", size = 9200 }, +]