Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lazy-load api version upon first call rather than instantiation #225

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from

Conversation

brandomando
Copy link

Fixes #201

With this change, the API version check will not run until the first API call, rather than at instantiation. This allows the user to manipulate the underlying HTTP session before the first API call is made. In #201 , the use case is to apply a proxy configuration prior to making the first call.

@brandomando
Copy link
Author

Since we don't have CI setup, here are the test results:

(pynautobot-py3.11) ➜  pynautobot git:(lazy_load_api_version) ✗ invoke tests
DOCKER - Running command: black --check --diff . service: pynautobot-dev
[+] Creating 1/0
 ✔ Network pynautobot_default  Created                                                                                                                                                                                                                                                    0.0s 
All done! ✨ 🍰 ✨
43 files would be left unchanged.
DOCKER - Running command: flake8 . service: pynautobot-dev
DOCKER - Running command: yamllint . service: pynautobot-dev
DOCKER - Running command: bandit --recursive ./ --configfile .bandit.yml service: pynautobot-dev
[main]  INFO    profile include tests: None
[main]  INFO    profile exclude tests: None
[main]  INFO    cli include tests: None
[main]  INFO    cli exclude tests: None
[main]  INFO    using config: .bandit.yml
[main]  INFO    running on Python 3.8.19
Run started:2024-07-26 17:40:00.491717

Test results:
        No issues identified.

Code scanned:
        Total lines of code: 2332
        Total lines skipped (#nosec): 0

Run metrics:
        Total issues (by severity):
                Undefined: 0
                Low: 0
                Medium: 0
                High: 0
        Total issues (by confidence):
                Undefined: 0
                Low: 0
                Medium: 0
                High: 0
Files skipped (0):
DOCKER - Running command: pytest -vv    service: pynautobot-dev-tests
[+] Creating 3/0
 ✔ Container pynautobot-postgres-1  Created                                                                                                                                                                                                                                               0.0s 
 ✔ Container pynautobot-redis-1     Created                                                                                                                                                                                                                                               0.0s 
 ✔ Container pynautobot-nautobot-1  Created                                                                                                                                                                                                                                               0.0s 
[+] Running 3/3
 ✔ Container pynautobot-postgres-1  Started                                                                                                                                                                                                                                               0.1s 
 ✔ Container pynautobot-redis-1     Started                                                                                                                                                                                                                                               0.1s 
 ✔ Container pynautobot-nautobot-1  Started                                                                                                                                                                                                                                               0.1s 
===================================================================================================================================== test session starts =====================================================================================================================================
platform linux -- Python 3.8.19, pytest-8.2.2, pluggy-1.5.0 -- /usr/local/bin/python3.8
cachedir: .pytest_cache
rootdir: /source
configfile: pyproject.toml
testpaths: tests/
plugins: requests-mock-1.12.1
collected 487 items                                                                                                                                                                                                                                                                           

tests/integration/test_api_version.py::TestAPIVersioning::test_invalid_api_version PASSED                                                                                                                                                                                               [  0%]
tests/integration/test_api_version.py::TestAPIVersioning::test_tag_content_types PASSED                                                                                                                                                                                                 [  0%]
tests/integration/test_app.py::test_app_get_api_endpoints[dcim] PASSED                                                                                                                                                                                                                  [  0%]
tests/integration/test_app.py::test_app_get_api_endpoints[ipam] PASSED                                                                                                                                                                                                                  [  0%]
tests/integration/test_app.py::test_app_get_api_endpoints[circuits] PASSED                                                                                                                                                                                                              [  1%]
tests/integration/test_app.py::test_app_get_api_endpoints[virtualization] PASSED                                                                                                                                                                                                        [  1%]
tests/integration/test_app.py::test_app_get_api_endpoints[tenancy] PASSED                                                                                                                                                                                                               [  1%]
tests/integration/test_app.py::test_app_get_api_endpoints[extras] PASSED                                                                                                                                                                                                                [  1%]
tests/integration/test_app.py::test_app_dir[dcim] PASSED                                                                                                                                                                                                                                [  1%]
tests/integration/test_app.py::test_app_dir[ipam] PASSED                                                                                                                                                                                                                                [  2%]
tests/integration/test_app.py::test_app_dir[circuits] PASSED                                                                                                                                                                                                                            [  2%]
tests/integration/test_app.py::test_app_dir[virtualization] PASSED                                                                                                                                                                                                                      [  2%]
tests/integration/test_app.py::test_app_dir[tenancy] PASSED                                                                                                                                                                                                                             [  2%]
tests/integration/test_app.py::test_app_dir[extras] PASSED                                                                                                                                                                                                                              [  2%]
tests/integration/test_dcim.py::test_create_manufacturer PASSED                                                                                                                                                                                                                         [  3%]
tests/integration/test_dcim.py::TestSimpleServerRackingAndConnecting::test_racking_server PASSED                                                                                                                                                                                        [  3%]
tests/integration/test_dcim.py::TestSimpleServerRackingAndConnecting::test_string_represention PASSED                                                                                                                                                                                   [  3%]
tests/integration/test_dcim.py::TestSimpleServerRackingAndConnecting::test_fetching_vc_success PASSED                                                                                                                                                                                   [  3%]
tests/integration/test_extras.py::TestCustomField::test_custom_field PASSED                                                                                                                                                                                                             [  3%]
tests/integration/test_extras.py::TestCustomField::test_custom_field_choice PASSED                                                                                                                                                                                                      [  4%]
tests/integration/test_extras.py::TestCustomField::test_custom_field_choice_to_cf PASSED                                                                                                                                                                                                [  4%]
tests/integration/test_extras.py::TestNotes::test_create_object_note PASSED                                                                                                                                                                                                             [  4%]
tests/integration/test_extras.py::TestNotes::test_get_object_note PASSED                                                                                                                                                                                                                [  4%]
tests/integration/test_extras.py::TestNotes::test_get_note_on_invalid_object PASSED                                                                                                                                                                                                     [  4%]
tests/integration/test_ipam.py::test_ip_address_nat_inside_outside_correct_objects PASSED                                                                                                                                                                                               [  5%]
tests/integration/test_ipam.py::test_prefixes_successfully_stringify_tags PASSED                                                                                                                                                                                                        [  5%]
tests/test_api.py::ApiTestCase::test_get PASSED                                                                                                                                                                                                                                         [  5%]
tests/test_api.py::ApiTestCase::test_sanitize_url PASSED                                                                                                                                                                                                                                [  5%]
tests/test_api.py::ApiTestCase::test_useragent_set PASSED                                                                                                                                                                                                                               [  5%]
tests/test_api.py::ApiTestCase::test_verify_false PASSED                                                                                                                                                                                                                                [  6%]
tests/test_api.py::ApiTestCase::test_verify_true PASSED                                                                                                                                                                                                                                 [  6%]
tests/test_api.py::ApiVersionTestCase::test_api_version PASSED                                                                                                                                                                                                                          [  6%]
tests/test_api.py::ApiVersionTestCase::test_api_version_2 PASSED                                                                                                                                                                                                                        [  6%]
tests/test_api.py::ApiVersionTestCase::test_api_version_not_found PASSED                                                                                                                                                                                                                [  6%]
tests/test_api.py::ApiStatusTestCase::test_api_status PASSED                                                                                                                                                                                                                            [  7%]
tests/test_api.py::ApiLazyLoadVersionTestCase::test_lazy_load_version PASSED                                                                                                                                                                                                            [  7%]
tests/test_api.py::ApiRetryTestCase::test_api_retry PASSED                                                                                                                                                                                                                              [  7%]
tests/test_api.py::ApiRetryTestCase::test_api_retry_fails PASSED                                                                                                                                                                                                                        [  7%]
tests/test_app.py::AppCustomFieldsTestCase::test_custom_fields PASSED                                                                                                                                                                                                                   [  8%]
tests/test_app.py::AppCustomFieldChoicesTestCase::test_custom_field_choices PASSED                                                                                                                                                                                                      [  8%]
tests/test_app.py::AppConfigTestCase::test_config PASSED                                                                                                                                                                                                                                [  8%]
tests/test_app.py::PluginAppCustomChoicesTestCase::test_custom_fields PASSED                                                                                                                                                                                                            [  8%]
tests/test_app.py::PluginAppCustomChoicesTestCase::test_installed_plugins PASSED                                                                                                                                                                                                        [  8%]
tests/test_circuits.py::CircuitsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                       [  9%]
tests/test_circuits.py::CircuitsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                         [  9%]
tests/test_circuits.py::CircuitsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                              [  9%]
tests/test_circuits.py::CircuitsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                       [  9%]
tests/test_circuits.py::CircuitsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                          [  9%]
tests/test_circuits.py::CircuitsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 10%]
tests/test_circuits.py::CircuitsTestCase::test_repr PASSED                                                                                                                                                                                                                              [ 10%]
tests/test_circuits.py::CircuitsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 10%]
tests/test_circuits.py::ProviderTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 10%]
tests/test_circuits.py::ProviderTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 10%]
tests/test_circuits.py::ProviderTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                              [ 11%]
tests/test_circuits.py::ProviderTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 11%]
tests/test_circuits.py::ProviderTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 11%]
tests/test_circuits.py::ProviderTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 11%]
tests/test_circuits.py::ProviderTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 11%]
tests/test_circuits.py::CircuitTypeTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 12%]
tests/test_circuits.py::CircuitTypeTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 12%]
tests/test_circuits.py::CircuitTypeTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                           [ 12%]
tests/test_circuits.py::CircuitTypeTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 12%]
tests/test_circuits.py::CircuitTypeTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 12%]
tests/test_circuits.py::CircuitTypeTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                   [ 13%]
tests/test_circuits.py::CircuitTypeTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                 [ 13%]
tests/test_circuits.py::CircuitTerminationsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                            [ 13%]
tests/test_circuits.py::CircuitTerminationsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                              [ 13%]
tests/test_circuits.py::CircuitTerminationsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                   [ 13%]
tests/test_circuits.py::CircuitTerminationsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                            [ 14%]
tests/test_circuits.py::CircuitTerminationsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                               [ 14%]
tests/test_circuits.py::CircuitTerminationsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                           [ 14%]
tests/test_circuits.py::CircuitTerminationsTestCase::test_repr PASSED                                                                                                                                                                                                                   [ 14%]
tests/test_circuits.py::CircuitTerminationsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                         [ 14%]
tests/test_dcim.py::DeviceTestCase::test_create PASSED                                                                                                                                                                                                                                  [ 15%]
tests/test_dcim.py::DeviceTestCase::test_create_device_bulk PASSED                                                                                                                                                                                                                      [ 15%]
tests/test_dcim.py::DeviceTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 15%]
tests/test_dcim.py::DeviceTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 15%]
tests/test_dcim.py::DeviceTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 16%]
tests/test_dcim.py::DeviceTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 16%]
tests/test_dcim.py::DeviceTestCase::test_get PASSED                                                                                                                                                                                                                                     [ 16%]
tests/test_dcim.py::DeviceTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 16%]
tests/test_dcim.py::DeviceTestCase::test_get_by_id PASSED                                                                                                                                                                                                                               [ 16%]
tests/test_dcim.py::DeviceTestCase::test_get_napalm PASSED                                                                                                                                                                                                                              [ 17%]
tests/test_dcim.py::DeviceTestCase::test_get_recurse PASSED                                                                                                                                                                                                                             [ 17%]
tests/test_dcim.py::DeviceTestCase::test_modify PASSED                                                                                                                                                                                                                                  [ 17%]
tests/test_dcim.py::DeviceTestCase::test_multi_filter PASSED                                                                                                                                                                                                                            [ 17%]
tests/test_dcim.py::DeviceTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 17%]
tests/test_dcim.py::SiteTestCase::test_create PASSED                                                                                                                                                                                                                                    [ 18%]
tests/test_dcim.py::SiteTestCase::test_custom_field_json PASSED                                                                                                                                                                                                                         [ 18%]
tests/test_dcim.py::SiteTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 18%]
tests/test_dcim.py::SiteTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                                 [ 18%]
tests/test_dcim.py::SiteTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 18%]
tests/test_dcim.py::SiteTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 19%]
tests/test_dcim.py::SiteTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                                  [ 19%]
tests/test_dcim.py::SiteTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                              [ 19%]
tests/test_dcim.py::SiteTestCase::test_modify_custom PASSED                                                                                                                                                                                                                             [ 19%]
tests/test_dcim.py::SiteTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 19%]
tests/test_dcim.py::InterfaceTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 20%]
tests/test_dcim.py::InterfaceTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 20%]
tests/test_dcim.py::InterfaceTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                 [ 20%]
tests/test_dcim.py::InterfaceTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 20%]
tests/test_dcim.py::InterfaceTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 20%]
tests/test_dcim.py::InterfaceTestCase::test_get_all PASSED                                                                                                                                                                                                                              [ 21%]
tests/test_dcim.py::InterfaceTestCase::test_modify PASSED                                                                                                                                                                                                                               [ 21%]
tests/test_dcim.py::InterfaceTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 21%]
tests/test_dcim.py::InterfaceTestCase::test_trace PASSED                                                                                                                                                                                                                                [ 21%]
tests/test_dcim.py::RackTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 21%]
tests/test_dcim.py::RackTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                                 [ 22%]
tests/test_dcim.py::RackTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 22%]
tests/test_dcim.py::RackTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 22%]
tests/test_dcim.py::RackTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                                  [ 22%]
tests/test_dcim.py::RackTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                              [ 22%]
tests/test_dcim.py::RackTestCase::test_get_elevation PASSED                                                                                                                                                                                                                             [ 23%]
tests/test_dcim.py::RackTestCase::test_get_units PASSED                                                                                                                                                                                                                                 [ 23%]
tests/test_dcim.py::RackTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 23%]
tests/test_dcim.py::RackRoleTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                           [ 23%]
tests/test_dcim.py::RackRoleTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 24%]
tests/test_dcim.py::RackRoleTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                  [ 24%]
tests/test_dcim.py::RackRoleTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                           [ 24%]
tests/test_dcim.py::RackRoleTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                              [ 24%]
tests/test_dcim.py::RackRoleTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 24%]
tests/test_dcim.py::RackRoleTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                        [ 25%]
tests/test_dcim.py::RegionTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 25%]
tests/test_dcim.py::RegionTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 25%]
tests/test_dcim.py::RegionTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 25%]
tests/test_dcim.py::RegionTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 25%]
tests/test_dcim.py::RegionTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                                [ 26%]
tests/test_dcim.py::RegionTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 26%]
tests/test_dcim.py::RegionTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 26%]
tests/test_dcim.py::RackGroupsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 26%]
tests/test_dcim.py::RackGroupsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                           [ 26%]
tests/test_dcim.py::RackGroupsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                [ 27%]
tests/test_dcim.py::RackGroupsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 27%]
tests/test_dcim.py::RackGroupsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 27%]
tests/test_dcim.py::RackGroupsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                        [ 27%]
tests/test_dcim.py::RackGroupsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 27%]
tests/test_dcim.py::RackReservationsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                   [ 28%]
tests/test_dcim.py::RackReservationsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                     [ 28%]
tests/test_dcim.py::RackReservationsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                          [ 28%]
tests/test_dcim.py::RackReservationsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                   [ 28%]
tests/test_dcim.py::RackReservationsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 28%]
tests/test_dcim.py::RackReservationsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                  [ 29%]
tests/test_dcim.py::RackReservationsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                [ 29%]
tests/test_dcim.py::ManufacturersTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 29%]
tests/test_dcim.py::ManufacturersTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                        [ 29%]
tests/test_dcim.py::ManufacturersTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                             [ 29%]
tests/test_dcim.py::ManufacturersTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 30%]
tests/test_dcim.py::ManufacturersTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 30%]
tests/test_dcim.py::ManufacturersTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                     [ 30%]
tests/test_dcim.py::ManufacturersTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                   [ 30%]
tests/test_dcim.py::DeviceTypeTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 31%]
tests/test_dcim.py::DeviceTypeTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                           [ 31%]
tests/test_dcim.py::DeviceTypeTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                [ 31%]
tests/test_dcim.py::DeviceTypeTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 31%]
tests/test_dcim.py::DeviceTypeTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 31%]
tests/test_dcim.py::DeviceTypeTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                        [ 32%]
tests/test_dcim.py::DeviceTypeTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 32%]
tests/test_dcim.py::ConsolePortTemplateTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                [ 32%]
tests/test_dcim.py::ConsolePortTemplateTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                  [ 32%]
tests/test_dcim.py::ConsolePortTemplateTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                       [ 32%]
tests/test_dcim.py::ConsolePortTemplateTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                [ 33%]
tests/test_dcim.py::ConsolePortTemplateTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                   [ 33%]
tests/test_dcim.py::ConsolePortTemplateTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                               [ 33%]
tests/test_dcim.py::ConsolePortTemplateTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                             [ 33%]
tests/test_dcim.py::ConsoleServerPortTemplateTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                          [ 33%]
tests/test_dcim.py::ConsoleServerPortTemplateTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                            [ 34%]
tests/test_dcim.py::ConsoleServerPortTemplateTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                 [ 34%]
tests/test_dcim.py::ConsoleServerPortTemplateTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                          [ 34%]
tests/test_dcim.py::ConsoleServerPortTemplateTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                             [ 34%]
tests/test_dcim.py::ConsoleServerPortTemplateTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                         [ 34%]
tests/test_dcim.py::ConsoleServerPortTemplateTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                       [ 35%]
tests/test_dcim.py::PowerPortTemplateTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                  [ 35%]
tests/test_dcim.py::PowerPortTemplateTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 35%]
tests/test_dcim.py::PowerPortTemplateTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                         [ 35%]
tests/test_dcim.py::PowerPortTemplateTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                  [ 35%]
tests/test_dcim.py::PowerPortTemplateTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                     [ 36%]
tests/test_dcim.py::PowerPortTemplateTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                 [ 36%]
tests/test_dcim.py::PowerPortTemplateTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                               [ 36%]
tests/test_dcim.py::PowerOutletTemplateTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                [ 36%]
tests/test_dcim.py::PowerOutletTemplateTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                  [ 36%]
tests/test_dcim.py::PowerOutletTemplateTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                       [ 37%]
tests/test_dcim.py::PowerOutletTemplateTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                [ 37%]
tests/test_dcim.py::PowerOutletTemplateTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                   [ 37%]
tests/test_dcim.py::PowerOutletTemplateTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                               [ 37%]
tests/test_dcim.py::PowerOutletTemplateTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                             [ 37%]
tests/test_dcim.py::InterfaceTemplateTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                  [ 38%]
tests/test_dcim.py::InterfaceTemplateTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 38%]
tests/test_dcim.py::InterfaceTemplateTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                         [ 38%]
tests/test_dcim.py::InterfaceTemplateTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                  [ 38%]
tests/test_dcim.py::InterfaceTemplateTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                     [ 39%]
tests/test_dcim.py::InterfaceTemplateTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                 [ 39%]
tests/test_dcim.py::InterfaceTemplateTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                               [ 39%]
tests/test_dcim.py::DeviceBayTemplateTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                  [ 39%]
tests/test_dcim.py::DeviceBayTemplateTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 39%]
tests/test_dcim.py::DeviceBayTemplateTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                         [ 40%]
tests/test_dcim.py::DeviceBayTemplateTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                  [ 40%]
tests/test_dcim.py::DeviceBayTemplateTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                     [ 40%]
tests/test_dcim.py::DeviceBayTemplateTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                 [ 40%]
tests/test_dcim.py::DeviceBayTemplateTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                               [ 40%]
tests/test_dcim.py::DeviceRolesTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                        [ 41%]
tests/test_dcim.py::DeviceRolesTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 41%]
tests/test_dcim.py::DeviceRolesTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                               [ 41%]
tests/test_dcim.py::DeviceRolesTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                        [ 41%]
tests/test_dcim.py::DeviceRolesTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                           [ 41%]
tests/test_dcim.py::DeviceRolesTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 42%]
tests/test_dcim.py::DeviceRolesTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                     [ 42%]
tests/test_dcim.py::PlatformsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 42%]
tests/test_dcim.py::PlatformsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 42%]
tests/test_dcim.py::PlatformsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                 [ 42%]
tests/test_dcim.py::PlatformsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 43%]
tests/test_dcim.py::PlatformsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 43%]
tests/test_dcim.py::PlatformsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 43%]
tests/test_dcim.py::PlatformsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 43%]
tests/test_dcim.py::ConsolePortsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 43%]
tests/test_dcim.py::ConsolePortsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 44%]
tests/test_dcim.py::ConsolePortsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                              [ 44%]
tests/test_dcim.py::ConsolePortsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 44%]
tests/test_dcim.py::ConsolePortsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 44%]
tests/test_dcim.py::ConsolePortsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 44%]
tests/test_dcim.py::ConsolePortsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 45%]
tests/test_dcim.py::ConsoleServerPortsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                 [ 45%]
tests/test_dcim.py::ConsoleServerPortsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                   [ 45%]
tests/test_dcim.py::ConsoleServerPortsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                        [ 45%]
tests/test_dcim.py::ConsoleServerPortsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                 [ 45%]
tests/test_dcim.py::ConsoleServerPortsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 46%]
tests/test_dcim.py::ConsoleServerPortsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                [ 46%]
tests/test_dcim.py::ConsoleServerPortsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                              [ 46%]
tests/test_dcim.py::PowerPortsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 46%]
tests/test_dcim.py::PowerPortsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                           [ 47%]
tests/test_dcim.py::PowerPortsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                [ 47%]
tests/test_dcim.py::PowerPortsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 47%]
tests/test_dcim.py::PowerPortsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 47%]
tests/test_dcim.py::PowerPortsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                        [ 47%]
tests/test_dcim.py::PowerPortsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 48%]
tests/test_dcim.py::PowerOutletsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 48%]
tests/test_dcim.py::PowerOutletsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 48%]
tests/test_dcim.py::PowerOutletsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                              [ 48%]
tests/test_dcim.py::PowerOutletsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 48%]
tests/test_dcim.py::PowerOutletsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 49%]
tests/test_dcim.py::PowerOutletsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 49%]
tests/test_dcim.py::PowerOutletsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 49%]
tests/test_dcim.py::DeviceBaysTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 49%]
tests/test_dcim.py::DeviceBaysTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                           [ 49%]
tests/test_dcim.py::DeviceBaysTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                [ 50%]
tests/test_dcim.py::DeviceBaysTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 50%]
tests/test_dcim.py::DeviceBaysTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 50%]
tests/test_dcim.py::DeviceBaysTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                        [ 50%]
tests/test_dcim.py::DeviceBaysTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 50%]
tests/test_dcim.py::InterfaceConnectionsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                               [ 51%]
tests/test_dcim.py::InterfaceConnectionsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                 [ 51%]
tests/test_dcim.py::InterfaceConnectionsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                      [ 51%]
tests/test_dcim.py::InterfaceConnectionsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                               [ 51%]
tests/test_dcim.py::InterfaceConnectionsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                  [ 51%]
tests/test_dcim.py::InterfaceConnectionsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                              [ 52%]
tests/test_dcim.py::InterfaceConnectionsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                            [ 52%]
tests/test_dcim.py::VirtualChassisTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                     [ 52%]
tests/test_dcim.py::VirtualChassisTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 52%]
tests/test_dcim.py::VirtualChassisTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                            [ 52%]
tests/test_dcim.py::VirtualChassisTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                     [ 53%]
tests/test_dcim.py::VirtualChassisTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                        [ 53%]
tests/test_dcim.py::VirtualChassisTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 53%]
tests/test_dcim.py::VirtualChassisTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                  [ 53%]
tests/test_dcim.py::Choices::test_get PASSED                                                                                                                                                                                                                                            [ 54%]
tests/test_dcim.py::CablesTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 54%]
tests/test_dcim.py::CablesTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 54%]
tests/test_dcim.py::CablesTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 54%]
tests/test_dcim.py::CablesTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 54%]
tests/test_dcim.py::CablesTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                                [ 55%]
tests/test_dcim.py::CablesTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 55%]
tests/test_dcim.py::CablesTestCase::test_get_circuit PASSED                                                                                                                                                                                                                             [ 55%]
tests/test_dcim.py::CablesTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 55%]
tests/test_extras.py::DynamicGroupTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                     [ 55%]
tests/test_extras.py::DynamicGroupTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 56%]
tests/test_extras.py::DynamicGroupTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                            [ 56%]
tests/test_extras.py::DynamicGroupTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                     [ 56%]
tests/test_extras.py::DynamicGroupTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                        [ 56%]
tests/test_extras.py::DynamicGroupTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 56%]
tests/test_extras.py::DynamicGroupTestCase::test_get_members PASSED                                                                                                                                                                                                                     [ 57%]
tests/test_extras.py::DynamicGroupTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                  [ 57%]
tests/test_graphql.py::test_setup PASSED                                                                                                                                                                                                                                                [ 57%]
tests/test_graphql.py::test_get_basic_string PASSED                                                                                                                                                                                                                                     [ 57%]
tests/test_graphql.py::test_get_string_with_id PASSED                                                                                                                                                                                                                                   [ 57%]
tests/test_graphql.py::test_get_invalid_query_data PASSED                                                                                                                                                                                                                               [ 58%]
tests/test_graphql.py::test_get_id_no_result PASSED                                                                                                                                                                                                                                     [ 58%]
tests/test_graphql.py::test_get_string_with_variables PASSED                                                                                                                                                                                                                            [ 58%]
tests/test_graphql.py::test_get_string_with_incorrect_variables_datatype PASSED                                                                                                                                                                                                         [ 58%]
tests/test_graphql.py::test_get_string_with_variables_no_result PASSED                                                                                                                                                                                                                  [ 58%]
tests/test_graphql.py::test_get_invalid_query_string PASSED                                                                                                                                                                                                                             [ 59%]
tests/test_graphql.py::test_get_multiple_invalid_query_string PASSED                                                                                                                                                                                                                    [ 59%]
tests/test_ipam.py::PrefixTestCase::test_create_available_ips PASSED                                                                                                                                                                                                                    [ 59%]
tests/test_ipam.py::PrefixTestCase::test_create_available_prefixes PASSED                                                                                                                                                                                                               [ 59%]
tests/test_ipam.py::PrefixTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 59%]
tests/test_ipam.py::PrefixTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 60%]
tests/test_ipam.py::PrefixTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 60%]
tests/test_ipam.py::PrefixTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 60%]
tests/test_ipam.py::PrefixTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                                [ 60%]
tests/test_ipam.py::PrefixTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 60%]
tests/test_ipam.py::PrefixTestCase::test_get_available_ips PASSED                                                                                                                                                                                                                       [ 61%]
tests/test_ipam.py::PrefixTestCase::test_get_available_prefixes PASSED                                                                                                                                                                                                                  [ 61%]
tests/test_ipam.py::PrefixTestCase::test_idempotence PASSED                                                                                                                                                                                                                             [ 61%]
tests/test_ipam.py::PrefixTestCase::test_modify PASSED                                                                                                                                                                                                                                  [ 61%]
tests/test_ipam.py::PrefixTestCase::test_namespace_in_prefix PASSED                                                                                                                                                                                                                     [ 62%]
tests/test_ipam.py::PrefixTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 62%]
tests/test_ipam.py::IPAddressTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 62%]
tests/test_ipam.py::IPAddressTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 62%]
tests/test_ipam.py::IPAddressTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                 [ 62%]
tests/test_ipam.py::IPAddressTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 63%]
tests/test_ipam.py::IPAddressTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 63%]
tests/test_ipam.py::IPAddressTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 63%]
tests/test_ipam.py::IPAddressTestCase::test_modify PASSED                                                                                                                                                                                                                               [ 63%]
tests/test_ipam.py::IPAddressTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 63%]
tests/test_ipam.py::RoleTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 64%]
tests/test_ipam.py::RoleTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                                 [ 64%]
tests/test_ipam.py::RoleTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 64%]
tests/test_ipam.py::RoleTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 64%]
tests/test_ipam.py::RoleTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                                  [ 64%]
tests/test_ipam.py::RoleTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                              [ 65%]
tests/test_ipam.py::RoleTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 65%]
tests/test_ipam.py::RIRTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                                [ 65%]
tests/test_ipam.py::RIRTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                                  [ 65%]
tests/test_ipam.py::RIRTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 65%]
tests/test_ipam.py::RIRTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                                [ 66%]
tests/test_ipam.py::RIRTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                                   [ 66%]
tests/test_ipam.py::RIRTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 66%]
tests/test_ipam.py::RIRTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 66%]
tests/test_ipam.py::AggregatesTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 66%]
tests/test_ipam.py::AggregatesTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                           [ 67%]
tests/test_ipam.py::AggregatesTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                [ 67%]
tests/test_ipam.py::AggregatesTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 67%]
tests/test_ipam.py::AggregatesTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 67%]
tests/test_ipam.py::AggregatesTestCase::test_get_aggregate_stringify PASSED                                                                                                                                                                                                             [ 67%]
tests/test_ipam.py::AggregatesTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                        [ 68%]
tests/test_ipam.py::AggregatesTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 68%]
tests/test_ipam.py::VlanTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 68%]
tests/test_ipam.py::VlanTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                                 [ 68%]
tests/test_ipam.py::VlanTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 68%]
tests/test_ipam.py::VlanTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 69%]
tests/test_ipam.py::VlanTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                                  [ 69%]
tests/test_ipam.py::VlanTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                              [ 69%]
tests/test_ipam.py::VlanTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 69%]
tests/test_ipam.py::VlanTestCase::test_vlan_in_interface PASSED                                                                                                                                                                                                                         [ 70%]
tests/test_ipam.py::VlanGroupsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 70%]
tests/test_ipam.py::VlanGroupsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                           [ 70%]
tests/test_ipam.py::VlanGroupsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                [ 70%]
tests/test_ipam.py::VlanGroupsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 70%]
tests/test_ipam.py::VlanGroupsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 71%]
tests/test_ipam.py::VlanGroupsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                        [ 71%]
tests/test_ipam.py::VlanGroupsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 71%]
tests/test_ipam.py::VRFTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                                [ 71%]
tests/test_ipam.py::VRFTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                                  [ 71%]
tests/test_ipam.py::VRFTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 72%]
tests/test_ipam.py::VRFTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                                [ 72%]
tests/test_ipam.py::VRFTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                                   [ 72%]
tests/test_ipam.py::VRFTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 72%]
tests/test_ipam.py::VRFTestCase::test_namespace_in_vrf PASSED                                                                                                                                                                                                                           [ 72%]
tests/test_ipam.py::VRFTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 73%]
tests/test_ipam.py::NameSpaceTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 73%]
tests/test_ipam.py::NameSpaceTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 73%]
tests/test_ipam.py::NameSpaceTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                 [ 73%]
tests/test_ipam.py::NameSpaceTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 73%]
tests/test_ipam.py::NameSpaceTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 74%]
tests/test_ipam.py::NameSpaceTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 74%]
tests/test_ipam.py::NameSpaceTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 74%]
tests/test_tenancy.py::TenantsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 74%]
tests/test_tenancy.py::TenantsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                           [ 74%]
tests/test_tenancy.py::TenantsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                [ 75%]
tests/test_tenancy.py::TenantsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 75%]
tests/test_tenancy.py::TenantsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 75%]
tests/test_tenancy.py::TenantsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                        [ 75%]
tests/test_tenancy.py::TenantsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 75%]
tests/test_tenancy.py::TenantGroupsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 76%]
tests/test_tenancy.py::TenantGroupsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 76%]
tests/test_tenancy.py::TenantGroupsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                           [ 76%]
tests/test_tenancy.py::TenantGroupsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 76%]
tests/test_tenancy.py::TenantGroupsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 77%]
tests/test_tenancy.py::TenantGroupsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                   [ 77%]
tests/test_tenancy.py::TenantGroupsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                 [ 77%]
tests/test_users.py::UsersTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 77%]
tests/test_users.py::UsersTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 77%]
tests/test_users.py::UsersTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 78%]
tests/test_users.py::UsersTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                             [ 78%]
tests/test_users.py::UsersTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                                [ 78%]
tests/test_users.py::UsersTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 78%]
tests/test_users.py::UsersTestCase::test_repr PASSED                                                                                                                                                                                                                                    [ 78%]
tests/test_users.py::UsersTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 79%]
tests/test_users.py::GroupsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 79%]
tests/test_users.py::GroupsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                              [ 79%]
tests/test_users.py::GroupsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                                   [ 79%]
tests/test_users.py::GroupsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                            [ 79%]
tests/test_users.py::GroupsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                               [ 80%]
tests/test_users.py::GroupsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                           [ 80%]
tests/test_users.py::GroupsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 80%]
tests/test_users.py::PermissionsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 80%]
tests/test_users.py::PermissionsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                         [ 80%]
tests/test_users.py::PermissionsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                              [ 81%]
tests/test_users.py::PermissionsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                       [ 81%]
tests/test_users.py::PermissionsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                          [ 81%]
tests/test_users.py::PermissionsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                      [ 81%]
tests/test_users.py::PermissionsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 81%]
tests/test_virtualization.py::ClusterTypesTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                             [ 82%]
tests/test_virtualization.py::ClusterTypesTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                               [ 82%]
tests/test_virtualization.py::ClusterTypesTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                    [ 82%]
tests/test_virtualization.py::ClusterTypesTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                             [ 82%]
tests/test_virtualization.py::ClusterTypesTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                [ 82%]
tests/test_virtualization.py::ClusterTypesTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                            [ 83%]
tests/test_virtualization.py::ClusterTypesTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                          [ 83%]
tests/test_virtualization.py::ClusterGroupsTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                            [ 83%]
tests/test_virtualization.py::ClusterGroupsTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                              [ 83%]
tests/test_virtualization.py::ClusterGroupsTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                   [ 83%]
tests/test_virtualization.py::ClusterGroupsTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                            [ 84%]
tests/test_virtualization.py::ClusterGroupsTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                               [ 84%]
tests/test_virtualization.py::ClusterGroupsTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                           [ 84%]
tests/test_virtualization.py::ClusterGroupsTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                         [ 84%]
tests/test_virtualization.py::ClustersTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                                 [ 85%]
tests/test_virtualization.py::ClustersTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                   [ 85%]
tests/test_virtualization.py::ClustersTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                        [ 85%]
tests/test_virtualization.py::ClustersTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                                 [ 85%]
tests/test_virtualization.py::ClustersTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                    [ 85%]
tests/test_virtualization.py::ClustersTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                                [ 86%]
tests/test_virtualization.py::ClustersTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                              [ 86%]
tests/test_virtualization.py::VirtualMachinesTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                          [ 86%]
tests/test_virtualization.py::VirtualMachinesTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                            [ 86%]
tests/test_virtualization.py::VirtualMachinesTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                 [ 86%]
tests/test_virtualization.py::VirtualMachinesTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                          [ 87%]
tests/test_virtualization.py::VirtualMachinesTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                             [ 87%]
tests/test_virtualization.py::VirtualMachinesTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                         [ 87%]
tests/test_virtualization.py::VirtualMachinesTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                       [ 87%]
tests/test_virtualization.py::InterfacesTestCase::test_delete <- tests/__init__.py PASSED                                                                                                                                                                                               [ 87%]
tests/test_virtualization.py::InterfacesTestCase::test_diff <- tests/__init__.py PASSED                                                                                                                                                                                                 [ 88%]
tests/test_virtualization.py::InterfacesTestCase::test_endpoint_update <- tests/__init__.py PASSED                                                                                                                                                                                      [ 88%]
tests/test_virtualization.py::InterfacesTestCase::test_filter <- tests/__init__.py PASSED                                                                                                                                                                                               [ 88%]
tests/test_virtualization.py::InterfacesTestCase::test_get <- tests/__init__.py PASSED                                                                                                                                                                                                  [ 88%]
tests/test_virtualization.py::InterfacesTestCase::test_get_all <- tests/__init__.py PASSED                                                                                                                                                                                              [ 88%]
tests/test_virtualization.py::InterfacesTestCase::test_serialize <- tests/__init__.py PASSED                                                                                                                                                                                            [ 89%]
tests/unit/test_api_version.py::APIVersionTestCase::test_api_versioning_at_api_level PASSED                                                                                                                                                                                             [ 89%]
tests/unit/test_api_version.py::APIVersionTestCase::test_api_versioning_at_per_request_level PASSED                                                                                                                                                                                     [ 89%]
tests/unit/test_endpoint.py::EndPointTestCase::test_choices PASSED                                                                                                                                                                                                                      [ 89%]
tests/unit/test_endpoint.py::EndPointTestCase::test_delete_with_ids PASSED                                                                                                                                                                                                              [ 89%]
tests/unit/test_endpoint.py::EndPointTestCase::test_delete_with_invalid_id_type PASSED                                                                                                                                                                                                  [ 90%]
tests/unit/test_endpoint.py::EndPointTestCase::test_delete_with_invalid_object PASSED                                                                                                                                                                                                   [ 90%]
tests/unit/test_endpoint.py::EndPointTestCase::test_delete_with_invalid_uuid PASSED                                                                                                                                                                                                     [ 90%]
tests/unit/test_endpoint.py::EndPointTestCase::test_delete_with_objects PASSED                                                                                                                                                                                                          [ 90%]
tests/unit/test_endpoint.py::EndPointTestCase::test_filter PASSED                                                                                                                                                                                                                       [ 90%]
tests/unit/test_endpoint.py::EndPointTestCase::test_filter_empty_kwargs PASSED                                                                                                                                                                                                          [ 91%]
tests/unit/test_endpoint.py::EndPointTestCase::test_filter_reserved_kwargs PASSED                                                                                                                                                                                                       [ 91%]
tests/unit/test_endpoint.py::EndPointTestCase::test_update_with_dict PASSED                                                                                                                                                                                                             [ 91%]
tests/unit/test_endpoint.py::EndPointTestCase::test_update_with_id_and_data PASSED                                                                                                                                                                                                      [ 91%]
tests/unit/test_endpoint.py::EndPointTestCase::test_update_with_id_and_data_args PASSED                                                                                                                                                                                                 [ 91%]
tests/unit/test_endpoint.py::EndPointTestCase::test_update_with_id_and_data_args_kwargs PASSED                                                                                                                                                                                          [ 92%]
tests/unit/test_endpoint.py::EndPointTestCase::test_update_with_invalid_input PASSED                                                                                                                                                                                                    [ 92%]
tests/unit/test_endpoint.py::EndPointTestCase::test_update_with_invalid_objects_type PASSED                                                                                                                                                                                             [ 92%]
tests/unit/test_endpoint.py::EndPointTestCase::test_update_with_invalid_type_in_objects PASSED                                                                                                                                                                                          [ 92%]
tests/unit/test_endpoint.py::EndPointTestCase::test_update_with_missing_id_attribute PASSED                                                                                                                                                                                             [ 93%]
tests/unit/test_endpoint.py::EndPointTestCase::test_update_with_objects PASSED                                                                                                                                                                                                          [ 93%]
tests/unit/test_endpoint.py::JobEndPointTestCase::test_invalid_arg_greater_v1_3 PASSED                                                                                                                                                                                                  [ 93%]
tests/unit/test_endpoint.py::JobEndPointTestCase::test_invalid_arg_less_v1_3 PASSED                                                                                                                                                                                                     [ 93%]
tests/unit/test_endpoint.py::JobEndPointTestCase::test_run_greater_v1_3 PASSED                                                                                                                                                                                                          [ 93%]
tests/unit/test_endpoint.py::JobEndPointTestCase::test_run_less_v1_3 PASSED                                                                                                                                                                                                             [ 94%]
tests/unit/test_query.py::RequestTestCase::test_get_count PASSED                                                                                                                                                                                                                        [ 94%]
tests/unit/test_query.py::RequestTestCase::test_get_count_no_filters PASSED                                                                                                                                                                                                             [ 94%]
tests/unit/test_request.py::RequestTestCase::test_get_openapi PASSED                                                                                                                                                                                                                    [ 94%]
tests/unit/test_response.py::RecordTestCase::test_attribute_access PASSED                                                                                                                                                                                                               [ 94%]
tests/unit/test_response.py::RecordTestCase::test_choices_idempotence_prev27 PASSED                                                                                                                                                                                                     [ 95%]
tests/unit/test_response.py::RecordTestCase::test_choices_idempotence_v27 PASSED                                                                                                                                                                                                        [ 95%]
tests/unit/test_response.py::RecordTestCase::test_choices_idempotence_v28 PASSED                                                                                                                                                                                                        [ 95%]
tests/unit/test_response.py::RecordTestCase::test_compare PASSED                                                                                                                                                                                                                        [ 95%]
tests/unit/test_response.py::RecordTestCase::test_dict PASSED                                                                                                                                                                                                                           [ 95%]
tests/unit/test_response.py::RecordTestCase::test_dict_access PASSED                                                                                                                                                                                                                    [ 96%]
tests/unit/test_response.py::RecordTestCase::test_diff PASSED                                                                                                                                                                                                                           [ 96%]
tests/unit/test_response.py::RecordTestCase::test_diff_append_records_list PASSED                                                                                                                                                                                                       [ 96%]
tests/unit/test_response.py::RecordTestCase::test_endpoint_from_url PASSED                                                                                                                                                                                                              [ 96%]
tests/unit/test_response.py::RecordTestCase::test_endpoint_from_url_with_directory_in_base_url PASSED                                                                                                                                                                                   [ 96%]
tests/unit/test_response.py::RecordTestCase::test_endpoint_from_url_with_plugin_nested_endpoints PASSED                                                                                                                                                                                 [ 97%]
tests/unit/test_response.py::RecordTestCase::test_endpoint_from_url_with_plugins PASSED                                                                                                                                                                                                 [ 97%]
tests/unit/test_response.py::RecordTestCase::test_endpoint_from_url_with_plugins_and_directory_in_base_url PASSED                                                                                                                                                                       [ 97%]
tests/unit/test_response.py::RecordTestCase::test_hash PASSED                                                                                                                                                                                                                           [ 97%]
tests/unit/test_response.py::RecordTestCase::test_hash_diff PASSED                                                                                                                                                                                                                      [ 97%]
tests/unit/test_response.py::RecordTestCase::test_nested_write PASSED                                                                                                                                                                                                                   [ 98%]
tests/unit/test_response.py::RecordTestCase::test_nested_write_with_directory_in_base_url PASSED                                                                                                                                                                                        [ 98%]
tests/unit/test_response.py::RecordTestCase::test_notes_property_exists PASSED                                                                                                                                                                                                          [ 98%]
tests/unit/test_response.py::RecordTestCase::test_serialize_dict_tag_set PASSED                                                                                                                                                                                                         [ 98%]
tests/unit/test_response.py::RecordTestCase::test_serialize_list_of_ints PASSED                                                                                                                                                                                                         [ 98%]
tests/unit/test_response.py::RecordTestCase::test_serialize_list_of_records PASSED                                                                                                                                                                                                      [ 99%]
tests/unit/test_response.py::RecordTestCase::test_serialize_string_tag_set PASSED                                                                                                                                                                                                       [ 99%]
tests/unit/test_response.py::RecordTestCase::test_serialize_tag_list_order PASSED                                                                                                                                                                                                       [ 99%]
tests/unit/test_response.py::RecordTestCase::test_updates_with_changes PASSED                                                                                                                                                                                                           [ 99%]
tests/unit/test_response.py::RecordTestCase::test_updates_with_no_changes PASSED                                                                                                                                                                                                        [100%]

==================================================================================================================================== 487 passed in 45.13s =====================================================================================================================================
All tests have passed!
(pynautobot-py3.11) ➜  pynautobot git:(lazy_load_api_version) ✗ 

@joewesch joewesch linked an issue Jul 29, 2024 that may be closed by this pull request
@@ -110,15 +110,13 @@ def __init__(
self.users = App(self, "users")
self.plugins = PluginsApp(self)
self.graphql = GraphQLQuery(self)
self._validate_version()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By removing this in the init, we no longer validate the version unless the end user explicitly calls the property themselves now (barring a single method that I could find). Can we make every call get the .version property so it will trigger the _validate_version method on the first one and just return the cached property on every other one?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@brandomando on this one...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Change version validation to not happen during initialization Proxy feature
3 participants