From 92c041c917818634265c324ab446f4f7eef36614 Mon Sep 17 00:00:00 2001 From: Ken Celenza Date: Fri, 9 Jun 2023 18:06:18 -0400 Subject: [PATCH 01/11] Move password helper names to be namespaced with vendor information. Assign new name to old name to not break semver. (#286) --- docs/dev/attribution.md | 20 ++++----- docs/user/include_jinja_list.md | 13 ++++-- docs/user/lib_use_cases.md | 6 +-- netutils/password.py | 76 ++++++++++++++++++--------------- netutils/utils.py | 13 ++++-- tests/unit/test_password.py | 72 +++++++++++++++---------------- 6 files changed, 109 insertions(+), 91 deletions(-) diff --git a/docs/dev/attribution.md b/docs/dev/attribution.md index 135ecf6e..aabb6b3a 100644 --- a/docs/dev/attribution.md +++ b/docs/dev/attribution.md @@ -13,16 +13,16 @@ Influencers In many instances variables and function names were reused, but the code was built from scratch to avoid any potential licensing issues. Functions that were known to be rewritten and their known origin. -| Function | Origin | -| ---------------- | ------- | -| asn_to_int | NAPALM | -| is_ip | IPCal | -| ip_to_bin | IPCal | -| get_usable_range | IPCal | -| encrypt_type7 | unknown | -| decrypt_type7 | unknown | -| vlan_to_list | Ansible | -| sanitize_config | NAPALM | +| Function | Origin | +| ------------------- | ------- | +| asn_to_int | NAPALM | +| is_ip | IPCal | +| ip_to_bin | IPCal | +| get_usable_range | IPCal | +| encrypt_cisco_type7 | unknown | +| decrypt_cisco_type7 | unknown | +| vlan_to_list | Ansible | +| sanitize_config | NAPALM | Relevant PR's diff --git a/docs/user/include_jinja_list.md b/docs/user/include_jinja_list.md index 627acc2e..86fd597c 100644 --- a/docs/user/include_jinja_list.md +++ b/docs/user/include_jinja_list.md @@ -52,15 +52,20 @@ | mac_to_int | netutils.mac.mac_to_int | | mac_type | netutils.mac.mac_type | | get_upgrade_path | netutils.os_version.get_upgrade_path | +| compare_cisco_type5 | netutils.password.compare_cisco_type5 | +| compare_cisco_type7 | netutils.password.compare_cisco_type7 | +| compare_cisco_type9 | netutils.password.compare_cisco_type9 | | compare_type5 | netutils.password.compare_type5 | | compare_type7 | netutils.password.compare_type7 | -| compare_type9 | netutils.password.compare_type9 | -| decrypt_juniper | netutils.password.decrypt_juniper | +| decrypt_cisco_type7 | netutils.password.decrypt_cisco_type7 | +| decrypt_juniper_type9 | netutils.password.decrypt_juniper_type9 | | decrypt_type7 | netutils.password.decrypt_type7 | -| encrypt_juniper | netutils.password.encrypt_juniper | +| encrypt_cisco_type5 | netutils.password.encrypt_cisco_type5 | +| encrypt_cisco_type7 | netutils.password.encrypt_cisco_type7 | +| encrypt_cisco_type9 | netutils.password.encrypt_cisco_type9 | +| encrypt_juniper_type9 | netutils.password.encrypt_juniper_type9 | | encrypt_type5 | netutils.password.encrypt_type5 | | encrypt_type7 | netutils.password.encrypt_type7 | -| encrypt_type9 | netutils.password.encrypt_type9 | | get_hash_salt | netutils.password.get_hash_salt | | tcp_ping | netutils.ping.tcp_ping | | longest_prefix_match | netutils.route.longest_prefix_match | diff --git a/docs/user/lib_use_cases.md b/docs/user/lib_use_cases.md index 47e49876..2e01aa04 100644 --- a/docs/user/lib_use_cases.md +++ b/docs/user/lib_use_cases.md @@ -54,12 +54,12 @@ The following function will help in deploying list of VLANs and match the config You may want to compare a known password with a given encrypted password. This can help in verifying if the passwords are as expected for compliance reasons. ```python ->>> from netutils.password import compare_type5 +>>> from netutils.password import compare_cisco_type5 >>> ->>> compare_type5("cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") +>>> compare_cisco_type5("cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") True >>> ->>> compare_type5("not_cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") +>>> compare_cisco_type5("not_cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") False >>> ``` diff --git a/netutils/password.py b/netutils/password.py index 5a7d9017..f780f24f 100644 --- a/netutils/password.py +++ b/netutils/password.py @@ -112,7 +112,7 @@ def decorated(*args: t.Any, **kwargs: t.Any) -> t.Any: return decorated -def compare_type5( +def compare_cisco_type5( unencrypted_password: str, encrypted_password: str, return_original: bool = False ) -> t.Union[str, bool]: """Given an encrypted and unencrypted password of Cisco Type 5 password, compare if they are a match. @@ -126,22 +126,22 @@ def compare_type5( Whether or not the password is as compared to. Examples: - >>> from netutils.password import compare_type5 - >>> compare_type5("cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") + >>> from netutils.password import compare_cisco_type5 + >>> compare_cisco_type5("cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") True - >>> compare_type5("not_cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") + >>> compare_cisco_type5("not_cisco","$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.") False >>> """ salt = get_hash_salt(encrypted_password) - if encrypt_type5(unencrypted_password, salt) == encrypted_password: + if encrypt_cisco_type5(unencrypted_password, salt) == encrypted_password: if return_original is True: return encrypted_password return True return False -def compare_type7( +def compare_cisco_type7( unencrypted_password: str, encrypted_password: str, return_original: bool = False ) -> t.Union[str, bool]: """Given an encrypted and unencrypted password of Cisco Type 7 password, compare if they are a match. @@ -155,24 +155,24 @@ def compare_type7( Whether or not the password is as compared to. Examples: - >>> from netutils.password import compare_type7 - >>> compare_type7("cisco","121A0C041104") + >>> from netutils.password import compare_cisco_type7 + >>> compare_cisco_type7("cisco","121A0C041104") True - >>> compare_type7("not_cisco","121A0C041104") + >>> compare_cisco_type7("not_cisco","121A0C041104") False >>> """ - if decrypt_type7(encrypted_password) == unencrypted_password: + if decrypt_cisco_type7(encrypted_password) == unencrypted_password: if return_original is True: return encrypted_password return True return False -def compare_type9( +def compare_cisco_type9( unencrypted_password: str, encrypted_password: str, return_original: bool = False ) -> t.Union[str, bool]: - """Given an encrypted and unencrypted password of Cisco Type 7 password, compare if they are a match. + """Given an encrypted and unencrypted password of Cisco Type 9 password, compare if they are a match. Args: unencrypted_password: A password that has not been encrypted, and will be compared against. @@ -183,22 +183,22 @@ def compare_type9( Whether or not the password is as compared to. Examples: - >>> from netutils.password import compare_type9 - >>> compare_type9("cisco","$9$588|P!iWqEx=Wf$nadLmT9snc6V9QAeUuATSOoCAZMQIHqixJfZpQj5EU2") + >>> from netutils.password import compare_cisco_type9 + >>> compare_cisco_type9("cisco","$9$588|P!iWqEx=Wf$nadLmT9snc6V9QAeUuATSOoCAZMQIHqixJfZpQj5EU2") True - >>> compare_type9("not_cisco","$9$588|P!iWqEx=Wf$nadLmT9snc6V9QAeUuATSOoCAZMQIHqixJfZpQj5EU2") + >>> compare_cisco_type9("not_cisco","$9$588|P!iWqEx=Wf$nadLmT9snc6V9QAeUuATSOoCAZMQIHqixJfZpQj5EU2") False >>> """ salt = get_hash_salt(encrypted_password) - if encrypt_type9(unencrypted_password, salt) == encrypted_password: + if encrypt_cisco_type9(unencrypted_password, salt) == encrypted_password: if return_original is True: return encrypted_password return True return False -def decrypt_type7(encrypted_password: str) -> str: +def decrypt_cisco_type7(encrypted_password: str) -> str: """Given an unencrypted password of Cisco Type 7 password decrypt it. Args: @@ -208,8 +208,8 @@ def decrypt_type7(encrypted_password: str) -> str: The unencrypted_password password. Examples: - >>> from netutils.password import decrypt_type7 - >>> decrypt_type7("121A0C041104") + >>> from netutils.password import decrypt_cisco_type7 + >>> decrypt_cisco_type7("121A0C041104") 'cisco' >>> """ @@ -229,7 +229,7 @@ def decrypt_type7(encrypted_password: str) -> str: @_fail_on_mac -def encrypt_type5(unencrypted_password: str, salt: t.Optional[str] = None, salt_len: int = 4) -> str: +def encrypt_cisco_type5(unencrypted_password: str, salt: t.Optional[str] = None, salt_len: int = 4) -> str: """Given an unencrypted password of Cisco Type 5 password, encrypt it. Args: @@ -241,8 +241,8 @@ def encrypt_type5(unencrypted_password: str, salt: t.Optional[str] = None, salt_ The encrypted password. Examples: - >>> from netutils.password import encrypt_type5 - >>> encrypt_type5("cisco") # doctest: +SKIP + >>> from netutils.password import encrypt_cisco_type5 + >>> encrypt_cisco_type5("cisco") # doctest: +SKIP '$1$MHkb$v2MFmDkQX66TTxLkFF50K/' >>> """ @@ -253,7 +253,7 @@ def encrypt_type5(unencrypted_password: str, salt: t.Optional[str] = None, salt_ return crypt.crypt(unencrypted_password, f"$1${salt}$") -def encrypt_type7(unencrypted_password: str, salt: t.Optional[int] = None) -> str: +def encrypt_cisco_type7(unencrypted_password: str, salt: t.Optional[int] = None) -> str: """Given an unencrypted password of Cisco Type 7 password, encypt it. Args: @@ -264,8 +264,8 @@ def encrypt_type7(unencrypted_password: str, salt: t.Optional[int] = None) -> st The encrypted password. Examples: - >>> from netutils.password import encrypt_type7 - >>> encrypt_type7("cisco", 11) + >>> from netutils.password import encrypt_cisco_type7 + >>> encrypt_cisco_type7("cisco", 11) '110A1016141D' >>> """ @@ -290,7 +290,7 @@ def encrypt_type7(unencrypted_password: str, salt: t.Optional[int] = None) -> st return encrypted_password -def encrypt_type9(unencrypted_password: str, salt: t.Optional[str] = None) -> str: +def encrypt_cisco_type9(unencrypted_password: str, salt: t.Optional[str] = None) -> str: """Given an unencrypted password of Cisco Type 9 password, encrypt it. Note: This uses the built-in Python `scrypt` function to generate the password @@ -306,8 +306,8 @@ def encrypt_type9(unencrypted_password: str, salt: t.Optional[str] = None) -> st The encrypted password. Examples: - >>> from netutils.password import encrypt_type9 - >>> encrypt_type9("123456", "cvWdfQlRRDKq/U") + >>> from netutils.password import encrypt_cisco_type9 + >>> encrypt_cisco_type9("123456", "cvWdfQlRRDKq/U") '$9$cvWdfQlRRDKq/U$VFTPha5VHTCbSgSUAo.nPoh50ZiXOw1zmljEjXkaq1g' Raises: @@ -364,7 +364,7 @@ def get_hash_salt(encrypted_password: str) -> str: return split_password[2] -def decrypt_juniper(encrypted_password: str) -> str: +def decrypt_juniper_type9(encrypted_password: str) -> str: """Given an encrypted Junos $9$ type password, decrypt it. Args: @@ -374,8 +374,8 @@ def decrypt_juniper(encrypted_password: str) -> str: The unencrypted_password password. Examples: - >>> from netutils.password import decrypt_juniper - >>> decrypt_juniper("$9$7YdwgGDkTz6oJz69A1INdb") + >>> from netutils.password import decrypt_juniper_type9 + >>> decrypt_juniper_type9("$9$7YdwgGDkTz6oJz69A1INdb") 'juniper' >>> """ @@ -409,7 +409,7 @@ def decrypt_juniper(encrypted_password: str) -> str: return decrypted_password -def encrypt_juniper(unencrypted_password: str, salt: t.Optional[int] = None) -> str: +def encrypt_juniper_type9(unencrypted_password: str, salt: t.Optional[int] = None) -> str: """Given an unencrypted password, encrypt to Juniper $9$ type password. Args: @@ -420,8 +420,8 @@ def encrypt_juniper(unencrypted_password: str, salt: t.Optional[int] = None) -> The encrypted password. Examples: - >>> from netutils.password import encrypt_juniper - >>> encrypt_juniper("juniper", 35) # doctest: +SKIP + >>> from netutils.password import encrypt_juniper_type9 + >>> encrypt_juniper_type9("juniper", 35) # doctest: +SKIP '$9$7YdwgGDkTz6oJz69A1INdb' >>> """ @@ -454,3 +454,11 @@ def encrypt_juniper(unencrypted_password: str, salt: t.Optional[int] = None) -> encrypted_password += new_character return encrypted_password + + +# Provide until transition to 2.0 +compare_type5 = compare_cisco_type5 +compare_type7 = compare_cisco_type7 +decrypt_type7 = decrypt_cisco_type7 +encrypt_type5 = encrypt_cisco_type5 +encrypt_type7 = encrypt_cisco_type7 diff --git a/netutils/utils.py b/netutils/utils.py index 8d3f13a5..993f6c99 100644 --- a/netutils/utils.py +++ b/netutils/utils.py @@ -54,14 +54,19 @@ "get_oui": "mac.get_oui", "compare_type5": "password.compare_type5", "compare_type7": "password.compare_type7", - "compare_type9": "password.compare_type9", + "compare_cisco_type5": "password.compare_cisco_type5", + "compare_cisco_type7": "password.compare_cisco_type7", + "compare_cisco_type9": "password.compare_cisco_type9", "decrypt_type7": "password.decrypt_type7", + "decrypt_cisco_type7": "password.decrypt_cisco_type7", + "decrypt_juniper_type9": "password.decrypt_juniper_type9", "encrypt_type5": "password.encrypt_type5", "encrypt_type7": "password.encrypt_type7", - "encrypt_type9": "password.encrypt_type9", + "encrypt_cisco_type5": "password.encrypt_cisco_type5", + "encrypt_cisco_type7": "password.encrypt_cisco_type7", + "encrypt_cisco_type9": "password.encrypt_cisco_type9", + "encrypt_juniper_type9": "password.encrypt_juniper_type9", "get_hash_salt": "password.get_hash_salt", - "encrypt_juniper": "password.encrypt_juniper", - "decrypt_juniper": "password.decrypt_juniper", "tcp_ping": "ping.tcp_ping", "longest_prefix_match": "route.longest_prefix_match", "vlanlist_to_config": "vlan.vlanlist_to_config", diff --git a/tests/unit/test_password.py b/tests/unit/test_password.py index 933120a3..25ac1445 100644 --- a/tests/unit/test_password.py +++ b/tests/unit/test_password.py @@ -3,7 +3,7 @@ from netutils import password -COMPARE_TYPE5 = [ +COMPARE_CISCO_TYPE5 = [ { "sent": {"unencrypted_password": "cisco", "encrypted_password": "$1$nTc1$Z28sUTcWfXlvVe2x.3XAa."}, "received": True, @@ -22,7 +22,7 @@ }, ] -COMPARE_TYPE7 = [ +COMPARE_CISCO_TYPE7 = [ { "sent": {"unencrypted_password": "cisco", "encrypted_password": "070C285F4D06"}, "received": True, @@ -41,7 +41,7 @@ }, ] -COMPARE_TYPE9 = [ +COMPARE_CISCO_TYPE9 = [ { "sent": { "unencrypted_password": "cisco", @@ -66,28 +66,28 @@ }, ] -DECRYPT_TYPE7 = [ +DECRYPT_CISCO_TYPE7 = [ { "sent": {"encrypted_password": "14141B180F0B"}, "received": "cisco", } ] -ENCRYPT_TYPE5 = [ +ENCRYPT_CISCO_TYPE5 = [ { "sent": {"unencrypted_password": "cisco", "salt": "nTc1"}, "received": "$1$nTc1$Z28sUTcWfXlvVe2x.3XAa.", }, ] -ENCRYPT_TYPE7 = [ +ENCRYPT_CISCO_TYPE7 = [ { "sent": {"unencrypted_password": "cisco", "salt": 10}, "received": "104D000A0618", }, ] -ENCRYPT_TYPE9 = [ +ENCRYPT_CISCO_TYPE9 = [ { "sent": {"unencrypted_password": "cisco", "salt": "x2xAAwQ3MBbEnk"}, "received": "$9$x2xAAwQ3MBbEnk$JCxr6MnPb.k5ymK72mTypyRJYH5W74ZRvtLTprCj.xQ", @@ -101,7 +101,7 @@ }, ] -ENCRYPT_JUNIPER = [ +ENCRYPT_JUNIPER_TYPE9 = [ { "sent": {"unencrypted_password": "juniper", "salt": 35}, "received_one": "$9$7", @@ -109,7 +109,7 @@ }, ] -DECRYPT_JUNIPER = [ +DECRYPT_JUNIPER_TYPE9 = [ { "sent": {"encrypted_password": "$9$7YdwgGDkTz6oJz69A1INdb"}, "received": "juniper", @@ -117,39 +117,39 @@ ] -@pytest.mark.parametrize("data", COMPARE_TYPE5) -def test_compare_type5(data): - assert password.compare_type5(**data["sent"]) == data["received"] +@pytest.mark.parametrize("data", COMPARE_CISCO_TYPE5) +def test_compare_cisco_type5(data): + assert password.compare_cisco_type5(**data["sent"]) == data["received"] -@pytest.mark.parametrize("data", COMPARE_TYPE7) -def test_compare_type7(data): - assert password.compare_type7(**data["sent"]) == data["received"] +@pytest.mark.parametrize("data", COMPARE_CISCO_TYPE7) +def test_compare_cisco_type7(data): + assert password.compare_cisco_type7(**data["sent"]) == data["received"] -@pytest.mark.parametrize("data", COMPARE_TYPE9) -def test_compare_type9(data): - assert password.compare_type9(**data["sent"]) == data["received"] +@pytest.mark.parametrize("data", COMPARE_CISCO_TYPE9) +def test_compare_cisco_type9(data): + assert password.compare_cisco_type9(**data["sent"]) == data["received"] -@pytest.mark.parametrize("data", DECRYPT_TYPE7) -def test_decrypt_type7(data): - assert password.decrypt_type7(**data["sent"]) == data["received"] +@pytest.mark.parametrize("data", DECRYPT_CISCO_TYPE7) +def test_decrypt_cisco_type7(data): + assert password.decrypt_cisco_type7(**data["sent"]) == data["received"] -@pytest.mark.parametrize("data", ENCRYPT_TYPE5) -def test_encrypt_type5(data): - assert password.encrypt_type5(**data["sent"]) == data["received"] +@pytest.mark.parametrize("data", ENCRYPT_CISCO_TYPE5) +def test_encrypt_cisco_type5(data): + assert password.encrypt_cisco_type5(**data["sent"]) == data["received"] -@pytest.mark.parametrize("data", ENCRYPT_TYPE7) -def test_encrypt_type7(data): - assert password.encrypt_type7(**data["sent"]) == data["received"] +@pytest.mark.parametrize("data", ENCRYPT_CISCO_TYPE7) +def test_encrypt_cisco_type7(data): + assert password.encrypt_cisco_type7(**data["sent"]) == data["received"] -@pytest.mark.parametrize("data", ENCRYPT_TYPE9) -def test_encrypt_type9(data): - assert password.encrypt_type9(**data["sent"]) == data["received"] +@pytest.mark.parametrize("data", ENCRYPT_CISCO_TYPE9) +def test_encrypt_cisco_type9(data): + assert password.encrypt_cisco_type9(**data["sent"]) == data["received"] @pytest.mark.parametrize("data", GET_HASH_SALT) @@ -157,14 +157,14 @@ def test_get_hash_salt(data): assert password.get_hash_salt(**data["sent"]) == data["received"] -@pytest.mark.parametrize("data", ENCRYPT_JUNIPER) -def test_encrypt_juniper(data): +@pytest.mark.parametrize("data", ENCRYPT_JUNIPER_TYPE9) +def test_encrypt_juniper_type9(data): # Passwords include random padding, check only the non random sections - decrypted_password = password.encrypt_juniper(**data["sent"]) + decrypted_password = password.encrypt_juniper_type9(**data["sent"]) assert decrypted_password[0:4] == data["received_one"] assert decrypted_password[7:] == data["received_two"] -@pytest.mark.parametrize("data", DECRYPT_JUNIPER) -def test_decrypt_juniper(data): - assert password.decrypt_juniper(**data["sent"]) == data["received"] +@pytest.mark.parametrize("data", DECRYPT_JUNIPER_TYPE9) +def test_decrypt_juniper_type9(data): + assert password.decrypt_juniper_type9(**data["sent"]) == data["received"] From eee64162e518aa66d21047a57f159d3463d7fb1a Mon Sep 17 00:00:00 2001 From: Zach Biles Date: Wed, 21 Jun 2023 15:19:14 -0500 Subject: [PATCH 02/11] Palo alto networks (#262) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: ✨ start building palo parser * fix: 🐛 everything but the banner * fix: 🐛 adjust for banner * fix: 🔥 delete unneeded file * fix: 🐛 spelling * chore: 🚨 fix black * fix: 🐛 spelling * fix: 🐛 update base configs * chore: ⬆️ update poetry dependencies * feat: ✨ add parsing for palo alto devices * chore: ✅ update fixtures * chore: 🎨 fix black * fix: 🐛 remove commented lines * feat: ✨ add palo alto networks * fix: 🐛 adjust checking logic * fix: 🐛 only process if generator is not empty * fix: 🐛 fix conversion logic * fix: 🐛 adjust for other content field * test: ✅ add test features * fix: 🐛 update jinja mapping * chore: 🚨 fix black * chore: ✅ add more tests * fix: 🐛 remote unnecessary import * fix: 🐛 add type * fix: 🐛 add type * fix: 🐛 change type * fix: 🐛 update types * fix: 🐛 yet another typing fix * fix: 🐛 fix spelling * fix: 🐛 fix BaseSpaceConfigParser example * fix: 🐛 fix examples and passing tests * fix: 🐛 fix docs build test * fix: 🐛 remove extra stuff * fix: 🐛 adjust banner handling * fix: 🐛 fix banner handling * test: ✅ add tests for palo config converter * fix: 🐛 small tweaks * fix: 🐛 fix pylint errors and parser tests * chore: ⬆️ poetry update * fix: 🐛 remove unneeded versions * fix: 🐛 update banner handling * Update netutils/config/conversion.py Co-authored-by: Jeff Kala <48843785+jeffkala@users.noreply.github.com> * Update netutils/config/conversion.py Co-authored-by: Adam Byczkowski <38091261+qduk@users.noreply.github.com> * Update netutils/config/parser.py Co-authored-by: Jeff Kala <48843785+jeffkala@users.noreply.github.com> * fix: 🐛 fix conversion mapping and testing * refactor: ♻️ refactor config conversion * refactor: ♻️ refactor to resolve cyclic import - move function to utils module * fix: ✅ fix pylint errors * fix: ✅ more linter errors * fix: 🐛 fix example for conversion * fix: 🐛 regenerate poetry.lock * fix: 🐛 revert poetry update --------- Co-authored-by: Jeff Kala <48843785+jeffkala@users.noreply.github.com> Co-authored-by: Adam Byczkowski <38091261+qduk@users.noreply.github.com> --- docs/dev/include_parser_list.md | 3 +- docs/user/include_jinja_list.md | 1 + netutils/config/compliance.py | 13 +- netutils/config/conversion.py | 94 +++++ netutils/config/parser.py | 120 ++++++- netutils/config/utils.py | 10 + netutils/utils.py | 1 + poetry.lock | 0 .../paloalto_panos/paloalto_backup.txt | 32 ++ .../paloalto_panos/paloalto_feature.py | 3 + .../paloalto_panos/paloalto_intended.txt | 32 ++ .../paloalto_panos/paloalto_received.json | 12 + .../paloalto_panos/panos_feature.py | 8 + .../paloalto_panos/panos_received.json | 4 + .../paloalto_panos/panos_sent.txt | 9 + .../paloalto_panos/panos_basic_base.txt | 9 + .../paloalto_panos/panos_basic_intended.txt | 9 + .../paloalto_panos/panos_basic_received.txt | 1 + .../paloalto_panos/panos_full_feature.py | 5 + .../paloalto_panos/panos_full_received.txt | 7 + .../paloalto_panos/panos_full_sent.txt | 21 ++ .../paloalto_basic_converted.txt | 22 ++ .../paloalto_panos/paloalto_basic_sent.txt | 51 +++ .../paloalto_panos/panos_basic_received.py | 44 +++ .../base/paloalto_panos/panos_basic_sent.txt | 52 +++ .../paloalto_panos/panos_full_received.py | 340 ++++++++++++++++++ .../base/paloalto_panos/panos_full_sent.txt | 333 +++++++++++++++++ tests/unit/test_conversion.py | 30 ++ 28 files changed, 1253 insertions(+), 13 deletions(-) create mode 100644 netutils/config/conversion.py create mode 100644 netutils/config/utils.py mode change 100755 => 100644 poetry.lock create mode 100644 tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_backup.txt create mode 100644 tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_feature.py create mode 100644 tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_intended.txt create mode 100644 tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_received.json create mode 100644 tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_feature.py create mode 100644 tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_received.json create mode 100644 tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_sent.txt create mode 100644 tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_base.txt create mode 100644 tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_intended.txt create mode 100644 tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_received.txt create mode 100644 tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_feature.py create mode 100644 tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_received.txt create mode 100644 tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_sent.txt create mode 100644 tests/unit/mock/config/conversion/paloalto_panos/paloalto_basic_converted.txt create mode 100644 tests/unit/mock/config/conversion/paloalto_panos/paloalto_basic_sent.txt create mode 100644 tests/unit/mock/config/parser/base/paloalto_panos/panos_basic_received.py create mode 100644 tests/unit/mock/config/parser/base/paloalto_panos/panos_basic_sent.txt create mode 100644 tests/unit/mock/config/parser/base/paloalto_panos/panos_full_received.py create mode 100644 tests/unit/mock/config/parser/base/paloalto_panos/panos_full_sent.txt create mode 100644 tests/unit/test_conversion.py diff --git a/docs/dev/include_parser_list.md b/docs/dev/include_parser_list.md index 97d30c9b..93fb6a23 100644 --- a/docs/dev/include_parser_list.md +++ b/docs/dev/include_parser_list.md @@ -15,4 +15,5 @@ | linux | netutils.config.parser.LINUXConfigParser | | mikrotik_routeros | netutils.config.parser.RouterOSConfigParser | | mrv_optiswitch | netutils.config.parser.OptiswitchConfigParser | -| nokia_sros | netutils.config.parser.NokiaConfigParser | \ No newline at end of file +| nokia_sros | netutils.config.parser.NokiaConfigParser | +| paloalto_panos | netutils.config.parser.PaloAltoNetworksConfigParser | \ No newline at end of file diff --git a/docs/user/include_jinja_list.md b/docs/user/include_jinja_list.md index 86fd597c..29fb3414 100644 --- a/docs/user/include_jinja_list.md +++ b/docs/user/include_jinja_list.md @@ -16,6 +16,7 @@ | feature_compliance | netutils.config.compliance.feature_compliance | | find_unordered_cfg_lines | netutils.config.compliance.find_unordered_cfg_lines | | section_config | netutils.config.compliance.section_config | +| paloalto_panos_brace_to_set | netutils.config.conversion.paloalto_panos_brace_to_set | | fqdn_to_ip | netutils.dns.fqdn_to_ip | | is_fqdn_resolvable | netutils.dns.is_fqdn_resolvable | | abbreviated_interface_name | netutils.interface.abbreviated_interface_name | diff --git a/netutils/config/compliance.py b/netutils/config/compliance.py index af7a3a11..55fa56a8 100644 --- a/netutils/config/compliance.py +++ b/netutils/config/compliance.py @@ -2,6 +2,8 @@ import typing as t +from netutils.config.utils import _open_file_config + from . import parser # pylint: disable=relative-beyond-top-level parser_map: t.Dict[str, t.Type[parser.BaseConfigParser]] = { @@ -20,9 +22,11 @@ "aruba_aoscx": parser.ArubaConfigParser, "mrv_optiswitch": parser.OptiswitchConfigParser, "extreme_netiron": parser.NetironConfigParser, + "paloalto_panos": parser.PaloAltoNetworksConfigParser, "mikrotik_routeros": parser.RouterOSConfigParser, } + # TODO: Once support for 3.7 is dropped, there should be a typing.TypedDict for this which should then also be used # as the return type for a bunch of the following methods. default_feature: t.Dict[str, t.Union[str, bool, None]] = { @@ -107,15 +111,6 @@ def _is_feature_ordered_compliant(feature_intended_cfg: str, feature_actual_cfg: return False -def _open_file_config(cfg_path: str) -> str: - """Open config file from local disk.""" - # This might fail, raising an IOError - with open(cfg_path, encoding="utf-8") as filehandler: - device_cfg = filehandler.read() - - return device_cfg.strip() - - def compliance( features: t.List[t.Dict[str, t.Union[str, bool, t.List[str]]]], backup: str, diff --git a/netutils/config/conversion.py b/netutils/config/conversion.py new file mode 100644 index 00000000..c23934d0 --- /dev/null +++ b/netutils/config/conversion.py @@ -0,0 +1,94 @@ +"""Configuration conversion methods for different network operating systems.""" + +import typing as t + +from netutils.config.utils import _open_file_config + +conversion_map: t.Dict[str, t.List[str]] = { + "paloalto_panos": ["paloalto_panos_brace_to_set"], +} + + +def paloalto_panos_brace_to_set(cfg: str, cfg_type: str = "file") -> str: + r"""Convert Palo Alto Brace format configuration to set format. + + Args: + cfg: Configuration as a string + cfg_type: A string that is effectively a choice between `file` and `string`. Defaults to `file`. + + Returns: + str: Converted configuration as a string. + + Examples: + >>> config = ''' + ... config { + ... mgt-config { + ... users { + ... admin { + ... phash *; + ... permissions { + ... role-based { + ... superuser yes; + ... } + ... } + ... public-key thisisasuperduperlongbase64encodedstring; + ... } + ... panadmin { + ... permissions { + ... role-based { + ... superuser yes; + ... } + ... } + ... phash passwordhash; + ... } + ... } + ... } + ... }''' + >>> paloalto_panos_brace_to_set(cfg=config, cfg_type='string') == \ + ... '''set mgt-config users admin phash * + ... set mgt-config users admin permissions role-based superuser yes + ... set mgt-config users admin public-key thisisasuperduperlongbase64encodedstring + ... set mgt-config users panadmin permissions role-based superuser yes + ... set mgt-config users panadmin phash passwordhash''' + True + """ + stack: t.List[str] = [] + cfg_value: t.List[str] = [] + cfg_string: str = "" + + if cfg_type not in ["file", "string"]: + raise ValueError("The variable `cfg_type` must be either `file` or `string`.") + if cfg_type == "file": + cfg_list = _open_file_config(cfg).splitlines() + else: + cfg_list = cfg.splitlines() + + for i, line in enumerate(cfg_list): + line = line.strip() + if line.endswith(";") and not line.endswith('";'): + line = line.split(";", 1)[0] + line = "".join(str(s) for s in stack) + line + line = line.split("config ", 1)[1] + line = "set " + line + cfg_value.append(line.strip()) + elif line.endswith('login-banner "') or line.endswith('content "'): + _first_banner_line = "".join(str(s) for s in stack) + line + cfg_value.append("set " + _first_banner_line.split("config ", 1)[1]) + + for banner_line in cfg_list[i + 1:]: # fmt: skip + if '"' in banner_line: + banner_line = banner_line.split(";", 1)[0] + cfg_value.append(banner_line.strip()) + break + cfg_value.append(banner_line.strip()) + elif line.endswith("{"): + stack.append(line[:-1]) + elif line == "}" and len(stack) > 0: + stack.pop() + + for _l, _line in enumerate(cfg_value): + cfg_string += _line + if _l < len(cfg_value) - 1: + cfg_string += "\n" + + return cfg_string diff --git a/netutils/config/parser.py b/netutils/config/parser.py index c28515a2..2dd97a67 100644 --- a/netutils/config/parser.py +++ b/netutils/config/parser.py @@ -6,6 +6,7 @@ from collections import namedtuple from netutils.banner import normalise_delimiter_caret_c +from netutils.config.conversion import paloalto_panos_brace_to_set ConfigLine = namedtuple("ConfigLine", "config_line,parents") @@ -291,7 +292,7 @@ def build_config_relationship(self) -> t.List[ConfigLine]: >>> config = ( ... "interface Ethernet1/1\n" ... " vlan 10\n" - ... " no shutdown" + ... " no shutdown\n" ... "interface Ethernet1/2\n" ... " shutdown\n" ... ) @@ -300,8 +301,9 @@ def build_config_relationship(self) -> t.List[ConfigLine]: ... [ ... ConfigLine(config_line='interface Ethernet1/1', parents=()), ... ConfigLine(config_line=' vlan 10', parents=('interface Ethernet1/1',)), - ... ConfigLine(config_line=' no shutdowninterface Ethernet1/2', parents=('interface Ethernet1/1',)), - ... ConfigLine(config_line=' shutdown', parents=('interface Ethernet1/1',)) + ... ConfigLine(config_line=' no shutdown', parents=('interface Ethernet1/1',)), + ... ConfigLine(config_line='interface Ethernet1/2', parents=(),), + ... ConfigLine(config_line=' shutdown', parents=('interface Ethernet1/2',)) ... ] True """ @@ -1419,3 +1421,115 @@ def _build_banner(self, config_line: str) -> t.Optional[str]: except StopIteration: return None raise ValueError("Unable to parse banner (system note) end.") + + +class PaloAltoNetworksConfigParser(BaseSpaceConfigParser): + """Palo Alto Networks config parser.""" + + comment_chars: t.List[str] = [] + banner_start: t.List[str] = [ + 'set system login-banner "', + 'login-banner "', + 'set devices localhost.localdomain deviceconfig system login-banner "', + ] + banner_end = '"' + + def is_banner_end(self, line: str) -> bool: + """Determine if end of banner.""" + if line.endswith('"') or line.startswith('";') or line.startswith("set") or line.endswith(self.banner_end): + return True + return False + + def _build_banner(self, config_line: str) -> t.Optional[str]: + """Handle banner config lines. + + Args: + config_line: The start of the banner config. + + Returns: + The next configuration line in the configuration text or None + + Raises: + ValueError: When the parser is unable to identify the end of the Banner. + """ + self._update_config_lines(config_line) + self._current_parents += (config_line,) + banner_config = [] + for line in self.generator_config: + if not self.is_banner_end(line): + banner_config.append(line) + else: + line = normalise_delimiter_caret_c(self.banner_end, line) + banner_config.append(line.strip()) + line = "\n".join(banner_config) + if line.endswith("^C"): + banner, end, _ = line.rpartition("^C") + line = banner.rstrip() + end + self._update_config_lines(line.strip()) + self._current_parents = self._current_parents[:-1] + try: + return next(self.generator_config) + except StopIteration: + return None + + raise ValueError("Unable to parse banner end.") + + def build_config_relationship(self) -> t.List[ConfigLine]: # pylint: disable=too-many-branches + r"""Parse text of config lines and find their parents. + + Examples: + >>> config = ( + ... "set devices localhost.localdomain deviceconfig system hostname firewall1\n" + ... "set devices localhost.localdomain deviceconfig system panorama local-panorama panorama-server 10.0.0.1\n" + ... "set devices localhost.localdomain deviceconfig system panorama local-panorama panorama-server-2 10.0.0.2\n" + ... "set devices localhost.localdomain deviceconfig setting config rematch yes\n" + ... ) + >>> config_tree = PaloAltoNetworksConfigParser(config) + >>> config_tree.build_config_relationship() == \ + ... [ + ... ConfigLine(config_line="set devices localhost.localdomain deviceconfig system hostname firewall1", parents=()), + ... ConfigLine(config_line="set devices localhost.localdomain deviceconfig system panorama local-panorama panorama-server 10.0.0.1", parents=()), + ... ConfigLine(config_line="set devices localhost.localdomain deviceconfig system panorama local-panorama panorama-server-2 10.0.0.2", parents=()), + ... ConfigLine(config_line="set devices localhost.localdomain deviceconfig setting config rematch yes", parents=()), + ... ] + True + """ + # assume configuration does not need conversion + _needs_conversion = False + + # if config is in palo brace format, convert to set + if self.config_lines_only is not None: + for line in self.config_lines_only: + if line.endswith("{"): + _needs_conversion = True + if _needs_conversion: + converted_config = paloalto_panos_brace_to_set(cfg=self.config, cfg_type="string") + list_config = converted_config.splitlines() + self.generator_config = (line for line in list_config) + + # build config relationships + for line in self.generator_config: + if not line[0].isspace(): + self._current_parents = () + if self.is_banner_start(line): + line = self._build_banner(line) # type: ignore + else: + previous_config = self.config_lines[-1] + self._current_parents = (previous_config.config_line,) + self.indent_level = self.get_leading_space_count(line) + if not self.is_banner_start(line): + line = self._build_nested_config(line) # type: ignore + else: + line = self._build_banner(line) # type: ignore + if line is not None and line[0].isspace(): + line = self._build_nested_config(line) # type: ignore + else: + self._current_parents = () + + if line is None: + break + elif self.is_banner_start(line): + line = self._build_banner(line) # type: ignore + + self._update_config_lines(line) + return self.config_lines diff --git a/netutils/config/utils.py b/netutils/config/utils.py new file mode 100644 index 00000000..a153d48a --- /dev/null +++ b/netutils/config/utils.py @@ -0,0 +1,10 @@ +"""Utility functions for working with device configurations.""" + + +def _open_file_config(cfg_path: str) -> str: + """Open config file from local disk.""" + # This might fail, raising an IOError + with open(cfg_path, encoding="utf-8") as filehandler: + device_cfg = filehandler.read() + + return device_cfg.strip() diff --git a/netutils/utils.py b/netutils/utils.py index 993f6c99..338731af 100644 --- a/netutils/utils.py +++ b/netutils/utils.py @@ -76,6 +76,7 @@ "uptime_seconds_to_string": "time.uptime_seconds_to_string", "uptime_string_to_seconds": "time.uptime_string_to_seconds", "get_napalm_getters": "lib_helpers.get_napalm_getters", + "paloalto_panos_brace_to_set": "config.conversion.paloalto_panos_brace_to_set", "get_upgrade_path": "os_version.get_upgrade_path", } diff --git a/poetry.lock b/poetry.lock old mode 100755 new mode 100644 diff --git a/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_backup.txt b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_backup.txt new file mode 100644 index 00000000..9f68533d --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_backup.txt @@ -0,0 +1,32 @@ +set deviceconfig system ip-address 10.1.1.2 +set deviceconfig system netmask 255.255.255.0 +set deviceconfig system update-server updates.paloaltonetworks.com +set deviceconfig system update-schedule threats recurring sync-to-peer yes +set deviceconfig system update-schedule threats recurring daily at 01:30 +set deviceconfig system update-schedule threats recurring daily disable-new-content no +set deviceconfig system update-schedule threats recurring daily action download-and-install +set deviceconfig system update-schedule threats recurring threshold 24 +set deviceconfig system update-schedule threats recurring new-app-threshold 240 +set deviceconfig system update-schedule global-protect-datafile recurring weekly at 02:00 +set deviceconfig system update-schedule global-protect-datafile recurring weekly day-of-week tuesday +set deviceconfig system update-schedule wildfire recurring every-15-mins at 5 +set deviceconfig system update-schedule wildfire recurring every-15-mins action download-and-install +set deviceconfig system update-schedule wildfire recurring every-15-mins sync-to-peer yes +set deviceconfig system update-schedule anti-virus recurring sync-to-peer yes +set deviceconfig system update-schedule anti-virus recurring daily at 03:30 +set deviceconfig system update-schedule anti-virus recurring daily action download-and-install +set deviceconfig system timezone America/New_York +set deviceconfig system service disable-telnet yes +set deviceconfig system service disable-http yes +set deviceconfig system service disable-snmp no +set deviceconfig system snmp-setting snmp-system +set deviceconfig system hostname firewall1 +set deviceconfig system default-gateway 10.1.1.1 +set deviceconfig system dns-setting servers primary 10.1.1.3 +set deviceconfig system dns-setting servers secondary 10.1.1.4 +set deviceconfig system permitted-ip 0.0.0.0/0 +set deviceconfig system domain example.com +set mgt-config users readonly permissions role-based vsysreader localhost.localdomain vsys vsys1 +set mgt-config users readonly phash passhash +set mgt-config users user1 permissions role-based superuser yes +set mgt-config users user1 phash passhash diff --git a/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_feature.py b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_feature.py new file mode 100644 index 00000000..077595c5 --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_feature.py @@ -0,0 +1,3 @@ +features = [ + {"name": "management", "ordered": False, "section": ["set mgt-config "]}, +] diff --git a/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_intended.txt b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_intended.txt new file mode 100644 index 00000000..9f68533d --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_intended.txt @@ -0,0 +1,32 @@ +set deviceconfig system ip-address 10.1.1.2 +set deviceconfig system netmask 255.255.255.0 +set deviceconfig system update-server updates.paloaltonetworks.com +set deviceconfig system update-schedule threats recurring sync-to-peer yes +set deviceconfig system update-schedule threats recurring daily at 01:30 +set deviceconfig system update-schedule threats recurring daily disable-new-content no +set deviceconfig system update-schedule threats recurring daily action download-and-install +set deviceconfig system update-schedule threats recurring threshold 24 +set deviceconfig system update-schedule threats recurring new-app-threshold 240 +set deviceconfig system update-schedule global-protect-datafile recurring weekly at 02:00 +set deviceconfig system update-schedule global-protect-datafile recurring weekly day-of-week tuesday +set deviceconfig system update-schedule wildfire recurring every-15-mins at 5 +set deviceconfig system update-schedule wildfire recurring every-15-mins action download-and-install +set deviceconfig system update-schedule wildfire recurring every-15-mins sync-to-peer yes +set deviceconfig system update-schedule anti-virus recurring sync-to-peer yes +set deviceconfig system update-schedule anti-virus recurring daily at 03:30 +set deviceconfig system update-schedule anti-virus recurring daily action download-and-install +set deviceconfig system timezone America/New_York +set deviceconfig system service disable-telnet yes +set deviceconfig system service disable-http yes +set deviceconfig system service disable-snmp no +set deviceconfig system snmp-setting snmp-system +set deviceconfig system hostname firewall1 +set deviceconfig system default-gateway 10.1.1.1 +set deviceconfig system dns-setting servers primary 10.1.1.3 +set deviceconfig system dns-setting servers secondary 10.1.1.4 +set deviceconfig system permitted-ip 0.0.0.0/0 +set deviceconfig system domain example.com +set mgt-config users readonly permissions role-based vsysreader localhost.localdomain vsys vsys1 +set mgt-config users readonly phash passhash +set mgt-config users user1 permissions role-based superuser yes +set mgt-config users user1 phash passhash diff --git a/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_received.json b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_received.json new file mode 100644 index 00000000..b9561ada --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/paloalto_panos/paloalto_received.json @@ -0,0 +1,12 @@ +{ + "management": { + "actual": "set mgt-config users readonly permissions role-based vsysreader localhost.localdomain vsys vsys1\nset mgt-config users readonly phash passhash\nset mgt-config users user1 permissions role-based superuser yes\nset mgt-config users user1 phash passhash", + "cannot_parse": true, + "compliant": true, + "extra": "", + "intended": "set mgt-config users readonly permissions role-based vsysreader localhost.localdomain vsys vsys1\nset mgt-config users readonly phash passhash\nset mgt-config users user1 permissions role-based superuser yes\nset mgt-config users user1 phash passhash", + "missing": "", + "ordered_compliant": true, + "unordered_compliant": true + } +} \ No newline at end of file diff --git a/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_feature.py b/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_feature.py new file mode 100644 index 00000000..8ed81287 --- /dev/null +++ b/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_feature.py @@ -0,0 +1,8 @@ +features = [ + {"name": "Management Config", "ordered": False, "section": ["set mgt-config "]}, + { + "name": "Panorama Config", + "ordered": True, + "section": ["set deviceconfig system service "], + }, +] diff --git a/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_received.json b/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_received.json new file mode 100644 index 00000000..7eba41ab --- /dev/null +++ b/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_received.json @@ -0,0 +1,4 @@ +{ + "remaining_cfg": "set deviceconfig system permitted-ip 0.0.0.0/0\nset deviceconfig system domain example.com", + "section_not_found": [] +} \ No newline at end of file diff --git a/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_sent.txt b/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_sent.txt new file mode 100644 index 00000000..0c0b1e01 --- /dev/null +++ b/tests/unit/mock/config/compliance/config_section_not_parsed/paloalto_panos/panos_sent.txt @@ -0,0 +1,9 @@ +set deviceconfig system permitted-ip 0.0.0.0/0 +set deviceconfig system domain example.com +set deviceconfig system service disable-telnet yes +set deviceconfig system service disable-http yes +set deviceconfig system service disable-snmp no +set mgt-config users readonly permissions role-based vsysreader localhost.localdomain vsys vsys1 +set mgt-config users readonly phash passhash +set mgt-config users user1 permissions role-based superuser yes +set mgt-config users user1 phash passhash diff --git a/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_base.txt b/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_base.txt new file mode 100644 index 00000000..2f6bf8a1 --- /dev/null +++ b/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_base.txt @@ -0,0 +1,9 @@ +set deviceconfig system permitted-ip 0.0.0.0/0 +set deviceconfig system domain example.com +set deviceconfig system service disable-telnet yes +set deviceconfig system service disable-http yes +set deviceconfig system service disable-snmp no +set mgt-config users readonly permissions role-based vsysreader localhost.localdomain vsys vsys1 +set mgt-config users readonly phash passhash +set mgt-config users user1 permissions role-based superuser yes +set mgt-config users user1 phash passhash \ No newline at end of file diff --git a/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_intended.txt b/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_intended.txt new file mode 100644 index 00000000..cd5380a8 --- /dev/null +++ b/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_intended.txt @@ -0,0 +1,9 @@ +set deviceconfig system permitted-ip 10.0.0.0/8 +set deviceconfig system domain example.com +set deviceconfig system service disable-telnet yes +set deviceconfig system service disable-http yes +set deviceconfig system service disable-snmp no +set mgt-config users readonly permissions role-based vsysreader localhost.localdomain vsys vsys1 +set mgt-config users readonly phash passhash +set mgt-config users user1 permissions role-based superuser yes +set mgt-config users user1 phash passhash diff --git a/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_received.txt b/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_received.txt new file mode 100644 index 00000000..75626b05 --- /dev/null +++ b/tests/unit/mock/config/compliance/diff_network_config/paloalto_panos/panos_basic_received.txt @@ -0,0 +1 @@ +set deviceconfig system permitted-ip 10.0.0.0/8 \ No newline at end of file diff --git a/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_feature.py b/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_feature.py new file mode 100644 index 00000000..eca41c1e --- /dev/null +++ b/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_feature.py @@ -0,0 +1,5 @@ +feature = { + "name": "many", + "ordered": True, + "section": ["set mgt-config", "set devices localhost.localdomain deviceconfig system panorama"], +} diff --git a/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_received.txt b/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_received.txt new file mode 100644 index 00000000..689687a8 --- /dev/null +++ b/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_received.txt @@ -0,0 +1,7 @@ +set mgt-config users admin phash * +set mgt-config users admin permissions role-based superuser yes +set mgt-config users admin public-key thisisasuperduperlongbase64encodedstring +set mgt-config users panadmin permissions role-based superuser yes +set mgt-config users panadmin phash passwordhash +set devices localhost.localdomain deviceconfig system panorama local-panorama panorama-server 10.0.0.1 +set devices localhost.localdomain deviceconfig system panorama local-panorama panorama-server-2 10.0.0.2 \ No newline at end of file diff --git a/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_sent.txt b/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_sent.txt new file mode 100644 index 00000000..85be77fa --- /dev/null +++ b/tests/unit/mock/config/compliance/section/paloalto_panos/panos_full_sent.txt @@ -0,0 +1,21 @@ +set mgt-config users admin phash * +set mgt-config users admin permissions role-based superuser yes +set mgt-config users admin public-key thisisasuperduperlongbase64encodedstring +set mgt-config users panadmin permissions role-based superuser yes +set mgt-config users panadmin phash passwordhash +set devices localhost.localdomain deviceconfig system hostname firewall1 +set devices localhost.localdomain deviceconfig system login-banner " +************************************************************************ +* firewall1.example.com * [PROD VM500 firewalls] +************************************************************************ +* WARNING * +* Unauthorized access to this device or devices attached to * +* or accessible from this network is strictly prohibited. * +* Possession of passwords or devices enabling access to this * +* device or devices does not constitute authorization. Unauthorized * +* access will be prosecuted to the fullest extent of the law. * +* * +************************************************************************ +" +set devices localhost.localdomain deviceconfig system panorama local-panorama panorama-server 10.0.0.1 +set devices localhost.localdomain deviceconfig system panorama local-panorama panorama-server-2 10.0.0.2 \ No newline at end of file diff --git a/tests/unit/mock/config/conversion/paloalto_panos/paloalto_basic_converted.txt b/tests/unit/mock/config/conversion/paloalto_panos/paloalto_basic_converted.txt new file mode 100644 index 00000000..621a4782 --- /dev/null +++ b/tests/unit/mock/config/conversion/paloalto_panos/paloalto_basic_converted.txt @@ -0,0 +1,22 @@ +set mgt-config users admin phash * +set mgt-config users admin permissions role-based superuser yes +set mgt-config users admin public-key thisisasuperduperlongbase64encodedstring +set mgt-config users panadmin permissions role-based superuser yes +set mgt-config users panadmin phash passwordhash +set devices localhost.localdomain deviceconfig system hostname firewall1 +set devices localhost.localdomain deviceconfig system login-banner " +************************************************************************ +* firewall1.example.com * [PROD VM500 firewalls] +************************************************************************ +* WARNING * +* Unauthorized access to this device or devices attached to * +* or accessible from this network is strictly prohibited. * +* Possession of passwords or devices enabling access to this * +* device or devices does not constitute authorization. Unauthorized * +* access will be prosecuted to the fullest extent of the law. * +* * +************************************************************************ + +" +set devices localhost.localdomain deviceconfig system panorama local-panorama panorama-server 10.0.0.1 +set devices localhost.localdomain deviceconfig system panorama local-panorama panorama-server-2 10.0.0.2 \ No newline at end of file diff --git a/tests/unit/mock/config/conversion/paloalto_panos/paloalto_basic_sent.txt b/tests/unit/mock/config/conversion/paloalto_panos/paloalto_basic_sent.txt new file mode 100644 index 00000000..92c2cd4d --- /dev/null +++ b/tests/unit/mock/config/conversion/paloalto_panos/paloalto_basic_sent.txt @@ -0,0 +1,51 @@ +config { + mgt-config { + users { + admin { + phash *; + permissions { + role-based { + superuser yes; + } + } + public-key thisisasuperduperlongbase64encodedstring; + } + panadmin { + permissions { + role-based { + superuser yes; + } + } + phash passwordhash; + } + } + } + devices { + localhost.localdomain { + deviceconfig { + system { + hostname firewall1; + login-banner " +************************************************************************ +* firewall1.example.com * [PROD VM500 firewalls] +************************************************************************ +* WARNING * +* Unauthorized access to this device or devices attached to * +* or accessible from this network is strictly prohibited. * +* Possession of passwords or devices enabling access to this * +* device or devices does not constitute authorization. Unauthorized * +* access will be prosecuted to the fullest extent of the law. * +* * +************************************************************************ + +"; + panorama { + local-panorama { + panorama-server 10.0.0.1; + panorama-server-2 10.0.0.2; + } + } + } + } + } +} \ No newline at end of file diff --git a/tests/unit/mock/config/parser/base/paloalto_panos/panos_basic_received.py b/tests/unit/mock/config/parser/base/paloalto_panos/panos_basic_received.py new file mode 100644 index 00000000..ef05a972 --- /dev/null +++ b/tests/unit/mock/config/parser/base/paloalto_panos/panos_basic_received.py @@ -0,0 +1,44 @@ +from netutils.config.parser import ConfigLine + +data = [ + ConfigLine( + config_line="set mgt-config users admin phash *", + parents=(), + ), + ConfigLine( + config_line="set mgt-config users admin permissions role-based superuser yes", + parents=(), + ), + ConfigLine( + config_line="set mgt-config users admin public-key thisisasuperduperlongbase64encodedstring", + parents=(), + ), + ConfigLine( + config_line="set mgt-config users panadmin permissions role-based superuser yes", + parents=(), + ), + ConfigLine( + config_line="set mgt-config users panadmin phash passwordhash", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig system hostname firewall1", + parents=(), + ), + ConfigLine( + config_line='set devices localhost.localdomain deviceconfig system login-banner "', + parents=(), + ), + ConfigLine( + config_line="************************************************************************\n* firewall1.example.com * [PROD VM500 firewalls]\n************************************************************************\n* WARNING *\n* Unauthorized access to this device or devices attached to *\n* or accessible from this network is strictly prohibited. *\n* Possession of passwords or devices enabling access to this *\n* device or devices does not constitute authorization. Unauthorized *\n* access will be prosecuted to the fullest extent of the law. *\n* *\n************************************************************************^C", + parents=('set devices localhost.localdomain deviceconfig system login-banner "',), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig system panorama local-panorama panorama-server 10.0.0.1", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig system panorama local-panorama panorama-server-2 10.0.0.2", + parents=(), + ), +] diff --git a/tests/unit/mock/config/parser/base/paloalto_panos/panos_basic_sent.txt b/tests/unit/mock/config/parser/base/paloalto_panos/panos_basic_sent.txt new file mode 100644 index 00000000..5ec0f93b --- /dev/null +++ b/tests/unit/mock/config/parser/base/paloalto_panos/panos_basic_sent.txt @@ -0,0 +1,52 @@ +config { + mgt-config { + users { + admin { + phash *; + permissions { + role-based { + superuser yes; + } + } + public-key thisisasuperduperlongbase64encodedstring; + } + panadmin { + permissions { + role-based { + superuser yes; + } + } + phash passwordhash; + } + } + } + devices { + localhost.localdomain { + deviceconfig { + system { + hostname firewall1; + login-banner " +************************************************************************ +* firewall1.example.com * [PROD VM500 firewalls] +************************************************************************ +* WARNING * +* Unauthorized access to this device or devices attached to * +* or accessible from this network is strictly prohibited. * +* Possession of passwords or devices enabling access to this * +* device or devices does not constitute authorization. Unauthorized * +* access will be prosecuted to the fullest extent of the law. * +* * +************************************************************************ + +"; + panorama { + local-panorama { + panorama-server 10.0.0.1; + panorama-server-2 10.0.0.2; + } + } + } + } + } +} + diff --git a/tests/unit/mock/config/parser/base/paloalto_panos/panos_full_received.py b/tests/unit/mock/config/parser/base/paloalto_panos/panos_full_received.py new file mode 100644 index 00000000..923742d1 --- /dev/null +++ b/tests/unit/mock/config/parser/base/paloalto_panos/panos_full_received.py @@ -0,0 +1,340 @@ +from netutils.config.parser import ConfigLine + +data = [ + ConfigLine(config_line="set mgt-config users admin phash *", parents=()), + ConfigLine(config_line="set mgt-config users admin permissions role-based superuser yes", parents=()), + ConfigLine( + config_line="set mgt-config users admin public-key thisisasuperduperlongbase64encodedstring=", parents=() + ), + ConfigLine(config_line="set mgt-config users panadmin permissions role-based superuser yes", parents=()), + ConfigLine(config_line="set mgt-config users panadmin phash passwordhash", parents=()), + ConfigLine(config_line="set shared botnet configuration http dynamic-dns enabled yes", parents=()), + ConfigLine(config_line="set shared botnet configuration http dynamic-dns threshold 5", parents=()), + ConfigLine(config_line="set shared botnet configuration http malware-sites enabled yes", parents=()), + ConfigLine(config_line="set shared botnet configuration http malware-sites threshold 5", parents=()), + ConfigLine(config_line="set shared botnet configuration http recent-domains enabled yes", parents=()), + ConfigLine(config_line="set shared botnet configuration http recent-domains threshold 5", parents=()), + ConfigLine(config_line="set shared botnet configuration http ip-domains enabled yes", parents=()), + ConfigLine(config_line="set shared botnet configuration http ip-domains threshold 10", parents=()), + ConfigLine( + config_line="set shared botnet configuration http executables-from-unknown-sites enabled yes", parents=() + ), + ConfigLine( + config_line="set shared botnet configuration http executables-from-unknown-sites threshold 5", parents=() + ), + ConfigLine(config_line="set shared botnet configuration other-applications irc yes", parents=()), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-tcp destinations-per-hour 10", + parents=(), + ), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-tcp sessions-per-hour 10", parents=() + ), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-tcp session-length maximum-bytes 100", + parents=(), + ), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-tcp session-length minimum-bytes 50", + parents=(), + ), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-udp destinations-per-hour 10", + parents=(), + ), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-udp sessions-per-hour 10", parents=() + ), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-udp session-length maximum-bytes 100", + parents=(), + ), + ConfigLine( + config_line="set shared botnet configuration unknown-applications unknown-udp session-length minimum-bytes 50", + parents=(), + ), + ConfigLine(config_line="set shared botnet report topn 100", parents=()), + ConfigLine(config_line="set shared botnet report scheduled yes", parents=()), + ConfigLine(config_line="set shared application-status awesun", parents=()), + ConfigLine(config_line="set shared application-status hikvision-http", parents=()), + ConfigLine(config_line="set shared application-status notion-base", parents=()), + ConfigLine(config_line="set shared application-status notion-delete", parents=()), + ConfigLine(config_line="set shared application-status notion-download", parents=()), + ConfigLine(config_line="set shared application-status notion-logout", parents=()), + ConfigLine(config_line="set shared application-status notion-upload", parents=()), + ConfigLine( + config_line="set devices localhost.localdomain network interface ethernet ethernet1/1 layer3 ipv6 neighbor-discovery router-advertisement enable no", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network interface ethernet ethernet1/1 layer3 ndp-proxy enabled no", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network interface ethernet ethernet1/1 layer3 dhcp-client create-default-route yes", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network interface ethernet ethernet1/1 layer3 lldp enable no", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network interface ethernet ethernet1/2 layer3 ipv6 neighbor-discovery router-advertisement enable no", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network interface ethernet ethernet1/2 layer3 ndp-proxy enabled no", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network interface ethernet ethernet1/2 layer3 dhcp-client create-default-route no", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network interface ethernet ethernet1/2 layer3 lldp enable no", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network interface ethernet ethernet1/2 layer3 interface-management-profile mgt", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network interface ethernet ethernet1/2 link-state auto", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network profiles monitor-profile default interval 3", parents=() + ), + ConfigLine( + config_line="set devices localhost.localdomain network profiles monitor-profile default threshold 5", parents=() + ), + ConfigLine( + config_line="set devices localhost.localdomain network profiles monitor-profile default action wait-recover", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network profiles interface-management-profile", parents=() + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ike-crypto-profiles default encryption [ aes-128-cbc 3des]", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ike-crypto-profiles default hash sha1", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ike-crypto-profiles default dh-group group2", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ike-crypto-profiles default lifetime hours 8", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-128 encryption aes-128-cbc", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-128 hash sha256", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-128 dh-group group19", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-128 lifetime hours 8", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-256 encryption aes-256-cbc", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-256 hash sha384", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-256 dh-group group20", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ike-crypto-profiles Suite-B-GCM-256 lifetime hours 8", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ipsec-crypto-profiles default esp encryption [ aes-128-cbc 3des]", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ipsec-crypto-profiles default esp authentication sha1", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ipsec-crypto-profiles default dh-group group2", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ipsec-crypto-profiles default lifetime hours 1", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-128 esp encryption aes-128-gcm", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-128 esp authentication none", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-128 dh-group group19", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-128 lifetime hours 1", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-256 esp encryption aes-256-gcm", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-256 esp authentication none", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-256 dh-group group20", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles ipsec-crypto-profiles Suite-B-GCM-256 lifetime hours 1", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles global-protect-app-crypto-profiles default encryption aes-128-cbc", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network ike crypto-profiles global-protect-app-crypto-profiles default authentication sha1", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network qos profile default class-bandwidth-type mbps class class1 priority real-time", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network qos profile default class-bandwidth-type mbps class class2 priority high", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network qos profile default class-bandwidth-type mbps class class3 priority high", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network qos profile default class-bandwidth-type mbps class class4 priority medium", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network qos profile default class-bandwidth-type mbps class class5 priority medium", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network qos profile default class-bandwidth-type mbps class class6 priority low", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network qos profile default class-bandwidth-type mbps class class7 priority low", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain network qos profile default class-bandwidth-type mbps class class8 priority low", + parents=(), + ), + ConfigLine(config_line="set devices localhost.localdomain network virtual-router", parents=()), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig system type dhcp-client send-hostname yes", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig system type dhcp-client send-client-id yes", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig system type dhcp-client accept-dhcp-hostname no", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig system type dhcp-client accept-dhcp-domain yes", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig system update-server updates.paloaltonetworks.com", + parents=(), + ), + ConfigLine(config_line="set devices localhost.localdomain deviceconfig system update-schedule", parents=()), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig system service disable-telnet yes", parents=() + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig system service disable-http yes", parents=() + ), + ConfigLine(config_line="set devices localhost.localdomain deviceconfig system hostname firewall1", parents=()), + ConfigLine(config_line='set devices localhost.localdomain deviceconfig system login-banner "', parents=()), + ConfigLine( + config_line="************************************************************************\n* firewall1.example.com * [PROD VM500 firewalls]\n************************************************************************\n* WARNING *\n* Unauthorized access to this device or devices attached to *\n* or accessible from this network is strictly prohibited. *\n* Possession of passwords or devices enabling access to this *\n* device or devices does not constitute authorization. Unauthorized *\n* access will be prosecuted to the fullest extent of the law. *\n* *\n************************************************************************^C", + parents=('set devices localhost.localdomain deviceconfig system login-banner "',), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig system panorama local-panorama panorama-server 10.0.0.1", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig system panorama local-panorama panorama-server-2 10.0.0.2", + parents=(), + ), + ConfigLine(config_line="set devices localhost.localdomain deviceconfig setting config rematch yes", parents=()), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig setting management hostname-type-in-syslog FQDN", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig setting management initcfg public-key thisisasuperduperlongbase64encodedstring=", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig setting management initcfg type dhcp-client send-hostname yes", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig setting management initcfg type dhcp-client send-client-id yes", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig setting management initcfg type dhcp-client accept-dhcp-hostname yes", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig setting management initcfg type dhcp-client accept-dhcp-domain yes", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig setting management initcfg dns-primary 8.8.8.8", + parents=(), + ), + ConfigLine( + config_line="set devices localhost.localdomain deviceconfig setting management initcfg op-command-modes mgmt-interface-swap", + parents=(), + ), + ConfigLine(config_line="set devices localhost.localdomain vsys vsys1 zone", parents=()), + ConfigLine( + config_line="set devices localhost.localdomain vsys vsys1 import network interface [ ethernet1/1 ethernet1/2 vlan loopback tunnel]", + parents=(), + ), + ConfigLine(config_line="set devices localhost.localdomain vsys vsys1 import network vlan", parents=()), + ConfigLine(config_line="set devices localhost.localdomain vsys vsys1 import network virtual-router", parents=()), + ConfigLine(config_line="set devices localhost.localdomain vsys vsys1 import network virtual-wire", parents=()), + ConfigLine(config_line="set devices localhost.localdomain vsys vsys1 address", parents=()), + ConfigLine(config_line="set devices localhost.localdomain vsys vsys1 rulebase security rules", parents=()), + ConfigLine(config_line="set devices localhost.localdomain vsys vsys1 service", parents=()), +] diff --git a/tests/unit/mock/config/parser/base/paloalto_panos/panos_full_sent.txt b/tests/unit/mock/config/parser/base/paloalto_panos/panos_full_sent.txt new file mode 100644 index 00000000..c62e1ada --- /dev/null +++ b/tests/unit/mock/config/parser/base/paloalto_panos/panos_full_sent.txt @@ -0,0 +1,333 @@ + +config { + mgt-config { + users { + admin { + phash *; + permissions { + role-based { + superuser yes; + } + } + public-key thisisasuperduperlongbase64encodedstring=; + } + panadmin { + permissions { + role-based { + superuser yes; + } + } + phash passwordhash; + } + } + } + shared { + botnet { + configuration { + http { + dynamic-dns { + enabled yes; + threshold 5; + } + malware-sites { + enabled yes; + threshold 5; + } + recent-domains { + enabled yes; + threshold 5; + } + ip-domains { + enabled yes; + threshold 10; + } + executables-from-unknown-sites { + enabled yes; + threshold 5; + } + } + other-applications { + irc yes; + } + unknown-applications { + unknown-tcp { + destinations-per-hour 10; + sessions-per-hour 10; + session-length { + maximum-bytes 100; + minimum-bytes 50; + } + } + unknown-udp { + destinations-per-hour 10; + sessions-per-hour 10; + session-length { + maximum-bytes 100; + minimum-bytes 50; + } + } + } + } + report { + topn 100; + scheduled yes; + } + } + application-status { + awesun; + hikvision-http; + notion-base; + notion-delete; + notion-download; + notion-logout; + notion-upload; + } + } + devices { + localhost.localdomain { + network { + interface { + ethernet { + ethernet1/1 { + layer3 { + ipv6 { + neighbor-discovery { + router-advertisement { + enable no; + } + } + } + ndp-proxy { + enabled no; + } + dhcp-client { + create-default-route yes; + } + lldp { + enable no; + } + } + } + ethernet1/2 { + layer3 { + ipv6 { + neighbor-discovery { + router-advertisement { + enable no; + } + } + } + ndp-proxy { + enabled no; + } + dhcp-client { + create-default-route no; + } + lldp { + enable no; + } + interface-management-profile mgt; + } + link-state auto; + } + } + } + profiles { + monitor-profile { + default { + interval 3; + threshold 5; + action wait-recover; + } + } + interface-management-profile; + } + ike { + crypto-profiles { + ike-crypto-profiles { + default { + encryption [ aes-128-cbc 3des]; + hash sha1; + dh-group group2; + lifetime { + hours 8; + } + } + Suite-B-GCM-128 { + encryption aes-128-cbc; + hash sha256; + dh-group group19; + lifetime { + hours 8; + } + } + Suite-B-GCM-256 { + encryption aes-256-cbc; + hash sha384; + dh-group group20; + lifetime { + hours 8; + } + } + } + ipsec-crypto-profiles { + default { + esp { + encryption [ aes-128-cbc 3des]; + authentication sha1; + } + dh-group group2; + lifetime { + hours 1; + } + } + Suite-B-GCM-128 { + esp { + encryption aes-128-gcm; + authentication none; + } + dh-group group19; + lifetime { + hours 1; + } + } + Suite-B-GCM-256 { + esp { + encryption aes-256-gcm; + authentication none; + } + dh-group group20; + lifetime { + hours 1; + } + } + } + global-protect-app-crypto-profiles { + default { + encryption aes-128-cbc; + authentication sha1; + } + } + } + } + qos { + profile { + default { + class-bandwidth-type { + mbps { + class { + class1 { + priority real-time; + } + class2 { + priority high; + } + class3 { + priority high; + } + class4 { + priority medium; + } + class5 { + priority medium; + } + class6 { + priority low; + } + class7 { + priority low; + } + class8 { + priority low; + } + } + } + } + } + } + } + virtual-router; + } + deviceconfig { + system { + type { + dhcp-client { + send-hostname yes; + send-client-id yes; + accept-dhcp-hostname no; + accept-dhcp-domain yes; + } + } + update-server updates.paloaltonetworks.com; + update-schedule; + service { + disable-telnet yes; + disable-http yes; + } + hostname firewall1; + login-banner " +************************************************************************ +* firewall1.example.com * [PROD VM500 firewalls] +************************************************************************ +* WARNING * +* Unauthorized access to this device or devices attached to * +* or accessible from this network is strictly prohibited. * +* Possession of passwords or devices enabling access to this * +* device or devices does not constitute authorization. Unauthorized * +* access will be prosecuted to the fullest extent of the law. * +* * +************************************************************************ + +"; + panorama { + local-panorama { + panorama-server 10.0.0.1; + panorama-server-2 10.0.0.2; + } + } + } + setting { + config { + rematch yes; + } + management { + hostname-type-in-syslog FQDN; + initcfg { + public-key thisisasuperduperlongbase64encodedstring=; + type { + dhcp-client { + send-hostname yes; + send-client-id yes; + accept-dhcp-hostname yes; + accept-dhcp-domain yes; + } + } + dns-primary 8.8.8.8; + op-command-modes mgmt-interface-swap; + } + } + } + } + vsys { + vsys1 { + zone; + import { + network { + interface [ ethernet1/1 ethernet1/2 vlan loopback tunnel]; + vlan; + virtual-router; + virtual-wire; + } + } + address; + rulebase { + security { + rules; + } + } + service; + } + } + } + } +} diff --git a/tests/unit/test_conversion.py b/tests/unit/test_conversion.py new file mode 100644 index 00000000..48960811 --- /dev/null +++ b/tests/unit/test_conversion.py @@ -0,0 +1,30 @@ +"""Test that configurations properly convert from undesired format to desired""" +import glob +import os + +import pytest +from netutils.config.conversion import ( + paloalto_panos_brace_to_set, + conversion_map, +) + +MOCK_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)), "mock", "config", "conversion") + +TXT_FILE = "_sent.txt" +CONVERTED_FILE = "_converted.txt" + +conversion_files = [] + +for network_os in list(conversion_map.keys()): + for _file in glob.glob(f"{MOCK_DIR}/{network_os}/*{TXT_FILE}"): + conversion_files.append([_file, network_os]) + + +@pytest.mark.parametrize("_file", conversion_files) +def test_config_conversion(_file, get_text_data): # pylint: disable=redefined-outer-name + truncate_file = os.path.join(MOCK_DIR, _file[0][: -len(TXT_FILE)]) + + sent_cfg = get_text_data(os.path.join(MOCK_DIR, _file[0])) + converted_cfg = paloalto_panos_brace_to_set(cfg=sent_cfg, cfg_type="string") + received_data = get_text_data(truncate_file + "_converted.txt") + assert converted_cfg == received_data From 4595be5736e6e8ccae7a99013f45f39454ed142e Mon Sep 17 00:00:00 2001 From: pvillar_netdev Date: Tue, 27 Jun 2023 14:48:40 +0200 Subject: [PATCH 03/11] HIERCONFIG: Lib mappings (#304) * modified: netutils/lib_mapper.py * Update hierconfig.md * Update hierconfig_reverse.md * Update lib_mapper.py * Update lib_mapper.py * modified: docs/user/lib_mapper/hierconfig.md modified: docs/user/lib_mapper/hierconfig_reverse.md --- docs/user/lib_mapper/hierconfig.md | 1 + docs/user/lib_mapper/hierconfig_reverse.md | 3 ++- netutils/lib_mapper.py | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/user/lib_mapper/hierconfig.md b/docs/user/lib_mapper/hierconfig.md index 32eb8cff..24ebb3e9 100644 --- a/docs/user/lib_mapper/hierconfig.md +++ b/docs/user/lib_mapper/hierconfig.md @@ -1,6 +1,7 @@ | HIERCONFIG | | NORMALIZED | | ---------- | -- | ------ | | eos | → | arista_eos | +| fastiron | → | ruckus_fastiron | | ios | → | cisco_ios | | iosxe | → | cisco_xe | | iosxr | → | cisco_xr | diff --git a/docs/user/lib_mapper/hierconfig_reverse.md b/docs/user/lib_mapper/hierconfig_reverse.md index 2aaa2afe..e0d18b83 100644 --- a/docs/user/lib_mapper/hierconfig_reverse.md +++ b/docs/user/lib_mapper/hierconfig_reverse.md @@ -4,4 +4,5 @@ | cisco_ios | → | ios | | cisco_nxos | → | nxos | | cisco_xe | → | iosxe | -| cisco_xr | → | iosxr | \ No newline at end of file +| cisco_xr | → | iosxr | +| ruckus_fastiron | → | fastiron | \ No newline at end of file diff --git a/netutils/lib_mapper.py b/netutils/lib_mapper.py index 0813eb5d..076deaff 100644 --- a/netutils/lib_mapper.py +++ b/netutils/lib_mapper.py @@ -209,6 +209,7 @@ "iosxr": "cisco_xr", "nxos": "cisco_nxos", "eos": "arista_eos", + "fastiron": "ruckus_fastiron", } NAPALM_LIB_MAPPER_REVERSE = { @@ -293,6 +294,7 @@ "cisco_xr": "iosxr", "cisco_nxos": "nxos", "arista_eos": "eos", + "ruckus_fastiron": "fastiron", } # Deep copy the reverse, where there is no actual translation happening. From c8bd1c410cb33af82a12a939fdd2819f1e65c0ea Mon Sep 17 00:00:00 2001 From: Ken Celenza Date: Tue, 27 Jun 2023 10:28:04 -0400 Subject: [PATCH 04/11] Enable OS Version docs (#305) --- docs/dev/code_reference/os_version.md | 5 +++++ mkdocs.yml | 1 + 2 files changed, 6 insertions(+) create mode 100644 docs/dev/code_reference/os_version.md diff --git a/docs/dev/code_reference/os_version.md b/docs/dev/code_reference/os_version.md new file mode 100644 index 00000000..268e7da3 --- /dev/null +++ b/docs/dev/code_reference/os_version.md @@ -0,0 +1,5 @@ +# OS Version + +::: netutils.os_version + options: + show_submodules: True \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 87cd36c0..b8d0a7d5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -134,6 +134,7 @@ nav: - Library Helpers: "dev/code_reference/lib_helpers.md" - Library Mapping: "dev/code_reference/lib_mapping.md" - Mac Address: "dev/code_reference/mac.md" + - OS Version: "dev/code_reference/os_version.md" - Password: "dev/code_reference/password.md" - Ping: "dev/code_reference/ping.md" - Protocol Mapper: "dev/code_reference/protocol_mapper.md" From 39d5ee90345f35a8197e2a313831f695a92ee36f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Jul 2023 07:41:47 -0600 Subject: [PATCH 05/11] Flat: latest data (2023-06-29T08:06:17.079Z) (#307) { "date": "2023-06-29T08:06:17.079Z", "files": [ { "name": "netutils/data_files/protocol_mappings.py", "deltaBytes": 65, "source": "https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.csv" } ] } Co-authored-by: flat-data --- netutils/data_files/protocol_mappings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/netutils/data_files/protocol_mappings.py b/netutils/data_files/protocol_mappings.py index 13f990e8..db2f701b 100644 --- a/netutils/data_files/protocol_mappings.py +++ b/netutils/data_files/protocol_mappings.py @@ -5860,6 +5860,7 @@ "dsmcc-download": {"port_number": 13821, "protocols": ["tcp", "udp"]}, "dsmcc-ccp": {"port_number": 13822, "protocols": ["tcp", "udp"]}, "bmdss": {"port_number": 13823, "protocols": ["tcp"]}, + "a-trust-rpc": {"port_number": 13832, "protocols": ["tcp"]}, "ucontrol": {"port_number": 13894, "protocols": ["tcp", "udp"]}, "dta-systems": {"port_number": 13929, "protocols": ["tcp", "udp"]}, "medevolve": {"port_number": 13930, "protocols": ["tcp"]}, From 3a52f026be961ef5ffc471a50211eaea9cd75021 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Jul 2023 07:42:12 -0600 Subject: [PATCH 06/11] Flat: latest data (2023-06-29T08:03:20.700Z) (#306) { "date": "2023-06-29T08:03:20.700Z", "files": [ { "name": "netutils/data_files/oui_mappings.py", "deltaBytes": 5848, "source": "https://standards-oui.ieee.org" } ] } Co-authored-by: flat-data --- netutils/data_files/oui_mappings.py | 154 ++++++++++++++++++++++++++-- 1 file changed, 147 insertions(+), 7 deletions(-) diff --git a/netutils/data_files/oui_mappings.py b/netutils/data_files/oui_mappings.py index 6022adef..258ab3cb 100644 --- a/netutils/data_files/oui_mappings.py +++ b/netutils/data_files/oui_mappings.py @@ -613,7 +613,7 @@ "000260": "Accordion Networks, Inc.", "000261": "Tilgin AB", "000262": "Soyo Group Soyo Com Tech Co., Ltd", - "000263": "UPS Manufacturing SRL", + "000263": "RPS S.p.A.", "000264": "AudioRamp.com", "000265": "Virditech Co. Ltd.", "000266": "Thermalogic Corporation", @@ -10410,7 +10410,7 @@ "00409b": "HAL COMPUTER SYSTEMS INC.", "00409c": "TRANSWARE", "00409d": "DigiBoard", - "00409e": "CONCURRENT TECHNOLOGIES LTD.", + "00409e": "Concurrent Technologies Ltd.", "00409f": "Telco Systems, Inc. ", "0040a0": "GOLDSTAR CO., LTD.", "0040a1": "ERGO COMPUTING", @@ -12994,7 +12994,7 @@ "0434f6": "Mobility Technologies Communication Co., Ltd.", "043604": "Gyeyoung I&T", "0436b8": "I&C Technology", - "043855": "SCOPUS INTERNATIONAL-BELGIUM", + "043855": "Scopus International Pvt. Ltd.", "0438dc": "China Unicom Online Information Technology Co.,Ltd", "043926": "China Dragon Technology Limited", "043a0d": "SM Optics S.r.l.", @@ -13040,6 +13040,7 @@ "0456e5": "Intel Corporate", "04572f": "Sertel Electronics UK Ltd", "045747": "GoPro", + "045791": "Shenzhenshi Xinzhongxin Technology Co.Ltd", "04586f": "Sichuan Whayer information industry Co.,LTD", "045a95": "Nokia Corporation", "045c06": "Zmodo Technology Corporation", @@ -13138,6 +13139,7 @@ "04a741": "Cisco Systems, Inc", "04a81c": "HUAWEI TECHNOLOGIES CO.,LTD", "04a82a": "Nokia Corporation", + "04a959": "New H3C Technologies Co., Ltd", "04aae1": "BEIJING MICROVISION TECHNOLOGY CO.,LTD", "04ab08": "Shenzhen Skyworth Digital Technology CO., Ltd", "04ab18": "ELECOM CO.,LTD.", @@ -13198,6 +13200,7 @@ "04cf4b": "Intel Corporate", "04cf8c": "XIAOMI Electronics,CO.,LTD", "04d13a": "Xiaomi Communications Co Ltd", + "04d168": "Sunplus Technology Co., Ltd.", "04d16e": "IEEE Registration Authority", "04d320": "ITEL MOBILE LIMITED", "04d395": "Motorola Mobility LLC, a Lenovo Company", @@ -13268,7 +13271,7 @@ "04f993": "Infinix mobility limited", "04f9d9": "Co.,Ltd", "04f9f8": "TP-LINK TECHNOLOGIES CO.,LTD.", - "04fa3f": "Opticore Inc.", + "04fa3f": "OptiCore Inc.", "04fa83": "Qingdao Haier Technology Co.,Ltd", "04fe31": "Samsung Electronics Co.,Ltd", "04fe7f": "Cisco Systems, Inc", @@ -13577,6 +13580,7 @@ "087999": "AIM GmbH", "087a4c": "HUAWEI TECHNOLOGIES CO.,LTD", "087b12": "Sagemcom Broadband SAS", + "087b87": "Cisco Systems, Inc", "087baa": "SVYAZKOMPLEKTSERVICE, LLC", "087c39": "Amazon Technologies Inc.", "087cbe": "Quintic Corp.", @@ -13841,6 +13845,7 @@ "0c62a6": "Hui Zhou Gaoshengda Technology Co.,LTD", "0c63fc": "Nanjing Signway Technology Co., Ltd", "0c6422": "Beijing Wiseasy Technology Co.,Ltd.", + "0c659a": "Panasonic Automotive Systems Company of America", "0c6714": "TECHNOLOGIES CORPORATION", "0c6803": "Cisco Systems, Inc", "0c6abc": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -13956,6 +13961,7 @@ "0cb8e8": "Sdn. Bhd.", "0cb912": "JM-DATA GmbH", "0cb937": "Ubee Interactive Co., Limited", + "0cb983": "Honor Device Co., Ltd.", "0cbc9f": "Apple, Inc.", "0cbd51": "TCT mobile ltd", "0cbd75": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", @@ -14101,6 +14107,7 @@ "1027f5": "TP-Link Corporation Limited", "102831": "Morion Inc.", "102834": "SALZ Automation GmbH", + "102874": "Shenzhen Jingxun Technology Co., Ltd.", "102959": "Apple, Inc.", "1029ab": "Samsung Electronics Co.,Ltd", "102ab3": "Xiaomi Communications Co Ltd", @@ -14881,6 +14888,7 @@ "187caa": "China Mobile Group Device Co.,Ltd.", "187eb9": "Apple, Inc.", "187ed5": "shenzhen kaism technology Co. Ltd", + "188025": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "188090": "Cisco Systems, Inc", "1880ce": "Barberry Solutions Ltd", "1880f5": "Alcatel-Lucent Shanghai Bell Co., Ltd", @@ -14970,6 +14978,7 @@ "18bf1c": "Jiangsu Huitong Group Co.,Ltd.", "18bfb3": "Samsung Electronics Co., Ltd., Memory Division", "18c007": "Huawei Device Co., Ltd.", + "18c009": "New H3C Technologies Co., Ltd", "18c04d": "GIGA-BYTE TECHNOLOGY CO.,LTD.", "18c086": "Broadcom", "18c19d": "Sdn. Bhd.", @@ -15181,6 +15190,7 @@ "1c5ee6": "SHENZHEN TWOWING TECHNOLOGIES CO.,LTD.", "1c5f2b": "D-Link International", "1c5fff": "Beijing Ereneben Information Technology Co.,Ltd Shenzhen Branch", + "1c6066": "TEJAS NETWORKS LTD", "1c60d2": "Fiberhome Telecommunication Technologies Co.,LTD", "1c60de": "MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "1c61b4": "TP-Link Corporation Limited", @@ -16168,12 +16178,14 @@ "288915": "CashGuard Sverige AB", "288a1c": "Juniper Networks", "288cb8": "zte corporation", + "288eb9": "Wacom Co.,Ltd.", "288eec": "Apple, Inc.", "288ff6": "Apple, Inc.", "2891d0": "Stage Tec Entwicklungsgesellschaft für professionelle Audiotechnik mbH", "28924a": "Hewlett Packard", "28937d": "Sichuan Tianyi Comheart Telecom Co.,LTD", "2893fe": "Cisco Systems, Inc", + "289401": "NETGEAR", "28940f": "Cisco Systems, Inc", "2894af": "Samhwa Telecom", "2897b8": "myenergi Ltd", @@ -16220,6 +16232,7 @@ "28ba18": "NextNav, LLC", "28bab5": "Samsung Electronics Co.,Ltd", "28bb59": "RNET Technologies, Inc.", + "28bbed": "Co., Ltd.", "28bc05": "BLU Products Inc", "28bc18": "SourcingOverseas Co. Ltd", "28bc56": "EMAC, Inc.", @@ -16274,6 +16287,7 @@ "28d98a": "Hangzhou Konke Technology Co.,Ltd.", "28d997": "Yuduan Mobile Co., Ltd.", "28db81": "Shanghai Guao Electronic Technology Co., Ltd", + "28dba7": "Silicon Laboratories", "28de65": "Aruba, a Hewlett Packard Enterprise Company", "28dea8": "zte corporation", "28dee5": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -16540,6 +16554,7 @@ "2c9924": "ARRIS Group, Inc.", "2c9975": "Samsung Electronics Co.,Ltd", "2c9aa4": "Eolo SpA", + "2c9c58": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", "2c9d1e": "HUAWEI TECHNOLOGIES CO.,LTD", "2c9d65": "vivo Mobile Communication Co., Ltd.", "2c9e00": "Sony Interactive Entertainment Inc.", @@ -16577,12 +16592,14 @@ "2cb0fd": "Shenzhen MiaoMing Intelligent Technology Co.,Ltd", "2cb115": "Sdn. Bhd.", "2cb21a": "Co., Ltd.", + "2cb301": "Honor Device Co., Ltd.", "2cb43a": "Apple, Inc.", "2cb693": "Radware", "2cb69d": "RED Digital Cinema", "2cb6c8": "Raisecom Technology CO., LTD", "2cb8ed": "SonicWall", "2cbaba": "Samsung Electronics Co.,Ltd", + "2cbaca": "Cosonic Electroacoustic Technology Co., Ltd.", "2cbc87": "Apple, Inc.", "2cbe08": "Apple, Inc.", "2cbe97": "Ingenieurbuero Bickele und Buehler GmbH", @@ -16706,6 +16723,7 @@ "3029be": "Shanghai MRDcom Co.,Ltd", "302bdc": "Top-Unum Electronics Co., LTD", "302f1e": "SIEMENS AG", + "3030f9": "Espressif Inc.", "30317d": "Hosiden Corporation", "303180": "Shenzhen Skyworth Digital Technology CO., Ltd", "303235": "Qingdao Intelligent&Precise Electronics Co.,Ltd.", @@ -17050,6 +17068,7 @@ "344ca4": "amazipoint technology Ltd.", "344cc8": "Echodyne Corp", "344dea": "zte corporation", + "344e2f": "LEAR", "344f3f": "IO-Power Technology Co., Ltd.", "344f5c": "R&M AG", "344f69": "EKINOPS SAS", @@ -17096,6 +17115,7 @@ "346e8a": "Ecosense", "346e9d": "Ericsson AB", "346f24": "AzureWave Technology Inc.", + "346f71": "TenaFe Inc. ", "346f90": "Cisco Systems, Inc", "346f92": "White Rodgers Division", "346fed": "Enovation Controls", @@ -17402,6 +17422,7 @@ "3847bc": "HUAWEI TECHNOLOGIES CO.,LTD", "3847f2": "Recogni Inc", "38484c": "Apple, Inc.", + "384a80": "Samsung Electronics Co.,Ltd", "384b24": "SIEMENS AG", "384b5b": "ZTRON TECHNOLOGY LIMITED", "384b76": "AIRTAME ApS", @@ -17650,6 +17671,7 @@ "3c08cd": "Juniper Networks", "3c08f6": "Cisco Systems, Inc", "3c096d": "Powerhouse Dynamics", + "3c0af3": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", "3c0b4f": "Yandex Services AG", "3c0c48": "Servergy, Inc.", "3c0c7d": "Tiny Mesh AS", @@ -17963,6 +17985,7 @@ "3cf862": "Intel Corporate", "3cf9f0": "zte corporation", "3cfa06": "Microsoft Corporation", + "3cfa30": "Palo Alto Networks", "3cfa43": "HUAWEI TECHNOLOGIES CO.,LTD", "3cfad3": "IEEE Registration Authority", "3cfb5c": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -18248,6 +18271,7 @@ "40e171": "Jiangsu Huitong Group Co.,Ltd.", "40e1e4": "Nokia Solutions and Networks GmbH & Co. KG", "40e230": "AzureWave Technology Inc.", + "40e317": "Extreme Networks, Inc.", "40e3d6": "Aruba, a Hewlett Packard Enterprise Company", "40e64b": "Apple, Inc.", "40e730": "DEY Storage Systems, Inc.", @@ -18324,6 +18348,7 @@ "441c12": "Vantiva USA LLC", "441c7f": "Motorola Mobility LLC, a Lenovo Company", "441ca8": "Hon Hai Precision Ind. Co.,Ltd.", + "441db1": "APTIV SERVICES US, LLC", "441e91": "ARVIDA Intelligent Electronics Technology Co.,Ltd.", "441e98": "Ruckus Wireless", "441ea1": "Hewlett Packard", @@ -18353,6 +18378,7 @@ "4434a7": "ARRIS Group, Inc.", "44356f": "Neterix Ltd", "443583": "Apple, Inc.", + "4435d3": "GD Midea Air-Conditioning Equipment Co.,Ltd.", "443708": "MRV Comunications", "443719": "2 Save Energy Ltd", "44376f": "Young Electric Sign Co", @@ -18428,6 +18454,7 @@ "446a2e": "HUAWEI TECHNOLOGIES CO.,LTD", "446ab7": "ARRIS Group, Inc.", "446c24": "Reallin Electronic Co.,Ltd", + "446d05": "NoTraffic", "446d57": "Liteon Technology Corporation", "446d6c": "Samsung Electronics Co.,Ltd", "446d7f": "Amazon Technologies Inc.", @@ -18677,6 +18704,7 @@ "48343d": "IEP GmbH", "48352b": "Apple, Inc.", "48352e": "Shenzhen Wolck Network Product Co.,LTD", + "483543": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "48365f": "Wintecronics Ltd.", "483871": "Huawei Device Co., Ltd.", "4838b6": "Auhui Taoyun Technology Co., Ltd", @@ -18786,6 +18814,7 @@ "48872d": "SHEN ZHEN DA XIA LONG QUE TECHNOLOGY CO.,LTD", "488759": "Xiaomi Communications Co Ltd", "488764": "vivo Mobile Communication Co., Ltd.", + "4887b8": "TCL King Electrical Appliances(Huizhou)Co.,Ltd", "488803": "ManTechnology Inc.", "48881e": "EthoSwitch LLC", "488899": "Shenzhen SuperElectron Technology Co.,Ltd.", @@ -18807,6 +18836,7 @@ "489507": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "4898ca": "Sichuan AI-Link Technology Co., Ltd.", "489a42": "Technomate Ltd", + "489a5b": "Shenzhen iComm Semiconductor CO.,LTD", "489bd5": "Extreme Networks, Inc.", "489be0": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", "489be2": "SCI Innovations Ltd", @@ -18880,6 +18910,7 @@ "48d24f": "Sagemcom Broadband SAS", "48d343": "ARRIS Group, Inc.", "48d35d": "Private", + "48d475": "Lampuga GmbH", "48d539": "HUAWEI TECHNOLOGIES CO.,LTD", "48d54c": "Jeda Networks", "48d6d5": "Google, Inc.", @@ -18890,6 +18921,7 @@ "48d875": "China TransInfo Technology Co., Ltd", "48d890": "FN-LINK TECHNOLOGY LIMITED", "48d8fe": "ClarIDy Solutions, Inc.", + "48da35": "IEEE Registration Authority", "48da96": "Eddy Smart Home Solutions Inc.", "48db50": "HUAWEI TECHNOLOGIES CO.,LTD", "48dc2d": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -19019,6 +19051,7 @@ "4c3fd3": "Texas Instruments", "4c4088": "SANSHIN ELECTRONICS CO.,LTD.", "4c421e": "Cisco Systems, Inc", + "4c4341": "Calix Inc.", "4c445b": "Intel Corporate", "4c4576": "Information Technology Co.,Ltd.", "4c48da": "Beijing Autelan Technology Co.,Ltd", @@ -19132,6 +19165,7 @@ "4c9ee4": "Hanyang Navicom Co.,Ltd.", "4c9eff": "Zyxel Communications Corporation", "4ca003": "VITEC", + "4ca0d4": "Co., Ltd.", "4ca161": "Rain Bird Corporation", "4ca3a7": "TECNO MOBILE LIMITED", "4ca515": "Baikal Electronics JSC", @@ -19231,6 +19265,7 @@ "4ce9e4": "New H3C Technologies Co., Ltd", "4ceaae": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "4ceb42": "Intel Corporate", + "4ceb76": "Murrelektronik GmbH", "4cebbd": "CHONGQING FUGUI ELECTRONICS CO.,LTD.", "4cebd6": "Espressif Inc.", "4cec0f": "Cisco Systems, Inc", @@ -19567,6 +19602,7 @@ "50e0ef": "Nokia", "50e14a": "Private", "50e24e": "zte corporation", + "50e478": "Sichuan AI-Link Technology Co., Ltd.", "50e4e0": "Aruba, a Hewlett Packard Enterprise Company", "50e538": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "50e549": "GIGA-BYTE TECHNOLOGY CO.,LTD.", @@ -19587,6 +19623,7 @@ "50f003": "Open Stack, Inc.", "50f0d3": "Samsung Electronics Co.,Ltd", "50f14a": "Texas Instruments", + "50f222": "EM Microelectronic", "50f261": "Photon Sail Technologies", "50f43c": "Leeo Inc", "50f4eb": "Apple, Inc.", @@ -19604,6 +19641,7 @@ "50fc30": "Treehouse Labs", "50fc9f": "Samsung Electronics Co.,Ltd", "50fdd5": "SJI Industry Company", + "50fe0c": "AzureWave Technology Inc.", "50fef2": "Sify Technologies Ltd", "50ff20": "Keenetic Limited", "50ff99": "IEEE Registration Authority", @@ -19622,6 +19660,7 @@ "54077d": "NETGEAR", "54083b": "IEEE Registration Authority", "540910": "Apple, Inc.", + "540929": "Inventus Power Eletronica do Brasil LTDA", "540955": "zte corporation", "54098d": "deister electronic GmbH", "540df9": "Huawei Device Co., Ltd.", @@ -19785,6 +19824,7 @@ "548c81": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "548ca0": "Liteon Technology Corporation", "548d5a": "Intel Corporate", + "5491af": "IEEE Registration Authority", "549209": "HUAWEI TECHNOLOGIES CO.,LTD", "5492be": "Samsung Electronics Co.,Ltd", "549359": "SHENZHEN TWOWING TECHNOLOGIES CO.,LTD.", @@ -19902,6 +19942,7 @@ "54f15f": "Sichuan AI-Link Technology Co., Ltd.", "54f201": "Samsung Electronics Co.,Ltd", "54f294": "Huawei Device Co., Ltd.", + "54f29f": "HUNAN FN-LINK TECHNOLOGY LIMITED", "54f5b6": "ORIENTAL PACIFIC INTERNATIONAL LIMITED", "54f607": "Huawei Device Co., Ltd.", "54f666": "Berthold Technologies GmbH and Co.KG", @@ -19925,6 +19966,7 @@ "5804cb": "Tianjin Huisun Technology Co.,Ltd.", "580528": "LABRIS NETWORKS", "580556": "Elettronica GF S.r.L.", + "5807f8": "Nokia Solutions and Networks GmbH & Co. KG", "5808fa": "Fiber Optic & telecommunication INC.", "580943": "Private", "5809e5": "Kivic Inc.", @@ -20025,6 +20067,7 @@ "58677f": "Clare Controls Inc.", "58685d": "Tempo Australia Pty Ltd", "586861": "VIASAT, INCORPORATED", + "58687a": "Sagemcom Broadband SAS", "58696c": "Ruijie Networks Co.,LTD", "5869f9": "Fusion Transactive Ltd.", "586ab1": "Hangzhou H3C Technologies Co., Limited", @@ -20098,6 +20141,7 @@ "58a023": "Intel Corporate", "58a0cb": "TrackNet, Inc", "58a15f": "Texas Instruments", + "58a2e1": "Mellanox Technologies, Inc.", "58a48e": "PixArt Imaging Inc.", "58a639": "Samsung Electronics Co.,Ltd", "58a76f": "iD corporation", @@ -20353,6 +20397,7 @@ "5c7b5c": "Shenzhen SDMC Technology CO.,Ltd.", "5c7d5e": "HUAWEI TECHNOLOGIES CO.,LTD", "5c7d7d": "Vantiva USA LLC", + "5c7df3": "Fiberhome Telecommunication Technologies Co.,LTD", "5c80b6": "Intel Corporate", "5c81a7": "Network Devices Pty Ltd", "5c8382": "Nokia", @@ -20571,6 +20616,7 @@ "601929": "CORP.", "601970": "HUIZHOU QIAOXING ELECTRONICS TECHNOLOGY CO., LTD.", "601971": "ARRIS Group, Inc.", + "601ac7": "Nintendo Co.,Ltd", "601b52": "Vodafone Italia S.p.A.", "601d0f": "Midnite Solar", "601d91": "Motorola Mobility LLC, a Lenovo Company", @@ -20658,6 +20704,7 @@ "606405": "Texas Instruments", "606453": "AOD Co.,Ltd.", "6064a1": "RADiflow Ltd.", + "606682": "SHENZHEN ATEKO PHOTOELECTRICITY CO.,LTD", "606720": "Intel Corporate", "60684e": "Samsung Electronics Co.,Ltd", "606944": "Apple, Inc.", @@ -20766,6 +20813,7 @@ "60b76e": "Google, Inc.", "60b933": "Deutron Electronics Corp.", "60b982": "RO.VE.R. Laboratories S.p.A.", + "60b9c0": "Cisco Systems, Inc", "60ba18": "nextLAP GmbH", "60bb0c": "Beijing HuaqinWorld Technology Co,Ltd", "60bc4c": "EWM Hightec Welding GmbH", @@ -20962,7 +21010,9 @@ "644bc3": "Shanghai WOASiS Telecommunications Ltd., Co.", "644bf0": "CalDigit, Inc", "644c36": "Intel Corporate", + "644c69": "CONPROVE", "644d70": "dSPACE GmbH", + "644ed7": "HP Inc.", "644f42": "JETTER CO., Ltd.", "644f74": "LENUS Co., Ltd.", "644fb0": "Hyunjin.com", @@ -21003,6 +21053,7 @@ "6465c0": "Nuvon, Inc", "646624": "Sagemcom Broadband SAS", "6466b3": "TP-LINK TECHNOLOGIES CO.,LTD.", + "6466d8": "Samsung Electronics Co.,Ltd", "646707": "Beijing Omnific Technology, Ltd.", "6467cd": "HUAWEI TECHNOLOGIES CO.,LTD", "64680c": "Comtrend Corporation", @@ -21044,6 +21095,7 @@ "64808b": "VG Controls, Inc.", "648099": "Intel Corporate", "648125": "Alphatron Marine BV", + "648505": "zte corporation", "648788": "Juniper Networks", "6487d7": "ADB Broadband Italia", "6488ff": "Sichuan Changhong Electric Ltd.", @@ -21059,7 +21111,7 @@ "64995d": "LGE ", "649968": "Elentec", "6499a0": "AG Elektronik AB", - "649a08": "Shenzhen SuperElectron Technology Co.,LTD", + "649a08": "Shenzhen SuperElectron Technology Co.,Ltd.", "649a12": "P2 Mobile Technologies Limited", "649a63": "Ring LLC", "649abe": "Apple, Inc.", @@ -21170,6 +21222,7 @@ "64e599": "EFM Networks", "64e625": "Woxu Wireless Co., Ltd", "64e682": "Apple, Inc.", + "64e738": "Zhejiang SUPCON Technology Co., Ltd.", "64e7d8": "Samsung Electronics Co.,Ltd", "64e833": "Espressif Inc.", "64e84f": "Serialway Communication Technology Co. Ltd", @@ -21301,6 +21354,7 @@ "6854ed": "Alcatel-Lucent", "6854f5": "enLighted Inc", "6854fd": "Amazon Technologies Inc.", + "6855d4": "Seiko Epson Corporation", "68572d": "Tuya Smart Inc.", "685811": "Fiberhome Telecommunication Technologies Co.,LTD", "6858c5": "ZF TRW Automotive", @@ -21554,6 +21608,7 @@ "6c1ed7": "vivo Mobile Communication Co., Ltd.", "6c2056": "Cisco Systems, Inc", "6c21a2": "AMPAK Technology, Inc.", + "6c221a": "AltoBeam Inc.", "6c22ab": "Ainsworth Game Technology", "6c2316": "TATUNG Technology Inc.,", "6c23b9": "Sony Corporation", @@ -21751,6 +21806,7 @@ "6cb2fd": "Texas Instruments", "6cb311": "Shenzhen Lianrui Electronics Co.,Ltd", "6cb350": "Anhui comhigher tech co.,ltd", + "6cb456": "Espressif Inc.", "6cb4a7": "Landauer, Inc.", "6cb4fd": "Huawei Device Co., Ltd.", "6cb56b": "HUMAX Co., Ltd.", @@ -21830,6 +21886,7 @@ "6cfa58": "Avaya Inc", "6cfa89": "Cisco Systems, Inc", "6cfaa7": "AMPAK Technology, Inc.", + "6cfbed": "GN Audio A/S", "6cfdb9": "Proware Technologies Co Ltd.", "6cfe54": "Intel Corporate", "6cffbe": "MPB Communications Inc.", @@ -21966,6 +22023,7 @@ "705812": "Panasonic Corporation AVC Networks Company", "705846": "Trig Avionics Limited", "705896": "InShow Technology", + "7058a4": "Actiontec Electronics Inc.", "705957": "Medallion Instrumentation Systems", "705986": "OOO TTV", "705a0f": "Hewlett Packard", @@ -22642,6 +22700,7 @@ "7845b3": "Huawei Device Co., Ltd.", "7845c4": "Dell Inc.", "78465c": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", + "78467d": "SKAIChips", "7846c4": "DAEHAP HYPER-TECH", "7846d4": "Samsung Electronics Co.,Ltd", "78471d": "Samsung Electronics Co.,Ltd", @@ -22738,6 +22797,7 @@ "788c54": "Ping Communication", "788c77": "LEXMARK INTERNATIONAL, INC.", "788cb5": "TP-Link Corporation Limited", + "788daf": "Sagemcom Broadband SAS", "788df7": "Hitron Technologies. Inc", "788e33": "Jiangsu SEUIC Technology Co.,Ltd", "7890a2": "zte corporation", @@ -22757,6 +22817,7 @@ "78995c": "Nationz Technologies Inc", "789966": "Musilab Electronics (DongGuan)Co.,Ltd.", "78998f": "MEDILINE ITALIA SRL", + "789a18": "Routerboard.com", "789c85": "August Home, Inc.", "789ce7": "Shenzhen Aikede Technology Co., Ltd", "789ed0": "Samsung Electronics Co.,Ltd", @@ -23067,7 +23128,9 @@ "7c726e": "Ericsson AB", "7c72e4": "Unikey Technologies", "7c738b": "Cocoon Alarm Ltd", + "7c7398": "Espressif Inc.", "7c73eb": "Huawei Device Co., Ltd.", + "7c752d": "Samsung Electronics Co.,Ltd", "7c7630": "Shenzhen YOUHUA Technology Co., Ltd", "7c7635": "Intel Corporate", "7c7668": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -23244,6 +23307,7 @@ "7cfadf": "Apple, Inc.", "7cfc16": "Apple, Inc.", "7cfc3c": "Visteon Corporation", + "7cfcfd": "Fiberhome Telecommunication Technologies Co.,LTD", "7cfd6b": "Xiaomi Communications Co Ltd", "7cfd82": "GUANGDONG GENIUS TECHNOLOGY CO., LTD.", "7cfe28": "Salutron Inc.", @@ -23345,6 +23409,7 @@ "8045dd": "Intel Corporate", "804731": "Packet Design, Inc.", "804786": "Samsung Electronics Co.,Ltd", + "80482c": "Wyze Labs Inc", "8048a5": "Sichuan Tianyi Comheart Telecom Co.,LTD", "804971": "Apple, Inc.", "804a14": "Apple, Inc.", @@ -23628,6 +23693,7 @@ "84262b": "Nokia", "84267a": "GUANGDONG TAIDE ZHILIAN TECHNOLOGY CO.,LTD", "842690": "BEIJING THOUGHT SCIENCE CO.,LTD.", + "842712": "Silicon Laboratories", "8427b6": "China Mobile IOT Company Limited", "8427ce": "Corporation of the Presiding Bishop of The Church of Jesus Christ of Latter-day Saints", "842859": "Amazon Technologies Inc.", @@ -23883,6 +23949,7 @@ "84eb3e": "Vivint Smart Home", "84ebef": "Cisco Systems, Inc", "84ed33": "BBMC Co.,Ltd", + "84eee4": "Samsung Electronics Co.,Ltd", "84ef18": "Intel Corporate", "84f117": "Newseason", "84f129": "Metrascale Inc.", @@ -24218,6 +24285,7 @@ "88e9fe": "Apple, Inc.", "88ed1c": "Cudo Communication Co., Ltd.", "88ef16": "ARRIS Group, Inc.", + "88f00f": "Miraeil", "88f031": "Cisco Systems, Inc", "88f077": "Cisco Systems, Inc", "88f2bd": "GD Midea Air-Conditioning Equipment Co.,Ltd.", @@ -24433,6 +24501,7 @@ "8c9246": "Oerlikon Textile Gmbh&Co.KG", "8c9351": "Jigowatts Inc.", "8c941f": "Cisco Systems, Inc", + "8c9461": "Cisco Systems, Inc", "8c946a": "New H3C Technologies Co., Ltd", "8c94cc": "SFR", "8c94cf": "Encell Technology, Inc.", @@ -24579,6 +24648,7 @@ "900d66": "Digimore Electronics Co., Ltd", "900dcb": "ARRIS Group, Inc.", "900e83": "Monico Monitoring, Inc.", + "900e9e": "Shenzhen SuperElectron Technology Co.,Ltd.", "900eb3": "Shenzhen Amediatech Technology Co., Ltd.", "900f0c": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", "901195": "Amazon Technologies Inc.", @@ -24619,6 +24689,7 @@ "902bd2": "HUAWEI TECHNOLOGIES CO.,LTD", "902cc7": "C-MAX Asia Limited", "902cfb": "CanTops Co,.Ltd.", + "902d77": "Edgecore Americas Networking Corporation", "902e16": "Electronics Technology co., ltd", "902e1c": "Intel Corporate", "902e87": "LabJack", @@ -24702,6 +24773,7 @@ "906976": "Withrobot Inc.", "906a94": "hangzhou huacheng network technology co., ltd", "906aeb": "Microsoft Corporation", + "906c4b": "Advance Security Electronics", "906cac": "Fortinet, Inc.", "906d05": "BXB ELECTRONICS CO., LTD", "906d62": "Cambium Networks Limited", @@ -24827,6 +24899,7 @@ "90c35f": "Nanjing Jiahao Technology Co., Ltd.", "90c54a": "vivo Mobile Communication Co., Ltd.", "90c682": "IEEE Registration Authority", + "90c710": "zte corporation", "90c792": "ARRIS Group, Inc.", "90c7d8": "zte corporation", "90c99b": "Tesorion Nederland B.V.", @@ -25506,6 +25579,8 @@ "98ec65": "Cosesy ApS", "98ed5c": "Tesla,Inc.", "98ed7e": "eero inc.", + "98edca": "Fiberhome Telecommunication Technologies Co.,LTD", + "98ee8c": "zte corporation", "98eecb": "Corporation", "98ef9b": "OHSUNG", "98f058": "Lynxspring, Incl.", @@ -25533,6 +25608,7 @@ "98faa7": "INNONET", "98fae3": "Xiaomi Communications Co Ltd", "98fb12": "Ltd", + "98fb27": "Samsung Electronics Co.,Ltd", "98fbf5": "ATRALTECH", "98fc11": "Cisco-Linksys, LLC", "98fc84": "IEEE Registration Authority", @@ -25609,6 +25685,7 @@ "9c35eb": "Apple, Inc.", "9c36f8": "Hyundai Kefico", "9c37f4": "HUAWEI TECHNOLOGIES CO.,LTD", + "9c3928": "Samsung Electronics Co.,Ltd", "9c3a9a": "Shenzhen Sundray Technologies Company Limited", "9c3aaf": "Samsung Electronics Co.,Ltd", "9c3dcf": "NETGEAR", @@ -25621,6 +25698,7 @@ "9c44a6": "SwiftTest, Inc.", "9c4563": "DIMEP Sistemas", "9c47f9": "LJU Automatisierungstechnik GmbH", + "9c4952": "Dongguan Liesheng Electronic Co., Ltd.", "9c497f": "Sdn. Bhd.", "9c4a7b": "Nokia Corporation", "9c4cae": "Mesa Labs", @@ -25716,6 +25794,7 @@ "9c8824": "PetroCloud LLC", "9c8888": "Simac Techniek NV", "9c88ad": "Fiberhome Telecommunication Technologies Co.,LTD", + "9c891e": "FireBrick Ltd", "9c8acb": "Juniper Networks", "9c8ba0": "Apple, Inc.", "9c8bf1": "The Warehouse Limited", @@ -25737,6 +25816,7 @@ "9c9567": "Huawei Device Co., Ltd.", "9c956e": "Microchip Technology Inc.", "9c95f8": "SmartDoor Systems, LLC", + "9c9613": "Company Limited", "9c9726": "Technicolor Delivery Technologies Belgium NV", "9c9789": "1MORE", "9c9811": "Guangzhou Sunrise Electronics Development Co., Ltd", @@ -25829,6 +25909,7 @@ "9ce176": "Cisco Systems, Inc", "9ce1d6": "Junger Audio-Studiotechnik GmbH", "9ce230": "JULONG CO,.LTD.", + "9ce330": "Cisco Meraki", "9ce33f": "Apple, Inc.", "9ce374": "HUAWEI TECHNOLOGIES CO.,LTD", "9ce635": "Nintendo Co., Ltd.", @@ -25908,6 +25989,7 @@ "a02195": "Samsung Electronics Co.,Ltd", "a021b7": "NETGEAR", "a0224e": "IEEE Registration Authority", + "a02252": "Astra Wireless Technology FZ-LLC", "a022de": "vivo Mobile Communication Co., Ltd.", "a0231b": "TeleComp R&D Corp.", "a0239f": "Cisco Systems, Inc", @@ -26388,6 +26470,7 @@ "a49340": "Beijing Supvan Information Technology Co.,Ltd.", "a4934c": "Cisco Systems, Inc", "a49426": "Elgama-Elektronika Ltd.", + "a494dc": "Infinite Clouds", "a49733": "ASKEY COMPUTER CORP", "a4975c": "VTech Telecommunications Ltd.", "a497b1": "CHONGQING FUGUI ELECTRONICS CO.,LTD.", @@ -26415,6 +26498,7 @@ "a4a528": "Sichuan Tianyi Comheart Telecom Co.,LTD", "a4a6a9": "Private", "a4a80f": "Shenzhen Coship Electronics Co., Ltd.", + "a4a930": "Beijing Xiaomi Mobile Software Co., Ltd", "a4aafe": "Huawei Device Co., Ltd.", "a4ac0f": "Huawei Device Co., Ltd.", "a4ad00": "Ragsdale Technology", @@ -26546,6 +26630,7 @@ "a8032a": "Espressif Inc.", "a80577": "Netlist, Inc.", "a80600": "Samsung Electronics Co.,Ltd", + "a80bfb": "Ruckus Wireless", "a80c03": "Florawise", "a80c0d": "Cisco Systems, Inc", "a80c63": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -26608,6 +26693,7 @@ "a842a7": "Jiangsu Huitong Group Co.,Ltd.", "a842e3": "Espressif Inc.", "a84397": "Innogrit Corporation", + "a843a4": "China Dragon Technology Limited", "a84481": "Nokia Corporation", "a845cd": "Siselectron Technology LTD.", "a845e9": "Firich Enterprises CO., LTD.", @@ -26646,6 +26732,7 @@ "a85c2c": "Apple, Inc.", "a85e45": "ASUSTek COMPUTER INC.", "a85ee4": "12Sided Technology, LLC", + "a85ef2": "TECNO MOBILE LIMITED", "a860b6": "Apple, Inc.", "a8610a": "ARDUINO AG", "a861aa": "Cloudview Limited", @@ -26692,6 +26779,7 @@ "a8817e": "Apple, Inc.", "a88195": "Samsung Electronics Co.,Ltd", "a881f1": "BMEYE B.V.", + "a881fe": "Luxul Tech Co., Ltd", "a88200": "Hisense Electric Co.,Ltd", "a8827f": "CO.,Ltd", "a885d7": "Sangfor Technologies Inc.", @@ -26756,7 +26844,9 @@ "a8b271": "HUAWEI TECHNOLOGIES CO.,LTD", "a8b2da": "FUJITSU LIMITED", "a8b456": "Cisco Systems, Inc", + "a8b483": "Shenzhen SuperElectron Technology Co.,Ltd.", "a8b57c": "Roku, Inc", + "a8b8e0": "Changwang Technology inc.", "a8b9b3": "ESSYS", "a8bb50": "WiZ IoT Company Limited", "a8bbcf": "Apple, Inc.", @@ -26821,6 +26911,7 @@ "a8f470": "Fujian Newland Communication Science Technologies Co.,Ltd.", "a8f5ac": "HUAWEI TECHNOLOGIES CO.,LTD", "a8f5dd": "ARRIS Group, Inc.", + "a8f5e1": "Shenzhen Shokz Co., Ltd.", "a8f766": "ITE Tech Inc", "a8f7d9": "Mist Systems, Inc.", "a8f7e0": "PLANET Technology Corporation", @@ -27442,6 +27533,7 @@ "b0ca68": "Apple, Inc.", "b0ccfe": "Huawei Device Co., Ltd.", "b0ce18": "Zhejiang shenghui lighting co.,Ltd", + "b0cf0e": "Mellanox Technologies, Inc.", "b0cf4d": "MI-Zone Technology Ireland", "b0cfcb": "Amazon Technologies Inc.", "b0d09c": "Samsung Electronics Co.,Ltd", @@ -27776,6 +27868,7 @@ "b4de31": "Cisco Systems, Inc", "b4dedf": "zte corporation", "b4df3b": "Chromlech", + "b4df91": "Cisco Meraki", "b4dffa": "Litemax Electronics Inc.", "b4e01d": "CONCEPTION ELECTRONIQUE", "b4e0cd": "Fusion-io, Inc", @@ -28130,6 +28223,7 @@ "b8f12a": "Apple, Inc.", "b8f255": "Universal Electronics, Inc.", "b8f317": "iSun Smasher Communications Private Limited", + "b8f44f": "u-blox AG", "b8f4d0": "Herrmann Ultraschalltechnik GmbH & Co. Kg", "b8f5e7": "WayTools, LLC", "b8f653": "Shenzhen Jingxun Software Telecommunication Technology Co.,Ltd", @@ -28159,11 +28253,14 @@ "bc091b": "Intel Corporate", "bc0963": "Apple, Inc.", "bc0da5": "Texas Instruments", + "bc0eab": "Samsung Electronics Co.,Ltd", "bc0f2b": "FORTUNE TECHGROUP CO.,LTD", "bc0f64": "Intel Corporate", "bc0f9a": "D-Link International", "bc0fa7": "Ouster", "bc0ff3": "HP Inc.", + "bc0ffe": "Juniper Networks", + "bc102f": "SJI Industry Company", "bc107b": "Samsung Electronics Co.,Ltd", "bc125e": "Beijing WisVideo INC.", "bc13a8": "Shenzhen YOUHUA Technology Co., Ltd", @@ -28188,6 +28285,7 @@ "bc2247": "New H3C Technologies Co., Ltd", "bc22fb": "RF Industries", "bc2392": "BYD Precision Manufacture Company Ltd.", + "bc2411": "Proxmox Server Solutions GmbH", "bc25e0": "HUAWEI TECHNOLOGIES CO.,LTD", "bc25f0": "3D Display Technologies Co., Ltd.", "bc261d": "HONG KONG TECON TECHNOLOGY", @@ -28334,6 +28432,7 @@ "bc8ae8": "QING DAO HAIER TELECOM CO.,LTD.", "bc8b55": "NPP ELIKS America Inc. DBA T&M Atlantic", "bc8d0e": "Nokia", + "bc8d1f": "Cisco Systems, Inc", "bc903a": "Robert Bosch GmbH", "bc91b5": "Infinix mobility limited", "bc926b": "Apple, Inc.", @@ -28384,6 +28483,7 @@ "bcb1f3": "Samsung Electronics Co.,Ltd", "bcb22b": "EM-Tech", "bcb308": "HONGKONG RAGENTEK COMMUNICATION TECHNOLOGY CO.,LIMITED", + "bcb6fb": "P4Q ELECTRONICS, S.L.", "bcb852": "Cybera, Inc.", "bcb863": "Apple, Inc.", "bcb923": "Alta Networks", @@ -28498,6 +28598,7 @@ "c01e9b": "Pixavi AS", "c0210d": "SHENZHEN RF-LINK TECHNOLOGY CO.,LTD.", "c02250": "Koss Corporation", + "c022f1": "IEEE Registration Authority", "c0238d": "Samsung Electronics Co.,Ltd", "c02506": "AVM GmbH", "c0252f": "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", @@ -28803,6 +28904,7 @@ "c413e2": "Extreme Networks, Inc.", "c41411": "Apple, Inc.", "c4143c": "Cisco Systems, Inc", + "c414a2": "Cisco Meraki", "c41688": "Huawei Device Co., Ltd.", "c416c8": "HUAWEI TECHNOLOGIES CO.,LTD", "c416fa": "Prysm Inc", @@ -29172,6 +29274,7 @@ "c82b6b": "shenzhen worldelite electronics co., LTD", "c82b96": "Espressif Inc.", "c82c2b": "IEEE Registration Authority", + "c82e18": "Espressif Inc.", "c82e47": "Suzhou SmartChip Semiconductor Co., LTD", "c82e94": "Halfa Enterprise Co., Ltd.", "c83168": "eZEX corporation", @@ -29260,6 +29363,7 @@ "c8755b": "Quantify Technology Pty. Ltd.", "c87765": "Tiesse SpA", "c8778b": "Mercury Systems – Trusted Mission Solutions, Inc. ", + "c87867": "Mist Systems, Inc.", "c8787d": "D-Link Corporation", "c87b23": "Bose Corporation", "c87b5b": "zte corporation", @@ -29305,6 +29409,7 @@ "c89c1d": "Cisco Systems, Inc", "c89cdc": "Elitegroup Computer Systems Co.,Ltd.", "c89d18": "Huawei Device Co., Ltd.", + "c89d6d": "ITEL MOBILE LIMITED", "c89e43": "NETGEAR", "c89e61": "Lyngsoe Systems LTd", "c89f1a": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -29737,9 +29842,11 @@ "cce798": "My Social Stuff", "cce7df": "American Magnetics, Inc.", "cce8ac": "SOYEA Technology Co.,Ltd.", + "cce9fa": "Samsung Electronics Co.,Ltd", "ccea1c": "DCONWORKS Co., Ltd", "cceb18": "OOO TSS", "cceb5e": "Xiaomi Communications Co Ltd", + "ccecb7": "ShenZhen Linked-Z Intelligent Display Co., Ltd", "cced21": "Nokia Shanghai Bell Co., Ltd.", "cced4d": "Cisco Systems, Inc", "cceddc": "MitraStar Technology Corp.", @@ -30051,8 +30158,9 @@ "d0efc1": "HUAWEI TECHNOLOGIES CO.,LTD", "d0f0db": "Ericsson", "d0f121": "Xi'an LINKSCI Technology Co., Ltd", - "d0f27f": "SteadyServ Technoligies, LLC", + "d0f27f": "BrewLogix, LLC", "d0f3f5": "Huawei Device Co., Ltd.", + "d0f405": "Hon Hai Precision Industry Co., Ltd.", "d0f4f7": "Huawei Device Co., Ltd.", "d0f520": "KYOCERA Corporation ", "d0f73b": "Helmut Mauell GmbH Werk Weida", @@ -30106,7 +30214,7 @@ "d42122": "Sercomm Corporation.", "d4223f": "Lenovo Mobile Communication Technology Ltd.", "d4224e": "Alcatel Lucent", - "d422cd": "Xsens Technologies B.V.", + "d422cd": "Movella Technologies B.V.", "d42493": "GW Technologies Co.,Ltd", "d4258b": "Intel Corporate", "d425cc": "IEEE Registration Authority", @@ -30262,6 +30370,7 @@ "d48890": "Samsung Electronics Co.,Ltd", "d48a39": "Samsung Electronics Co.,Ltd", "d48a3b": "HUNAN FN-LINK TECHNOLOGY LIMITED", + "d48afc": "Espressif Inc.", "d48cb5": "Cisco Systems, Inc", "d48dd9": "Meld Technology, Inc", "d48f33": "Microsoft Corporation", @@ -30427,6 +30536,7 @@ "d807b6": "TP-LINK TECHNOLOGIES CO.,LTD.", "d80831": "Samsung Electronics Co.,Ltd", "d808f5": "Arcadia Networks Co. Ltd. ", + "d8094e": "Active Brains", "d8097f": "zte corporation", "d809c3": "Cercacor Labs", "d809d6": "ZEXELON CO., LTD.", @@ -30507,6 +30617,7 @@ "d84008": "HUAWEI TECHNOLOGIES CO.,LTD", "d842ac": "Shanghai Feixun Communication Co.,Ltd.", "d842e2": "Canary Connect, Inc.", + "d843ae": "Micro-Star INTL CO., LTD.", "d843ed": "Suzuken", "d8445c": "DEV Tecnologia Ind Com Man Eq LTDA", "d8452b": "Sdn. Bhd.", @@ -30579,6 +30690,7 @@ "d87766": "Nurivoice Co., Ltd", "d8778b": "Intelbras", "d8787f": "Ubee Interactive Co., Limited", + "d878c9": "PRIVATE LIMITED", "d878e5": "KUHN SA", "d87988": "Hon Hai Precision Ind. Co.,Ltd.", "d87a3b": "Silicon Laboratories", @@ -30881,10 +30993,12 @@ "dc6373": "OBARA KOREA", "dc647c": "C.R.S. iiMotion GmbH", "dc64b8": "Shenzhen JingHanDa Electronics Co.Ltd", + "dc6555": "New H3C Intelligence Terminal Co., Ltd.", "dc663a": "Apacer Technology Inc.", "dc6672": "Samsung Electronics Co.,Ltd", "dc6723": "barox Kommunikation GmbH", "dc680c": "Hewlett Packard Enterprise", + "dc6880": "zte corporation", "dc68eb": "Nintendo Co.,Ltd", "dc69e2": "Samsung Electronics Co.,Ltd", "dc6ae7": "Xiaomi Communications Co Ltd", @@ -30908,6 +31022,7 @@ "dc7794": "Huawei Device Co., Ltd.", "dc7834": "LOGICOM SA", "dc7b94": "Cisco Systems, Inc", + "dc7cf7": "China Mobile Group Device Co.,Ltd.", "dc7fa4": "2Wire Inc", "dc8084": "Apple, Inc.", "dc825b": "JANUS, spol. s r.o.", @@ -31011,6 +31126,7 @@ "dccf94": "Beijing Rongcheng Hutong Technology Co., Ltd.", "dccf96": "Samsung Electronics Co.,Ltd", "dcd0f7": "Bentek Systems Ltd.", + "dcd160": "Tianjin Changdatong Technology Co.,LTD", "dcd255": "Kinpo Electronics, Inc.", "dcd26a": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "dcd2fc": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -31024,6 +31140,7 @@ "dcd87f": "Shenzhen JoinCyber Telecom Equipment Ltd", "dcd916": "HUAWEI TECHNOLOGIES CO.,LTD", "dcd9ae": "Nokia Shanghai Bell Co., Ltd.", + "dcda0c": "Espressif Inc.", "dcda4f": "GETCK TECHNOLOGY, INC", "dcda80": "New H3C Technologies Co., Ltd", "dcdb27": "Huawei Device Co., Ltd.", @@ -31065,6 +31182,7 @@ "dcf401": "Dell Inc.", "dcf4ca": "Apple, Inc.", "dcf505": "AzureWave Technology Inc.", + "dcf51b": "Arcadyan Corporation", "dcf56e": "Wellysis Corp.", "dcf719": "Cisco Systems, Inc", "dcf755": "SITRONIK", @@ -31080,6 +31198,7 @@ "dcfe23": "Murata Manufacturing Co., Ltd.", "e00084": "HUAWEI TECHNOLOGIES CO.,LTD", "e001a6": "Edgecore Networks Corporation", + "e001c7": "Hui Zhou Gaoshengda Technology Co.,LTD", "e002a5": "ABB Robotics", "e0036b": "Samsung Electronics Co.,Ltd", "e00370": "ShenZhen Continental Wireless Technology Co., Ltd.", @@ -31357,6 +31476,7 @@ "e0d173": "Cisco Systems, Inc", "e0d1e6": "Aliph dba Jawbone", "e0d31a": "EQUES Technology Co., Limited", + "e0d3b4": "Cisco Meraki", "e0d462": "Huawei Device Co., Ltd.", "e0d464": "Intel Corporate", "e0d4e8": "Intel Corporate", @@ -31422,6 +31542,7 @@ "e40d36": "Intel Corporate", "e40d3b": "Ericsson AB", "e40eee": "HUAWEI TECHNOLOGIES CO.,LTD", + "e41088": "Samsung Electronics Co.,Ltd", "e4115b": "Hewlett Packard", "e41218": "ShenZhen Rapoo Technology Co., Ltd.", "e4121d": "Samsung Electronics Co.,Ltd", @@ -31528,11 +31649,13 @@ "e45e37": "Intel Corporate", "e45f01": "Raspberry Pi Trading Ltd", "e46017": "Intel Corporate", + "e4604d": "zte corporation", "e46059": "Pingtek Co., Ltd.", "e46251": "HAO CHENG GROUP LIMITED", "e462c4": "Cisco Systems, Inc", "e46449": "ARRIS Group, Inc.", "e46564": "SHENZHEN KTC TECHNOLOGY CO.,LTD", + "e465b8": "Espressif Inc.", "e466ab": "zte corporation", "e4671e": "SHEN ZHEN NUO XIN CHENG TECHNOLOGY co., Ltd.", "e467ba": "Danish Interpretation Systems A/S", @@ -31540,6 +31663,7 @@ "e4695a": "Dictum Health, Inc.", "e46a35": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", "e46c21": "messMa GmbH", + "e46cd1": "Calix Inc.", "e46d7f": "Ciena Corporation", "e46f13": "D-Link International", "e470b8": "Intel Corporate", @@ -31553,6 +31677,7 @@ "e47727": "HUAWEI TECHNOLOGIES CO.,LTD", "e4776b": "AARTESYS AG", "e477d4": "Minrray Industry Co.,Ltd ", + "e47876": "Arista Networks", "e47b3f": "BEIJING CO-CLOUD TECHNOLOGY LTD.", "e47c65": "Sunstar Communication Technology Co., Ltd", "e47cf9": "Samsung Electronics Co.,Ltd", @@ -31676,6 +31801,7 @@ "e4e0c5": "Samsung Electronics Co.,Ltd", "e4e112": "Texas Instruments", "e4e130": "TCT mobile ltd", + "e4e26c": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "e4e409": "LEIFHEIT AG", "e4e4ab": "Apple, Inc.", "e4e749": "Hewlett Packard", @@ -31687,6 +31813,7 @@ "e4f042": "Google, Inc.", "e4f14c": "Private", "e4f1d4": "vivo Mobile Communication Co., Ltd.", + "e4f27c": "Juniper Networks", "e4f327": "ATOL LLC", "e4f365": "Time-O-Matic, Inc.", "e4f3c4": "Samsung Electronics Co.,Ltd", @@ -31834,6 +31961,7 @@ "e86819": "HUAWEI TECHNOLOGIES CO.,LTD", "e868e7": "Espressif Inc.", "e86a64": "Electronics Technology co., ltd", + "e86bea": "Espressif Inc.", "e86cc7": "IEEE Registration Authority", "e86cda": "Supercomputers and Neurocomputers Research Center", "e86d52": "ARRIS Group, Inc.", @@ -31875,6 +32003,7 @@ "e8886c": "Shenzhen SC Technologies Co.,LTD", "e8892c": "ARRIS Group, Inc.", "e88d28": "Apple, Inc.", + "e88da6": "Quectel Wireless Solutions Co.,Ltd.", "e88df5": "ZNYX Networks, Inc.", "e88e60": "NSD Corporation", "e88f6f": "TCT mobile ltd", @@ -31900,6 +32029,7 @@ "e89c25": "ASUSTek COMPUTER INC.", "e89d87": "Toshiba", "e89e0c": "MAX8USA DISTRIBUTORS INC.", + "e89e13": "CRESYN", "e89eb4": "Hon Hai Precision Ind. Co.,Ltd.", "e89f39": "Nokia", "e89f6d": "Espressif Inc.", @@ -32049,6 +32179,7 @@ "ec01ee": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "ec0273": "Aruba, a Hewlett Packard Enterprise Company", "ec0441": "ShenZhen TIGO Semiconductor Co., Ltd.", + "ec0482": "STL Systems AG", "ec086b": "TP-LINK TECHNOLOGIES CO.,LTD.", "ec08e5": "Motorola Mobility LLC, a Lenovo Company", "ec0bae": "Hangzhou BroadLink Technology Co.,Ltd", @@ -32171,6 +32302,7 @@ "ec71db": "Reolink Innovation Limited", "ec7379": "Apple, Inc.", "ec7427": "eero inc.", + "ec748c": "Sony Interactive Entertainment Inc.", "ec74ba": "Hirschmann Automation and Control GmbH", "ec74d7": "Grandstream Networks Inc", "ec753e": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -32245,10 +32377,12 @@ "ecaa25": "Samsung Electronics Co.,Ltd", "ecaa8f": "HUAWEI TECHNOLOGIES CO.,LTD", "ecaaa0": "PEGATRON CORPORATION", + "ecab3e": "ESSYS", "ecadb8": "Apple, Inc.", "ecade0": "D-Link International", "ecaf97": "GIT", "ecaff9": "Hailo Technologies Ltd.", + "ecb0d2": "EM Microelectronic", "ecb0e1": "Ciena Corporation", "ecb106": "Acuro Networks, Inc", "ecb1d7": "Hewlett Packard", @@ -32948,6 +33082,7 @@ "f4e578": "LLC Proizvodstvennaya Kompania TransService", "f4e5f2": "HUAWEI TECHNOLOGIES CO.,LTD", "f4e6d7": "Solar Power Technologies, Inc.", + "f4e84f": "zte corporation", "f4e8c7": "Apple, Inc.", "f4e926": "Tianjin Zanpu Technology Inc.", "f4e975": "New H3C Technologies Co., Ltd", @@ -33332,6 +33467,7 @@ "f8f005": "Newport Media Inc.", "f8f014": "RackWare Inc.", "f8f082": "NAGTECH LLC", + "f8f09d": "Hangzhou Prevail Communication Technology Co., Ltd", "f8f0c5": "Suzhou Kuhan Information Technologies Co.,Ltd.", "f8f1b6": "Motorola Mobility LLC, a Lenovo Company", "f8f1e6": "Samsung Electronics Co.,Ltd", @@ -33461,6 +33597,7 @@ "fc4da6": "HUAWEI TECHNOLOGIES CO.,LTD", "fc4dd4": "Universal Global Scientific Industrial Co., Ltd.", "fc4ea4": "Apple, Inc.", + "fc500c": "Sitehop Ltd", "fc5090": "SIMEX Sp. z o.o.", "fc51a4": "ARRIS Group, Inc.", "fc528d": "Vantiva USA LLC", @@ -33472,6 +33609,7 @@ "fc589a": "Cisco Systems, Inc", "fc58df": "Interphone Service", "fc58fa": "Shen Zhen Shi Xin Zhong Xin Technology Co.,Ltd.", + "fc599f": "Ruijie Networks Co.,LTD", "fc59c0": "Arista Networks", "fc5a1d": "Hitron Technologies. Inc", "fc5b24": "Weibel Scientific A/S", @@ -33525,6 +33663,7 @@ "fc8743": "HUAWEI TECHNOLOGIES CO.,LTD", "fc8a3d": "zte corporation", "fc8b97": "SHENZHEN GONGJIN ELECTRONICS CO.,LT", + "fc8c11": "Microsoft Corporation", "fc8d3d": "Leapfive Tech. Ltd.", "fc8e5b": "China Mobile Iot Limited company", "fc8e6e": "StreamCCTV, LLC", @@ -33537,6 +33676,7 @@ "fc9189": "Sichuan Tianyi Comheart Telecom Co.,LTD", "fc923b": "Nokia Corporation", "fc9257": "Sdn. Bhd.", + "fc936b": "Samsung Electronics Co.,Ltd", "fc9435": "HUAWEI TECHNOLOGIES CO.,LTD", "fc946c": "UBIVELOX", "fc94ce": "zte corporation", From 3ff4799c0f80a9147ad656eb6c75ec76107b4dc7 Mon Sep 17 00:00:00 2001 From: pvillar_netdev Date: Mon, 3 Jul 2023 15:43:22 +0200 Subject: [PATCH 07/11] Ruckus fastiron parser (#264) * added Ruckus FastIron parser * linting fixes * banner edits * modified: netutils/config/parser.py * modified: netutils/config/parser.py * modified: netutils/config/parser.py * modified: netutils/config/parser.py * modified: netutils/config/parser.py * modified: netutils/config/parser.py * modified: netutils/config/parser.py * modified: netutils/config/parser.py * modified: netutils/config/parser.py * modified: netutils/config/parser.py * modified: netutils/config/parser.py * modified: netutils/config/parser.py * modified: netutils/config/parser.py * modified: netutils/config/parser.py * modified: netutils/config/parser.py new file: tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_backup.txt new file: tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_feature.py new file: tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_intended.txt new file: tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_received.json * new file: tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_received.py new file: tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_sent.txt * modified: tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_backup.txt modified: tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_intended.txt modified: tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_received.json * modified: netutils/config/parser.py modified: tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_backup.txt modified: tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_intended.txt modified: tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_received.json * modified: docs/dev/include_parser_list.md * black formatting to test files * mypy linter fixes * added multi level nesting test * linting tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_received.py * edit fFastiron parser to inherit from CiscoParser * Revert "edit fFastiron parser to inherit from CiscoParser" This reverts commit a980bb71b20b6c00748df1394179c90e2d442123. modified: netutils/config/parser.py modified: tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_received.py * changes in parser and tests, fixed regression * lint: black parser.py * modified: netutils/config/parser.py * modified: docs/dev/include_parser_list.md --- docs/dev/include_parser_list.md | 3 +- netutils/config/compliance.py | 1 + netutils/config/parser.py | 48 +++++ .../ruckus_fastiron/fastiron_basic_backup.txt | 196 +++++++++++++++++ .../ruckus_fastiron/fastiron_basic_feature.py | 5 + .../fastiron_basic_intended.txt | 197 ++++++++++++++++++ .../fastiron_basic_received.json | 32 +++ .../ruckus_fastiron/fastiron_full_received.py | 150 +++++++++++++ .../ruckus_fastiron/fastiron_full_sent.txt | 197 ++++++++++++++++++ 9 files changed, 828 insertions(+), 1 deletion(-) create mode 100644 tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_backup.txt create mode 100644 tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_feature.py create mode 100644 tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_intended.txt create mode 100644 tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_received.json create mode 100644 tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_received.py create mode 100644 tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_sent.txt diff --git a/docs/dev/include_parser_list.md b/docs/dev/include_parser_list.md index 93fb6a23..721a2255 100644 --- a/docs/dev/include_parser_list.md +++ b/docs/dev/include_parser_list.md @@ -16,4 +16,5 @@ | mikrotik_routeros | netutils.config.parser.RouterOSConfigParser | | mrv_optiswitch | netutils.config.parser.OptiswitchConfigParser | | nokia_sros | netutils.config.parser.NokiaConfigParser | -| paloalto_panos | netutils.config.parser.PaloAltoNetworksConfigParser | \ No newline at end of file +| paloalto_panos | netutils.config.parser.PaloAltoNetworksConfigParser | +| ruckus_fastiron | netutils.config.parser.FastironConfigParser | \ No newline at end of file diff --git a/netutils/config/compliance.py b/netutils/config/compliance.py index 55fa56a8..4cafc783 100644 --- a/netutils/config/compliance.py +++ b/netutils/config/compliance.py @@ -24,6 +24,7 @@ "extreme_netiron": parser.NetironConfigParser, "paloalto_panos": parser.PaloAltoNetworksConfigParser, "mikrotik_routeros": parser.RouterOSConfigParser, + "ruckus_fastiron": parser.FastironConfigParser, } diff --git a/netutils/config/parser.py b/netutils/config/parser.py index 2dd97a67..6c09857a 100644 --- a/netutils/config/parser.py +++ b/netutils/config/parser.py @@ -1533,3 +1533,51 @@ def build_config_relationship(self) -> t.List[ConfigLine]: # pylint: disable=to self._update_config_lines(line) return self.config_lines + + +class FastironConfigParser(CiscoConfigParser): + """Ruckus FastIron ICX config parser.""" + + comment_chars: t.List[str] = ["!"] + banner_start: t.List[str] = ["banner motd", "banner"] + regex_banner = re.compile(r"^banner(\smotd)?\s+(?P\S)") + + def __init__(self, config: str): + """Create ConfigParser Object. + + Args: + config (str): The config text to parse. + """ + super(FastironConfigParser, self).__init__(config) + + def _build_banner(self, config_line: str) -> t.Optional[str]: + """Handle banner config lines. + + Args: + config_line: The start of the banner config. + + Returns: + The next configuration line in the configuration text or None + + Raises: + ValueError: When the parser is unable to identify the end of the Banner. + """ + self._update_config_lines(config_line) + self._current_parents += (config_line,) + banner_config = [] + for line in self.generator_config: + if not self.is_banner_end(line): + banner_config.append(line) + else: + banner_config.append(line) + line = "\n".join(banner_config) + if line.endswith(self.banner_end): + banner, end, _ = line.rpartition(self.banner_end) + line = banner.rstrip() + end + self._update_config_lines(line) + self._current_parents = self._current_parents[:-1] + try: + return next(self.generator_config) + except StopIteration: + return None + raise ValueError("Unable to parse banner end.") diff --git a/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_backup.txt b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_backup.txt new file mode 100644 index 00000000..58cdae0c --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_backup.txt @@ -0,0 +1,196 @@ +Current configuration: +! +ver 08.0.95gT211 +! +stack unit 1 + module 1 icx7150-c12-poe-port-management-module + module 2 icx7150-2-copper-port-2g-module + module 3 icx7150-2-sfp-plus-port-20g-module + stack-port 1/3/1 + stack-port 1/3/2 +! +! +banner motd $ ++----------------+ WARNING RUCKUS SWITCH +---------------+ +. +. Access to this system is limited to authorized +. users and for official purposes only +. +. Your activities will be logged and abuse +. will be reported! +. ++----------------+ WARNING RUCKUS SWITCH +---------------+ $ +! +! +vlan 1 name DEFAULT-VLAN by port + no spanning-tree +! +! +! +! +vlan 2000 name MGMT-VLAN by port + tagged ethe 1/2/1 to 1/2/2 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/1 ethe 1/1/3 ethe 1/1/5 ethe 1/1/7 ethe 1/1/9 ethe 1/1/11 to 1/1/12 + no spanning-tree +! +! +! +vlan 3000 name Guest-WiFi by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3001 by port + tagged ethe 1/1/1 ethe 1/1/3 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/2 + no spanning-tree +! +vlan 3002 by port + tagged ethe 1/1/1 to 1/1/3 ethe 1/1/5 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/4 + no spanning-tree +! +vlan 3003 by port + tagged ethe 1/1/1 to 1/1/5 ethe 1/1/7 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/6 + no spanning-tree +! +vlan 3004 by port + tagged ethe 1/1/1 to 1/1/7 ethe 1/1/9 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/8 + no spanning-tree +! +vlan 3005 by port + tagged ethe 1/1/1 to 1/1/9 ethe 1/1/11 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/10 + no spanning-tree +! +vlan 3006 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3007 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3008 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3009 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3010 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +! +! +vlan 3995 name OfficeNetwork by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +! +! +mstp scope all +mstp instance 0 vlan 1 +mstp instance 0 vlan 2000 +mstp instance 0 vlan 3000 to 3010 +mstp instance 0 vlan 3995 +mstp start +! +! +! +! +errdisable recovery cause all +aaa authentication web-server default local +aaa authentication login default local +enable telnet authentication +enable aaa console +hostname NTC-Test-MDF +ip dhcp snooping vlan 2000 +ip address 10.254.220.10 255.255.255.0 +ip default-gateway 10.254.220.1 +! +no telnet server +username admin password testpass +! +! +snmp-server community testcomm rw +! +! +! +! +manager registrar +! +manager port-list 987 +! +! +interface ethernet 1/1/1 + port-name Unit-111-AP + inline power power-limit 12000 +! +interface ethernet 1/1/2 + port-name Unit-111-Wired +! +interface ethernet 1/1/3 + port-name Unit-112-AP + inline power power-limit 12000 +! +interface ethernet 1/1/4 + port-name Unit-112-Wired +! +interface ethernet 1/1/5 + port-name Unit-113-AP + inline power power-limit 12000 +! +interface ethernet 1/1/6 + port-name Unit-113-Wired +! +interface ethernet 1/1/7 + port-name Unit-114-AP + inline power power-limit 12000 +! +interface ethernet 1/1/8 + port-name Unit-114-Wired +! +interface ethernet 1/1/9 + port-name Unit-115-AP + inline power power-limit 12000 +! +interface ethernet 1/1/10 + port-name Unit-115-Wired +! +interface ethernet 1/1/11 + port-name UPS +! +interface ethernet 1/1/12 + port-name Tech-Test-port +! +interface ethernet 1/3/1 + dhcp snooping trust +! +interface ethernet 1/3/2 + dhcp snooping trust +! +! +! +! +! +! +! +no lldp run +! +! +overlay-gateway gateway1 + type layer2-extension + ip interface Loopback 1 + map vlan 2 vni 3 + site site1 + ip address 67.67.67.1 + extend vlan add 2 +! +! +! +! +end \ No newline at end of file diff --git a/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_feature.py b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_feature.py new file mode 100644 index 00000000..2ca8a507 --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_feature.py @@ -0,0 +1,5 @@ +features = [ + {"name": "snmp", "ordered": False, "section": ["snmp-server"]}, + {"name": "aaa", "ordered": False, "section": ["aaa"]}, + {"name": "mstp", "ordered": True, "section": ["mstp"]}, +] diff --git a/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_intended.txt b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_intended.txt new file mode 100644 index 00000000..2468191b --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_intended.txt @@ -0,0 +1,197 @@ +Current configuration: +! +ver 08.0.95gT211 +! +stack unit 1 + module 1 icx7150-c12-poe-port-management-module + module 2 icx7150-2-copper-port-2g-module + module 3 icx7150-2-sfp-plus-port-20g-module + stack-port 1/3/1 + stack-port 1/3/2 +! +! +banner motd $ ++----------------+ WARNING RUCKUS SWITCH +---------------+ +. +. Access to this system is limited to authorized +. users and for official purposes only +. +. Your activities will be logged and abuse +. will be reported! +. ++----------------+ WARNING RUCKUS SWITCH +---------------+ $ +! +! +vlan 1 name DEFAULT-VLAN by port + no spanning-tree +! +! +! +! +vlan 2000 name MGMT-VLAN by port + tagged ethe 1/2/1 to 1/2/2 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/1 ethe 1/1/3 ethe 1/1/5 ethe 1/1/7 ethe 1/1/9 ethe 1/1/11 to 1/1/12 + no spanning-tree +! +! +! +vlan 3000 name Guest-WiFi by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3001 by port + tagged ethe 1/1/1 ethe 1/1/3 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/2 + no spanning-tree +! +vlan 3002 by port + tagged ethe 1/1/1 to 1/1/3 ethe 1/1/5 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/4 + no spanning-tree +! +vlan 3003 by port + tagged ethe 1/1/1 to 1/1/5 ethe 1/1/7 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/6 + no spanning-tree +! +vlan 3004 by port + tagged ethe 1/1/1 to 1/1/7 ethe 1/1/9 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/8 + no spanning-tree +! +vlan 3005 by port + tagged ethe 1/1/1 to 1/1/9 ethe 1/1/11 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/10 + no spanning-tree +! +vlan 3006 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3007 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3008 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3009 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3010 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +! +! +vlan 3995 name OfficeNetwork by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +! +! +mstp scope all +mstp instance 0 vlan 1 +mstp instance 0 vlan 2000 +mstp instance 0 vlan 3000 to 3010 +mstp instance 0 vlan 3995 +mstp start +! +! +! +! +errdisable recovery cause all +aaa authentication web-server default local +aaa authentication login default local +enable telnet authentication +enable aaa console +hostname NTC-Test-MDF +ip dhcp snooping vlan 2000 +ip address 10.254.220.10 255.255.255.0 +ip default-gateway 10.254.220.1 +! +no telnet server +username admin password testpass +! +! +snmp-server community testcamm rw +! +! +! +! +manager registrar +! +manager port-list 987 +! +! +interface ethernet 1/1/1 + port-name Unit-111-AP + inline power power-limit 12000 +! +interface ethernet 1/1/2 + port-name Unit-111-Wired +! +interface ethernet 1/1/3 + port-name Unit-112-AP + inline power power-limit 12000 +! +interface ethernet 1/1/4 + port-name Unit-112-Wired +! +interface ethernet 1/1/5 + port-name Unit-113-AP + inline power power-limit 12000 +! +interface ethernet 1/1/6 + port-name Unit-113-Wired +! +interface ethernet 1/1/7 + port-name Unit-114-AP + inline power power-limit 12000 +! +interface ethernet 1/1/8 + port-name Unit-114-Wired +! +interface ethernet 1/1/9 + port-name Unit-115-AP + inline power power-limit 12000 +! +interface ethernet 1/1/10 + port-name Unit-115-Wired +! +interface ethernet 1/1/11 + port-name UPS +! +interface ethernet 1/1/12 + port-name Tech-Test-port +! +interface ethernet 1/3/1 + dhcp snooping trust +! +interface ethernet 1/3/2 + dhcp snooping trust +! +! +! +! +! +! +! +no lldp run +! +! +overlay-gateway gateway1 + type layer2-extension + ip interface Loopback 1 + map vlan 2 vni 3 + site site1 + ip address 67.67.67.1 + extend vlan add 2 +! +! +! +! +! +end \ No newline at end of file diff --git a/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_received.json b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_received.json new file mode 100644 index 00000000..519694bb --- /dev/null +++ b/tests/unit/mock/config/compliance/compliance/ruckus_fastiron/fastiron_basic_received.json @@ -0,0 +1,32 @@ +{ + "aaa": { + "actual": "aaa authentication web-server default local\naaa authentication login default local", + "cannot_parse": true, + "compliant": true, + "extra": "", + "intended": "aaa authentication web-server default local\naaa authentication login default local", + "missing": "", + "ordered_compliant": true, + "unordered_compliant": true + }, + "mstp": { + "actual": "mstp scope all\nmstp instance 0 vlan 1\nmstp instance 0 vlan 2000\nmstp instance 0 vlan 3000 to 3010\nmstp instance 0 vlan 3995\nmstp start", + "cannot_parse": true, + "compliant": true, + "extra": "", + "intended": "mstp scope all\nmstp instance 0 vlan 1\nmstp instance 0 vlan 2000\nmstp instance 0 vlan 3000 to 3010\nmstp instance 0 vlan 3995\nmstp start", + "missing": "", + "ordered_compliant": true, + "unordered_compliant": true + }, + "snmp": { + "actual": "snmp-server community testcomm rw", + "cannot_parse": true, + "compliant": false, + "extra": "snmp-server community testcomm rw", + "intended": "snmp-server community testcamm rw", + "missing": "snmp-server community testcamm rw", + "ordered_compliant": false, + "unordered_compliant": false + } +} diff --git a/tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_received.py b/tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_received.py new file mode 100644 index 00000000..f4f23307 --- /dev/null +++ b/tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_received.py @@ -0,0 +1,150 @@ +from netutils.config.parser import ConfigLine + +data = [ + ConfigLine(config_line="Current configuration:", parents=()), + ConfigLine(config_line="ver 08.0.95gT211", parents=()), + ConfigLine(config_line="stack unit 1", parents=()), + ConfigLine(config_line=" module 1 icx7150-c12-poe-port-management-module", parents=("stack unit 1",)), + ConfigLine(config_line=" module 2 icx7150-2-copper-port-2g-module", parents=("stack unit 1",)), + ConfigLine(config_line=" module 3 icx7150-2-sfp-plus-port-20g-module", parents=("stack unit 1",)), + ConfigLine(config_line=" stack-port 1/3/1", parents=("stack unit 1",)), + ConfigLine(config_line=" stack-port 1/3/2", parents=("stack unit 1",)), + ConfigLine(config_line="banner motd $", parents=()), + ConfigLine( + config_line="+----------------+ WARNING RUCKUS SWITCH +---------------+\n.\n. Access to this system is limited to authorized\n. users and for official purposes only\n.\n. Your activities will be logged and abuse\n. will be reported!\n.\n+----------------+ WARNING RUCKUS SWITCH +---------------+$", + parents=("banner motd $",), + ), + ConfigLine(config_line="vlan 1 name DEFAULT-VLAN by port", parents=()), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 1 name DEFAULT-VLAN by port",)), + ConfigLine(config_line="vlan 2000 name MGMT-VLAN by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/2/1 to 1/2/2 ethe 1/3/1 to 1/3/2", parents=("vlan 2000 name MGMT-VLAN by port",) + ), + ConfigLine( + config_line=" untagged ethe 1/1/1 ethe 1/1/3 ethe 1/1/5 ethe 1/1/7 ethe 1/1/9 ethe 1/1/11 to 1/1/12", + parents=("vlan 2000 name MGMT-VLAN by port",), + ), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 2000 name MGMT-VLAN by port",)), + ConfigLine(config_line="vlan 3000 name Guest-WiFi by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2", parents=("vlan 3000 name Guest-WiFi by port",) + ), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3000 name Guest-WiFi by port",)), + ConfigLine(config_line="vlan 3001 by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/1/1 ethe 1/1/3 to 1/1/12 ethe 1/3/1 to 1/3/2", parents=("vlan 3001 by port",) + ), + ConfigLine(config_line=" untagged ethe 1/1/2", parents=("vlan 3001 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3001 by port",)), + ConfigLine(config_line="vlan 3002 by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/1/1 to 1/1/3 ethe 1/1/5 to 1/1/12 ethe 1/3/1 to 1/3/2", + parents=("vlan 3002 by port",), + ), + ConfigLine(config_line=" untagged ethe 1/1/4", parents=("vlan 3002 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3002 by port",)), + ConfigLine(config_line="vlan 3003 by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/1/1 to 1/1/5 ethe 1/1/7 to 1/1/12 ethe 1/3/1 to 1/3/2", + parents=("vlan 3003 by port",), + ), + ConfigLine(config_line=" untagged ethe 1/1/6", parents=("vlan 3003 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3003 by port",)), + ConfigLine(config_line="vlan 3004 by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/1/1 to 1/1/7 ethe 1/1/9 to 1/1/12 ethe 1/3/1 to 1/3/2", + parents=("vlan 3004 by port",), + ), + ConfigLine(config_line=" untagged ethe 1/1/8", parents=("vlan 3004 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3004 by port",)), + ConfigLine(config_line="vlan 3005 by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/1/1 to 1/1/9 ethe 1/1/11 to 1/1/12 ethe 1/3/1 to 1/3/2", + parents=("vlan 3005 by port",), + ), + ConfigLine(config_line=" untagged ethe 1/1/10", parents=("vlan 3005 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3005 by port",)), + ConfigLine(config_line="vlan 3006 by port", parents=()), + ConfigLine(config_line=" tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2", parents=("vlan 3006 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3006 by port",)), + ConfigLine(config_line="vlan 3007 by port", parents=()), + ConfigLine(config_line=" tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2", parents=("vlan 3007 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3007 by port",)), + ConfigLine(config_line="vlan 3008 by port", parents=()), + ConfigLine(config_line=" tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2", parents=("vlan 3008 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3008 by port",)), + ConfigLine(config_line="vlan 3009 by port", parents=()), + ConfigLine(config_line=" tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2", parents=("vlan 3009 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3009 by port",)), + ConfigLine(config_line="vlan 3010 by port", parents=()), + ConfigLine(config_line=" tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2", parents=("vlan 3010 by port",)), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3010 by port",)), + ConfigLine(config_line="vlan 3995 name OfficeNetwork by port", parents=()), + ConfigLine( + config_line=" tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2", + parents=("vlan 3995 name OfficeNetwork by port",), + ), + ConfigLine(config_line=" no spanning-tree", parents=("vlan 3995 name OfficeNetwork by port",)), + ConfigLine(config_line="mstp scope all", parents=()), + ConfigLine(config_line="mstp instance 0 vlan 1", parents=()), + ConfigLine(config_line="mstp instance 0 vlan 2000", parents=()), + ConfigLine(config_line="mstp instance 0 vlan 3000 to 3010", parents=()), + ConfigLine(config_line="mstp instance 0 vlan 3995", parents=()), + ConfigLine(config_line="mstp start", parents=()), + ConfigLine(config_line="errdisable recovery cause all", parents=()), + ConfigLine(config_line="aaa authentication web-server default local", parents=()), + ConfigLine(config_line="aaa authentication login default local", parents=()), + ConfigLine(config_line="enable telnet authentication", parents=()), + ConfigLine(config_line="enable aaa console", parents=()), + ConfigLine(config_line="hostname NTC-Test-MDF", parents=()), + ConfigLine(config_line="ip dhcp snooping vlan 2000", parents=()), + ConfigLine(config_line="ip address 10.254.220.10 255.255.255.0", parents=()), + ConfigLine(config_line="ip default-gateway 10.254.220.1", parents=()), + ConfigLine(config_line="no telnet server", parents=()), + ConfigLine(config_line="username admin password testpass", parents=()), + ConfigLine(config_line="snmp-server community testcomm rw", parents=()), + ConfigLine(config_line="manager registrar", parents=()), + ConfigLine(config_line="manager port-list 987", parents=()), + ConfigLine(config_line="interface ethernet 1/1/1", parents=()), + ConfigLine(config_line=" port-name Unit-111-AP", parents=("interface ethernet 1/1/1",)), + ConfigLine(config_line=" inline power power-limit 12000", parents=("interface ethernet 1/1/1",)), + ConfigLine(config_line="interface ethernet 1/1/2", parents=()), + ConfigLine(config_line=" port-name Unit-111-Wired", parents=("interface ethernet 1/1/2",)), + ConfigLine(config_line="interface ethernet 1/1/3", parents=()), + ConfigLine(config_line=" port-name Unit-112-AP", parents=("interface ethernet 1/1/3",)), + ConfigLine(config_line=" inline power power-limit 12000", parents=("interface ethernet 1/1/3",)), + ConfigLine(config_line="interface ethernet 1/1/4", parents=()), + ConfigLine(config_line=" port-name Unit-112-Wired", parents=("interface ethernet 1/1/4",)), + ConfigLine(config_line="interface ethernet 1/1/5", parents=()), + ConfigLine(config_line=" port-name Unit-113-AP", parents=("interface ethernet 1/1/5",)), + ConfigLine(config_line=" inline power power-limit 12000", parents=("interface ethernet 1/1/5",)), + ConfigLine(config_line="interface ethernet 1/1/6", parents=()), + ConfigLine(config_line=" port-name Unit-113-Wired", parents=("interface ethernet 1/1/6",)), + ConfigLine(config_line="interface ethernet 1/1/7", parents=()), + ConfigLine(config_line=" port-name Unit-114-AP", parents=("interface ethernet 1/1/7",)), + ConfigLine(config_line=" inline power power-limit 12000", parents=("interface ethernet 1/1/7",)), + ConfigLine(config_line="interface ethernet 1/1/8", parents=()), + ConfigLine(config_line=" port-name Unit-114-Wired", parents=("interface ethernet 1/1/8",)), + ConfigLine(config_line="interface ethernet 1/1/9", parents=()), + ConfigLine(config_line=" port-name Unit-115-AP", parents=("interface ethernet 1/1/9",)), + ConfigLine(config_line=" inline power power-limit 12000", parents=("interface ethernet 1/1/9",)), + ConfigLine(config_line="interface ethernet 1/1/10", parents=()), + ConfigLine(config_line=" port-name Unit-115-Wired", parents=("interface ethernet 1/1/10",)), + ConfigLine(config_line="interface ethernet 1/1/11", parents=()), + ConfigLine(config_line=" port-name UPS", parents=("interface ethernet 1/1/11",)), + ConfigLine(config_line="interface ethernet 1/1/12", parents=()), + ConfigLine(config_line=" port-name Tech-Test-port", parents=("interface ethernet 1/1/12",)), + ConfigLine(config_line="interface ethernet 1/3/1", parents=()), + ConfigLine(config_line=" dhcp snooping trust", parents=("interface ethernet 1/3/1",)), + ConfigLine(config_line="interface ethernet 1/3/2", parents=()), + ConfigLine(config_line=" dhcp snooping trust", parents=("interface ethernet 1/3/2",)), + ConfigLine(config_line="no lldp run", parents=()), + ConfigLine(config_line="overlay-gateway gateway1", parents=()), + ConfigLine(config_line=" type layer2-extension", parents=("overlay-gateway gateway1",)), + ConfigLine(config_line=" ip interface Loopback 1", parents=("overlay-gateway gateway1",)), + ConfigLine(config_line=" map vlan 2 vni 3", parents=("overlay-gateway gateway1",)), + ConfigLine(config_line=" site site1", parents=("overlay-gateway gateway1",)), + ConfigLine(config_line=" ip address 67.67.67.1", parents=("overlay-gateway gateway1", " site site1")), + ConfigLine(config_line=" extend vlan add 2", parents=("overlay-gateway gateway1", " site site1")), + ConfigLine(config_line="end", parents=()), +] diff --git a/tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_sent.txt b/tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_sent.txt new file mode 100644 index 00000000..ead5ddc8 --- /dev/null +++ b/tests/unit/mock/config/parser/base/ruckus_fastiron/fastiron_full_sent.txt @@ -0,0 +1,197 @@ +Current configuration: +! +ver 08.0.95gT211 +! +stack unit 1 + module 1 icx7150-c12-poe-port-management-module + module 2 icx7150-2-copper-port-2g-module + module 3 icx7150-2-sfp-plus-port-20g-module + stack-port 1/3/1 + stack-port 1/3/2 +! +! +banner motd $ ++----------------+ WARNING RUCKUS SWITCH +---------------+ +. +. Access to this system is limited to authorized +. users and for official purposes only +. +. Your activities will be logged and abuse +. will be reported! +. ++----------------+ WARNING RUCKUS SWITCH +---------------+ $ +! +! +vlan 1 name DEFAULT-VLAN by port + no spanning-tree +! +! +! +! +vlan 2000 name MGMT-VLAN by port + tagged ethe 1/2/1 to 1/2/2 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/1 ethe 1/1/3 ethe 1/1/5 ethe 1/1/7 ethe 1/1/9 ethe 1/1/11 to 1/1/12 + no spanning-tree +! +! +! +vlan 3000 name Guest-WiFi by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3001 by port + tagged ethe 1/1/1 ethe 1/1/3 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/2 + no spanning-tree +! +vlan 3002 by port + tagged ethe 1/1/1 to 1/1/3 ethe 1/1/5 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/4 + no spanning-tree +! +vlan 3003 by port + tagged ethe 1/1/1 to 1/1/5 ethe 1/1/7 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/6 + no spanning-tree +! +vlan 3004 by port + tagged ethe 1/1/1 to 1/1/7 ethe 1/1/9 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/8 + no spanning-tree +! +vlan 3005 by port + tagged ethe 1/1/1 to 1/1/9 ethe 1/1/11 to 1/1/12 ethe 1/3/1 to 1/3/2 + untagged ethe 1/1/10 + no spanning-tree +! +vlan 3006 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3007 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3008 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3009 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +vlan 3010 by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +! +! +vlan 3995 name OfficeNetwork by port + tagged ethe 1/1/1 to 1/1/12 ethe 1/3/1 to 1/3/2 + no spanning-tree +! +! +! +mstp scope all +mstp instance 0 vlan 1 +mstp instance 0 vlan 2000 +mstp instance 0 vlan 3000 to 3010 +mstp instance 0 vlan 3995 +mstp start +! +! +! +! +errdisable recovery cause all +aaa authentication web-server default local +aaa authentication login default local +enable telnet authentication +enable aaa console +hostname NTC-Test-MDF +ip dhcp snooping vlan 2000 +ip address 10.254.220.10 255.255.255.0 +ip default-gateway 10.254.220.1 +! +no telnet server +username admin password testpass +! +! +snmp-server community testcomm rw +! +! +! +! +manager registrar +! +manager port-list 987 +! +! +interface ethernet 1/1/1 + port-name Unit-111-AP + inline power power-limit 12000 +! +interface ethernet 1/1/2 + port-name Unit-111-Wired +! +interface ethernet 1/1/3 + port-name Unit-112-AP + inline power power-limit 12000 +! +interface ethernet 1/1/4 + port-name Unit-112-Wired +! +interface ethernet 1/1/5 + port-name Unit-113-AP + inline power power-limit 12000 +! +interface ethernet 1/1/6 + port-name Unit-113-Wired +! +interface ethernet 1/1/7 + port-name Unit-114-AP + inline power power-limit 12000 +! +interface ethernet 1/1/8 + port-name Unit-114-Wired +! +interface ethernet 1/1/9 + port-name Unit-115-AP + inline power power-limit 12000 +! +interface ethernet 1/1/10 + port-name Unit-115-Wired +! +interface ethernet 1/1/11 + port-name UPS +! +interface ethernet 1/1/12 + port-name Tech-Test-port +! +interface ethernet 1/3/1 + dhcp snooping trust +! +interface ethernet 1/3/2 + dhcp snooping trust +! +! +! +! +! +! +! +no lldp run +! +! +overlay-gateway gateway1 + type layer2-extension + ip interface Loopback 1 + map vlan 2 vni 3 + site site1 + ip address 67.67.67.1 + extend vlan add 2 +! +! +! +! +! +end \ No newline at end of file From 38698230239abe260b609bde9959f84e5521bc77 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 14:02:43 -0500 Subject: [PATCH 08/11] Flat: latest data (2023-07-06T08:06:19.475Z) (#309) { "date": "2023-07-06T08:06:19.475Z", "files": [ { "name": "netutils/data_files/protocol_mappings.py", "deltaBytes": 67, "source": "https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.csv" } ] } Co-authored-by: flat-data --- netutils/data_files/protocol_mappings.py | 1 + 1 file changed, 1 insertion(+) diff --git a/netutils/data_files/protocol_mappings.py b/netutils/data_files/protocol_mappings.py index db2f701b..a78ccb75 100644 --- a/netutils/data_files/protocol_mappings.py +++ b/netutils/data_files/protocol_mappings.py @@ -2122,6 +2122,7 @@ "qip-login": {"port_number": 2366, "protocols": ["tcp", "udp"]}, "service-ctrl": {"port_number": 2367, "protocols": ["tcp", "udp"]}, "opentable": {"port_number": 2368, "protocols": ["tcp", "udp"]}, + "bif-p2p": {"port_number": 2369, "protocols": ["tcp", "udp"]}, "l3-hbmon": {"port_number": 2370, "protocols": ["tcp", "udp"]}, "rda-secondary": {"port_number": 2371, "protocols": ["tcp"]}, "lanmessenger": {"port_number": 2372, "protocols": ["tcp", "udp"]}, From 6a5eaa4c388cc9d124c85821368e1c59e072b85b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 14:03:32 -0500 Subject: [PATCH 09/11] Flat: latest data (2023-07-06T08:03:10.373Z) (#308) { "date": "2023-07-06T08:03:10.373Z", "files": [ { "name": "netutils/data_files/oui_mappings.py", "deltaBytes": 1429, "source": "https://standards-oui.ieee.org" } ] } Co-authored-by: flat-data --- netutils/data_files/oui_mappings.py | 39 ++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/netutils/data_files/oui_mappings.py b/netutils/data_files/oui_mappings.py index 258ab3cb..10abe756 100644 --- a/netutils/data_files/oui_mappings.py +++ b/netutils/data_files/oui_mappings.py @@ -2743,7 +2743,7 @@ "000ad4": "CoreBell Systems Inc.", "000ad5": "Brainchild Electronic Co., Ltd.", "000ad6": "BeamReach Networks", - "000ad7": "Origin ELECTRIC CO.,LTD.", + "000ad7": "Origin Co., Ltd.", "000ad8": "IPCserv Technology Corp.", "000ad9": "Sony Corporation", "000ada": "Vindicator Technologies", @@ -3659,7 +3659,7 @@ "000e6f": "IRIS Corporation Berhad", "000e70": "in2 Networks", "000e71": "Gemstar Technology Development Ltd.", - "000e72": "CTS electronics", + "000e72": "Arca Technologies S.r.l.", "000e73": "Tpack A/S", "000e74": "Solar Telecom. Tech", "000e75": "New York Air Brake Corp.", @@ -4684,7 +4684,7 @@ "001274": "NIT lab", "001275": "Sentilla Corporation", "001276": "CG Power Systems Ireland Limited", - "001277": "Korenix Technologies Co., Ltd.", + "001277": "Beijer Electronics Corp.", "001278": "International Bar Code", "001279": "Hewlett Packard", "00127a": "Sanyu Industry Co.,Ltd.", @@ -11658,6 +11658,7 @@ "009acd": "HUAWEI TECHNOLOGIES CO.,LTD", "009ad2": "Cisco Systems, Inc", "009c02": "Hewlett Packard", + "009cc0": "vivo Mobile Communication Co., Ltd.", "009d6b": "Murata Manufacturing Co., Ltd.", "009d8e": "CARDIAC RECORDERS, INC.", "009e1e": "Cisco Systems, Inc", @@ -12905,6 +12906,7 @@ "00f82c": "Cisco Systems, Inc", "00f860": "PT. Panggung Electric Citrabuana", "00f871": "Demant A/S", + "00f952": "HUAWEI TECHNOLOGIES CO.,LTD", "00fa21": "Samsung Electronics Co.,Ltd", "00fa3b": "CLOOS ELECTRONIC GMBH", "00fab6": "Kontakt Micro-Location Sp z o.o.", @@ -12950,6 +12952,7 @@ "040ec2": "ViewSonic Mobile China Limited", "04106b": "Xiaomi Communications Co Ltd", "041119": "IEEE Registration Authority", + "041471": "HUAWEI TECHNOLOGIES CO.,LTD", "041552": "Apple, Inc.", "0415d9": "Viwone", "0417b6": "Smart Innovation LLC", @@ -14060,6 +14063,7 @@ "1005b1": "ARRIS Group, Inc.", "1005ca": "Cisco Systems, Inc", "1005e1": "Nokia", + "10061c": "Espressif Inc.", "100645": "Sagemcom Broadband SAS", "1006ed": "Cisco Systems, Inc", "10071d": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -15413,6 +15417,7 @@ "2012d5": "Scientech Materials Corporation", "2013e0": "Samsung Electronics Co.,Ltd", "201582": "Apple, Inc.", + "2015de": "Samsung Electronics Co.,Ltd", "20163d": "Sdn. Bhd.", "201642": "Microsoft Corporation", "2016b9": "Intel Corporate", @@ -15479,6 +15484,7 @@ "204569": "ITEL MOBILE LIMITED", "2046a1": "VECOW Co., Ltd", "204747": "Dell Inc.", + "2047b5": "Sagemcom Broadband SAS", "2047da": "Xiaomi Communications Co Ltd", "2047ed": "SKY UK LIMITED", "204aaa": "Hanscan Spain S.A.", @@ -16078,6 +16084,7 @@ "283152": "HUAWEI TECHNOLOGIES CO.,LTD", "283166": "vivo Mobile Communication Co., Ltd.", "28317e": "Hongkong Nano IC Technologies Co., Ltd", + "2831f8": "HUAWEI TECHNOLOGIES CO.,LTD", "2832c5": "HUMAX Co., Ltd.", "283334": "Huawei Device Co., Ltd.", "283410": "Enigma Diagnostics Limited", @@ -16303,6 +16310,7 @@ "28e476": "Pi-Coral", "28e5b0": "HUAWEI TECHNOLOGIES CO.,LTD", "28e608": "Tokheim", + "28e6a9": "Samsung Electronics Co.,Ltd", "28e6e9": "SIS Sat Internet Services GmbH", "28e71d": "Arista Networks", "28e794": "Microtime Computer Inc.", @@ -16373,6 +16381,7 @@ "2c10c1": "Nintendo Co., Ltd.", "2c1165": "Silicon Laboratories", "2c15bf": "Samsung Electronics Co.,Ltd", + "2c15d9": "HUAWEI TECHNOLOGIES CO.,LTD", "2c15e1": "Co., Ltd.", "2c16bd": "IEEE Registration Authority", "2c1809": "Apple, Inc.", @@ -17571,6 +17580,7 @@ "38bf2f": "Espec Corp.", "38bf33": "NEC CASIO Mobile Communications", "38c096": "ALPSALPINE CO,.LTD", + "38c0ea": "Fortinet, Inc.", "38c2ba": "CCTV NEOTECH", "38c4e8": "NSS Sp. z o.o.", "38c70a": "WiFiSong", @@ -19084,6 +19094,7 @@ "4c5dcd": "Oy Finnish Electric Vehicle Technologies Ltd", "4c5e0c": "Routerboard.com", "4c5ed3": "Unisyue Technologies Co; LTD.", + "4c5f70": "Intel Corporate", "4c5fd2": "Alcatel-Lucent", "4c60d5": "airPointe of New Hampshire", "4c60de": "NETGEAR", @@ -19694,6 +19705,7 @@ "54211d": "Huawei Device Co., Ltd.", "542160": "Alula", "54219d": "Samsung Electronics Co.,Ltd", + "542259": "HUAWEI TECHNOLOGIES CO.,LTD", "5422f8": "zte corporation", "5425ea": "HUAWEI TECHNOLOGIES CO.,LTD", "542696": "Apple, Inc.", @@ -20664,6 +20676,7 @@ "60427f": "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD", "60447a": "Water-i.d. GmbH", "6044f5": "Easy Digital Ltd.", + "60452e": "Intel Corporate", "60455e": "Liptel s.r.o.", "6045bd": "Microsoft", "6045cb": "ASUSTek COMPUTER INC.", @@ -22345,6 +22358,7 @@ "744d28": "Routerboard.com", "744d6d": "HUAWEI TECHNOLOGIES CO.,LTD", "744d79": "Arrive Systems Inc.", + "744dbd": "Espressif Inc.", "74504e": "New H3C Technologies Co., Ltd", "7451ba": "Xiaomi Communications Co Ltd", "745327": "COMMSEN CO., LIMITED", @@ -23216,6 +23230,7 @@ "7cbb8a": "Nintendo Co., Ltd.", "7cbc84": "IEEE Registration Authority", "7cbd06": "AE REFUsol", + "7cbf77": "SPEEDTECH CORP.", "7cbf88": "Mobilicom LTD", "7cbfae": "Sdn. Bhd.", "7cbfb1": "ARRIS Group, Inc.", @@ -24088,6 +24103,7 @@ "885c47": "Alcatel Lucent", "885d90": "IEEE Registration Authority", "885dfb": "zte corporation", + "885ebd": "NCKOREA Co.,Ltd.", "885fe8": "IEEE Registration Authority", "88615a": "Siano Mobile Silicon Ltd.", "88625d": "BITNETWORKS CO.,LTD", @@ -24295,6 +24311,7 @@ "88f7bf": "vivo Mobile Communication Co., Ltd.", "88f7c7": "Vantiva USA LLC", "88f872": "HUAWEI TECHNOLOGIES CO.,LTD", + "88f916": "Qingdao Dayu Dance Digital Technology Co.,Ltd", "88fc5d": "Cisco Systems, Inc", "88fca6": "devolo AG", "88fd15": "LINEEYE CO., LTD", @@ -24591,6 +24608,7 @@ "8ce78c": "DK Networks", "8ce7b3": "Sonardyne International Ltd", "8ce9b4": "Zhejiang Dahua Technology Co., Ltd.", + "8ce9ee": "Intel Corporate", "8cea12": "Shenzhen MiaoMing Intelligent Technology Co.,Ltd", "8cea1b": "Edgecore Networks Corporation", "8cea48": "Samsung Electronics Co.,Ltd", @@ -26361,6 +26379,7 @@ "a43a69": "Vers Inc", "a43b0e": "Huawei Device Co., Ltd.", "a43bfa": "IEEE Registration Authority", + "a43cd7": "NTX Electronics YangZhou co.,LTD", "a43d78": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "a43e51": "ANOV FRANCE", "a43ea0": "iComm HK LIMITED", @@ -27367,6 +27386,7 @@ "b0495f": "OMRON HEALTHCARE Co., Ltd.", "b04a39": "Beijing Roborock Technology Co., Ltd.", "b04a6a": "Samsung Electronics Co.,Ltd", + "b04ab4": "Motorola Mobility LLC, a Lenovo Company", "b04b68": "NAKAYO Inc", "b04bbf": "PT HAN SUNG ELECTORONICS INDONESIA", "b04c05": "Fresenius Medical Care Deutschland GmbH", @@ -27385,6 +27405,7 @@ "b05ada": "Hewlett Packard", "b05b1f": "THERMO FISHER SCIENTIFIC S.P.A.", "b05b67": "HUAWEI TECHNOLOGIES CO.,LTD", + "b05b99": "Sagemcom Broadband SAS", "b05c16": "Fiberhome Telecommunication Technologies Co.,LTD", "b05cda": "HP Inc.", "b05ce5": "Nokia Corporation", @@ -28274,6 +28295,7 @@ "bc1695": "zte corporation", "bc16f5": "Cisco Systems, Inc", "bc17b8": "Intel Corporate", + "bc1896": "HUAWEI TECHNOLOGIES CO.,LTD", "bc1a67": "YF Technology Co., Ltd", "bc1ae4": "Huawei Device Co., Ltd.", "bc1c81": "Sichuan iLink Technology Co., Ltd.", @@ -29108,6 +29130,7 @@ "c4a72b": "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD", "c4a816": "eero inc.", "c4a81d": "D-Link International", + "c4aa99": "HUAWEI TECHNOLOGIES CO.,LTD", "c4aaa1": "SUMMIT DEVELOPMENT, spol.s r.o.", "c4aac4": "Zhejiang Dahua Technology Co., Ltd.", "c4abb2": "vivo Mobile Communication Co., Ltd.", @@ -29412,6 +29435,7 @@ "c89d6d": "ITEL MOBILE LIMITED", "c89e43": "NETGEAR", "c89e61": "Lyngsoe Systems LTd", + "c89f0c": "Motorola Mobility LLC, a Lenovo Company", "c89f1a": "HUAWEI TECHNOLOGIES CO.,LTD", "c89f1d": "SHENZHEN COMMUNICATION TECHNOLOGIES CO.,LTD", "c89f42": "VDII Innovation AB", @@ -30058,6 +30082,7 @@ "d09395": "IEEE Registration Authority", "d093f8": "Stonestreet One LLC", "d09466": "Dell Inc.", + "d094cf": "HUAWEI TECHNOLOGIES CO.,LTD", "d095c7": "Pantech Co., Ltd.", "d09686": "IEEE Registration Authority", "d096fb": "DZS Inc.", @@ -30416,6 +30441,7 @@ "d4a425": "SMAX Technology Co., Ltd.", "d4a499": "InView Technology Corporation", "d4a651": "Tuya Smart Inc.", + "d4a923": "HUAWEI TECHNOLOGIES CO.,LTD", "d4a928": "GreenWave Reality Inc", "d4aaff": "MICRO WORLD ", "d4ab82": "ARRIS Group, Inc.", @@ -30927,6 +30953,7 @@ "dc2bca": "Zera GmbH", "dc2c26": "Iton Technology Limited", "dc2c6e": "Routerboard.com", + "dc2d04": "vivo Mobile Communication Co., Ltd.", "dc2d3c": "Huawei Device Co., Ltd.", "dc2dcb": "Beijing Unis HengYue Technology Co., Ltd.", "dc2dde": "Ledworks SRL", @@ -31203,6 +31230,7 @@ "e0036b": "Samsung Electronics Co.,Ltd", "e00370": "ShenZhen Continental Wireless Technology Co., Ltd.", "e005c5": "TP-LINK TECHNOLOGIES CO.,LTD.", + "e00630": "HUAWEI TECHNOLOGIES CO.,LTD", "e006e6": "Hon Hai Precision Ind. Co.,Ltd.", "e0071b": "Hewlett Packard Enterprise", "e007c2": "FUJIAN STAR-NET COMMUNICATION CO.,LTD", @@ -31773,6 +31801,7 @@ "e4c63d": "Apple, Inc.", "e4c6e6": "Mophie, LLC", "e4c722": "Cisco Systems, Inc", + "e4c767": "Intel Corporate", "e4c801": "BLU Products Inc", "e4c806": "Ceiec Electric Technology Inc.", "e4c90b": "Radwin", @@ -31880,6 +31909,7 @@ "e81da8": "Ruckus Wireless", "e81e92": "Huawei Device Co., Ltd.", "e820e2": "HUMAX Co., Ltd.", + "e822b8": "Shenzhen Skyworth Digital Technology CO., Ltd", "e82404": "Quectel Wireless Solutions Co.,Ltd.", "e824a6": "Juniper Networks", "e82689": "Aruba, a Hewlett Packard Enterprise Company", @@ -32084,6 +32114,7 @@ "e8c57a": "Ufispace Co., LTD.", "e8c74f": "Liteon Technology Corporation", "e8c7cf": "Wistron Neweb Corporation", + "e8c829": "Intel Corporate", "e8cac8": "Hui Zhou Gaoshengda Technology Co.,LTD", "e8cba1": "Nokia Corporation", "e8cbed": "Corp.", @@ -33205,6 +33236,7 @@ "f83880": "Apple, Inc.", "f83b1d": "Vantiva USA LLC", "f83b7e": "Huawei Device Co., Ltd.", + "f83c44": "SHENZHEN TRANSCHAN TECHNOLOGY LIMITED", "f83c80": "MITSUMI ELECTRIC CO.,LTD.", "f83cbf": "BOTATO ELECTRONICS SDN BHD", "f83d4e": "Softlink Automation System Co., Ltd", @@ -33481,6 +33513,7 @@ "f8fb2f": "Santur Corporation", "f8fce1": "Amazon Technologies Inc.", "f8fe5c": "Reciprocal Labs Corp", + "f8fe5e": "Intel Corporate", "f8fea8": "Technico Japan Corporation", "f8ff0b": "Electronic Technology Inc.", "f8ff5f": "Shenzhen Communication Technology Co.,Ltd", From c5582ef0cf0ffe09b24c2ec5867f6fa4e1f8d594 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 22 Jul 2023 11:52:55 -0400 Subject: [PATCH 10/11] Flat: latest data (2023-07-20T08:03:00.240Z) (#314) { "date": "2023-07-20T08:03:00.240Z", "files": [ { "name": "netutils/data_files/oui_mappings.py", "deltaBytes": 3766, "source": "https://standards-oui.ieee.org" } ] } Co-authored-by: flat-data --- netutils/data_files/oui_mappings.py | 209 +++++++++++++++++++--------- 1 file changed, 143 insertions(+), 66 deletions(-) diff --git a/netutils/data_files/oui_mappings.py b/netutils/data_files/oui_mappings.py index 10abe756..3b24a80c 100644 --- a/netutils/data_files/oui_mappings.py +++ b/netutils/data_files/oui_mappings.py @@ -306,7 +306,7 @@ "00012d": "Komodo Technology", "00012e": "PC Partner Ltd.", "00012f": "Twinhead International Corp", - "000130": "Extreme Networks, Inc.", + "000130": "Extreme Networks Headquarters", "000131": "Bosch Security Systems, Inc.", "000132": "Dranetz - BMI", "000133": "KYOWA Electronic Instruments C", @@ -1176,7 +1176,7 @@ "000493": "Tsinghua Unisplendour Co., Ltd.", "000494": "Breezecom, Ltd.", "000495": "Tejas Networks India Limited", - "000496": "Extreme Networks, Inc.", + "000496": "Extreme Networks Headquarters", "000497": "MacroSystem Digital Video AG", "000498": "Mahi Networks", "000499": "Chino Corporation", @@ -1191,7 +1191,7 @@ "0004a2": "L.S.I. Japan Co., Ltd.", "0004a3": "Microchip Technology Inc.", "0004a4": "NetEnabled, Inc.", - "0004a5": "Barco Projection Systems NV", + "0004a5": "Barco NV", "0004a6": "SAF Tehnika Ltd.", "0004a7": "FabiaTech Corporation", "0004a8": "Broadmax Technologies, Inc.", @@ -4034,7 +4034,7 @@ "000fe7": "Lutron Electronics Co., Inc.", "000fe8": "Lobos, Inc.", "000fe9": "GW TECHNOLOGIES CO.,LTD.", - "000fea": "Giga-Byte Technology Co.,LTD.", + "000fea": "GIGA-BYTE TECHNOLOGY CO.,LTD.", "000feb": "Cylon Controls", "000fec": "ARKUS Inc.", "000fed": "Anam Electronics Co., Ltd", @@ -6468,7 +6468,7 @@ "001974": "16063", "001975": "Beijing Huisen networks technology Inc", "001976": "Xipher Technologies, LLC", - "001977": "Extreme Networks, Inc.", + "001977": "Extreme Networks Headquarters", "001978": "Datum Systems, Inc.", "001979": "Nokia Danmark A/S", "00197a": "MAZeT GmbH", @@ -10717,7 +10717,7 @@ "0050c8": "Addonics Technologies, Inc.", "0050c9": "MASPRO DENKOH CORP.", "0050ca": "DZS Inc.", - "0050cb": "JETTER", + "0050cb": "Bucher Automation AG", "0050cc": "Seagate Cloud Systems Inc", "0050cd": "DIGIANSWER A/S", "0050ce": "LG INTERNATIONAL CORP.", @@ -12585,7 +12585,7 @@ "00db45": "THAMWAY CO.,LTD.", "00db70": "Apple, Inc.", "00dbdf": "Intel Corporate", - "00dcb2": "Extreme Networks, Inc.", + "00dcb2": "Extreme Networks Headquarters", "00dd00": "UNGERMANN-BASS INC.", "00dd01": "UNGERMANN-BASS INC.", "00dd02": "UNGERMANN-BASS INC.", @@ -12649,7 +12649,7 @@ "00e028": "APTIX CORPORATION", "00e029": "STANDARD MICROSYSTEMS CORP.", "00e02a": "TANDBERG TELEVISION AS", - "00e02b": "Extreme Networks, Inc.", + "00e02b": "Extreme Networks Headquarters", "00e02c": "AST COMPUTER", "00e02d": "InnoMediaLogic, Inc.", "00e02e": "SPC ELECTRONICS CORPORATION", @@ -12872,7 +12872,7 @@ "00e421": "Sony Interactive Entertainment Inc.", "00e5e4": "Sichuan Tianyi Comheart Telecom Co.,LTD", "00e5f1": "BUFFALO.INC", - "00e60e": "Extreme Networks, Inc.", + "00e60e": "Extreme Networks Headquarters", "00e63a": "Ruckus Wireless", "00e666": "ARIMA Communications Corp.", "00e6d3": "NIXDORF COMPUTER CORP.", @@ -13706,7 +13706,7 @@ "08e84f": "HUAWEI TECHNOLOGIES CO.,LTD", "08e9f6": "AMPAK Technology,Inc.", "08ea40": "SHENZHEN BILIAN ELECTRONIC CO.,LTD", - "08ea44": "Extreme Networks, Inc.", + "08ea44": "Extreme Networks Headquarters", "08eb29": "Jiangsu Huitong Group Co.,Ltd.", "08eb74": "HUMAX Co., Ltd.", "08ebed": "World Elite Technology Co.,LTD", @@ -13907,6 +13907,7 @@ "0c8c69": "Shenzhen elink smart Co., ltd", "0c8c8f": "Kamo Technology Limited", "0c8cdc": "Suunto Oy", + "0c8d7a": "RADiflow", "0c8d98": "TOP EIGHT IND CORP", "0c8dca": "Samsung Electronics Co.,Ltd", "0c8ddb": "Cisco Meraki", @@ -13929,6 +13930,7 @@ "0c9a3c": "Intel Corporate", "0c9a42": "FN-LINK TECHNOLOGY LIMITED", "0c9b13": "Shanghai Magic Mobile Telecommunication Co.Ltd.", + "0c9b78": "Extreme Networks Headquarters", "0c9d56": "Consort Controls Ltd", "0c9d92": "ASUSTek COMPUTER INC.", "0c9e91": "Sankosha Corporation", @@ -14035,6 +14037,7 @@ "0ceee6": "Hon Hai Precision Ind. Co.,Ltd.", "0cef7c": "AnaCom Inc", "0cefaf": "IEEE Registration Authority", + "0ceff6": "Silicon Laboratories", "0cf019": "Malgn Technology Co., Ltd.", "0cf0b4": "Globalsat International Technology Ltd", "0cf346": "Xiaomi Communications Co Ltd", @@ -14370,11 +14373,13 @@ "10e6ae": "Source Technologies, LLC", "10e77a": "STMicrolectronics International NV", "10e7c6": "Hewlett Packard", + "10e83a": "FIBERX DISTRIBUIDORA DE PRODUTOS DE TELECOMUNICACAO LTDA", "10e840": "CO., LTD.", "10e878": "Nokia", "10e8a7": "Wistron Neweb Corporation", "10e8ee": "PhaseSpace", "10e953": "Huawei Device Co., Ltd.", + "10e992": "INGRAM MICRO SERVICES", "10ea59": "Cisco SPVTG", "10ec81": "Samsung Electronics Co.,Ltd", "10eed9": "Canoga Perkins Corporation", @@ -14396,6 +14401,7 @@ "10fc54": "Shany Electronic Co., Ltd. ", "10fcb6": "mirusystems CO.,LTD", "10feed": "TP-LINK TECHNOLOGIES CO.,LTD.", + "10ffe0": "GIGA-BYTE TECHNOLOGY CO.,LTD.", "1100aa": "Private", "111111": "Private", "140020": "Co.,Ltd. ", @@ -14816,6 +14822,7 @@ "1848be": "Amazon Technologies Inc.", "1848ca": "Murata Manufacturing Co., Ltd.", "1848d8": "Fastback Networks", + "1849f8": "Extreme Networks Headquarters", "184a53": "Apple, Inc.", "184a6f": "Alcatel-Lucent Shanghai Bell Co., Ltd", "184b0d": "Ruckus Wireless", @@ -14830,6 +14837,7 @@ "184f5d": "JRC Mobility Inc.", "18502a": "SOARNEX", "185207": "Sichuan Tianyi Comheart Telecom Co.,LTD", + "18523d": "Xiamen Jiwu Technology CO.,Ltd", "185253": "Pixord Corporation", "185282": "Fiberhome Telecommunication Technologies Co.,LTD", "185345": "Nokia", @@ -15301,6 +15309,7 @@ "1caa07": "Cisco Systems, Inc", "1cab01": "Innovolt", "1cab34": "New H3C Technologies Co., Ltd", + "1cab48": "TECNO MOBILE LIMITED", "1caba7": "Apple, Inc.", "1cabc0": "Hitron Technologies. Inc", "1cadd1": "Bosung Electronics Co., Ltd.", @@ -15402,6 +15411,7 @@ "200a0d": "IEEE Registration Authority", "200a5e": "Xiangshan Giant Eagle Technology Developing Co., Ltd.", "200b16": "Texas Instruments", + "200b74": "AzureWave Technology Inc.", "200bc5": "Cisco Systems, Inc", "200bc7": "HUAWEI TECHNOLOGIES CO.,LTD", "200bcf": "Nintendo Co.,Ltd", @@ -15535,7 +15545,7 @@ "206a94": "Hitron Technologies. Inc", "206aff": "Atlas Elektronik UK Limited", "206be7": "TP-LINK TECHNOLOGIES CO.,LTD.", - "206c8a": "Extreme Networks, Inc.", + "206c8a": "Extreme Networks Headquarters", "206d31": "FIREWALLA INC", "206e9c": "Samsung Electronics Co.,Ltd", "206fec": "Braemac CA LLC", @@ -15593,7 +15603,7 @@ "209be6": "Guangzhou Shiyuan Electronic Technology Company Limited", "209cb4": "Aruba, a Hewlett Packard Enterprise Company", "209e79": "Universal Electronics, Inc.", - "209ef7": "Extreme Networks, Inc.", + "209ef7": "Extreme Networks Headquarters", "20a171": "Amazon Technologies Inc.", "20a2e4": "Apple, Inc.", "20a2e7": "Lee-Dickens Ltd", @@ -15699,6 +15709,7 @@ "20f543": "Hui Zhou Gaoshengda Technology Co.,LTD", "20f597": "Maasiv, LLC", "20f77c": "vivo Mobile Communication Co., Ltd.", + "20f83b": "Nabu Casa, Inc.", "20f85e": "Delta Electronics", "20fabb": "Cambridge Executive Limited", "20fadb": "Co.,Ltd.", @@ -15758,7 +15769,7 @@ "241eeb": "Apple, Inc.", "241f2c": "Calsys, Inc.", "241fa0": "HUAWEI TECHNOLOGIES CO.,LTD", - "241fbd": "Extreme Networks, Inc.", + "241fbd": "Extreme Networks Headquarters", "2420c7": "Sagemcom Broadband SAS", "242124": "Nokia", "2421ab": "Sony Corporation", @@ -16153,6 +16164,7 @@ "286ed4": "HUAWEI TECHNOLOGIES CO.,LTD", "286f40": "Tonly Technology Co. Ltd ", "286f7f": "Cisco Systems, Inc", + "286fb9": "Nokia Shanghai Bell Co., Ltd.", "28704e": "Ubiquiti Inc", "287184": "Spire Payments", "2872c5": "Smartmatic Corp", @@ -16181,6 +16193,7 @@ "28840e": "silicon valley immigration service ", "2884fa": "SHARP Corporation", "28852d": "Touch Networks", + "2885bb": "Zen Exim Pvt. Ltd.", "2887ba": "TP-Link Corporation Limited", "288915": "CashGuard Sverige AB", "288a1c": "Juniper Networks", @@ -16591,6 +16604,7 @@ "2cab00": "HUAWEI TECHNOLOGIES CO.,LTD", "2cab25": "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "2cab33": "Texas Instruments", + "2cab46": "Ruckus Wireless", "2caba4": "Cisco SPVTG", "2cabeb": "Cisco Systems, Inc", "2cac44": "CONEXTOP", @@ -16782,6 +16796,7 @@ "304f00": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "304f75": "DZS Inc.", "305075": "GN Audio A/S", + "3050ce": "Xiaomi Communications Co Ltd", "3050fd": "Co.,Ltd", "3051f8": "BYK-Gardner GmbH", "30525a": "NST Co., LTD", @@ -17159,7 +17174,7 @@ "3484e4": "Texas Instruments", "348511": "Shenzhen Skyworth Digital Technology CO., Ltd", "348518": "Espressif Inc.", - "348584": "Extreme Networks, Inc.", + "348584": "Extreme Networks Headquarters", "34862a": "Heinz Lackmann GmbH & Co KG", "34865d": "Espressif Inc.", "34873d": "Quectel Wireless Solutions Co.,Ltd.", @@ -17550,6 +17565,7 @@ "38ab16": "NPO RTT LLC", "38ab41": "Texas Instruments", "38ac3d": "Nephos Inc", + "38ad2b": "Hitron Technologies. Inc", "38ad8e": "New H3C Technologies Co., Ltd", "38adbe": "New H3C Technologies Co., Ltd", "38af29": "Zhejiang Dahua Technology Co., Ltd.", @@ -17610,6 +17626,7 @@ "38e08e": "Mitsubishi Electric Corporation", "38e1aa": "zte corporation", "38e26e": "ShenZhen Sweet Rain Electronics Co.,Ltd.", + "38e2ca": "Katun Corporation", "38e2dd": "zte corporation", "38e39f": "Motorola Mobility LLC, a Lenovo Company", "38e3c5": "Taicang T&W Electronics", @@ -17690,6 +17707,7 @@ "3c0e23": "Cisco Systems, Inc", "3c0fc1": "KBC Networks", "3c1040": "daesung network", + "3c1060": "Fiberhome Telecommunication Technologies Co.,LTD", "3c106f": "ALBAHITH TECHNOLOGIES ", "3c10e6": "PHAZR Inc.", "3c11b2": "Fraunhofer FIT", @@ -18031,7 +18049,7 @@ "4016fa": "EKM Metering", "4017e2": "INTAI TECHNOLOGY CORP.", "4017f6": "TKH SECURITY,S.L.U.", - "4018b1": "Extreme Networks, Inc.", + "4018b1": "Extreme Networks Headquarters", "4018d7": "Smartronix, Inc.", "401920": "Movon Corporation", "401a58": "Wistron Neweb Corporation", @@ -18157,8 +18175,9 @@ "408432": "Microchip Technology Inc.", "408493": "Clavister AB", "40862e": "JDM MOBILE INTERNET SOLUTION CO., LTD.", + "4086cb": "D-Link Corporation", "408805": "Motorola Mobility LLC, a Lenovo Company", - "40882f": "Extreme Networks, Inc.", + "40882f": "Extreme Networks Headquarters", "4088e0": "Beijing Ereneben Information Technology Limited Shenzhen Branch", "4089a8": "WiredIQ, LLC", "408a9a": "TITENG CO., Ltd.", @@ -18229,6 +18248,7 @@ "40b7fc": "Phyplus Microelectronics Limited", "40b837": "Sony Corporation", "40b89a": "Hon Hai Precision Ind. Co.,Ltd.", + "40b8c2": "OSMOZIS", "40b93c": "Hewlett Packard Enterprise", "40ba61": "ARIMA Communications Corp.", "40bc60": "Apple, Inc.", @@ -18281,7 +18301,7 @@ "40e171": "Jiangsu Huitong Group Co.,Ltd.", "40e1e4": "Nokia Solutions and Networks GmbH & Co. KG", "40e230": "AzureWave Technology Inc.", - "40e317": "Extreme Networks, Inc.", + "40e317": "Extreme Networks Headquarters", "40e3d6": "Aruba, a Hewlett Packard Enterprise Company", "40e64b": "Apple, Inc.", "40e730": "DEY Storage Systems, Inc.", @@ -18389,6 +18409,7 @@ "44356f": "Neterix Ltd", "443583": "Apple, Inc.", "4435d3": "GD Midea Air-Conditioning Equipment Co.,Ltd.", + "44365d": "Shenzhen HippStor Technology Co., Ltd", "443708": "MRV Comunications", "443719": "2 Save Energy Ltd", "44376f": "Young Electric Sign Co", @@ -18600,6 +18621,7 @@ "44d832": "AzureWave Technology Inc.", "44d878": "Hui Zhou Gaoshengda Technology Co.,LTD", "44d884": "Apple, Inc.", + "44d980": "EVERYBOT INC.", "44d9e7": "Ubiquiti Inc", "44da30": "Apple, Inc.", "44db60": "Nanjing Baihezhengliu Technology Co., Ltd", @@ -18647,6 +18669,7 @@ "44fda3": "Everysight LTD.", "44fe3b": "Arcadyan Corporation", "44ffba": "zte corporation", + "480020": "Aruba, a Hewlett Packard Enterprise Company", "480031": "HUAWEI TECHNOLOGIES CO.,LTD", "480033": "Vantiva USA LLC", "48007d": "DTS ELEKTRONIK SAN. TIC. LTD. STI.", @@ -18725,6 +18748,7 @@ "483e5e": "TECHNOLOGIES CORPORATION", "483fda": "Espressif Inc.", "483fe9": "HUAWEI TECHNOLOGIES CO.,LTD", + "48417b": "Nokia Solutions and Networks GmbH & Co. KG", "48435a": "HUAWEI TECHNOLOGIES CO.,LTD", "48437c": "Apple, Inc.", "4843dd": "Amazon Technologies Inc.", @@ -18847,7 +18871,7 @@ "4898ca": "Sichuan AI-Link Technology Co., Ltd.", "489a42": "Technomate Ltd", "489a5b": "Shenzhen iComm Semiconductor CO.,LTD", - "489bd5": "Extreme Networks, Inc.", + "489bd5": "Extreme Networks Headquarters", "489be0": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", "489be2": "SCI Innovations Ltd", "489d18": "Flashbay Limited", @@ -19028,7 +19052,7 @@ "4c2219": "YUANFUDAO HK LIMTED", "4c2258": "cozybit, Inc.", "4c22f3": "Arcadyan Corporation", - "4c231a": "Extreme Networks, Inc.", + "4c231a": "Extreme Networks Headquarters", "4c2498": "Texas Instruments", "4c24ce": "Sichuan AI-Link Technology Co., Ltd.", "4c2578": "Nokia Corporation", @@ -19102,6 +19126,7 @@ "4c6255": "SANMINA-SCI SYSTEM DE MEXICO S.A. DE C.V.", "4c627b": "SmartCow AI Technologies Taiwan Ltd.", "4c62cd": "Nokia", + "4c62df": "Hangzhou Hikvision Digital Technology Co.,Ltd.", "4c6371": "Xiaomi Communications Co Ltd", "4c63ad": "Huawei Device Co., Ltd.", "4c63eb": "Ltd", @@ -19251,6 +19276,7 @@ "4cd2fb": "UNIONMAN TECHNOLOGY CO.,LTD", "4cd3af": "HMD Global Oy", "4cd577": "CHONGQING FUGUI ELECTRONICS CO.,LTD.", + "4cd587": "Aruba, a Hewlett Packard Enterprise Company", "4cd629": "HUAWEI TECHNOLOGIES CO.,LTD", "4cd637": "Qsono Electronics Co., Ltd", "4cd717": "Dell Inc.", @@ -19262,6 +19288,7 @@ "4cdd7d": "LHP Telematics LLC", "4cdf3d": "TEAM ENGINEERS ADVANCE TECHNOLOGIES INDIA PVT LTD", "4ce0db": "Xiaomi Communications Co Ltd", + "4ce136": "Private", "4ce173": "IEEE Registration Authority", "4ce175": "Cisco Systems, Inc", "4ce176": "Cisco Systems, Inc", @@ -19688,6 +19715,7 @@ "5412cb": "HUAWEI TECHNOLOGIES CO.,LTD", "541310": "HUAWEI TECHNOLOGIES CO.,LTD", "541379": "Hon Hai Precision Ind. Co.,Ltd.", + "5413ca": "ITEL MOBILE LIMITED", "541473": "Wingtech Group (HongKong)Limited", "5414a7": "Nanjing Qinheng Microelectronics Co., Ltd.", "5414f3": "Intel Corporate", @@ -19889,6 +19917,7 @@ "54be53": "zte corporation", "54bef7": "PEGATRON CORPORATION", "54bf64": "Dell Inc.", + "54c078": "Infinix mobility limited", "54c250": "Iskratel d.o.o.", "54c33e": "Ciena Corporation", "54c415": "Hangzhou Hikvision Digital Technology Co.,Ltd.", @@ -20063,8 +20092,8 @@ "5856c2": "HUAWEI TECHNOLOGIES CO.,LTD", "5856e8": "ARRIS Group, Inc.", "58570d": "Danfoss Solar Inverters", - "5858cd": "Extreme Networks, Inc.", - "5859c2": "Extreme Networks, Inc.", + "5858cd": "Extreme Networks Headquarters", + "5859c2": "Extreme Networks Headquarters", "585b69": "TVT CO., LTD", "585ff6": "zte corporation", "58605f": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -20277,7 +20306,7 @@ "5c0c0e": "Guizhou Huaxintong Semiconductor Technology Co Ltd", "5c0cbb": "CELIZION Inc.", "5c0ce6": "Nintendo Co.,Ltd", - "5c0e8b": "Extreme Networks, Inc.", + "5c0e8b": "Extreme Networks Headquarters", "5c0ffb": "Amino Communications Ltd", "5c101e": "zte corporation", "5c10c5": "Samsung Electronics Co.,Ltd", @@ -20320,6 +20349,7 @@ "5c32c5": "Teracom Ltd.", "5c3327": "Spazio Italia srl", "5c335c": "Swissphone Telecom AG", + "5c337b": "Google, Inc.", "5c338e": "Alpha Networks Inc.", "5c3400": "Hisense Electric Co.,Ltd", "5c345b": "Hangzhou Hikvision Digital Technology Co.,Ltd.", @@ -21040,6 +21070,7 @@ "64557f": "NSFOCUS Information Technology Co., Ltd.", "6455b1": "ARRIS Group, Inc.", "645601": "TP-LINK TECHNOLOGIES CO.,LTD.", + "645725": "Hui Zhou Gaoshengda Technology Co.,LTD", "6457e5": "Beijing Royaltech Co.,Ltd", "6458ad": "China Mobile IOT Company Limited", "6459f8": "Vodafone Omnitel B.V.", @@ -21579,7 +21610,7 @@ "6c0273": "Shenzhen Jin Yun Video Equipment Co., Ltd.", "6c02e0": "HP Inc.", "6c0309": "Cisco Systems, Inc", - "6c0370": "Extreme Networks, Inc.", + "6c0370": "Extreme Networks Headquarters", "6c03b5": "Cisco Systems, Inc", "6c0460": "RBH Access Technologies Inc.", "6c047a": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -21748,6 +21779,7 @@ "6c8336": "Samsung Electronics Co.,Ltd", "6c8366": "Nanjing SAC Power Grid Automation Co., Ltd.", "6c8686": "Technonia", + "6c8720": "New H3C Technologies Co., Ltd", "6c8814": "Intel Corporate", "6c8aec": "Nantong Coship Electronics Co., Ltd.", "6c8b2f": "zte corporation", @@ -22393,7 +22425,7 @@ "74650c": "Apple, Inc.", "7465d1": "Atlinks", "746630": "T:mi Ytti", - "7467f7": "Extreme Networks, Inc.", + "7467f7": "Extreme Networks Headquarters", "74694a": "Sichuan Tianyi Comheart Telecom Co.,LTD", "746a3a": "Aperi Corporation", "746a89": "Rezolt Corporation", @@ -22714,6 +22746,7 @@ "7845b3": "Huawei Device Co., Ltd.", "7845c4": "Dell Inc.", "78465c": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", + "78465f": "Fiberhome Telecommunication Technologies Co.,LTD", "78467d": "SKAIChips", "7846c4": "DAEHAP HYPER-TECH", "7846d4": "Samsung Electronics Co.,Ltd", @@ -22787,7 +22820,7 @@ "787a6f": "Juice Technology AG", "787b8a": "Apple, Inc.", "787d48": "ITEL MOBILE LIMITED", - "787d53": "Extreme Networks, Inc.", + "787d53": "Extreme Networks Headquarters", "787df3": "Sterlite Technologies Limited", "787e61": "Apple, Inc.", "787f62": "GiK mbH", @@ -22824,7 +22857,7 @@ "7895eb": "ITEL MOBILE LIMITED", "789682": "zte corporation", "789684": "ARRIS Group, Inc.", - "7896a3": "Extreme Networks, Inc.", + "7896a3": "Extreme Networks Headquarters", "7897c3": "DINGXIN INFORMATION TECHNOLOGY CO.,LTD", "7898e8": "D-Link International", "7898fd": "Q9 Networks Inc.", @@ -22966,6 +22999,7 @@ "78f1c6": "Cisco Systems, Inc", "78f235": "Sichuan AI-Link Technology Co., Ltd.", "78f238": "Samsung Electronics Co.,Ltd", + "78f276": "Inc.", "78f29e": "PEGATRON CORPORATION", "78f557": "HUAWEI TECHNOLOGIES CO.,LTD", "78f5e5": "BEGA Gantenbrink-Leuchten KG", @@ -23181,7 +23215,7 @@ "7c942a": "HUAWEI TECHNOLOGIES CO.,LTD", "7c949f": "Shenzhen iComm Semiconductor CO.,LTD", "7c94b2": "Philips Healthcare PCCI", - "7c95b1": "Extreme Networks, Inc.", + "7c95b1": "Extreme Networks Headquarters", "7c95f3": "Cisco Systems, Inc", "7c96d2": "Fihonest communication co.,Ltd", "7c9763": "Openmatics s.r.o.", @@ -23217,6 +23251,7 @@ "7cb232": "Hui Zhou Gaoshengda Technology Co.,LTD", "7cb25c": "Acacia Communications", "7cb27d": "Intel Corporate", + "7cb30a": "zte corporation", "7cb37b": "Qingdao Intelligent&Precise Electronics Co.,Ltd.", "7cb542": "ACES Technology", "7cb566": "Intel Corporate", @@ -23531,7 +23566,7 @@ "80929f": "Apple, Inc.", "809393": "Xapt GmbH", "80946c": "TOKYO RADAR CORPORATION", - "809562": "Extreme Networks, Inc.", + "809562": "Extreme Networks Headquarters", "809621": "Lenovo", "8096b1": "ARRIS Group, Inc.", "8096ca": "Hon Hai Precision Ind. Co.,Ltd.", @@ -23574,6 +23609,7 @@ "80b95c": "ELFTECH Co., Ltd.", "80b97a": "eero inc.", "80b989": "Apple, Inc.", + "80ba16": "Micas Networks Inc.", "80baac": "TeleAdapt Ltd", "80bae6": "Neets", "80bbeb": "Satmap Systems Ltd", @@ -23726,6 +23762,7 @@ "843095": "Hon Hai Precision IND.CO.,LTD", "8430ce": "Shenzhen Jaguar Microsystems Co., Ltd", "8430e5": "SkyHawke Technologies, LLC", + "8431a8": "Wuhan Funshion Online Technologies Co.,Ltd", "84326f": "GUANGZHOU AVA ELECTRONICS TECHNOLOGY CO.,LTD ", "8432ea": "ANHUI WANZTEN P&T CO., LTD", "843497": "Hewlett Packard", @@ -23826,6 +23863,7 @@ "8485e6": "Guangdong Asano Technology CO.,Ltd.", "848687": "weiyuantechnology", "8486f3": "Greenvity Communications", + "8487ff": "Shenzhen Skyworth Digital Technology CO., Ltd", "8488e1": "Apple, Inc.", "8489ad": "Apple, Inc.", "8489ec": "IEEE Registration Authority", @@ -24014,6 +24052,7 @@ "8817a3": "Sdn. Bhd.", "8818ae": "Tamron Co., Ltd", "881908": "Apple, Inc.", + "881a14": "Silicon Laboratories", "881b99": "SHENZHEN XIN FEI JIA ELECTRONIC CO. LTD.", "881c95": "ITEL MOBILE LIMITED", "881dfc": "Cisco Systems, Inc", @@ -24099,7 +24138,7 @@ "885a06": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "885a85": "Wistron Neweb Corporation", "885a92": "Cisco Systems, Inc", - "885bdd": "Extreme Networks, Inc.", + "885bdd": "Extreme Networks Headquarters", "885c47": "Alcatel Lucent", "885d90": "IEEE Registration Authority", "885dfb": "zte corporation", @@ -24145,7 +24184,7 @@ "88797e": "Motorola Mobility LLC, a Lenovo Company", "887a31": "Velankani Electronics Pvt. Ltd.", "887b2c": "zte corporation", - "887e25": "Extreme Networks, Inc.", + "887e25": "Extreme Networks Headquarters", "887f03": "Comper Technology Investment Limited", "888187": "Umeox Innovations Co.,Ltd", "8881b9": "Huawei Device Co., Ltd.", @@ -24396,7 +24435,7 @@ "8c477f": "NambooSolution", "8c47be": "Dell Inc.", "8c4962": "Roku, Inc", - "8c497a": "Extreme Networks, Inc.", + "8c497a": "Extreme Networks Headquarters", "8c49b6": "vivo Mobile Communication Co., Ltd.", "8c4aee": "GIGA TMS INC", "8c4b14": "Espressif Inc.", @@ -24486,6 +24525,7 @@ "8c8126": "ARCOM", "8c8172": "Sichuan Tianyi Comheart Telecom Co.,LTD", "8c82a8": "Insigma Technology Co.,Ltd", + "8c8394": "Arcadyan Corporation", "8c839d": "SHENZHEN XINYUPENG ELECTRONIC TECHNOLOGY CO., LTD", "8c83df": "Nokia", "8c83e1": "Samsung Electronics Co.,Ltd", @@ -24807,6 +24847,7 @@ "90735a": "Motorola Mobility LLC, a Lenovo Company", "90749d": "IRay Technology Co., Ltd.", "9075bc": "Nokia Shanghai Bell Co., Ltd.", + "9075de": "Zebra Technologies Inc.", "90769f": "SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.", "9077ee": "Cisco Systems, Inc", "907841": "Intel Corporate", @@ -24873,6 +24914,7 @@ "909f33": "EFM Networks", "909f43": "Accutron Instruments Inc.", "90a137": "Beijing Splendidtel Communication Technology Co,. Ltd", + "90a1ba": "PNetworks Electronics Information ", "90a210": "United Telecoms Ltd", "90a25b": "Apple, Inc.", "90a2da": "GHEO SA", @@ -24905,7 +24947,7 @@ "90b622": "Samsung Electronics Co.,Ltd", "90b67a": "Shenzhen Skyworth Digital Technology CO., Ltd", "90b686": "Murata Manufacturing Co., Ltd.", - "90b832": "Extreme Networks, Inc.", + "90b832": "Extreme Networks Headquarters", "90b8d0": "Joyent, Inc.", "90b8e0": "SHENZHEN YANRAY TECHNOLOGY CO.,LTD", "90b931": "Apple, Inc.", @@ -25080,6 +25122,7 @@ "94434d": "Ciena Corporation", "944444": "LG Innotek", "944452": "Belkin International Inc.", + "944560": "Google, Inc.", "944696": "BaudTec Corporation", "944788": "HUAWEI TECHNOLOGIES CO.,LTD", "9447b0": "BEIJING ESWIN COMPUTING TECHNOLOGY CO., LTD", @@ -25172,7 +25215,7 @@ "949901": "Shenzhen YITOA Digital Appliance CO.,LTD", "949990": "VTC Telecommunications", "949aa9": "Microsoft Corporation", - "949b2c": "Extreme Networks, Inc.", + "949b2c": "Extreme Networks Headquarters", "949bfd": "Trans New Technology, Inc.", "949c55": "Alta Data Technologies", "949d57": "Panasonic do Brasil Limitada", @@ -25752,7 +25795,7 @@ "9c5c8d": "FIREMAX INDÚSTRIA E COMÉRCIO DE PRODUTOS ELETRÔNICOS LTDA", "9c5c8e": "ASUSTek COMPUTER INC.", "9c5cf9": "Sony Corporation", - "9c5d12": "Extreme Networks, Inc.", + "9c5d12": "Extreme Networks Headquarters", "9c5d95": "VTC Electronics Corp.", "9c5e73": "Calibre UK LTD", "9c5f5a": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", @@ -26445,6 +26488,7 @@ "a46e79": "DFT System Co.Ltd", "a470d6": "Motorola Mobility LLC, a Lenovo Company", "a47174": "HUAWEI TECHNOLOGIES CO.,LTD", + "a473ab": "Extreme Networks Headquarters", "a475b9": "Samsung Electronics Co.,Ltd", "a47733": "Google, Inc.", "a47758": "Ningbo Freewings Technologies Co.,Ltd", @@ -26563,7 +26607,7 @@ "a4c6f0": "Apple, Inc.", "a4c74b": "Huawei Device Co., Ltd.", "a4c7de": "Co.,Ltd.", - "a4c7f6": "Extreme Networks, Inc.", + "a4c7f6": "Extreme Networks Headquarters", "a4c939": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "a4caa0": "HUAWEI TECHNOLOGIES CO.,LTD", "a4cc32": "Inficomm Co., Ltd", @@ -26618,7 +26662,7 @@ "a4e975": "Apple, Inc.", "a4e991": "SISTEMAS AUDIOVISUALES ITELSIS S.L.", "a4e9a3": "Honest Technology Co., Ltd", - "a4ea8e": "Extreme Networks, Inc.", + "a4ea8e": "Extreme Networks Headquarters", "a4ebd3": "Samsung Electronics Co.,Ltd", "a4ed43": "IEEE Registration Authority", "a4ed4e": "ARRIS Group, Inc.", @@ -26709,6 +26753,7 @@ "a84041": "Dragino Technology Co., Limited", "a8407d": "GD Midea Air-Conditioning Equipment Co.,Ltd.", "a84122": "Information Technology Co.,Ltd.", + "a842a1": "TP-Link Corporation Limited", "a842a7": "Jiangsu Huitong Group Co.,Ltd.", "a842e3": "Espressif Inc.", "a84397": "Innogrit Corporation", @@ -26881,7 +26926,7 @@ "a8c252": "Huawei Device Co., Ltd.", "a8c266": "HUMAX Co., Ltd.", "a8c56f": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", - "a8c647": "Extreme Networks, Inc.", + "a8c647": "Extreme Networks Headquarters", "a8c83a": "HUAWEI TECHNOLOGIES CO.,LTD", "a8c87f": "Roqos, Inc.", "a8c98a": "New H3C Technologies Co., Ltd", @@ -27050,7 +27095,7 @@ "ac4bc8": "Juniper Networks", "ac4ca5": "Vantiva USA LLC", "ac4d16": "Texas Instruments", - "ac4dd9": "Extreme Networks, Inc.", + "ac4dd9": "Extreme Networks Headquarters", "ac4e2e": "Shenzhen JingHanDa Electronics Co.Ltd", "ac4e65": "Fiberhome Telecommunication Technologies Co.,LTD", "ac4e91": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -27281,7 +27326,7 @@ "aceb51": "Universal Electronics, Inc.", "acec80": "ARRIS Group, Inc.", "acec85": "eero inc.", - "aced32": "Extreme Networks, Inc.", + "aced32": "Extreme Networks Headquarters", "aced5c": "Intel Corporate", "acee3b": "6harmonics Inc", "acee64": "Shenzhen SuperElectron Technology Co.,Ltd.", @@ -27314,8 +27359,10 @@ "b009d3": "Avizia", "b009da": "Ring Solutions", "b00ad5": "zte corporation", + "b00c9d": "Quectel Wireless Solutions Co.,Ltd.", "b00cd1": "Hewlett Packard", "b01041": "Hon Hai Precision Ind. Co.,Ltd.", + "b0104b": "Fiberhome Telecommunication Technologies Co.,LTD", "b010a0": "Texas Instruments", "b01203": "Dynamics Hong Kong Limited", "b01266": "Futaba-Kikaku", @@ -27341,7 +27388,7 @@ "b025aa": "Private", "b02628": "Broadcom Limited", "b02680": "Cisco Systems, Inc", - "b027cf": "Extreme Networks, Inc.", + "b027cf": "Extreme Networks Headquarters", "b0285b": "JUHUA Technology Inc.", "b02a1f": "Wingtech Group (HongKong)Limited", "b02a43": "Google, Inc.", @@ -27627,6 +27674,7 @@ "b40421": "zte corporation", "b4055d": "Inspur Electronic Information Industry Co.,Ltd.", "b40566": "SP Best Corporation Co., LTD.", + "b405a1": "Xiaomi Communications Co Ltd", "b407f9": "SAMSUNG ELECTRO MECHANICS CO., LTD.", "b40832": "TC Communications", "b40931": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -27673,7 +27721,7 @@ "b42a39": "ORBIT MERRET, spol. s r. o.", "b42c92": "Zhejiang Weirong Electronic Co., Ltd", "b42cbe": "Direct Payment Solutions Limited", - "b42d56": "Extreme Networks, Inc.", + "b42d56": "Extreme Networks Headquarters", "b42e99": "GIGA-BYTE TECHNOLOGY CO.,LTD.", "b42ef8": "Eline Technology co.Ltd", "b43052": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -27722,6 +27770,7 @@ "b452a9": "Texas Instruments", "b45459": "Information Technology Co., Ltd.", "b45570": "Borea", + "b4565d": "Corp.", "b456b9": "Teraspek Technologies Co.,Ltd", "b456e3": "Apple, Inc.", "b456fa": "IOPSYS Software Solutions", @@ -27860,7 +27909,7 @@ "b4c4fc": "Xiaomi Communications Co Ltd", "b4c62e": "Molex CMS", "b4c6f8": "Axilspot Communication", - "b4c799": "Extreme Networks, Inc.", + "b4c799": "Extreme Networks Headquarters", "b4c810": "Umpi srl", "b4c9b9": "Sichuan AI-Link Technology Co., Ltd.", "b4cb57": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", @@ -27879,6 +27928,7 @@ "b4d286": "Telechips, Inc.", "b4d5bd": "Intel Corporate", "b4d64e": "Caldero Limited", + "b4d7db": "New H3C Technologies Co., Ltd", "b4d8a9": "BetterBots", "b4d8de": "iota Computing, Inc.", "b4db91": "CELESTICA INC.", @@ -28019,10 +28069,11 @@ "b847c6": "SanJet Technology Corp.", "b848aa": "EM Microelectronic", "b8496d": "Apple, Inc.", + "b84c87": "IEEE Registration Authority", "b84d43": "HUNAN FN-LINK TECHNOLOGY LIMITED", "b84dee": "Hisense broadband multimedia technology Co.,Ltd", "b84fd5": "Microsoft Corporation", - "b85001": "Extreme Networks, Inc.", + "b85001": "Extreme Networks Headquarters", "b850d8": "Beijing Xiaomi Mobile Software Co., Ltd", "b851a9": "Nokia", "b853ac": "Apple, Inc.", @@ -28078,7 +28129,7 @@ "b87bd4": "Google, Inc.", "b87c6f": "Management Ltd.", "b87cd0": "Huawei Device Co., Ltd.", - "b87cf2": "Extreme Networks, Inc.", + "b87cf2": "Extreme Networks Headquarters", "b87ee5": "Intelbras", "b88035": "Shenzhen Qihu Intelligent Technology Company Limited", "b8804f": "Texas Instruments", @@ -28574,7 +28625,7 @@ "bcf1f2": "Cisco Systems, Inc", "bcf292": "PLANTRONICS, INC.", "bcf2af": "devolo AG", - "bcf310": "Extreme Networks, Inc.", + "bcf310": "Extreme Networks Headquarters", "bcf45f": "zte corporation", "bcf499": "Rockwell Automation", "bcf4d4": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", @@ -28697,6 +28748,7 @@ "c057bc": "Avaya Inc", "c058a7": "Pico Systems Co., Ltd.", "c05b44": "Beijing Xiaomi Mobile Software Co., Ltd", + "c05d39": "Jiangsu Huitong Group Co.,Ltd.", "c05e6f": "V. Stonkaus firma Kodinis Raktas", "c05e79": "SHENZHEN HUAXUN ARK TECHNOLOGIES CO.,LTD", "c06118": "TP-LINK TECHNOLOGIES CO.,LTD.", @@ -28923,7 +28975,7 @@ "c41234": "Apple, Inc.", "c412ec": "HUAWEI TECHNOLOGIES CO.,LTD", "c412f5": "D-Link International", - "c413e2": "Extreme Networks, Inc.", + "c413e2": "Extreme Networks Headquarters", "c41411": "Apple, Inc.", "c4143c": "Cisco Systems, Inc", "c414a2": "Cisco Meraki", @@ -29344,7 +29396,7 @@ "c850e9": "Raisecom Technology CO., LTD", "c85142": "Samsung Electronics Co.,Ltd", "c85195": "HUAWEI TECHNOLOGIES CO.,LTD", - "c851fb": "Extreme Networks, Inc.", + "c851fb": "Extreme Networks Headquarters", "c85261": "ARRIS Group, Inc.", "c853e1": "Beijing Bytedance Network Technology Co., Ltd", "c8544b": "Zyxel Communications Corporation", @@ -29358,6 +29410,7 @@ "c85b76": "Electronics Technology co., ltd", "c85ba0": "Shenzhen Qihu Intelligent Technology Company Limited", "c85ccc": "Beijing Xiaomi Mobile Software Co., Ltd", + "c85ce2": "IEEE Registration Authority", "c85d38": "HUMAX Co., Ltd.", "c85ea9": "Intel Corporate", "c86000": "ASUSTek COMPUTER INC.", @@ -29366,8 +29419,8 @@ "c863fc": "ARRIS Group, Inc.", "c864c7": "zte corporation", "c8662c": "Beijing Haitai Fangyuan High Technology Co,.Ltd.", - "c8665d": "Extreme Networks, Inc.", - "c8675e": "Extreme Networks, Inc.", + "c8665d": "Extreme Networks Headquarters", + "c8675e": "Extreme Networks Headquarters", "c868de": "Huawei Device Co., Ltd.", "c869cd": "Apple, Inc.", "c86bbc": "IEEE Registration Authority", @@ -29479,7 +29532,7 @@ "c8bd4d": "Samsung Electronics Co.,Ltd", "c8bd69": "Samsung Electronics Co.,Ltd", "c8be19": "D-Link International", - "c8be35": "Extreme Networks, Inc.", + "c8be35": "Extreme Networks Headquarters", "c8bf4c": "Beijing Xiaomi Mobile Software Co., Ltd", "c8bffe": "Huawei Device Co., Ltd.", "c8c126": "ZPM Industria e Comercio Ltda", @@ -29595,6 +29648,7 @@ "cc0df2": "Motorola Mobility LLC, a Lenovo Company", "cc10a3": "Beijing Nan Bao Technology Co., Ltd.", "cc14a6": "Yichun MyEnergy Domain, Inc", + "cc14bc": "Edifier International", "cc1531": "Intel Corporate", "cc167e": "Cisco Systems, Inc", "cc187b": "Manzanita Systems, Inc.", @@ -29830,6 +29884,7 @@ "cccc77": "Zaram Technology. Inc.", "cccc81": "HUAWEI TECHNOLOGIES CO.,LTD", "cccccc": "Silicon Laboratories", + "ccccea": "PHOENIX CONTACT Electronics GmbH", "cccd64": "SM-Electronic GmbH", "ccce1e": "AVM Audiovisuelles Marketing und Computersysteme GmbH", "ccce40": "Janteq Corp", @@ -29838,6 +29893,7 @@ "ccd281": "Apple, Inc.", "ccd29b": "Shenzhen Bopengfa Elec&Technology CO.,Ltd", "ccd31e": "IEEE Registration Authority", + "ccd342": "Cisco Systems, Inc", "ccd39d": "IEEE Registration Authority", "ccd3c1": "Vestel Elektronik San ve Tic. A.S.", "ccd3e2": "Jiangsu Yinhe Electronics Co.,Ltd.", @@ -29974,6 +30030,7 @@ "d040ef": "Murata Manufacturing Co., Ltd.", "d041c9": "Fiberhome Telecommunication Technologies Co.,LTD", "d0431e": "Dell Inc.", + "d04433": "Clourney Semiconductor", "d046dc": "Southwest Research Institute", "d047c1": "Elma Electronic AG", "d0484f": "Nokia Solutions and Networks GmbH & Co. KG", @@ -30075,6 +30132,7 @@ "d08cb5": "Texas Instruments", "d08cff": "UPWIS AB", "d08e79": "Dell Inc.", + "d09168": "SHENZHEN CHUANGWEI-RGB ELECTRONICS CO.,LTD", "d09200": "FiRa Consortium", "d0929e": "Microsoft Corporation", "d092fa": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -30163,6 +30221,7 @@ "d0dad7": "Apple, Inc.", "d0db32": "Nokia Corporation", "d0dbb7": "Casa Systems", + "d0dc2c": "Cisco Systems, Inc", "d0dd49": "Juniper Networks", "d0dd7c": "zte corporation", "d0df9a": "Liteon Technology Corporation", @@ -30437,6 +30496,7 @@ "d4a02a": "Cisco Systems, Inc", "d4a148": "HUAWEI TECHNOLOGIES CO.,LTD", "d4a33d": "Apple, Inc.", + "d4a38b": "ELE(GROUP)CO.,LTD", "d4a3eb": "Shenzhen iComm Semiconductor CO.,LTD", "d4a425": "SMAX Technology Co., Ltd.", "d4a499": "InView Technology Corporation", @@ -30644,6 +30704,7 @@ "d842ac": "Shanghai Feixun Communication Co.,Ltd.", "d842e2": "Canary Connect, Inc.", "d843ae": "Micro-Star INTL CO., LTD.", + "d843ea": "SY Electronics Ltd", "d843ed": "Suzuken", "d8445c": "DEV Tecnologia Ind Com Man Eq LTDA", "d8452b": "Sdn. Bhd.", @@ -30668,7 +30729,7 @@ "d853bc": "Lenovo Information Products (Shenzhen)Co.,Ltd", "d8543a": "Texas Instruments", "d85482": "Oxit, LLC", - "d854a2": "Extreme Networks, Inc.", + "d854a2": "Extreme Networks Headquarters", "d85575": "Samsung Electronics Co.,Ltd", "d855a3": "zte corporation", "d857ef": "Samsung Electronics Co.,Ltd", @@ -30731,7 +30792,7 @@ "d880dc": "Huawei Device Co., Ltd.", "d881ce": "AHN INC.", "d88332": "TaiXin Semiconductor Co., Ltd", - "d88466": "Extreme Networks, Inc.", + "d88466": "Extreme Networks Headquarters", "d8860b": "IEEE Registration Authority", "d887d5": "Leadcore Technology CO.,LTD", "d88863": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -30940,7 +31001,7 @@ "dc215c": "Intel Corporate", "dc21b9": "Sentec Co.Ltd", "dc21e2": "HUAWEI TECHNOLOGIES CO.,LTD", - "dc233b": "Extreme Networks, Inc.", + "dc233b": "Extreme Networks Headquarters", "dc2727": "Huawei Device Co., Ltd.", "dc2834": "HAKKO Corporation", "dc2919": "Technology Ltd, Co.", @@ -31123,7 +31184,7 @@ "dcb72e": "Xiaomi Communications Co Ltd", "dcb7ac": "Aruba, a Hewlett Packard Enterprise Company", "dcb7fc": "Ltd", - "dcb808": "Extreme Networks, Inc.", + "dcb808": "Extreme Networks Headquarters", "dcbb96": "Full Solution Telecom", "dcbd7a": "Guangzhou Shiyuan Electronic Technology Company Limited", "dcbdcc": "Quectel Wireless Solutions Co.,Ltd.", @@ -31173,7 +31234,7 @@ "dcdb27": "Huawei Device Co., Ltd.", "dcdb70": "Tonfunk Systementwicklung und Service GmbH", "dcdc07": "TRP Systems BV", - "dcdcc3": "Extreme Networks, Inc.", + "dcdcc3": "Extreme Networks Headquarters", "dcdce2": "Samsung Electronics Co.,Ltd", "dcdd24": "Energica Motor Company SpA", "dcde4f": "Gionee Communication Equipment Co Ltd ", @@ -31187,7 +31248,7 @@ "dce533": "IEEE Registration Authority", "dce55b": "Google, Inc.", "dce578": "Experimental Factory of Scientific Engineering and Special Design Department", - "dce650": "Extreme Networks, Inc.", + "dce650": "Extreme Networks Headquarters", "dce71c": "AUG Elektronik GmbH", "dce838": "Limited", "dce994": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", @@ -31199,6 +31260,7 @@ "dced83": "Beijing Xiaomi Mobile Software Co., Ltd", "dced84": "Haverford Systems Inc", "dcee06": "HUAWEI TECHNOLOGIES CO.,LTD", + "dcee14": "ADT Technology", "dcef09": "NETGEAR", "dcef80": "HUAWEI TECHNOLOGIES CO.,LTD", "dcefca": "Murata Manufacturing Co., Ltd.", @@ -31256,7 +31318,7 @@ "e01995": "Nutanix", "e019d8": "BH TECHNOLOGIES", "e01aea": "Allied Telesis, Inc.", - "e01c41": "Extreme Networks, Inc.", + "e01c41": "Extreme Networks Headquarters", "e01cee": "Bravo Tech, Inc.", "e01cfc": "D-Link International", "e01d38": "Beijing HuaqinWorld Technology Co.,Ltd", @@ -31329,6 +31391,7 @@ "e04b41": "Hangzhou Beilian Low Carbon Technology Co., Ltd.", "e04b45": "Hi-P Electronics Pte Ltd", "e04ba6": "HUAWEI TECHNOLOGIES CO.,LTD", + "e04c05": "EverCharge", "e04f43": "Universal Global Scientific Industrial Co., Ltd.", "e04fbd": "Sichuan Tianyi Comheart Telecom Co.,LTD", "e0508b": "Zhejiang Dahua Technology Co., Ltd.", @@ -31424,7 +31487,7 @@ "e09db8": "PLANEX COMMUNICATIONS INC.", "e09dfa": "Wanan Hongsheng Electronic Co.Ltd", "e09f2a": "Iton Technology Corp. ", - "e0a129": "Extreme Networks, Inc.", + "e0a129": "Extreme Networks Headquarters", "e0a198": "NOJA Power Switchgear Pty Ltd", "e0a1ce": "zte corporation", "e0a1d7": "SFR", @@ -31640,7 +31703,7 @@ "e441e6": "Ottec Technology GmbH", "e442a6": "Intel Corporate", "e4434b": "Dell Inc.", - "e444e5": "Extreme Networks, Inc.", + "e444e5": "Extreme Networks Headquarters", "e44519": "Beijing Xiaomi Electronics Co.,Ltd", "e446b0": "Fujitsu Client Computing Limited", "e446bd": "C&C TECHNIC TAIWAN CO., LTD.", @@ -31820,7 +31883,7 @@ "e4d71d": "Oraya Therapeutics", "e4dadf": "Taicang T&W Electronics", "e4db6d": "Beijing Xiaomi Electronics Co., Ltd.", - "e4dbae": "Extreme Networks, Inc.", + "e4dbae": "Extreme Networks Headquarters", "e4dc43": "Huawei Device Co., Ltd.", "e4dc5f": "Cofractal, Inc.", "e4dccc": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -31882,6 +31945,7 @@ "e8088b": "HUAWEI TECHNOLOGIES CO.,LTD", "e80945": "Sdn. Bhd.", "e80959": "Guoguang Electric Co.,Ltd", + "e80ab9": "Cisco Systems, Inc", "e80aec": "Jiangsu Hengtong Optic-Electric Co., LTD", "e80b13": "Akib Systems Taiwan, INC", "e80c38": "DAEYOUNG INFORMATION SYSTEM CO., LTD", @@ -31898,6 +31962,7 @@ "e8150e": "Nokia Corporation", "e8162b": "IDEO Security Co., Ltd.", "e81656": "Hangzhou BroadLink Technology Co.,Ltd", + "e81711": "Shenzhen Vipstech Co., Ltd", "e817fc": "Fujitsu Cloud Technologies Limited", "e81863": "IEEE Registration Authority", "e81a58": "TECHNOLOGIC SYSTEMS", @@ -31945,11 +32010,13 @@ "e84368": "zte corporation", "e843b6": "QNAP Systems, Inc.", "e8447e": "Bitdefender SRL", + "e8458b": "MitraStar Technology Corp.", "e84727": "Quectel Wireless Solutions Co.,Ltd.", "e8473a": "Hon Hai Precision Industry Co.,LTD", "e8481f": "Advanced Automotive Antennas", "e848b8": "TP-Link Corporation Limited", "e84943": "YUGE Information technology Co. Ltd", + "e84a54": "Beijing Xiaomi Mobile Software Co., Ltd", "e84c4a": "Amazon Technologies Inc.", "e84c56": "INTERCEPT SERVICES LIMITED", "e84d74": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -32131,6 +32198,7 @@ "e8d11b": "ASKEY COMPUTER CORP", "e8d2ff": "Sagemcom Broadband SAS", "e8d322": "Cisco Systems, Inc", + "e8d3eb": "eero inc.", "e8d483": "ULTIMATE Europe Transportation Equipment GmbH", "e8d4e0": "Beijing BenyWave Technology Co., Ltd.", "e8d52b": "Google, Inc.", @@ -32471,6 +32539,7 @@ "ece6a2": "Fiberhome Telecommunication Technologies Co.,LTD", "ece744": "Omntec mfg. inc", "ece7a7": "Intel Corporate", + "ece7c2": "China Mobile Group Device Co.,Ltd.", "ece90b": "SISTEMA SOLUCOES ELETRONICAS LTDA - EASYTECH", "ece915": "STI Ltd", "ece9f8": "Guang Zhou TRI-SUN Electronics Technology Co., Ltd", @@ -32522,6 +32591,7 @@ "f0182b": "LG Chem", "f01898": "Apple, Inc.", "f01aa0": "Aruba, a Hewlett Packard Enterprise Company", + "f01b24": "zte corporation", "f01b6c": "vivo Mobile Communication Co., Ltd.", "f01c2d": "Juniper Networks", "f01d2d": "Cisco Systems, Inc", @@ -32553,6 +32623,7 @@ "f02a23": "Creative Next Design", "f02a2b": "IEEE Registration Authority", "f02a61": "Waldo Networks, Inc.", + "f02b7c": "Extreme Networks Headquarters", "f02e51": "Casa Systems", "f02f4b": "Apple, Inc.", "f02f74": "ASUSTek COMPUTER INC.", @@ -32612,7 +32683,7 @@ "f0625a": "Realme Chongqing Mobile Telecommunications Corp.,Ltd.", "f06281": "ProCurve Networking by HP", "f063f9": "HUAWEI TECHNOLOGIES CO.,LTD", - "f06426": "Extreme Networks, Inc.", + "f06426": "Extreme Networks Headquarters", "f065ae": "Samsung Electronics Co.,Ltd", "f065c2": "Co.,Ltd.", "f065dd": "Primax Electronics Ltd.", @@ -32681,7 +32752,7 @@ "f09bb8": "HUAWEI TECHNOLOGIES CO.,LTD", "f09cbb": "RaonThink Inc.", "f09cd7": "Guangzhou Blue Cheetah Intelligent Technology Co., Ltd.", - "f09ce9": "Extreme Networks, Inc.", + "f09ce9": "Extreme Networks Headquarters", "f09e4a": "Intel Corporate", "f09e63": "Cisco Systems, Inc", "f09fc2": "Ubiquiti Inc", @@ -32691,11 +32762,13 @@ "f0a35a": "Apple, Inc.", "f0a3b2": "Hui Zhou Gaoshengda Technology Co.,LTD", "f0a654": "CLOUD NETWORK TECHNOLOGY SINGAPORE PTE. LTD.", + "f0a731": "TP-Link Corporation Limited", "f0a764": "GST Co., Ltd.", "f0a7b2": "FUTABA CORPORATION", "f0a951": "HUAWEI TECHNOLOGIES CO.,LTD", "f0a968": "Antailiye Technology Co.,Ltd", "f0aa0b": "Arra Networks/ Spectramesh", + "f0ab1f": "zte corporation", "f0ab54": "MITSUMI ELECTRIC CO.,LTD.", "f0aca4": "HBC-radiomatic", "f0acd7": "IEEE Registration Authority", @@ -32895,6 +32968,7 @@ "f43a7b": "zte corporation", "f43bd8": "Intel Corporate", "f43c3b": "HUNAN FN-LINK TECHNOLOGY LIMITED", + "f43c96": "Ericsson AB", "f43d80": "FAG Industrial Services GmbH", "f43e61": "SHENZHEN GONGJIN ELECTRONICS CO.,LT", "f43e66": "Limited", @@ -32927,6 +33001,7 @@ "f450eb": "Telechips Inc", "f45214": "Mellanox Technologies, Inc.", "f45420": "TELLESCOM INDUSTRIA E COMERCIO EM TELECOMUNICACAO ", + "f45424": "Extreme Networks Headquarters", "f45433": "Rockwell Automation", "f45595": "HENGBAO Corporation LTD.", "f4559c": "HUAWEI TECHNOLOGIES CO.,LTD", @@ -32965,7 +33040,7 @@ "f46d3f": "Intel Corporate", "f46de2": "zte corporation", "f46e24": "NEC Personal Computers, Ltd.", - "f46e95": "Extreme Networks, Inc.", + "f46e95": "Extreme Networks Headquarters", "f46f4e": "Echowell", "f46fa4": "Physik Instrumente GmbH & Co. KG", "f46fed": "Fiberhome Telecommunication Technologies Co.,LTD", @@ -33080,7 +33155,7 @@ "f4ce23": "Intel Corporate", "f4ce36": "Nordic Semiconductor ASA", "f4ce46": "Hewlett Packard", - "f4ce48": "Extreme Networks, Inc.", + "f4ce48": "Extreme Networks Headquarters", "f4cfa2": "Espressif Inc.", "f4cfe2": "Cisco Systems, Inc", "f4d032": "Yunnan Ideal Information&Technology.,Ltd", @@ -33119,7 +33194,7 @@ "f4e975": "New H3C Technologies Co., Ltd", "f4e9d4": "QLogic Corporation", "f4ea67": "Cisco Systems, Inc", - "f4eab5": "Extreme Networks, Inc.", + "f4eab5": "Extreme Networks Headquarters", "f4eb38": "Sagemcom Broadband SAS", "f4eb9f": "Ellu Company 2019 SL", "f4ec38": "TP-LINK TECHNOLOGIES CO.,LTD.", @@ -33441,6 +33516,7 @@ "f8c3cc": "Apple, Inc.", "f8c4ae": "GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD", "f8c4f3": "Shanghai Infinity Wireless Technologies Co.,Ltd.", + "f8c650": "Cisco Systems, Inc", "f8c678": "Carefusion", "f8c96c": "Fiberhome Telecommunication Technologies Co.,LTD", "f8ca59": "NetComm Wireless", @@ -33533,7 +33609,7 @@ "fc0877": "Prentke Romich Company", "fc09d8": "ACTEON Group", "fc09f6": "GUANGDONG TONZE ELECTRIC CO.,LTD", - "fc0a81": "Extreme Networks, Inc.", + "fc0a81": "Extreme Networks Headquarters", "fc0c45": "Shenzhen SuperElectron Technology Co.,Ltd.", "fc0f4b": "Texas Instruments", "fc0fe6": "Sony Interactive Entertainment Inc.", @@ -33745,6 +33821,7 @@ "fca89b": "Texas Instruments", "fca9b0": "INC.", "fca9dc": "Sdn. Bhd.", + "fca9f5": "Xiaomi Communications Co Ltd", "fcaa14": "GIGA-BYTE TECHNOLOGY CO.,LTD.", "fcaa81": "Apple, Inc.", "fcaab6": "Samsung Electronics Co.,Ltd", From d95593bdd12e6a984802058c846f76bd7c9ecdcc Mon Sep 17 00:00:00 2001 From: Ken Celenza Date: Sat, 22 Jul 2023 12:26:51 -0400 Subject: [PATCH 11/11] Kc drop py37 (#317) * Drop support for python 3.7 * Bumped invoke for python 3.11 * Changed pylint to use version 3.10 * pylint ignore * More 3.7 fixes * linted * Updated per Jeffs review * pylinted * linted * flaked * Fixes * Make all Python references point to 3.11 by default, fix citrix tests, bump lock file, remove selective files from black --------- Co-authored-by: Adam Byczkowski Co-authored-by: Adam Byczkowski <38091261+qduk@users.noreply.github.com> --- .github/workflows/ci.yml | 22 +- docs/requirements.txt | 8 +- netutils/__init__.py | 8 +- netutils/config/parser.py | 22 +- netutils/constants.py | 18 +- netutils/os_version.py | 2 +- netutils/password.py | 5 +- poetry.lock | 2584 +++++++++-------- pyproject.toml | 21 +- tasks.py | 4 +- .../netscaler_full_received.py | 0 .../citrix_netscaler/netscaler_full_sent.txt | 0 12 files changed, 1366 insertions(+), 1328 deletions(-) rename tests/unit/mock/config/parser/{ => base}/citrix_netscaler/netscaler_full_received.py (100%) rename tests/unit/mock/config/parser/{ => base}/citrix_netscaler/netscaler_full_sent.txt (100%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9bef3025..95628584 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,6 +17,8 @@ jobs: uses: "actions/checkout@v2" - name: "Setup environment" uses: "networktocode/gh-action-setup-poetry-environment@v2" + with: + python-version: "3.11" - name: "Linting: black" run: "poetry run invoke black" bandit: @@ -28,6 +30,8 @@ jobs: uses: "actions/checkout@v2" - name: "Setup environment" uses: "networktocode/gh-action-setup-poetry-environment@v2" + with: + python-version: "3.11" - name: "Linting: bandit" run: "poetry run invoke bandit" needs: @@ -41,6 +45,8 @@ jobs: uses: "actions/checkout@v2" - name: "Setup environment" uses: "networktocode/gh-action-setup-poetry-environment@v2" + with: + python-version: "3.11" - name: "Type-Hints: mypy" run: "poetry run invoke mypy" needs: @@ -54,6 +60,8 @@ jobs: uses: "actions/checkout@v2" - name: "Setup environment" uses: "networktocode/gh-action-setup-poetry-environment@v2" + with: + python-version: "3.11" - name: "Linting: pydocstyle" run: "poetry run invoke pydocstyle" needs: @@ -67,6 +75,8 @@ jobs: uses: "actions/checkout@v2" - name: "Setup environment" uses: "networktocode/gh-action-setup-poetry-environment@v2" + with: + python-version: "3.11" - name: "Linting: flake8" run: "poetry run invoke flake8" needs: @@ -80,6 +90,8 @@ jobs: uses: "actions/checkout@v2" - name: "Setup environment" uses: "networktocode/gh-action-setup-poetry-environment@v2" + with: + python-version: "3.11" - name: "Linting: yamllint" run: "poetry run invoke yamllint" needs: @@ -88,7 +100,7 @@ jobs: strategy: fail-fast: true matrix: - python-version: ["3.7", "3.8", "3.9", "3.10"] + python-version: ["3.8", "3.9", "3.10", "3.11"] runs-on: "ubuntu-20.04" env: PYTHON_VER: "${{ matrix.python-version }}" @@ -125,7 +137,7 @@ jobs: strategy: fail-fast: true matrix: - python-version: ["3.7"] + python-version: ["3.11"] env: PYTHON_VER: "${{ matrix.python-version }}" steps: @@ -161,7 +173,7 @@ jobs: strategy: fail-fast: true matrix: - python-version: ["3.7", "3.8", "3.9", "3.10"] + python-version: ["3.8", "3.9", "3.10", "3.11"] runs-on: "ubuntu-20.04" env: PYTHON_VER: "${{ matrix.python-version }}" @@ -208,7 +220,7 @@ jobs: - name: "Set up Python" uses: "actions/setup-python@v2" with: - python-version: "3.9" + python-version: "3.11" - name: "Install Python Packages" run: "pip install poetry" - name: "Set env" @@ -237,7 +249,7 @@ jobs: - name: "Set up Python" uses: "actions/setup-python@v2" with: - python-version: "3.9" + python-version: "3.11" - name: "Install Python Packages" run: "pip install poetry" - name: "Set env" diff --git a/docs/requirements.txt b/docs/requirements.txt index f403e1aa..8e223b74 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,8 +1,8 @@ -mkdocs==1.3.1 +mkdocs==1.4.3 # Material for MkDocs theme -mkdocs-material==8.3.9 +mkdocs-material==8.5.8 # Render custom markdown for version added/changed/remove notes mkdocs-version-annotations==1.0.0 # Automatic documentation from sources, for MkDocs -mkdocstrings==0.19 -mkdocstrings-python==0.7.1 \ No newline at end of file +mkdocstrings==0.22.0 +mkdocstrings-python==1.1.2 \ No newline at end of file diff --git a/netutils/__init__.py b/netutils/__init__.py index e8a44b14..df4d8a29 100644 --- a/netutils/__init__.py +++ b/netutils/__init__.py @@ -1,9 +1,7 @@ """Initialization file for library.""" -try: - from importlib import metadata # type: ignore[attr-defined] -except ImportError: - # Python version < 3.8 - import importlib_metadata as metadata # type: ignore[no-redef] + +from importlib import metadata + __version__ = metadata.version(__name__) diff --git a/netutils/config/parser.py b/netutils/config/parser.py index 6c09857a..252e4989 100644 --- a/netutils/config/parser.py +++ b/netutils/config/parser.py @@ -14,9 +14,6 @@ class BaseConfigParser: """Base class for parsers.""" - # pylint: disable=abstract-method - # The pylint disable on the previous line can be removed once support for Python 3.7 is dropped. - comment_chars = ["!"] banner_start = ["banner", "vacant-message"] @@ -51,8 +48,8 @@ def build_config_relationship(self) -> t.List[ConfigLine]: class BaseSpaceConfigParser(BaseConfigParser): """Base parser class for config syntax that demarcates using spaces/indentation.""" + # TODO: Review if this can be removed # pylint: disable=abstract-method - # The pylint disable on the previous line can be removed once support for Python 3.7 is dropped. comment_chars = ["!"] banner_start = ["banner", "vacant-message"] @@ -413,12 +410,9 @@ def find_children_w_parents( return config -class BaseBraceConfigParser(BaseConfigParser): +class BaseBraceConfigParser(BaseConfigParser): # pylint: disable=abstract-method """Base parser class for config syntax that demarcates using braces.""" - # pylint: disable=abstract-method - # The pylint disable on the previous line can be removed once support for Python 3.7 is dropped. - multiline_delimiters: t.List[str] = [] @property @@ -766,7 +760,7 @@ def __init__(self, config: str): """ super().__init__(self._clean_config_f5(config)) - def _clean_config_f5(self, config_text: str) -> str: # pylint: disable=no-self-use + def _clean_config_f5(self, config_text: str) -> str: """Removes all configuration items with 'ltm rule'. iRules are essentially impossible to parse with the lack of uniformity, @@ -991,7 +985,7 @@ def __init__(self, config: str): self.uncommon_data = self._get_uncommon_lines(config) super(FortinetConfigParser, self).__init__(config) - def is_end_next(self, line: str) -> bool: # pylint: disable=no-self-use + def is_end_next(self, line: str) -> bool: """Determine if line has 'end' or 'next' in it. Args: @@ -1012,7 +1006,7 @@ def is_end_next(self, line: str) -> bool: # pylint: disable=no-self-use return True return False - def _parse_out_offending(self, config: str) -> str: # pylint: disable=no-self-use + def _parse_out_offending(self, config: str) -> str: """Preprocess out strings that offend the normal spaced configuration syntax. Args: @@ -1042,7 +1036,7 @@ def config_lines_only(self) -> str: self._config = "\n".join(config_lines) return self._config - def _get_uncommon_lines(self, config: str) -> t.Dict[str, str]: # pylint: disable=no-self-use + def _get_uncommon_lines(self, config: str) -> t.Dict[str, str]: """Regex to find replacemsg lines which can contain html/css data. Args: @@ -1110,7 +1104,7 @@ def banner_end(self) -> str: """Demarcate End of Banner char(s).""" raise NotImplementedError("Nokia SROS platform doesn't have a banner.") - def _is_section_title(self, line: str) -> bool: # pylint: disable=no-self-use + def _is_section_title(self, line: str) -> bool: """Determine if line is a section title in banner. Args: @@ -1123,7 +1117,7 @@ def _is_section_title(self, line: str) -> bool: # pylint: disable=no-self-use return True return False - def _get_section_title(self, line: str) -> t.Union[str, bool]: # pylint: disable=no-self-use + def _get_section_title(self, line: str) -> t.Union[str, bool]: """Determine section title from banner. Args: diff --git a/netutils/constants.py b/netutils/constants.py index dcb605f9..dd6d7c60 100644 --- a/netutils/constants.py +++ b/netutils/constants.py @@ -1,5 +1,7 @@ """Constant definitions used in project.""" -from netutils.data_files.protocol_mappings import PROTOCOLS # noqa: F401 # pylint:disable=unused-import +from netutils.data_files.protocol_mappings import ( # noqa: F401 # pylint:disable=unused-import + PROTOCOLS, +) # This variable provides mapping for known interface variants, to the associated long form. @@ -144,7 +146,7 @@ DEFAULT_MAC_FORMAT = "MAC_DOT_FOUR" # A dictionary to describe the MAC format to it's characteristics. -MAC_CREATE = dict( +MAC_CREATE = dict( # pylint: disable=use-dict-literal MAC_COLON_TWO={"count": 2, "char": ":"}, MAC_COLON_FOUR={"count": 4, "char": ":"}, MAC_DASH_TWO={"count": 2, "char": "-"}, @@ -155,7 +157,7 @@ ) # A dictionary to describe the MAC format REGEX pattern. -MAC_REGEX = dict( +MAC_REGEX = dict( # pylint: disable=use-dict-literal MAC_COLON_TWO=r"([a-fA-F0-9]{2}[:]){5}([a-fA-F0-9]{2})", MAC_COLON_FOUR=r"([a-fA-F0-9]{4}[:]){2}([a-fA-F0-9]{4})", MAC_DASH_TWO=r"([a-fA-F0-9]{2}[\-]){5}([a-fA-F0-9]{2})", @@ -208,8 +210,14 @@ # These are base level filters to provide documentation of how a SANITIZE_FILTERS can be used, This is a private variable, and subject # to change without notice between revisions. _PROVIDED_SANITIZE_FILTERS = [ - {"regex": r"(username\s+\S+\spassword\s+5\s+)\S+(\s+role\s+\S+)", "replace": "\\1\\2"}, - {"regex": r"(username\s+\S+\s+privilege\s+15\s+password\s+0\s+)\S+", "replace": "\\1"}, + { + "regex": r"(username\s+\S+\spassword\s+5\s+)\S+(\s+role\s+\S+)", + "replace": "\\1\\2", + }, + { + "regex": r"(username\s+\S+\s+privilege\s+15\s+password\s+0\s+)\S+", + "replace": "\\1", + }, ] # {0xffffffff ^ ((1 << i) - 1) for i in range(32)} diff --git a/netutils/os_version.py b/netutils/os_version.py index 3fe8bab4..09268de9 100644 --- a/netutils/os_version.py +++ b/netutils/os_version.py @@ -1,6 +1,6 @@ """Functions for working with OS Versions.""" import typing as t -from distutils.version import LooseVersion +from distutils.version import LooseVersion # pylint: disable=deprecated-module def get_upgrade_path( diff --git a/netutils/password.py b/netutils/password.py index f780f24f..02f1bd86 100644 --- a/netutils/password.py +++ b/netutils/password.py @@ -1,6 +1,7 @@ """Functions for working with Passwords.""" -import crypt +# TODO: Swap out crypt prior to py3.13 +import crypt # pylint: disable=deprecated-module import random import secrets import string @@ -279,7 +280,7 @@ def encrypt_cisco_type7(unencrypted_password: str, salt: t.Optional[int] = None) encrypted_password = format(salt, "02d") for i, _ in enumerate(unencrypted_password): # Get the next of the plaintext character. - dec_char = ord(unencrypted_password[i]) + dec_char = ord(unencrypted_password[i]) # pylint: disable=unnecessary-list-index-lookup # Get the next character of the key. key_char = ast.literal_eval(XLAT[(i + salt) % 53]) # XOR the plaintext character with the key character. diff --git a/poetry.lock b/poetry.lock index 7d288fd4..78d6b8de 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,77 +1,101 @@ +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. + [[package]] name = "alabaster" -version = "0.7.12" +version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.6" +files = [ + {file = "alabaster-0.7.13-py3-none-any.whl", hash = "sha256:1ee19aca801bbabb5ba3f5f258e4422dfa86f82f3e9cefb0859b283cdd7f62a3"}, + {file = "alabaster-0.7.13.tar.gz", hash = "sha256:a27a4a084d5e690e16e01e03ad2b2e552c61a65469419b907243193de1a84ae2"}, +] [[package]] name = "astroid" -version = "2.11.7" +version = "2.15.6" description = "An abstract syntax tree for Python with inference support." -category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" +files = [ + {file = "astroid-2.15.6-py3-none-any.whl", hash = "sha256:389656ca57b6108f939cf5d2f9a2a825a3be50ba9d589670f393236e0a03b91c"}, + {file = "astroid-2.15.6.tar.gz", hash = "sha256:903f024859b7c7687d7a7f3a3f73b17301f8e42dfd9cc9df9d4418172d3e2dbd"}, +] [package.dependencies] lazy-object-proxy = ">=1.4.0" -setuptools = ">=20.0" -typed-ast = {version = ">=1.4.0,<2.0", markers = "implementation_name == \"cpython\" and python_version < \"3.8\""} -typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} -wrapt = ">=1.11,<2" - -[[package]] -name = "attrs" -version = "22.1.0" -description = "Classes Without Boilerplate" -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.extras] -dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] -docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] -tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] -tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} +wrapt = [ + {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, +] [[package]] -name = "Babel" -version = "2.10.3" +name = "babel" +version = "2.12.1" description = "Internationalization utilities" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, + {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, +] [package.dependencies] -pytz = ">=2015.7" +pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} [[package]] name = "bandit" -version = "1.7.4" +version = "1.7.5" description = "Security oriented static analyser for python code." -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "bandit-1.7.5-py3-none-any.whl", hash = "sha256:75665181dc1e0096369112541a056c59d1c5f66f9bb74a8d686c3c362b83f549"}, + {file = "bandit-1.7.5.tar.gz", hash = "sha256:bdfc739baa03b880c2d15d0431b31c658ffc348e907fe197e54e0389dd59e11e"}, +] [package.dependencies] colorama = {version = ">=0.3.9", markers = "platform_system == \"Windows\""} GitPython = ">=1.0.1" PyYAML = ">=5.3.1" +rich = "*" stevedore = ">=1.20.0" [package.extras] -test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "toml"] -toml = ["toml"] +test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "tomli (>=1.1.0)"] +toml = ["tomli (>=1.1.0)"] yaml = ["PyYAML"] [[package]] name = "bcrypt" version = "4.0.1" description = "Modern password hashing for your software and your servers" -category = "main" optional = true python-versions = ">=3.6" +files = [ + {file = "bcrypt-4.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f"}, + {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0"}, + {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410"}, + {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344"}, + {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a"}, + {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3"}, + {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2"}, + {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535"}, + {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e"}, + {file = "bcrypt-4.0.1-cp36-abi3-win32.whl", hash = "sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab"}, + {file = "bcrypt-4.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9"}, + {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c"}, + {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b"}, + {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d"}, + {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d"}, + {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215"}, + {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c"}, + {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda"}, + {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665"}, + {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71"}, + {file = "bcrypt-4.0.1.tar.gz", hash = "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd"}, +] [package.extras] tests = ["pytest (>=3.2.1,!=3.3.0)"] @@ -79,19 +103,42 @@ typecheck = ["mypy"] [[package]] name = "black" -version = "22.10.0" +version = "23.7.0" description = "The uncompromising code formatter." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "black-23.7.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:5c4bc552ab52f6c1c506ccae05681fab58c3f72d59ae6e6639e8885e94fe2587"}, + {file = "black-23.7.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:552513d5cd5694590d7ef6f46e1767a4df9af168d449ff767b13b084c020e63f"}, + {file = "black-23.7.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:86cee259349b4448adb4ef9b204bb4467aae74a386bce85d56ba4f5dc0da27be"}, + {file = "black-23.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:501387a9edcb75d7ae8a4412bb8749900386eaef258f1aefab18adddea1936bc"}, + {file = "black-23.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb074d8b213749fa1d077d630db0d5f8cc3b2ae63587ad4116e8a436e9bbe995"}, + {file = "black-23.7.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:b5b0ee6d96b345a8b420100b7d71ebfdd19fab5e8301aff48ec270042cd40ac2"}, + {file = "black-23.7.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:893695a76b140881531062d48476ebe4a48f5d1e9388177e175d76234ca247cd"}, + {file = "black-23.7.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:c333286dc3ddca6fdff74670b911cccedacb4ef0a60b34e491b8a67c833b343a"}, + {file = "black-23.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831d8f54c3a8c8cf55f64d0422ee875eecac26f5f649fb6c1df65316b67c8926"}, + {file = "black-23.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:7f3bf2dec7d541b4619b8ce526bda74a6b0bffc480a163fed32eb8b3c9aed8ad"}, + {file = "black-23.7.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:f9062af71c59c004cd519e2fb8f5d25d39e46d3af011b41ab43b9c74e27e236f"}, + {file = "black-23.7.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:01ede61aac8c154b55f35301fac3e730baf0c9cf8120f65a9cd61a81cfb4a0c3"}, + {file = "black-23.7.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:327a8c2550ddc573b51e2c352adb88143464bb9d92c10416feb86b0f5aee5ff6"}, + {file = "black-23.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1c6022b86f83b632d06f2b02774134def5d4d4f1dac8bef16d90cda18ba28a"}, + {file = "black-23.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:27eb7a0c71604d5de083757fbdb245b1a4fae60e9596514c6ec497eb63f95320"}, + {file = "black-23.7.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:8417dbd2f57b5701492cd46edcecc4f9208dc75529bcf76c514864e48da867d9"}, + {file = "black-23.7.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:47e56d83aad53ca140da0af87678fb38e44fd6bc0af71eebab2d1f59b1acf1d3"}, + {file = "black-23.7.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:25cc308838fe71f7065df53aedd20327969d05671bac95b38fdf37ebe70ac087"}, + {file = "black-23.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:642496b675095d423f9b8448243336f8ec71c9d4d57ec17bf795b67f08132a91"}, + {file = "black-23.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:ad0014efc7acf0bd745792bd0d8857413652979200ab924fbf239062adc12491"}, + {file = "black-23.7.0-py3-none-any.whl", hash = "sha256:9fd59d418c60c0348505f2ddf9609c1e1de8e7493eab96198fc89d9f865e7a96"}, + {file = "black-23.7.0.tar.gz", hash = "sha256:022a582720b0d9480ed82576c920a8c1dde97cc38ff11d8d8859b3bd6ca9eedb"}, +] [package.dependencies] click = ">=8.0.0" mypy-extensions = ">=0.4.3" +packaging = ">=22.0" pathspec = ">=0.9.0" platformdirs = ">=2" -tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} -typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""} +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] @@ -100,142 +147,394 @@ d = ["aiohttp (>=3.7.4)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] -[[package]] -name = "cached-property" -version = "1.5.2" -description = "A decorator for caching properties in classes." -category = "dev" -optional = false -python-versions = "*" - [[package]] name = "certifi" -version = "2022.9.24" +version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, +] [[package]] name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = true python-versions = "*" +files = [ + {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, + {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, + {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, + {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, + {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, + {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, + {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, + {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, + {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, + {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, + {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, + {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, + {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, + {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, + {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, + {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, + {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, + {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, + {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, + {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, + {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, + {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, + {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, + {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, + {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, + {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, + {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, + {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, + {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, + {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, + {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, + {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, + {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, +] [package.dependencies] pycparser = "*" [[package]] name = "charset-normalizer" -version = "2.1.1" +version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false -python-versions = ">=3.6.0" - -[package.extras] -unicode_backport = ["unicodedata2"] +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, + {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, + {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, + {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, + {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, + {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, + {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, +] [[package]] name = "click" -version = "8.1.3" +version = "8.1.6" description = "Composable command line interface toolkit" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "click-8.1.6-py3-none-any.whl", hash = "sha256:fa244bb30b3b5ee2cae3da8f55c9e5e0c0e86093306301fb418eb9dc40fbded5"}, + {file = "click-8.1.6.tar.gz", hash = "sha256:48ee849951919527a045bfe3bf7baa8a959c423134e1a5b98c05c20ba75a1cbd"}, +] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} [[package]] name = "colorama" -version = "0.4.5" +version = "0.4.6" description = "Cross-platform colored terminal text." -category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] [[package]] name = "coverage" -version = "6.5.0" +version = "7.2.7" description = "Code coverage measurement for Python" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "coverage-7.2.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d39b5b4f2a66ccae8b7263ac3c8170994b65266797fb96cbbfd3fb5b23921db8"}, + {file = "coverage-7.2.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d040ef7c9859bb11dfeb056ff5b3872436e3b5e401817d87a31e1750b9ae2fb"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba90a9563ba44a72fda2e85302c3abc71c5589cea608ca16c22b9804262aaeb6"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7d9405291c6928619403db1d10bd07888888ec1abcbd9748fdaa971d7d661b2"}, + {file = "coverage-7.2.7-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31563e97dae5598556600466ad9beea39fb04e0229e61c12eaa206e0aa202063"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ebba1cd308ef115925421d3e6a586e655ca5a77b5bf41e02eb0e4562a111f2d1"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cb017fd1b2603ef59e374ba2063f593abe0fc45f2ad9abdde5b4d83bd922a353"}, + {file = "coverage-7.2.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62a5c7dad11015c66fbb9d881bc4caa5b12f16292f857842d9d1871595f4495"}, + {file = "coverage-7.2.7-cp310-cp310-win32.whl", hash = "sha256:ee57190f24fba796e36bb6d3aa8a8783c643d8fa9760c89f7a98ab5455fbf818"}, + {file = "coverage-7.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:f75f7168ab25dd93110c8a8117a22450c19976afbc44234cbf71481094c1b850"}, + {file = "coverage-7.2.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:06a9a2be0b5b576c3f18f1a241f0473575c4a26021b52b2a85263a00f034d51f"}, + {file = "coverage-7.2.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5baa06420f837184130752b7c5ea0808762083bf3487b5038d68b012e5937dbe"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdec9e8cbf13a5bf63290fc6013d216a4c7232efb51548594ca3631a7f13c3a3"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:52edc1a60c0d34afa421c9c37078817b2e67a392cab17d97283b64c5833f427f"}, + {file = "coverage-7.2.7-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63426706118b7f5cf6bb6c895dc215d8a418d5952544042c8a2d9fe87fcf09cb"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:afb17f84d56068a7c29f5fa37bfd38d5aba69e3304af08ee94da8ed5b0865833"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:48c19d2159d433ccc99e729ceae7d5293fbffa0bdb94952d3579983d1c8c9d97"}, + {file = "coverage-7.2.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0e1f928eaf5469c11e886fe0885ad2bf1ec606434e79842a879277895a50942a"}, + {file = "coverage-7.2.7-cp311-cp311-win32.whl", hash = "sha256:33d6d3ea29d5b3a1a632b3c4e4f4ecae24ef170b0b9ee493883f2df10039959a"}, + {file = "coverage-7.2.7-cp311-cp311-win_amd64.whl", hash = "sha256:5b7540161790b2f28143191f5f8ec02fb132660ff175b7747b95dcb77ac26562"}, + {file = "coverage-7.2.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f2f67fe12b22cd130d34d0ef79206061bfb5eda52feb6ce0dba0644e20a03cf4"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a342242fe22407f3c17f4b499276a02b01e80f861f1682ad1d95b04018e0c0d4"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:171717c7cb6b453aebac9a2ef603699da237f341b38eebfee9be75d27dc38e01"}, + {file = "coverage-7.2.7-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49969a9f7ffa086d973d91cec8d2e31080436ef0fb4a359cae927e742abfaaa6"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b46517c02ccd08092f4fa99f24c3b83d8f92f739b4657b0f146246a0ca6a831d"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a3d33a6b3eae87ceaefa91ffdc130b5e8536182cd6dfdbfc1aa56b46ff8c86de"}, + {file = "coverage-7.2.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:976b9c42fb2a43ebf304fa7d4a310e5f16cc99992f33eced91ef6f908bd8f33d"}, + {file = "coverage-7.2.7-cp312-cp312-win32.whl", hash = "sha256:8de8bb0e5ad103888d65abef8bca41ab93721647590a3f740100cd65c3b00511"}, + {file = "coverage-7.2.7-cp312-cp312-win_amd64.whl", hash = "sha256:9e31cb64d7de6b6f09702bb27c02d1904b3aebfca610c12772452c4e6c21a0d3"}, + {file = "coverage-7.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:58c2ccc2f00ecb51253cbe5d8d7122a34590fac9646a960d1430d5b15321d95f"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d22656368f0e6189e24722214ed8d66b8022db19d182927b9a248a2a8a2f67eb"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a895fcc7b15c3fc72beb43cdcbdf0ddb7d2ebc959edac9cef390b0d14f39f8a9"}, + {file = "coverage-7.2.7-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84606b74eb7de6ff581a7915e2dab7a28a0517fbe1c9239eb227e1354064dcd"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0a5f9e1dbd7fbe30196578ca36f3fba75376fb99888c395c5880b355e2875f8a"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:419bfd2caae268623dd469eff96d510a920c90928b60f2073d79f8fe2bbc5959"}, + {file = "coverage-7.2.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aee274c46590717f38ae5e4650988d1af340fe06167546cc32fe2f58ed05b02"}, + {file = "coverage-7.2.7-cp37-cp37m-win32.whl", hash = "sha256:61b9a528fb348373c433e8966535074b802c7a5d7f23c4f421e6c6e2f1697a6f"}, + {file = "coverage-7.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:b1c546aca0ca4d028901d825015dc8e4d56aac4b541877690eb76490f1dc8ed0"}, + {file = "coverage-7.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:54b896376ab563bd38453cecb813c295cf347cf5906e8b41d340b0321a5433e5"}, + {file = "coverage-7.2.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3d376df58cc111dc8e21e3b6e24606b5bb5dee6024f46a5abca99124b2229ef5"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e330fc79bd7207e46c7d7fd2bb4af2963f5f635703925543a70b99574b0fea9"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e9d683426464e4a252bf70c3498756055016f99ddaec3774bf368e76bbe02b6"}, + {file = "coverage-7.2.7-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d13c64ee2d33eccf7437961b6ea7ad8673e2be040b4f7fd4fd4d4d28d9ccb1e"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7aa5f8a41217360e600da646004f878250a0d6738bcdc11a0a39928d7dc2050"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fa03bce9bfbeeef9f3b160a8bed39a221d82308b4152b27d82d8daa7041fee5"}, + {file = "coverage-7.2.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:245167dd26180ab4c91d5e1496a30be4cd721a5cf2abf52974f965f10f11419f"}, + {file = "coverage-7.2.7-cp38-cp38-win32.whl", hash = "sha256:d2c2db7fd82e9b72937969bceac4d6ca89660db0a0967614ce2481e81a0b771e"}, + {file = "coverage-7.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:2e07b54284e381531c87f785f613b833569c14ecacdcb85d56b25c4622c16c3c"}, + {file = "coverage-7.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:537891ae8ce59ef63d0123f7ac9e2ae0fc8b72c7ccbe5296fec45fd68967b6c9"}, + {file = "coverage-7.2.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06fb182e69f33f6cd1d39a6c597294cff3143554b64b9825d1dc69d18cc2fff2"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201e7389591af40950a6480bd9edfa8ed04346ff80002cec1a66cac4549c1ad7"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f6951407391b639504e3b3be51b7ba5f3528adbf1a8ac3302b687ecababf929e"}, + {file = "coverage-7.2.7-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f48351d66575f535669306aa7d6d6f71bc43372473b54a832222803eb956fd1"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b29019c76039dc3c0fd815c41392a044ce555d9bcdd38b0fb60fb4cd8e475ba9"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:81c13a1fc7468c40f13420732805a4c38a105d89848b7c10af65a90beff25250"}, + {file = "coverage-7.2.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:975d70ab7e3c80a3fe86001d8751f6778905ec723f5b110aed1e450da9d4b7f2"}, + {file = "coverage-7.2.7-cp39-cp39-win32.whl", hash = "sha256:7ee7d9d4822c8acc74a5e26c50604dff824710bc8de424904c0982e25c39c6cb"}, + {file = "coverage-7.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:eb393e5ebc85245347950143969b241d08b52b88a3dc39479822e073a1a8eb27"}, + {file = "coverage-7.2.7-pp37.pp38.pp39-none-any.whl", hash = "sha256:b7b4c971f05e6ae490fef852c218b0e79d4e52f79ef0c8475566584a8fb3e01d"}, + {file = "coverage-7.2.7.tar.gz", hash = "sha256:924d94291ca674905fe9481f12294eb11f2d3d3fd1adb20314ba89e94f44ed59"}, +] [package.extras] toml = ["tomli"] [[package]] name = "cryptography" -version = "38.0.1" +version = "41.0.2" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = true -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "cryptography-41.0.2-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:01f1d9e537f9a15b037d5d9ee442b8c22e3ae11ce65ea1f3316a41c78756b711"}, + {file = "cryptography-41.0.2-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:079347de771f9282fbfe0e0236c716686950c19dee1b76240ab09ce1624d76d7"}, + {file = "cryptography-41.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:439c3cc4c0d42fa999b83ded80a9a1fb54d53c58d6e59234cfe97f241e6c781d"}, + {file = "cryptography-41.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f14ad275364c8b4e525d018f6716537ae7b6d369c094805cae45300847e0894f"}, + {file = "cryptography-41.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:84609ade00a6ec59a89729e87a503c6e36af98ddcd566d5f3be52e29ba993182"}, + {file = "cryptography-41.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:49c3222bb8f8e800aead2e376cbef687bc9e3cb9b58b29a261210456a7783d83"}, + {file = "cryptography-41.0.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d73f419a56d74fef257955f51b18d046f3506270a5fd2ac5febbfa259d6c0fa5"}, + {file = "cryptography-41.0.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:2a034bf7d9ca894720f2ec1d8b7b5832d7e363571828037f9e0c4f18c1b58a58"}, + {file = "cryptography-41.0.2-cp37-abi3-win32.whl", hash = "sha256:d124682c7a23c9764e54ca9ab5b308b14b18eba02722b8659fb238546de83a76"}, + {file = "cryptography-41.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:9c3fe6534d59d071ee82081ca3d71eed3210f76ebd0361798c74abc2bcf347d4"}, + {file = "cryptography-41.0.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a719399b99377b218dac6cf547b6ec54e6ef20207b6165126a280b0ce97e0d2a"}, + {file = "cryptography-41.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:182be4171f9332b6741ee818ec27daff9fb00349f706629f5cbf417bd50e66fd"}, + {file = "cryptography-41.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:7a9a3bced53b7f09da251685224d6a260c3cb291768f54954e28f03ef14e3766"}, + {file = "cryptography-41.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f0dc40e6f7aa37af01aba07277d3d64d5a03dc66d682097541ec4da03cc140ee"}, + {file = "cryptography-41.0.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:674b669d5daa64206c38e507808aae49904c988fa0a71c935e7006a3e1e83831"}, + {file = "cryptography-41.0.2-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7af244b012711a26196450d34f483357e42aeddb04128885d95a69bd8b14b69b"}, + {file = "cryptography-41.0.2-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9b6d717393dbae53d4e52684ef4f022444fc1cce3c48c38cb74fca29e1f08eaa"}, + {file = "cryptography-41.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:192255f539d7a89f2102d07d7375b1e0a81f7478925b3bc2e0549ebf739dae0e"}, + {file = "cryptography-41.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f772610fe364372de33d76edcd313636a25684edb94cee53fd790195f5989d14"}, + {file = "cryptography-41.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:b332cba64d99a70c1e0836902720887fb4529ea49ea7f5462cf6640e095e11d2"}, + {file = "cryptography-41.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9a6673c1828db6270b76b22cc696f40cde9043eb90373da5c2f8f2158957f42f"}, + {file = "cryptography-41.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:342f3767e25876751e14f8459ad85e77e660537ca0a066e10e75df9c9e9099f0"}, + {file = "cryptography-41.0.2.tar.gz", hash = "sha256:7d230bf856164de164ecb615ccc14c7fc6de6906ddd5b491f3af90d3514c925c"}, +] [package.dependencies] cffi = ">=1.12" [package.extras] -docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] +docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] -pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] -sdist = ["setuptools-rust (>=0.11.4)"] +nox = ["nox"] +pep8test = ["black", "check-sdist", "mypy", "ruff"] +sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"] +test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test-randomorder = ["pytest-randomly"] [[package]] name = "dill" -version = "0.3.5.1" +version = "0.3.6" description = "serialize all of python" -category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +python-versions = ">=3.7" +files = [ + {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"}, + {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"}, +] [package.extras] graph = ["objgraph (>=1.7.2)"] [[package]] name = "docutils" -version = "0.17.1" +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 = [ + {file = "docutils-0.18.1-py2.py3-none-any.whl", hash = "sha256:23010f129180089fbcd3bc08cfefccb3b890b0050e1ca00c867036e9d161b98c"}, + {file = "docutils-0.18.1.tar.gz", hash = "sha256:679987caf361a7539d76e584cbeddc311e3aee937877c87346f31debc63e9d06"}, +] + +[[package]] +name = "exceptiongroup" +version = "1.1.2" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.1.2-py3-none-any.whl", hash = "sha256:e346e69d186172ca7cf029c8c1d16235aa0e04035e5750b4b95039e65204328f"}, + {file = "exceptiongroup-1.1.2.tar.gz", hash = "sha256:12c3e887d6485d16943a309616de20ae5582633e0a2eda17f4e10fd61c1e8af5"}, +] + +[package.extras] +test = ["pytest (>=6)"] [[package]] name = "flake8" -version = "3.9.2" +version = "5.0.4" description = "the modular source code checker: pep8 pyflakes and co" -category = "dev" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.6.1" +files = [ + {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, + {file = "flake8-5.0.4.tar.gz", hash = "sha256:6fbe320aad8d6b95cec8b8e47bc933004678dc63095be98528b7bdd2a9f510db"}, +] [package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} -mccabe = ">=0.6.0,<0.7.0" -pycodestyle = ">=2.7.0,<2.8.0" -pyflakes = ">=2.3.0,<2.4.0" +mccabe = ">=0.7.0,<0.8.0" +pycodestyle = ">=2.9.0,<2.10.0" +pyflakes = ">=2.5.0,<2.6.0" [[package]] name = "future" -version = "0.18.2" +version = "0.18.3" description = "Clean single-source support for Python 3 and 2" -category = "main" optional = true python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "future-0.18.3.tar.gz", hash = "sha256:34a17436ed1e96697a86f9de3d15a3b0be01d8bc8de9c1dffd59fb8234ed5307"}, +] [[package]] name = "ghp-import" version = "2.1.0" description = "Copy your docs directly to the gh-pages branch." -category = "dev" optional = false python-versions = "*" +files = [ + {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, + {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, +] [package.dependencies] python-dateutil = ">=2.8.1" @@ -245,111 +544,136 @@ dev = ["flake8", "markdown", "twine", "wheel"] [[package]] name = "gitdb" -version = "4.0.9" +version = "4.0.10" description = "Git Object Database" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, + {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, +] [package.dependencies] smmap = ">=3.0.1,<6" [[package]] -name = "GitPython" -version = "3.1.29" -description = "GitPython is a python library used to interact with Git repositories" -category = "dev" +name = "gitpython" +version = "3.1.32" +description = "GitPython is a Python library used to interact with Git repositories" optional = false python-versions = ">=3.7" +files = [ + {file = "GitPython-3.1.32-py3-none-any.whl", hash = "sha256:e3d59b1c2c6ebb9dfa7a184daf3b6dd4914237e7488a1730a6d8f6f5d0b4187f"}, + {file = "GitPython-3.1.32.tar.gz", hash = "sha256:8d9b8cb1e80b9735e8717c9362079d3ce4c6e5ddeebedd0361b228c3a67a62f6"}, +] [package.dependencies] gitdb = ">=4.0.1,<5" -typing-extensions = {version = ">=3.7.4.3", markers = "python_version < \"3.8\""} [[package]] name = "griffe" -version = "0.22.2" +version = "0.32.3" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "griffe-0.32.3-py3-none-any.whl", hash = "sha256:d9471934225818bf8f309822f70451cc6abb4b24e59e0bb27402a45f9412510f"}, + {file = "griffe-0.32.3.tar.gz", hash = "sha256:14983896ad581f59d5ad7b6c9261ff12bdaa905acccc1129341d13e545da8521"}, +] [package.dependencies] -cached-property = {version = "*", markers = "python_version < \"3.8\""} - -[package.extras] -async = ["aiofiles (>=0.7,<1.0)"] +colorama = ">=0.4" [[package]] name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" +files = [ + {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, + {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, +] [[package]] name = "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 = [ + {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, + {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, +] [[package]] name = "importlib-metadata" -version = "5.0.0" +version = "6.8.0" description = "Read metadata from Python packages" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, + {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, +] [package.dependencies] -typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "iniconfig" -version = "1.1.1" -description = "iniconfig: brain-dead simple config-ini parsing" -category = "dev" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" optional = false -python-versions = "*" +python-versions = ">=3.7" +files = [ + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, +] [[package]] name = "invoke" -version = "1.7.3" +version = "2.2.0" description = "Pythonic task execution" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.6" +files = [ + {file = "invoke-2.2.0-py3-none-any.whl", hash = "sha256:6ea924cc53d4f78e3d98bc436b08069a03077e6f85ad1ddaa8a116d7dad15820"}, + {file = "invoke-2.2.0.tar.gz", hash = "sha256:ee6cbb101af1a859c7fe84f2a264c059020b0cb7fe3535f9424300ab568f6bd5"}, +] [[package]] name = "isort" -version = "5.10.1" +version = "5.12.0" description = "A Python utility / library to sort Python imports." -category = "dev" optional = false -python-versions = ">=3.6.1,<4.0" +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,<0.5.0)"] -pipfile_deprecated_finder = ["pipreqs", "requirementslib"] +colors = ["colorama (>=0.4.3)"] +pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] plugins = ["setuptools"] -requirements_deprecated_finder = ["pip-api", "pipreqs"] +requirements-deprecated-finder = ["pip-api", "pipreqs"] [[package]] -name = "Jinja2" +name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] [package.dependencies] MarkupSafe = ">=2.0" @@ -359,11 +683,14 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "junos-eznc" -version = "2.6.5" +version = "2.6.7" description = "Junos 'EZ' automation for non-programmers" -category = "main" optional = true -python-versions = ">=3.*, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.5, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "junos-eznc-2.6.7.tar.gz", hash = "sha256:b3ab81dafb160cd16cba8f26b92b6f5c3333a8d30566a7ebd966fc1f313b0980"}, + {file = "junos_eznc-2.6.7-py2.py3-none-any.whl", hash = "sha256:6ee9d74228ebaca01381eb88dbe21765006d76935960fd4e6cd8d67248b11644"}, +] [package.dependencies] jinja2 = ">=2.7.1" @@ -381,33 +708,166 @@ yamlordereddictloader = "*" [[package]] name = "lazy-object-proxy" -version = "1.7.1" +version = "1.9.0" description = "A fast and thorough lazy object proxy." -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, +] [[package]] name = "lxml" -version = "4.9.1" +version = "4.9.3" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." -category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" +files = [ + {file = "lxml-4.9.3-cp27-cp27m-macosx_11_0_x86_64.whl", hash = "sha256:b0a545b46b526d418eb91754565ba5b63b1c0b12f9bd2f808c852d9b4b2f9b5c"}, + {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d"}, + {file = "lxml-4.9.3-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1e224d5755dba2f4a9498e150c43792392ac9b5380aa1b845f98a1618c94eeef"}, + {file = "lxml-4.9.3-cp27-cp27m-win32.whl", hash = "sha256:2c74524e179f2ad6d2a4f7caf70e2d96639c0954c943ad601a9e146c76408ed7"}, + {file = "lxml-4.9.3-cp27-cp27m-win_amd64.whl", hash = "sha256:4f1026bc732b6a7f96369f7bfe1a4f2290fb34dce00d8644bc3036fb351a4ca1"}, + {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c0781a98ff5e6586926293e59480b64ddd46282953203c76ae15dbbbf302e8bb"}, + {file = "lxml-4.9.3-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cef2502e7e8a96fe5ad686d60b49e1ab03e438bd9123987994528febd569868e"}, + {file = "lxml-4.9.3-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b86164d2cff4d3aaa1f04a14685cbc072efd0b4f99ca5708b2ad1b9b5988a991"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:42871176e7896d5d45138f6d28751053c711ed4d48d8e30b498da155af39aebd"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ae8b9c6deb1e634ba4f1930eb67ef6e6bf6a44b6eb5ad605642b2d6d5ed9ce3c"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:411007c0d88188d9f621b11d252cce90c4a2d1a49db6c068e3c16422f306eab8"}, + {file = "lxml-4.9.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:cd47b4a0d41d2afa3e58e5bf1f62069255aa2fd6ff5ee41604418ca925911d76"}, + {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e2cb47860da1f7e9a5256254b74ae331687b9672dfa780eed355c4c9c3dbd23"}, + {file = "lxml-4.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1247694b26342a7bf47c02e513d32225ededd18045264d40758abeb3c838a51f"}, + {file = "lxml-4.9.3-cp310-cp310-win32.whl", hash = "sha256:cdb650fc86227eba20de1a29d4b2c1bfe139dc75a0669270033cb2ea3d391b85"}, + {file = "lxml-4.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:97047f0d25cd4bcae81f9ec9dc290ca3e15927c192df17331b53bebe0e3ff96d"}, + {file = "lxml-4.9.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:1f447ea5429b54f9582d4b955f5f1985f278ce5cf169f72eea8afd9502973dd5"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:57d6ba0ca2b0c462f339640d22882acc711de224d769edf29962b09f77129cbf"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9767e79108424fb6c3edf8f81e6730666a50feb01a328f4a016464a5893f835a"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:71c52db65e4b56b8ddc5bb89fb2e66c558ed9d1a74a45ceb7dcb20c191c3df2f"}, + {file = "lxml-4.9.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d73d8ecf8ecf10a3bd007f2192725a34bd62898e8da27eb9d32a58084f93962b"}, + {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0a3d3487f07c1d7f150894c238299934a2a074ef590b583103a45002035be120"}, + {file = "lxml-4.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e28c51fa0ce5674be9f560c6761c1b441631901993f76700b1b30ca6c8378d6"}, + {file = "lxml-4.9.3-cp311-cp311-win32.whl", hash = "sha256:0bfd0767c5c1de2551a120673b72e5d4b628737cb05414f03c3277bf9bed3305"}, + {file = "lxml-4.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:25f32acefac14ef7bd53e4218fe93b804ef6f6b92ffdb4322bb6d49d94cad2bc"}, + {file = "lxml-4.9.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:d3ff32724f98fbbbfa9f49d82852b159e9784d6094983d9a8b7f2ddaebb063d4"}, + {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:48d6ed886b343d11493129e019da91d4039826794a3e3027321c56d9e71505be"}, + {file = "lxml-4.9.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:9a92d3faef50658dd2c5470af249985782bf754c4e18e15afb67d3ab06233f13"}, + {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:b4e4bc18382088514ebde9328da057775055940a1f2e18f6ad2d78aa0f3ec5b9"}, + {file = "lxml-4.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fc9b106a1bf918db68619fdcd6d5ad4f972fdd19c01d19bdb6bf63f3589a9ec5"}, + {file = "lxml-4.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:d37017287a7adb6ab77e1c5bee9bcf9660f90ff445042b790402a654d2ad81d8"}, + {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56dc1f1ebccc656d1b3ed288f11e27172a01503fc016bcabdcbc0978b19352b7"}, + {file = "lxml-4.9.3-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:578695735c5a3f51569810dfebd05dd6f888147a34f0f98d4bb27e92b76e05c2"}, + {file = "lxml-4.9.3-cp35-cp35m-win32.whl", hash = "sha256:704f61ba8c1283c71b16135caf697557f5ecf3e74d9e453233e4771d68a1f42d"}, + {file = "lxml-4.9.3-cp35-cp35m-win_amd64.whl", hash = "sha256:c41bfca0bd3532d53d16fd34d20806d5c2b1ace22a2f2e4c0008570bf2c58833"}, + {file = "lxml-4.9.3-cp36-cp36m-macosx_11_0_x86_64.whl", hash = "sha256:64f479d719dc9f4c813ad9bb6b28f8390360660b73b2e4beb4cb0ae7104f1c12"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:dd708cf4ee4408cf46a48b108fb9427bfa00b9b85812a9262b5c668af2533ea5"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c31c7462abdf8f2ac0577d9f05279727e698f97ecbb02f17939ea99ae8daa98"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e3cd95e10c2610c360154afdc2f1480aea394f4a4f1ea0a5eacce49640c9b190"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:4930be26af26ac545c3dffb662521d4e6268352866956672231887d18f0eaab2"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4aec80cde9197340bc353d2768e2a75f5f60bacda2bab72ab1dc499589b3878c"}, + {file = "lxml-4.9.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:14e019fd83b831b2e61baed40cab76222139926b1fb5ed0e79225bc0cae14584"}, + {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:0c0850c8b02c298d3c7006b23e98249515ac57430e16a166873fc47a5d549287"}, + {file = "lxml-4.9.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:aca086dc5f9ef98c512bac8efea4483eb84abbf926eaeedf7b91479feb092458"}, + {file = "lxml-4.9.3-cp36-cp36m-win32.whl", hash = "sha256:50baa9c1c47efcaef189f31e3d00d697c6d4afda5c3cde0302d063492ff9b477"}, + {file = "lxml-4.9.3-cp36-cp36m-win_amd64.whl", hash = "sha256:bef4e656f7d98aaa3486d2627e7d2df1157d7e88e7efd43a65aa5dd4714916cf"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:46f409a2d60f634fe550f7133ed30ad5321ae2e6630f13657fb9479506b00601"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:4c28a9144688aef80d6ea666c809b4b0e50010a2aca784c97f5e6bf143d9f129"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:141f1d1a9b663c679dc524af3ea1773e618907e96075262726c7612c02b149a4"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:53ace1c1fd5a74ef662f844a0413446c0629d151055340e9893da958a374f70d"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:17a753023436a18e27dd7769e798ce302963c236bc4114ceee5b25c18c52c693"}, + {file = "lxml-4.9.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:7d298a1bd60c067ea75d9f684f5f3992c9d6766fadbc0bcedd39750bf344c2f4"}, + {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:081d32421db5df44c41b7f08a334a090a545c54ba977e47fd7cc2deece78809a"}, + {file = "lxml-4.9.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:23eed6d7b1a3336ad92d8e39d4bfe09073c31bfe502f20ca5116b2a334f8ec02"}, + {file = "lxml-4.9.3-cp37-cp37m-win32.whl", hash = "sha256:1509dd12b773c02acd154582088820893109f6ca27ef7291b003d0e81666109f"}, + {file = "lxml-4.9.3-cp37-cp37m-win_amd64.whl", hash = "sha256:120fa9349a24c7043854c53cae8cec227e1f79195a7493e09e0c12e29f918e52"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4d2d1edbca80b510443f51afd8496be95529db04a509bc8faee49c7b0fb6d2cc"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8d7e43bd40f65f7d97ad8ef5c9b1778943d02f04febef12def25f7583d19baac"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:71d66ee82e7417828af6ecd7db817913cb0cf9d4e61aa0ac1fde0583d84358db"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:6fc3c450eaa0b56f815c7b62f2b7fba7266c4779adcf1cece9e6deb1de7305ce"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:65299ea57d82fb91c7f019300d24050c4ddeb7c5a190e076b5f48a2b43d19c42"}, + {file = "lxml-4.9.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:eadfbbbfb41b44034a4c757fd5d70baccd43296fb894dba0295606a7cf3124aa"}, + {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3e9bdd30efde2b9ccfa9cb5768ba04fe71b018a25ea093379c857c9dad262c40"}, + {file = "lxml-4.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fcdd00edfd0a3001e0181eab3e63bd5c74ad3e67152c84f93f13769a40e073a7"}, + {file = "lxml-4.9.3-cp38-cp38-win32.whl", hash = "sha256:57aba1bbdf450b726d58b2aea5fe47c7875f5afb2c4a23784ed78f19a0462574"}, + {file = "lxml-4.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:92af161ecbdb2883c4593d5ed4815ea71b31fafd7fd05789b23100d081ecac96"}, + {file = "lxml-4.9.3-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9bb6ad405121241e99a86efff22d3ef469024ce22875a7ae045896ad23ba2340"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8ed74706b26ad100433da4b9d807eae371efaa266ffc3e9191ea436087a9d6a7"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:fbf521479bcac1e25a663df882c46a641a9bff6b56dc8b0fafaebd2f66fb231b"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:303bf1edce6ced16bf67a18a1cf8339d0db79577eec5d9a6d4a80f0fb10aa2da"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:5515edd2a6d1a5a70bfcdee23b42ec33425e405c5b351478ab7dc9347228f96e"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:690dafd0b187ed38583a648076865d8c229661ed20e48f2335d68e2cf7dc829d"}, + {file = "lxml-4.9.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6420a005548ad52154c8ceab4a1290ff78d757f9e5cbc68f8c77089acd3c432"}, + {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bb3bb49c7a6ad9d981d734ef7c7193bc349ac338776a0360cc671eaee89bcf69"}, + {file = "lxml-4.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d27be7405547d1f958b60837dc4c1007da90b8b23f54ba1f8b728c78fdb19d50"}, + {file = "lxml-4.9.3-cp39-cp39-win32.whl", hash = "sha256:8df133a2ea5e74eef5e8fc6f19b9e085f758768a16e9877a60aec455ed2609b2"}, + {file = "lxml-4.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:4dd9a263e845a72eacb60d12401e37c616438ea2e5442885f65082c276dfb2b2"}, + {file = "lxml-4.9.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6689a3d7fd13dc687e9102a27e98ef33730ac4fe37795d5036d18b4d527abd35"}, + {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:f6bdac493b949141b733c5345b6ba8f87a226029cbabc7e9e121a413e49441e0"}, + {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3"}, + {file = "lxml-4.9.3-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2006f5c8d28dee289f7020f721354362fa304acbaaf9745751ac4006650254b"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-macosx_11_0_x86_64.whl", hash = "sha256:5c245b783db29c4e4fbbbfc9c5a78be496c9fea25517f90606aa1f6b2b3d5f7b"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:4fb960a632a49f2f089d522f70496640fdf1218f1243889da3822e0a9f5f3ba7"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:50670615eaf97227d5dc60de2dc99fb134a7130d310d783314e7724bf163f75d"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9719fe17307a9e814580af1f5c6e05ca593b12fb7e44fe62450a5384dbf61b4b"}, + {file = "lxml-4.9.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:3331bece23c9ee066e0fb3f96c61322b9e0f54d775fccefff4c38ca488de283a"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-macosx_11_0_x86_64.whl", hash = "sha256:ed667f49b11360951e201453fc3967344d0d0263aa415e1619e85ae7fd17b4e0"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:8b77946fd508cbf0fccd8e400a7f71d4ac0e1595812e66025bac475a8e811694"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e4da8ca0c0c0aea88fd46be8e44bd49716772358d648cce45fe387f7b92374a7"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fe4bda6bd4340caa6e5cf95e73f8fea5c4bfc55763dd42f1b50a94c1b4a2fbd4"}, + {file = "lxml-4.9.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f3df3db1d336b9356dd3112eae5f5c2b8b377f3bc826848567f10bfddfee77e9"}, + {file = "lxml-4.9.3.tar.gz", hash = "sha256:48628bd53a426c9eb9bc066a923acaa0878d1e86129fd5359aee99285f4eed9c"}, +] [package.extras] cssselect = ["cssselect (>=0.7)"] html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] -source = ["Cython (>=0.29.7)"] +source = ["Cython (>=0.29.35)"] [[package]] -name = "Markdown" +name = "markdown" version = "3.3.7" description = "Python implementation of Markdown." -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, + {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, +] [package.dependencies] importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} @@ -416,59 +876,159 @@ importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} testing = ["coverage", "pyyaml"] [[package]] -name = "MarkupSafe" -version = "2.1.1" +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "markupsafe" +version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, + {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, + {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, + {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, + {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, + {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, + {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, +] [[package]] name = "mccabe" -version = "0.6.1" +version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.6" +files = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] [[package]] name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, + {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, +] [[package]] name = "mkdocs" -version = "1.3.1" +version = "1.4.3" description = "Project documentation with Markdown." -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "mkdocs-1.4.3-py3-none-any.whl", hash = "sha256:6ee46d309bda331aac915cd24aab882c179a933bd9e77b80ce7d2eaaa3f689dd"}, + {file = "mkdocs-1.4.3.tar.gz", hash = "sha256:5955093bbd4dd2e9403c5afaf57324ad8b04f16886512a3ee6ef828956481c57"}, +] [package.dependencies] -click = ">=3.3" +click = ">=7.0" +colorama = {version = ">=0.4", markers = "platform_system == \"Windows\""} ghp-import = ">=1.0" -importlib-metadata = ">=4.3" -Jinja2 = ">=2.10.2" -Markdown = ">=3.2.1,<3.4" +importlib-metadata = {version = ">=4.3", markers = "python_version < \"3.10\""} +jinja2 = ">=2.11.1" +markdown = ">=3.2.1,<3.4" mergedeep = ">=1.3.4" packaging = ">=20.5" -PyYAML = ">=3.10" +pyyaml = ">=5.1" pyyaml-env-tag = ">=0.1" watchdog = ">=2.0" [package.extras] i18n = ["babel (>=2.9.0)"] +min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-import (==1.0)", "importlib-metadata (==4.3)", "jinja2 (==2.11.1)", "markdown (==3.2.1)", "markupsafe (==2.0.1)", "mergedeep (==1.3.4)", "packaging (==20.5)", "pyyaml (==5.1)", "pyyaml-env-tag (==0.1)", "typing-extensions (==3.10)", "watchdog (==2.0)"] [[package]] name = "mkdocs-autorefs" version = "0.4.1" description = "Automatically link across pages in MkDocs." -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "mkdocs-autorefs-0.4.1.tar.gz", hash = "sha256:70748a7bd025f9ecd6d6feeba8ba63f8e891a1af55f48e366d6d6e78493aba84"}, + {file = "mkdocs_autorefs-0.4.1-py3-none-any.whl", hash = "sha256:a2248a9501b29dc0cc8ba4c09f4f47ff121945f6ce33d760f145d6f89d313f5b"}, +] [package.dependencies] Markdown = ">=3.3" @@ -476,51 +1036,66 @@ mkdocs = ">=1.1" [[package]] name = "mkdocs-material" -version = "8.3.9" +version = "8.5.8" description = "Documentation that simply works" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "mkdocs_material-8.5.8-py3-none-any.whl", hash = "sha256:7ff092299e3a63cef99cd87e4a6cc7e7d9ec31fd190d766fd147c35572e6d593"}, + {file = "mkdocs_material-8.5.8.tar.gz", hash = "sha256:61396251819cf7f547f70a09ce6a7edb2ff5d32e47b9199769020b2d20a83d44"}, +] [package.dependencies] jinja2 = ">=3.0.2" markdown = ">=3.2" -mkdocs = ">=1.3.0" -mkdocs-material-extensions = ">=1.0.3" +mkdocs = ">=1.4.0" +mkdocs-material-extensions = ">=1.1" pygments = ">=2.12" pymdown-extensions = ">=9.4" +requests = ">=2.26" [[package]] name = "mkdocs-material-extensions" -version = "1.0.3" -description = "Extension pack for Python Markdown." -category = "dev" +version = "1.1.1" +description = "Extension pack for Python Markdown and MkDocs Material." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "mkdocs_material_extensions-1.1.1-py3-none-any.whl", hash = "sha256:e41d9f38e4798b6617ad98ca8f7f1157b1e4385ac1459ca1e4ea219b556df945"}, + {file = "mkdocs_material_extensions-1.1.1.tar.gz", hash = "sha256:9c003da71e2cc2493d910237448c672e00cefc800d3d6ae93d2fc69979e3bd93"}, +] [[package]] name = "mkdocs-version-annotations" version = "1.0.0" description = "MkDocs plugin to add custom admonitions for documenting version differences" -category = "dev" optional = false python-versions = ">=3.7,<4.0" +files = [ + {file = "mkdocs-version-annotations-1.0.0.tar.gz", hash = "sha256:6786024b37d27b330fda240b76ebec8e7ce48bd5a9d7a66e99804559d088dffa"}, + {file = "mkdocs_version_annotations-1.0.0-py3-none-any.whl", hash = "sha256:385004eb4a7530dd87a227e08cd907ce7a8fe21fdf297720a4149c511bcf05f5"}, +] [[package]] name = "mkdocstrings" -version = "0.19.0" +version = "0.22.0" description = "Automatic documentation from sources, for MkDocs." -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "mkdocstrings-0.22.0-py3-none-any.whl", hash = "sha256:2d4095d461554ff6a778fdabdca3c00c468c2f1459d469f7a7f622a2b23212ba"}, + {file = "mkdocstrings-0.22.0.tar.gz", hash = "sha256:82a33b94150ebb3d4b5c73bab4598c3e21468c79ec072eff6931c8f3bfc38256"}, +] [package.dependencies] +importlib-metadata = {version = ">=4.6", markers = "python_version < \"3.10\""} Jinja2 = ">=2.11.1" Markdown = ">=3.3" MarkupSafe = ">=1.1" mkdocs = ">=1.2" mkdocs-autorefs = ">=0.3.1" pymdown-extensions = ">=6.3" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.10\""} [package.extras] crystal = ["mkdocstrings-crystal (>=0.3.4)"] @@ -529,28 +1104,54 @@ python-legacy = ["mkdocstrings-python-legacy (>=0.2.1)"] [[package]] name = "mkdocstrings-python" -version = "0.7.1" +version = "1.1.2" description = "A Python handler for mkdocstrings." -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "mkdocstrings_python-1.1.2-py3-none-any.whl", hash = "sha256:c2b652a850fec8e85034a9cdb3b45f8ad1a558686edc20ed1f40b4e17e62070f"}, + {file = "mkdocstrings_python-1.1.2.tar.gz", hash = "sha256:f28bdcacb9bcdb44b6942a5642c1ea8b36870614d33e29e3c923e204a8d8ed61"}, +] [package.dependencies] -griffe = ">=0.11.1" -mkdocstrings = ">=0.19" +griffe = ">=0.24" +mkdocstrings = ">=0.20" [[package]] name = "mypy" version = "0.961" description = "Optional static typing for Python" -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "mypy-0.961-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:697540876638ce349b01b6786bc6094ccdaba88af446a9abb967293ce6eaa2b0"}, + {file = "mypy-0.961-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b117650592e1782819829605a193360a08aa99f1fc23d1d71e1a75a142dc7e15"}, + {file = "mypy-0.961-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bdd5ca340beffb8c44cb9dc26697628d1b88c6bddf5c2f6eb308c46f269bb6f3"}, + {file = "mypy-0.961-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3e09f1f983a71d0672bbc97ae33ee3709d10c779beb613febc36805a6e28bb4e"}, + {file = "mypy-0.961-cp310-cp310-win_amd64.whl", hash = "sha256:e999229b9f3198c0c880d5e269f9f8129c8862451ce53a011326cad38b9ccd24"}, + {file = "mypy-0.961-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b24be97351084b11582fef18d79004b3e4db572219deee0212078f7cf6352723"}, + {file = "mypy-0.961-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f4a21d01fc0ba4e31d82f0fff195682e29f9401a8bdb7173891070eb260aeb3b"}, + {file = "mypy-0.961-cp36-cp36m-win_amd64.whl", hash = "sha256:439c726a3b3da7ca84a0199a8ab444cd8896d95012c4a6c4a0d808e3147abf5d"}, + {file = "mypy-0.961-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5a0b53747f713f490affdceef835d8f0cb7285187a6a44c33821b6d1f46ed813"}, + {file = "mypy-0.961-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0e9f70df36405c25cc530a86eeda1e0867863d9471fe76d1273c783df3d35c2e"}, + {file = "mypy-0.961-cp37-cp37m-win_amd64.whl", hash = "sha256:b88f784e9e35dcaa075519096dc947a388319cb86811b6af621e3523980f1c8a"}, + {file = "mypy-0.961-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d5aaf1edaa7692490f72bdb9fbd941fbf2e201713523bdb3f4038be0af8846c6"}, + {file = "mypy-0.961-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9f5f5a74085d9a81a1f9c78081d60a0040c3efb3f28e5c9912b900adf59a16e6"}, + {file = "mypy-0.961-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f4b794db44168a4fc886e3450201365c9526a522c46ba089b55e1f11c163750d"}, + {file = "mypy-0.961-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:64759a273d590040a592e0f4186539858c948302c653c2eac840c7a3cd29e51b"}, + {file = "mypy-0.961-cp38-cp38-win_amd64.whl", hash = "sha256:63e85a03770ebf403291ec50097954cc5caf2a9205c888ce3a61bd3f82e17569"}, + {file = "mypy-0.961-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f1332964963d4832a94bebc10f13d3279be3ce8f6c64da563d6ee6e2eeda932"}, + {file = "mypy-0.961-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:006be38474216b833eca29ff6b73e143386f352e10e9c2fbe76aa8549e5554f5"}, + {file = "mypy-0.961-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9940e6916ed9371809b35b2154baf1f684acba935cd09928952310fbddaba648"}, + {file = "mypy-0.961-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a5ea0875a049de1b63b972456542f04643daf320d27dc592d7c3d9cd5d9bf950"}, + {file = "mypy-0.961-cp39-cp39-win_amd64.whl", hash = "sha256:1ece702f29270ec6af25db8cf6185c04c02311c6bb21a69f423d40e527b75c56"}, + {file = "mypy-0.961-py3-none-any.whl", hash = "sha256:03c6cc893e7563e7b2949b969e63f02c000b32502a1b4d1314cabe391aa87d66"}, + {file = "mypy-0.961.tar.gz", hash = "sha256:f730d56cb924d371c26b8eaddeea3cc07d78ff51c521c6d04899ac6904b75492"}, +] [package.dependencies] mypy-extensions = ">=0.4.3" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typed-ast = {version = ">=1.4.0,<2", markers = "python_version < \"3.8\""} typing-extensions = ">=3.10" [package.extras] @@ -560,19 +1161,25 @@ reports = ["lxml"] [[package]] name = "mypy-extensions" -version = "0.4.3" -description = "Experimental type system extensions for programs checked with the mypy typechecker." -category = "dev" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." optional = false -python-versions = "*" +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] [[package]] name = "napalm" -version = "4.0.0" +version = "4.1.0" description = "Network Automation and Programmability Abstraction Layer with Multivendor support" -category = "main" optional = true python-versions = "*" +files = [ + {file = "napalm-4.1.0-py2.py3-none-any.whl", hash = "sha256:14a5b7759a0247a26fff2c444b1cfc150a08224de8addf4076c384845285bf5b"}, + {file = "napalm-4.1.0.tar.gz", hash = "sha256:3b3e18efd556861c056ba509eb46f5ffc9e3e6c42db399fa76b6ea9af272c17a"}, +] [package.dependencies] cffi = ">=1.11.3" @@ -582,7 +1189,7 @@ junos-eznc = ">=2.6.3" lxml = ">=4.3.0" ncclient = "*" netaddr = "*" -netmiko = ">=4.0.0" +netmiko = ">=4.1.0" netutils = ">=1.0.0" paramiko = ">=2.6.0" pyeapi = ">=0.8.2" @@ -590,7 +1197,7 @@ pyYAML = "*" requests = ">=2.7.0" scp = "*" setuptools = ">=38.4.0" -textfsm = "<=1.1.2" +textfsm = "*" ttp = "*" ttp-templates = "*" typing-extensions = ">=4.3.0" @@ -599,9 +1206,11 @@ typing-extensions = ">=4.3.0" name = "ncclient" version = "0.6.13" description = "Python library for NETCONF clients" -category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "ncclient-0.6.13.tar.gz", hash = "sha256:f9f8cea8bcbe057e1b948b9cd1b241eafb8a3f73c4981fbdfa1cc6ed69c0a7b3"}, +] [package.dependencies] lxml = ">=3.3.0" @@ -613,158 +1222,178 @@ six = "*" name = "netaddr" version = "0.8.0" description = "A network address manipulation library for Python" -category = "main" optional = true python-versions = "*" +files = [ + {file = "netaddr-0.8.0-py2.py3-none-any.whl", hash = "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac"}, + {file = "netaddr-0.8.0.tar.gz", hash = "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243"}, +] [[package]] name = "netmiko" -version = "4.1.2" +version = "4.2.0" description = "Multi-vendor library to simplify legacy CLI connections to network devices" -category = "main" optional = true -python-versions = "*" +python-versions = ">=3.7,<4.0" +files = [ + {file = "netmiko-4.2.0-py3-none-any.whl", hash = "sha256:8dae36263edc0b5ca5373d3d9ec428f38efd050ecfddac9c0698d0e65082bb3b"}, + {file = "netmiko-4.2.0.tar.gz", hash = "sha256:7adde6fe3ea63336228f49a863650c2d83fb0e680e0f0d158b5b0fb04c4100e1"}, +] [package.dependencies] ntc-templates = ">=2.0.0" -paramiko = ">=2.7.2" -pyserial = "*" +paramiko = ">=2.9.5" +pyserial = ">=3.3" pyyaml = ">=5.3" -scp = ">=0.13.3" -setuptools = ">=38.4.0" -tenacity = "*" -textfsm = "1.1.2" +scp = ">=0.13.6" +textfsm = ">=1.1.3" [[package]] name = "ntc-templates" -version = "3.1.0" +version = "3.5.0" description = "TextFSM Templates for Network Devices, and Python wrapper for TextFSM's CliTable." -category = "main" optional = true -python-versions = ">=3.6,<4.0" - +python-versions = ">=3.7,<4.0" +files = [ + {file = "ntc_templates-3.5.0-py3-none-any.whl", hash = "sha256:86d75c077eb1ceb97f4f8c69c9e3c7a32b08210ceb8228e5fa4e87e080746fd4"}, + {file = "ntc_templates-3.5.0.tar.gz", hash = "sha256:ee0dab4440dab1b3286549f8c08695b30037c1f36f55763c5a39005525f722c7"}, +] + [package.dependencies] textfsm = ">=1.1.0,<2.0.0" [[package]] name = "packaging" -version = "21.3" +version = "23.1" description = "Core utilities for Python packages" -category = "dev" optional = false -python-versions = ">=3.6" - -[package.dependencies] -pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" +python-versions = ">=3.7" +files = [ + {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, + {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, +] [[package]] name = "paramiko" -version = "2.11.0" +version = "3.2.0" description = "SSH2 protocol library" -category = "main" optional = true -python-versions = "*" +python-versions = ">=3.6" +files = [ + {file = "paramiko-3.2.0-py3-none-any.whl", hash = "sha256:df0f9dd8903bc50f2e10580af687f3015bf592a377cd438d2ec9546467a14eb8"}, + {file = "paramiko-3.2.0.tar.gz", hash = "sha256:93cdce625a8a1dc12204439d45033f3261bdb2c201648cfcdc06f9fd0f94ec29"}, +] [package.dependencies] -bcrypt = ">=3.1.3" -cryptography = ">=2.5" -pynacl = ">=1.0.1" -six = "*" +bcrypt = ">=3.2" +cryptography = ">=3.3" +pynacl = ">=1.5" [package.extras] -all = ["bcrypt (>=3.1.3)", "gssapi (>=1.4.1)", "invoke (>=1.3)", "pyasn1 (>=0.1.7)", "pynacl (>=1.0.1)", "pywin32 (>=2.1.8)"] -ed25519 = ["bcrypt (>=3.1.3)", "pynacl (>=1.0.1)"] +all = ["gssapi (>=1.4.1)", "invoke (>=2.0)", "pyasn1 (>=0.1.7)", "pywin32 (>=2.1.8)"] gssapi = ["gssapi (>=1.4.1)", "pyasn1 (>=0.1.7)", "pywin32 (>=2.1.8)"] -invoke = ["invoke (>=1.3)"] +invoke = ["invoke (>=2.0)"] [[package]] name = "pathspec" -version = "0.10.1" +version = "0.11.1" description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, + {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, +] [[package]] name = "pbr" -version = "5.10.0" +version = "5.11.1" description = "Python Build Reasonableness" -category = "dev" optional = false python-versions = ">=2.6" +files = [ + {file = "pbr-5.11.1-py2.py3-none-any.whl", hash = "sha256:567f09558bae2b3ab53cb3c1e2e33e726ff3338e7bae3db5dc954b3a44eef12b"}, + {file = "pbr-5.11.1.tar.gz", hash = "sha256:aefc51675b0b533d56bb5fd1c8c6c0522fe31896679882e1c4c63d5e4a0fccb3"}, +] [[package]] name = "platformdirs" -version = "2.5.2" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" +version = "3.9.1" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." optional = false python-versions = ">=3.7" +files = [ + {file = "platformdirs-3.9.1-py3-none-any.whl", hash = "sha256:ad8291ae0ae5072f66c16945166cb11c63394c7a3ad1b1bc9828ca3162da8c2f"}, + {file = "platformdirs-3.9.1.tar.gz", hash = "sha256:1b42b450ad933e981d56e59f1b97495428c9bd60698baab9f3eb3d00d5822421"}, +] [package.extras] -docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx (>=4)", "sphinx-autodoc-typehints (>=1.12)"] -test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] +docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)"] [[package]] name = "pluggy" -version = "1.0.0" +version = "1.2.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false -python-versions = ">=3.6" - -[package.dependencies] -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +python-versions = ">=3.7" +files = [ + {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, + {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, +] [package.extras] dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - [[package]] name = "pycodestyle" -version = "2.7.0" +version = "2.9.1" description = "Python style guide checker" -category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" +files = [ + {file = "pycodestyle-2.9.1-py2.py3-none-any.whl", hash = "sha256:d1735fc58b418fd7c5f658d28d943854f8a849b01a5d0a1e6f3f3fdd0166804b"}, + {file = "pycodestyle-2.9.1.tar.gz", hash = "sha256:2c9607871d58c76354b697b42f5d57e1ada7d261c261efac224b664affdc5785"}, +] [[package]] name = "pycparser" version = "2.21" description = "C parser in Python" -category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, + {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, +] [[package]] name = "pydocstyle" -version = "6.1.1" +version = "6.3.0" description = "Python docstring style checker" -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "pydocstyle-6.3.0-py3-none-any.whl", hash = "sha256:118762d452a49d6b05e194ef344a55822987a462831ade91ec5c06fd2169d019"}, + {file = "pydocstyle-6.3.0.tar.gz", hash = "sha256:7ce43f0c0ac87b07494eb9c0b462c0b73e6ff276807f204d6b53edc72b7e44e1"}, +] [package.dependencies] -snowballstemmer = "*" +snowballstemmer = ">=2.2.0" [package.extras] -toml = ["toml"] +toml = ["tomli (>=1.2.3)"] [[package]] name = "pyeapi" -version = "0.8.4" +version = "1.0.2" description = "Python Client for eAPI" -category = "main" optional = true python-versions = "*" +files = [ + {file = "pyeapi-1.0.2.tar.gz", hash = "sha256:563a80bb19451df7dd7b6e9e38489dee67ebeaf2f54de296e8ae0b26cd68a297"}, +] [package.dependencies] netaddr = "*" @@ -775,77 +1404,109 @@ test = ["coverage", "mock"] [[package]] name = "pyflakes" -version = "2.3.1" +version = "2.5.0" description = "passive checker of Python programs" -category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.6" +files = [ + {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, + {file = "pyflakes-2.5.0.tar.gz", hash = "sha256:491feb020dca48ccc562a8c0cbe8df07ee13078df59813b83959cbdada312ea3"}, +] [[package]] -name = "Pygments" -version = "2.13.0" +name = "pygments" +version = "2.15.1" description = "Pygments is a syntax highlighting package written in Python." -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "Pygments-2.15.1-py3-none-any.whl", hash = "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1"}, + {file = "Pygments-2.15.1.tar.gz", hash = "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c"}, +] [package.extras] plugins = ["importlib-metadata"] [[package]] name = "pylint" -version = "2.13.9" +version = "2.17.4" description = "python code static checker" -category = "dev" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.2" +files = [ + {file = "pylint-2.17.4-py3-none-any.whl", hash = "sha256:7a1145fb08c251bdb5cca11739722ce64a63db479283d10ce718b2460e54123c"}, + {file = "pylint-2.17.4.tar.gz", hash = "sha256:5dcf1d9e19f41f38e4e85d10f511e5b9c35e1aa74251bf95cdd8cb23584e2db1"}, +] [package.dependencies] -astroid = ">=2.11.5,<=2.12.0-dev0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -dill = ">=0.2" +astroid = ">=2.15.4,<=2.17.0-dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +dill = [ + {version = ">=0.2", markers = "python_version < \"3.11\""}, + {version = ">=0.3.6", markers = "python_version >= \"3.11\""}, +] isort = ">=4.2.5,<6" mccabe = ">=0.6,<0.8" platformdirs = ">=2.2.0" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomlkit = ">=0.10.1" typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} [package.extras] -testutil = ["gitpython (>3)"] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] [[package]] name = "pymdown-extensions" -version = "9.6" +version = "10.1" description = "Extension pack for Python Markdown." -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "pymdown_extensions-10.1-py3-none-any.whl", hash = "sha256:ef25dbbae530e8f67575d222b75ff0649b1e841e22c2ae9a20bad9472c2207dc"}, + {file = "pymdown_extensions-10.1.tar.gz", hash = "sha256:508009b211373058debb8247e168de4cbcb91b1bff7b5e961b2c3e864e00b195"}, +] [package.dependencies] markdown = ">=3.2" +pyyaml = "*" [[package]] -name = "PyNaCl" +name = "pynacl" version = "1.5.0" description = "Python binding to the Networking and Cryptography (NaCl) library" -category = "main" optional = true python-versions = ">=3.6" +files = [ + {file = "PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d"}, + {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858"}, + {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b"}, + {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff"}, + {file = "PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543"}, + {file = "PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93"}, + {file = "PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba"}, +] [package.dependencies] cffi = ">=1.4.1" [package.extras] -docs = ["sphinx (>=1.6.5)", "sphinx_rtd_theme"] +docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"] tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] [[package]] name = "pyparsing" -version = "3.0.9" +version = "3.1.0" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" -optional = false +optional = true python-versions = ">=3.6.8" +files = [ + {file = "pyparsing-3.1.0-py3-none-any.whl", hash = "sha256:d554a96d1a7d3ddaf7183104485bc19fd80543ad6ac5bdb6426719d766fb06c1"}, + {file = "pyparsing-3.1.0.tar.gz", hash = "sha256:edb662d6fe322d6e990b1594b5feaeadf806803359e3d4d42f11e295e588f0ea"}, +] [package.extras] diagrams = ["jinja2", "railroad-diagrams"] @@ -854,157 +1515,251 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pyserial" version = "3.5" description = "Python Serial Port Extension" -category = "main" optional = true python-versions = "*" +files = [ + {file = "pyserial-3.5-py2.py3-none-any.whl", hash = "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0"}, + {file = "pyserial-3.5.tar.gz", hash = "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb"}, +] [package.extras] cp2110 = ["hidapi"] [[package]] name = "pytest" -version = "7.1.3" +version = "7.4.0" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"}, + {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"}, +] [package.dependencies] -attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""} iniconfig = "*" packaging = "*" pluggy = ">=0.12,<2.0" -py = ">=1.8.2" -tomli = ">=1.0.0" +tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""} [package.extras] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] +testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] 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 = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] [package.dependencies] six = ">=1.5" [[package]] name = "pytz" -version = "2022.4" +version = "2023.3" description = "World timezone definitions, modern and historical" -category = "dev" optional = false python-versions = "*" +files = [ + {file = "pytz-2023.3-py2.py3-none-any.whl", hash = "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"}, + {file = "pytz-2023.3.tar.gz", hash = "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588"}, +] [[package]] -name = "PyYAML" -version = "6.0" +name = "pyyaml" +version = "6.0.1" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" - -[[package]] -name = "pyyaml_env_tag" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "pyyaml-env-tag" version = "0.1" description = "A custom YAML tag for referencing environment variables in YAML files. " -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, + {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, +] [package.dependencies] pyyaml = "*" [[package]] name = "requests" -version = "2.28.1" +version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false -python-versions = ">=3.7, <4" +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<3" +charset-normalizer = ">=2,<4" idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<1.27" +urllib3 = ">=1.21.1,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "rich" +version = "13.4.2" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "rich-13.4.2-py3-none-any.whl", hash = "sha256:8f87bc7ee54675732fa66a05ebfe489e27264caeeff3728c945d25971b6485ec"}, + {file = "rich-13.4.2.tar.gz", hash = "sha256:d653d6bccede5844304c605d5aac802c7cf9621efd700b46c7ec2b51ea914898"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" +typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "scp" -version = "0.14.4" +version = "0.14.5" description = "scp module for paramiko" -category = "main" optional = true python-versions = "*" +files = [ + {file = "scp-0.14.5-py2.py3-none-any.whl", hash = "sha256:d224535dd8ed00294f52b0e0e18fde7a6fb7a3d06b97ede9e3f750fa7bf75c09"}, + {file = "scp-0.14.5.tar.gz", hash = "sha256:64f0015899b3d212cb8088e7d40ebaf0686889ff0e243d5c1242efe8b50f053e"}, +] [package.dependencies] paramiko = "*" [[package]] name = "setuptools" -version = "65.4.1" +version = "68.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" -optional = false +optional = true python-versions = ">=3.7" +files = [ + {file = "setuptools-68.0.0-py3-none-any.whl", hash = "sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f"}, + {file = "setuptools-68.0.0.tar.gz", hash = "sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235"}, +] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mock", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] [[package]] name = "smmap" version = "5.0.0" description = "A pure Python implementation of a sliding window memory map manager" -category = "dev" optional = false python-versions = ">=3.6" +files = [ + {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, + {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, +] [[package]] 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 = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] [[package]] -name = "Sphinx" -version = "5.2.3" +name = "sphinx" +version = "6.2.1" description = "Python documentation generator" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "Sphinx-6.2.1.tar.gz", hash = "sha256:6d56a34697bb749ffa0152feafc4b19836c755d90a7c59b72bc7dfd371b9cc6b"}, + {file = "sphinx-6.2.1-py3-none-any.whl", hash = "sha256:97787ff1fa3256a3eef9eda523a63dbf299f7b47e053cfcf684a1c2a8380c912"}, +] [package.dependencies] alabaster = ">=0.7,<0.8" babel = ">=2.9" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -docutils = ">=0.14,<0.20" +docutils = ">=0.18.1,<0.20" imagesize = ">=1.3" importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} Jinja2 = ">=3.0" packaging = ">=21.0" -Pygments = ">=2.12" -requests = ">=2.5.0" +Pygments = ">=2.13" +requests = ">=2.25.0" snowballstemmer = ">=2.0" sphinxcontrib-applehelp = "*" sphinxcontrib-devhelp = "*" @@ -1015,31 +1770,38 @@ sphinxcontrib-serializinghtml = ">=1.1.5" [package.extras] docs = ["sphinxcontrib-websupport"] -lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-bugbear", "flake8-comprehensions", "flake8-simplify", "isort", "mypy (>=0.981)", "sphinx-lint", "types-requests", "types-typed-ast"] -test = ["cython", "html5lib", "pytest (>=4.6)", "typed_ast"] +lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"] +test = ["cython", "filelock", "html5lib", "pytest (>=4.6)"] [[package]] name = "sphinx-rtd-theme" -version = "1.0.0" +version = "1.2.2" description = "Read the Docs theme for Sphinx" -category = "dev" optional = false -python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "sphinx_rtd_theme-1.2.2-py2.py3-none-any.whl", hash = "sha256:6a7e7d8af34eb8fc57d52a09c6b6b9c46ff44aea5951bc831eeb9245378f3689"}, + {file = "sphinx_rtd_theme-1.2.2.tar.gz", hash = "sha256:01c5c5a72e2d025bd23d1f06c59a4831b06e6ce6c01fdd5ebfe9986c0a880fc7"}, +] [package.dependencies] -docutils = "<0.18" -sphinx = ">=1.6" +docutils = "<0.19" +sphinx = ">=1.6,<7" +sphinxcontrib-jquery = ">=4,<5" [package.extras] -dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client"] +dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] [[package]] name = "sphinxcontrib-applehelp" -version = "1.0.2" -description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books" -category = "dev" +version = "1.0.4" +description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" +files = [ + {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, + {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, +] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] @@ -1049,9 +1811,12 @@ 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 = [ + {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, + {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, +] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] @@ -1059,23 +1824,43 @@ test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" -version = "2.0.0" +version = "2.0.1" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, + {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, +] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["html5lib", "pytest"] +[[package]] +name = "sphinxcontrib-jquery" +version = "4.1" +description = "Extension to include jQuery on newer Sphinx releases" +optional = false +python-versions = ">=2.7" +files = [ + {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, + {file = "sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae"}, +] + +[package.dependencies] +Sphinx = ">=1.8" + [[package]] 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 = [ + {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, + {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, +] [package.extras] test = ["flake8", "mypy", "pytest"] @@ -1084,9 +1869,12 @@ test = ["flake8", "mypy", "pytest"] 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 = [ + {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, + {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, +] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] @@ -1096,9 +1884,12 @@ 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 = [ + {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, + {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, +] [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] @@ -1106,34 +1897,28 @@ test = ["pytest"] [[package]] name = "stevedore" -version = "3.5.1" +version = "5.1.0" description = "Manage dynamic plugins for Python applications" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" +files = [ + {file = "stevedore-5.1.0-py3-none-any.whl", hash = "sha256:8cc040628f3cea5d7128f2e76cf486b2251a4e543c7b938f58d9a377f6694a2d"}, + {file = "stevedore-5.1.0.tar.gz", hash = "sha256:a54534acf9b89bc7ed264807013b505bf07f74dbe4bcfa37d32bd063870b087c"}, +] [package.dependencies] -importlib-metadata = {version = ">=1.7.0", markers = "python_version < \"3.8\""} pbr = ">=2.0.0,<2.1.0 || >2.1.0" -[[package]] -name = "tenacity" -version = "8.1.0" -description = "Retry code until it succeeds" -category = "main" -optional = true -python-versions = ">=3.6" - -[package.extras] -doc = ["reno", "sphinx", "tornado (>=4.5)"] - [[package]] name = "textfsm" -version = "1.1.2" +version = "1.1.3" description = "Python module for parsing semi-structured text into python tables." -category = "main" optional = true python-versions = "*" +files = [ + {file = "textfsm-1.1.3-py2.py3-none-any.whl", hash = "sha256:dcbeebc6a6137bed561c71a56344d752e6dbc04ae5ea309252cb70fb97ccc9cd"}, + {file = "textfsm-1.1.3.tar.gz", hash = "sha256:577ef278a9237f5341ae9b682947cefa4a2c1b24dbe486f94f2c95addc6504b5"}, +] [package.dependencies] future = "*" @@ -1143,25 +1928,45 @@ six = "*" name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" -category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] [[package]] name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "dev" optional = false python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + +[[package]] +name = "tomlkit" +version = "0.11.8" +description = "Style preserving TOML library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomlkit-0.11.8-py3-none-any.whl", hash = "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171"}, + {file = "tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"}, +] [[package]] name = "transitions" version = "0.9.0" description = "A lightweight, object-oriented Python state machine implementation with many extensions." -category = "main" optional = true python-versions = "*" +files = [ + {file = "transitions-0.9.0-py2.py3-none-any.whl", hash = "sha256:5687ee8c6a3200830e44f988d16b0045f53293f7a873002d7bff70852331a078"}, + {file = "transitions-0.9.0.tar.gz", hash = "sha256:2f54d11bdb225779d7e729011e93a9fb717668ce3dc65f8d4f5a5d7ba2f48e10"}, +] [package.dependencies] six = "*" @@ -1172,11 +1977,14 @@ test = ["pytest"] [[package]] name = "ttp" -version = "0.9.1" +version = "0.9.5" description = "Template Text Parser" -category = "main" optional = true python-versions = ">=2.7,<4.0" +files = [ + {file = "ttp-0.9.5-py2.py3-none-any.whl", hash = "sha256:2c9fcf560b3f696e9fdd3554dc8e4622cbb10cac1d4fca13a7cf608c4a7fd137"}, + {file = "ttp-0.9.5.tar.gz", hash = "sha256:234414f4d3039d2d1cde09993f89f8db1b34d447f76c6a402555cefac2e59c4e"}, +] [package.extras] docs = ["Sphinx (==4.3.0)", "readthedocs-sphinx-search (==0.1.1)", "sphinx_rtd_theme (==1.0.0)", "sphinxcontrib-applehelp (==1.0.1)", "sphinxcontrib-devhelp (==1.0.1)", "sphinxcontrib-htmlhelp (==2.0.0)", "sphinxcontrib-jsmath (==1.0.1)", "sphinxcontrib-napoleon (==0.7)", "sphinxcontrib-qthelp (==1.0.2)", "sphinxcontrib-serializinghtml (==1.1.5)", "sphinxcontrib-spelling (==7.2.1)"] @@ -1184,11 +1992,14 @@ full = ["cerberus (>=1.3.0,<1.4.0)", "deepdiff (>=5.8.0,<5.9.0)", "jinja2 (>=3.0 [[package]] name = "ttp-templates" -version = "0.3.1" +version = "0.3.5" description = "Template Text Parser Templates collections" -category = "main" optional = true python-versions = ">=3.6,<4.0" +files = [ + {file = "ttp_templates-0.3.5-py3-none-any.whl", hash = "sha256:4985a68640468127a0e31021672039cd88a8b9c3dd9289cad67839209cddaf30"}, + {file = "ttp_templates-0.3.5.tar.gz", hash = "sha256:e59870d4f65bd4aaf89178dc9065a7db8b80a23d5d79b5d6ffd041312d5ec5a6"}, +] [package.dependencies] ttp = ">=0.6.0" @@ -1196,994 +2007,207 @@ ttp = ">=0.6.0" [package.extras] docs = ["mkdocs (==1.2.4)", "mkdocs-material (==7.2.2)", "mkdocs-material-extensions (==1.0.1)", "mkdocstrings[python] (>=0.18.0,<0.19.0)", "pygments (==2.11)", "pymdown-extensions (==9.3)"] -[[package]] -name = "typed-ast" -version = "1.5.4" -description = "a fork of Python 2 and 3 ast modules with type comment support" -category = "dev" -optional = false -python-versions = ">=3.6" - [[package]] name = "typing-extensions" -version = "4.4.0" +version = "4.7.1" description = "Backported and Experimental Type Hints for Python 3.7+" -category = "main" optional = false python-versions = ">=3.7" +files = [ + {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, + {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, +] [[package]] name = "urllib3" -version = "1.26.12" +version = "2.0.4" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" +python-versions = ">=3.7" +files = [ + {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, + {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, +] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] [[package]] name = "watchdog" -version = "2.1.9" +version = "3.0.0" description = "Filesystem events monitoring" -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:336adfc6f5cc4e037d52db31194f7581ff744b67382eb6021c868322e32eef41"}, + {file = "watchdog-3.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a70a8dcde91be523c35b2bf96196edc5730edb347e374c7de7cd20c43ed95397"}, + {file = "watchdog-3.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:adfdeab2da79ea2f76f87eb42a3ab1966a5313e5a69a0213a3cc06ef692b0e96"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b57a1e730af3156d13b7fdddfc23dea6487fceca29fc75c5a868beed29177ae"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ade88d0d778b1b222adebcc0927428f883db07017618a5e684fd03b83342bd9"}, + {file = "watchdog-3.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7e447d172af52ad204d19982739aa2346245cc5ba6f579d16dac4bfec226d2e7"}, + {file = "watchdog-3.0.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9fac43a7466eb73e64a9940ac9ed6369baa39b3bf221ae23493a9ec4d0022674"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:8ae9cda41fa114e28faf86cb137d751a17ffd0316d1c34ccf2235e8a84365c7f"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25f70b4aa53bd743729c7475d7ec41093a580528b100e9a8c5b5efe8899592fc"}, + {file = "watchdog-3.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4f94069eb16657d2c6faada4624c39464f65c05606af50bb7902e036e3219be3"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c5f84b5194c24dd573fa6472685b2a27cc5a17fe5f7b6fd40345378ca6812e3"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3aa7f6a12e831ddfe78cdd4f8996af9cf334fd6346531b16cec61c3b3c0d8da0"}, + {file = "watchdog-3.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:233b5817932685d39a7896b1090353fc8efc1ef99c9c054e46c8002561252fb8"}, + {file = "watchdog-3.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:13bbbb462ee42ec3c5723e1205be8ced776f05b100e4737518c67c8325cf6100"}, + {file = "watchdog-3.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8f3ceecd20d71067c7fd4c9e832d4e22584318983cabc013dbf3f70ea95de346"}, + {file = "watchdog-3.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c9d8c8ec7efb887333cf71e328e39cffbf771d8f8f95d308ea4125bf5f90ba64"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0e06ab8858a76e1219e68c7573dfeba9dd1c0219476c5a44d5333b01d7e1743a"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:d00e6be486affb5781468457b21a6cbe848c33ef43f9ea4a73b4882e5f188a44"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:c07253088265c363d1ddf4b3cdb808d59a0468ecd017770ed716991620b8f77a"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:5113334cf8cf0ac8cd45e1f8309a603291b614191c9add34d33075727a967709"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:51f90f73b4697bac9c9a78394c3acbbd331ccd3655c11be1a15ae6fe289a8c83"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:ba07e92756c97e3aca0912b5cbc4e5ad802f4557212788e72a72a47ff376950d"}, + {file = "watchdog-3.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:d429c2430c93b7903914e4db9a966c7f2b068dd2ebdd2fa9b9ce094c7d459f33"}, + {file = "watchdog-3.0.0-py3-none-win32.whl", hash = "sha256:3ed7c71a9dccfe838c2f0b6314ed0d9b22e77d268c67e015450a29036a81f60f"}, + {file = "watchdog-3.0.0-py3-none-win_amd64.whl", hash = "sha256:4c9956d27be0bb08fc5f30d9d0179a855436e655f046d288e2bcc11adfae893c"}, + {file = "watchdog-3.0.0-py3-none-win_ia64.whl", hash = "sha256:5d9f3a10e02d7371cd929b5d8f11e87d4bad890212ed3901f9b4d68767bee759"}, + {file = "watchdog-3.0.0.tar.gz", hash = "sha256:4d98a320595da7a7c5a18fc48cb633c2e73cda78f93cac2ef42d42bf609a33f9"}, +] [package.extras] watchmedo = ["PyYAML (>=3.10)"] [[package]] name = "wrapt" -version = "1.14.1" +version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +files = [ + {file = "wrapt-1.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ca1cccf838cd28d5a0883b342474c630ac48cac5df0ee6eacc9c7290f76b11c1"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:e826aadda3cae59295b95343db8f3d965fb31059da7de01ee8d1c40a60398b29"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5fc8e02f5984a55d2c653f5fea93531e9836abbd84342c1d1e17abc4a15084c2"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:96e25c8603a155559231c19c0349245eeb4ac0096fe3c1d0be5c47e075bd4f46"}, + {file = "wrapt-1.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:40737a081d7497efea35ab9304b829b857f21558acfc7b3272f908d33b0d9d4c"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:f87ec75864c37c4c6cb908d282e1969e79763e0d9becdfe9fe5473b7bb1e5f09"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:1286eb30261894e4c70d124d44b7fd07825340869945c79d05bda53a40caa079"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:493d389a2b63c88ad56cdc35d0fa5752daac56ca755805b1b0c530f785767d5e"}, + {file = "wrapt-1.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:58d7a75d731e8c63614222bcb21dd992b4ab01a399f1f09dd82af17bbfc2368a"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:21f6d9a0d5b3a207cdf7acf8e58d7d13d463e639f0c7e01d82cdb671e6cb7923"}, + {file = "wrapt-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce42618f67741d4697684e501ef02f29e758a123aa2d669e2d964ff734ee00ee"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41d07d029dd4157ae27beab04d22b8e261eddfc6ecd64ff7000b10dc8b3a5727"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54accd4b8bc202966bafafd16e69da9d5640ff92389d33d28555c5fd4f25ccb7"}, + {file = "wrapt-1.15.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbfbca668dd15b744418265a9607baa970c347eefd0db6a518aaf0cfbd153c0"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:76e9c727a874b4856d11a32fb0b389afc61ce8aaf281ada613713ddeadd1cfec"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e20076a211cd6f9b44a6be58f7eeafa7ab5720eb796975d0c03f05b47d89eb90"}, + {file = "wrapt-1.15.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a74d56552ddbde46c246b5b89199cb3fd182f9c346c784e1a93e4dc3f5ec9975"}, + {file = "wrapt-1.15.0-cp310-cp310-win32.whl", hash = "sha256:26458da5653aa5b3d8dc8b24192f574a58984c749401f98fff994d41d3f08da1"}, + {file = "wrapt-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:75760a47c06b5974aa5e01949bf7e66d2af4d08cb8c1d6516af5e39595397f5e"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ba1711cda2d30634a7e452fc79eabcadaffedf241ff206db2ee93dd2c89a60e7"}, + {file = "wrapt-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56374914b132c702aa9aa9959c550004b8847148f95e1b824772d453ac204a72"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a89ce3fd220ff144bd9d54da333ec0de0399b52c9ac3d2ce34b569cf1a5748fb"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bbe623731d03b186b3d6b0d6f51865bf598587c38d6f7b0be2e27414f7f214e"}, + {file = "wrapt-1.15.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3abbe948c3cbde2689370a262a8d04e32ec2dd4f27103669a45c6929bcdbfe7c"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b67b819628e3b748fd3c2192c15fb951f549d0f47c0449af0764d7647302fda3"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7eebcdbe3677e58dd4c0e03b4f2cfa346ed4049687d839adad68cc38bb559c92"}, + {file = "wrapt-1.15.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:74934ebd71950e3db69960a7da29204f89624dde411afbfb3b4858c1409b1e98"}, + {file = "wrapt-1.15.0-cp311-cp311-win32.whl", hash = "sha256:bd84395aab8e4d36263cd1b9308cd504f6cf713b7d6d3ce25ea55670baec5416"}, + {file = "wrapt-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:a487f72a25904e2b4bbc0817ce7a8de94363bd7e79890510174da9d901c38705"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:4ff0d20f2e670800d3ed2b220d40984162089a6e2c9646fdb09b85e6f9a8fc29"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:9ed6aa0726b9b60911f4aed8ec5b8dd7bf3491476015819f56473ffaef8959bd"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:896689fddba4f23ef7c718279e42f8834041a21342d95e56922e1c10c0cc7afb"}, + {file = "wrapt-1.15.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:75669d77bb2c071333417617a235324a1618dba66f82a750362eccbe5b61d248"}, + {file = "wrapt-1.15.0-cp35-cp35m-win32.whl", hash = "sha256:fbec11614dba0424ca72f4e8ba3c420dba07b4a7c206c8c8e4e73f2e98f4c559"}, + {file = "wrapt-1.15.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fd69666217b62fa5d7c6aa88e507493a34dec4fa20c5bd925e4bc12fce586639"}, + {file = "wrapt-1.15.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b0724f05c396b0a4c36a3226c31648385deb6a65d8992644c12a4963c70326ba"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbeccb1aa40ab88cd29e6c7d8585582c99548f55f9b2581dfc5ba68c59a85752"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38adf7198f8f154502883242f9fe7333ab05a5b02de7d83aa2d88ea621f13364"}, + {file = "wrapt-1.15.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578383d740457fa790fdf85e6d346fda1416a40549fe8db08e5e9bd281c6a475"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:a4cbb9ff5795cd66f0066bdf5947f170f5d63a9274f99bdbca02fd973adcf2a8"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:af5bd9ccb188f6a5fdda9f1f09d9f4c86cc8a539bd48a0bfdc97723970348418"}, + {file = "wrapt-1.15.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:b56d5519e470d3f2fe4aa7585f0632b060d532d0696c5bdfb5e8319e1d0f69a2"}, + {file = "wrapt-1.15.0-cp36-cp36m-win32.whl", hash = "sha256:77d4c1b881076c3ba173484dfa53d3582c1c8ff1f914c6461ab70c8428b796c1"}, + {file = "wrapt-1.15.0-cp36-cp36m-win_amd64.whl", hash = "sha256:077ff0d1f9d9e4ce6476c1a924a3332452c1406e59d90a2cf24aeb29eeac9420"}, + {file = "wrapt-1.15.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5c5aa28df055697d7c37d2099a7bc09f559d5053c3349b1ad0c39000e611d317"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a8564f283394634a7a7054b7983e47dbf39c07712d7b177b37e03f2467a024e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780c82a41dc493b62fc5884fb1d3a3b81106642c5c5c78d6a0d4cbe96d62ba7e"}, + {file = "wrapt-1.15.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e169e957c33576f47e21864cf3fc9ff47c223a4ebca8960079b8bd36cb014fd0"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b02f21c1e2074943312d03d243ac4388319f2456576b2c6023041c4d57cd7019"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f2e69b3ed24544b0d3dbe2c5c0ba5153ce50dcebb576fdc4696d52aa22db6034"}, + {file = "wrapt-1.15.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d787272ed958a05b2c86311d3a4135d3c2aeea4fc655705f074130aa57d71653"}, + {file = "wrapt-1.15.0-cp37-cp37m-win32.whl", hash = "sha256:02fce1852f755f44f95af51f69d22e45080102e9d00258053b79367d07af39c0"}, + {file = "wrapt-1.15.0-cp37-cp37m-win_amd64.whl", hash = "sha256:abd52a09d03adf9c763d706df707c343293d5d106aea53483e0ec8d9e310ad5e"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdb4f085756c96a3af04e6eca7f08b1345e94b53af8921b25c72f096e704e145"}, + {file = "wrapt-1.15.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:230ae493696a371f1dbffaad3dafbb742a4d27a0afd2b1aecebe52b740167e7f"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63424c681923b9f3bfbc5e3205aafe790904053d42ddcc08542181a30a7a51bd"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6bcbfc99f55655c3d93feb7ef3800bd5bbe963a755687cbf1f490a71fb7794b"}, + {file = "wrapt-1.15.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c99f4309f5145b93eca6e35ac1a988f0dc0a7ccf9ccdcd78d3c0adf57224e62f"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b130fe77361d6771ecf5a219d8e0817d61b236b7d8b37cc045172e574ed219e6"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:96177eb5645b1c6985f5c11d03fc2dbda9ad24ec0f3a46dcce91445747e15094"}, + {file = "wrapt-1.15.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d5fe3e099cf07d0fb5a1e23d399e5d4d1ca3e6dfcbe5c8570ccff3e9208274f7"}, + {file = "wrapt-1.15.0-cp38-cp38-win32.whl", hash = "sha256:abd8f36c99512755b8456047b7be10372fca271bf1467a1caa88db991e7c421b"}, + {file = "wrapt-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:b06fa97478a5f478fb05e1980980a7cdf2712015493b44d0c87606c1513ed5b1"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2e51de54d4fb8fb50d6ee8327f9828306a959ae394d3e01a1ba8b2f937747d86"}, + {file = "wrapt-1.15.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0970ddb69bba00670e58955f8019bec4a42d1785db3faa043c33d81de2bf843c"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76407ab327158c510f44ded207e2f76b657303e17cb7a572ffe2f5a8a48aa04d"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd525e0e52a5ff16653a3fc9e3dd827981917d34996600bbc34c05d048ca35cc"}, + {file = "wrapt-1.15.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d37ac69edc5614b90516807de32d08cb8e7b12260a285ee330955604ed9dd29"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:078e2a1a86544e644a68422f881c48b84fef6d18f8c7a957ffd3f2e0a74a0d4a"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2cf56d0e237280baed46f0b5316661da892565ff58309d4d2ed7dba763d984b8"}, + {file = "wrapt-1.15.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7dc0713bf81287a00516ef43137273b23ee414fe41a3c14be10dd95ed98a2df9"}, + {file = "wrapt-1.15.0-cp39-cp39-win32.whl", hash = "sha256:46ed616d5fb42f98630ed70c3529541408166c22cdfd4540b88d5f21006b0eff"}, + {file = "wrapt-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:eef4d64c650f33347c1f9266fa5ae001440b232ad9b98f1f43dfe7a79435c0a6"}, + {file = "wrapt-1.15.0-py3-none-any.whl", hash = "sha256:64b1df0f83706b4ef4cfb4fb0e4c2669100fd7ecacfb59e091fad300d4e04640"}, + {file = "wrapt-1.15.0.tar.gz", hash = "sha256:d06730c6aed78cee4126234cf2d071e01b44b915e725a6cb439a879ec9754a3a"}, +] [[package]] name = "yamllint" -version = "1.28.0" +version = "1.32.0" description = "A linter for YAML files." -category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" +files = [ + {file = "yamllint-1.32.0-py3-none-any.whl", hash = "sha256:d97a66e48da820829d96077d76b8dfbe6c6140f106e558dae87e81ac4e6b30b7"}, + {file = "yamllint-1.32.0.tar.gz", hash = "sha256:d01dde008c65de5b235188ab3110bebc59d18e5c65fc8a58267cd211cd9df34a"}, +] [package.dependencies] pathspec = ">=0.5.3" pyyaml = "*" -setuptools = "*" + +[package.extras] +dev = ["doc8", "flake8", "flake8-import-order", "rstcheck[sphinx]", "sphinx"] [[package]] name = "yamlordereddictloader" version = "0.4.0" description = "YAML loader and dump for PyYAML allowing to keep keys order." -category = "main" optional = true python-versions = "*" +files = [ + {file = "yamlordereddictloader-0.4.0.tar.gz", hash = "sha256:7f30f0b99ea3f877f7cb340c570921fa9d639b7f69cba18be051e27f8de2080e"}, +] [package.dependencies] pyyaml = "*" [[package]] name = "zipp" -version = "3.9.0" +version = "3.16.2" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +files = [ + {file = "zipp-3.16.2-py3-none-any.whl", hash = "sha256:679e51dd4403591b2d6838a48de3d283f3d188412a9782faadf845f298736ba0"}, + {file = "zipp-3.16.2.tar.gz", hash = "sha256:ebc15946aa78bd63458992fc81ec3b6f7b1e92d51c35e6de1c3804e73b799147"}, +] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] -testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] optionals = ["napalm"] [metadata] -lock-version = "1.1" -python-versions = "^3.7" -content-hash = "007e525065bcc650521ddc3f3babe30e32f02092267bc77ff58565863e615916" - -[metadata.files] -alabaster = [ - {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, - {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, -] -astroid = [ - {file = "astroid-2.11.7-py3-none-any.whl", hash = "sha256:86b0a340a512c65abf4368b80252754cda17c02cdbbd3f587dddf98112233e7b"}, - {file = "astroid-2.11.7.tar.gz", hash = "sha256:bb24615c77f4837c707669d16907331374ae8a964650a66999da3f5ca68dc946"}, -] -attrs = [ - {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, - {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, -] -Babel = [ - {file = "Babel-2.10.3-py3-none-any.whl", hash = "sha256:ff56f4892c1c4bf0d814575ea23471c230d544203c7748e8c68f0089478d48eb"}, - {file = "Babel-2.10.3.tar.gz", hash = "sha256:7614553711ee97490f732126dc077f8d0ae084ebc6a96e23db1482afabdb2c51"}, -] -bandit = [ - {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, - {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"}, -] -bcrypt = [ - {file = "bcrypt-4.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:b1023030aec778185a6c16cf70f359cbb6e0c289fd564a7cfa29e727a1c38f8f"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:08d2947c490093a11416df18043c27abe3921558d2c03e2076ccb28a116cb6d0"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0eaa47d4661c326bfc9d08d16debbc4edf78778e6aaba29c1bc7ce67214d4410"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:a522427293d77e1c29e303fc282e2d71864579527a04ddcfda6d4f8396c6c36a"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:fbdaec13c5105f0c4e5c52614d04f0bca5f5af007910daa8b6b12095edaa67b3"}, - {file = "bcrypt-4.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:ca3204d00d3cb2dfed07f2d74a25f12fc12f73e606fcaa6975d1f7ae69cacbb2"}, - {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:089098effa1bc35dc055366740a067a2fc76987e8ec75349eb9484061c54f535"}, - {file = "bcrypt-4.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e9a51bbfe7e9802b5f3508687758b564069ba937748ad7b9e890086290d2f79e"}, - {file = "bcrypt-4.0.1-cp36-abi3-win32.whl", hash = "sha256:2caffdae059e06ac23fce178d31b4a702f2a3264c20bfb5ff541b338194d8fab"}, - {file = "bcrypt-4.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:8a68f4341daf7522fe8d73874de8906f3a339048ba406be6ddc1b3ccb16fc0d9"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf4fa8b2ca74381bb5442c089350f09a3f17797829d958fad058d6e44d9eb83c"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:67a97e1c405b24f19d08890e7ae0c4f7ce1e56a712a016746c8b2d7732d65d4b"}, - {file = "bcrypt-4.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b3b85202d95dd568efcb35b53936c5e3b3600c7cdcc6115ba461df3a8e89f38d"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cbb03eec97496166b704ed663a53680ab57c5084b2fc98ef23291987b525cb7d"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:5ad4d32a28b80c5fa6671ccfb43676e8c1cc232887759d1cd7b6f56ea4355215"}, - {file = "bcrypt-4.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b57adba8a1444faf784394de3436233728a1ecaeb6e07e8c22c8848f179b893c"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:705b2cea8a9ed3d55b4491887ceadb0106acf7c6387699fca771af56b1cdeeda"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:2b3ac11cf45161628f1f3733263e63194f22664bf4d0c0f3ab34099c02134665"}, - {file = "bcrypt-4.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3100851841186c25f127731b9fa11909ab7b1df6fc4b9f8353f4f1fd952fbf71"}, - {file = "bcrypt-4.0.1.tar.gz", hash = "sha256:27d375903ac8261cfe4047f6709d16f7d18d39b1ec92aaf72af989552a650ebd"}, -] -black = [ - {file = "black-22.10.0-1fixedarch-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:5cc42ca67989e9c3cf859e84c2bf014f6633db63d1cbdf8fdb666dcd9e77e3fa"}, - {file = "black-22.10.0-1fixedarch-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5d8f74030e67087b219b032aa33a919fae8806d49c867846bfacde57f43972ef"}, - {file = "black-22.10.0-1fixedarch-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:197df8509263b0b8614e1df1756b1dd41be6738eed2ba9e9769f3880c2b9d7b6"}, - {file = "black-22.10.0-1fixedarch-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:2644b5d63633702bc2c5f3754b1b475378fbbfb481f62319388235d0cd104c2d"}, - {file = "black-22.10.0-1fixedarch-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:e41a86c6c650bcecc6633ee3180d80a025db041a8e2398dcc059b3afa8382cd4"}, - {file = "black-22.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2039230db3c6c639bd84efe3292ec7b06e9214a2992cd9beb293d639c6402edb"}, - {file = "black-22.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ff67aec0a47c424bc99b71005202045dc09270da44a27848d534600ac64fc7"}, - {file = "black-22.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:819dc789f4498ecc91438a7de64427c73b45035e2e3680c92e18795a839ebb66"}, - {file = "black-22.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b9b29da4f564ba8787c119f37d174f2b69cdfdf9015b7d8c5c16121ddc054ae"}, - {file = "black-22.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b49776299fece66bffaafe357d929ca9451450f5466e997a7285ab0fe28e3b"}, - {file = "black-22.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:21199526696b8f09c3997e2b4db8d0b108d801a348414264d2eb8eb2532e540d"}, - {file = "black-22.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e464456d24e23d11fced2bc8c47ef66d471f845c7b7a42f3bd77bf3d1789650"}, - {file = "black-22.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9311e99228ae10023300ecac05be5a296f60d2fd10fff31cf5c1fa4ca4b1988d"}, - {file = "black-22.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fba8a281e570adafb79f7755ac8721b6cf1bbf691186a287e990c7929c7692ff"}, - {file = "black-22.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:915ace4ff03fdfff953962fa672d44be269deb2eaf88499a0f8805221bc68c87"}, - {file = "black-22.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:444ebfb4e441254e87bad00c661fe32df9969b2bf224373a448d8aca2132b395"}, - {file = "black-22.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:974308c58d057a651d182208a484ce80a26dac0caef2895836a92dd6ebd725e0"}, - {file = "black-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ef3925f30e12a184889aac03d77d031056860ccae8a1e519f6cbb742736383"}, - {file = "black-22.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:432247333090c8c5366e69627ccb363bc58514ae3e63f7fc75c54b1ea80fa7de"}, - {file = "black-22.10.0-py3-none-any.whl", hash = "sha256:c957b2b4ea88587b46cf49d1dc17681c1e672864fd7af32fc1e9664d572b3458"}, - {file = "black-22.10.0.tar.gz", hash = "sha256:f513588da599943e0cde4e32cc9879e825d58720d6557062d1098c5ad80080e1"}, -] -cached-property = [ - {file = "cached-property-1.5.2.tar.gz", hash = "sha256:9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130"}, - {file = "cached_property-1.5.2-py2.py3-none-any.whl", hash = "sha256:df4f613cf7ad9a588cc381aaf4a512d26265ecebd5eb9e1ba12f1319eb85a6a0"}, -] -certifi = [ - {file = "certifi-2022.9.24-py3-none-any.whl", hash = "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"}, - {file = "certifi-2022.9.24.tar.gz", hash = "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14"}, -] -cffi = [ - {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, - {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, - {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, - {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, - {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, - {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, - {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, - {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, - {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, - {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, - {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, - {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, - {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, - {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, - {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, - {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, - {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, - {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, - {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, -] -charset-normalizer = [ - {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"}, - {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"}, -] -click = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, -] -colorama = [ - {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"}, - {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"}, -] -coverage = [ - {file = "coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53"}, - {file = "coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a"}, - {file = "coverage-6.5.0-cp310-cp310-win32.whl", hash = "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32"}, - {file = "coverage-6.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e"}, - {file = "coverage-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b"}, - {file = "coverage-6.5.0-cp311-cp311-win32.whl", hash = "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578"}, - {file = "coverage-6.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b"}, - {file = "coverage-6.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4433b90fae13f86fafff0b326453dd42fc9a639a0d9e4eec4d366436d1a41b6d"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4f05d88d9a80ad3cac6244d36dd89a3c00abc16371769f1340101d3cb899fc3"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94e2565443291bd778421856bc975d351738963071e9b8839ca1fc08b42d4bef"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:255758a1e3b61db372ec2736c8e2a1fdfaf563977eedbdf131de003ca5779b7d"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:851cf4ff24062c6aec510a454b2584f6e998cada52d4cb58c5e233d07172e50c"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12adf310e4aafddc58afdb04d686795f33f4d7a6fa67a7a9d4ce7d6ae24d949f"}, - {file = "coverage-6.5.0-cp37-cp37m-win32.whl", hash = "sha256:b5604380f3415ba69de87a289a2b56687faa4fe04dbee0754bfcae433489316b"}, - {file = "coverage-6.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4a8dbc1f0fbb2ae3de73eb0bdbb914180c7abfbf258e90b311dcd4f585d44bd2"}, - {file = "coverage-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d900bb429fdfd7f511f868cedd03a6bbb142f3f9118c09b99ef8dc9bf9643c3c"}, - {file = "coverage-6.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2198ea6fc548de52adc826f62cb18554caedfb1d26548c1b7c88d8f7faa8f6ba"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c4459b3de97b75e3bd6b7d4b7f0db13f17f504f3d13e2a7c623786289dd670e"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20c8ac5386253717e5ccc827caad43ed66fea0efe255727b1053a8154d952398"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b07130585d54fe8dff3d97b93b0e20290de974dc8177c320aeaf23459219c0b"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dbdb91cd8c048c2b09eb17713b0c12a54fbd587d79adcebad543bc0cd9a3410b"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:de3001a203182842a4630e7b8d1a2c7c07ec1b45d3084a83d5d227a3806f530f"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e07f4a4a9b41583d6eabec04f8b68076ab3cd44c20bd29332c6572dda36f372e"}, - {file = "coverage-6.5.0-cp38-cp38-win32.whl", hash = "sha256:6d4817234349a80dbf03640cec6109cd90cba068330703fa65ddf56b60223a6d"}, - {file = "coverage-6.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ccf362abd726b0410bf8911c31fbf97f09f8f1061f8c1cf03dfc4b6372848f6"}, - {file = "coverage-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:633713d70ad6bfc49b34ead4060531658dc6dfc9b3eb7d8a716d5873377ab745"}, - {file = "coverage-6.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:95203854f974e07af96358c0b261f1048d8e1083f2de9b1c565e1be4a3a48cfc"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9023e237f4c02ff739581ef35969c3739445fb059b060ca51771e69101efffe"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:265de0fa6778d07de30bcf4d9dc471c3dc4314a23a3c6603d356a3c9abc2dfcf"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f830ed581b45b82451a40faabb89c84e1a998124ee4212d440e9c6cf70083e5"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b6be138d61e458e18d8e6ddcddd36dd96215edfe5f1168de0b1b32635839b62"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42eafe6778551cf006a7c43153af1211c3aaab658d4d66fa5fcc021613d02518"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:723e8130d4ecc8f56e9a611e73b31219595baa3bb252d539206f7bbbab6ffc1f"}, - {file = "coverage-6.5.0-cp39-cp39-win32.whl", hash = "sha256:d9ecf0829c6a62b9b573c7bb6d4dcd6ba8b6f80be9ba4fc7ed50bf4ac9aecd72"}, - {file = "coverage-6.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987"}, - {file = "coverage-6.5.0-pp36.pp37.pp38-none-any.whl", hash = "sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a"}, - {file = "coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84"}, -] -cryptography = [ - {file = "cryptography-38.0.1-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:10d1f29d6292fc95acb597bacefd5b9e812099d75a6469004fd38ba5471a977f"}, - {file = "cryptography-38.0.1-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:3fc26e22840b77326a764ceb5f02ca2d342305fba08f002a8c1f139540cdfaad"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:3b72c360427889b40f36dc214630e688c2fe03e16c162ef0aa41da7ab1455153"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:194044c6b89a2f9f169df475cc167f6157eb9151cc69af8a2a163481d45cc407"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ca9f6784ea96b55ff41708b92c3f6aeaebde4c560308e5fbbd3173fbc466e94e"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:16fa61e7481f4b77ef53991075de29fc5bacb582a1244046d2e8b4bb72ef66d0"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d4ef6cc305394ed669d4d9eebf10d3a101059bdcf2669c366ec1d14e4fb227bd"}, - {file = "cryptography-38.0.1-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3261725c0ef84e7592597606f6583385fed2a5ec3909f43bc475ade9729a41d6"}, - {file = "cryptography-38.0.1-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0297ffc478bdd237f5ca3a7dc96fc0d315670bfa099c04dc3a4a2172008a405a"}, - {file = "cryptography-38.0.1-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:89ed49784ba88c221756ff4d4755dbc03b3c8d2c5103f6d6b4f83a0fb1e85294"}, - {file = "cryptography-38.0.1-cp36-abi3-win32.whl", hash = "sha256:ac7e48f7e7261207d750fa7e55eac2d45f720027d5703cd9007e9b37bbb59ac0"}, - {file = "cryptography-38.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:ad7353f6ddf285aeadfaf79e5a6829110106ff8189391704c1d8801aa0bae45a"}, - {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:896dd3a66959d3a5ddcfc140a53391f69ff1e8f25d93f0e2e7830c6de90ceb9d"}, - {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d3971e2749a723e9084dd507584e2a2761f78ad2c638aa31e80bc7a15c9db4f9"}, - {file = "cryptography-38.0.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:79473cf8a5cbc471979bd9378c9f425384980fcf2ab6534b18ed7d0d9843987d"}, - {file = "cryptography-38.0.1-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:d9e69ae01f99abe6ad646947bba8941e896cb3aa805be2597a0400e0764b5818"}, - {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5067ee7f2bce36b11d0e334abcd1ccf8c541fc0bbdaf57cdd511fdee53e879b6"}, - {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:3e3a2599e640927089f932295a9a247fc40a5bdf69b0484532f530471a382750"}, - {file = "cryptography-38.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c2e5856248a416767322c8668ef1845ad46ee62629266f84a8f007a317141013"}, - {file = "cryptography-38.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:64760ba5331e3f1794d0bcaabc0d0c39e8c60bf67d09c93dc0e54189dfd7cfe5"}, - {file = "cryptography-38.0.1-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b6c9b706316d7b5a137c35e14f4103e2115b088c412140fdbd5f87c73284df61"}, - {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0163a849b6f315bf52815e238bc2b2346604413fa7c1601eea84bcddb5fb9ac"}, - {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:d1a5bd52d684e49a36582193e0b89ff267704cd4025abefb9e26803adeb3e5fb"}, - {file = "cryptography-38.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:765fa194a0f3372d83005ab83ab35d7c5526c4e22951e46059b8ac678b44fa5a"}, - {file = "cryptography-38.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:52e7bee800ec869b4031093875279f1ff2ed12c1e2f74923e8f49c916afd1d3b"}, - {file = "cryptography-38.0.1.tar.gz", hash = "sha256:1db3d807a14931fa317f96435695d9ec386be7b84b618cc61cfa5d08b0ae33d7"}, -] -dill = [ - {file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"}, - {file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"}, -] -docutils = [ - {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, - {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, -] -flake8 = [ - {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"}, - {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"}, -] -future = [ - {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, -] -ghp-import = [ - {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"}, - {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"}, -] -gitdb = [ - {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"}, - {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"}, -] -GitPython = [ - {file = "GitPython-3.1.29-py3-none-any.whl", hash = "sha256:41eea0deec2deea139b459ac03656f0dd28fc4a3387240ec1d3c259a2c47850f"}, - {file = "GitPython-3.1.29.tar.gz", hash = "sha256:cc36bfc4a3f913e66805a28e84703e419d9c264c1077e537b54f0e1af85dbefd"}, -] -griffe = [ - {file = "griffe-0.22.2-py3-none-any.whl", hash = "sha256:cea5415ac6a92f4a22638e3f1f2e661402bac09fb8e8266936d67185a7e0d0fb"}, - {file = "griffe-0.22.2.tar.gz", hash = "sha256:1408e336a4155392bbd81eed9f2f44bf144e71b9c664e905630affe83bbc088e"}, -] -idna = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, -] -imagesize = [ - {file = "imagesize-1.4.1-py2.py3-none-any.whl", hash = "sha256:0d8d18d08f840c19d0ee7ca1fd82490fdc3729b7ac93f49870406ddde8ef8d8b"}, - {file = "imagesize-1.4.1.tar.gz", hash = "sha256:69150444affb9cb0d5cc5a92b3676f0b2fb7cd9ae39e947a5e11a36b4497cd4a"}, -] -importlib-metadata = [ - {file = "importlib_metadata-5.0.0-py3-none-any.whl", hash = "sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43"}, - {file = "importlib_metadata-5.0.0.tar.gz", hash = "sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab"}, -] -iniconfig = [ - {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, - {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, -] -invoke = [ - {file = "invoke-1.7.3-py3-none-any.whl", hash = "sha256:d9694a865764dd3fd91f25f7e9a97fb41666e822bbb00e670091e3f43933574d"}, - {file = "invoke-1.7.3.tar.gz", hash = "sha256:41b428342d466a82135d5ab37119685a989713742be46e42a3a399d685579314"}, -] -isort = [ - {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"}, - {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"}, -] -Jinja2 = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, -] -junos-eznc = [ - {file = "junos-eznc-2.6.5.tar.gz", hash = "sha256:fa4c3e0390db1e41b364fab3d703592b248e10d15a80fce5acddee00f037fed3"}, - {file = "junos_eznc-2.6.5-py2.py3-none-any.whl", hash = "sha256:0036512d2dfc0e875a0698092eb05fa03e394ed6aa3b0350ce051ef765773d8f"}, -] -lazy-object-proxy = [ - {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-win32.whl", hash = "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9"}, - {file = "lazy_object_proxy-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win32.whl", hash = "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb"}, - {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win32.whl", hash = "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69"}, - {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-win32.whl", hash = "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55"}, - {file = "lazy_object_proxy-1.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-win32.whl", hash = "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f"}, - {file = "lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61"}, - {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"}, -] -lxml = [ - {file = "lxml-4.9.1-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:98cafc618614d72b02185ac583c6f7796202062c41d2eeecdf07820bad3295ed"}, - {file = "lxml-4.9.1-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c62e8dd9754b7debda0c5ba59d34509c4688f853588d75b53c3791983faa96fc"}, - {file = "lxml-4.9.1-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:21fb3d24ab430fc538a96e9fbb9b150029914805d551deeac7d7822f64631dfc"}, - {file = "lxml-4.9.1-cp27-cp27m-win32.whl", hash = "sha256:86e92728ef3fc842c50a5cb1d5ba2bc66db7da08a7af53fb3da79e202d1b2cd3"}, - {file = "lxml-4.9.1-cp27-cp27m-win_amd64.whl", hash = "sha256:4cfbe42c686f33944e12f45a27d25a492cc0e43e1dc1da5d6a87cbcaf2e95627"}, - {file = "lxml-4.9.1-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dad7b164905d3e534883281c050180afcf1e230c3d4a54e8038aa5cfcf312b84"}, - {file = "lxml-4.9.1-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a614e4afed58c14254e67862456d212c4dcceebab2eaa44d627c2ca04bf86837"}, - {file = "lxml-4.9.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:f9ced82717c7ec65a67667bb05865ffe38af0e835cdd78728f1209c8fffe0cad"}, - {file = "lxml-4.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:d9fc0bf3ff86c17348dfc5d322f627d78273eba545db865c3cd14b3f19e57fa5"}, - {file = "lxml-4.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e5f66bdf0976ec667fc4594d2812a00b07ed14d1b44259d19a41ae3fff99f2b8"}, - {file = "lxml-4.9.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fe17d10b97fdf58155f858606bddb4e037b805a60ae023c009f760d8361a4eb8"}, - {file = "lxml-4.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8caf4d16b31961e964c62194ea3e26a0e9561cdf72eecb1781458b67ec83423d"}, - {file = "lxml-4.9.1-cp310-cp310-win32.whl", hash = "sha256:4780677767dd52b99f0af1f123bc2c22873d30b474aa0e2fc3fe5e02217687c7"}, - {file = "lxml-4.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:b122a188cd292c4d2fcd78d04f863b789ef43aa129b233d7c9004de08693728b"}, - {file = "lxml-4.9.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:be9eb06489bc975c38706902cbc6888f39e946b81383abc2838d186f0e8b6a9d"}, - {file = "lxml-4.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:f1be258c4d3dc609e654a1dc59d37b17d7fef05df912c01fc2e15eb43a9735f3"}, - {file = "lxml-4.9.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:927a9dd016d6033bc12e0bf5dee1dde140235fc8d0d51099353c76081c03dc29"}, - {file = "lxml-4.9.1-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9232b09f5efee6a495a99ae6824881940d6447debe272ea400c02e3b68aad85d"}, - {file = "lxml-4.9.1-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:04da965dfebb5dac2619cb90fcf93efdb35b3c6994fea58a157a834f2f94b318"}, - {file = "lxml-4.9.1-cp35-cp35m-win32.whl", hash = "sha256:4d5bae0a37af799207140652a700f21a85946f107a199bcb06720b13a4f1f0b7"}, - {file = "lxml-4.9.1-cp35-cp35m-win_amd64.whl", hash = "sha256:4878e667ebabe9b65e785ac8da4d48886fe81193a84bbe49f12acff8f7a383a4"}, - {file = "lxml-4.9.1-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:1355755b62c28950f9ce123c7a41460ed9743c699905cbe664a5bcc5c9c7c7fb"}, - {file = "lxml-4.9.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:bcaa1c495ce623966d9fc8a187da80082334236a2a1c7e141763ffaf7a405067"}, - {file = "lxml-4.9.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6eafc048ea3f1b3c136c71a86db393be36b5b3d9c87b1c25204e7d397cee9536"}, - {file = "lxml-4.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:13c90064b224e10c14dcdf8086688d3f0e612db53766e7478d7754703295c7c8"}, - {file = "lxml-4.9.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:206a51077773c6c5d2ce1991327cda719063a47adc02bd703c56a662cdb6c58b"}, - {file = "lxml-4.9.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e8f0c9d65da595cfe91713bc1222af9ecabd37971762cb830dea2fc3b3bb2acf"}, - {file = "lxml-4.9.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:8f0a4d179c9a941eb80c3a63cdb495e539e064f8054230844dcf2fcb812b71d3"}, - {file = "lxml-4.9.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:830c88747dce8a3e7525defa68afd742b4580df6aa2fdd6f0855481e3994d391"}, - {file = "lxml-4.9.1-cp36-cp36m-win32.whl", hash = "sha256:1e1cf47774373777936c5aabad489fef7b1c087dcd1f426b621fda9dcc12994e"}, - {file = "lxml-4.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:5974895115737a74a00b321e339b9c3f45c20275d226398ae79ac008d908bff7"}, - {file = "lxml-4.9.1-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:1423631e3d51008871299525b541413c9b6c6423593e89f9c4cfbe8460afc0a2"}, - {file = "lxml-4.9.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:2aaf6a0a6465d39b5ca69688fce82d20088c1838534982996ec46633dc7ad6cc"}, - {file = "lxml-4.9.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:9f36de4cd0c262dd9927886cc2305aa3f2210db437aa4fed3fb4940b8bf4592c"}, - {file = "lxml-4.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ae06c1e4bc60ee076292e582a7512f304abdf6c70db59b56745cca1684f875a4"}, - {file = "lxml-4.9.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:57e4d637258703d14171b54203fd6822fda218c6c2658a7d30816b10995f29f3"}, - {file = "lxml-4.9.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6d279033bf614953c3fc4a0aa9ac33a21e8044ca72d4fa8b9273fe75359d5cca"}, - {file = "lxml-4.9.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a60f90bba4c37962cbf210f0188ecca87daafdf60271f4c6948606e4dabf8785"}, - {file = "lxml-4.9.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6ca2264f341dd81e41f3fffecec6e446aa2121e0b8d026fb5130e02de1402785"}, - {file = "lxml-4.9.1-cp37-cp37m-win32.whl", hash = "sha256:27e590352c76156f50f538dbcebd1925317a0f70540f7dc8c97d2931c595783a"}, - {file = "lxml-4.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:eea5d6443b093e1545ad0210e6cf27f920482bfcf5c77cdc8596aec73523bb7e"}, - {file = "lxml-4.9.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f05251bbc2145349b8d0b77c0d4e5f3b228418807b1ee27cefb11f69ed3d233b"}, - {file = "lxml-4.9.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:487c8e61d7acc50b8be82bda8c8d21d20e133c3cbf41bd8ad7eb1aaeb3f07c97"}, - {file = "lxml-4.9.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8d1a92d8e90b286d491e5626af53afef2ba04da33e82e30744795c71880eaa21"}, - {file = "lxml-4.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:b570da8cd0012f4af9fa76a5635cd31f707473e65a5a335b186069d5c7121ff2"}, - {file = "lxml-4.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ef87fca280fb15342726bd5f980f6faf8b84a5287fcc2d4962ea8af88b35130"}, - {file = "lxml-4.9.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:93e414e3206779ef41e5ff2448067213febf260ba747fc65389a3ddaa3fb8715"}, - {file = "lxml-4.9.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6653071f4f9bac46fbc30f3c7838b0e9063ee335908c5d61fb7a4a86c8fd2036"}, - {file = "lxml-4.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:32a73c53783becdb7eaf75a2a1525ea8e49379fb7248c3eeefb9412123536387"}, - {file = "lxml-4.9.1-cp38-cp38-win32.whl", hash = "sha256:1a7c59c6ffd6ef5db362b798f350e24ab2cfa5700d53ac6681918f314a4d3b94"}, - {file = "lxml-4.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:1436cf0063bba7888e43f1ba8d58824f085410ea2025befe81150aceb123e345"}, - {file = "lxml-4.9.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:4beea0f31491bc086991b97517b9683e5cfb369205dac0148ef685ac12a20a67"}, - {file = "lxml-4.9.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:41fb58868b816c202e8881fd0f179a4644ce6e7cbbb248ef0283a34b73ec73bb"}, - {file = "lxml-4.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:bd34f6d1810d9354dc7e35158aa6cc33456be7706df4420819af6ed966e85448"}, - {file = "lxml-4.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:edffbe3c510d8f4bf8640e02ca019e48a9b72357318383ca60e3330c23aaffc7"}, - {file = "lxml-4.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6d949f53ad4fc7cf02c44d6678e7ff05ec5f5552b235b9e136bd52e9bf730b91"}, - {file = "lxml-4.9.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:079b68f197c796e42aa80b1f739f058dcee796dc725cc9a1be0cdb08fc45b000"}, - {file = "lxml-4.9.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9c3a88d20e4fe4a2a4a84bf439a5ac9c9aba400b85244c63a1ab7088f85d9d25"}, - {file = "lxml-4.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4e285b5f2bf321fc0857b491b5028c5f276ec0c873b985d58d7748ece1d770dd"}, - {file = "lxml-4.9.1-cp39-cp39-win32.whl", hash = "sha256:ef72013e20dd5ba86a8ae1aed7f56f31d3374189aa8b433e7b12ad182c0d2dfb"}, - {file = "lxml-4.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:10d2017f9150248563bb579cd0d07c61c58da85c922b780060dcc9a3aa9f432d"}, - {file = "lxml-4.9.1-pp37-pypy37_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0538747a9d7827ce3e16a8fdd201a99e661c7dee3c96c885d8ecba3c35d1032c"}, - {file = "lxml-4.9.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:0645e934e940107e2fdbe7c5b6fb8ec6232444260752598bc4d09511bd056c0b"}, - {file = "lxml-4.9.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6daa662aba22ef3258934105be2dd9afa5bb45748f4f702a3b39a5bf53a1f4dc"}, - {file = "lxml-4.9.1-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:603a464c2e67d8a546ddaa206d98e3246e5db05594b97db844c2f0a1af37cf5b"}, - {file = "lxml-4.9.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:c4b2e0559b68455c085fb0f6178e9752c4be3bba104d6e881eb5573b399d1eb2"}, - {file = "lxml-4.9.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0f3f0059891d3254c7b5fb935330d6db38d6519ecd238ca4fce93c234b4a0f73"}, - {file = "lxml-4.9.1-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:c852b1530083a620cb0de5f3cd6826f19862bafeaf77586f1aef326e49d95f0c"}, - {file = "lxml-4.9.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:287605bede6bd36e930577c5925fcea17cb30453d96a7b4c63c14a257118dbb9"}, - {file = "lxml-4.9.1.tar.gz", hash = "sha256:fe749b052bb7233fe5d072fcb549221a8cb1a16725c47c37e42b0b9cb3ff2c3f"}, -] -Markdown = [ - {file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"}, - {file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"}, -] -MarkupSafe = [ - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, - {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, - {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, - {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, - {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, - {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, -] -mccabe = [ - {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, - {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, -] -mergedeep = [ - {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"}, - {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"}, -] -mkdocs = [ - {file = "mkdocs-1.3.1-py3-none-any.whl", hash = "sha256:fda92466393127d2da830bc6edc3a625a14b436316d1caf347690648e774c4f0"}, - {file = "mkdocs-1.3.1.tar.gz", hash = "sha256:a41a2ff25ce3bbacc953f9844ba07d106233cd76c88bac1f59cb1564ac0d87ed"}, -] -mkdocs-autorefs = [ - {file = "mkdocs-autorefs-0.4.1.tar.gz", hash = "sha256:70748a7bd025f9ecd6d6feeba8ba63f8e891a1af55f48e366d6d6e78493aba84"}, - {file = "mkdocs_autorefs-0.4.1-py3-none-any.whl", hash = "sha256:a2248a9501b29dc0cc8ba4c09f4f47ff121945f6ce33d760f145d6f89d313f5b"}, -] -mkdocs-material = [ - {file = "mkdocs-material-8.3.9.tar.gz", hash = "sha256:dc82b667d2a83f0de581b46a6d0949732ab77e7638b87ea35b770b33bc02e75a"}, - {file = "mkdocs_material-8.3.9-py2.py3-none-any.whl", hash = "sha256:263f2721f3abe533b61f7c8bed435a0462620912742c919821ac2d698b4bfe67"}, -] -mkdocs-material-extensions = [ - {file = "mkdocs-material-extensions-1.0.3.tar.gz", hash = "sha256:bfd24dfdef7b41c312ede42648f9eb83476ea168ec163b613f9abd12bbfddba2"}, - {file = "mkdocs_material_extensions-1.0.3-py3-none-any.whl", hash = "sha256:a82b70e533ce060b2a5d9eb2bc2e1be201cf61f901f93704b4acf6e3d5983a44"}, -] -mkdocs-version-annotations = [ - {file = "mkdocs-version-annotations-1.0.0.tar.gz", hash = "sha256:6786024b37d27b330fda240b76ebec8e7ce48bd5a9d7a66e99804559d088dffa"}, - {file = "mkdocs_version_annotations-1.0.0-py3-none-any.whl", hash = "sha256:385004eb4a7530dd87a227e08cd907ce7a8fe21fdf297720a4149c511bcf05f5"}, -] -mkdocstrings = [ - {file = "mkdocstrings-0.19.0-py3-none-any.whl", hash = "sha256:3217d510d385c961f69385a670b2677e68e07b5fea4a504d86bf54c006c87c7d"}, - {file = "mkdocstrings-0.19.0.tar.gz", hash = "sha256:efa34a67bad11229d532d89f6836a8a215937548623b64f3698a1df62e01cc3e"}, -] -mkdocstrings-python = [ - {file = "mkdocstrings-python-0.7.1.tar.gz", hash = "sha256:c334b382dca202dfa37071c182418a6df5818356a95d54362a2b24822ca3af71"}, - {file = "mkdocstrings_python-0.7.1-py3-none-any.whl", hash = "sha256:a22060bfa374697678e9af4e62b020d990dad2711c98f7a9fac5c0345bef93c7"}, -] -mypy = [ - {file = "mypy-0.961-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:697540876638ce349b01b6786bc6094ccdaba88af446a9abb967293ce6eaa2b0"}, - {file = "mypy-0.961-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b117650592e1782819829605a193360a08aa99f1fc23d1d71e1a75a142dc7e15"}, - {file = "mypy-0.961-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:bdd5ca340beffb8c44cb9dc26697628d1b88c6bddf5c2f6eb308c46f269bb6f3"}, - {file = "mypy-0.961-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3e09f1f983a71d0672bbc97ae33ee3709d10c779beb613febc36805a6e28bb4e"}, - {file = "mypy-0.961-cp310-cp310-win_amd64.whl", hash = "sha256:e999229b9f3198c0c880d5e269f9f8129c8862451ce53a011326cad38b9ccd24"}, - {file = "mypy-0.961-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b24be97351084b11582fef18d79004b3e4db572219deee0212078f7cf6352723"}, - {file = "mypy-0.961-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f4a21d01fc0ba4e31d82f0fff195682e29f9401a8bdb7173891070eb260aeb3b"}, - {file = "mypy-0.961-cp36-cp36m-win_amd64.whl", hash = "sha256:439c726a3b3da7ca84a0199a8ab444cd8896d95012c4a6c4a0d808e3147abf5d"}, - {file = "mypy-0.961-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5a0b53747f713f490affdceef835d8f0cb7285187a6a44c33821b6d1f46ed813"}, - {file = "mypy-0.961-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0e9f70df36405c25cc530a86eeda1e0867863d9471fe76d1273c783df3d35c2e"}, - {file = "mypy-0.961-cp37-cp37m-win_amd64.whl", hash = "sha256:b88f784e9e35dcaa075519096dc947a388319cb86811b6af621e3523980f1c8a"}, - {file = "mypy-0.961-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:d5aaf1edaa7692490f72bdb9fbd941fbf2e201713523bdb3f4038be0af8846c6"}, - {file = "mypy-0.961-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9f5f5a74085d9a81a1f9c78081d60a0040c3efb3f28e5c9912b900adf59a16e6"}, - {file = "mypy-0.961-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f4b794db44168a4fc886e3450201365c9526a522c46ba089b55e1f11c163750d"}, - {file = "mypy-0.961-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:64759a273d590040a592e0f4186539858c948302c653c2eac840c7a3cd29e51b"}, - {file = "mypy-0.961-cp38-cp38-win_amd64.whl", hash = "sha256:63e85a03770ebf403291ec50097954cc5caf2a9205c888ce3a61bd3f82e17569"}, - {file = "mypy-0.961-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f1332964963d4832a94bebc10f13d3279be3ce8f6c64da563d6ee6e2eeda932"}, - {file = "mypy-0.961-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:006be38474216b833eca29ff6b73e143386f352e10e9c2fbe76aa8549e5554f5"}, - {file = "mypy-0.961-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9940e6916ed9371809b35b2154baf1f684acba935cd09928952310fbddaba648"}, - {file = "mypy-0.961-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a5ea0875a049de1b63b972456542f04643daf320d27dc592d7c3d9cd5d9bf950"}, - {file = "mypy-0.961-cp39-cp39-win_amd64.whl", hash = "sha256:1ece702f29270ec6af25db8cf6185c04c02311c6bb21a69f423d40e527b75c56"}, - {file = "mypy-0.961-py3-none-any.whl", hash = "sha256:03c6cc893e7563e7b2949b969e63f02c000b32502a1b4d1314cabe391aa87d66"}, - {file = "mypy-0.961.tar.gz", hash = "sha256:f730d56cb924d371c26b8eaddeea3cc07d78ff51c521c6d04899ac6904b75492"}, -] -mypy-extensions = [ - {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, - {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, -] -napalm = [ - {file = "napalm-4.0.0-py2.py3-none-any.whl", hash = "sha256:e4289f6966974b485c1f3de3e8f4a11ac2ed2825e975bbd5afc006331b1e4c36"}, - {file = "napalm-4.0.0.tar.gz", hash = "sha256:40e1bd297ac4102c14c0d427c51d61c3a12d5d5bec163750733941ad82a464ee"}, -] -ncclient = [ - {file = "ncclient-0.6.13.tar.gz", hash = "sha256:f9f8cea8bcbe057e1b948b9cd1b241eafb8a3f73c4981fbdfa1cc6ed69c0a7b3"}, -] -netaddr = [ - {file = "netaddr-0.8.0-py2.py3-none-any.whl", hash = "sha256:9666d0232c32d2656e5e5f8d735f58fd6c7457ce52fc21c98d45f2af78f990ac"}, - {file = "netaddr-0.8.0.tar.gz", hash = "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243"}, -] -netmiko = [ - {file = "netmiko-4.1.2-py3-none-any.whl", hash = "sha256:ee1e88ecbd07f619b0bc1e90648f82a64a0adee5968c3068621bbdadbfec5c03"}, - {file = "netmiko-4.1.2.tar.gz", hash = "sha256:f5ede2a28670d3dfd3470061468665f80f9b4906ed20e6b0fb4d9e1c9be67afc"}, -] -ntc-templates = [ - {file = "ntc_templates-3.1.0-py3-none-any.whl", hash = "sha256:e59fbc485a132e0d3eecb6f53fc8e85426cec099ef39678cdc20eec8dccaced6"}, - {file = "ntc_templates-3.1.0.tar.gz", hash = "sha256:7231e4227d46d1a04a03a34e3478b23acee7869942cce62b6722b2c925c2f809"}, -] -packaging = [ - {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, - {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, -] -paramiko = [ - {file = "paramiko-2.11.0-py2.py3-none-any.whl", hash = "sha256:655f25dc8baf763277b933dfcea101d636581df8d6b9774d1fb653426b72c270"}, - {file = "paramiko-2.11.0.tar.gz", hash = "sha256:003e6bee7c034c21fbb051bf83dc0a9ee4106204dd3c53054c71452cc4ec3938"}, -] -pathspec = [ - {file = "pathspec-0.10.1-py3-none-any.whl", hash = "sha256:46846318467efc4556ccfd27816e004270a9eeeeb4d062ce5e6fc7a87c573f93"}, - {file = "pathspec-0.10.1.tar.gz", hash = "sha256:7ace6161b621d31e7902eb6b5ae148d12cfd23f4a249b9ffb6b9fee12084323d"}, -] -pbr = [ - {file = "pbr-5.10.0-py2.py3-none-any.whl", hash = "sha256:da3e18aac0a3c003e9eea1a81bd23e5a3a75d745670dcf736317b7d966887fdf"}, - {file = "pbr-5.10.0.tar.gz", hash = "sha256:cfcc4ff8e698256fc17ea3ff796478b050852585aa5bae79ecd05b2ab7b39b9a"}, -] -platformdirs = [ - {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, - {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, -] -pluggy = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, -] -py = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] -pycodestyle = [ - {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"}, - {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"}, -] -pycparser = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, -] -pydocstyle = [ - {file = "pydocstyle-6.1.1-py3-none-any.whl", hash = "sha256:6987826d6775056839940041beef5c08cc7e3d71d63149b48e36727f70144dc4"}, - {file = "pydocstyle-6.1.1.tar.gz", hash = "sha256:1d41b7c459ba0ee6c345f2eb9ae827cab14a7533a88c5c6f7e94923f72df92dc"}, -] -pyeapi = [ - {file = "pyeapi-0.8.4.tar.gz", hash = "sha256:c33ad1eadd8ebac75f63488df9412081ce0b024c9e1da12a37196a5c60427c54"}, -] -pyflakes = [ - {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, - {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, -] -Pygments = [ - {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"}, - {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"}, -] -pylint = [ - {file = "pylint-2.13.9-py3-none-any.whl", hash = "sha256:705c620d388035bdd9ff8b44c5bcdd235bfb49d276d488dd2c8ff1736aa42526"}, - {file = "pylint-2.13.9.tar.gz", hash = "sha256:095567c96e19e6f57b5b907e67d265ff535e588fe26b12b5ebe1fc5645b2c731"}, -] -pymdown-extensions = [ - {file = "pymdown_extensions-9.6-py3-none-any.whl", hash = "sha256:1e36490adc7bfcef1fdb21bb0306e93af99cff8ec2db199bd17e3bf009768c11"}, - {file = "pymdown_extensions-9.6.tar.gz", hash = "sha256:b956b806439bbff10f726103a941266beb03fbe99f897c7d5e774d7170339ad9"}, -] -PyNaCl = [ - {file = "PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1"}, - {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92"}, - {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394"}, - {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d"}, - {file = "PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858"}, - {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b"}, - {file = "PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff"}, - {file = "PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543"}, - {file = "PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93"}, - {file = "PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba"}, -] -pyparsing = [ - {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, - {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, -] -pyserial = [ - {file = "pyserial-3.5-py2.py3-none-any.whl", hash = "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0"}, - {file = "pyserial-3.5.tar.gz", hash = "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb"}, -] -pytest = [ - {file = "pytest-7.1.3-py3-none-any.whl", hash = "sha256:1377bda3466d70b55e3f5cecfa55bb7cfcf219c7964629b967c37cf0bda818b7"}, - {file = "pytest-7.1.3.tar.gz", hash = "sha256:4f365fec2dff9c1162f834d9f18af1ba13062db0c708bf7b946f8a5c76180c39"}, -] -python-dateutil = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, -] -pytz = [ - {file = "pytz-2022.4-py2.py3-none-any.whl", hash = "sha256:2c0784747071402c6e99f0bafdb7da0fa22645f06554c7ae06bf6358897e9c91"}, - {file = "pytz-2022.4.tar.gz", hash = "sha256:48ce799d83b6f8aab2020e369b627446696619e79645419610b9facd909b3174"}, -] -PyYAML = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, - {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, - {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, - {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, -] -pyyaml_env_tag = [ - {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"}, - {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"}, -] -requests = [ - {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, - {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, -] -scp = [ - {file = "scp-0.14.4-py2.py3-none-any.whl", hash = "sha256:29ddaafbfba60793a8a779694c97d8c150d365668a4ef67616c515b80a69ef2f"}, - {file = "scp-0.14.4.tar.gz", hash = "sha256:54699b92cb68ae34b5928c48a888eab9722a212502cba89aa795bd56597505bd"}, -] -setuptools = [ - {file = "setuptools-65.4.1-py3-none-any.whl", hash = "sha256:1b6bdc6161661409c5f21508763dc63ab20a9ac2f8ba20029aaaa7fdb9118012"}, - {file = "setuptools-65.4.1.tar.gz", hash = "sha256:3050e338e5871e70c72983072fe34f6032ae1cdeeeb67338199c2f74e083a80e"}, -] -six = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, -] -smmap = [ - {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, - {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, -] -snowballstemmer = [ - {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, - {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, -] -Sphinx = [ - {file = "Sphinx-5.2.3.tar.gz", hash = "sha256:5b10cb1022dac8c035f75767799c39217a05fc0fe2d6fe5597560d38e44f0363"}, - {file = "sphinx-5.2.3-py3-none-any.whl", hash = "sha256:7abf6fabd7b58d0727b7317d5e2650ef68765bbe0ccb63c8795fa8683477eaa2"}, -] -sphinx-rtd-theme = [ - {file = "sphinx_rtd_theme-1.0.0-py2.py3-none-any.whl", hash = "sha256:4d35a56f4508cfee4c4fb604373ede6feae2a306731d533f409ef5c3496fdbd8"}, - {file = "sphinx_rtd_theme-1.0.0.tar.gz", hash = "sha256:eec6d497e4c2195fa0e8b2016b337532b8a699a68bcb22a512870e16925c6a5c"}, -] -sphinxcontrib-applehelp = [ - {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, - {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, -] -sphinxcontrib-devhelp = [ - {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, - {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, -] -sphinxcontrib-htmlhelp = [ - {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"}, - {file = "sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl", hash = "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07"}, -] -sphinxcontrib-jsmath = [ - {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, - {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, -] -sphinxcontrib-qthelp = [ - {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, - {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, -] -sphinxcontrib-serializinghtml = [ - {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, - {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, -] -stevedore = [ - {file = "stevedore-3.5.1-py3-none-any.whl", hash = "sha256:df36e6c003264de286d6e589994552d3254052e7fc6a117753d87c471f06de2a"}, - {file = "stevedore-3.5.1.tar.gz", hash = "sha256:1fecadf3d7805b940227f10e6a0140b202c9a24ba5c60cb539159046dc11e8d7"}, -] -tenacity = [ - {file = "tenacity-8.1.0-py3-none-any.whl", hash = "sha256:35525cd47f82830069f0d6b73f7eb83bc5b73ee2fff0437952cedf98b27653ac"}, - {file = "tenacity-8.1.0.tar.gz", hash = "sha256:e48c437fdf9340f5666b92cd7990e96bc5fc955e1298baf4a907e3972067a445"}, -] -textfsm = [ - {file = "textfsm-1.1.2-py2.py3-none-any.whl", hash = "sha256:f3d4e9bd4344935a08e6844e53d6220e2e4fb7e465bee51fa909152ed6bab406"}, - {file = "textfsm-1.1.2.tar.gz", hash = "sha256:85a450b441aff04b1cac726bdb36f35534a5b196cca08c8bc14fddd879c4255c"}, -] -toml = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] -tomli = [ - {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, - {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, -] -transitions = [ - {file = "transitions-0.9.0-py2.py3-none-any.whl", hash = "sha256:5687ee8c6a3200830e44f988d16b0045f53293f7a873002d7bff70852331a078"}, - {file = "transitions-0.9.0.tar.gz", hash = "sha256:2f54d11bdb225779d7e729011e93a9fb717668ce3dc65f8d4f5a5d7ba2f48e10"}, -] -ttp = [ - {file = "ttp-0.9.1-py2.py3-none-any.whl", hash = "sha256:50d3f63a6b311f74d6928cfec0d22a962153c82ba2d1976c599873f32914b5bd"}, - {file = "ttp-0.9.1.tar.gz", hash = "sha256:25c9014d9c3f65e2f135053f9ec1fab98dc698bb999d0e8187dc0e64f8a3f549"}, -] -ttp-templates = [ - {file = "ttp_templates-0.3.1-py3-none-any.whl", hash = "sha256:ea85b5d5cc4db91654bba7c0c2bb1ac004daec78fe0f601787904d152bd08ad5"}, - {file = "ttp_templates-0.3.1.tar.gz", hash = "sha256:1916a8b165071fc818be22664b67eb7698dc439c287369c15559e00ea450a5b3"}, -] -typed-ast = [ - {file = "typed_ast-1.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:669dd0c4167f6f2cd9f57041e03c3c2ebf9063d0757dc89f79ba1daa2bfca9d4"}, - {file = "typed_ast-1.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:211260621ab1cd7324e0798d6be953d00b74e0428382991adfddb352252f1d62"}, - {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:267e3f78697a6c00c689c03db4876dd1efdfea2f251a5ad6555e82a26847b4ac"}, - {file = "typed_ast-1.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c542eeda69212fa10a7ada75e668876fdec5f856cd3d06829e6aa64ad17c8dfe"}, - {file = "typed_ast-1.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:a9916d2bb8865f973824fb47436fa45e1ebf2efd920f2b9f99342cb7fab93f72"}, - {file = "typed_ast-1.5.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:79b1e0869db7c830ba6a981d58711c88b6677506e648496b1f64ac7d15633aec"}, - {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a94d55d142c9265f4ea46fab70977a1944ecae359ae867397757d836ea5a3f47"}, - {file = "typed_ast-1.5.4-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:183afdf0ec5b1b211724dfef3d2cad2d767cbefac291f24d69b00546c1837fb6"}, - {file = "typed_ast-1.5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:639c5f0b21776605dd6c9dbe592d5228f021404dafd377e2b7ac046b0349b1a1"}, - {file = "typed_ast-1.5.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cf4afcfac006ece570e32d6fa90ab74a17245b83dfd6655a6f68568098345ff6"}, - {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed855bbe3eb3715fca349c80174cfcfd699c2f9de574d40527b8429acae23a66"}, - {file = "typed_ast-1.5.4-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6778e1b2f81dfc7bc58e4b259363b83d2e509a65198e85d5700dfae4c6c8ff1c"}, - {file = "typed_ast-1.5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:0261195c2062caf107831e92a76764c81227dae162c4f75192c0d489faf751a2"}, - {file = "typed_ast-1.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2efae9db7a8c05ad5547d522e7dbe62c83d838d3906a3716d1478b6c1d61388d"}, - {file = "typed_ast-1.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7d5d014b7daa8b0bf2eaef684295acae12b036d79f54178b92a2b6a56f92278f"}, - {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:370788a63915e82fd6f212865a596a0fefcbb7d408bbbb13dea723d971ed8bdc"}, - {file = "typed_ast-1.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4e964b4ff86550a7a7d56345c7864b18f403f5bd7380edf44a3c1fb4ee7ac6c6"}, - {file = "typed_ast-1.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:683407d92dc953c8a7347119596f0b0e6c55eb98ebebd9b23437501b28dcbb8e"}, - {file = "typed_ast-1.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4879da6c9b73443f97e731b617184a596ac1235fe91f98d279a7af36c796da35"}, - {file = "typed_ast-1.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3e123d878ba170397916557d31c8f589951e353cc95fb7f24f6bb69adc1a8a97"}, - {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebd9d7f80ccf7a82ac5f88c521115cc55d84e35bf8b446fcd7836eb6b98929a3"}, - {file = "typed_ast-1.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98f80dee3c03455e92796b58b98ff6ca0b2a6f652120c263efdba4d6c5e58f72"}, - {file = "typed_ast-1.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:0fdbcf2fef0ca421a3f5912555804296f0b0960f0418c440f5d6d3abb549f3e1"}, - {file = "typed_ast-1.5.4.tar.gz", hash = "sha256:39e21ceb7388e4bb37f4c679d72707ed46c2fbf2a5609b8b8ebc4b067d977df2"}, -] -typing-extensions = [ - {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, - {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, -] -urllib3 = [ - {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"}, - {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"}, -] -watchdog = [ - {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330"}, - {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d"}, - {file = "watchdog-2.1.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658"}, - {file = "watchdog-2.1.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591"}, - {file = "watchdog-2.1.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33"}, - {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846"}, - {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3"}, - {file = "watchdog-2.1.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654"}, - {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39"}, - {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7"}, - {file = "watchdog-2.1.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd"}, - {file = "watchdog-2.1.9-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3"}, - {file = "watchdog-2.1.9-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d"}, - {file = "watchdog-2.1.9-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_aarch64.whl", hash = "sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_armv7l.whl", hash = "sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_i686.whl", hash = "sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64.whl", hash = "sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_s390x.whl", hash = "sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6"}, - {file = "watchdog-2.1.9-py3-none-win32.whl", hash = "sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1"}, - {file = "watchdog-2.1.9-py3-none-win_amd64.whl", hash = "sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c"}, - {file = "watchdog-2.1.9-py3-none-win_ia64.whl", hash = "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428"}, - {file = "watchdog-2.1.9.tar.gz", hash = "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609"}, -] -wrapt = [ - {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"}, - {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"}, - {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"}, - {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"}, - {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"}, - {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"}, - {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"}, - {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"}, - {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"}, - {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"}, - {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"}, - {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"}, - {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"}, - {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"}, - {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"}, - {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"}, - {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"}, - {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"}, - {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"}, - {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"}, - {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"}, - {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"}, - {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"}, - {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"}, - {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"}, - {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"}, - {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"}, - {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"}, - {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"}, - {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"}, - {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"}, - {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"}, -] -yamllint = [ - {file = "yamllint-1.28.0.tar.gz", hash = "sha256:9e3d8ddd16d0583214c5fdffe806c9344086721f107435f68bad990e5a88826b"}, -] -yamlordereddictloader = [ - {file = "yamlordereddictloader-0.4.0.tar.gz", hash = "sha256:7f30f0b99ea3f877f7cb340c570921fa9d639b7f69cba18be051e27f8de2080e"}, -] -zipp = [ - {file = "zipp-3.9.0-py3-none-any.whl", hash = "sha256:972cfa31bc2fedd3fa838a51e9bc7e64b7fb725a8c00e7431554311f180e9980"}, - {file = "zipp-3.9.0.tar.gz", hash = "sha256:3a7af91c3db40ec72dd9d154ae18e008c69efe8ca88dde4f9a731bb82fe2f9eb"}, -] +lock-version = "2.0" +python-versions = "^3.8" +content-hash = "33c424b51ad569e5ea3394b74c3d46f12ec4c808e52f7e2e56b81adbf323b7f4" diff --git a/pyproject.toml b/pyproject.toml index 73b46b1c..8a1a381b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,12 +11,12 @@ readme = "README.md" keywords = ["netutils", "network utils", "network utilities", "net-utils"] classifiers = [ "Intended Audience :: Developers", - "Development Status :: 4 - Beta", + "Development Status :: 5 - Production/Stable", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", ] include = [ "LICENSE", @@ -25,7 +25,7 @@ include = [ ] [tool.poetry.dependencies] -python = "^3.7" +python = "^3.8" napalm = {version = "^4.0.0", optional = true} [tool.poetry.extras] @@ -45,15 +45,15 @@ sphinx-rtd-theme = "*" toml = "*" yamllint = "*" mypy = "^0.961" -mkdocs = "1.3.1" -mkdocs-material = "8.3.9" -mkdocstrings = "0.19" -mkdocstrings-python = "0.7.1" +mkdocs = "1.4.3" +mkdocs-material = "8.5.8" +mkdocstrings = "0.22.0" +mkdocstrings-python = "1.1.2" mkdocs-version-annotations = "1.0.0" [tool.black] line-length = 120 -target-version = ['py37'] +target-version = ['py311'] include = '\.pyi?$' exclude = ''' ( @@ -70,6 +70,8 @@ exclude = ''' | dist | data_files # This is ran via black within the flatbot process, redundant and slow otherwise )/ + | sros_full_received.py # TODO: Taking very long, should look to fix + | iosxr_full_received.py # TODO: Taking very long, should look to fix | settings.py # This is where you define files that should not be stylized by black # the root of the project ) @@ -85,7 +87,6 @@ good-names="i,ip,j,k,ex,Run,_" # Pylint and Black disagree about how to format multi-line arrays; Black wins. disable = """, line-too-long, - bad-continuation, consider-iterating-dictionary, """ @@ -102,7 +103,7 @@ testpaths = "tests/" addopts = "-vv --doctest-modules -p no:warnings --ignore-glob='*mock*'" [tool.mypy] -python_version = 3.7 +python_version = 3.11 ignore_errors = false disallow_untyped_calls = true disallow_untyped_defs = true diff --git a/tasks.py b/tasks.py index 671c5226..cdbb3296 100644 --- a/tasks.py +++ b/tasks.py @@ -1,7 +1,7 @@ """Tasks for use with Invoke.""" import os import sys -from distutils.util import strtobool +from distutils.util import strtobool # pylint: disable=W0402 from invoke import task @@ -31,7 +31,7 @@ def is_truthy(arg): TOOL_CONFIG = PYPROJECT_CONFIG["tool"]["poetry"] # Can be set to a separate Python version to be used for launching or building image -PYTHON_VER = os.getenv("PYTHON_VER", "3.9") +PYTHON_VER = os.getenv("PYTHON_VER", "3.11") # Name of the docker image/image IMAGE_NAME = os.getenv("IMAGE_NAME", TOOL_CONFIG["name"]) # Tag for the image diff --git a/tests/unit/mock/config/parser/citrix_netscaler/netscaler_full_received.py b/tests/unit/mock/config/parser/base/citrix_netscaler/netscaler_full_received.py similarity index 100% rename from tests/unit/mock/config/parser/citrix_netscaler/netscaler_full_received.py rename to tests/unit/mock/config/parser/base/citrix_netscaler/netscaler_full_received.py diff --git a/tests/unit/mock/config/parser/citrix_netscaler/netscaler_full_sent.txt b/tests/unit/mock/config/parser/base/citrix_netscaler/netscaler_full_sent.txt similarity index 100% rename from tests/unit/mock/config/parser/citrix_netscaler/netscaler_full_sent.txt rename to tests/unit/mock/config/parser/base/citrix_netscaler/netscaler_full_sent.txt