From c16718ad7f05d2c5eab8cf3f3c379c3457ebc86d Mon Sep 17 00:00:00 2001 From: Stefan Pratter Date: Thu, 19 Oct 2023 16:25:46 +0300 Subject: [PATCH] support_202306 (#82) * peeringdb-py commands to setup and run peeringdb server #1219 * modernize --------- Co-authored-by: 20C --- .github/workflows/tests.yml | 2 +- CHANGELOG.md | 9 + CHANGELOG.yaml | 11 +- docs/cli.md | 33 + poetry.lock | 1160 +++++++++++---------- pyproject.toml | 23 +- src/peeringdb/_fetch.py | 68 ++ src/peeringdb/_update.py | 6 +- src/peeringdb/cli.py | 1 + src/peeringdb/commands.py | 65 ++ src/peeringdb/config.py | 2 + tests/data/cache/campus-0.json | 28 + tests/data/cache/carrier-0.json | 62 ++ tests/data/cache/carrierfac-0.json | 23 + tests/data/cache/fac-0.json | 177 ++++ tests/data/cache/ix-0.json | 128 +++ tests/data/cache/ixfac-0.json | 27 + tests/data/cache/ixlan-0.json | 48 + tests/data/cache/ixpfx-0.json | 45 + tests/data/cache/net-0.json | 143 +++ tests/data/cache/netfac-0.json | 29 + tests/data/cache/netixlan-0.json | 39 + tests/data/cache/org-0.json | 194 ++++ tests/data/cache/poc-0.json | 31 + tests/data/config0/config.yaml | 1 + tests/data/full/campus.json | 71 +- tests/data/full/carrier.json | 87 +- tests/data/full/carrierfac.json | 54 +- tests/data/full/fac.json | 219 ++-- tests/data/full/ix.json | 179 ++-- tests/data/full/ixfac.json | 54 +- tests/data/full/ixlan.json | 98 +- tests/data/full/ixpfx.json | 128 +-- tests/data/full/net.json | 204 ++-- tests/data/full/netfac.json | 72 +- tests/data/full/netixlan.json | 82 +- tests/data/full/org.json | 222 ++-- tests/data/full/poc.json | 76 +- tests/data/full_nonunique/campus.json | 71 +- tests/data/full_nonunique/carrier.json | 87 +- tests/data/full_nonunique/carrierfac.json | 54 +- tests/data/full_nonunique/fac.json | 219 ++-- tests/data/full_nonunique/ix.json | 179 ++-- tests/data/full_nonunique/ixfac.json | 54 +- tests/data/full_nonunique/ixlan.json | 98 +- tests/data/full_nonunique/ixpfx.json | 128 +-- tests/data/full_nonunique/net.json | 252 ++--- tests/data/full_nonunique/netfac.json | 72 +- tests/data/full_nonunique/netixlan.json | 82 +- tests/data/full_nonunique/org.json | 222 ++-- tests/data/full_nonunique/poc.json | 76 +- tests/helper/__init__.py | 30 + tests/helper/fetch_cache_files.py | 121 +++ tests/test_cache.py | 209 ++++ tests/test_cli.py | 4 +- tests/test_client.py | 4 +- tests/test_config.py | 2 + tests/test_sync.py | 26 +- tox.ini | 11 +- 59 files changed, 3304 insertions(+), 2598 deletions(-) create mode 100644 tests/data/cache/campus-0.json create mode 100644 tests/data/cache/carrier-0.json create mode 100644 tests/data/cache/carrierfac-0.json create mode 100644 tests/data/cache/fac-0.json create mode 100644 tests/data/cache/ix-0.json create mode 100644 tests/data/cache/ixfac-0.json create mode 100644 tests/data/cache/ixlan-0.json create mode 100644 tests/data/cache/ixpfx-0.json create mode 100644 tests/data/cache/net-0.json create mode 100644 tests/data/cache/netfac-0.json create mode 100644 tests/data/cache/netixlan-0.json create mode 100644 tests/data/cache/org-0.json create mode 100644 tests/data/cache/poc-0.json create mode 100644 tests/helper/fetch_cache_files.py create mode 100644 tests/test_cache.py diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 89ec964..a07185f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -21,7 +21,7 @@ jobs: fail-fast: true matrix: os: [ "ubuntu-latest", "macos-latest" ] - python-version: [ "3.7", "3.8", "3.9", "3.10" ] + python-version: [ "3.8", "3.9", "3.10", "3.11" ] runs-on: ${{ matrix.os }} steps: - name: Check out repository diff --git a/CHANGELOG.md b/CHANGELOG.md index 4baa0ad..9350488 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,15 @@ ## Unreleased +### Added +- django 4.2 support +- python 3.11 support +- support for fetching data from peeringdb cache servers +- support for quickly setting a local snapshot of peeringdb server via the `peeringdb server` commands +### Removed +- python 3.7 support +- django 2.2 support +- django 3.0 support ## 1.5.0 diff --git a/CHANGELOG.yaml b/CHANGELOG.yaml index 9ed336d..49c9c28 100644 --- a/CHANGELOG.yaml +++ b/CHANGELOG.yaml @@ -1,9 +1,16 @@ Unreleased: - added: [] + added: + - django 4.2 support + - python 3.11 support + - support for fetching data from peeringdb cache servers + - support for quickly setting a local snapshot of peeringdb server via the `peeringdb server` commands fixed: [] changed: [] deprecated: [] - removed: [] + removed: + - python 3.7 support + - django 2.2 support + - django 3.0 support security: [] 1.5.0: added: diff --git a/docs/cli.md b/docs/cli.md index 8967778..4724c1d 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -79,3 +79,36 @@ Then add a cron job to keep it in sync, for example, once a day at between midni Or, if your cron supports random: crontab -l | { cat; echo "0 0 * * * sleep \$[RANDOM\%600] ; $(which peeringdb) sync > /dev/null 2>&1"; } | crontab - + + +## local server + +This document outlines the server related commands of the `peeringdb` CLI. These commands help the user to manage a local peeringdb server snapshot for `peeringdb`. + +### Setup server + +The following command will build and setup the PeeringDB server container. + +```sh +$ peeringdb server --setup +``` + +### Start server + +The following command will start the PeeringDB server container. + +```sh +$ peeringdb server --start +``` + +### Stop server + +The following command will stop the PeeringDB server container. + +```sh +$ peeringdb server --stop +``` + +## Error Handling + +If you try to start or stop the server without running the setup first, you will see an error stating that the `peeringdb_server` directory was not found. If this happens, run the `--setup` command and then try again. \ No newline at end of file diff --git a/poetry.lock b/poetry.lock index 5bfdfdc..ab2c2e0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,19 +1,19 @@ -# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. +# This file is automatically @generated by Poetry and should not be changed by hand. [[package]] name = "asgiref" -version = "3.6.0" +version = "3.7.2" description = "ASGI specs, helper code, and adapters" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "asgiref-3.6.0-py3-none-any.whl", hash = "sha256:71e68008da809b957b7ee4b43dbccff33d1b23519fb8344e33f049897077afac"}, - {file = "asgiref-3.6.0.tar.gz", hash = "sha256:9567dfe7bd8d3c8c892227827c41cce860b368104c3431da67a0c5a65a949506"}, + {file = "asgiref-3.7.2-py3-none-any.whl", hash = "sha256:89b2ef2247e3b562a16eef663bc0e2e703ec6468e2fa8a5cd61cd449786d4f6e"}, + {file = "asgiref-3.7.2.tar.gz", hash = "sha256:9e0ce3aa93a819ba5b45120216b23878cf6e8525eb3848653452b4192b92afed"}, ] [package.dependencies] -typing-extensions = {version = "*", markers = "python_version < \"3.8\""} +typing-extensions = {version = ">=4", markers = "python_version < \"3.11\""} [package.extras] tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] @@ -31,56 +31,85 @@ files = [ [[package]] name = "attrs" -version = "22.2.0" +version = "23.1.0" description = "Classes Without Boilerplate" category = "dev" optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, + {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] + +[[package]] +name = "backports-zoneinfo" +version = "0.2.1" +description = "Backport of the standard library zoneinfo module" +category = "dev" +optional = false python-versions = ">=3.6" files = [ - {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, - {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, + {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, + {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, + {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, + {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, ] [package.extras] -cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] -tests = ["attrs[tests-no-zope]", "zope.interface"] -tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] +tzdata = ["tzdata"] [[package]] name = "black" -version = "23.1.0" +version = "23.3.0" description = "The uncompromising code formatter." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "black-23.1.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:b6a92a41ee34b883b359998f0c8e6eb8e99803aa8bf3123bf2b2e6fec505a221"}, - {file = "black-23.1.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:57c18c5165c1dbe291d5306e53fb3988122890e57bd9b3dcb75f967f13411a26"}, - {file = "black-23.1.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:9880d7d419bb7e709b37e28deb5e68a49227713b623c72b2b931028ea65f619b"}, - {file = "black-23.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6663f91b6feca5d06f2ccd49a10f254f9298cc1f7f49c46e498a0771b507104"}, - {file = "black-23.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:9afd3f493666a0cd8f8df9a0200c6359ac53940cbde049dcb1a7eb6ee2dd7074"}, - {file = "black-23.1.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:bfffba28dc52a58f04492181392ee380e95262af14ee01d4bc7bb1b1c6ca8d27"}, - {file = "black-23.1.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c1c476bc7b7d021321e7d93dc2cbd78ce103b84d5a4cf97ed535fbc0d6660648"}, - {file = "black-23.1.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:382998821f58e5c8238d3166c492139573325287820963d2f7de4d518bd76958"}, - {file = "black-23.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bf649fda611c8550ca9d7592b69f0637218c2369b7744694c5e4902873b2f3a"}, - {file = "black-23.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:121ca7f10b4a01fd99951234abdbd97728e1240be89fde18480ffac16503d481"}, - {file = "black-23.1.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:a8471939da5e824b891b25751955be52ee7f8a30a916d570a5ba8e0f2eb2ecad"}, - {file = "black-23.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8178318cb74f98bc571eef19068f6ab5613b3e59d4f47771582f04e175570ed8"}, - {file = "black-23.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a436e7881d33acaf2536c46a454bb964a50eff59b21b51c6ccf5a40601fbef24"}, - {file = "black-23.1.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:a59db0a2094d2259c554676403fa2fac3473ccf1354c1c63eccf7ae65aac8ab6"}, - {file = "black-23.1.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:0052dba51dec07ed029ed61b18183942043e00008ec65d5028814afaab9a22fd"}, - {file = "black-23.1.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:49f7b39e30f326a34b5c9a4213213a6b221d7ae9d58ec70df1c4a307cf2a1580"}, - {file = "black-23.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:162e37d49e93bd6eb6f1afc3e17a3d23a823042530c37c3c42eeeaf026f38468"}, - {file = "black-23.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b70eb40a78dfac24842458476135f9b99ab952dd3f2dab738c1881a9b38b753"}, - {file = "black-23.1.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:a29650759a6a0944e7cca036674655c2f0f63806ddecc45ed40b7b8aa314b651"}, - {file = "black-23.1.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:bb460c8561c8c1bec7824ecbc3ce085eb50005883a6203dcfb0122e95797ee06"}, - {file = "black-23.1.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:c91dfc2c2a4e50df0026f88d2215e166616e0c80e86004d0003ece0488db2739"}, - {file = "black-23.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a951cc83ab535d248c89f300eccbd625e80ab880fbcfb5ac8afb5f01a258ac9"}, - {file = "black-23.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:0680d4380db3719ebcfb2613f34e86c8e6d15ffeabcf8ec59355c5e7b85bb555"}, - {file = "black-23.1.0-py3-none-any.whl", hash = "sha256:7a0f701d314cfa0896b9001df70a530eb2472babb76086344e688829efd97d32"}, - {file = "black-23.1.0.tar.gz", hash = "sha256:b0bd97bea8903f5a2ba7219257a44e3f1f9d00073d6cc1add68f0beec69692ac"}, + {file = "black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"}, + {file = "black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"}, + {file = "black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"}, + {file = "black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"}, + {file = "black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"}, + {file = "black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"}, + {file = "black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"}, + {file = "black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"}, + {file = "black-23.3.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b"}, + {file = "black-23.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2"}, + {file = "black-23.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"}, + {file = "black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"}, + {file = "black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"}, + {file = "black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"}, + {file = "black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"}, + {file = "black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"}, + {file = "black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"}, + {file = "black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"}, + {file = "black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"}, ] [package.dependencies] @@ -90,7 +119,6 @@ packaging = ">=22.0" pathspec = ">=0.9.0" platformdirs = ">=2" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""} typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} [package.extras] @@ -120,26 +148,26 @@ css = ["tinycss2 (>=1.1.0,<1.2)"] [[package]] name = "cachetools" -version = "5.3.0" +version = "5.3.1" description = "Extensible memoizing collections and decorators" category = "dev" optional = false -python-versions = "~=3.7" +python-versions = ">=3.7" files = [ - {file = "cachetools-5.3.0-py3-none-any.whl", hash = "sha256:429e1a1e845c008ea6c85aa35d4b98b65d6a9763eeef3e37e92728a12d1de9d4"}, - {file = "cachetools-5.3.0.tar.gz", hash = "sha256:13dfddc7b8df938c21a940dfa6557ce6e94a2f1cdfa58eb90c805721d58f2c14"}, + {file = "cachetools-5.3.1-py3-none-any.whl", hash = "sha256:95ef631eeaea14ba2e36f06437f36463aac3a096799e876ee55e5cdccb102590"}, + {file = "cachetools-5.3.1.tar.gz", hash = "sha256:dce83f2d9b4e1f732a8cd44af8e8fab2dbe46201467fc98b3ef8f269092bf62b"}, ] [[package]] name = "certifi" -version = "2022.12.7" +version = "2023.5.7" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, - {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, + {file = "certifi-2023.5.7-py3-none-any.whl", hash = "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716"}, + {file = "certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"}, ] [[package]] @@ -245,120 +273,103 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.1.0" +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.7.0" files = [ - {file = "charset-normalizer-3.1.0.tar.gz", hash = "sha256:34e0a2f9c370eb95597aae63bf85eb5e96826d81e3dcf88b8886012906f509b5"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e0ac8959c929593fee38da1c2b64ee9778733cdf03c482c9ff1d508b6b593b2b"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d7fc3fca01da18fbabe4625d64bb612b533533ed10045a2ac3dd194bfa656b60"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:04eefcee095f58eaabe6dc3cc2262f3bcd776d2c67005880894f447b3f2cb9c1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20064ead0717cf9a73a6d1e779b23d149b53daf971169289ed2ed43a71e8d3b0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1435ae15108b1cb6fffbcea2af3d468683b7afed0169ad718451f8db5d1aff6f"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c84132a54c750fda57729d1e2599bb598f5fa0344085dbde5003ba429a4798c0"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75f2568b4189dda1c567339b48cba4ac7384accb9c2a7ed655cd86b04055c795"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:11d3bcb7be35e7b1bba2c23beedac81ee893ac9871d0ba79effc7fc01167db6c"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:891cf9b48776b5c61c700b55a598621fdb7b1e301a550365571e9624f270c203"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5f008525e02908b20e04707a4f704cd286d94718f48bb33edddc7d7b584dddc1"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:b06f0d3bf045158d2fb8837c5785fe9ff9b8c93358be64461a1089f5da983137"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:49919f8400b5e49e961f320c735388ee686a62327e773fa5b3ce6721f7e785ce"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22908891a380d50738e1f978667536f6c6b526a2064156203d418f4856d6e86a"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win32.whl", hash = "sha256:12d1a39aa6b8c6f6248bb54550efcc1c38ce0d8096a146638fd4738e42284448"}, - {file = "charset_normalizer-3.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:65ed923f84a6844de5fd29726b888e58c62820e0769b76565480e1fdc3d062f8"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9a3267620866c9d17b959a84dd0bd2d45719b817245e49371ead79ed4f710d19"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6734e606355834f13445b6adc38b53c0fd45f1a56a9ba06c2058f86893ae8017"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f8303414c7b03f794347ad062c0516cee0e15f7a612abd0ce1e25caf6ceb47df"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf53a6cebad0eae578f062c7d462155eada9c172bd8c4d250b8c1d8eb7f916a"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3dc5b6a8ecfdc5748a7e429782598e4f17ef378e3e272eeb1340ea57c9109f41"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e1b25e3ad6c909f398df8921780d6a3d120d8c09466720226fc621605b6f92b1"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ca564606d2caafb0abe6d1b5311c2649e8071eb241b2d64e75a0d0065107e62"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b82fab78e0b1329e183a65260581de4375f619167478dddab510c6c6fb04d9b6"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bd7163182133c0c7701b25e604cf1611c0d87712e56e88e7ee5d72deab3e76b5"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:11d117e6c63e8f495412d37e7dc2e2fff09c34b2d09dbe2bee3c6229577818be"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:cf6511efa4801b9b38dc5546d7547d5b5c6ef4b081c60b23e4d941d0eba9cbeb"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:abc1185d79f47c0a7aaf7e2412a0eb2c03b724581139193d2d82b3ad8cbb00ac"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cb7b2ab0188829593b9de646545175547a70d9a6e2b63bf2cd87a0a391599324"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win32.whl", hash = "sha256:c36bcbc0d5174a80d6cccf43a0ecaca44e81d25be4b7f90f0ed7bcfbb5a00909"}, - {file = "charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:cca4def576f47a09a943666b8f829606bcb17e2bc2d5911a46c8f8da45f56755"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c95f12b74681e9ae127728f7e5409cbbef9cd914d5896ef238cc779b8152373"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fca62a8301b605b954ad2e9c3666f9d97f63872aa4efcae5492baca2056b74ab"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac0aa6cd53ab9a31d397f8303f92c42f534693528fafbdb997c82bae6e477ad9"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3af8e0f07399d3176b179f2e2634c3ce9c1301379a6b8c9c9aeecd481da494f"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5fc78f9e3f501a1614a98f7c54d3969f3ad9bba8ba3d9b438c3bc5d047dd28"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:628c985afb2c7d27a4800bfb609e03985aaecb42f955049957814e0491d4006d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:74db0052d985cf37fa111828d0dd230776ac99c740e1a758ad99094be4f1803d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1e8fcdd8f672a1c4fc8d0bd3a2b576b152d2a349782d1eb0f6b8e52e9954731d"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:04afa6387e2b282cf78ff3dbce20f0cc071c12dc8f685bd40960cc68644cfea6"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:dd5653e67b149503c68c4018bf07e42eeed6b4e956b24c00ccdf93ac79cdff84"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d2686f91611f9e17f4548dbf050e75b079bbc2a82be565832bc8ea9047b61c8c"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win32.whl", hash = "sha256:4155b51ae05ed47199dc5b2a4e62abccb274cee6b01da5b895099b61b1982974"}, - {file = "charset_normalizer-3.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322102cdf1ab682ecc7d9b1c5eed4ec59657a65e1c146a0da342b78f4112db23"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e633940f28c1e913615fd624fcdd72fdba807bf53ea6925d6a588e84e1151531"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3a06f32c9634a8705f4ca9946d667609f52cf130d5548881401f1eb2c39b1e2c"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7381c66e0561c5757ffe616af869b916c8b4e42b367ab29fedc98481d1e74e14"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3573d376454d956553c356df45bb824262c397c6e26ce43e8203c4c540ee0acb"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e89df2958e5159b811af9ff0f92614dabf4ff617c03a4c1c6ff53bf1c399e0e1"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78cacd03e79d009d95635e7d6ff12c21eb89b894c354bd2b2ed0b4763373693b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de5695a6f1d8340b12a5d6d4484290ee74d61e467c39ff03b39e30df62cf83a0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c60b9c202d00052183c9be85e5eaf18a4ada0a47d188a83c8f5c5b23252f649"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f645caaf0008bacf349875a974220f1f1da349c5dbe7c4ec93048cdc785a3326"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea9f9c6034ea2d93d9147818f17c2a0860d41b71c38b9ce4d55f21b6f9165a11"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:80d1543d58bd3d6c271b66abf454d437a438dff01c3e62fdbcd68f2a11310d4b"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:73dc03a6a7e30b7edc5b01b601e53e7fc924b04e1835e8e407c12c037e81adbd"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6f5c2e7bc8a4bf7c426599765b1bd33217ec84023033672c1e9a8b35eaeaaaf8"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win32.whl", hash = "sha256:12a2b561af122e3d94cdb97fe6fb2bb2b82cef0cdca131646fdb940a1eda04f0"}, - {file = "charset_normalizer-3.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:3160a0fd9754aab7d47f95a6b63ab355388d890163eb03b2d2b87ab0a30cfa59"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:38e812a197bf8e71a59fe55b757a84c1f946d0ac114acafaafaf21667a7e169e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6baf0baf0d5d265fa7944feb9f7451cc316bfe30e8df1a61b1bb08577c554f31"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8f25e17ab3039b05f762b0a55ae0b3632b2e073d9c8fc88e89aca31a6198e88f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3747443b6a904001473370d7810aa19c3a180ccd52a7157aacc264a5ac79265e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b116502087ce8a6b7a5f1814568ccbd0e9f6cfd99948aa59b0e241dc57cf739f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d16fd5252f883eb074ca55cb622bc0bee49b979ae4e8639fff6ca3ff44f9f854"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fa558996782fc226b529fdd2ed7866c2c6ec91cee82735c98a197fae39f706"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f6c7a8a57e9405cad7485f4c9d3172ae486cfef1344b5ddd8e5239582d7355e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ac3775e3311661d4adace3697a52ac0bab17edd166087d493b52d4f4f553f9f0"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:10c93628d7497c81686e8e5e557aafa78f230cd9e77dd0c40032ef90c18f2230"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:6f4f4668e1831850ebcc2fd0b1cd11721947b6dc7c00bf1c6bd3c929ae14f2c7"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0be65ccf618c1e7ac9b849c315cc2e8a8751d9cfdaa43027d4f6624bd587ab7e"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:53d0a3fa5f8af98a1e261de6a3943ca631c526635eb5817a87a59d9a57ebf48f"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win32.whl", hash = "sha256:a04f86f41a8916fe45ac5024ec477f41f886b3c435da2d4e3d2709b22ab02af1"}, - {file = "charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:830d2948a5ec37c386d3170c483063798d7879037492540f10a475e3fd6f244b"}, - {file = "charset_normalizer-3.1.0-py3-none-any.whl", hash = "sha256:3d9098b479e78c85080c98e1e35ff40b4a31d8953102bb0fd7d1b6f8a2111a3d"}, + {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.4" description = "Composable command line interface toolkit" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, + {file = "click-8.1.4-py3-none-any.whl", hash = "sha256:2739815aaa5d2c986a88f1e9230c55e17f0caad3d958a5e13ad0797c166db9e3"}, + {file = "click-8.1.4.tar.gz", hash = "sha256:b97d0c74955da062a7d4ef92fadb583806a585b2ea81958a81bd72726cbb8e37"}, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} - -[[package]] -name = "codecov" -version = "2.1.12" -description = "Hosted coverage reports for GitHub, Bitbucket and Gitlab" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "codecov-2.1.12-py2.py3-none-any.whl", hash = "sha256:585dc217dc3d8185198ceb402f85d5cb5dbfa0c5f350a5abcdf9e347776a5b47"}, - {file = "codecov-2.1.12.tar.gz", hash = "sha256:a0da46bb5025426da895af90938def8ee12d37fcbcbbbc15b6dc64cf7ebc51c1"}, -] - -[package.dependencies] -coverage = "*" -requests = ">=2.7.9" [[package]] name = "colorama" @@ -386,63 +397,72 @@ files = [ [[package]] name = "coverage" -version = "7.2.1" +version = "7.2.7" description = "Code coverage measurement for Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "coverage-7.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49567ec91fc5e0b15356da07a2feabb421d62f52a9fff4b1ec40e9e19772f5f8"}, - {file = "coverage-7.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d2ef6cae70168815ed91388948b5f4fcc69681480a0061114db737f957719f03"}, - {file = "coverage-7.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3004765bca3acd9e015794e5c2f0c9a05587f5e698127ff95e9cfba0d3f29339"}, - {file = "coverage-7.2.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cca7c0b7f5881dfe0291ef09ba7bb1582cb92ab0aeffd8afb00c700bf692415a"}, - {file = "coverage-7.2.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2167d116309f564af56f9aa5e75ef710ef871c5f9b313a83050035097b56820"}, - {file = "coverage-7.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:cb5f152fb14857cbe7f3e8c9a5d98979c4c66319a33cad6e617f0067c9accdc4"}, - {file = "coverage-7.2.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:87dc37f16fb5e3a28429e094145bf7c1753e32bb50f662722e378c5851f7fdc6"}, - {file = "coverage-7.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e191a63a05851f8bce77bc875e75457f9b01d42843f8bd7feed2fc26bbe60833"}, - {file = "coverage-7.2.1-cp310-cp310-win32.whl", hash = "sha256:e3ea04b23b114572b98a88c85379e9e9ae031272ba1fb9b532aa934c621626d4"}, - {file = "coverage-7.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:0cf557827be7eca1c38a2480484d706693e7bb1929e129785fe59ec155a59de6"}, - {file = "coverage-7.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:570c21a29493b350f591a4b04c158ce1601e8d18bdcd21db136fbb135d75efa6"}, - {file = "coverage-7.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e872b082b32065ac2834149dc0adc2a2e6d8203080501e1e3c3c77851b466f9"}, - {file = "coverage-7.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fac6343bae03b176e9b58104a9810df3cdccd5cfed19f99adfa807ffbf43cf9b"}, - {file = "coverage-7.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abacd0a738e71b20e224861bc87e819ef46fedba2fb01bc1af83dfd122e9c319"}, - {file = "coverage-7.2.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9256d4c60c4bbfec92721b51579c50f9e5062c21c12bec56b55292464873508"}, - {file = "coverage-7.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:80559eaf6c15ce3da10edb7977a1548b393db36cbc6cf417633eca05d84dd1ed"}, - {file = "coverage-7.2.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:0bd7e628f6c3ec4e7d2d24ec0e50aae4e5ae95ea644e849d92ae4805650b4c4e"}, - {file = "coverage-7.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:09643fb0df8e29f7417adc3f40aaf379d071ee8f0350ab290517c7004f05360b"}, - {file = "coverage-7.2.1-cp311-cp311-win32.whl", hash = "sha256:1b7fb13850ecb29b62a447ac3516c777b0e7a09ecb0f4bb6718a8654c87dfc80"}, - {file = "coverage-7.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:617a94ada56bbfe547aa8d1b1a2b8299e2ec1ba14aac1d4b26a9f7d6158e1273"}, - {file = "coverage-7.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8649371570551d2fd7dee22cfbf0b61f1747cdfb2b7587bb551e4beaaa44cb97"}, - {file = "coverage-7.2.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d2b9b5e70a21474c105a133ba227c61bc95f2ac3b66861143ce39a5ea4b3f84"}, - {file = "coverage-7.2.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae82c988954722fa07ec5045c57b6d55bc1a0890defb57cf4a712ced65b26ddd"}, - {file = "coverage-7.2.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:861cc85dfbf55a7a768443d90a07e0ac5207704a9f97a8eb753292a7fcbdfcfc"}, - {file = "coverage-7.2.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0339dc3237c0d31c3b574f19c57985fcbe494280153bbcad33f2cdf469f4ac3e"}, - {file = "coverage-7.2.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:5928b85416a388dd557ddc006425b0c37e8468bd1c3dc118c1a3de42f59e2a54"}, - {file = "coverage-7.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8d3843ca645f62c426c3d272902b9de90558e9886f15ddf5efe757b12dd376f5"}, - {file = "coverage-7.2.1-cp37-cp37m-win32.whl", hash = "sha256:6a034480e9ebd4e83d1aa0453fd78986414b5d237aea89a8fdc35d330aa13bae"}, - {file = "coverage-7.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6fce673f79a0e017a4dc35e18dc7bb90bf6d307c67a11ad5e61ca8d42b87cbff"}, - {file = "coverage-7.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7f099da6958ddfa2ed84bddea7515cb248583292e16bb9231d151cd528eab657"}, - {file = "coverage-7.2.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:97a3189e019d27e914ecf5c5247ea9f13261d22c3bb0cfcfd2a9b179bb36f8b1"}, - {file = "coverage-7.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a81dbcf6c6c877986083d00b834ac1e84b375220207a059ad45d12f6e518a4e3"}, - {file = "coverage-7.2.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78d2c3dde4c0b9be4b02067185136b7ee4681978228ad5ec1278fa74f5ca3e99"}, - {file = "coverage-7.2.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a209d512d157379cc9ab697cbdbb4cfd18daa3e7eebaa84c3d20b6af0037384"}, - {file = "coverage-7.2.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f3d07edb912a978915576a776756069dede66d012baa503022d3a0adba1b6afa"}, - {file = "coverage-7.2.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8dca3c1706670297851bca1acff9618455122246bdae623be31eca744ade05ec"}, - {file = "coverage-7.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b1991a6d64231a3e5bbe3099fb0dd7c9aeaa4275ad0e0aeff4cb9ef885c62ba2"}, - {file = "coverage-7.2.1-cp38-cp38-win32.whl", hash = "sha256:22c308bc508372576ffa3d2dbc4824bb70d28eeb4fcd79d4d1aed663a06630d0"}, - {file = "coverage-7.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:b0c0d46de5dd97f6c2d1b560bf0fcf0215658097b604f1840365296302a9d1fb"}, - {file = "coverage-7.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4dd34a935de268a133e4741827ae951283a28c0125ddcdbcbba41c4b98f2dfef"}, - {file = "coverage-7.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0f8318ed0f3c376cfad8d3520f496946977abde080439d6689d7799791457454"}, - {file = "coverage-7.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:834c2172edff5a08d78e2f53cf5e7164aacabeb66b369f76e7bb367ca4e2d993"}, - {file = "coverage-7.2.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4d70c853f0546855f027890b77854508bdb4d6a81242a9d804482e667fff6e6"}, - {file = "coverage-7.2.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a6450da4c7afc4534305b2b7d8650131e130610cea448ff240b6ab73d7eab63"}, - {file = "coverage-7.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:99f4dd81b2bb8fc67c3da68b1f5ee1650aca06faa585cbc6818dbf67893c6d58"}, - {file = "coverage-7.2.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bdd3f2f285ddcf2e75174248b2406189261a79e7fedee2ceeadc76219b6faa0e"}, - {file = "coverage-7.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f29351393eb05e6326f044a7b45ed8e38cb4dcc38570d12791f271399dc41431"}, - {file = "coverage-7.2.1-cp39-cp39-win32.whl", hash = "sha256:e2b50ebc2b6121edf352336d503357321b9d8738bb7a72d06fc56153fd3f4cd8"}, - {file = "coverage-7.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:bd5a12239c0006252244f94863f1c518ac256160cd316ea5c47fb1a11b25889a"}, - {file = "coverage-7.2.1-pp37.pp38.pp39-none-any.whl", hash = "sha256:436313d129db7cf5b4ac355dd2bd3f7c7e5294af077b090b85de75f8458b8616"}, - {file = "coverage-7.2.1.tar.gz", hash = "sha256:c77f2a9093ccf329dd523a9b2b3c854c20d2a3d968b6def3b820272ca6732242"}, + {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.dependencies] @@ -453,35 +473,31 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "39.0.2" +version = "41.0.1" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "cryptography-39.0.2-cp36-abi3-macosx_10_12_universal2.whl", hash = "sha256:2725672bb53bb92dc7b4150d233cd4b8c59615cd8288d495eaa86db00d4e5c06"}, - {file = "cryptography-39.0.2-cp36-abi3-macosx_10_12_x86_64.whl", hash = "sha256:23df8ca3f24699167daf3e23e51f7ba7334d504af63a94af468f468b975b7dd7"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:eb40fe69cfc6f5cdab9a5ebd022131ba21453cf7b8a7fd3631f45bbf52bed612"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc0521cce2c1d541634b19f3ac661d7a64f9555135e9d8af3980965be717fd4a"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffd394c7896ed7821a6d13b24657c6a34b6e2650bd84ae063cf11ccffa4f1a97"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:e8a0772016feeb106efd28d4a328e77dc2edae84dfbac06061319fdb669ff828"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:8f35c17bd4faed2bc7797d2a66cbb4f986242ce2e30340ab832e5d99ae60e011"}, - {file = "cryptography-39.0.2-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b49a88ff802e1993b7f749b1eeb31134f03c8d5c956e3c125c75558955cda536"}, - {file = "cryptography-39.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5f8c682e736513db7d04349b4f6693690170f95aac449c56f97415c6980edef5"}, - {file = "cryptography-39.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:d7d84a512a59f4412ca8549b01f94be4161c94efc598bf09d027d67826beddc0"}, - {file = "cryptography-39.0.2-cp36-abi3-win32.whl", hash = "sha256:c43ac224aabcbf83a947eeb8b17eaf1547bce3767ee2d70093b461f31729a480"}, - {file = "cryptography-39.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:788b3921d763ee35dfdb04248d0e3de11e3ca8eb22e2e48fef880c42e1f3c8f9"}, - {file = "cryptography-39.0.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d15809e0dbdad486f4ad0979753518f47980020b7a34e9fc56e8be4f60702fac"}, - {file = "cryptography-39.0.2-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:50cadb9b2f961757e712a9737ef33d89b8190c3ea34d0fb6675e00edbe35d074"}, - {file = "cryptography-39.0.2-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:103e8f7155f3ce2ffa0049fe60169878d47a4364b277906386f8de21c9234aa1"}, - {file = "cryptography-39.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:6236a9610c912b129610eb1a274bdc1350b5df834d124fa84729ebeaf7da42c3"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e944fe07b6f229f4c1a06a7ef906a19652bdd9fd54c761b0ff87e83ae7a30354"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:35d658536b0a4117c885728d1a7032bdc9a5974722ae298d6c533755a6ee3915"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:30b1d1bfd00f6fc80d11300a29f1d8ab2b8d9febb6ed4a38a76880ec564fae84"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e029b844c21116564b8b61216befabca4b500e6816fa9f0ba49527653cae2108"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:fa507318e427169ade4e9eccef39e9011cdc19534f55ca2f36ec3f388c1f70f3"}, - {file = "cryptography-39.0.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:8bc0008ef798231fac03fe7d26e82d601d15bd16f3afaad1c6113771566570f3"}, - {file = "cryptography-39.0.2.tar.gz", hash = "sha256:bc5b871e977c8ee5a1bbc42fa8d19bcc08baf0c51cbf1586b0e87a2694dde42f"}, + {file = "cryptography-41.0.1-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:f73bff05db2a3e5974a6fd248af2566134d8981fd7ab012e5dd4ddb1d9a70699"}, + {file = "cryptography-41.0.1-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:1a5472d40c8f8e91ff7a3d8ac6dfa363d8e3138b961529c996f3e2df0c7a411a"}, + {file = "cryptography-41.0.1-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fa01527046ca5facdf973eef2535a27fec4cb651e4daec4d043ef63f6ecd4ca"}, + {file = "cryptography-41.0.1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b46e37db3cc267b4dea1f56da7346c9727e1209aa98487179ee8ebed09d21e43"}, + {file = "cryptography-41.0.1-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:d198820aba55660b4d74f7b5fd1f17db3aa5eb3e6893b0a41b75e84e4f9e0e4b"}, + {file = "cryptography-41.0.1-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:948224d76c4b6457349d47c0c98657557f429b4e93057cf5a2f71d603e2fc3a3"}, + {file = "cryptography-41.0.1-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:059e348f9a3c1950937e1b5d7ba1f8e968508ab181e75fc32b879452f08356db"}, + {file = "cryptography-41.0.1-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:b4ceb5324b998ce2003bc17d519080b4ec8d5b7b70794cbd2836101406a9be31"}, + {file = "cryptography-41.0.1-cp37-abi3-win32.whl", hash = "sha256:8f4ab7021127a9b4323537300a2acfb450124b2def3756f64dc3a3d2160ee4b5"}, + {file = "cryptography-41.0.1-cp37-abi3-win_amd64.whl", hash = "sha256:1fee5aacc7367487b4e22484d3c7e547992ed726d14864ee33c0176ae43b0d7c"}, + {file = "cryptography-41.0.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9a6c7a3c87d595608a39980ebaa04d5a37f94024c9f24eb7d10262b92f739ddb"}, + {file = "cryptography-41.0.1-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:5d092fdfedaec4cbbffbf98cddc915ba145313a6fdaab83c6e67f4e6c218e6f3"}, + {file = "cryptography-41.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a8e6c2de6fbbcc5e14fd27fb24414507cb3333198ea9ab1258d916f00bc3039"}, + {file = "cryptography-41.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cb33ccf15e89f7ed89b235cff9d49e2e62c6c981a6061c9c8bb47ed7951190bc"}, + {file = "cryptography-41.0.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f0ff6e18d13a3de56f609dd1fd11470918f770c6bd5d00d632076c727d35485"}, + {file = "cryptography-41.0.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7bfc55a5eae8b86a287747053140ba221afc65eb06207bedf6e019b8934b477c"}, + {file = "cryptography-41.0.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:eb8163f5e549a22888c18b0d53d6bb62a20510060a22fd5a995ec8a05268df8a"}, + {file = "cryptography-41.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:8dde71c4169ec5ccc1087bb7521d54251c016f126f922ab2dfe6649170a3b8c5"}, + {file = "cryptography-41.0.1.tar.gz", hash = "sha256:d34579085401d3f49762d2f7d6634d6b6c2ae1242202e860f4d26b046e3a1006"}, ] [package.dependencies] @@ -490,31 +506,33 @@ cffi = ">=1.12" [package.extras] 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", "check-manifest", "mypy", "ruff", "types-pytz", "types-requests"] -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-shard (>=0.1.2)", "pytest-subtests", "pytest-xdist", "pytz"] +test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] -tox = ["tox"] [[package]] name = "ctl" -version = "1.0.0" +version = "1.1.0" description = "Full control of your environment" category = "dev" optional = false -python-versions = ">=3.6,<4.0" +python-versions = ">=3.8,<4.0" files = [ - {file = "ctl-1.0.0-py3-none-any.whl", hash = "sha256:776d490062c35dd413c929e7f7b4829142b4bf2cc03ddd9002899c0f7da1efaa"}, - {file = "ctl-1.0.0.tar.gz", hash = "sha256:5e39e9e9505db18e1cd1ecf1f64530e7e900f625e4542545d66b3ad954e003b6"}, + {file = "ctl-1.1.0-py3-none-any.whl", hash = "sha256:685f591db016e648789ebd4a59e35da704aeb53d299441fbefb8929e36850e3e"}, + {file = "ctl-1.1.0.tar.gz", hash = "sha256:2e630537285cf4506af7655bbc9af3e15441d1ee19e906e28710d0d21d4886d3"}, ] [package.dependencies] -confu = ">=1.4,<2.0" -git-url-parse = ">=1.1,<2.0" -grainy = ">=1.4,<2.0" -munge = ">=1,<2" -pluginmgr = ">=1,<2" +confu = ">=1.4" +git-url-parse = ">=1.1" +grainy = ">=1.4" +munge = ">=1" +natsort = ">=8" +pluginmgr = ">=1" +semver = "<=3" [[package]] name = "distlib" @@ -530,20 +548,21 @@ files = [ [[package]] name = "django" -version = "3.2.18" -description = "A high-level Python Web framework that encourages rapid development and clean, pragmatic design." +version = "4.2.3" +description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "Django-3.2.18-py3-none-any.whl", hash = "sha256:4d492d9024c7b3dfababf49f94511ab6a58e2c9c3c7207786f1ba4eb77750706"}, - {file = "Django-3.2.18.tar.gz", hash = "sha256:08208dfe892eb64fff073ca743b3b952311104f939e7f6dae954fe72dcc533ba"}, + {file = "Django-4.2.3-py3-none-any.whl", hash = "sha256:f7c7852a5ac5a3da5a8d5b35cc6168f31b605971441798dac845f17ca8028039"}, + {file = "Django-4.2.3.tar.gz", hash = "sha256:45a747e1c5b3d6df1b141b1481e193b033fd1fdbda3ff52677dc81afdaacbaed"}, ] [package.dependencies] -asgiref = ">=3.3.2,<4" -pytz = "*" -sqlparse = ">=0.2.2" +asgiref = ">=3.6.0,<4" +"backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} +sqlparse = ">=0.3.1" +tzdata = {version = "*", markers = "sys_platform == \"win32\""} [package.extras] argon2 = ["argon2-cffi (>=19.1.0)"] @@ -573,14 +592,14 @@ test = ["djangorestframework", "graphene-django", "pytest", "pytest-cov", "pytes [[package]] name = "django-handleref" -version = "1.1.0" +version = "2.0.0" description = "django object tracking" category = "dev" optional = false -python-versions = ">=3.7,<4.0" +python-versions = ">=3.8,<4.0" files = [ - {file = "django-handleref-1.1.0.tar.gz", hash = "sha256:c5c29cc4b2791e72e224e4de1d24b50a229c7694ecc66ca921faedad35f6f96a"}, - {file = "django_handleref-1.1.0-py3-none-any.whl", hash = "sha256:692c7074baf24070ad4c702b5a5b4f8e2ce2df78ac4c46b9a534fd2634c9cc78"}, + {file = "django-handleref-2.0.0.tar.gz", hash = "sha256:386d7555132c2e9fbba8ebba3796a85feaaa9f3ef53dbbfdbb6f783b608d0cd0"}, + {file = "django_handleref-2.0.0-py3-none-any.whl", hash = "sha256:cfb8e8a44cffcb4b74e8389a498dd7be53e234826bbcc11b60c2a8b4fb6d9b29"}, ] [[package]] @@ -597,49 +616,49 @@ files = [ [[package]] name = "django-peeringdb" -version = "2.16.0" +version = "3.1.0" description = "PeeringDB Django models" category = "dev" optional = false -python-versions = ">=3.7,<4.0" +python-versions = ">=3.8,<4.0" files = [ - {file = "django-peeringdb-2.16.0.tar.gz", hash = "sha256:f94897142338726d52bf68c7eb341c04134941b7a85f1c4503a5fd14aa43761c"}, - {file = "django_peeringdb-2.16.0-py3-none-any.whl", hash = "sha256:bf19dc18336e54d27283d07758130195b3e420be95646363818eef9df2592d94"}, + {file = "django-peeringdb-3.1.0.tar.gz", hash = "sha256:1ead0eba1e9d0d263b72264d22a943d36bbcddd0c33a56845adc0900d92101eb"}, + {file = "django_peeringdb-3.1.0-py3-none-any.whl", hash = "sha256:6b237c177a5fec73e3d8d3c7534607bbfe952975abbca0fe37d36ed6271dcce0"}, ] [package.dependencies] asgiref = ">=3,<4" django_countries = ">1" -django_handleref = ">=1,<2" +django_handleref = ">=2,<3" django_inet = ">=1,<2" [[package]] name = "docutils" -version = "0.19" +version = "0.20.1" description = "Docutils -- Python Documentation Utilities" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "docutils-0.19-py3-none-any.whl", hash = "sha256:5e1de4d849fee02c63b040a4a3fd567f4ab104defd8a5511fbbc24a8a017efbc"}, - {file = "docutils-0.19.tar.gz", hash = "sha256:33995a6753c30b7f577febfc2c50411fec6aac7f7ffeb7c4cfe5991072dcf9e6"}, + {file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"}, + {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, ] [[package]] name = "filelock" -version = "3.9.0" +version = "3.12.2" description = "A platform independent file lock." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "filelock-3.9.0-py3-none-any.whl", hash = "sha256:f58d535af89bb9ad5cd4df046f741f8553a418c01a7856bf0d173bbc9f6bd16d"}, - {file = "filelock-3.9.0.tar.gz", hash = "sha256:7b319f24340b51f55a2bf7a12ac0755a9b03e718311dac567a0f4f7fabd2f5de"}, + {file = "filelock-3.12.2-py3-none-any.whl", hash = "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec"}, + {file = "filelock-3.12.2.tar.gz", hash = "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81"}, ] [package.extras] -docs = ["furo (>=2022.12.7)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] -testing = ["covdefaults (>=2.2.2)", "coverage (>=7.0.1)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)"] +docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"] [[package]] name = "flake8" @@ -654,7 +673,6 @@ files = [ ] [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" @@ -706,14 +724,14 @@ files = [ [[package]] name = "identify" -version = "2.5.18" +version = "2.5.24" description = "File identification library for Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "identify-2.5.18-py2.py3-none-any.whl", hash = "sha256:93aac7ecf2f6abf879b8f29a8002d3c6de7086b8c28d88e1ad15045a15ab63f9"}, - {file = "identify-2.5.18.tar.gz", hash = "sha256:89e144fa560cc4cffb6ef2ab5e9fb18ed9f9b3cb054384bab4b95c12f6c309fe"}, + {file = "identify-2.5.24-py2.py3-none-any.whl", hash = "sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d"}, + {file = "identify-2.5.24.tar.gz", hash = "sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4"}, ] [package.extras] @@ -733,43 +751,42 @@ files = [ [[package]] name = "importlib-metadata" -version = "6.0.0" +version = "6.8.0" description = "Read metadata from Python packages" -category = "main" +category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.0.0-py3-none-any.whl", hash = "sha256:7efb448ec9a5e313a57655d35aa54cd3e01b7e1fbcf72dce1bf06119420f5bad"}, - {file = "importlib_metadata-6.0.0.tar.gz", hash = "sha256:e354bedeb60efa6affdcc8ae121b73544a7aa74156d047311948f6d711cd378d"}, + {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)", "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 = "importlib-resources" -version = "5.12.0" +version = "6.0.0" description = "Read resources from Python packages" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, - {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, + {file = "importlib_resources-6.0.0-py3-none-any.whl", hash = "sha256:d952faee11004c045f785bb5636e8f885bed30dc3c940d5d42798a2a4541c185"}, + {file = "importlib_resources-6.0.0.tar.gz", hash = "sha256:4cf94875a8368bd89531a756df9a9ebe1f150e0f885030b461237bc7f2d905f2"}, ] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["flake8 (<5)", "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 = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [[package]] name = "iniconfig" @@ -785,40 +802,40 @@ files = [ [[package]] name = "isort" -version = "5.11.5" +version = "5.12.0" description = "A Python utility / library to sort Python imports." category = "dev" optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.8.0" files = [ - {file = "isort-5.11.5-py3-none-any.whl", hash = "sha256:ba1d72fb2595a01c7895a5128f9585a5cc4b6d395f1c8d514989b9a7eb2a8746"}, - {file = "isort-5.11.5.tar.gz", hash = "sha256:6be1f76a507cb2ecf16c7cf14a37e41609ca082330be4e3436a18ef74add55db"}, + {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)"] +colors = ["colorama (>=0.4.3)"] pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"] plugins = ["setuptools"] requirements-deprecated-finder = ["pip-api", "pipreqs"] [[package]] name = "jaraco-classes" -version = "3.2.3" +version = "3.3.0" description = "Utility functions for Python class constructs" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jaraco.classes-3.2.3-py3-none-any.whl", hash = "sha256:2353de3288bc6b82120752201c6b1c1a14b058267fa424ed5ce5984e3b922158"}, - {file = "jaraco.classes-3.2.3.tar.gz", hash = "sha256:89559fa5c1d3c34eff6f631ad80bb21f378dbcbb35dd161fd2c6b93f5be2f98a"}, + {file = "jaraco.classes-3.3.0-py3-none-any.whl", hash = "sha256:10afa92b6743f25c0cf5f37c6bb6e18e2c5bb84a16527ccfc0040ea377e7aaeb"}, + {file = "jaraco.classes-3.3.0.tar.gz", hash = "sha256:c063dd08e89217cee02c8d5e5ec560f2c8ce6cdc2fcdc2e68f7b2e5547ed3621"}, ] [package.dependencies] more-itertools = "*" [package.extras] -docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] -testing = ["flake8 (<5)", "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 = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [[package]] name = "jeepney" @@ -856,14 +873,14 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "keyring" -version = "23.13.1" +version = "24.2.0" description = "Store and access your passwords safely." category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "keyring-23.13.1-py3-none-any.whl", hash = "sha256:771ed2a91909389ed6148631de678f82ddc73737d85a927f382a8a1b157898cd"}, - {file = "keyring-23.13.1.tar.gz", hash = "sha256:ba2e15a9b35e21908d0aaf4e0a47acc52d6ae33444df0da2b49d41a46ef6d678"}, + {file = "keyring-24.2.0-py3-none-any.whl", hash = "sha256:4901caaf597bfd3bbd78c9a0c7c4c29fcd8310dab2cffefe749e916b6527acd6"}, + {file = "keyring-24.2.0.tar.gz", hash = "sha256:ca0746a19ec421219f4d713f848fa297a661a8a8c1504867e55bfb5e09091509"}, ] [package.dependencies] @@ -876,8 +893,8 @@ SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} [package.extras] completion = ["shtab"] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] -testing = ["flake8 (<5)", "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)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [[package]] name = "markdown" @@ -917,62 +934,62 @@ tests = ["pytest"] [[package]] name = "markupsafe" -version = "2.1.2" +version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:665a36ae6f8f20a4676b53224e33d456a6f5a72657d9c83c2aa00765072f31f7"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:340bea174e9761308703ae988e982005aedf427de816d1afe98147668cc03036"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22152d00bf4a9c7c83960521fc558f55a1adbc0631fbb00a9471e097b19d72e1"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28057e985dace2f478e042eaa15606c7efccb700797660629da387eb289b9323"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca244fa73f50a800cf8c3ebf7fd93149ec37f5cb9596aa8873ae2c1d23498601"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d9d971ec1e79906046aa3ca266de79eac42f1dbf3612a05dc9368125952bd1a1"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e007132af78ea9df29495dbf7b5824cb71648d7133cf7848a2a5dd00d36f9ff"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7313ce6a199651c4ed9d7e4cfb4aa56fe923b1adf9af3b420ee14e6d9a73df65"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-win32.whl", hash = "sha256:c4a549890a45f57f1ebf99c067a4ad0cb423a05544accaf2b065246827ed9603"}, - {file = "MarkupSafe-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:835fb5e38fd89328e9c81067fd642b3593c33e1e17e2fdbf77f5676abb14a156"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ec4f2d48ae59bbb9d1f9d7efb9236ab81429a764dedca114f5fdabbc3788013"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:608e7073dfa9e38a85d38474c082d4281f4ce276ac0010224eaba11e929dd53a"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65608c35bfb8a76763f37036547f7adfd09270fbdbf96608be2bead319728fcd"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2bfb563d0211ce16b63c7cb9395d2c682a23187f54c3d79bfec33e6705473c6"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da25303d91526aac3672ee6d49a2f3db2d9502a4a60b55519feb1a4c7714e07d"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9cad97ab29dfc3f0249b483412c85c8ef4766d96cdf9dcf5a1e3caa3f3661cf1"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:085fd3201e7b12809f9e6e9bc1e5c96a368c8523fad5afb02afe3c051ae4afcc"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1bea30e9bf331f3fef67e0a3877b2288593c98a21ccb2cf29b74c581a4eb3af0"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-win32.whl", hash = "sha256:7df70907e00c970c60b9ef2938d894a9381f38e6b9db73c5be35e59d92e06625"}, - {file = "MarkupSafe-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:e55e40ff0cc8cc5c07996915ad367fa47da6b3fc091fdadca7f5403239c5fec3"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a6e40afa7f45939ca356f348c8e23048e02cb109ced1eb8420961b2f40fb373a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf877ab4ed6e302ec1d04952ca358b381a882fbd9d1b07cccbfd61783561f98a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63ba06c9941e46fa389d389644e2d8225e0e3e5ebcc4ff1ea8506dce646f8c8a"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f1cd098434e83e656abf198f103a8207a8187c0fc110306691a2e94a78d0abb2"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:55f44b440d491028addb3b88f72207d71eeebfb7b5dbf0643f7c023ae1fba619"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a6f2fcca746e8d5910e18782f976489939d54a91f9411c32051b4aab2bd7c513"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0b462104ba25f1ac006fdab8b6a01ebbfbce9ed37fd37fd4acd70c67c973e460"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-win32.whl", hash = "sha256:7668b52e102d0ed87cb082380a7e2e1e78737ddecdde129acadb0eccc5423859"}, - {file = "MarkupSafe-2.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6d6607f98fcf17e534162f0709aaad3ab7a96032723d8ac8750ffe17ae5a0666"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a806db027852538d2ad7555b203300173dd1b77ba116de92da9afbc3a3be3eed"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a4abaec6ca3ad8660690236d11bfe28dfd707778e2442b45addd2f086d6ef094"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f03a532d7dee1bed20bc4884194a16160a2de9ffc6354b3878ec9682bb623c54"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cf06cdc1dda95223e9d2d3c58d3b178aa5dacb35ee7e3bbac10e4e1faacb419"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22731d79ed2eb25059ae3df1dfc9cb1546691cc41f4e3130fe6bfbc3ecbbecfa"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:f8ffb705ffcf5ddd0e80b65ddf7bed7ee4f5a441ea7d3419e861a12eaf41af58"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8db032bf0ce9022a8e41a22598eefc802314e81b879ae093f36ce9ddf39ab1ba"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2298c859cfc5463f1b64bd55cb3e602528db6fa0f3cfd568d3605c50678f8f03"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-win32.whl", hash = "sha256:50c42830a633fa0cf9e7d27664637532791bfc31c731a87b202d2d8ac40c3ea2"}, - {file = "MarkupSafe-2.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:bb06feb762bade6bf3c8b844462274db0c76acc95c52abe8dbed28ae3d44a147"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:99625a92da8229df6d44335e6fcc558a5037dd0a760e11d84be2260e6f37002f"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bca7e26c1dd751236cfb0c6c72d4ad61d986e9a41bbf76cb445f69488b2a2bd"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40627dcf047dadb22cd25ea7ecfe9cbf3bbbad0482ee5920b582f3809c97654f"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40dfd3fefbef579ee058f139733ac336312663c6706d1163b82b3003fb1925c4"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:090376d812fb6ac5f171e5938e82e7f2d7adc2b629101cec0db8b267815c85e2"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2e7821bffe00aa6bd07a23913b7f4e01328c3d5cc0b40b36c0bd81d362faeb65"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c0a33bc9f02c2b17c3ea382f91b4db0e6cde90b63b296422a939886a7a80de1c"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b8526c6d437855442cdd3d87eede9c425c4445ea011ca38d937db299382e6fa3"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-win32.whl", hash = "sha256:137678c63c977754abe9086a3ec011e8fd985ab90631145dfb9294ad09c102a7"}, - {file = "MarkupSafe-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:0576fe974b40a400449768941d5d0858cc624e3249dfd1e0c33674e5c7ca7aed"}, - {file = "MarkupSafe-2.1.2.tar.gz", hash = "sha256:abcabc8c2b26036d62d4c746381a6f7cf60aafcc653198ad678306986b09450d"}, + {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]] @@ -1001,14 +1018,14 @@ files = [ [[package]] name = "mkdocs" -version = "1.4.2" +version = "1.4.3" description = "Project documentation with Markdown." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "mkdocs-1.4.2-py3-none-any.whl", hash = "sha256:c8856a832c1e56702577023cd64cc5f84948280c1c0fcc6af4cd39006ea6aa8c"}, - {file = "mkdocs-1.4.2.tar.gz", hash = "sha256:8947af423a6d0facf41ea1195b8e1e8c85ad94ac95ae307fe11232e0424b11c5"}, + {file = "mkdocs-1.4.3-py3-none-any.whl", hash = "sha256:6ee46d309bda331aac915cd24aab882c179a933bd9e77b80ce7d2eaaa3f689dd"}, + {file = "mkdocs-1.4.3.tar.gz", hash = "sha256:5955093bbd4dd2e9403c5afaf57324ad8b04f16886512a3ee6ef828956481c57"}, ] [package.dependencies] @@ -1022,7 +1039,6 @@ mergedeep = ">=1.3.4" packaging = ">=20.5" pyyaml = ">=5.1" pyyaml-env-tag = ">=0.1" -typing-extensions = {version = ">=3.10", markers = "python_version < \"3.8\""} watchdog = ">=2.0" [package.extras] @@ -1043,26 +1059,26 @@ files = [ [[package]] name = "munge" -version = "1.2.1" +version = "1.3.0" description = "data manipulation library and client" category = "main" optional = false -python-versions = ">=3.6,<4.0" +python-versions = ">=3.8,<4.0" files = [ - {file = "munge-1.2.1-py3-none-any.whl", hash = "sha256:65fb76389b54970beeef6a80b9e1b45cb230d34743cf11565af926ebc8af2627"}, - {file = "munge-1.2.1.tar.gz", hash = "sha256:3daeb20c2964aa4136c57ebfd422ee7e059eb92fbb0ca1e0c3e392ee9a923853"}, + {file = "munge-1.3.0-py3-none-any.whl", hash = "sha256:fe24e8fd33b388c70abf296f94814aec596d10eb96c0b95a669a49f71012d1f0"}, + {file = "munge-1.3.0.tar.gz", hash = "sha256:5417d47b46e4215d561ce7c01e46098787476bb81eb0c70a7b9b20b38eafa0e5"}, ] [package.dependencies] click = ">=5.1" -PyYAML = {version = ">=5.1,<6.0", optional = true, markers = "extra == \"yaml\""} -requests = ">=2.6,<3.0" -tomlkit = {version = ">=0.7.2,<0.8.0", optional = true, markers = "extra == \"tomlkit\""} +PyYAML = {version = ">=5.1", optional = true, markers = "extra == \"yaml\""} +requests = ">=2.6" +tomlkit = {version = ">=0.7.2", optional = true, markers = "extra == \"tomlkit\""} [package.extras] -toml = ["toml (>=0.10.2,<0.11.0)"] -tomlkit = ["tomlkit (>=0.7.2,<0.8.0)"] -yaml = ["PyYAML (>=5.1,<6.0)"] +toml = ["toml (>=0.10.2)"] +tomlkit = ["tomlkit (>=0.7.2)"] +yaml = ["PyYAML (>=5.1)"] [[package]] name = "mypy" @@ -1100,7 +1116,6 @@ files = [ [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] @@ -1120,16 +1135,32 @@ files = [ {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, ] +[[package]] +name = "natsort" +version = "8.4.0" +description = "Simple yet flexible natural sorting in Python." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c"}, + {file = "natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581"}, +] + +[package.extras] +fast = ["fastnumbers (>=2.0.0)"] +icu = ["PyICU (>=1.0.0)"] + [[package]] name = "nodeenv" -version = "1.7.0" +version = "1.8.0" description = "Node.js virtual environment builder" category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" files = [ - {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"}, - {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"}, + {file = "nodeenv-1.8.0-py2.py3-none-any.whl", hash = "sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec"}, + {file = "nodeenv-1.8.0.tar.gz", hash = "sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2"}, ] [package.dependencies] @@ -1137,26 +1168,26 @@ setuptools = "*" [[package]] name = "packaging" -version = "23.0" +version = "23.1" description = "Core utilities for Python packages" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"}, - {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"}, + {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, + {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, ] [[package]] name = "pathspec" -version = "0.11.0" +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.0-py3-none-any.whl", hash = "sha256:3a66eb970cbac598f9e5ccb5b2cf58930cd8e3ed86d393d541eaf2d8b1705229"}, - {file = "pathspec-0.11.0.tar.gz", hash = "sha256:64d338d4e0914e91c1792321e6907b5a593f1ab1851de7fc269557a21b30ebbc"}, + {file = "pathspec-0.11.1-py3-none-any.whl", hash = "sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293"}, + {file = "pathspec-0.11.1.tar.gz", hash = "sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687"}, ] [[package]] @@ -1188,38 +1219,32 @@ testing = ["pytest", "pytest-cov"] [[package]] name = "platformdirs" -version = "3.1.0" +version = "3.8.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "platformdirs-3.1.0-py3-none-any.whl", hash = "sha256:13b08a53ed71021350c9e300d4ea8668438fb0046ab3937ac9a29913a1a1350a"}, - {file = "platformdirs-3.1.0.tar.gz", hash = "sha256:accc3665857288317f32c7bebb5a8e482ba717b474f3fc1d18ca7f9214be0cef"}, + {file = "platformdirs-3.8.1-py3-none-any.whl", hash = "sha256:cec7b889196b9144d088e4c57d9ceef7374f6c39694ad1577a0aab50d27ea28c"}, + {file = "platformdirs-3.8.1.tar.gz", hash = "sha256:f87ca4fcff7d2b0f81c6a748a77973d7af0f4d526f98f308477c3c436c74d528"}, ] -[package.dependencies] -typing-extensions = {version = ">=4.4", markers = "python_version < \"3.8\""} - [package.extras] -docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] +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" +python-versions = ">=3.7" files = [ - {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, - {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, + {file = "pluggy-1.2.0-py3-none-any.whl", hash = "sha256:c2fd55a7d7a3863cba1a013e4e2414658b1d07b6bc57b3919e0c63c9abb99849"}, + {file = "pluggy-1.2.0.tar.gz", hash = "sha256:d12f0c4b579b15f5e054301bb226ee85eeeba08ffec228092f8defbaa3a4c4b3"}, ] -[package.dependencies] -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} - [package.extras] dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] @@ -1254,7 +1279,6 @@ files = [ [package.dependencies] cfgv = ">=2.0.0" identify = ">=1.0.0" -importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} nodeenv = ">=0.11.1" pyyaml = ">=5.1" virtualenv = ">=20.10.0" @@ -1309,14 +1333,14 @@ files = [ [[package]] name = "pygments" -version = "2.14.0" +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.14.0-py3-none-any.whl", hash = "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717"}, - {file = "Pygments-2.14.0.tar.gz", hash = "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297"}, + {file = "Pygments-2.15.1-py3-none-any.whl", hash = "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1"}, + {file = "Pygments-2.15.1.tar.gz", hash = "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c"}, ] [package.extras] @@ -1324,23 +1348,23 @@ plugins = ["importlib-metadata"] [[package]] name = "pyproject-api" -version = "1.5.0" +version = "1.5.3" description = "API to interact with the python pyproject.toml based projects" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pyproject_api-1.5.0-py3-none-any.whl", hash = "sha256:4c111277dfb96bcd562c6245428f27250b794bfe3e210b8714c4f893952f2c17"}, - {file = "pyproject_api-1.5.0.tar.gz", hash = "sha256:0962df21f3e633b8ddb9567c011e6c1b3dcdfc31b7860c0ede7e24c5a1200fbe"}, + {file = "pyproject_api-1.5.3-py3-none-any.whl", hash = "sha256:14cf09828670c7b08842249c1f28c8ee6581b872e893f81b62d5465bec41502f"}, + {file = "pyproject_api-1.5.3.tar.gz", hash = "sha256:ffb5b2d7cad43f5b2688ab490de7c4d3f6f15e0b819cb588c4b771567c9729eb"}, ] [package.dependencies] -packaging = ">=21.3" +packaging = ">=23.1" tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} [package.extras] -docs = ["furo (>=2022.9.29)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] -testing = ["covdefaults (>=2.2.2)", "importlib-metadata (>=5.1)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "virtualenv (>=20.17)", "wheel (>=0.38.4)"] +docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] +testing = ["covdefaults (>=2.3)", "importlib-metadata (>=6.6)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "setuptools (>=67.8)", "wheel (>=0.40)"] [[package]] name = "pytest" @@ -1358,7 +1382,6 @@ files = [ atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} attrs = ">=19.2.0" colorama = {version = "*", markers = "sys_platform == \"win32\""} -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} iniconfig = "*" packaging = "*" pluggy = ">=0.12,<2.0" @@ -1370,14 +1393,14 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm [[package]] name = "pytest-cov" -version = "4.0.0" +version = "4.1.0" description = "Pytest plugin for measuring coverage." category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pytest-cov-4.0.0.tar.gz", hash = "sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470"}, - {file = "pytest_cov-4.0.0-py3-none-any.whl", hash = "sha256:2feb1b751d66a8bd934e5edfa2e961d11309dc37b73b0eabe73b5945fee20f6b"}, + {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, + {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, ] [package.dependencies] @@ -1402,18 +1425,6 @@ files = [ [package.dependencies] six = ">=1.5" -[[package]] -name = "pytz" -version = "2022.7.1" -description = "World timezone definitions, modern and historical" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "pytz-2022.7.1-py2.py3-none-any.whl", hash = "sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a"}, - {file = "pytz-2022.7.1.tar.gz", hash = "sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0"}, -] - [[package]] name = "pyupgrade" version = "2.38.4" @@ -1431,53 +1442,64 @@ tokenize-rt = "<5" [[package]] name = "pywin32-ctypes" -version = "0.2.0" -description = "" +version = "0.2.2" +description = "A (partial) reimplementation of pywin32 using ctypes/cffi" category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, - {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, + {file = "pywin32-ctypes-0.2.2.tar.gz", hash = "sha256:3426e063bdd5fd4df74a14fa3cf80a0b42845a87e1d1e81f6549f9daec593a60"}, + {file = "pywin32_ctypes-0.2.2-py3-none-any.whl", hash = "sha256:bf490a1a709baf35d688fe0ecf980ed4de11d2b3e37b51e5442587a75d9957e7"}, ] [[package]] name = "pyyaml" -version = "5.4.1" +version = "6.0" description = "YAML parser and emitter for Python" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" -files = [ - {file = "PyYAML-5.4.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:3b2b1824fe7112845700f815ff6a489360226a5609b96ec2190a45e62a9fc922"}, - {file = "PyYAML-5.4.1-cp27-cp27m-win32.whl", hash = "sha256:129def1b7c1bf22faffd67b8f3724645203b79d8f4cc81f674654d9902cb4393"}, - {file = "PyYAML-5.4.1-cp27-cp27m-win_amd64.whl", hash = "sha256:4465124ef1b18d9ace298060f4eccc64b0850899ac4ac53294547536533800c8"}, - {file = "PyYAML-5.4.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:bb4191dfc9306777bc594117aee052446b3fa88737cd13b7188d0e7aa8162185"}, - {file = "PyYAML-5.4.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6c78645d400265a062508ae399b60b8c167bf003db364ecb26dcab2bda048253"}, - {file = "PyYAML-5.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:4e0583d24c881e14342eaf4ec5fbc97f934b999a6828693a99157fde912540cc"}, - {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:72a01f726a9c7851ca9bfad6fd09ca4e090a023c00945ea05ba1638c09dc3347"}, - {file = "PyYAML-5.4.1-cp36-cp36m-manylinux2014_s390x.whl", hash = "sha256:895f61ef02e8fed38159bb70f7e100e00f471eae2bc838cd0f4ebb21e28f8541"}, - {file = "PyYAML-5.4.1-cp36-cp36m-win32.whl", hash = "sha256:3bd0e463264cf257d1ffd2e40223b197271046d09dadf73a0fe82b9c1fc385a5"}, - {file = "PyYAML-5.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:e4fac90784481d221a8e4b1162afa7c47ed953be40d31ab4629ae917510051df"}, - {file = "PyYAML-5.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5accb17103e43963b80e6f837831f38d314a0495500067cb25afab2e8d7a4018"}, - {file = "PyYAML-5.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:e1d4970ea66be07ae37a3c2e48b5ec63f7ba6804bdddfdbd3cfd954d25a82e63"}, - {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:cb333c16912324fd5f769fff6bc5de372e9e7a202247b48870bc251ed40239aa"}, - {file = "PyYAML-5.4.1-cp37-cp37m-manylinux2014_s390x.whl", hash = "sha256:fe69978f3f768926cfa37b867e3843918e012cf83f680806599ddce33c2c68b0"}, - {file = "PyYAML-5.4.1-cp37-cp37m-win32.whl", hash = "sha256:dd5de0646207f053eb0d6c74ae45ba98c3395a571a2891858e87df7c9b9bd51b"}, - {file = "PyYAML-5.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:08682f6b72c722394747bddaf0aa62277e02557c0fd1c42cb853016a38f8dedf"}, - {file = "PyYAML-5.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2d9808ea7b4af864f35ea216be506ecec180628aced0704e34aca0b040ffe46"}, - {file = "PyYAML-5.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8c1be557ee92a20f184922c7b6424e8ab6691788e6d86137c5d93c1a6ec1b8fb"}, - {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:fd7f6999a8070df521b6384004ef42833b9bd62cfee11a09bda1079b4b704247"}, - {file = "PyYAML-5.4.1-cp38-cp38-manylinux2014_s390x.whl", hash = "sha256:bfb51918d4ff3d77c1c856a9699f8492c612cde32fd3bcd344af9be34999bfdc"}, - {file = "PyYAML-5.4.1-cp38-cp38-win32.whl", hash = "sha256:fa5ae20527d8e831e8230cbffd9f8fe952815b2b7dae6ffec25318803a7528fc"}, - {file = "PyYAML-5.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:0f5f5786c0e09baddcd8b4b45f20a7b5d61a7e7e99846e3c799b05c7c53fa696"}, - {file = "PyYAML-5.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:294db365efa064d00b8d1ef65d8ea2c3426ac366c0c4368d930bf1c5fb497f77"}, - {file = "PyYAML-5.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:74c1485f7707cf707a7aef42ef6322b8f97921bd89be2ab6317fd782c2d53183"}, - {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:d483ad4e639292c90170eb6f7783ad19490e7a8defb3e46f97dfe4bacae89122"}, - {file = "PyYAML-5.4.1-cp39-cp39-manylinux2014_s390x.whl", hash = "sha256:fdc842473cd33f45ff6bce46aea678a54e3d21f1b61a7750ce3c498eedfe25d6"}, - {file = "PyYAML-5.4.1-cp39-cp39-win32.whl", hash = "sha256:49d4cdd9065b9b6e206d0595fee27a96b5dd22618e7520c33204a4a3239d5b10"}, - {file = "PyYAML-5.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:c20cfa2d49991c8b4147af39859b167664f2ad4561704ee74c1de03318e898db"}, - {file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"}, +python-versions = ">=3.6" +files = [ + {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"}, ] [[package]] @@ -1497,14 +1519,14 @@ pyyaml = "*" [[package]] name = "readme-renderer" -version = "37.3" +version = "40.0" description = "readme_renderer is a library for rendering \"readme\" descriptions for Warehouse" category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "readme_renderer-37.3-py3-none-any.whl", hash = "sha256:f67a16caedfa71eef48a31b39708637a6f4664c4394801a7b0d6432d13907343"}, - {file = "readme_renderer-37.3.tar.gz", hash = "sha256:cd653186dfc73055656f090f227f5cb22a046d7f71a841dfa305f55c9a513273"}, + {file = "readme_renderer-40.0-py3-none-any.whl", hash = "sha256:e18feb2a1e7706f2865b81ebb460056d93fb29d69daa10b223c00faa7bd9a00a"}, + {file = "readme_renderer-40.0.tar.gz", hash = "sha256:9f77b519d96d03d7d7dce44977ba543090a14397c4f60de5b6eb5b8048110aa4"}, ] [package.dependencies] @@ -1517,21 +1539,21 @@ md = ["cmarkgfm (>=0.8.0)"] [[package]] name = "requests" -version = "2.28.2" +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.28.2-py3-none-any.whl", hash = "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"}, - {file = "requests-2.28.2.tar.gz", hash = "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"}, + {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,<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)"] @@ -1539,14 +1561,14 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "requests-toolbelt" -version = "0.10.1" +version = "1.0.0" description = "A utility belt for advanced users of python-requests" category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - {file = "requests-toolbelt-0.10.1.tar.gz", hash = "sha256:62e09f7ff5ccbda92772a29f394a49c3ad6cb181d568b1337626b2abb628a63d"}, - {file = "requests_toolbelt-0.10.1-py2.py3-none-any.whl", hash = "sha256:18565aa58116d9951ac39baa288d3adb5b3ff975c4f25eee78555d89e8f247f7"}, + {file = "requests-toolbelt-1.0.0.tar.gz", hash = "sha256:7681a0a3d047012b5bdc0ee37d7f8f07ebe76ab08caeccfc3921ce23c88d5bc6"}, + {file = "requests_toolbelt-1.0.0-py2.py3-none-any.whl", hash = "sha256:cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06"}, ] [package.dependencies] @@ -1583,21 +1605,33 @@ files = [ cryptography = ">=2.0" jeepney = ">=0.6" +[[package]] +name = "semver" +version = "3.0.0" +description = "Python helper for Semantic Versioning (https://semver.org)" +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "semver-3.0.0-py3-none-any.whl", hash = "sha256:ab4f69fb1d1ecfb5d81f96411403d7a611fa788c45d252cf5b408025df3ab6ce"}, + {file = "semver-3.0.0.tar.gz", hash = "sha256:94df43924c4521ec7d307fc86da1531db6c2c33d9d5cdc3e64cca0eb68569269"}, +] + [[package]] name = "setuptools" -version = "67.6.0" +version = "68.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-67.6.0-py3-none-any.whl", hash = "sha256:b78aaa36f6b90a074c1fa651168723acbf45d14cb1196b6f02c0fd07f17623b2"}, - {file = "setuptools-67.6.0.tar.gz", hash = "sha256:2ee892cd5f29f3373097f5a814697e397cf3ce313616df0af11231e2ad118077"}, + {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-lint", "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)", "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-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +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]] @@ -1614,16 +1648,21 @@ files = [ [[package]] name = "sqlparse" -version = "0.4.3" +version = "0.4.4" description = "A non-validating SQL parser." category = "dev" optional = false python-versions = ">=3.5" files = [ - {file = "sqlparse-0.4.3-py3-none-any.whl", hash = "sha256:0323c0ec29cd52bceabc1b4d9d579e311f3e4961b98d174201d5622a23b85e34"}, - {file = "sqlparse-0.4.3.tar.gz", hash = "sha256:69ca804846bb114d2ec380e4360a8a340db83f0ccf3afceeb1404df028f57268"}, + {file = "sqlparse-0.4.4-py3-none-any.whl", hash = "sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3"}, + {file = "sqlparse-0.4.4.tar.gz", hash = "sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c"}, ] +[package.extras] +dev = ["build", "flake8"] +doc = ["sphinx"] +test = ["pytest", "pytest-cov"] + [[package]] name = "tmpl" version = "1.0.0" @@ -1674,45 +1713,43 @@ files = [ [[package]] name = "tomlkit" -version = "0.7.2" +version = "0.11.8" description = "Style preserving TOML library" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" files = [ - {file = "tomlkit-0.7.2-py2.py3-none-any.whl", hash = "sha256:173ad840fa5d2aac140528ca1933c29791b79a374a0861a80347f42ec9328117"}, - {file = "tomlkit-0.7.2.tar.gz", hash = "sha256:d7a454f319a7e9bd2e249f239168729327e4dd2d27b17dc68be264ad1ce36754"}, + {file = "tomlkit-0.11.8-py3-none-any.whl", hash = "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171"}, + {file = "tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"}, ] [[package]] name = "tox" -version = "4.4.6" +version = "4.6.4" description = "tox is a generic virtualenv management and test command line tool" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "tox-4.4.6-py3-none-any.whl", hash = "sha256:e3d4a65852f029e5ba441a01824d2d839d30bb8fb071635ef9cb53952698e6bf"}, - {file = "tox-4.4.6.tar.gz", hash = "sha256:9786671d23b673ace7499c602c5746e2a225d1ecd9d9f624d0461303f40bd93b"}, + {file = "tox-4.6.4-py3-none-any.whl", hash = "sha256:1b8f8ae08d6a5475cad9d508236c51ea060620126fd7c3c513d0f5c7f29cc776"}, + {file = "tox-4.6.4.tar.gz", hash = "sha256:5e2ad8845764706170d3dcaac171704513cc8a725655219acb62fe4380bdadda"}, ] [package.dependencies] -cachetools = ">=5.3" +cachetools = ">=5.3.1" chardet = ">=5.1" colorama = ">=0.4.6" -filelock = ">=3.9" -importlib-metadata = {version = ">=6", markers = "python_version < \"3.8\""} -packaging = ">=23" -platformdirs = ">=2.6.2" -pluggy = ">=1" -pyproject-api = ">=1.5" +filelock = ">=3.12.2" +packaging = ">=23.1" +platformdirs = ">=3.8" +pluggy = ">=1.2" +pyproject-api = ">=1.5.2" tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} -typing-extensions = {version = ">=4.4", markers = "python_version < \"3.8\""} -virtualenv = ">=20.17.1" +virtualenv = ">=20.23.1" [package.extras] -docs = ["furo (>=2022.12.7)", "sphinx (>=6.1.3)", "sphinx-argparse-cli (>=1.11)", "sphinx-autodoc-typehints (>=1.22,!=1.23.4)", "sphinx-copybutton (>=0.5.1)", "sphinx-inline-tabs (>=2022.1.2b11)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=22.12)"] -testing = ["build[virtualenv] (>=0.10)", "covdefaults (>=2.2.2)", "devpi-process (>=0.3)", "diff-cover (>=7.4)", "distlib (>=0.3.6)", "flaky (>=3.7)", "hatch-vcs (>=0.3)", "hatchling (>=1.12.2)", "psutil (>=5.9.4)", "pytest (>=7.2.1)", "pytest-cov (>=4)", "pytest-mock (>=3.10)", "pytest-xdist (>=3.1)", "re-assert (>=1.1)", "time-machine (>=2.9)", "wheel (>=0.38.4)"] +docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-argparse-cli (>=1.11.1)", "sphinx-autodoc-typehints (>=1.23.3,!=1.23.4)", "sphinx-copybutton (>=0.5.2)", "sphinx-inline-tabs (>=2023.4.21)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +testing = ["build[virtualenv] (>=0.10)", "covdefaults (>=2.3)", "detect-test-pollution (>=1.1.1)", "devpi-process (>=0.3.1)", "diff-cover (>=7.6)", "distlib (>=0.3.6)", "flaky (>=3.7)", "hatch-vcs (>=0.3)", "hatchling (>=1.17.1)", "psutil (>=5.9.5)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "pytest-xdist (>=3.3.1)", "re-assert (>=1.1)", "time-machine (>=2.10)", "wheel (>=0.40)"] [[package]] name = "tqdm" @@ -1775,126 +1812,103 @@ tqdm = ">=4.14" urllib3 = ">=1.26.0" [[package]] -name = "typed-ast" -version = "1.5.4" -description = "a fork of Python 2 and 3 ast modules with type comment support" +name = "typing-extensions" +version = "4.7.1" +description = "Backported and Experimental Type Hints for Python 3.7+" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {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"}, + {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 = "typing-extensions" -version = "4.5.0" -description = "Backported and Experimental Type Hints for Python 3.7+" -category = "main" +name = "tzdata" +version = "2023.3" +description = "Provider of IANA time zone data" +category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=2" files = [ - {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"}, - {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, + {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, + {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, ] [[package]] name = "urllib3" -version = "1.26.14" +version = "2.0.3" 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.*" +python-versions = ">=3.7" files = [ - {file = "urllib3-1.26.14-py2.py3-none-any.whl", hash = "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"}, - {file = "urllib3-1.26.14.tar.gz", hash = "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72"}, + {file = "urllib3-2.0.3-py3-none-any.whl", hash = "sha256:48e7fafa40319d358848e1bc6809b208340fafe2096f1725d05d67443d0483d1"}, + {file = "urllib3-2.0.3.tar.gz", hash = "sha256:bee28b5e56addb8226c96f7f13ac28cb4c301dd5ea8a6ca179c0b9835e032825"}, ] [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 = "virtualenv" -version = "20.20.0" +version = "20.23.1" description = "Virtual Python Environment builder" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.20.0-py3-none-any.whl", hash = "sha256:3c22fa5a7c7aa106ced59934d2c20a2ecb7f49b4130b8bf444178a16b880fa45"}, - {file = "virtualenv-20.20.0.tar.gz", hash = "sha256:a8a4b8ca1e28f864b7514a253f98c1d62b64e31e77325ba279248c65fb4fcef4"}, + {file = "virtualenv-20.23.1-py3-none-any.whl", hash = "sha256:34da10f14fea9be20e0fd7f04aba9732f84e593dac291b757ce42e3368a39419"}, + {file = "virtualenv-20.23.1.tar.gz", hash = "sha256:8ff19a38c1021c742148edc4f81cb43d7f8c6816d2ede2ab72af5b84c749ade1"}, ] [package.dependencies] distlib = ">=0.3.6,<1" -filelock = ">=3.4.1,<4" -importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.8\""} -platformdirs = ">=2.4,<4" +filelock = ">=3.12,<4" +platformdirs = ">=3.5.1,<4" [package.extras] -docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=6.1.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=22.12)"] -test = ["covdefaults (>=2.2.2)", "coverage (>=7.1)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23)", "pytest (>=7.2.1)", "pytest-env (>=0.8.1)", "pytest-freezegun (>=0.4.2)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)"] +docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.3.1)", "pytest-env (>=0.8.1)", "pytest-freezer (>=0.4.6)", "pytest-mock (>=3.10)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=67.8)", "time-machine (>=2.9)"] [[package]] name = "watchdog" -version = "2.3.1" +version = "3.0.0" description = "Filesystem events monitoring" category = "dev" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "watchdog-2.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1f1200d4ec53b88bf04ab636f9133cb703eb19768a39351cee649de21a33697"}, - {file = "watchdog-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:564e7739abd4bd348aeafbf71cc006b6c0ccda3160c7053c4a53b67d14091d42"}, - {file = "watchdog-2.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:95ad708a9454050a46f741ba5e2f3468655ea22da1114e4c40b8cbdaca572565"}, - {file = "watchdog-2.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a073c91a6ef0dda488087669586768195c3080c66866144880f03445ca23ef16"}, - {file = "watchdog-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aa8b028750b43e80eea9946d01925168eeadb488dfdef1d82be4b1e28067f375"}, - {file = "watchdog-2.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:964fd236cd443933268ae49b59706569c8b741073dbfd7ca705492bae9d39aab"}, - {file = "watchdog-2.3.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:91fd146d723392b3e6eb1ac21f122fcce149a194a2ba0a82c5e4d0ee29cd954c"}, - {file = "watchdog-2.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:efe3252137392a471a2174d721e1037a0e6a5da7beb72a021e662b7000a9903f"}, - {file = "watchdog-2.3.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:85bf2263290591b7c5fa01140601b64c831be88084de41efbcba6ea289874f44"}, - {file = "watchdog-2.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8f2df370cd8e4e18499dd0bfdef476431bcc396108b97195d9448d90924e3131"}, - {file = "watchdog-2.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ea5d86d1bcf4a9d24610aa2f6f25492f441960cf04aed2bd9a97db439b643a7b"}, - {file = "watchdog-2.3.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6f5d0f7eac86807275eba40b577c671b306f6f335ba63a5c5a348da151aba0fc"}, - {file = "watchdog-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b848c71ef2b15d0ef02f69da8cc120d335cec0ed82a3fa7779e27a5a8527225"}, - {file = "watchdog-2.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0d9878be36d2b9271e3abaa6f4f051b363ff54dbbe7e7df1af3c920e4311ee43"}, - {file = "watchdog-2.3.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4cd61f98cb37143206818cb1786d2438626aa78d682a8f2ecee239055a9771d5"}, - {file = "watchdog-2.3.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3d2dbcf1acd96e7a9c9aefed201c47c8e311075105d94ce5e899f118155709fd"}, - {file = "watchdog-2.3.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03f342a9432fe08107defbe8e405a2cb922c5d00c4c6c168c68b633c64ce6190"}, - {file = "watchdog-2.3.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7a596f9415a378d0339681efc08d2249e48975daae391d58f2e22a3673b977cf"}, - {file = "watchdog-2.3.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:0e1dd6d449267cc7d6935d7fe27ee0426af6ee16578eed93bacb1be9ff824d2d"}, - {file = "watchdog-2.3.1-py3-none-manylinux2014_i686.whl", hash = "sha256:7a1876f660e32027a1a46f8a0fa5747ad4fcf86cb451860eae61a26e102c8c79"}, - {file = "watchdog-2.3.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:2caf77ae137935c1466f8cefd4a3aec7017b6969f425d086e6a528241cba7256"}, - {file = "watchdog-2.3.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:53f3e95081280898d9e4fc51c5c69017715929e4eea1ab45801d5e903dd518ad"}, - {file = "watchdog-2.3.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:9da7acb9af7e4a272089bd2af0171d23e0d6271385c51d4d9bde91fe918c53ed"}, - {file = "watchdog-2.3.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:8a4d484e846dcd75e96b96d80d80445302621be40e293bfdf34a631cab3b33dc"}, - {file = "watchdog-2.3.1-py3-none-win32.whl", hash = "sha256:a74155398434937ac2780fd257c045954de5b11b5c52fc844e2199ce3eecf4cf"}, - {file = "watchdog-2.3.1-py3-none-win_amd64.whl", hash = "sha256:5defe4f0918a2a1a4afbe4dbb967f743ac3a93d546ea4674567806375b024adb"}, - {file = "watchdog-2.3.1-py3-none-win_ia64.whl", hash = "sha256:4109cccf214b7e3462e8403ab1e5b17b302ecce6c103eb2fc3afa534a7f27b96"}, - {file = "watchdog-2.3.1.tar.gz", hash = "sha256:d9f9ed26ed22a9d331820a8432c3680707ea8b54121ddcc9dc7d9f2ceeb36906"}, + {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] @@ -1914,21 +1928,21 @@ files = [ [[package]] name = "zipp" -version = "3.15.0" +version = "3.16.0" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" +category = "dev" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, - {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, + {file = "zipp-3.16.0-py3-none-any.whl", hash = "sha256:5dadc3ad0a1f825fe42ce1bce0f2fc5a13af2e6b2d386af5b0ff295bc0a287d3"}, + {file = "zipp-3.16.0.tar.gz", hash = "sha256:1876cb065531855bbe83b6c489dcf69ecc28f1068d8e95959fe8bbc77774c941"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "flake8 (<5)", "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-mypy (>=0.9.1)", "pytest-ruff"] [metadata] lock-version = "2.0" -python-versions = "^3.7" -content-hash = "3d53096ab97a0068ea6a5bcb3f91c3148cb27035c125082ff9c1e806604615e0" +python-versions = "^3.8" +content-hash = "593151e7daf08d6a47213dbffb97a0a040c95a695e5b58faf319ede0e6cc1ea6" diff --git a/pyproject.toml b/pyproject.toml index b8c0f51..e89f806 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,21 @@ readme = "README.md" repository = "https://github.com/peeringdb/peeringdb-py" authors = [ "PeeringDB ",] license = "Apache-2.0" -classifiers = [ "Development Status :: 5 - Production/Stable", "Framework :: Django :: 2.2", "Framework :: Django :: 3.0", "Framework :: Django :: 3.1", "Framework :: Django :: 3.2", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "Intended Audience :: Telecommunications Industry", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Internet",] +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Framework :: Django :: 3.2", + "Framework :: Django :: 4.2", + "Intended Audience :: Developers", + "Intended Audience :: System Administrators", + "Intended Audience :: Telecommunications Industry", + "License :: OSI Approved :: Apache Software License", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Internet" +] [[tool.poetry.packages]] include = "peeringdb" from = "src" @@ -23,7 +37,7 @@ multi_line_output = 3 peeringdb = "peeringdb.cli:main" [tool.poetry.dependencies] -python = "^3.7" +python = "^3.8" confu = "^1" munge = { extras = ["tomlkit", "yaml"], version = "^1.2.0" } "twentyc.rpc" = "^1" @@ -31,10 +45,9 @@ munge = { extras = ["tomlkit", "yaml"], version = "^1.2.0" } [tool.poetry.dev-dependencies] # testing -django = "~3.2" -django_peeringdb = "^2.16" +django = "~4.2" +django_peeringdb = "^3.0.0" -codecov = "*" pytest = "^6.0.1" pytest-cov = "*" tox = ">=3.24" diff --git a/src/peeringdb/_fetch.py b/src/peeringdb/_fetch.py index f5aef9b..3ffeb15 100644 --- a/src/peeringdb/_fetch.py +++ b/src/peeringdb/_fetch.py @@ -1,7 +1,11 @@ """ RPC / REST client implementation module """ +import json +import logging +import os import re +import time import requests from twentyc.rpc import RestClient @@ -26,6 +30,17 @@ class Fetcher(RestClient): def __init__(self, **kwargs): # self.return_error = True self.api_key = kwargs.get("api_key", "") + self.cache_url = kwargs.get("cache_url") + self.cache_dir = os.path.expanduser( + kwargs.get("cache_dir", "~/.cache/peeringdb") + ) + self._log = logging.getLogger(__name__) + + self.cache_downloaded = None + self.cache_file_used = None + + if not os.path.exists(self.cache_dir): + os.makedirs(self.cache_dir) super().__init__(**kwargs) def _req(self, func): @@ -60,12 +75,65 @@ def fetch_all(self, R, depth, params={}): } return self._req(lambda: self.all(R.tag, depth=depth, **params)) + def _fetch_cache(self, R): + """ + Will fetch the latest version of the object from the cache + This is only done on empty databases (e.g., when all the data needs + to be fetched) + + It will also use a local file cache that lasts 15 minutes. + """ + ref_tag = R.tag + cache_url = self.cache_url + + # check if we have an existing cache file + + cache_file = os.path.join(self.cache_dir, f"{ref_tag}-0.json") + if os.path.exists(cache_file): + # get file modification time + mtime = os.path.getmtime(cache_file) + + # if not older than 15 mins return from file + if time.time() - mtime < 15 * 60: + self._log.debug(f"Using cached file {cache_file}") + with open(cache_file) as f: + # this is currently only used for testing purposes (so we can easily + # check if the cache file was used) + self.cache_file_used = True + + # return cache file contents + return json.load(f)["data"] + + # no file cache, load data from cache url + url = f"{cache_url}/{ref_tag}-0.json" + self._log.debug(f"Downloading from cache: {url}") + response = requests.get(url) + + # this is currently only used for testing purposes (so we can easily + # check if the cache download was used) + self.cache_downloaded = True + + if response.status_code == 200: + # write cache file + with open(os.path.join(self.cache_dir, f"{ref_tag}-0.json"), "w") as f: + f.write(response.text) + + # return data + return response.json()["data"] + else: + raise Exception(f"Failed to download JSON file for {ref_tag}") + def fetch_all_latest(self, R, depth, params={}, since=None): backend = peeringdb.get_backend() if since is None: since = backend.last_change(backend.get_concrete(R)) + if not since and self.cache_url and not params and not depth: + # empty database, do full data update from cache server + + return self._req(lambda: self._fetch_cache(R)) + if since: since = since + 1 params = { diff --git a/src/peeringdb/_update.py b/src/peeringdb/_update.py index aa1034b..c9be30f 100644 --- a/src/peeringdb/_update.py +++ b/src/peeringdb/_update.py @@ -171,7 +171,11 @@ def fetch_and_index(self, fetch_func): def update_after(self, res, pk, depth, fetch_job): data = yield fetch_job if data: - row = data[pk] + try: + row = data[pk] + except KeyError: + print("Data", data) + raise else: self._log.info("Fetched no data for %s-%s", res.tag, pk) data, e = self.fetcher.fetch_deleted(res, pk, 0) diff --git a/src/peeringdb/cli.py b/src/peeringdb/cli.py index d98e1e6..e9ea1e6 100644 --- a/src/peeringdb/cli.py +++ b/src/peeringdb/cli.py @@ -18,6 +18,7 @@ help="Configuration management", ), "drop-tables": commands.DropTables, + "server": commands.Server, } diff --git a/src/peeringdb/commands.py b/src/peeringdb/commands.py index db5d7c2..067253d 100644 --- a/src/peeringdb/commands.py +++ b/src/peeringdb/commands.py @@ -1,4 +1,6 @@ import logging +import os +import subprocess import sys import munge @@ -257,3 +259,66 @@ def handle(config, **_): Client(config) B = peeringdb.get_backend() B.delete_all() + + +class Server: + "Configure Peeringdb Server" + + @staticmethod + def add_arguments(parser): + parser.add_argument( + "--setup", + action="store_true", + default=False, + help="Build and setup peeringdb server container", + ) + parser.add_argument( + "--start", + action="store_true", + default=False, + help="Start peeringdb server container", + ) + parser.add_argument( + "--stop", + action="store_true", + default=False, + help="Stop peeringdb server container", + ) + + @_handler + def handle(config, setup, start, stop, **_): + parent_directory = os.path.abspath(os.path.join(os.getcwd())) + clone_path = os.path.join(parent_directory, "peeringdb_server") + + if setup: + # Clone the GitHub repository + # TODO: use latest release? (peeringdb server currently does no publish releases, just tags) + # TODO: use git module instead of subprocess? + print("Setup-----------") + subprocess.run( + [ + "git", + "clone", + "https://github.com/peeringdb/peeringdb.git", + clone_path, + ] + ) + + # Run setup.sh inside the cloned repository + subprocess.run(["./Ctl/local/setup.sh"], cwd=clone_path) + + if start: + try: + subprocess.run(["./Ctl/local/compose.sh", "up", "-d"], cwd=clone_path) + except FileNotFoundError: + print( + f"{clone_path} directory not found, make sure that you already run 'peeringdb server --setup'" + ) + + if stop: + try: + subprocess.run(["./Ctl/local/compose.sh", "down"], cwd=clone_path) + except FileNotFoundError: + print( + f"{clone_path} directory not found, make sure that you already run 'peeringdb server --setup'" + ) diff --git a/src/peeringdb/config.py b/src/peeringdb/config.py index 7bac943..e420238 100644 --- a/src/peeringdb/config.py +++ b/src/peeringdb/config.py @@ -22,6 +22,8 @@ class ClientSchema(_schema.Schema): class SyncSchema(_schema.Schema): url = _schema.Url("url", default="https://www.peeringdb.com/api") + cache_url = _schema.Url("url", default="https://cache.peeringdb.com/api") + cache_dir = _schema.Str("cache_dir", default="~/.cache/peeringdb") user = _schema.Str("user", blank=True, default="") password = _schema.Str("password", blank=True, default="") strip_tz = _schema.Int("strip_tz", default=1) # FIXME no boolean? diff --git a/tests/data/cache/campus-0.json b/tests/data/cache/campus-0.json new file mode 100644 index 0000000..efb1ef2 --- /dev/null +++ b/tests/data/cache/campus-0.json @@ -0,0 +1,28 @@ +{ + "data": [ + { + "id": 1, + "org_id": 1, + "org_name": "org c1ab780b", + "status": "ok", + "created": "2023-04-21T13:46:31.660560Z", + "updated": "2023-04-21T16:02:46.336666Z", + "name": "campus 41c40b88", + "name_long": "campus 505fd8c1", + "notes": "Some notes", + "aka": "campus 34d1fb8d", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "country": "US", + "city": "Chicago", + "zipcode": "12345", + "state": "Illinois" + } + ], + "meta": {} +} \ No newline at end of file diff --git a/tests/data/cache/carrier-0.json b/tests/data/cache/carrier-0.json new file mode 100644 index 0000000..f228c2d --- /dev/null +++ b/tests/data/cache/carrier-0.json @@ -0,0 +1,62 @@ +{ + "data": [ + { + "id": 1, + "org_id": 1, + "org_name": "org c1ab780b", + "name": "carrier 0cc83d81", + "aka": "carrier 2009c8c6", + "name_long": "carrier e952dd11", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "notes": "Some notes", + "created": "2023-04-21T13:46:31.666025Z", + "updated": "2023-04-21T13:46:32.080105Z", + "status": "ok" + }, + { + "id": 2, + "org_id": 2, + "org_name": "org d1aa972c", + "name": "carrier e9f243d4", + "aka": "carrier 2e71cae8", + "name_long": "carrier 395b8647", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "notes": "Some notes", + "created": "2023-04-21T13:46:31.787816Z", + "updated": "2023-04-21T13:46:32.176443Z", + "status": "ok" + }, + { + "id": 3, + "org_id": 6, + "org_name": "org b81a864a", + "name": "carrier e9e1527c", + "aka": "carrier 452ff650", + "name_long": "carrier b4a1580f", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "notes": "Some notes", + "created": "2023-04-21T13:46:31.920163Z", + "updated": "2023-04-21T13:46:32.304956Z", + "status": "ok" + } + ], + "meta": {} +} \ No newline at end of file diff --git a/tests/data/cache/carrierfac-0.json b/tests/data/cache/carrierfac-0.json new file mode 100644 index 0000000..bf23f9f --- /dev/null +++ b/tests/data/cache/carrierfac-0.json @@ -0,0 +1,23 @@ +{ + "data": [ + { + "id": 1, + "name": "fac 6474d82a", + "carrier_id": 1, + "fac_id": 1, + "created": "2023-04-21T13:46:31.674252Z", + "updated": "2023-04-21T13:46:32.085917Z", + "status": "ok" + }, + { + "id": 2, + "name": "fac d8e202c9", + "carrier_id": 2, + "fac_id": 2, + "created": "2023-04-21T13:46:31.793418Z", + "updated": "2023-04-21T13:46:32.182163Z", + "status": "ok" + } + ], + "meta": {} +} \ No newline at end of file diff --git a/tests/data/cache/fac-0.json b/tests/data/cache/fac-0.json new file mode 100644 index 0000000..afaae22 --- /dev/null +++ b/tests/data/cache/fac-0.json @@ -0,0 +1,177 @@ +{ + "data": [ + { + "id": 1, + "org_id": 1, + "org_name": "org c1ab780b", + "name": "fac 6474d82a", + "aka": "fac 548d62e1", + "name_long": "fac 87ca4641", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "clli": "61C849", + "rencode": "", + "npanxx": "123-456", + "notes": "Some notes", + "net_count": 1, + "ix_count": 0, + "sales_email": "test@peeringdb.com", + "sales_phone": "+12065550199", + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "available_voltage_services": [], + "diverse_serving_substations": true, + "property": null, + "region_continent": "North America", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.649864Z", + "updated": "2023-04-21T16:02:38.066691Z", + "status": "ok", + "address1": "Address line 1", + "address2": "Address line 2", + "city": "Chicago", + "country": "US", + "state": "Illinois", + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 21.33, + "longitude": -157.917855 + }, + { + "id": 2, + "org_id": 2, + "org_name": "org d1aa972c", + "name": "fac d8e202c9", + "aka": "fac baf0125d", + "name_long": "fac 4823f9db", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "clli": "B290C7", + "rencode": "", + "npanxx": "123-456", + "notes": "Some notes", + "net_count": 1, + "ix_count": 0, + "sales_email": "test@peeringdb.com", + "sales_phone": "+12065550199", + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "available_voltage_services": [], + "diverse_serving_substations": true, + "property": null, + "region_continent": "North America", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.777693Z", + "updated": "2023-04-21T13:46:32.163613Z", + "status": "ok", + "address1": "Address line 1", + "address2": "Address line 2", + "city": "Chicago", + "country": "US", + "state": "Illinois", + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0 + }, + { + "id": 3, + "org_id": 5, + "org_name": "org fd25f48c", + "name": "fac d7d31fa7", + "aka": "fac 11e46138", + "name_long": "fac d70f90fa", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "clli": "1E4396", + "rencode": "", + "npanxx": "123-456", + "notes": "Some notes", + "net_count": 0, + "ix_count": 0, + "sales_email": "test@peeringdb.com", + "sales_phone": "+12065550199", + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "available_voltage_services": [], + "diverse_serving_substations": true, + "property": null, + "region_continent": "North America", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.902223Z", + "updated": "2023-04-21T13:46:32.287846Z", + "status": "ok", + "address1": "Address line 1", + "address2": "Address line 2", + "city": "Chicago", + "country": "US", + "state": "Illinois", + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0 + }, + { + "id": 6, + "org_id": 1, + "org_name": "org c1ab780b", + "name": "fac 6474d82b", + "aka": "", + "name_long": "", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "clli": "", + "rencode": "", + "npanxx": "", + "notes": "", + "net_count": 0, + "ix_count": 0, + "sales_email": "", + "sales_phone": "", + "tech_email": "", + "tech_phone": "", + "available_voltage_services": [], + "diverse_serving_substations": null, + "property": null, + "region_continent": "North America", + "status_dashboard": null, + "created": "2023-04-21T15:58:19.084386Z", + "updated": "2023-04-21T16:02:46.329462Z", + "status": "ok", + "address1": "Address line 1", + "address2": "", + "city": "Chicago", + "country": "US", + "state": "Illinois", + "zipcode": "", + "floor": "", + "suite": "", + "latitude": 21.33, + "longitude": -157.917855 + } + ], + "meta": {} +} \ No newline at end of file diff --git a/tests/data/cache/ix-0.json b/tests/data/cache/ix-0.json new file mode 100644 index 0000000..52c72c2 --- /dev/null +++ b/tests/data/cache/ix-0.json @@ -0,0 +1,128 @@ +{ + "data": [ + { + "id": 1, + "org_id": 1, + "name": "ix b7b05aa8", + "aka": "ix 11a3deb1", + "name_long": "ix 8201a644", + "city": "Chicago", + "country": "US", + "region_continent": "Europe", + "media": "Multiple", + "notes": "Some notes", + "proto_unicast": true, + "proto_multicast": true, + "proto_ipv6": true, + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "url_stats": "https://www.peeringdb.com/url_stats", + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "policy_email": "test@peeringdb.com", + "policy_phone": "+12065550199", + "sales_phone": "+12065550199", + "sales_email": "test@peeringdb.com", + "net_count": 1, + "fac_count": 1, + "ixf_net_count": 0, + "ixf_last_import": null, + "ixf_import_request": null, + "ixf_import_request_status": "queued", + "service_level": "Best Effort (no SLA)", + "terms": "No Commercial Terms", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.620288Z", + "updated": "2023-04-21T13:46:32.047597Z", + "status": "ok" + }, + { + "id": 2, + "org_id": 2, + "name": "ix e7eccd56", + "aka": "ix 465eded9", + "name_long": "ix 5855c1da", + "city": "Chicago", + "country": "US", + "region_continent": "Europe", + "media": "Multiple", + "notes": "Some notes", + "proto_unicast": true, + "proto_multicast": true, + "proto_ipv6": true, + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "url_stats": "https://www.peeringdb.com/url_stats", + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "policy_email": "test@peeringdb.com", + "policy_phone": "+12065550199", + "sales_phone": "+12065550199", + "sales_email": "test@peeringdb.com", + "net_count": 1, + "fac_count": 1, + "ixf_net_count": 0, + "ixf_last_import": null, + "ixf_import_request": null, + "ixf_import_request_status": "queued", + "service_level": "Best Effort (no SLA)", + "terms": "No Commercial Terms", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.755715Z", + "updated": "2023-04-21T13:46:32.146799Z", + "status": "ok" + }, + { + "id": 3, + "org_id": 4, + "name": "ix eae2706e", + "aka": "ix 52ba899a", + "name_long": "ix 3c0ce06c", + "city": "Chicago", + "country": "US", + "region_continent": "Europe", + "media": "Multiple", + "notes": "Some notes", + "proto_unicast": false, + "proto_multicast": true, + "proto_ipv6": false, + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "url_stats": "https://www.peeringdb.com/url_stats", + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "policy_email": "test@peeringdb.com", + "policy_phone": "+12065550199", + "sales_phone": "+12065550199", + "sales_email": "test@peeringdb.com", + "net_count": 0, + "fac_count": 0, + "ixf_net_count": 0, + "ixf_last_import": null, + "ixf_import_request": null, + "ixf_import_request_status": "queued", + "service_level": "Best Effort (no SLA)", + "terms": "No Commercial Terms", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.876008Z", + "updated": "2023-04-21T13:46:32.259420Z", + "status": "ok" + } + ], + "meta": {} +} \ No newline at end of file diff --git a/tests/data/cache/ixfac-0.json b/tests/data/cache/ixfac-0.json new file mode 100644 index 0000000..8d18b30 --- /dev/null +++ b/tests/data/cache/ixfac-0.json @@ -0,0 +1,27 @@ +{ + "data": [ + { + "id": 1, + "name": "fac 6474d82a", + "city": "Chicago", + "country": "US", + "ix_id": 1, + "fac_id": 1, + "created": "2023-04-21T13:46:31.691524Z", + "updated": "2023-04-21T13:46:32.100245Z", + "status": "ok" + }, + { + "id": 2, + "name": "fac d8e202c9", + "city": "Chicago", + "country": "US", + "ix_id": 2, + "fac_id": 2, + "created": "2023-04-21T13:46:31.806328Z", + "updated": "2023-04-21T13:46:32.199964Z", + "status": "ok" + } + ], + "meta": {} +} \ No newline at end of file diff --git a/tests/data/cache/ixlan-0.json b/tests/data/cache/ixlan-0.json new file mode 100644 index 0000000..c4041e0 --- /dev/null +++ b/tests/data/cache/ixlan-0.json @@ -0,0 +1,48 @@ +{ + "data": [ + { + "id": 1, + "ix_id": 1, + "name": "", + "descr": "", + "mtu": 1500, + "dot1q_support": false, + "rs_asn": 0, + "arp_sponge": null, + "ixf_ixp_member_list_url": null, + "ixf_ixp_member_list_url_visible": "Private", + "created": "2023-04-21T13:46:31.639502Z", + "updated": "2023-04-21T13:46:32.056605Z", + "status": "ok" + }, + { + "id": 2, + "ix_id": 2, + "name": "", + "descr": "", + "mtu": 1500, + "dot1q_support": false, + "rs_asn": 0, + "arp_sponge": null, + "ixf_ixp_member_list_url_visible": "Private", + "created": "2023-04-21T13:46:31.771609Z", + "updated": "2023-04-21T13:46:32.154982Z", + "status": "ok" + }, + { + "id": 3, + "ix_id": 3, + "name": "", + "descr": "", + "mtu": 1500, + "dot1q_support": false, + "rs_asn": 0, + "arp_sponge": null, + "ixf_ixp_member_list_url_visible": "Private", + "created": "2023-04-21T13:46:31.885988Z", + "updated": "2023-04-21T13:46:32.268069Z", + "status": "ok" + } + ], + "meta": {} +} \ No newline at end of file diff --git a/tests/data/cache/ixpfx-0.json b/tests/data/cache/ixpfx-0.json new file mode 100644 index 0000000..280f656 --- /dev/null +++ b/tests/data/cache/ixpfx-0.json @@ -0,0 +1,45 @@ +{ + "data": [ + { + "id": 1, + "ixlan_id": 1, + "protocol": "IPv4", + "prefix": "206.223.116.0/23", + "in_dfz": true, + "created": "2023-04-21T13:46:31.682621Z", + "updated": "2023-04-21T13:46:32.090235Z", + "status": "ok" + }, + { + "id": 2, + "ixlan_id": 1, + "protocol": "IPv6", + "prefix": "2001:504:0:1::/64", + "in_dfz": true, + "created": "2023-04-21T13:46:31.689241Z", + "updated": "2023-04-21T13:46:32.093210Z", + "status": "ok" + }, + { + "id": 3, + "ixlan_id": 2, + "protocol": "IPv4", + "prefix": "206.223.123.0/24", + "in_dfz": true, + "created": "2023-04-21T13:46:31.799237Z", + "updated": "2023-04-21T13:46:32.186992Z", + "status": "ok" + }, + { + "id": 4, + "ixlan_id": 2, + "protocol": "IPv6", + "prefix": "2001:504:0:3::/64", + "in_dfz": true, + "created": "2023-04-21T13:46:31.804216Z", + "updated": "2023-04-21T13:46:32.191110Z", + "status": "ok" + } + ], + "meta": {} +} \ No newline at end of file diff --git a/tests/data/cache/net-0.json b/tests/data/cache/net-0.json new file mode 100644 index 0000000..98f0dcb --- /dev/null +++ b/tests/data/cache/net-0.json @@ -0,0 +1,143 @@ +{ + "data": [ + { + "id": 1, + "org_id": 1, + "name": "net 25304adc", + "aka": "net 518dea7d", + "name_long": "net bb2f2036", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "asn": 63312, + "looking_glass": "https://www.peeringdb.com/looking-glass", + "route_server": "https://www.peeringdb.com/route-server", + "irr_as_set": "AS-9698E921@RIPE", + "info_type": "NSP", + "info_prefixes4": 50000, + "info_prefixes6": 5000, + "info_traffic": "20-100Mbps", + "info_ratio": "Heavy Outbound", + "info_scope": "Regional", + "info_unicast": true, + "info_multicast": true, + "info_ipv6": true, + "info_never_via_route_servers": true, + "ix_count": 0, + "fac_count": 1, + "notes": "Some notes", + "netixlan_updated": null, + "netfac_updated": "2023-04-21T13:46:32.333957Z", + "poc_updated": null, + "policy_url": "https://www.peeringdb.com/policy_url", + "policy_general": "Restrictive", + "policy_locations": "Required - US", + "policy_ratio": true, + "policy_contracts": "Required", + "allow_ixp_update": true, + "status_dashboard": null, + "rir_status": "ok", + "rir_status_updated": null, + "created": "2023-04-21T13:46:31.599666Z", + "updated": "2023-04-21T13:46:32.039630Z", + "status": "ok" + }, + { + "id": 2, + "org_id": 2, + "name": "net 4be39055", + "aka": "net fafca815", + "name_long": "net 275a8e66", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "asn": 63313, + "looking_glass": "https://www.peeringdb.com/looking-glass", + "route_server": "https://www.peeringdb.com/route-server", + "irr_as_set": "AS-32B049BF@RIPE", + "info_type": "NSP", + "info_prefixes4": 50000, + "info_prefixes6": 5000, + "info_traffic": "20-100Mbps", + "info_ratio": "Heavy Outbound", + "info_scope": "Regional", + "info_unicast": true, + "info_multicast": true, + "info_ipv6": true, + "info_never_via_route_servers": true, + "ix_count": 0, + "fac_count": 1, + "notes": "Some notes", + "netixlan_updated": null, + "netfac_updated": "2023-04-21T13:46:32.357720Z", + "poc_updated": null, + "policy_url": "https://www.peeringdb.com/policy_url", + "policy_general": "Restrictive", + "policy_locations": "Required - US", + "policy_ratio": true, + "policy_contracts": "Required", + "allow_ixp_update": true, + "status_dashboard": null, + "rir_status": "ok", + "rir_status_updated": null, + "created": "2023-04-21T13:46:31.749549Z", + "updated": "2023-04-21T13:46:32.137057Z", + "status": "ok" + }, + { + "id": 3, + "org_id": 3, + "name": "net d58902ee", + "aka": "net fdec4433", + "name_long": "net 35ee1388", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "asn": 63314, + "looking_glass": "https://www.peeringdb.com/looking-glass", + "route_server": "https://www.peeringdb.com/route-server", + "irr_as_set": "AS-13F8D526@RIPE", + "info_type": "NSP", + "info_prefixes4": 50000, + "info_prefixes6": 5000, + "info_traffic": "20-100Mbps", + "info_ratio": "Heavy Outbound", + "info_scope": "Regional", + "info_unicast": true, + "info_multicast": true, + "info_ipv6": true, + "info_never_via_route_servers": true, + "ix_count": 0, + "fac_count": 0, + "notes": "Some notes", + "netixlan_updated": null, + "netfac_updated": null, + "poc_updated": null, + "policy_url": "https://www.peeringdb.com/policy_url", + "policy_general": "Restrictive", + "policy_locations": "Required - US", + "policy_ratio": true, + "policy_contracts": "Required", + "allow_ixp_update": true, + "status_dashboard": null, + "rir_status": "ok", + "rir_status_updated": null, + "created": "2023-04-21T13:46:31.854501Z", + "updated": "2023-04-21T13:46:32.243221Z", + "status": "ok" + } + ], + "meta": {} +} \ No newline at end of file diff --git a/tests/data/cache/netfac-0.json b/tests/data/cache/netfac-0.json new file mode 100644 index 0000000..69ee97b --- /dev/null +++ b/tests/data/cache/netfac-0.json @@ -0,0 +1,29 @@ +{ + "data": [ + { + "id": 1, + "name": "fac 6474d82a", + "city": "Chicago", + "country": "US", + "net_id": 1, + "fac_id": 1, + "local_asn": 63312, + "created": "2023-04-21T13:46:31.722434Z", + "updated": "2023-04-21T13:46:32.115758Z", + "status": "ok" + }, + { + "id": 2, + "name": "fac d8e202c9", + "city": "Chicago", + "country": "US", + "net_id": 2, + "fac_id": 2, + "local_asn": 63313, + "created": "2023-04-21T13:46:31.833997Z", + "updated": "2023-04-21T13:46:32.218085Z", + "status": "ok" + } + ], + "meta": {} +} \ No newline at end of file diff --git a/tests/data/cache/netixlan-0.json b/tests/data/cache/netixlan-0.json new file mode 100644 index 0000000..ea6db35 --- /dev/null +++ b/tests/data/cache/netixlan-0.json @@ -0,0 +1,39 @@ +{ + "data": [ + { + "id": 1, + "net_id": 1, + "ix_id": 1, + "name": "ix b7b05aa8", + "ixlan_id": 1, + "notes": "Some notes", + "speed": 1000, + "asn": 63312, + "ipaddr4": "206.223.116.101", + "ipaddr6": "2001:504:0:1::65", + "is_rs_peer": true, + "operational": true, + "created": "2023-04-21T13:46:31.718816Z", + "updated": "2023-04-21T13:46:32.108511Z", + "status": "ok" + }, + { + "id": 2, + "net_id": 2, + "ix_id": 2, + "name": "ix e7eccd56", + "ixlan_id": 2, + "notes": "Some notes", + "speed": 1000, + "asn": 63313, + "ipaddr4": "206.223.123.101", + "ipaddr6": "2001:504:0:3::65", + "is_rs_peer": true, + "operational": true, + "created": "2023-04-21T13:46:31.831132Z", + "updated": "2023-04-21T13:46:32.209023Z", + "status": "ok" + } + ], + "meta": {} +} \ No newline at end of file diff --git a/tests/data/cache/org-0.json b/tests/data/cache/org-0.json new file mode 100644 index 0000000..7e715b2 --- /dev/null +++ b/tests/data/cache/org-0.json @@ -0,0 +1,194 @@ +{ + "data": [ + { + "id": 1, + "name": "org c1ab780b", + "aka": "org 7190d9b5", + "name_long": "org c0c98fe2", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "notes": "Some notes", + "address1": "Address line 1", + "address2": "Address line 2", + "city": "Chicago", + "country": "US", + "state": "Illinois", + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.571746Z", + "updated": "2023-04-21T13:46:32.027157Z", + "status": "ok" + }, + { + "id": 2, + "name": "org d1aa972c", + "aka": "org 1a622c48", + "name_long": "org dc746f0b", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "notes": "Some notes", + "address1": "Address line 1", + "address2": "Address line 2", + "city": "Chicago", + "country": "US", + "state": "Illinois", + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.731830Z", + "updated": "2023-04-21T13:46:32.124054Z", + "status": "ok" + }, + { + "id": 3, + "name": "org 31b3a8ce", + "aka": "org fad601db", + "name_long": "org 32530bbe", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "notes": "Some notes", + "address1": "Address line 1", + "address2": "Address line 2", + "city": "Chicago", + "country": "US", + "state": "Illinois", + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.838141Z", + "updated": "2023-04-21T13:46:32.227988Z", + "status": "ok" + }, + { + "id": 4, + "name": "org 15416717", + "aka": "org 85915f9e", + "name_long": "org be5c65d9", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "notes": "Some notes", + "address1": "Address line 1", + "address2": "Address line 2", + "city": "Chicago", + "country": "US", + "state": "Illinois", + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.859884Z", + "updated": "2023-04-21T13:46:32.248987Z", + "status": "ok" + }, + { + "id": 5, + "name": "org fd25f48c", + "aka": "org d02076e0", + "name_long": "org 1655e1eb", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "notes": "Some notes", + "address1": "Address line 1", + "address2": "Address line 2", + "city": "Chicago", + "country": "US", + "state": "Illinois", + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.887858Z", + "updated": "2023-04-21T13:46:32.274524Z", + "status": "ok" + }, + { + "id": 6, + "name": "org b81a864a", + "aka": "org 013dc6c1", + "name_long": "org d91dbdd8", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "notes": "Some notes", + "address1": "Address line 1", + "address2": "Address line 2", + "city": "Chicago", + "country": "US", + "state": "Illinois", + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.906042Z", + "updated": "2023-04-21T13:46:32.295137Z", + "status": "ok" + }, + { + "id": 7, + "name": "org 856d03a6", + "aka": "org 1cf71ddf", + "name_long": "org dd78bf31", + "website": "https://www.peeringdb.com", + "social_media": [ + { + "service": "website", + "identifier": "https://www.peeringdb.com" + } + ], + "notes": "Some notes", + "address1": "Address line 1", + "address2": "Address line 2", + "city": "Chicago", + "country": "US", + "state": "Illinois", + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.924127Z", + "updated": "2023-04-21T13:46:32.316396Z", + "status": "ok" + } + ], + "meta": {} +} \ No newline at end of file diff --git a/tests/data/cache/poc-0.json b/tests/data/cache/poc-0.json new file mode 100644 index 0000000..10f7dfb --- /dev/null +++ b/tests/data/cache/poc-0.json @@ -0,0 +1,31 @@ +{ + "data": [ + { + "id": 1, + "net_id": 1, + "role": "Abuse", + "visible": "Public", + "name": "poc 7e5059d5", + "phone": "+12065550199", + "email": "test@peeringdb.com", + "url": "https://www.peeringdb.com/url", + "created": "2023-04-21T13:46:31.726706Z", + "updated": "2023-04-21T13:46:32.120715Z", + "status": "ok" + }, + { + "id": 2, + "net_id": 2, + "role": "Abuse", + "visible": "Public", + "name": "poc 8c049ef0", + "phone": "+12065550199", + "email": "test@peeringdb.com", + "url": "https://www.peeringdb.com/url", + "created": "2023-04-21T13:46:31.835602Z", + "updated": "2023-04-21T13:46:32.223612Z", + "status": "ok" + } + ], + "meta": {} +} \ No newline at end of file diff --git a/tests/data/config0/config.yaml b/tests/data/config0/config.yaml index 3166e3d..7327737 100644 --- a/tests/data/config0/config.yaml +++ b/tests/data/config0/config.yaml @@ -1,5 +1,6 @@ sync: url: https://test.peeringdb.com/api + cache_url: '' timeout: 60 orm: database: diff --git a/tests/data/full/campus.json b/tests/data/full/campus.json index fc53523..76c665d 100644 --- a/tests/data/full/campus.json +++ b/tests/data/full/campus.json @@ -1,72 +1,17 @@ [ { - "fields": { - "created": "2018-12-20T23:12:57.086", - "name": "fac c8deada2", - "notes": "Some notes", - "org": 7, - "status": "ok", - "updated": "2018-12-20T23:12:57.086", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.campus", - "pk": 7 - }, - { - "fields": { - "created": "2018-12-20T23:12:57.192", - "name": "fac 44f33fd1", - "notes": "Some notes", - "org": 8, - "status": "ok", - "updated": "2018-12-20T23:12:57.192", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.campus", - "pk": 8 - }, - { - "fields": { - "created": "2018-12-20T23:12:57.301", - "name": "fac 19cae906", - "notes": "Some notes", - "org": 9, - "status": "ok", - "updated": "2018-12-20T23:12:57.301", - "version": 0, - "website": "https://www.peeringdb.com" - }, "model": "django_peeringdb.campus", - "pk": 9 - }, - { + "pk": 1, "fields": { - "created": "2018-12-20T23:12:57.409", - "name": "fac 4d963fa5", - "notes": "Some notes", - "org": 10, + "org_id": 1, "status": "ok", - "updated": "2018-12-20T23:12:57.409", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.campus", - "pk": 10 - }, - { - "fields": { - "created": "2018-12-20T23:12:57.595", - "name": "fac 90e068bc", + "created": "2023-04-21T13:46:31.660560", + "updated": "2023-04-21T16:02:46.336666", + "name": "campus 41c40b88", + "name_long": "campus 505fd8c1", "notes": "Some notes", - "org": 13, - "status": "ok", - "updated": "2018-12-20T23:12:57.595", - "version": 0, + "aka": "campus 34d1fb8d", "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.campus", - "pk": 11 + } } ] \ No newline at end of file diff --git a/tests/data/full/carrier.json b/tests/data/full/carrier.json index 88fd91e..f2fddcd 100644 --- a/tests/data/full/carrier.json +++ b/tests/data/full/carrier.json @@ -1,72 +1,47 @@ [ { - "fields": { - "created": "2018-12-20T23:12:57.086", - "name": "fac c8deada2", - "notes": "Some notes", - "org": 7, - "status": "ok", - "updated": "2018-12-20T23:12:57.086", - "version": 0, - "website": "https://www.peeringdb.com" - }, "model": "django_peeringdb.carrier", - "pk": 7 - }, - { + "pk": 1, "fields": { - "created": "2018-12-20T23:12:57.192", - "name": "fac 44f33fd1", + "org_id": 1, + "name": "carrier 0cc83d81", + "aka": "carrier 2009c8c6", + "name_long": "carrier e952dd11", + "website": "https://www.peeringdb.com", "notes": "Some notes", - "org": 8, - "status": "ok", - "updated": "2018-12-20T23:12:57.192", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.carrier", - "pk": 8 + "created": "2023-04-21T13:46:31.666025", + "updated": "2023-04-21T13:46:32.080105", + "status": "ok" + } }, { - "fields": { - "created": "2018-12-20T23:12:57.301", - "name": "fac 19cae906", - "notes": "Some notes", - "org": 9, - "status": "ok", - "updated": "2018-12-20T23:12:57.301", - "version": 0, - "website": "https://www.peeringdb.com" - }, "model": "django_peeringdb.carrier", - "pk": 9 - }, - { + "pk": 2, "fields": { - "created": "2018-12-20T23:12:57.409", - "name": "fac 4d963fa5", + "org_id": 2, + "name": "carrier e9f243d4", + "aka": "carrier 2e71cae8", + "name_long": "carrier 395b8647", + "website": "https://www.peeringdb.com", "notes": "Some notes", - "org": 10, - "status": "ok", - "updated": "2018-12-20T23:12:57.409", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.carrier", - "pk": 10 + "created": "2023-04-21T13:46:31.787816", + "updated": "2023-04-21T13:46:32.176443", + "status": "ok" + } }, { + "model": "django_peeringdb.carrier", + "pk": 3, "fields": { - "created": "2018-12-20T23:12:57.595", - "name": "fac 90e068bc", + "org_id": 6, + "name": "carrier e9e1527c", + "aka": "carrier 452ff650", + "name_long": "carrier b4a1580f", + "website": "https://www.peeringdb.com", "notes": "Some notes", - "org": 13, - "status": "ok", - "updated": "2018-12-20T23:12:57.595", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.carrier", - "pk": 11 + "created": "2023-04-21T13:46:31.920163", + "updated": "2023-04-21T13:46:32.304956", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full/carrierfac.json b/tests/data/full/carrierfac.json index 9eb5dcf..8718403 100644 --- a/tests/data/full/carrierfac.json +++ b/tests/data/full/carrierfac.json @@ -1,50 +1,24 @@ [ { - "fields": { - "created": "2018-12-20T23:12:57.109", - "fac": 7, - "carrier": 7, - "status": "ok", - "updated": "2018-12-20T23:12:57.109", - "version": 0 - }, "model": "django_peeringdb.carrierfacility", - "pk": 7 - }, - { + "pk": 1, "fields": { - "created": "2018-12-20T23:12:57.216", - "fac": 8, - "carrier": 8, - "status": "ok", - "updated": "2018-12-20T23:12:57.216", - "version": 0 - }, - "model": "django_peeringdb.carrierfacility", - "pk": 8 + "carrier_id": 1, + "fac_id": 1, + "created": "2023-04-21T13:46:31.674252", + "updated": "2023-04-21T13:46:32.085917", + "status": "ok" + } }, { - "fields": { - "created": "2018-12-20T23:12:57.324", - "fac": 9, - "carrier": 9, - "status": "ok", - "updated": "2018-12-20T23:12:57.324", - "version": 0 - }, "model": "django_peeringdb.carrierfacility", - "pk": 9 - }, - { + "pk": 2, "fields": { - "created": "2018-12-20T23:12:57.432", - "fac": 10, - "carrier": 10, - "status": "ok", - "updated": "2018-12-20T23:12:57.432", - "version": 0 - }, - "model": "django_peeringdb.carrierfacility", - "pk": 10 + "carrier_id": 2, + "fac_id": 2, + "created": "2023-04-21T13:46:31.793418", + "updated": "2023-04-21T13:46:32.182163", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full/fac.json b/tests/data/full/fac.json index bef146b..3999037 100644 --- a/tests/data/full/fac.json +++ b/tests/data/full/fac.json @@ -1,147 +1,146 @@ [ { + "model": "django_peeringdb.facility", + "pk": 1, "fields": { + "org_id": 1, + "name": "fac 6474d82a", + "aka": "fac 548d62e1", + "name_long": "fac 87ca4641", + "website": "https://www.peeringdb.com", + "clli": "61C849", + "rencode": "", + "npanxx": "123-456", + "notes": "Some notes", + "sales_email": "test@peeringdb.com", + "sales_phone": "+12065550199", + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "diverse_serving_substations": true, + "property": null, + "region_continent": "North America", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.649864", + "updated": "2023-04-21T16:02:38.066691", + "status": "ok", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", - "clli": "4F424D", "country": "US", - "created": "2018-12-20T23:12:57.086", - "latitude": "0.000000", - "longitude": "0.000000", - "name": "fac c8deada2", - "notes": "Some notes", - "npanxx": "123-456", - "org": 7, - "rencode": "4A9C90", - "sales_email": "", - "sales_phone": "", "state": "Illinois", - "status": "ok", - "tech_email": "", - "tech_phone": "", - "updated": "2018-12-20T23:12:57.086", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.facility", - "pk": 7 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 21.33, + "longitude": -157.917855 + } }, { + "model": "django_peeringdb.facility", + "pk": 2, "fields": { + "org_id": 2, + "name": "fac d8e202c9", + "aka": "fac baf0125d", + "name_long": "fac 4823f9db", + "website": "https://www.peeringdb.com", + "clli": "B290C7", + "rencode": "", + "npanxx": "123-456", + "notes": "Some notes", + "sales_email": "test@peeringdb.com", + "sales_phone": "+12065550199", + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "diverse_serving_substations": true, + "property": null, + "region_continent": "North America", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.777693", + "updated": "2023-04-21T13:46:32.163613", + "status": "ok", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", - "clli": "7FF1B3", "country": "US", - "created": "2018-12-20T23:12:57.192", - "latitude": "0.000000", - "longitude": "0.000000", - "name": "fac 44f33fd1", - "notes": "Some notes", - "npanxx": "123-456", - "org": 8, - "rencode": "E09C1A", - "sales_email": "", - "sales_phone": "", "state": "Illinois", - "status": "ok", - "tech_email": "", - "tech_phone": "", - "updated": "2018-12-20T23:12:57.192", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.facility", - "pk": 8 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0 + } }, { + "model": "django_peeringdb.facility", + "pk": 3, "fields": { + "org_id": 5, + "name": "fac d7d31fa7", + "aka": "fac 11e46138", + "name_long": "fac d70f90fa", + "website": "https://www.peeringdb.com", + "clli": "1E4396", + "rencode": "", + "npanxx": "123-456", + "notes": "Some notes", + "sales_email": "test@peeringdb.com", + "sales_phone": "+12065550199", + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "diverse_serving_substations": true, + "property": null, + "region_continent": "North America", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.902223", + "updated": "2023-04-21T13:46:32.287846", + "status": "ok", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", - "clli": "620400", "country": "US", - "created": "2018-12-20T23:12:57.301", - "latitude": "0.000000", - "longitude": "0.000000", - "name": "fac 19cae906", - "notes": "Some notes", - "npanxx": "123-456", - "org": 9, - "rencode": "038A65", - "sales_email": "", - "sales_phone": "", "state": "Illinois", - "status": "ok", - "tech_email": "", - "tech_phone": "", - "updated": "2018-12-20T23:12:57.301", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.facility", - "pk": 9 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0 + } }, { + "model": "django_peeringdb.facility", + "pk": 6, "fields": { - "address1": "Address line 1", - "address2": "Address line 2", - "city": "Chicago", - "clli": "40D67A", - "country": "US", - "created": "2018-12-20T23:12:57.409", - "latitude": "0.000000", - "longitude": "0.000000", - "name": "fac 4d963fa5", - "notes": "Some notes", - "npanxx": "123-456", - "org": 10, - "rencode": "5A295D", + "org_id": 1, + "name": "fac 6474d82b", + "aka": "", + "name_long": "", + "website": "https://www.peeringdb.com", + "clli": "", + "rencode": "", + "npanxx": "", + "notes": "", "sales_email": "", "sales_phone": "", - "state": "Illinois", - "status": "ok", "tech_email": "", "tech_phone": "", - "updated": "2018-12-20T23:12:57.409", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.facility", - "pk": 10 - }, - { - "fields": { + "diverse_serving_substations": null, + "property": null, + "region_continent": "North America", + "status_dashboard": null, + "created": "2023-04-21T15:58:19.084386", + "updated": "2023-04-21T16:02:46.329462", + "status": "ok", "address1": "Address line 1", - "address2": "Address line 2", + "address2": "", "city": "Chicago", - "clli": "88C182", "country": "US", - "created": "2018-12-20T23:12:57.595", - "latitude": "0.000000", - "longitude": "0.000000", - "name": "fac 90e068bc", - "notes": "Some notes", - "npanxx": "123-456", - "org": 13, - "rencode": "64F492", - "sales_email": "", - "sales_phone": "", "state": "Illinois", - "status": "ok", - "tech_email": "", - "tech_phone": "", - "updated": "2018-12-20T23:12:57.595", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.facility", - "pk": 11 + "zipcode": "", + "floor": "", + "suite": "", + "latitude": 21.33, + "longitude": -157.917855 + } } ] \ No newline at end of file diff --git a/tests/data/full/ix.json b/tests/data/full/ix.json index 262fd17..dd69f4f 100644 --- a/tests/data/full/ix.json +++ b/tests/data/full/ix.json @@ -1,137 +1,104 @@ [ { - "fields": { - "city": "Chicago", - "country": "US", - "created": "2018-12-20T23:12:57.078", - "media": "Multiple", - "name": "ix 5826db43", - "name_long": "ix 255bce16", - "notes": "Some notes", - "org": 7, - "policy_email": "test@peeringdb.com", - "policy_phone": "+1 206 555 0199", - "proto_ipv6": true, - "proto_multicast": true, - "proto_unicast": true, - "region_continent": "Europe", - "status": "ok", - "tech_email": "test@peeringdb.com", - "tech_phone": "+1 206 555 0199", - "updated": "2018-12-20T23:12:57.078", - "url_stats": "https://www.peeringdb.com/url_stats", - "version": 0, - "website": "https://www.peeringdb.com" - }, "model": "django_peeringdb.internetexchange", - "pk": 7 - }, - { + "pk": 1, "fields": { + "org_id": 1, + "name": "ix b7b05aa8", + "aka": "ix 11a3deb1", + "name_long": "ix 8201a644", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.186", - "media": "Multiple", - "name": "ix c59cb705", - "name_long": "ix 2e681ab3", - "notes": "Some notes", - "org": 8, - "policy_email": "test@peeringdb.com", - "policy_phone": "+1 206 555 0199", - "proto_ipv6": true, - "proto_multicast": true, - "proto_unicast": true, "region_continent": "Europe", - "status": "ok", - "tech_email": "test@peeringdb.com", - "tech_phone": "+1 206 555 0199", - "updated": "2018-12-20T23:12:57.186", - "url_stats": "https://www.peeringdb.com/url_stats", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.internetexchange", - "pk": 8 - }, - { - "fields": { - "city": "Chicago", - "country": "US", - "created": "2018-12-20T23:12:57.295", "media": "Multiple", - "name": "ix af8abd7b", - "name_long": "ix aa926932", "notes": "Some notes", - "org": 9, - "policy_email": "test@peeringdb.com", - "policy_phone": "+1 206 555 0199", - "proto_ipv6": true, - "proto_multicast": true, "proto_unicast": true, - "region_continent": "Europe", - "status": "ok", - "tech_email": "test@peeringdb.com", - "tech_phone": "+1 206 555 0199", - "updated": "2018-12-20T23:12:57.295", + "proto_multicast": true, + "proto_ipv6": true, + "website": "https://www.peeringdb.com", "url_stats": "https://www.peeringdb.com/url_stats", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.internetexchange", - "pk": 9 + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "policy_email": "test@peeringdb.com", + "policy_phone": "+12065550199", + "sales_phone": "+12065550199", + "sales_email": "test@peeringdb.com", + "ixf_net_count": 0, + "ixf_last_import": null, + "service_level": "Best Effort (no SLA)", + "terms": "No Commercial Terms", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.620288", + "updated": "2023-04-21T13:46:32.047597", + "status": "ok" + } }, { + "model": "django_peeringdb.internetexchange", + "pk": 2, "fields": { + "org_id": 2, + "name": "ix e7eccd56", + "aka": "ix 465eded9", + "name_long": "ix 5855c1da", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.402", + "region_continent": "Europe", "media": "Multiple", - "name": "ix 35f959d3", - "name_long": "ix edb6903d", "notes": "Some notes", - "org": 10, - "policy_email": "test@peeringdb.com", - "policy_phone": "+1 206 555 0199", - "proto_ipv6": true, - "proto_multicast": true, "proto_unicast": true, - "region_continent": "Europe", - "status": "ok", - "tech_email": "test@peeringdb.com", - "tech_phone": "+1 206 555 0199", - "updated": "2018-12-20T23:12:57.402", + "proto_multicast": true, + "proto_ipv6": true, + "website": "https://www.peeringdb.com", "url_stats": "https://www.peeringdb.com/url_stats", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.internetexchange", - "pk": 10 + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "policy_email": "test@peeringdb.com", + "policy_phone": "+12065550199", + "sales_phone": "+12065550199", + "sales_email": "test@peeringdb.com", + "ixf_net_count": 0, + "ixf_last_import": null, + "service_level": "Best Effort (no SLA)", + "terms": "No Commercial Terms", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.755715", + "updated": "2023-04-21T13:46:32.146799", + "status": "ok" + } }, { + "model": "django_peeringdb.internetexchange", + "pk": 3, "fields": { + "org_id": 4, + "name": "ix eae2706e", + "aka": "ix 52ba899a", + "name_long": "ix 3c0ce06c", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.546", + "region_continent": "Europe", "media": "Multiple", - "name": "ix 0f8a8429", - "name_long": "ix f5150c3f", "notes": "Some notes", - "org": 12, - "policy_email": "test@peeringdb.com", - "policy_phone": "+1 206 555 0199", - "proto_ipv6": true, + "proto_unicast": false, "proto_multicast": true, - "proto_unicast": true, - "region_continent": "Europe", - "status": "ok", - "tech_email": "test@peeringdb.com", - "tech_phone": "+1 206 555 0199", - "updated": "2018-12-20T23:12:57.546", + "proto_ipv6": false, + "website": "https://www.peeringdb.com", "url_stats": "https://www.peeringdb.com/url_stats", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.internetexchange", - "pk": 11 + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "policy_email": "test@peeringdb.com", + "policy_phone": "+12065550199", + "sales_phone": "+12065550199", + "sales_email": "test@peeringdb.com", + "ixf_net_count": 0, + "ixf_last_import": null, + "service_level": "Best Effort (no SLA)", + "terms": "No Commercial Terms", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.876008", + "updated": "2023-04-21T13:46:32.259420", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full/ixfac.json b/tests/data/full/ixfac.json index 6f68c6c..1410016 100644 --- a/tests/data/full/ixfac.json +++ b/tests/data/full/ixfac.json @@ -1,50 +1,24 @@ [ { - "fields": { - "created": "2018-12-20T23:12:57.109", - "fac": 7, - "ix": 7, - "status": "ok", - "updated": "2018-12-20T23:12:57.109", - "version": 0 - }, "model": "django_peeringdb.internetexchangefacility", - "pk": 7 - }, - { + "pk": 1, "fields": { - "created": "2018-12-20T23:12:57.216", - "fac": 8, - "ix": 8, - "status": "ok", - "updated": "2018-12-20T23:12:57.216", - "version": 0 - }, - "model": "django_peeringdb.internetexchangefacility", - "pk": 8 + "ix_id": 1, + "fac_id": 1, + "created": "2023-04-21T13:46:31.691524", + "updated": "2023-04-21T13:46:32.100245", + "status": "ok" + } }, { - "fields": { - "created": "2018-12-20T23:12:57.324", - "fac": 9, - "ix": 9, - "status": "ok", - "updated": "2018-12-20T23:12:57.324", - "version": 0 - }, "model": "django_peeringdb.internetexchangefacility", - "pk": 9 - }, - { + "pk": 2, "fields": { - "created": "2018-12-20T23:12:57.432", - "fac": 10, - "ix": 10, - "status": "ok", - "updated": "2018-12-20T23:12:57.432", - "version": 0 - }, - "model": "django_peeringdb.internetexchangefacility", - "pk": 10 + "ix_id": 2, + "fac_id": 2, + "created": "2023-04-21T13:46:31.806328", + "updated": "2023-04-21T13:46:32.199964", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full/ixlan.json b/tests/data/full/ixlan.json index 1e30c84..246f683 100644 --- a/tests/data/full/ixlan.json +++ b/tests/data/full/ixlan.json @@ -1,74 +1,54 @@ [ { - "fields": { - "arp_sponge": null, - "created": "2018-12-20T23:12:57.093", - "descr": "Arbitrary description", - "dot1q_support": true, - "ix": 7, - "mtu": 1500, - "name": "ixlan ee527617", - "rs_asn": 63313, - "status": "ok", - "updated": "2018-12-20T23:12:57.093", - "version": 0, - "vlan": null - }, "model": "django_peeringdb.ixlan", - "pk": 7 - }, - { + "pk": 1, "fields": { - "arp_sponge": null, - "created": "2018-12-20T23:12:57.200", - "descr": "Arbitrary description", - "dot1q_support": true, - "ix": 8, + "ix_id": 1, + "name": "", + "descr": "", "mtu": 1500, - "name": "ixlan e3bf0d0c", - "rs_asn": 63317, - "status": "ok", - "updated": "2018-12-20T23:12:57.200", - "version": 0, - "vlan": null - }, - "model": "django_peeringdb.ixlan", - "pk": 8 + "dot1q_support": false, + "rs_asn": 0, + "arp_sponge": null, + "ixf_ixp_member_list_url": null, + "ixf_ixp_member_list_url_visible": "Private", + "created": "2023-04-21T13:46:31.639502", + "updated": "2023-04-21T13:46:32.056605", + "status": "ok" + } }, { + "model": "django_peeringdb.ixlan", + "pk": 2, "fields": { - "arp_sponge": null, - "created": "2018-12-20T23:12:57.308", - "descr": "Arbitrary description", - "dot1q_support": true, - "ix": 9, + "ix_id": 2, + "name": "", + "descr": "", "mtu": 1500, - "name": "ixlan d5971d63", - "rs_asn": 63321, - "status": "ok", - "updated": "2018-12-20T23:12:57.308", - "version": 0, - "vlan": null - }, - "model": "django_peeringdb.ixlan", - "pk": 9 + "dot1q_support": false, + "rs_asn": 0, + "arp_sponge": null, + "ixf_ixp_member_list_url_visible": "Private", + "created": "2023-04-21T13:46:31.771609", + "updated": "2023-04-21T13:46:32.154982", + "status": "ok" + } }, { + "model": "django_peeringdb.ixlan", + "pk": 3, "fields": { - "arp_sponge": null, - "created": "2018-12-20T23:12:57.416", - "descr": "Arbitrary description", - "dot1q_support": true, - "ix": 10, + "ix_id": 3, + "name": "", + "descr": "", "mtu": 1500, - "name": "ixlan 3824c086", - "rs_asn": 63325, - "status": "ok", - "updated": "2018-12-20T23:12:57.416", - "version": 0, - "vlan": null - }, - "model": "django_peeringdb.ixlan", - "pk": 10 + "dot1q_support": false, + "rs_asn": 0, + "arp_sponge": null, + "ixf_ixp_member_list_url_visible": "Private", + "created": "2023-04-21T13:46:31.885988", + "updated": "2023-04-21T13:46:32.268069", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full/ixpfx.json b/tests/data/full/ixpfx.json index 28e528e..f47579f 100644 --- a/tests/data/full/ixpfx.json +++ b/tests/data/full/ixpfx.json @@ -1,114 +1,54 @@ [ { - "fields": { - "created": "2018-12-20T23:12:57.098", - "ixlan": 7, - "notes": "", - "prefix": "206.223.116.0/23", - "protocol": "IPv4", - "status": "ok", - "updated": "2018-12-20T23:12:57.098", - "version": 0 - }, - "model": "django_peeringdb.ixlanprefix", - "pk": 13 - }, - { - "fields": { - "created": "2018-12-20T23:12:57.103", - "ixlan": 7, - "notes": "", - "prefix": "2001:504:0:1::/64", - "protocol": "IPv6", - "status": "ok", - "updated": "2018-12-20T23:12:57.103", - "version": 0 - }, "model": "django_peeringdb.ixlanprefix", - "pk": 14 - }, - { + "pk": 1, "fields": { - "created": "2018-12-20T23:12:57.206", - "ixlan": 8, - "notes": "", - "prefix": "206.223.123.0/24", + "ixlan_id": 1, "protocol": "IPv4", - "status": "ok", - "updated": "2018-12-20T23:12:57.206", - "version": 0 - }, - "model": "django_peeringdb.ixlanprefix", - "pk": 15 - }, - { - "fields": { - "created": "2018-12-20T23:12:57.211", - "ixlan": 8, - "notes": "", - "prefix": "2001:504:0:3::/64", - "protocol": "IPv6", - "status": "ok", - "updated": "2018-12-20T23:12:57.211", - "version": 0 - }, - "model": "django_peeringdb.ixlanprefix", - "pk": 16 + "prefix": "206.223.116.0/23", + "in_dfz": true, + "created": "2023-04-21T13:46:31.682621", + "updated": "2023-04-21T13:46:32.090235", + "status": "ok" + } }, { - "fields": { - "created": "2018-12-20T23:12:57.312", - "ixlan": 9, - "notes": "", - "prefix": "206.223.118.0/24", - "protocol": "IPv4", - "status": "ok", - "updated": "2018-12-20T23:12:57.312", - "version": 0 - }, "model": "django_peeringdb.ixlanprefix", - "pk": 17 - }, - { + "pk": 2, "fields": { - "created": "2018-12-20T23:12:57.318", - "ixlan": 9, - "notes": "", - "prefix": "2001:504:0:5::/64", + "ixlan_id": 1, "protocol": "IPv6", - "status": "ok", - "updated": "2018-12-20T23:12:57.318", - "version": 0 - }, - "model": "django_peeringdb.ixlanprefix", - "pk": 18 + "prefix": "2001:504:0:1::/64", + "in_dfz": true, + "created": "2023-04-21T13:46:31.689241", + "updated": "2023-04-21T13:46:32.093210", + "status": "ok" + } }, { + "model": "django_peeringdb.ixlanprefix", + "pk": 3, "fields": { - "created": "2018-12-20T23:12:57.422", - "ixlan": 10, - "notes": "", - "prefix": "208.115.136.0/23", + "ixlan_id": 2, "protocol": "IPv4", - "status": "ok", - "updated": "2018-12-20T23:12:57.422", - "version": 0 - }, - "model": "django_peeringdb.ixlanprefix", - "pk": 19 + "prefix": "206.223.123.0/24", + "in_dfz": true, + "created": "2023-04-21T13:46:31.799237", + "updated": "2023-04-21T13:46:32.186992", + "status": "ok" + } }, { + "model": "django_peeringdb.ixlanprefix", + "pk": 4, "fields": { - "created": "2018-12-20T23:12:57.427", - "ixlan": 10, - "notes": "", - "prefix": "2001:504:0:4::/64", + "ixlan_id": 2, "protocol": "IPv6", - "status": "ok", - "updated": "2018-12-20T23:12:57.427", - "version": 0 - }, - "model": "django_peeringdb.ixlanprefix", - "pk": 20 + "prefix": "2001:504:0:3::/64", + "in_dfz": true, + "created": "2023-04-21T13:46:31.804216", + "updated": "2023-04-21T13:46:32.191110", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full/net.json b/tests/data/full/net.json index 25b06d7..a574a3d 100644 --- a/tests/data/full/net.json +++ b/tests/data/full/net.json @@ -1,177 +1,113 @@ [ { + "model": "django_peeringdb.network", + "pk": 1, "fields": { - "aka": "net 09892c47", + "org_id": 1, + "name": "net 25304adc", + "aka": "net 518dea7d", + "name_long": "net bb2f2036", + "website": "https://www.peeringdb.com", "asn": 63312, - "created": "2018-12-20T23:12:57.070", - "info_ipv6": true, - "info_multicast": true, - "info_never_via_route_servers": false, - "info_prefixes4": 50000, - "info_prefixes6": 5000, - "info_ratio": "Heavy Outbound", - "info_scope": "Regional", - "info_traffic": "20-100Mbps", - "info_type": "NSP", - "info_unicast": true, - "irr_as_set": "AS-E38EFDB2@RIPE", "looking_glass": "https://www.peeringdb.com/looking-glass", - "name": "net 7205f40e", - "notes": "Some notes", - "notes_private": "", - "org": 7, - "policy_contracts": "Required", - "policy_general": "Restrictive", - "policy_locations": "Required - US", - "policy_ratio": true, - "policy_url": "https://www.peeringdb.com/policy_url", "route_server": "https://www.peeringdb.com/route-server", - "status": "ok", - "updated": "2020-04-04T09:28:30.920", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.network", - "pk": 7 - }, - { - "fields": { - "aka": "net 31d226f5", - "asn": 63316, - "created": "2018-12-20T23:12:57.178", - "info_ipv6": true, - "info_multicast": true, - "info_never_via_route_servers": false, + "irr_as_set": "AS-9698E921@RIPE", + "info_type": "NSP", "info_prefixes4": 50000, "info_prefixes6": 5000, + "info_traffic": "20-100Mbps", "info_ratio": "Heavy Outbound", "info_scope": "Regional", - "info_traffic": "20-100Mbps", - "info_type": "NSP", "info_unicast": true, - "irr_as_set": "RIPE::AS-E2B07ED7", - "looking_glass": "https://www.peeringdb.com/looking-glass", - "name": "net bc28b812", + "info_multicast": true, + "info_ipv6": true, + "info_never_via_route_servers": true, "notes": "Some notes", - "notes_private": "", - "org": 8, - "policy_contracts": "Required", + "policy_url": "https://www.peeringdb.com/policy_url", "policy_general": "Restrictive", "policy_locations": "Required - US", "policy_ratio": true, - "policy_url": "https://www.peeringdb.com/policy_url", - "route_server": "https://www.peeringdb.com/route-server", - "status": "ok", - "updated": "2020-04-04T09:28:50.910", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.network", - "pk": 8 + "policy_contracts": "Required", + "status_dashboard": null, + "rir_status": "ok", + "rir_status_updated": null, + "created": "2023-04-21T13:46:31.599666", + "updated": "2023-04-21T13:46:32.039630", + "status": "ok" + } }, { + "model": "django_peeringdb.network", + "pk": 2, "fields": { - "aka": "net 703edb9c", - "asn": 63320, - "created": "2018-12-20T23:12:57.287", - "info_ipv6": true, - "info_multicast": true, - "info_never_via_route_servers": false, - "info_prefixes4": 50000, - "info_prefixes6": 5000, - "info_ratio": "Heavy Outbound", - "info_scope": "Regional", - "info_traffic": "20-100Mbps", - "info_type": "NSP", - "info_unicast": true, - "irr_as_set": "AS-1A0769B2@RIPE", + "org_id": 2, + "name": "net 4be39055", + "aka": "net fafca815", + "name_long": "net 275a8e66", + "website": "https://www.peeringdb.com", + "asn": 63313, "looking_glass": "https://www.peeringdb.com/looking-glass", - "name": "net a0a6e42f", - "notes": "Some notes", - "notes_private": "", - "org": 9, - "policy_contracts": "Required", - "policy_general": "Restrictive", - "policy_locations": "Required - US", - "policy_ratio": true, - "policy_url": "https://www.peeringdb.com/policy_url", "route_server": "https://www.peeringdb.com/route-server", - "status": "ok", - "updated": "2020-04-04T09:28:40.466", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.network", - "pk": 9 - }, - { - "fields": { - "aka": "net 06668b3b", - "asn": 63324, - "created": "2018-12-20T23:12:57.394", - "info_ipv6": true, - "info_multicast": true, - "info_never_via_route_servers": false, + "irr_as_set": "AS-32B049BF@RIPE", + "info_type": "NSP", "info_prefixes4": 50000, "info_prefixes6": 5000, + "info_traffic": "20-100Mbps", "info_ratio": "Heavy Outbound", "info_scope": "Regional", - "info_traffic": "20-100Mbps", - "info_type": "NSP", "info_unicast": true, - "irr_as_set": "AS-DC6E4340@RIPE", - "looking_glass": "https://www.peeringdb.com/looking-glass", - "name": "net 08e3ad54", + "info_multicast": true, + "info_ipv6": true, + "info_never_via_route_servers": true, "notes": "Some notes", - "notes_private": "", - "org": 10, - "policy_contracts": "Required", + "policy_url": "https://www.peeringdb.com/policy_url", "policy_general": "Restrictive", "policy_locations": "Required - US", "policy_ratio": true, - "policy_url": "https://www.peeringdb.com/policy_url", - "route_server": "https://www.peeringdb.com/route-server", - "status": "ok", - "updated": "2020-04-04T09:28:18.299", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.network", - "pk": 10 + "policy_contracts": "Required", + "status_dashboard": null, + "rir_status": "ok", + "rir_status_updated": null, + "created": "2023-04-21T13:46:31.749549", + "updated": "2023-04-21T13:46:32.137057", + "status": "ok" + } }, { + "model": "django_peeringdb.network", + "pk": 3, "fields": { - "aka": "net 5dc77e5d", - "asn": 63328, - "created": "2018-12-20T23:12:57.496", - "info_ipv6": true, - "info_multicast": true, - "info_never_via_route_servers": false, + "org_id": 3, + "name": "net d58902ee", + "aka": "net fdec4433", + "name_long": "net 35ee1388", + "website": "https://www.peeringdb.com", + "asn": 63314, + "looking_glass": "https://www.peeringdb.com/looking-glass", + "route_server": "https://www.peeringdb.com/route-server", + "irr_as_set": "AS-13F8D526@RIPE", + "info_type": "NSP", "info_prefixes4": 50000, "info_prefixes6": 5000, + "info_traffic": "20-100Mbps", "info_ratio": "Heavy Outbound", "info_scope": "Regional", - "info_traffic": "20-100Mbps", - "info_type": "NSP", "info_unicast": true, - "irr_as_set": "AS-A4AF3D9D@RIPE", - "looking_glass": "https://www.peeringdb.com/looking-glass", - "name": "net 1ce33318", + "info_multicast": true, + "info_ipv6": true, + "info_never_via_route_servers": true, "notes": "Some notes", - "notes_private": "", - "org": 11, - "policy_contracts": "Required", + "policy_url": "https://www.peeringdb.com/policy_url", "policy_general": "Restrictive", "policy_locations": "Required - US", "policy_ratio": true, - "policy_url": "https://www.peeringdb.com/policy_url", - "route_server": "https://www.peeringdb.com/route-server", - "status": "ok", - "updated": "2020-04-04T09:27:51.517", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.network", - "pk": 11 + "policy_contracts": "Required", + "status_dashboard": null, + "rir_status": "ok", + "rir_status_updated": null, + "created": "2023-04-21T13:46:31.854501", + "updated": "2023-04-21T13:46:32.243221", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full/netfac.json b/tests/data/full/netfac.json index 4843dc8..865d854 100644 --- a/tests/data/full/netfac.json +++ b/tests/data/full/netfac.json @@ -1,66 +1,26 @@ [ { - "fields": { - "avail_atm": false, - "avail_ethernet": false, - "avail_sonet": false, - "created": "2018-12-20T23:12:57.123", - "fac": 7, - "local_asn": 63315, - "net": 7, - "status": "ok", - "updated": "2018-12-20T23:12:57.123", - "version": 0 - }, "model": "django_peeringdb.networkfacility", - "pk": 1 - }, - { + "pk": 1, "fields": { - "avail_atm": false, - "avail_ethernet": false, - "avail_sonet": false, - "created": "2018-12-20T23:12:57.231", - "fac": 8, - "local_asn": 63319, - "net": 8, - "status": "ok", - "updated": "2018-12-20T23:12:57.231", - "version": 0 - }, - "model": "django_peeringdb.networkfacility", - "pk": 2 + "net_id": 1, + "fac_id": 1, + "local_asn": 63312, + "created": "2023-04-21T13:46:31.722434", + "updated": "2023-04-21T13:46:32.115758", + "status": "ok" + } }, { - "fields": { - "avail_atm": false, - "avail_ethernet": false, - "avail_sonet": false, - "created": "2018-12-20T23:12:57.337", - "fac": 9, - "local_asn": 63323, - "net": 9, - "status": "ok", - "updated": "2018-12-20T23:12:57.337", - "version": 0 - }, "model": "django_peeringdb.networkfacility", - "pk": 3 - }, - { + "pk": 2, "fields": { - "avail_atm": false, - "avail_ethernet": false, - "avail_sonet": false, - "created": "2018-12-20T23:12:57.445", - "fac": 10, - "local_asn": 63327, - "net": 10, - "status": "ok", - "updated": "2018-12-20T23:12:57.445", - "version": 0 - }, - "model": "django_peeringdb.networkfacility", - "pk": 4 + "net_id": 2, + "fac_id": 2, + "local_asn": 63313, + "created": "2023-04-21T13:46:31.833997", + "updated": "2023-04-21T13:46:32.218085", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full/netixlan.json b/tests/data/full/netixlan.json index ff6b55a..0325c26 100644 --- a/tests/data/full/netixlan.json +++ b/tests/data/full/netixlan.json @@ -1,78 +1,38 @@ [ { + "model": "django_peeringdb.networkixlan", + "pk": 1, "fields": { - "asn": 63314, - "created": "2018-12-20T23:12:57.118", + "net_id": 1, + "ixlan_id": 1, + "notes": "Some notes", + "speed": 1000, + "asn": 63312, "ipaddr4": "206.223.116.101", "ipaddr6": "2001:504:0:1::65", "is_rs_peer": true, - "ixlan": 7, - "net": 7, - "notes": "Some notes", "operational": true, - "speed": 1000, - "status": "ok", - "updated": "2018-12-20T23:12:57.118", - "version": 0 - }, - "model": "django_peeringdb.networkixlan", - "pk": 1 + "created": "2023-04-21T13:46:31.718816", + "updated": "2023-04-21T13:46:32.108511", + "status": "ok" + } }, { - "fields": { - "asn": 63318, - "created": "2018-12-20T23:12:57.225", - "ipaddr4": "206.223.123.101", - "ipaddr6": "2001:504:0:3::65", - "is_rs_peer": true, - "ixlan": 8, - "net": 8, - "notes": "Some notes", - "operational": true, - "speed": 1000, - "status": "ok", - "updated": "2018-12-20T23:12:57.225", - "version": 0 - }, "model": "django_peeringdb.networkixlan", - "pk": 2 - }, - { + "pk": 2, "fields": { - "asn": 63322, - "created": "2018-12-20T23:12:57.332", - "ipaddr4": "206.223.118.101", - "ipaddr6": "2001:504:0:5::65", - "is_rs_peer": true, - "ixlan": 9, - "net": 9, + "net_id": 2, + "ixlan_id": 2, "notes": "Some notes", - "operational": true, "speed": 1000, - "status": "ok", - "updated": "2018-12-20T23:12:57.332", - "version": 0 - }, - "model": "django_peeringdb.networkixlan", - "pk": 3 - }, - { - "fields": { - "asn": 63326, - "created": "2018-12-20T23:12:57.441", - "ipaddr4": "208.115.136.101", - "ipaddr6": "2001:504:0:4::65", + "asn": 63313, + "ipaddr4": "206.223.123.101", + "ipaddr6": "2001:504:0:3::65", "is_rs_peer": true, - "ixlan": 10, - "net": 10, - "notes": "Some notes", "operational": true, - "speed": 1000, - "status": "ok", - "updated": "2018-12-20T23:12:57.441", - "version": 0 - }, - "model": "django_peeringdb.networkixlan", - "pk": 4 + "created": "2023-04-21T13:46:31.831132", + "updated": "2023-04-21T13:46:32.209023", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full/org.json b/tests/data/full/org.json index eb3ce5e..b5b454b 100644 --- a/tests/data/full/org.json +++ b/tests/data/full/org.json @@ -1,170 +1,170 @@ [ { - "fields": { - "address1": "Address line 1", - "address2": "Address line 2", - "city": "Chicago", - "country": "US", - "created": "2018-12-20T23:12:56.978", - "latitude": null, - "longitude": null, - "name": "org c30409ad", - "notes": "Some notes", - "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:56.978", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, "model": "django_peeringdb.organization", - "pk": 7 - }, - { + "pk": 1, "fields": { + "name": "org c1ab780b", + "aka": "org 7190d9b5", + "name_long": "org c0c98fe2", + "website": "https://www.peeringdb.com", + "notes": "Some notes", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.134", - "latitude": null, - "longitude": null, - "name": "org c496f949", - "notes": "Some notes", "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:57.134", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.organization", - "pk": 8 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.571746", + "updated": "2023-04-21T13:46:32.027157", + "status": "ok" + } }, { + "model": "django_peeringdb.organization", + "pk": 2, "fields": { + "name": "org d1aa972c", + "aka": "org 1a622c48", + "name_long": "org dc746f0b", + "website": "https://www.peeringdb.com", + "notes": "Some notes", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.241", - "latitude": null, - "longitude": null, - "name": "org 267fea96", - "notes": "Some notes", "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:57.241", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.organization", - "pk": 9 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.731830", + "updated": "2023-04-21T13:46:32.124054", + "status": "ok" + } }, { + "model": "django_peeringdb.organization", + "pk": 3, "fields": { + "name": "org 31b3a8ce", + "aka": "org fad601db", + "name_long": "org 32530bbe", + "website": "https://www.peeringdb.com", + "notes": "Some notes", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.347", - "latitude": null, - "longitude": null, - "name": "org 8ba01069", - "notes": "Some notes", "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:57.347", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.organization", - "pk": 10 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.838141", + "updated": "2023-04-21T13:46:32.227988", + "status": "ok" + } }, { + "model": "django_peeringdb.organization", + "pk": 4, "fields": { + "name": "org 15416717", + "aka": "org 85915f9e", + "name_long": "org be5c65d9", + "website": "https://www.peeringdb.com", + "notes": "Some notes", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.455", - "latitude": null, - "longitude": null, - "name": "org d3f044e7", - "notes": "Some notes", "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:57.455", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.organization", - "pk": 11 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.859884", + "updated": "2023-04-21T13:46:32.248987", + "status": "ok" + } }, { + "model": "django_peeringdb.organization", + "pk": 5, "fields": { + "name": "org fd25f48c", + "aka": "org d02076e0", + "name_long": "org 1655e1eb", + "website": "https://www.peeringdb.com", + "notes": "Some notes", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.504", - "latitude": null, - "longitude": null, - "name": "org 99532547", - "notes": "Some notes", "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:57.504", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.organization", - "pk": 12 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.887858", + "updated": "2023-04-21T13:46:32.274524", + "status": "ok" + } }, { + "model": "django_peeringdb.organization", + "pk": 6, "fields": { + "name": "org b81a864a", + "aka": "org 013dc6c1", + "name_long": "org d91dbdd8", + "website": "https://www.peeringdb.com", + "notes": "Some notes", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.553", - "latitude": null, - "longitude": null, - "name": "org 3331abc6", - "notes": "Some notes", "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:57.553", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.organization", - "pk": 13 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.906042", + "updated": "2023-04-21T13:46:32.295137", + "status": "ok" + } }, { + "model": "django_peeringdb.organization", + "pk": 7, "fields": { + "name": "org 856d03a6", + "aka": "org 1cf71ddf", + "name_long": "org dd78bf31", + "website": "https://www.peeringdb.com", + "notes": "Some notes", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.601", - "latitude": null, - "longitude": null, - "name": "org c1ec5f1d", - "notes": "Some notes", "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:57.601", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.organization", - "pk": 14 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.924127", + "updated": "2023-04-21T13:46:32.316396", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full/poc.json b/tests/data/full/poc.json index b54ad09..d126780 100644 --- a/tests/data/full/poc.json +++ b/tests/data/full/poc.json @@ -1,70 +1,34 @@ [ { - "fields": { - "created": "2018-12-20T23:12:57.129", - "email": "test@peeringdb.com", - "name": "poc 59693514", - "net": 7, - "phone": "+1 206 555 0199", - "role": "Policy", - "status": "ok", - "updated": "2018-12-20T23:12:57.129", - "url": "https://www.peeringdb.com/url", - "version": 0, - "visible": "Public" - }, "model": "django_peeringdb.networkcontact", - "pk": 1 - }, - { + "pk": 1, "fields": { - "created": "2018-12-20T23:12:57.235", + "net_id": 1, + "role": "Abuse", + "visible": "Public", + "name": "poc 7e5059d5", + "phone": "+12065550199", "email": "test@peeringdb.com", - "name": "poc ceb4bbd4", - "net": 8, - "phone": "+1 206 555 0199", - "role": "Policy", - "status": "ok", - "updated": "2018-12-20T23:12:57.236", "url": "https://www.peeringdb.com/url", - "version": 0, - "visible": "Public" - }, - "model": "django_peeringdb.networkcontact", - "pk": 2 + "created": "2023-04-21T13:46:31.726706", + "updated": "2023-04-21T13:46:32.120715", + "status": "ok" + } }, { - "fields": { - "created": "2018-12-20T23:12:57.342", - "email": "test@peeringdb.com", - "name": "poc 805376b9", - "net": 9, - "phone": "+1 206 555 0199", - "role": "Policy", - "status": "ok", - "updated": "2018-12-20T23:12:57.342", - "url": "https://www.peeringdb.com/url", - "version": 0, - "visible": "Public" - }, "model": "django_peeringdb.networkcontact", - "pk": 3 - }, - { + "pk": 2, "fields": { - "created": "2018-12-20T23:12:57.450", + "net_id": 2, + "role": "Abuse", + "visible": "Public", + "name": "poc 8c049ef0", + "phone": "+12065550199", "email": "test@peeringdb.com", - "name": "poc 14cd8efc", - "net": 10, - "phone": "+1 206 555 0199", - "role": "Policy", - "status": "ok", - "updated": "2020-01-07T20:52:01.985", "url": "https://www.peeringdb.com/url", - "version": 0, - "visible": "Public" - }, - "model": "django_peeringdb.networkcontact", - "pk": 4 + "created": "2023-04-21T13:46:31.835602", + "updated": "2023-04-21T13:46:32.223612", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full_nonunique/campus.json b/tests/data/full_nonunique/campus.json index fc53523..76c665d 100644 --- a/tests/data/full_nonunique/campus.json +++ b/tests/data/full_nonunique/campus.json @@ -1,72 +1,17 @@ [ { - "fields": { - "created": "2018-12-20T23:12:57.086", - "name": "fac c8deada2", - "notes": "Some notes", - "org": 7, - "status": "ok", - "updated": "2018-12-20T23:12:57.086", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.campus", - "pk": 7 - }, - { - "fields": { - "created": "2018-12-20T23:12:57.192", - "name": "fac 44f33fd1", - "notes": "Some notes", - "org": 8, - "status": "ok", - "updated": "2018-12-20T23:12:57.192", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.campus", - "pk": 8 - }, - { - "fields": { - "created": "2018-12-20T23:12:57.301", - "name": "fac 19cae906", - "notes": "Some notes", - "org": 9, - "status": "ok", - "updated": "2018-12-20T23:12:57.301", - "version": 0, - "website": "https://www.peeringdb.com" - }, "model": "django_peeringdb.campus", - "pk": 9 - }, - { + "pk": 1, "fields": { - "created": "2018-12-20T23:12:57.409", - "name": "fac 4d963fa5", - "notes": "Some notes", - "org": 10, + "org_id": 1, "status": "ok", - "updated": "2018-12-20T23:12:57.409", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.campus", - "pk": 10 - }, - { - "fields": { - "created": "2018-12-20T23:12:57.595", - "name": "fac 90e068bc", + "created": "2023-04-21T13:46:31.660560", + "updated": "2023-04-21T16:02:46.336666", + "name": "campus 41c40b88", + "name_long": "campus 505fd8c1", "notes": "Some notes", - "org": 13, - "status": "ok", - "updated": "2018-12-20T23:12:57.595", - "version": 0, + "aka": "campus 34d1fb8d", "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.campus", - "pk": 11 + } } ] \ No newline at end of file diff --git a/tests/data/full_nonunique/carrier.json b/tests/data/full_nonunique/carrier.json index 88fd91e..f2fddcd 100644 --- a/tests/data/full_nonunique/carrier.json +++ b/tests/data/full_nonunique/carrier.json @@ -1,72 +1,47 @@ [ { - "fields": { - "created": "2018-12-20T23:12:57.086", - "name": "fac c8deada2", - "notes": "Some notes", - "org": 7, - "status": "ok", - "updated": "2018-12-20T23:12:57.086", - "version": 0, - "website": "https://www.peeringdb.com" - }, "model": "django_peeringdb.carrier", - "pk": 7 - }, - { + "pk": 1, "fields": { - "created": "2018-12-20T23:12:57.192", - "name": "fac 44f33fd1", + "org_id": 1, + "name": "carrier 0cc83d81", + "aka": "carrier 2009c8c6", + "name_long": "carrier e952dd11", + "website": "https://www.peeringdb.com", "notes": "Some notes", - "org": 8, - "status": "ok", - "updated": "2018-12-20T23:12:57.192", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.carrier", - "pk": 8 + "created": "2023-04-21T13:46:31.666025", + "updated": "2023-04-21T13:46:32.080105", + "status": "ok" + } }, { - "fields": { - "created": "2018-12-20T23:12:57.301", - "name": "fac 19cae906", - "notes": "Some notes", - "org": 9, - "status": "ok", - "updated": "2018-12-20T23:12:57.301", - "version": 0, - "website": "https://www.peeringdb.com" - }, "model": "django_peeringdb.carrier", - "pk": 9 - }, - { + "pk": 2, "fields": { - "created": "2018-12-20T23:12:57.409", - "name": "fac 4d963fa5", + "org_id": 2, + "name": "carrier e9f243d4", + "aka": "carrier 2e71cae8", + "name_long": "carrier 395b8647", + "website": "https://www.peeringdb.com", "notes": "Some notes", - "org": 10, - "status": "ok", - "updated": "2018-12-20T23:12:57.409", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.carrier", - "pk": 10 + "created": "2023-04-21T13:46:31.787816", + "updated": "2023-04-21T13:46:32.176443", + "status": "ok" + } }, { + "model": "django_peeringdb.carrier", + "pk": 3, "fields": { - "created": "2018-12-20T23:12:57.595", - "name": "fac 90e068bc", + "org_id": 6, + "name": "carrier e9e1527c", + "aka": "carrier 452ff650", + "name_long": "carrier b4a1580f", + "website": "https://www.peeringdb.com", "notes": "Some notes", - "org": 13, - "status": "ok", - "updated": "2018-12-20T23:12:57.595", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.carrier", - "pk": 11 + "created": "2023-04-21T13:46:31.920163", + "updated": "2023-04-21T13:46:32.304956", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full_nonunique/carrierfac.json b/tests/data/full_nonunique/carrierfac.json index 9eb5dcf..8718403 100644 --- a/tests/data/full_nonunique/carrierfac.json +++ b/tests/data/full_nonunique/carrierfac.json @@ -1,50 +1,24 @@ [ { - "fields": { - "created": "2018-12-20T23:12:57.109", - "fac": 7, - "carrier": 7, - "status": "ok", - "updated": "2018-12-20T23:12:57.109", - "version": 0 - }, "model": "django_peeringdb.carrierfacility", - "pk": 7 - }, - { + "pk": 1, "fields": { - "created": "2018-12-20T23:12:57.216", - "fac": 8, - "carrier": 8, - "status": "ok", - "updated": "2018-12-20T23:12:57.216", - "version": 0 - }, - "model": "django_peeringdb.carrierfacility", - "pk": 8 + "carrier_id": 1, + "fac_id": 1, + "created": "2023-04-21T13:46:31.674252", + "updated": "2023-04-21T13:46:32.085917", + "status": "ok" + } }, { - "fields": { - "created": "2018-12-20T23:12:57.324", - "fac": 9, - "carrier": 9, - "status": "ok", - "updated": "2018-12-20T23:12:57.324", - "version": 0 - }, "model": "django_peeringdb.carrierfacility", - "pk": 9 - }, - { + "pk": 2, "fields": { - "created": "2018-12-20T23:12:57.432", - "fac": 10, - "carrier": 10, - "status": "ok", - "updated": "2018-12-20T23:12:57.432", - "version": 0 - }, - "model": "django_peeringdb.carrierfacility", - "pk": 10 + "carrier_id": 2, + "fac_id": 2, + "created": "2023-04-21T13:46:31.793418", + "updated": "2023-04-21T13:46:32.182163", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full_nonunique/fac.json b/tests/data/full_nonunique/fac.json index bef146b..3999037 100644 --- a/tests/data/full_nonunique/fac.json +++ b/tests/data/full_nonunique/fac.json @@ -1,147 +1,146 @@ [ { + "model": "django_peeringdb.facility", + "pk": 1, "fields": { + "org_id": 1, + "name": "fac 6474d82a", + "aka": "fac 548d62e1", + "name_long": "fac 87ca4641", + "website": "https://www.peeringdb.com", + "clli": "61C849", + "rencode": "", + "npanxx": "123-456", + "notes": "Some notes", + "sales_email": "test@peeringdb.com", + "sales_phone": "+12065550199", + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "diverse_serving_substations": true, + "property": null, + "region_continent": "North America", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.649864", + "updated": "2023-04-21T16:02:38.066691", + "status": "ok", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", - "clli": "4F424D", "country": "US", - "created": "2018-12-20T23:12:57.086", - "latitude": "0.000000", - "longitude": "0.000000", - "name": "fac c8deada2", - "notes": "Some notes", - "npanxx": "123-456", - "org": 7, - "rencode": "4A9C90", - "sales_email": "", - "sales_phone": "", "state": "Illinois", - "status": "ok", - "tech_email": "", - "tech_phone": "", - "updated": "2018-12-20T23:12:57.086", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.facility", - "pk": 7 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 21.33, + "longitude": -157.917855 + } }, { + "model": "django_peeringdb.facility", + "pk": 2, "fields": { + "org_id": 2, + "name": "fac d8e202c9", + "aka": "fac baf0125d", + "name_long": "fac 4823f9db", + "website": "https://www.peeringdb.com", + "clli": "B290C7", + "rencode": "", + "npanxx": "123-456", + "notes": "Some notes", + "sales_email": "test@peeringdb.com", + "sales_phone": "+12065550199", + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "diverse_serving_substations": true, + "property": null, + "region_continent": "North America", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.777693", + "updated": "2023-04-21T13:46:32.163613", + "status": "ok", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", - "clli": "7FF1B3", "country": "US", - "created": "2018-12-20T23:12:57.192", - "latitude": "0.000000", - "longitude": "0.000000", - "name": "fac 44f33fd1", - "notes": "Some notes", - "npanxx": "123-456", - "org": 8, - "rencode": "E09C1A", - "sales_email": "", - "sales_phone": "", "state": "Illinois", - "status": "ok", - "tech_email": "", - "tech_phone": "", - "updated": "2018-12-20T23:12:57.192", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.facility", - "pk": 8 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0 + } }, { + "model": "django_peeringdb.facility", + "pk": 3, "fields": { + "org_id": 5, + "name": "fac d7d31fa7", + "aka": "fac 11e46138", + "name_long": "fac d70f90fa", + "website": "https://www.peeringdb.com", + "clli": "1E4396", + "rencode": "", + "npanxx": "123-456", + "notes": "Some notes", + "sales_email": "test@peeringdb.com", + "sales_phone": "+12065550199", + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "diverse_serving_substations": true, + "property": null, + "region_continent": "North America", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.902223", + "updated": "2023-04-21T13:46:32.287846", + "status": "ok", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", - "clli": "620400", "country": "US", - "created": "2018-12-20T23:12:57.301", - "latitude": "0.000000", - "longitude": "0.000000", - "name": "fac 19cae906", - "notes": "Some notes", - "npanxx": "123-456", - "org": 9, - "rencode": "038A65", - "sales_email": "", - "sales_phone": "", "state": "Illinois", - "status": "ok", - "tech_email": "", - "tech_phone": "", - "updated": "2018-12-20T23:12:57.301", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.facility", - "pk": 9 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0 + } }, { + "model": "django_peeringdb.facility", + "pk": 6, "fields": { - "address1": "Address line 1", - "address2": "Address line 2", - "city": "Chicago", - "clli": "40D67A", - "country": "US", - "created": "2018-12-20T23:12:57.409", - "latitude": "0.000000", - "longitude": "0.000000", - "name": "fac 4d963fa5", - "notes": "Some notes", - "npanxx": "123-456", - "org": 10, - "rencode": "5A295D", + "org_id": 1, + "name": "fac 6474d82b", + "aka": "", + "name_long": "", + "website": "https://www.peeringdb.com", + "clli": "", + "rencode": "", + "npanxx": "", + "notes": "", "sales_email": "", "sales_phone": "", - "state": "Illinois", - "status": "ok", "tech_email": "", "tech_phone": "", - "updated": "2018-12-20T23:12:57.409", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.facility", - "pk": 10 - }, - { - "fields": { + "diverse_serving_substations": null, + "property": null, + "region_continent": "North America", + "status_dashboard": null, + "created": "2023-04-21T15:58:19.084386", + "updated": "2023-04-21T16:02:46.329462", + "status": "ok", "address1": "Address line 1", - "address2": "Address line 2", + "address2": "", "city": "Chicago", - "clli": "88C182", "country": "US", - "created": "2018-12-20T23:12:57.595", - "latitude": "0.000000", - "longitude": "0.000000", - "name": "fac 90e068bc", - "notes": "Some notes", - "npanxx": "123-456", - "org": 13, - "rencode": "64F492", - "sales_email": "", - "sales_phone": "", "state": "Illinois", - "status": "ok", - "tech_email": "", - "tech_phone": "", - "updated": "2018-12-20T23:12:57.595", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.facility", - "pk": 11 + "zipcode": "", + "floor": "", + "suite": "", + "latitude": 21.33, + "longitude": -157.917855 + } } ] \ No newline at end of file diff --git a/tests/data/full_nonunique/ix.json b/tests/data/full_nonunique/ix.json index 262fd17..dd69f4f 100644 --- a/tests/data/full_nonunique/ix.json +++ b/tests/data/full_nonunique/ix.json @@ -1,137 +1,104 @@ [ { - "fields": { - "city": "Chicago", - "country": "US", - "created": "2018-12-20T23:12:57.078", - "media": "Multiple", - "name": "ix 5826db43", - "name_long": "ix 255bce16", - "notes": "Some notes", - "org": 7, - "policy_email": "test@peeringdb.com", - "policy_phone": "+1 206 555 0199", - "proto_ipv6": true, - "proto_multicast": true, - "proto_unicast": true, - "region_continent": "Europe", - "status": "ok", - "tech_email": "test@peeringdb.com", - "tech_phone": "+1 206 555 0199", - "updated": "2018-12-20T23:12:57.078", - "url_stats": "https://www.peeringdb.com/url_stats", - "version": 0, - "website": "https://www.peeringdb.com" - }, "model": "django_peeringdb.internetexchange", - "pk": 7 - }, - { + "pk": 1, "fields": { + "org_id": 1, + "name": "ix b7b05aa8", + "aka": "ix 11a3deb1", + "name_long": "ix 8201a644", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.186", - "media": "Multiple", - "name": "ix c59cb705", - "name_long": "ix 2e681ab3", - "notes": "Some notes", - "org": 8, - "policy_email": "test@peeringdb.com", - "policy_phone": "+1 206 555 0199", - "proto_ipv6": true, - "proto_multicast": true, - "proto_unicast": true, "region_continent": "Europe", - "status": "ok", - "tech_email": "test@peeringdb.com", - "tech_phone": "+1 206 555 0199", - "updated": "2018-12-20T23:12:57.186", - "url_stats": "https://www.peeringdb.com/url_stats", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.internetexchange", - "pk": 8 - }, - { - "fields": { - "city": "Chicago", - "country": "US", - "created": "2018-12-20T23:12:57.295", "media": "Multiple", - "name": "ix af8abd7b", - "name_long": "ix aa926932", "notes": "Some notes", - "org": 9, - "policy_email": "test@peeringdb.com", - "policy_phone": "+1 206 555 0199", - "proto_ipv6": true, - "proto_multicast": true, "proto_unicast": true, - "region_continent": "Europe", - "status": "ok", - "tech_email": "test@peeringdb.com", - "tech_phone": "+1 206 555 0199", - "updated": "2018-12-20T23:12:57.295", + "proto_multicast": true, + "proto_ipv6": true, + "website": "https://www.peeringdb.com", "url_stats": "https://www.peeringdb.com/url_stats", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.internetexchange", - "pk": 9 + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "policy_email": "test@peeringdb.com", + "policy_phone": "+12065550199", + "sales_phone": "+12065550199", + "sales_email": "test@peeringdb.com", + "ixf_net_count": 0, + "ixf_last_import": null, + "service_level": "Best Effort (no SLA)", + "terms": "No Commercial Terms", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.620288", + "updated": "2023-04-21T13:46:32.047597", + "status": "ok" + } }, { + "model": "django_peeringdb.internetexchange", + "pk": 2, "fields": { + "org_id": 2, + "name": "ix e7eccd56", + "aka": "ix 465eded9", + "name_long": "ix 5855c1da", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.402", + "region_continent": "Europe", "media": "Multiple", - "name": "ix 35f959d3", - "name_long": "ix edb6903d", "notes": "Some notes", - "org": 10, - "policy_email": "test@peeringdb.com", - "policy_phone": "+1 206 555 0199", - "proto_ipv6": true, - "proto_multicast": true, "proto_unicast": true, - "region_continent": "Europe", - "status": "ok", - "tech_email": "test@peeringdb.com", - "tech_phone": "+1 206 555 0199", - "updated": "2018-12-20T23:12:57.402", + "proto_multicast": true, + "proto_ipv6": true, + "website": "https://www.peeringdb.com", "url_stats": "https://www.peeringdb.com/url_stats", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.internetexchange", - "pk": 10 + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "policy_email": "test@peeringdb.com", + "policy_phone": "+12065550199", + "sales_phone": "+12065550199", + "sales_email": "test@peeringdb.com", + "ixf_net_count": 0, + "ixf_last_import": null, + "service_level": "Best Effort (no SLA)", + "terms": "No Commercial Terms", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.755715", + "updated": "2023-04-21T13:46:32.146799", + "status": "ok" + } }, { + "model": "django_peeringdb.internetexchange", + "pk": 3, "fields": { + "org_id": 4, + "name": "ix eae2706e", + "aka": "ix 52ba899a", + "name_long": "ix 3c0ce06c", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.546", + "region_continent": "Europe", "media": "Multiple", - "name": "ix 0f8a8429", - "name_long": "ix f5150c3f", "notes": "Some notes", - "org": 12, - "policy_email": "test@peeringdb.com", - "policy_phone": "+1 206 555 0199", - "proto_ipv6": true, + "proto_unicast": false, "proto_multicast": true, - "proto_unicast": true, - "region_continent": "Europe", - "status": "ok", - "tech_email": "test@peeringdb.com", - "tech_phone": "+1 206 555 0199", - "updated": "2018-12-20T23:12:57.546", + "proto_ipv6": false, + "website": "https://www.peeringdb.com", "url_stats": "https://www.peeringdb.com/url_stats", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.internetexchange", - "pk": 11 + "tech_email": "test@peeringdb.com", + "tech_phone": "+12065550199", + "policy_email": "test@peeringdb.com", + "policy_phone": "+12065550199", + "sales_phone": "+12065550199", + "sales_email": "test@peeringdb.com", + "ixf_net_count": 0, + "ixf_last_import": null, + "service_level": "Best Effort (no SLA)", + "terms": "No Commercial Terms", + "status_dashboard": null, + "created": "2023-04-21T13:46:31.876008", + "updated": "2023-04-21T13:46:32.259420", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full_nonunique/ixfac.json b/tests/data/full_nonunique/ixfac.json index 6f68c6c..1410016 100644 --- a/tests/data/full_nonunique/ixfac.json +++ b/tests/data/full_nonunique/ixfac.json @@ -1,50 +1,24 @@ [ { - "fields": { - "created": "2018-12-20T23:12:57.109", - "fac": 7, - "ix": 7, - "status": "ok", - "updated": "2018-12-20T23:12:57.109", - "version": 0 - }, "model": "django_peeringdb.internetexchangefacility", - "pk": 7 - }, - { + "pk": 1, "fields": { - "created": "2018-12-20T23:12:57.216", - "fac": 8, - "ix": 8, - "status": "ok", - "updated": "2018-12-20T23:12:57.216", - "version": 0 - }, - "model": "django_peeringdb.internetexchangefacility", - "pk": 8 + "ix_id": 1, + "fac_id": 1, + "created": "2023-04-21T13:46:31.691524", + "updated": "2023-04-21T13:46:32.100245", + "status": "ok" + } }, { - "fields": { - "created": "2018-12-20T23:12:57.324", - "fac": 9, - "ix": 9, - "status": "ok", - "updated": "2018-12-20T23:12:57.324", - "version": 0 - }, "model": "django_peeringdb.internetexchangefacility", - "pk": 9 - }, - { + "pk": 2, "fields": { - "created": "2018-12-20T23:12:57.432", - "fac": 10, - "ix": 10, - "status": "ok", - "updated": "2018-12-20T23:12:57.432", - "version": 0 - }, - "model": "django_peeringdb.internetexchangefacility", - "pk": 10 + "ix_id": 2, + "fac_id": 2, + "created": "2023-04-21T13:46:31.806328", + "updated": "2023-04-21T13:46:32.199964", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full_nonunique/ixlan.json b/tests/data/full_nonunique/ixlan.json index 1e30c84..246f683 100644 --- a/tests/data/full_nonunique/ixlan.json +++ b/tests/data/full_nonunique/ixlan.json @@ -1,74 +1,54 @@ [ { - "fields": { - "arp_sponge": null, - "created": "2018-12-20T23:12:57.093", - "descr": "Arbitrary description", - "dot1q_support": true, - "ix": 7, - "mtu": 1500, - "name": "ixlan ee527617", - "rs_asn": 63313, - "status": "ok", - "updated": "2018-12-20T23:12:57.093", - "version": 0, - "vlan": null - }, "model": "django_peeringdb.ixlan", - "pk": 7 - }, - { + "pk": 1, "fields": { - "arp_sponge": null, - "created": "2018-12-20T23:12:57.200", - "descr": "Arbitrary description", - "dot1q_support": true, - "ix": 8, + "ix_id": 1, + "name": "", + "descr": "", "mtu": 1500, - "name": "ixlan e3bf0d0c", - "rs_asn": 63317, - "status": "ok", - "updated": "2018-12-20T23:12:57.200", - "version": 0, - "vlan": null - }, - "model": "django_peeringdb.ixlan", - "pk": 8 + "dot1q_support": false, + "rs_asn": 0, + "arp_sponge": null, + "ixf_ixp_member_list_url": null, + "ixf_ixp_member_list_url_visible": "Private", + "created": "2023-04-21T13:46:31.639502", + "updated": "2023-04-21T13:46:32.056605", + "status": "ok" + } }, { + "model": "django_peeringdb.ixlan", + "pk": 2, "fields": { - "arp_sponge": null, - "created": "2018-12-20T23:12:57.308", - "descr": "Arbitrary description", - "dot1q_support": true, - "ix": 9, + "ix_id": 2, + "name": "", + "descr": "", "mtu": 1500, - "name": "ixlan d5971d63", - "rs_asn": 63321, - "status": "ok", - "updated": "2018-12-20T23:12:57.308", - "version": 0, - "vlan": null - }, - "model": "django_peeringdb.ixlan", - "pk": 9 + "dot1q_support": false, + "rs_asn": 0, + "arp_sponge": null, + "ixf_ixp_member_list_url_visible": "Private", + "created": "2023-04-21T13:46:31.771609", + "updated": "2023-04-21T13:46:32.154982", + "status": "ok" + } }, { + "model": "django_peeringdb.ixlan", + "pk": 3, "fields": { - "arp_sponge": null, - "created": "2018-12-20T23:12:57.416", - "descr": "Arbitrary description", - "dot1q_support": true, - "ix": 10, + "ix_id": 3, + "name": "", + "descr": "", "mtu": 1500, - "name": "ixlan 3824c086", - "rs_asn": 63325, - "status": "ok", - "updated": "2018-12-20T23:12:57.416", - "version": 0, - "vlan": null - }, - "model": "django_peeringdb.ixlan", - "pk": 10 + "dot1q_support": false, + "rs_asn": 0, + "arp_sponge": null, + "ixf_ixp_member_list_url_visible": "Private", + "created": "2023-04-21T13:46:31.885988", + "updated": "2023-04-21T13:46:32.268069", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full_nonunique/ixpfx.json b/tests/data/full_nonunique/ixpfx.json index 28e528e..f47579f 100644 --- a/tests/data/full_nonunique/ixpfx.json +++ b/tests/data/full_nonunique/ixpfx.json @@ -1,114 +1,54 @@ [ { - "fields": { - "created": "2018-12-20T23:12:57.098", - "ixlan": 7, - "notes": "", - "prefix": "206.223.116.0/23", - "protocol": "IPv4", - "status": "ok", - "updated": "2018-12-20T23:12:57.098", - "version": 0 - }, - "model": "django_peeringdb.ixlanprefix", - "pk": 13 - }, - { - "fields": { - "created": "2018-12-20T23:12:57.103", - "ixlan": 7, - "notes": "", - "prefix": "2001:504:0:1::/64", - "protocol": "IPv6", - "status": "ok", - "updated": "2018-12-20T23:12:57.103", - "version": 0 - }, "model": "django_peeringdb.ixlanprefix", - "pk": 14 - }, - { + "pk": 1, "fields": { - "created": "2018-12-20T23:12:57.206", - "ixlan": 8, - "notes": "", - "prefix": "206.223.123.0/24", + "ixlan_id": 1, "protocol": "IPv4", - "status": "ok", - "updated": "2018-12-20T23:12:57.206", - "version": 0 - }, - "model": "django_peeringdb.ixlanprefix", - "pk": 15 - }, - { - "fields": { - "created": "2018-12-20T23:12:57.211", - "ixlan": 8, - "notes": "", - "prefix": "2001:504:0:3::/64", - "protocol": "IPv6", - "status": "ok", - "updated": "2018-12-20T23:12:57.211", - "version": 0 - }, - "model": "django_peeringdb.ixlanprefix", - "pk": 16 + "prefix": "206.223.116.0/23", + "in_dfz": true, + "created": "2023-04-21T13:46:31.682621", + "updated": "2023-04-21T13:46:32.090235", + "status": "ok" + } }, { - "fields": { - "created": "2018-12-20T23:12:57.312", - "ixlan": 9, - "notes": "", - "prefix": "206.223.118.0/24", - "protocol": "IPv4", - "status": "ok", - "updated": "2018-12-20T23:12:57.312", - "version": 0 - }, "model": "django_peeringdb.ixlanprefix", - "pk": 17 - }, - { + "pk": 2, "fields": { - "created": "2018-12-20T23:12:57.318", - "ixlan": 9, - "notes": "", - "prefix": "2001:504:0:5::/64", + "ixlan_id": 1, "protocol": "IPv6", - "status": "ok", - "updated": "2018-12-20T23:12:57.318", - "version": 0 - }, - "model": "django_peeringdb.ixlanprefix", - "pk": 18 + "prefix": "2001:504:0:1::/64", + "in_dfz": true, + "created": "2023-04-21T13:46:31.689241", + "updated": "2023-04-21T13:46:32.093210", + "status": "ok" + } }, { + "model": "django_peeringdb.ixlanprefix", + "pk": 3, "fields": { - "created": "2018-12-20T23:12:57.422", - "ixlan": 10, - "notes": "", - "prefix": "208.115.136.0/23", + "ixlan_id": 2, "protocol": "IPv4", - "status": "ok", - "updated": "2018-12-20T23:12:57.422", - "version": 0 - }, - "model": "django_peeringdb.ixlanprefix", - "pk": 19 + "prefix": "206.223.123.0/24", + "in_dfz": true, + "created": "2023-04-21T13:46:31.799237", + "updated": "2023-04-21T13:46:32.186992", + "status": "ok" + } }, { + "model": "django_peeringdb.ixlanprefix", + "pk": 4, "fields": { - "created": "2018-12-20T23:12:57.427", - "ixlan": 10, - "notes": "", - "prefix": "2001:504:0:4::/64", + "ixlan_id": 2, "protocol": "IPv6", - "status": "ok", - "updated": "2018-12-20T23:12:57.427", - "version": 0 - }, - "model": "django_peeringdb.ixlanprefix", - "pk": 20 + "prefix": "2001:504:0:3::/64", + "in_dfz": true, + "created": "2023-04-21T13:46:31.804216", + "updated": "2023-04-21T13:46:32.191110", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full_nonunique/net.json b/tests/data/full_nonunique/net.json index 6e2b98a..ae789a9 100644 --- a/tests/data/full_nonunique/net.json +++ b/tests/data/full_nonunique/net.json @@ -1,212 +1,150 @@ [ { + "model": "django_peeringdb.network", + "pk": 1, "fields": { - "aka": "net 09892c47", + "org_id": 1, + "name": "net 1", + "aka": "net 518dea7d", + "name_long": "net bb2f2036", + "website": "https://www.peeringdb.com", "asn": 63312, - "created": "2018-12-20T23:12:57.070", - "info_ipv6": true, - "info_multicast": true, - "info_never_via_route_servers": false, - "info_prefixes4": 50000, - "info_prefixes6": 5000, - "info_ratio": "Heavy Outbound", - "info_scope": "Regional", - "info_traffic": "20-100Mbps", - "info_type": "NSP", - "info_unicast": true, - "irr_as_set": "AS-E38EFDB2@RIPE", "looking_glass": "https://www.peeringdb.com/looking-glass", - "name": "net 7205f40f", - "notes": "Some notes", - "notes_private": "", - "org": 7, - "policy_contracts": "Required", - "policy_general": "Restrictive", - "policy_locations": "Required - US", - "policy_ratio": true, - "policy_url": "https://www.peeringdb.com/policy_url", "route_server": "https://www.peeringdb.com/route-server", - "status": "ok", - "updated": "2020-04-04T09:28:30.920", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.network", - "pk": 7 - }, - { - "fields": { - "aka": "net 31d226f5", - "asn": 63316, - "created": "2018-12-20T23:12:57.178", - "info_ipv6": true, - "info_multicast": true, - "info_never_via_route_servers": false, + "irr_as_set": "AS-9698E921@RIPE", + "info_type": "NSP", "info_prefixes4": 50000, "info_prefixes6": 5000, + "info_traffic": "20-100Mbps", "info_ratio": "Heavy Outbound", "info_scope": "Regional", - "info_traffic": "20-100Mbps", - "info_type": "NSP", "info_unicast": true, - "irr_as_set": "RIPE::AS-E2B07ED7", - "looking_glass": "https://www.peeringdb.com/looking-glass", - "name": "net bc28b812", + "info_multicast": true, + "info_ipv6": true, + "info_never_via_route_servers": true, "notes": "Some notes", - "notes_private": "", - "org": 8, - "policy_contracts": "Required", + "policy_url": "https://www.peeringdb.com/policy_url", "policy_general": "Restrictive", "policy_locations": "Required - US", "policy_ratio": true, - "policy_url": "https://www.peeringdb.com/policy_url", - "route_server": "https://www.peeringdb.com/route-server", - "status": "ok", - "updated": "2020-04-04T09:28:50.910", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.network", - "pk": 8 + "policy_contracts": "Required", + "status_dashboard": null, + "rir_status": "ok", + "rir_status_updated": null, + "created": "2023-04-21T13:46:31.599666", + "updated": "2023-04-21T13:46:32.039630", + "status": "ok" + } }, { + "model": "django_peeringdb.network", + "pk": 2, "fields": { - "aka": "net 703edb9c", - "asn": 63320, - "created": "2018-12-20T23:12:57.287", - "info_ipv6": true, - "info_multicast": true, - "info_never_via_route_servers": false, - "info_prefixes4": 50000, - "info_prefixes6": 5000, - "info_ratio": "Heavy Outbound", - "info_scope": "Regional", - "info_traffic": "20-100Mbps", - "info_type": "NSP", - "info_unicast": true, - "irr_as_set": "AS-1A0769B2@RIPE", + "org_id": 2, + "name": "net 2", + "aka": "net fafca815", + "name_long": "net 275a8e66", + "website": "https://www.peeringdb.com", + "asn": 63313, "looking_glass": "https://www.peeringdb.com/looking-glass", - "name": "net 7205f40e", - "notes": "Some notes", - "notes_private": "", - "org": 9, - "policy_contracts": "Required", - "policy_general": "Restrictive", - "policy_locations": "Required - US", - "policy_ratio": true, - "policy_url": "https://www.peeringdb.com/policy_url", "route_server": "https://www.peeringdb.com/route-server", - "status": "ok", - "updated": "2020-04-04T09:28:40.466", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.network", - "pk": 9 - }, - { - "fields": { - "aka": "net 06668b3b", - "asn": 63324, - "created": "2018-12-20T23:12:57.394", - "info_ipv6": true, - "info_multicast": true, - "info_never_via_route_servers": false, + "irr_as_set": "AS-32B049BF@RIPE", + "info_type": "NSP", "info_prefixes4": 50000, "info_prefixes6": 5000, + "info_traffic": "20-100Mbps", "info_ratio": "Heavy Outbound", "info_scope": "Regional", - "info_traffic": "20-100Mbps", - "info_type": "NSP", "info_unicast": true, - "irr_as_set": "AS-DC6E4340@RIPE", - "looking_glass": "https://www.peeringdb.com/looking-glass", - "name": "net 08e3ad54", + "info_multicast": true, + "info_ipv6": true, + "info_never_via_route_servers": true, "notes": "Some notes", - "notes_private": "", - "org": 10, - "policy_contracts": "Required", + "policy_url": "https://www.peeringdb.com/policy_url", "policy_general": "Restrictive", "policy_locations": "Required - US", "policy_ratio": true, - "policy_url": "https://www.peeringdb.com/policy_url", - "route_server": "https://www.peeringdb.com/route-server", - "status": "ok", - "updated": "2020-04-04T09:28:18.299", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.network", - "pk": 10 + "policy_contracts": "Required", + "status_dashboard": null, + "rir_status": "ok", + "rir_status_updated": null, + "created": "2023-04-21T13:46:31.749549", + "updated": "2023-04-21T13:46:32.137057", + "status": "ok" + } }, { + "model": "django_peeringdb.network", + "pk": 3, "fields": { - "aka": "net 5dc77e5d", - "asn": 63328, - "created": "2018-12-20T23:12:57.496", - "info_ipv6": true, - "info_multicast": true, - "info_never_via_route_servers": false, + "org_id": 3, + "name": "net 3", + "aka": "net fdec4433", + "name_long": "net 35ee1388", + "website": "https://www.peeringdb.com", + "asn": 63314, + "looking_glass": "https://www.peeringdb.com/looking-glass", + "route_server": "https://www.peeringdb.com/route-server", + "irr_as_set": "AS-13F8D526@RIPE", + "info_type": "NSP", "info_prefixes4": 50000, "info_prefixes6": 5000, + "info_traffic": "20-100Mbps", "info_ratio": "Heavy Outbound", "info_scope": "Regional", - "info_traffic": "20-100Mbps", - "info_type": "NSP", "info_unicast": true, - "irr_as_set": "AS-A4AF3D9D@RIPE", - "looking_glass": "https://www.peeringdb.com/looking-glass", - "name": "net 1ce33319", + "info_multicast": true, + "info_ipv6": true, + "info_never_via_route_servers": true, "notes": "Some notes", - "notes_private": "", - "org": 11, - "policy_contracts": "Required", + "policy_url": "https://www.peeringdb.com/policy_url", "policy_general": "Restrictive", "policy_locations": "Required - US", "policy_ratio": true, - "policy_url": "https://www.peeringdb.com/policy_url", - "route_server": "https://www.peeringdb.com/route-server", - "status": "ok", - "updated": "2020-04-04T09:27:51.517", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.network", - "pk": 11 + "policy_contracts": "Required", + "status_dashboard": null, + "rir_status": "ok", + "rir_status_updated": null, + "created": "2023-04-21T13:46:31.854501", + "updated": "2023-04-21T13:46:32.243221", + "status": "ok" + } }, { + "model": "django_peeringdb.network", + "pk": 4, "fields": { - "aka": "net FAKE", - "asn": 63369, - "created": "2018-12-20T23:12:57.496", - "info_ipv6": true, - "info_multicast": true, - "info_never_via_route_servers": false, + "org_id": 3, + "name": "net 4", + "aka": "net fdec4433", + "name_long": "net 35ee1388", + "website": "https://www.peeringdb.com", + "asn": 63414, + "looking_glass": "https://www.peeringdb.com/looking-glass", + "route_server": "https://www.peeringdb.com/route-server", + "irr_as_set": "AS-13F8D526@RIPE", + "info_type": "NSP", "info_prefixes4": 50000, "info_prefixes6": 5000, + "info_traffic": "20-100Mbps", "info_ratio": "Heavy Outbound", "info_scope": "Regional", - "info_traffic": "20-100Mbps", - "info_type": "NSP", "info_unicast": true, - "irr_as_set": "AS-FAKE@FAKE", - "looking_glass": "https://www.peeringdb.com/looking-glass", - "name": "net 1ce33318", + "info_multicast": true, + "info_ipv6": true, + "info_never_via_route_servers": true, "notes": "Some notes", - "notes_private": "", - "org": 11, - "policy_contracts": "Required", + "policy_url": "https://www.peeringdb.com/policy_url", "policy_general": "Restrictive", "policy_locations": "Required - US", "policy_ratio": true, - "policy_url": "https://www.peeringdb.com/policy_url", - "route_server": "https://www.peeringdb.com/route-server", - "status": "ok", - "updated": "2020-04-04T09:27:51.517", - "version": 0, - "website": "https://www.peeringdb.com" - }, - "model": "django_peeringdb.network", - "pk": 12 + "policy_contracts": "Required", + "status_dashboard": null, + "rir_status": "ok", + "rir_status_updated": null, + "created": "2023-04-21T13:46:31.854501", + "updated": "2023-04-21T13:46:32.243221", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full_nonunique/netfac.json b/tests/data/full_nonunique/netfac.json index 4843dc8..865d854 100644 --- a/tests/data/full_nonunique/netfac.json +++ b/tests/data/full_nonunique/netfac.json @@ -1,66 +1,26 @@ [ { - "fields": { - "avail_atm": false, - "avail_ethernet": false, - "avail_sonet": false, - "created": "2018-12-20T23:12:57.123", - "fac": 7, - "local_asn": 63315, - "net": 7, - "status": "ok", - "updated": "2018-12-20T23:12:57.123", - "version": 0 - }, "model": "django_peeringdb.networkfacility", - "pk": 1 - }, - { + "pk": 1, "fields": { - "avail_atm": false, - "avail_ethernet": false, - "avail_sonet": false, - "created": "2018-12-20T23:12:57.231", - "fac": 8, - "local_asn": 63319, - "net": 8, - "status": "ok", - "updated": "2018-12-20T23:12:57.231", - "version": 0 - }, - "model": "django_peeringdb.networkfacility", - "pk": 2 + "net_id": 1, + "fac_id": 1, + "local_asn": 63312, + "created": "2023-04-21T13:46:31.722434", + "updated": "2023-04-21T13:46:32.115758", + "status": "ok" + } }, { - "fields": { - "avail_atm": false, - "avail_ethernet": false, - "avail_sonet": false, - "created": "2018-12-20T23:12:57.337", - "fac": 9, - "local_asn": 63323, - "net": 9, - "status": "ok", - "updated": "2018-12-20T23:12:57.337", - "version": 0 - }, "model": "django_peeringdb.networkfacility", - "pk": 3 - }, - { + "pk": 2, "fields": { - "avail_atm": false, - "avail_ethernet": false, - "avail_sonet": false, - "created": "2018-12-20T23:12:57.445", - "fac": 10, - "local_asn": 63327, - "net": 10, - "status": "ok", - "updated": "2018-12-20T23:12:57.445", - "version": 0 - }, - "model": "django_peeringdb.networkfacility", - "pk": 4 + "net_id": 2, + "fac_id": 2, + "local_asn": 63313, + "created": "2023-04-21T13:46:31.833997", + "updated": "2023-04-21T13:46:32.218085", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full_nonunique/netixlan.json b/tests/data/full_nonunique/netixlan.json index ff6b55a..0325c26 100644 --- a/tests/data/full_nonunique/netixlan.json +++ b/tests/data/full_nonunique/netixlan.json @@ -1,78 +1,38 @@ [ { + "model": "django_peeringdb.networkixlan", + "pk": 1, "fields": { - "asn": 63314, - "created": "2018-12-20T23:12:57.118", + "net_id": 1, + "ixlan_id": 1, + "notes": "Some notes", + "speed": 1000, + "asn": 63312, "ipaddr4": "206.223.116.101", "ipaddr6": "2001:504:0:1::65", "is_rs_peer": true, - "ixlan": 7, - "net": 7, - "notes": "Some notes", "operational": true, - "speed": 1000, - "status": "ok", - "updated": "2018-12-20T23:12:57.118", - "version": 0 - }, - "model": "django_peeringdb.networkixlan", - "pk": 1 + "created": "2023-04-21T13:46:31.718816", + "updated": "2023-04-21T13:46:32.108511", + "status": "ok" + } }, { - "fields": { - "asn": 63318, - "created": "2018-12-20T23:12:57.225", - "ipaddr4": "206.223.123.101", - "ipaddr6": "2001:504:0:3::65", - "is_rs_peer": true, - "ixlan": 8, - "net": 8, - "notes": "Some notes", - "operational": true, - "speed": 1000, - "status": "ok", - "updated": "2018-12-20T23:12:57.225", - "version": 0 - }, "model": "django_peeringdb.networkixlan", - "pk": 2 - }, - { + "pk": 2, "fields": { - "asn": 63322, - "created": "2018-12-20T23:12:57.332", - "ipaddr4": "206.223.118.101", - "ipaddr6": "2001:504:0:5::65", - "is_rs_peer": true, - "ixlan": 9, - "net": 9, + "net_id": 2, + "ixlan_id": 2, "notes": "Some notes", - "operational": true, "speed": 1000, - "status": "ok", - "updated": "2018-12-20T23:12:57.332", - "version": 0 - }, - "model": "django_peeringdb.networkixlan", - "pk": 3 - }, - { - "fields": { - "asn": 63326, - "created": "2018-12-20T23:12:57.441", - "ipaddr4": "208.115.136.101", - "ipaddr6": "2001:504:0:4::65", + "asn": 63313, + "ipaddr4": "206.223.123.101", + "ipaddr6": "2001:504:0:3::65", "is_rs_peer": true, - "ixlan": 10, - "net": 10, - "notes": "Some notes", "operational": true, - "speed": 1000, - "status": "ok", - "updated": "2018-12-20T23:12:57.441", - "version": 0 - }, - "model": "django_peeringdb.networkixlan", - "pk": 4 + "created": "2023-04-21T13:46:31.831132", + "updated": "2023-04-21T13:46:32.209023", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full_nonunique/org.json b/tests/data/full_nonunique/org.json index eb3ce5e..b5b454b 100644 --- a/tests/data/full_nonunique/org.json +++ b/tests/data/full_nonunique/org.json @@ -1,170 +1,170 @@ [ { - "fields": { - "address1": "Address line 1", - "address2": "Address line 2", - "city": "Chicago", - "country": "US", - "created": "2018-12-20T23:12:56.978", - "latitude": null, - "longitude": null, - "name": "org c30409ad", - "notes": "Some notes", - "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:56.978", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, "model": "django_peeringdb.organization", - "pk": 7 - }, - { + "pk": 1, "fields": { + "name": "org c1ab780b", + "aka": "org 7190d9b5", + "name_long": "org c0c98fe2", + "website": "https://www.peeringdb.com", + "notes": "Some notes", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.134", - "latitude": null, - "longitude": null, - "name": "org c496f949", - "notes": "Some notes", "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:57.134", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.organization", - "pk": 8 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.571746", + "updated": "2023-04-21T13:46:32.027157", + "status": "ok" + } }, { + "model": "django_peeringdb.organization", + "pk": 2, "fields": { + "name": "org d1aa972c", + "aka": "org 1a622c48", + "name_long": "org dc746f0b", + "website": "https://www.peeringdb.com", + "notes": "Some notes", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.241", - "latitude": null, - "longitude": null, - "name": "org 267fea96", - "notes": "Some notes", "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:57.241", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.organization", - "pk": 9 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.731830", + "updated": "2023-04-21T13:46:32.124054", + "status": "ok" + } }, { + "model": "django_peeringdb.organization", + "pk": 3, "fields": { + "name": "org 31b3a8ce", + "aka": "org fad601db", + "name_long": "org 32530bbe", + "website": "https://www.peeringdb.com", + "notes": "Some notes", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.347", - "latitude": null, - "longitude": null, - "name": "org 8ba01069", - "notes": "Some notes", "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:57.347", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.organization", - "pk": 10 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.838141", + "updated": "2023-04-21T13:46:32.227988", + "status": "ok" + } }, { + "model": "django_peeringdb.organization", + "pk": 4, "fields": { + "name": "org 15416717", + "aka": "org 85915f9e", + "name_long": "org be5c65d9", + "website": "https://www.peeringdb.com", + "notes": "Some notes", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.455", - "latitude": null, - "longitude": null, - "name": "org d3f044e7", - "notes": "Some notes", "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:57.455", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.organization", - "pk": 11 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.859884", + "updated": "2023-04-21T13:46:32.248987", + "status": "ok" + } }, { + "model": "django_peeringdb.organization", + "pk": 5, "fields": { + "name": "org fd25f48c", + "aka": "org d02076e0", + "name_long": "org 1655e1eb", + "website": "https://www.peeringdb.com", + "notes": "Some notes", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.504", - "latitude": null, - "longitude": null, - "name": "org 99532547", - "notes": "Some notes", "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:57.504", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.organization", - "pk": 12 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.887858", + "updated": "2023-04-21T13:46:32.274524", + "status": "ok" + } }, { + "model": "django_peeringdb.organization", + "pk": 6, "fields": { + "name": "org b81a864a", + "aka": "org 013dc6c1", + "name_long": "org d91dbdd8", + "website": "https://www.peeringdb.com", + "notes": "Some notes", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.553", - "latitude": null, - "longitude": null, - "name": "org 3331abc6", - "notes": "Some notes", "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:57.553", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.organization", - "pk": 13 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.906042", + "updated": "2023-04-21T13:46:32.295137", + "status": "ok" + } }, { + "model": "django_peeringdb.organization", + "pk": 7, "fields": { + "name": "org 856d03a6", + "aka": "org 1cf71ddf", + "name_long": "org dd78bf31", + "website": "https://www.peeringdb.com", + "notes": "Some notes", "address1": "Address line 1", "address2": "Address line 2", "city": "Chicago", "country": "US", - "created": "2018-12-20T23:12:57.601", - "latitude": null, - "longitude": null, - "name": "org c1ec5f1d", - "notes": "Some notes", "state": "Illinois", - "status": "ok", - "updated": "2018-12-20T23:12:57.601", - "version": 0, - "website": "https://www.peeringdb.com", - "zipcode": "12345" - }, - "model": "django_peeringdb.organization", - "pk": 14 + "zipcode": "12345", + "floor": "", + "suite": "", + "latitude": 0.0, + "longitude": 0.0, + "created": "2023-04-21T13:46:31.924127", + "updated": "2023-04-21T13:46:32.316396", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/data/full_nonunique/poc.json b/tests/data/full_nonunique/poc.json index b54ad09..d126780 100644 --- a/tests/data/full_nonunique/poc.json +++ b/tests/data/full_nonunique/poc.json @@ -1,70 +1,34 @@ [ { - "fields": { - "created": "2018-12-20T23:12:57.129", - "email": "test@peeringdb.com", - "name": "poc 59693514", - "net": 7, - "phone": "+1 206 555 0199", - "role": "Policy", - "status": "ok", - "updated": "2018-12-20T23:12:57.129", - "url": "https://www.peeringdb.com/url", - "version": 0, - "visible": "Public" - }, "model": "django_peeringdb.networkcontact", - "pk": 1 - }, - { + "pk": 1, "fields": { - "created": "2018-12-20T23:12:57.235", + "net_id": 1, + "role": "Abuse", + "visible": "Public", + "name": "poc 7e5059d5", + "phone": "+12065550199", "email": "test@peeringdb.com", - "name": "poc ceb4bbd4", - "net": 8, - "phone": "+1 206 555 0199", - "role": "Policy", - "status": "ok", - "updated": "2018-12-20T23:12:57.236", "url": "https://www.peeringdb.com/url", - "version": 0, - "visible": "Public" - }, - "model": "django_peeringdb.networkcontact", - "pk": 2 + "created": "2023-04-21T13:46:31.726706", + "updated": "2023-04-21T13:46:32.120715", + "status": "ok" + } }, { - "fields": { - "created": "2018-12-20T23:12:57.342", - "email": "test@peeringdb.com", - "name": "poc 805376b9", - "net": 9, - "phone": "+1 206 555 0199", - "role": "Policy", - "status": "ok", - "updated": "2018-12-20T23:12:57.342", - "url": "https://www.peeringdb.com/url", - "version": 0, - "visible": "Public" - }, "model": "django_peeringdb.networkcontact", - "pk": 3 - }, - { + "pk": 2, "fields": { - "created": "2018-12-20T23:12:57.450", + "net_id": 2, + "role": "Abuse", + "visible": "Public", + "name": "poc 8c049ef0", + "phone": "+12065550199", "email": "test@peeringdb.com", - "name": "poc 14cd8efc", - "net": 10, - "phone": "+1 206 555 0199", - "role": "Policy", - "status": "ok", - "updated": "2020-01-07T20:52:01.985", "url": "https://www.peeringdb.com/url", - "version": 0, - "visible": "Public" - }, - "model": "django_peeringdb.networkcontact", - "pk": 4 + "created": "2023-04-21T13:46:31.835602", + "updated": "2023-04-21T13:46:32.223612", + "status": "ok" + } } ] \ No newline at end of file diff --git a/tests/helper/__init__.py b/tests/helper/__init__.py index a6f433f..6bb62b7 100644 --- a/tests/helper/__init__.py +++ b/tests/helper/__init__.py @@ -28,6 +28,36 @@ "only": [], "strip_tz": 1, "timeout": 0, + # we dont want to use caching during normal tests + # caching will be tested specifically, so keep blank + "cache_url": "", + }, +} + +CONFIG_CACHING = { + "orm": { + "backend": "django_peeringdb", + "database": { + "engine": "sqlite3", + "host": "", + "name": ":memory:", + "password": "", + "port": 0, + "user": "", + }, + "secret_key": "", + "migrate": True, + }, + "sync": { + "url": "https://test.peeringdb.com/api", + "user": "", + "password": "", + "only": [], + "strip_tz": 1, + "timeout": 0, + # we dont want to use caching during normal tests + # caching will be tested specifically, so keep blank + "cache_url": "cache://localhost", }, } diff --git a/tests/helper/fetch_cache_files.py b/tests/helper/fetch_cache_files.py new file mode 100644 index 0000000..332a2b6 --- /dev/null +++ b/tests/helper/fetch_cache_files.py @@ -0,0 +1,121 @@ +""" +utility function that builds cache files from test.peeringdb.com/api for testing purposes +""" + +import copy +import json +import os + +import requests + +import peeringdb +from peeringdb.client import Client +from peeringdb.resource import _NAMES as objs +from peeringdb.resource import RESOURCES_BY_TAG + +CONFIG = { + "orm": { + "backend": "django_peeringdb", + "database": { + "engine": "sqlite3", + "host": "", + "name": ":memory:", + "password": "", + "port": 0, + "user": "", + }, + "secret_key": "", + "migrate": True, + }, + "sync": { + "url": "https://test.peeringdb.com/api", + "user": "", + "password": "", + "only": [], + "strip_tz": 1, + "timeout": 0, + # we dont want to use caching during normal tests + # caching will be tested specifically, so keep blank + "cache_url": "", + }, +} + + +def get_client(): + return Client(CONFIG) + + +def build_cache_files(): + tags = objs.keys() + client = get_client() + B = peeringdb.get_backend() + from django_peeringdb.models.concrete import tag_dict + + for tag in tags: + url = f"https://test.peeringdb.com/api/{tag}?depth=0" + response = requests.get(url) + + # Make sure the request was successful + if response.status_code == 200: + data = response.json() + + # store the json data to a file in data/cache directory + cache_file_path = os.path.join("data", "cache", f"{tag}-0.json") + with open(cache_file_path, "w") as file: + json.dump(data, file, indent=4) + print(f"Successfully fetched and stored data for {tag} in cache directory") + + # store the json data to a file in data/full directory in Django fixture format + full_file_path = os.path.join("data", "full", f"{tag}.json") + full_nonunique_file_path = os.path.join( + "data", "full_nonunique", f"{tag}.json" + ) + + fixture_data = [] + model = tag_dict[tag] + for item in data["data"]: + fields = {} + + for k, v in item.items(): + if isinstance(v, list): + continue + if hasattr(model, k): + fields[k] = v + + fields["created"] = fields["created"][:-1] + fields["updated"] = fields["updated"][:-1] + + fields.pop("id") + + fixture_item = { + "model": f"django_peeringdb.{model.__name__.lower()}", + "pk": item["id"], + "fields": fields, + } + fixture_data.append(fixture_item) + with open(full_file_path, "w") as file: + json.dump(fixture_data, file, indent=4) + + with open(full_nonunique_file_path, "w") as file: + if tag == "net": + # copy the last entry with diff name, asn and pk + fixture_item = copy.deepcopy(fixture_data[-1]) + fixture_item["fields"]["name"] = "net FAKE" + fixture_item["fields"]["asn"] += 100 + fixture_item["pk"] += 1 + fixture_data.append(fixture_item) + + for data in fixture_data: + data["fields"]["name"] = f"net {data['pk']}" + + json.dump(fixture_data, file, indent=4) + + print( + f"Successfully stored data for {tag} in full directory in Django fixture format" + ) + else: + print(f"Failed to fetch data for {tag}") + + +if __name__ == "__main__": + build_cache_files() diff --git a/tests/test_cache.py b/tests/test_cache.py new file mode 100644 index 0000000..8184c51 --- /dev/null +++ b/tests/test_cache.py @@ -0,0 +1,209 @@ +import copy +import json +import os +import tempfile +from unittest.mock import patch + +import pytest +import requests +from helper import CONFIG_CACHING + +import peeringdb.resource as resource +from peeringdb._fetch import Fetcher +from peeringdb.client import Client +from peeringdb.resource import _NAMES as objs +from peeringdb.resource import RESOURCES_BY_TAG + +tags = objs.keys() + + +@pytest.fixture +def fetcher(): + """ + Pytest fixture to create a Fetcher instance for each test + """ + return Fetcher(**CONFIG_CACHING["sync"]) + + +@pytest.mark.parametrize("tag", tags) +@patch("requests.get") +def test_fetch_cache(mock_get, fetcher, tag): + """ + Test the _fetch_cache method + """ + # Load the test data from a file + with open(f"tests/data/cache/{tag}-0.json") as f: + test_data = json.load(f) + + # Mock the response from the server + mock_response = requests.Response() + mock_response.status_code = 200 + mock_response._content = json.dumps(test_data).encode() + mock_get.return_value = mock_response + + with tempfile.TemporaryDirectory() as cache_dir: + fetcher.cache_dir = cache_dir + # Call the method and check the result + result = fetcher._fetch_cache(RESOURCES_BY_TAG[tag]) + assert result == test_data["data"] + + cache_file = os.path.join(fetcher.cache_dir, f"{tag}-0.json") + + # Check that the cache file was created + assert os.path.exists(cache_file) + + # Check the content of the cache file + with open(cache_file) as f: + data = json.load(f) + assert data == test_data + + +@pytest.mark.parametrize("tag", tags) +@patch("requests.get") +def test_fetch_cache_error(mock_get, fetcher, tag): + """ + Test the _fetch_cache method when the server returns an error + """ + # Mock the response from the server + mock_response = requests.Response() + mock_response.status_code = 404 + mock_get.return_value = mock_response + + # Call the method and check the exception + + with tempfile.TemporaryDirectory() as cache_dir: + fetcher.cache_dir = cache_dir + with pytest.raises(Exception) as e: + fetcher._fetch_cache(RESOURCES_BY_TAG[tag]) + assert str(e.value) == f"Failed to download JSON file for {tag}" + + +@patch("requests.get") +def test_cache_used(mock_get, fetcher): + """ + Test that cache is downloaded and used. Instead of parametrizing per tag, + this function now reads the tag from the url its requesting. + """ + + def side_effect(url, *args, **kwargs): + # Extract the tag from the url + file = url.split("/")[-1] + print("URL", url, file) + + # Load the test data from a file + with open(f"tests/data/cache/{file}") as f: + test_data = json.load(f) + + assert len(test_data["data"]) + + # Mock the response from the server + mock_response = requests.Response() + mock_response.status_code = 200 + mock_response._content = json.dumps(test_data).encode() + + return mock_response + + mock_get.side_effect = side_effect + + with tempfile.TemporaryDirectory() as cache_dir: + config = copy.deepcopy(CONFIG_CACHING) + config["sync"]["cache_dir"] = cache_dir + client = Client(config) + + from django_peeringdb.models.concrete import tag_dict + + model = tag_dict["org"] + + # 0 objects in database + assert model.objects.all().count() == 0 + + # update + client.update_all() + + # objects in database + assert model.objects.all().count() + + # cache downloaded and used + # cache file NOT used + assert client._fetcher.cache_downloaded + assert not client._fetcher.cache_file_used + + # update + client = Client(config) + client.update_all() + + # cache not downloaded + # cache file not used + assert not client._fetcher.cache_downloaded + assert not client._fetcher.cache_file_used + + client.backend.delete_all() + + +@patch("requests.get") +def test_cache_file_used(mock_get, fetcher): + """ + Test that cache is downloaded and used. Instead of parametrizing per tag, + this function now reads the tag from the url its requesting. + """ + + def side_effect(url, *args, **kwargs): + # Extract the tag from the url + file = url.split("/")[-1] + print("URL", url, file) + + # Load the test data from a file + with open(f"tests/data/cache/{file}") as f: + test_data = json.load(f) + + assert len(test_data["data"]) + + # Mock the response from the server + mock_response = requests.Response() + mock_response.status_code = 200 + mock_response._content = json.dumps(test_data).encode() + + return mock_response + + mock_get.side_effect = side_effect + + with tempfile.TemporaryDirectory() as cache_dir: + config = copy.deepcopy(CONFIG_CACHING) + config["sync"]["cache_dir"] = cache_dir + client = Client(config) + + from django_peeringdb.models.concrete import tag_dict + + model = tag_dict["org"] + + # 0 objects in database + assert model.objects.all().count() == 0 + + # update + + client.update_all() + + # cache downloaded + # cache file NOT used + + assert client._fetcher.cache_downloaded + assert not client._fetcher.cache_file_used + + # wipe database (cache files still exist) + + client.backend.delete_all() + + # update + + client = Client(config) + client.update_all() + + # cache NOT downloaded + # cache file used + + assert not client._fetcher.cache_downloaded + assert client._fetcher.cache_file_used + + assert model.objects.all().count() + + client.backend.delete_all() diff --git a/tests/test_cli.py b/tests/test_cli.py index 4cea1ca..5dd88c2 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -50,7 +50,7 @@ def test_config(runcli): # pass a config and check that it matches # config set -NET0 = "net7" +NET0 = "net1" def test_get(runcli, client): @@ -74,7 +74,7 @@ def test_whois(runcli, client): assert runcli("whois", "as63312") == 0 assert runcli("whois", "as00000") == 1 - assert runcli("whois", "ixnets7") == 0 + assert runcli("whois", "ixnets1") == 0 assert runcli("whois", "ixnets0") == 1 diff --git a/tests/test_client.py b/tests/test_client.py index 008cebc..f66804f 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -7,7 +7,7 @@ from peeringdb import resource client = helper.client_fixture("full") -NET0 = 7 +NET0 = 1 def test_nonexistent_config(): @@ -18,7 +18,7 @@ def test_nonexistent_config(): def test_get(client): assert client.get(resource.Network, NET0) with pytest.raises(Exception): - client.get(resource.Network, 12) + client.get(resource.Network, 9999) def test_type_wrap(client): diff --git a/tests/test_config.py b/tests/test_config.py index 656d57a..0616575 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -71,6 +71,8 @@ def test_schema_migration(): "sync": { "api_key": "", "url": "https://test.peeringdb.com/api", + "cache_url": "https://cache.peeringdb.com/api", + "cache_dir": "~/.cache/peeringdb", "user": "dude", "password": "12345", "timeout": 5, diff --git a/tests/test_sync.py b/tests/test_sync.py index 8f9b09c..e481c8f 100644 --- a/tests/test_sync.py +++ b/tests/test_sync.py @@ -6,7 +6,7 @@ from peeringdb.resource import Network, Organization, all_resources # first net id -FIRST_NET = 7 +FIRST_NET = 1 # allows incomplete (or partial) syncs @@ -73,12 +73,12 @@ def test_single_deep(client_empty): def test_selection(client_empty): client = get_pclient() - client.update_where(Network, name="net 7205f40e", since=0) + client.update_where(Network, name="net 25304adc", since=0) assert client.get(Network, FIRST_NET) - client.update_where(Network, id__in=[8, 9], since=0) - assert client.get(Network, 8) - assert client.get(Network, 9) + client.update_where(Network, id__in=[2, 3], since=0) + assert client.get(Network, 2) + assert client.get(Network, 3) # Test sync where update would result in a duplicate field @@ -86,12 +86,16 @@ def test_selection(client_empty): def test_nonunique(client_dup): client = client_dup # sanity check - do we actually have a duplicate - swapdup = client.get(Network, 9) + swapdup = client.get(Network, 2) d = client._fetcher.fetch_latest(Network, FIRST_NET, 0, since=0) + + swapdup.name = d[0][0]["name"] + swapdup.save() + assert d[0][0]["name"] == swapdup.name # obj that doesn't exist remotely - assert client.get(Network, 12) + assert client.get(Network, 4) rs = all_resources() client.update_all(rs, since=0) @@ -99,9 +103,11 @@ def test_nonunique(client_dup): assert client.get(Network, FIRST_NET) # remotely deleted dup should be gone - B = peeringdb.get_backend() - with pytest.raises(B.object_missing_error()): - client.get(Network, 12) + # FIXME: this needs adjustment of data on test.peeringdb.com in the form + # of a deleted network. + # B = peeringdb.get_backend() + # with pytest.raises(B.object_missing_error()): + # client.get(Network, 4) def test_nonunique_single(client_dup): diff --git a/tox.ini b/tox.ini index ca383c5..0a5d85e 100644 --- a/tox.ini +++ b/tox.ini @@ -1,31 +1,28 @@ [tox] envlist = - py{37,38,39,310}-django{22,30,31,32} + py{38,39,310,311}-django{32,42} isolated_build = True [gh-actions] python = - 3.7: py37 3.8: py38 3.9: py39 3.10: py310 - + 3.11: py311 [testenv] setenv = PYTHONDONTWRITEBYTECODE=1 PYTHONWARNINGS=once deps = - django22: Django>=2.2,<2.3 - django30: Django>=3.0,<3.1 - django31: Django>=3.1,<3.2 django32: Django>=3.2,<3.3 + django42: Django>=4.2,<4.3 whitelist_externals = poetry commands = pip install pip -U poetry install -v - poetry run pytest tests/ --cov="{toxinidir}/src" --cov-report=xml + poetry run pytest -x -p no:warnings tests/ --cov="{toxinidir}/src" --cov-report=xml codecov -e TOXENV