diff --git a/Makefile b/Makefile index 66b5899e7..4818345a3 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,7 @@ pytest: .PHONY: black black: poetry run black --check ${NORNIR_DIRS} + poetry run isort --check ${NORNIR_DIRS} .PHONY: sphinx sphinx: diff --git a/docs/conf.py b/docs/conf.py index 44136626c..b788d0d67 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -21,10 +21,10 @@ import sys from typing import Dict -from nornir import __version__ - from sphinx.application import Sphinx +from nornir import __version__ + sys.path.insert(0, os.path.abspath("../")) diff --git a/docs/highlighter.py b/docs/highlighter.py index 4f28db3c4..5ece78a42 100644 --- a/docs/highlighter.py +++ b/docs/highlighter.py @@ -1,11 +1,9 @@ from IPython.core.magic import register_line_magic from IPython.display import HTML - from pygments import highlight from pygments.formatters import HtmlFormatter from pygments.lexers import get_lexer_for_filename - HTML_TEMPLATE = """ diff --git a/nornir/core/__init__.py b/nornir/core/__init__.py index c30334fbd..bbe833bea 100644 --- a/nornir/core/__init__.py +++ b/nornir/core/__init__.py @@ -1,6 +1,6 @@ import logging import logging.config -from typing import List, Optional, TYPE_CHECKING +from typing import TYPE_CHECKING, List, Optional from nornir.core.configuration import Config from nornir.core.inventory import Inventory diff --git a/nornir/core/configuration.py b/nornir/core/configuration.py index adf86d8a4..8a04c02fe 100644 --- a/nornir/core/configuration.py +++ b/nornir/core/configuration.py @@ -5,12 +5,12 @@ import sys import warnings from pathlib import Path -from typing import Any, Dict, Optional, Type, TYPE_CHECKING, List, TypeVar - -from nornir.core.exceptions import ConflictingConfigurationWarning +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Type, TypeVar import ruamel.yaml +from nornir.core.exceptions import ConflictingConfigurationWarning + if TYPE_CHECKING: from nornir.core.deserializer.inventory import Inventory # noqa diff --git a/nornir/core/exceptions.py b/nornir/core/exceptions.py index 5388a61fb..a5616faf1 100644 --- a/nornir/core/exceptions.py +++ b/nornir/core/exceptions.py @@ -1,4 +1,4 @@ -from typing import Dict, TYPE_CHECKING +from typing import TYPE_CHECKING, Dict if TYPE_CHECKING: from nornir.core.connection import Connection diff --git a/nornir/core/inventory.py b/nornir/core/inventory.py index 958a25840..694c59157 100644 --- a/nornir/core/inventory.py +++ b/nornir/core/inventory.py @@ -2,26 +2,22 @@ Any, Callable, Dict, + ItemsView, + Iterator, + KeysView, List, Optional, Set, + TypeVar, Union, - KeysView, ValuesView, - ItemsView, - Iterator, - TypeVar, ) -from nornir.core.configuration import Config -from nornir.core.plugins.connections import ( - ConnectionPlugin, - ConnectionPluginRegister, -) -from nornir.core.exceptions import ConnectionAlreadyOpen, ConnectionNotOpen - from mypy_extensions import Arg, KwArg +from nornir.core.configuration import Config +from nornir.core.exceptions import ConnectionAlreadyOpen, ConnectionNotOpen +from nornir.core.plugins.connections import ConnectionPlugin, ConnectionPluginRegister HostOrGroup = TypeVar("HostOrGroup", "Host", "Group") diff --git a/nornir/core/plugins/connections.py b/nornir/core/plugins/connections.py index 82ad42b79..f2324bddd 100644 --- a/nornir/core/plugins/connections.py +++ b/nornir/core/plugins/connections.py @@ -1,9 +1,8 @@ -from typing import Any, Dict, Type, Optional, Protocol +from typing import Any, Dict, Optional, Protocol, Type from nornir.core.configuration import Config from nornir.core.plugins.register import PluginRegister - CONNECTIONS_PLUGIN_PATH = "nornir.plugins.connections" diff --git a/nornir/core/plugins/inventory.py b/nornir/core/plugins/inventory.py index 37b5e1b9c..417affe48 100644 --- a/nornir/core/plugins/inventory.py +++ b/nornir/core/plugins/inventory.py @@ -1,9 +1,8 @@ -from typing import Any, Type, Protocol +from typing import Any, Protocol, Type from nornir.core.inventory import Inventory, TransformFunction from nornir.core.plugins.register import PluginRegister - INVENTORY_PLUGIN_PATH = "nornir.plugins.inventory" TRANSFORM_FUNCTION_PLUGIN_PATH = "nornir.plugins.transform_function" diff --git a/nornir/core/plugins/register.py b/nornir/core/plugins/register.py index f28553d69..ef86e03b2 100644 --- a/nornir/core/plugins/register.py +++ b/nornir/core/plugins/register.py @@ -1,10 +1,7 @@ import sys -from typing import Dict, TypeVar, Generic +from typing import Dict, Generic, TypeVar -from nornir.core.exceptions import ( - PluginAlreadyRegistered, - PluginNotRegistered, -) +from nornir.core.exceptions import PluginAlreadyRegistered, PluginNotRegistered if sys.version_info >= (3, 10): from importlib import metadata diff --git a/nornir/core/plugins/runners.py b/nornir/core/plugins/runners.py index 1a92dc9e8..1f9dca079 100644 --- a/nornir/core/plugins/runners.py +++ b/nornir/core/plugins/runners.py @@ -1,9 +1,8 @@ -from typing import Any, List, Type, Protocol +from typing import Any, List, Protocol, Type -from nornir.core.task import AggregatedResult, Task from nornir.core.inventory import Host from nornir.core.plugins.register import PluginRegister - +from nornir.core.task import AggregatedResult, Task RUNNERS_PLUGIN_PATH = "nornir.plugins.runners" diff --git a/nornir/core/processor.py b/nornir/core/processor.py index 98bba7a1a..91867e0cf 100644 --- a/nornir/core/processor.py +++ b/nornir/core/processor.py @@ -1,5 +1,7 @@ from typing import List, Protocol +from typing_extensions import Protocol + from nornir.core.inventory import Host from nornir.core.task import AggregatedResult, MultiResult, Task diff --git a/nornir/core/state.py b/nornir/core/state.py index 48d079ec5..3c58f36bd 100644 --- a/nornir/core/state.py +++ b/nornir/core/state.py @@ -1,4 +1,4 @@ -from typing import Any, Dict, Set, Optional +from typing import Any, Dict, Optional, Set class GlobalState(object): diff --git a/nornir/core/task.py b/nornir/core/task.py index d063d8fb3..979fe5de2 100644 --- a/nornir/core/task.py +++ b/nornir/core/task.py @@ -1,9 +1,8 @@ import logging import traceback -from typing import Any, Callable, Dict, List, Optional, TYPE_CHECKING, Union, cast +from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional, Union, cast -from nornir.core.exceptions import NornirExecutionError -from nornir.core.exceptions import NornirSubTaskError +from nornir.core.exceptions import NornirExecutionError, NornirSubTaskError if TYPE_CHECKING: from nornir.core import Nornir diff --git a/nornir/init_nornir.py b/nornir/init_nornir.py index 6d4708d18..7de8f8a49 100644 --- a/nornir/init_nornir.py +++ b/nornir/init_nornir.py @@ -3,11 +3,11 @@ from nornir.core import Nornir from nornir.core.configuration import Config from nornir.core.inventory import Inventory +from nornir.core.plugins.connections import ConnectionPluginRegister from nornir.core.plugins.inventory import ( InventoryPluginRegister, TransformFunctionRegister, ) -from nornir.core.plugins.connections import ConnectionPluginRegister from nornir.core.plugins.runners import RunnerPlugin, RunnersPluginRegister from nornir.core.state import GlobalState diff --git a/nornir/plugins/inventory/simple.py b/nornir/plugins/inventory/simple.py index d453073e8..0ee0884ca 100644 --- a/nornir/plugins/inventory/simple.py +++ b/nornir/plugins/inventory/simple.py @@ -2,20 +2,20 @@ import pathlib from typing import Any, Dict, Type +import ruamel.yaml + from nornir.core.inventory import ( - Inventory, + ConnectionOptions, + Defaults, Group, Groups, Host, - Hosts, - Defaults, - ConnectionOptions, HostOrGroup, + Hosts, + Inventory, ParentGroups, ) -import ruamel.yaml - logger = logging.getLogger(__name__) diff --git a/nornir/plugins/runners/__init__.py b/nornir/plugins/runners/__init__.py index cb8229835..41d5cf78f 100644 --- a/nornir/plugins/runners/__init__.py +++ b/nornir/plugins/runners/__init__.py @@ -1,8 +1,8 @@ -from typing import List from concurrent.futures import ThreadPoolExecutor +from typing import List -from nornir.core.task import AggregatedResult, Task from nornir.core.inventory import Host +from nornir.core.task import AggregatedResult, Task class SerialRunner: diff --git a/poetry.lock b/poetry.lock index 4be70b8d0..928af1555 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "alabaster" version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -16,7 +15,6 @@ files = [ name = "anyio" version = "4.0.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -38,7 +36,6 @@ trio = ["trio (>=0.22)"] name = "appnope" version = "0.1.3" description = "Disable App Nap on macOS >= 10.9" -category = "dev" optional = false python-versions = "*" files = [ @@ -50,7 +47,6 @@ files = [ name = "argon2-cffi" version = "23.1.0" description = "Argon2 for Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -71,7 +67,6 @@ typing = ["mypy"] name = "argon2-cffi-bindings" version = "21.2.0" description = "Low-level CFFI bindings for Argon2" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -109,7 +104,6 @@ tests = ["pytest"] name = "arrow" version = "1.2.3" description = "Better dates & times for Python" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -124,7 +118,6 @@ python-dateutil = ">=2.7.0" name = "asttokens" version = "2.4.0" description = "Annotate AST trees with source code positions" -category = "dev" optional = false python-versions = "*" files = [ @@ -142,7 +135,6 @@ test = ["astroid", "pytest"] name = "async-lru" version = "2.0.4" description = "Simple LRU cache for asyncio" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -157,7 +149,6 @@ typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} name = "attrs" version = "23.1.0" description = "Classes Without Boilerplate" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -176,7 +167,6 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte name = "babel" version = "2.12.1" description = "Internationalization utilities" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -191,7 +181,6 @@ pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} name = "backcall" version = "0.2.0" description = "Specifications for callback functions passed in to an API" -category = "dev" optional = false python-versions = "*" files = [ @@ -203,7 +192,6 @@ files = [ name = "bcrypt" version = "4.0.1" description = "Modern password hashing for your software and your servers" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -238,7 +226,6 @@ typecheck = ["mypy"] name = "beautifulsoup4" version = "4.12.2" description = "Screen-scraping library" -category = "dev" optional = false python-versions = ">=3.6.0" files = [ @@ -257,7 +244,6 @@ lxml = ["lxml"] name = "black" version = "23.9.1" description = "The uncompromising code formatter." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -304,7 +290,6 @@ uvloop = ["uvloop (>=0.15.2)"] name = "bleach" version = "6.0.0" description = "An easy safelist-based HTML-sanitizing tool." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -323,7 +308,6 @@ css = ["tinycss2 (>=1.1.0,<1.2)"] name = "certifi" version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -335,7 +319,6 @@ files = [ name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." -category = "dev" optional = false python-versions = "*" files = [ @@ -412,7 +395,6 @@ pycparser = "*" name = "charset-normalizer" version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "dev" optional = false python-versions = ">=3.7.0" files = [ @@ -497,7 +479,6 @@ files = [ name = "click" version = "8.1.7" description = "Composable command line interface toolkit" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -512,7 +493,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -524,7 +504,6 @@ files = [ name = "comm" version = "0.1.4" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -544,7 +523,6 @@ typing = ["mypy (>=0.990)"] name = "coverage" version = "7.3.1" description = "Code coverage measurement for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -612,7 +590,6 @@ toml = ["tomli"] name = "cryptography" version = "41.0.4" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -658,7 +635,6 @@ test-randomorder = ["pytest-randomly"] name = "debugpy" version = "1.8.0" description = "An implementation of the Debug Adapter Protocol for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -686,7 +662,6 @@ files = [ name = "decorator" version = "5.1.1" description = "Decorators for Humans" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -698,7 +673,6 @@ files = [ name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -710,7 +684,6 @@ files = [ name = "docutils" version = "0.18.1" description = "Docutils -- Python Documentation Utilities" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -722,7 +695,6 @@ files = [ name = "exceptiongroup" version = "1.1.3" description = "Backport of PEP 654 (exception groups)" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -737,7 +709,6 @@ test = ["pytest (>=6)"] name = "executing" version = "1.2.0" description = "Get the currently executing AST node of a frame, and other information" -category = "dev" optional = false python-versions = "*" files = [ @@ -752,7 +723,6 @@ tests = ["asttokens", "littleutils", "pytest", "rich"] name = "fastjsonschema" version = "2.18.0" description = "Fastest Python implementation of JSON schema" -category = "dev" optional = false python-versions = "*" files = [ @@ -767,7 +737,6 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc name = "fqdn" version = "1.5.1" description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" -category = "dev" optional = false python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" files = [ @@ -779,7 +748,6 @@ files = [ name = "future" version = "0.18.3" description = "Clean single-source support for Python 3 and 2" -category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -790,7 +758,6 @@ files = [ name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -802,7 +769,6 @@ files = [ name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -814,7 +780,6 @@ files = [ name = "importlib-metadata" version = "4.13.0" description = "Read metadata from Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -834,7 +799,6 @@ testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packag name = "importlib-resources" version = "6.1.0" description = "Read resources from Python packages" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -853,7 +817,6 @@ testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -865,7 +828,6 @@ files = [ name = "ipykernel" version = "6.25.2" description = "IPython Kernel for Jupyter" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -879,7 +841,7 @@ comm = ">=0.1.1" debugpy = ">=1.6.5" ipython = ">=7.23.1" jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" matplotlib-inline = ">=0.1" nest-asyncio = "*" packaging = "*" @@ -899,7 +861,6 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio" name = "ipython" version = "8.12.2" description = "IPython: Productive Interactive Computing" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -939,7 +900,6 @@ test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pa name = "ipython-genutils" version = "0.2.0" description = "Vestigial utilities from IPython" -category = "dev" optional = false python-versions = "*" files = [ @@ -951,7 +911,6 @@ files = [ name = "ipywidgets" version = "8.1.1" description = "Jupyter interactive widgets" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -973,7 +932,6 @@ test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] name = "isoduration" version = "20.11.0" description = "Operations with ISO 8601 durations" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -984,11 +942,27 @@ files = [ [package.dependencies] arrow = ">=0.15.0" +[[package]] +name = "isort" +version = "5.12.0" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, + {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, +] + +[package.extras] +colors = ["colorama (>=0.4.3)"] +pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] +plugins = ["setuptools"] +requirements-deprecated-finder = ["pip-api", "pipreqs"] + [[package]] name = "jedi" version = "0.19.0" description = "An autocompletion tool for Python that can be used for text editors." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1008,7 +982,6 @@ testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1026,7 +999,6 @@ i18n = ["Babel (>=2.7)"] name = "json5" version = "0.9.14" description = "A Python implementation of the JSON5 data format." -category = "dev" optional = false python-versions = "*" files = [ @@ -1041,7 +1013,6 @@ dev = ["hypothesis"] name = "jsonpointer" version = "2.4" description = "Identify specific nodes in a JSON document (RFC 6901)" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" files = [ @@ -1053,7 +1024,6 @@ files = [ name = "jsonschema" version = "4.19.1" description = "An implementation of JSON Schema validation for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1085,7 +1055,6 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- name = "jsonschema-specifications" version = "2023.7.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1101,7 +1070,6 @@ referencing = ">=0.28.0" name = "junos-eznc" version = "2.6.7" description = "Junos 'EZ' automation for non-programmers" -category = "dev" optional = false python-versions = ">=3.5, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1127,7 +1095,6 @@ yamlordereddictloader = "*" name = "jupyter" version = "1.0.0" description = "Jupyter metapackage. Install all the Jupyter components in one go." -category = "dev" optional = false python-versions = "*" files = [ @@ -1148,7 +1115,6 @@ qtconsole = "*" name = "jupyter-client" version = "8.3.1" description = "Jupyter protocol implementation and client libraries" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1158,7 +1124,7 @@ files = [ [package.dependencies] importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" python-dateutil = ">=2.8.2" pyzmq = ">=23.0" tornado = ">=6.2" @@ -1172,7 +1138,6 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt name = "jupyter-console" version = "6.6.3" description = "Jupyter terminal console" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1184,7 +1149,7 @@ files = [ ipykernel = ">=6.14" ipython = "*" jupyter-client = ">=7.0.0" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" prompt-toolkit = ">=3.0.30" pygments = "*" pyzmq = ">=17" @@ -1197,7 +1162,6 @@ test = ["flaky", "pexpect", "pytest"] name = "jupyter-core" version = "5.3.1" description = "Jupyter core package. A base package on which Jupyter projects rely." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1218,7 +1182,6 @@ test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] name = "jupyter-events" version = "0.7.0" description = "Jupyter Event System library" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1244,7 +1207,6 @@ test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "p name = "jupyter-lsp" version = "2.2.0" description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1260,7 +1222,6 @@ jupyter-server = ">=1.1.2" name = "jupyter-server" version = "2.7.3" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1273,7 +1234,7 @@ anyio = ">=3.1.0" argon2-cffi = "*" jinja2 = "*" jupyter-client = ">=7.4.4" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" jupyter-events = ">=0.6.0" jupyter-server-terminals = "*" nbconvert = ">=6.4.4" @@ -1297,7 +1258,6 @@ test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-sc name = "jupyter-server-terminals" version = "0.4.4" description = "A Jupyter Server Extension Providing Terminals." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1317,7 +1277,6 @@ test = ["coverage", "jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-cov", name = "jupyterlab" version = "4.0.6" description = "JupyterLab computational environment" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1351,7 +1310,6 @@ test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-cons name = "jupyterlab-pygments" version = "0.2.2" description = "Pygments theme using JupyterLab CSS variables" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1363,7 +1321,6 @@ files = [ name = "jupyterlab-server" version = "2.25.0" description = "A set of server components for JupyterLab and JupyterLab like applications." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1390,7 +1347,6 @@ test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-v name = "jupyterlab-widgets" version = "3.0.9" description = "Jupyter interactive widgets for JupyterLab" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1402,7 +1358,6 @@ files = [ name = "lxml" version = "4.9.3" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" files = [ @@ -1510,7 +1465,6 @@ source = ["Cython (>=0.29.35)"] name = "markupsafe" version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1534,6 +1488,16 @@ files = [ {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aa57bd9cf8ae831a362185ee444e15a93ecb2e344c8e52e4d721ea3ab6ef1823"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47d4f1c5f80fc62fdd7777d0d40a2e9dda0a05883ab11374334f6c4de38adffd"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f67c7038d560d92149c060157d623c542173016c4babc0c1913cca0564b9939"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9aad3c1755095ce347e26488214ef77e0485a3c34a50c5a5e2471dff60b9dd9c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:14ff806850827afd6b07a5f32bd917fb7f45b046ba40c57abdb636674a8b559c"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8f9293864fe09b8149f0cc42ce56e3f0e54de883a9de90cd427f191c346eb2e1"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win32.whl", hash = "sha256:715d3562f79d540f251b99ebd6d8baa547118974341db04f5ad06d5ea3eb8007"}, + {file = "MarkupSafe-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:1b8dd8c3fd14349433c79fa8abeb573a55fc0fdd769133baac1f5e07abf54aeb"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, @@ -1570,7 +1534,6 @@ files = [ name = "matplotlib-inline" version = "0.1.6" description = "Inline Matplotlib backend for Jupyter" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1585,7 +1548,6 @@ traitlets = "*" name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1597,7 +1559,6 @@ files = [ name = "mistune" version = "3.0.1" description = "A sane and fast Markdown parser with useful plugins and renderers" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1609,7 +1570,6 @@ files = [ name = "mypy" version = "1.5.1" description = "Optional static typing for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1656,7 +1616,6 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1668,7 +1627,6 @@ files = [ name = "napalm" version = "4.1.0" description = "Network Automation and Programmability Abstraction Layer with Multivendor support" -category = "dev" optional = false python-versions = "*" files = [ @@ -1701,7 +1659,6 @@ typing-extensions = ">=4.3.0" name = "nbclient" version = "0.8.0" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." -category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -1711,7 +1668,7 @@ files = [ [package.dependencies] jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" nbformat = ">=5.1" traitlets = ">=5.4" @@ -1724,7 +1681,6 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= name = "nbconvert" version = "7.8.0" description = "Converting Jupyter Notebooks" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1763,7 +1719,6 @@ webpdf = ["playwright"] name = "nbformat" version = "5.9.2" description = "The Jupyter Notebook format" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1785,7 +1740,6 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] name = "nbsphinx" version = "0.9.2" description = "Jupyter Notebook Tools for Sphinx" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1805,7 +1759,6 @@ traitlets = ">=5" name = "nbval" version = "0.10.0" description = "A py.test plugin to validate Jupyter notebooks" -category = "dev" optional = false python-versions = ">=3.6, <4" files = [ @@ -1824,7 +1777,6 @@ pytest = ">=2.8" name = "ncclient" version = "0.6.13" description = "Python library for NETCONF clients" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1841,7 +1793,6 @@ six = "*" name = "nest-asyncio" version = "1.5.8" description = "Patch asyncio to allow nested event loops" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -1853,7 +1804,6 @@ files = [ name = "netaddr" version = "0.9.0" description = "A network address manipulation library for Python" -category = "dev" optional = false python-versions = "*" files = [ @@ -1865,7 +1815,6 @@ files = [ name = "netmiko" version = "4.2.0" description = "Multi-vendor library to simplify legacy CLI connections to network devices" -category = "dev" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -1885,7 +1834,6 @@ textfsm = ">=1.1.3" name = "netutils" version = "1.6.0" description = "Common helper functions useful in network automation." -category = "dev" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -1900,7 +1848,6 @@ optionals = ["jsonschema (>=4.17.3,<5.0.0)", "napalm (>=4.0.0,<5.0.0)"] name = "nornir-jinja2" version = "0.2.0" description = "Jinja2 plugins for nornir" -category = "dev" optional = false python-versions = ">=3.6,<4.0" files = [ @@ -1916,7 +1863,6 @@ nornir = ">=3,<4" name = "nornir-napalm" version = "0.4.0" description = "NAPALM's plugins for nornir" -category = "dev" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -1932,7 +1878,6 @@ nornir = ">=3,<4" name = "nornir-utils" version = "0.2.0" description = "Collection of plugins and functions for nornir that don't require external dependencies" -category = "dev" optional = false python-versions = ">=3.6.2,<4.0.0" files = [ @@ -1948,7 +1893,6 @@ nornir = ">=3,<4" name = "notebook" version = "7.0.4" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1972,7 +1916,6 @@ test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4 name = "notebook-shim" version = "0.2.3" description = "A shim layer for notebook traits and config" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1990,7 +1933,6 @@ test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync" name = "ntc-templates" version = "3.5.0" description = "TextFSM Templates for Network Devices, and Python wrapper for TextFSM's CliTable." -category = "dev" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -2005,7 +1947,6 @@ textfsm = ">=1.1.0,<2.0.0" name = "overrides" version = "7.4.0" description = "A decorator to automatically detect mismatch when overriding a method." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2017,7 +1958,6 @@ files = [ name = "packaging" version = "23.1" description = "Core utilities for Python packages" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2029,7 +1969,6 @@ files = [ name = "pandocfilters" version = "1.5.0" description = "Utilities for writing pandoc filters in python" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2041,7 +1980,6 @@ files = [ name = "paramiko" version = "3.3.1" description = "SSH2 protocol library" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2063,7 +2001,6 @@ invoke = ["invoke (>=2.0)"] name = "parso" version = "0.8.3" description = "A Python Parser" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2079,7 +2016,6 @@ testing = ["docopt", "pytest (<6.0.0)"] name = "pathspec" version = "0.11.2" description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2091,7 +2027,6 @@ files = [ name = "pexpect" version = "4.8.0" description = "Pexpect allows easy control of interactive console applications." -category = "dev" optional = false python-versions = "*" files = [ @@ -2106,7 +2041,6 @@ ptyprocess = ">=0.5" name = "pickleshare" version = "0.7.5" description = "Tiny 'shelve'-like database with concurrency support" -category = "dev" optional = false python-versions = "*" files = [ @@ -2118,7 +2052,6 @@ files = [ name = "pkgutil-resolve-name" version = "1.3.10" description = "Resolve a name to an object." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2130,7 +2063,6 @@ files = [ name = "platformdirs" version = "3.10.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2146,7 +2078,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co name = "pluggy" version = "1.3.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2162,7 +2093,6 @@ testing = ["pytest", "pytest-benchmark"] name = "pockets" version = "0.9.1" description = "A collection of helpful Python tools!" -category = "dev" optional = false python-versions = "*" files = [ @@ -2177,7 +2107,6 @@ six = ">=1.5.2" name = "prometheus-client" version = "0.17.1" description = "Python client for the Prometheus monitoring system." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2192,7 +2121,6 @@ twisted = ["twisted"] name = "prompt-toolkit" version = "3.0.39" description = "Library for building powerful interactive command lines in Python" -category = "dev" optional = false python-versions = ">=3.7.0" files = [ @@ -2207,7 +2135,6 @@ wcwidth = "*" name = "psutil" version = "5.9.5" description = "Cross-platform lib for process and system monitoring in Python." -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2234,7 +2161,6 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" -category = "dev" optional = false python-versions = "*" files = [ @@ -2246,7 +2172,6 @@ files = [ name = "pure-eval" version = "0.2.2" description = "Safely evaluate AST nodes without side effects" -category = "dev" optional = false python-versions = "*" files = [ @@ -2261,7 +2186,6 @@ tests = ["pytest"] name = "pycodestyle" version = "2.11.0" description = "Python style guide checker" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2273,7 +2197,6 @@ files = [ name = "pycparser" version = "2.21" description = "C parser in Python" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2285,7 +2208,6 @@ files = [ name = "pydocstyle" version = "6.3.0" description = "Python docstring style checker" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2303,7 +2225,6 @@ toml = ["tomli (>=1.2.3)"] name = "pyeapi" version = "1.0.2" description = "Python Client for eAPI" -category = "dev" optional = false python-versions = "*" files = [ @@ -2321,7 +2242,6 @@ test = ["coverage", "mock"] name = "pyflakes" version = "3.1.0" description = "passive checker of Python programs" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2333,7 +2253,6 @@ files = [ name = "pygments" version = "2.16.1" description = "Pygments is a syntax highlighting package written in Python." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2348,7 +2267,6 @@ plugins = ["importlib-metadata"] name = "pylama" version = "8.4.1" description = "Code audit tool for python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2376,7 +2294,6 @@ vulture = ["vulture"] name = "pynacl" version = "1.5.0" description = "Python binding to the Networking and Cryptography (NaCl) library" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2403,7 +2320,6 @@ tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] name = "pyparsing" version = "3.1.1" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "dev" optional = false python-versions = ">=3.6.8" files = [ @@ -2418,7 +2334,6 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pyserial" version = "3.5" description = "Python Serial Port Extension" -category = "dev" optional = false python-versions = "*" files = [ @@ -2433,7 +2348,6 @@ cp2110 = ["hidapi"] name = "pytest" version = "7.4.2" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2456,7 +2370,6 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "pytest-cov" version = "4.1.0" description = "Pytest plugin for measuring coverage." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2475,7 +2388,6 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -2490,7 +2402,6 @@ six = ">=1.5" name = "python-json-logger" version = "2.0.7" description = "A python library adding a json log formatter" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2502,7 +2413,6 @@ files = [ name = "pytz" version = "2023.3.post1" description = "World timezone definitions, modern and historical" -category = "dev" optional = false python-versions = "*" files = [ @@ -2514,7 +2424,6 @@ files = [ name = "pywin32" version = "306" description = "Python for Window Extensions" -category = "dev" optional = false python-versions = "*" files = [ @@ -2538,7 +2447,6 @@ files = [ name = "pywinpty" version = "2.0.11" description = "Pseudo terminal support for Windows from Python." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2553,7 +2461,6 @@ files = [ name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2562,6 +2469,7 @@ files = [ {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, @@ -2569,8 +2477,15 @@ files = [ {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, @@ -2587,6 +2502,7 @@ files = [ {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, @@ -2594,6 +2510,7 @@ files = [ {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, @@ -2603,7 +2520,6 @@ files = [ name = "pyzmq" version = "25.1.1" description = "Python bindings for 0MQ" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2709,7 +2625,6 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} name = "qtconsole" version = "5.4.4" description = "Jupyter Qt console" -category = "dev" optional = false python-versions = ">= 3.7" files = [ @@ -2736,7 +2651,6 @@ test = ["flaky", "pytest", "pytest-qt"] name = "qtpy" version = "2.4.0" description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2754,7 +2668,6 @@ test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"] name = "referencing" version = "0.30.2" description = "JSON Referencing + Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2770,7 +2683,6 @@ rpds-py = ">=0.7.0" name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2792,7 +2704,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-mock" version = "1.11.0" description = "Mock out responses from the requests package" -category = "dev" optional = false python-versions = "*" files = [ @@ -2812,7 +2723,6 @@ test = ["fixtures", "mock", "purl", "pytest", "requests-futures", "sphinx", "tes name = "rfc3339-validator" version = "0.1.4" description = "A pure python RFC3339 validator" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -2827,7 +2737,6 @@ six = "*" name = "rfc3986-validator" version = "0.1.1" description = "Pure python rfc3986 validator" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -2839,7 +2748,6 @@ files = [ name = "rpds-py" version = "0.10.3" description = "Python bindings to Rust's persistent data structures (rpds)" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2946,7 +2854,6 @@ files = [ name = "ruamel-yaml" version = "0.17.32" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" -category = "main" optional = false python-versions = ">=3" files = [ @@ -2965,7 +2872,6 @@ jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] name = "ruamel-yaml-clib" version = "0.2.7" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -2976,8 +2882,11 @@ files = [ {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"}, {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"}, - {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:1a6391a7cabb7641c32517539ca42cf84b87b667bad38b78d4d42dd23e957c81"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:9c7617df90c1365638916b98cdd9be833d31d337dbcd722485597b43c4a215bf"}, {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:41d0f1fa4c6830176eef5b276af04c89320ea616655d01327d5ce65e50575c94"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win32.whl", hash = "sha256:f6d3d39611ac2e4f62c3128a9eed45f19a6608670c5a2f4f07f24e8de3441d38"}, + {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:da538167284de58a52109a9b89b8f6a53ff8437dd6dc26d33b57bf6699153122"}, {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4b3a93bb9bc662fc1f99c5c3ea8e623d8b23ad22f861eb6fce9377ac07ad6072"}, {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_12_0_arm64.whl", hash = "sha256:a234a20ae07e8469da311e182e70ef6b199d0fbeb6c6cc2901204dd87fb867e8"}, {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:15910ef4f3e537eea7fe45f8a5d19997479940d9196f357152a09031c5be59f3"}, @@ -3009,7 +2918,6 @@ files = [ name = "scp" version = "0.14.5" description = "scp module for paramiko" -category = "dev" optional = false python-versions = "*" files = [ @@ -3024,7 +2932,6 @@ paramiko = "*" name = "send2trash" version = "1.8.2" description = "Send file to trash natively under Mac OS X, Windows and Linux" -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -3041,7 +2948,6 @@ win32 = ["pywin32"] name = "setuptools" version = "68.2.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3058,7 +2964,6 @@ testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jar name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3070,7 +2975,6 @@ files = [ name = "sniffio" version = "1.3.0" description = "Sniff out which async library your code is running under" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3082,7 +2986,6 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." -category = "dev" optional = false python-versions = "*" files = [ @@ -3094,7 +2997,6 @@ files = [ name = "soupsieve" version = "2.5" description = "A modern CSS selector implementation for Beautiful Soup." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3106,7 +3008,6 @@ files = [ name = "sphinx" version = "6.2.1" description = "Python documentation generator" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3142,7 +3043,6 @@ test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] name = "sphinx-issues" version = "3.0.1" description = "A Sphinx extension for linking to your project's issue tracker" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -3162,7 +3062,6 @@ tests = ["pytest (>=6.2.0)"] name = "sphinx-rtd-theme" version = "1.2.2" description = "Read the Docs theme for Sphinx" -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -3182,7 +3081,6 @@ dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] name = "sphinxcontrib-applehelp" version = "1.0.4" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3198,7 +3096,6 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -3214,7 +3111,6 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.0.1" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3230,7 +3126,6 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jquery" version = "4.1" description = "Extension to include jQuery on newer Sphinx releases" -category = "dev" optional = false python-versions = ">=2.7" files = [ @@ -3245,7 +3140,6 @@ Sphinx = ">=1.8" name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -3260,7 +3154,6 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-napoleon" version = "0.7" description = "Sphinx \"napoleon\" extension." -category = "dev" optional = false python-versions = "*" files = [ @@ -3276,7 +3169,6 @@ six = ">=1.5.2" name = "sphinxcontrib-qthelp" version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -3292,7 +3184,6 @@ test = ["pytest"] name = "sphinxcontrib-serializinghtml" version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -3308,7 +3199,6 @@ test = ["pytest"] name = "stack-data" version = "0.6.2" description = "Extract data from python stack frames and tracebacks for informative displays" -category = "dev" optional = false python-versions = "*" files = [ @@ -3328,7 +3218,6 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] name = "terminado" version = "0.17.1" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3349,7 +3238,6 @@ test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] name = "textfsm" version = "1.1.3" description = "Python module for parsing semi-structured text into python tables." -category = "dev" optional = false python-versions = "*" files = [ @@ -3365,7 +3253,6 @@ six = "*" name = "tinycss2" version = "1.2.1" description = "A tiny CSS parser" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3384,7 +3271,6 @@ test = ["flake8", "isort", "pytest"] name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3396,7 +3282,6 @@ files = [ name = "tornado" version = "6.3.3" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -category = "dev" optional = false python-versions = ">= 3.8" files = [ @@ -3417,7 +3302,6 @@ files = [ name = "traitlets" version = "5.10.0" description = "Traitlets Python configuration system" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3433,7 +3317,6 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.5.1)", "pre-commit", "pytest (>=7.0, name = "transitions" version = "0.9.0" description = "A lightweight, object-oriented Python state machine implementation with many extensions." -category = "dev" optional = false python-versions = "*" files = [ @@ -3452,7 +3335,6 @@ test = ["pytest"] name = "ttp" version = "0.9.5" description = "Template Text Parser" -category = "dev" optional = false python-versions = ">=2.7,<4.0" files = [ @@ -3468,7 +3350,6 @@ full = ["cerberus (>=1.3.0,<1.4.0)", "deepdiff (>=5.8.0,<5.9.0)", "jinja2 (>=3.0 name = "ttp-templates" version = "0.3.5" description = "Template Text Parser Templates collections" -category = "dev" optional = false python-versions = ">=3.6,<4.0" files = [ @@ -3486,7 +3367,6 @@ docs = ["mkdocs (==1.2.4)", "mkdocs-material (==7.2.2)", "mkdocs-material-extens name = "types-jinja2" version = "2.11.9" description = "Typing stubs for Jinja2" -category = "dev" optional = false python-versions = "*" files = [ @@ -3501,7 +3381,6 @@ types-MarkupSafe = "*" name = "types-markupsafe" version = "1.1.10" description = "Typing stubs for MarkupSafe" -category = "dev" optional = false python-versions = "*" files = [ @@ -3513,7 +3392,6 @@ files = [ name = "types-pkg-resources" version = "0.1.3" description = "Typing stubs for pkg_resources" -category = "dev" optional = false python-versions = "*" files = [ @@ -3525,7 +3403,6 @@ files = [ name = "typing-extensions" version = "4.8.0" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3537,7 +3414,6 @@ files = [ name = "uri-template" version = "1.3.0" description = "RFC 6570 URI Template Processor" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3552,7 +3428,6 @@ dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake name = "urllib3" version = "2.0.5" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3570,7 +3445,6 @@ zstd = ["zstandard (>=0.18.0)"] name = "wcwidth" version = "0.2.6" description = "Measures the displayed width of unicode strings in a terminal" -category = "dev" optional = false python-versions = "*" files = [ @@ -3582,7 +3456,6 @@ files = [ name = "webcolors" version = "1.13" description = "A library for working with the color formats defined by HTML and CSS." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3598,7 +3471,6 @@ tests = ["pytest", "pytest-cov"] name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" -category = "dev" optional = false python-versions = "*" files = [ @@ -3610,7 +3482,6 @@ files = [ name = "websocket-client" version = "1.6.3" description = "WebSocket client for Python with low level API options" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3627,7 +3498,6 @@ test = ["websockets"] name = "widgetsnbextension" version = "4.0.9" description = "Jupyter interactive widgets for Jupyter Notebook" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3637,13 +3507,13 @@ files = [ [[package]] name = "yamlordereddictloader" -version = "0.4.0" -description = "YAML loader and dump for PyYAML allowing to keep keys order." -category = "dev" +version = "0.4.2" +description = "YAML loader and dumper for PyYAML allowing to keep keys order." optional = false python-versions = "*" files = [ - {file = "yamlordereddictloader-0.4.0.tar.gz", hash = "sha256:7f30f0b99ea3f877f7cb340c570921fa9d639b7f69cba18be051e27f8de2080e"}, + {file = "yamlordereddictloader-0.4.2-py3-none-any.whl", hash = "sha256:dc048adb67026786cd24119bd71241f35bc8b0fd37d24b415c37bbc8049f9cd7"}, + {file = "yamlordereddictloader-0.4.2.tar.gz", hash = "sha256:36af2f6210fcff5da4fc4c12e1d815f973dceb41044e795e1f06115d634bca13"}, ] [package.dependencies] @@ -3653,7 +3523,6 @@ pyyaml = "*" name = "zipp" version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3668,4 +3537,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.8,<4.0" -content-hash = "f5cbd7f60247875e8c0a12f3e92464072bceec475e44f8569b158664cb2cbea6" +content-hash = "a1ccea793511259254a2085c25847692707ec5a44d89677bd08091e6eb82d421" diff --git a/pyproject.toml b/pyproject.toml index d5916eb6d..461342dcb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,6 +46,7 @@ types-pkg-resources = "^0.1.3" nornir-jinja2 = "0.2.0" nornir-utils = "0.2.0" nornir-napalm = "0.4.0" +isort = "^5.12.0" [tool.poetry.group.docs.dependencies] sphinx = "6.2.1" @@ -56,3 +57,5 @@ nbsphinx = "0.9.2" pygments = "2.16.1" sphinx-issues = "3.0.1" +[tool.isort] +profile = "black" \ No newline at end of file diff --git a/tests/__init__.py b/tests/__init__.py index ed6b6fa79..04099086c 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,4 +1,5 @@ import os + import pytest skip = pytest.mark.skipif( diff --git a/tests/conftest.py b/tests/conftest.py index 89a4f064e..feab13c4b 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,22 +1,22 @@ -from typing import List import os +from typing import List + +import pytest +import ruamel.yaml + from nornir.core import Nornir from nornir.core.inventory import ( - Inventory, - Host, - Hosts, + ConnectionOptions, + Defaults, Group, Groups, - Defaults, + Host, + Hosts, + Inventory, ParentGroups, - ConnectionOptions, ) -from nornir.core.task import AggregatedResult, Task from nornir.core.state import GlobalState - -import ruamel.yaml -import pytest - +from nornir.core.task import AggregatedResult, Task global_data = GlobalState(dry_run=True) diff --git a/tests/core/test_InitNornir.py b/tests/core/test_InitNornir.py index dce47dcd4..c926b634e 100644 --- a/tests/core/test_InitNornir.py +++ b/tests/core/test_InitNornir.py @@ -1,17 +1,17 @@ import logging import logging.config import os + import pytest from nornir import InitNornir from nornir.core.exceptions import ConflictingConfigurationWarning -from nornir.core.inventory import Inventory, Host, Hosts, Groups, Group, Defaults +from nornir.core.inventory import Defaults, Group, Groups, Host, Hosts, Inventory from nornir.core.plugins.inventory import ( InventoryPluginRegister, TransformFunctionRegister, ) - dir_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "test_InitNornir") LOGGING_DICT = { diff --git a/tests/core/test_configuration.py b/tests/core/test_configuration.py index 0cd6e996e..9726a912b 100644 --- a/tests/core/test_configuration.py +++ b/tests/core/test_configuration.py @@ -3,7 +3,6 @@ from nornir.core.configuration import Config - dir_path = os.path.join( os.path.dirname(os.path.realpath(__file__)), "test_configuration" ) diff --git a/tests/core/test_connections.py b/tests/core/test_connections.py index fb54e33d2..b18eb2acb 100644 --- a/tests/core/test_connections.py +++ b/tests/core/test_connections.py @@ -1,15 +1,15 @@ from typing import Any, Dict, Optional +import pytest + from nornir.core.configuration import Config -from nornir.core.plugins.connections import ConnectionPluginRegister from nornir.core.exceptions import ( ConnectionAlreadyOpen, ConnectionNotOpen, PluginAlreadyRegistered, PluginNotRegistered, ) - -import pytest +from nornir.core.plugins.connections import ConnectionPluginRegister class DummyConnectionPlugin: diff --git a/tests/core/test_filter.py b/tests/core/test_filter.py index 7599e3f67..276c56e45 100644 --- a/tests/core/test_filter.py +++ b/tests/core/test_filter.py @@ -1,5 +1,6 @@ import pytest -from nornir.core.filter import F, AND, OR + +from nornir.core.filter import AND, OR, F class Test(object): diff --git a/tests/core/test_inventory.py b/tests/core/test_inventory.py index 6a48a16b3..1d84cce4b 100644 --- a/tests/core/test_inventory.py +++ b/tests/core/test_inventory.py @@ -1,11 +1,9 @@ import os -from nornir.core import inventory - import pytest - import ruamel.yaml +from nornir.core import inventory yaml = ruamel.yaml.YAML(typ="safe") dir_path = os.path.dirname(os.path.realpath(__file__)) diff --git a/tests/core/test_registered_plugins.py b/tests/core/test_registered_plugins.py index a35f847cf..ab2996b63 100644 --- a/tests/core/test_registered_plugins.py +++ b/tests/core/test_registered_plugins.py @@ -1,11 +1,10 @@ +from nornir_utils.plugins.inventory import YAMLInventory + from nornir.core.plugins.inventory import InventoryPluginRegister from nornir.core.plugins.runners import RunnersPluginRegister - from nornir.plugins.inventory import SimpleInventory from nornir.plugins.runners import SerialRunner, ThreadedRunner -from nornir_utils.plugins.inventory import YAMLInventory - class Test: def test_registered_runners(self): diff --git a/tests/core/test_tasks.py b/tests/core/test_tasks.py index 0f44432b1..cbd61f699 100644 --- a/tests/core/test_tasks.py +++ b/tests/core/test_tasks.py @@ -1,7 +1,7 @@ import logging -from nornir.core.task import Result from nornir.core.exceptions import NornirSubTaskError +from nornir.core.task import Result class CustomException(Exception): diff --git a/tests/plugins/processors/test_threaded.py b/tests/plugins/processors/test_threaded.py index e4fdf8bbb..38c18498f 100644 --- a/tests/plugins/processors/test_threaded.py +++ b/tests/plugins/processors/test_threaded.py @@ -1,11 +1,10 @@ import datetime import time -from nornir.core.exceptions import NornirExecutionError -from nornir.plugins.runners import ThreadedRunner - import pytest +from nornir.core.exceptions import NornirExecutionError +from nornir.plugins.runners import ThreadedRunner NUM_WORKERS = 20