Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pynetbox for openSUSE:Factory 
checked in at 2022-12-11 17:17:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pynetbox (Old)
 and      /work/SRC/openSUSE:Factory/.python-pynetbox.new.1835 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pynetbox"

Sun Dec 11 17:17:07 2022 rev:31 rq:1042184 version:7.0.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pynetbox/python-pynetbox.changes  
2022-10-08 01:23:34.594002810 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-pynetbox.new.1835/python-pynetbox.changes    
    2022-12-11 17:17:12.590072855 +0100
@@ -1,0 +2,14 @@
+Sat Dec 10 20:46:27 UTC 2022 - Martin Hauke <[email protected]>
+
+- Update to version 7.0.0
+  BREAKING CHANGE
+  * Due to changes for a_terminations, b_terminations this version
+    only supports NetBox 3.3 and later.
+  Changes
+  * Enable available_ips for ip_ranges.
+  * Remove all Python2 related code.
+  * Do not skip plugins in endpoint URLs.
+  * Fix pickling exception with custom errors.
+  * Support NetBox 3.3 cabling models (breaking change).
+
+-------------------------------------------------------------------

Old:
----
  pynetbox-6.6.2.tar.gz

New:
----
  pynetbox-7.0.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pynetbox.spec ++++++
--- /var/tmp/diff_new_pack.FaTHRO/_old  2022-12-11 17:17:12.990075083 +0100
+++ /var/tmp/diff_new_pack.FaTHRO/_new  2022-12-11 17:17:12.994075106 +0100
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define         skip_python2 1
 Name:           python-pynetbox
-Version:        6.6.2
+Version:        7.0.0
 Release:        0
 Summary:        NetBox API client library
 License:        Apache-2.0

++++++ pynetbox-6.6.2.tar.gz -> pynetbox-7.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/.github/workflows/py3.yml 
new/pynetbox-7.0.0/.github/workflows/py3.yml
--- old/pynetbox-6.6.2/.github/workflows/py3.yml        2022-04-18 
05:28:33.000000000 +0200
+++ new/pynetbox-7.0.0/.github/workflows/py3.yml        2022-12-09 
18:53:22.000000000 +0100
@@ -12,8 +12,8 @@
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        python: ["3.7", "3.10"]
-        netbox: ["2.11", "3.0", "3.1"]
+        python: ["3.8", "3.9", "3.10"]
+        netbox: ["3.3"]
 
     steps:
       - uses: actions/checkout@v2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/PKG-INFO new/pynetbox-7.0.0/PKG-INFO
--- old/pynetbox-6.6.2/PKG-INFO 2022-04-18 05:28:48.670452800 +0200
+++ new/pynetbox-7.0.0/PKG-INFO 2022-12-09 18:53:33.226451000 +0100
@@ -1,20 +1,16 @@
 Metadata-Version: 2.1
 Name: pynetbox
-Version: 6.6.2
+Version: 7.0.0
 Summary: NetBox API client library
-Home-page: https://github.com/digitalocean/pynetbox
+Home-page: https://github.com/netbox-community/netbox
 Author: Zach Moody
 Author-email: [email protected]
 License: Apache2
 Keywords: netbox
-Platform: UNKNOWN
 Classifier: Intended Audience :: Developers
 Classifier: Development Status :: 5 - Production/Stable
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
 License-File: LICENSE
-
-UNKNOWN
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/README.md new/pynetbox-7.0.0/README.md
--- old/pynetbox-6.6.2/README.md        2022-04-18 05:28:33.000000000 +0200
+++ new/pynetbox-7.0.0/README.md        2022-12-09 18:53:22.000000000 +0100
@@ -1,6 +1,7 @@
 # Pynetbox
 Python API client library for 
[NetBox](https://github.com/netbox-community/netbox).
 
+> **Note:** Version 6.7 and later of the library only supports NetBox 3.3 and 
above.
 
 ## Installation
 
@@ -44,7 +45,7 @@
 
 ### Threading
 
-pynetbox supports multithreaded calls (in Python 3 only) for `.filter()` and 
`.all()` queries. It is **highly recommended** you have `MAX_PAGE_SIZE` in your 
Netbox install set to anything *except* `0` or `None`. The default value of 
`1000` is usually a good value to use. To enable threading, add 
`threading=True` parameter to the `.api`:
+pynetbox supports multithreaded calls for `.filter()` and `.all()` queries. It 
is **highly recommended** you have `MAX_PAGE_SIZE` in your Netbox install set 
to anything *except* `0` or `None`. The default value of `1000` is usually a 
good value to use. To enable threading, add `threading=True` parameter to the 
`.api`:
 
 ```python
 nb = pynetbox.api(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/pynetbox/core/api.py 
new/pynetbox-7.0.0/pynetbox/core/api.py
--- old/pynetbox-6.6.2/pynetbox/core/api.py     2022-04-18 05:28:33.000000000 
+0200
+++ new/pynetbox-7.0.0/pynetbox/core/api.py     2022-12-09 18:53:22.000000000 
+0100
@@ -13,8 +13,6 @@
 See the License for the specific language governing permissions and
 limitations under the License.
 """
-import sys
-
 import requests
 
 from pynetbox.core.query import Request
@@ -22,7 +20,7 @@
 from pynetbox.core.response import Record
 
 
-class Api(object):
+class Api:
     """The API object is the point of entry to pynetbox.
 
     After instantiating the Api() with the appropriate named arguments
@@ -90,10 +88,6 @@
         self.base_url = base_url
         self.session_key = None
         self.http_session = requests.Session()
-        if threading and sys.version_info.major == 2:
-            raise NotImplementedError(
-                "Threaded pynetbox calls not supported                 in 
Python 2"
-            )
         self.threading = threading
 
         if self.private_key_file:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/pynetbox/core/app.py 
new/pynetbox-7.0.0/pynetbox/core/app.py
--- old/pynetbox-6.6.2/pynetbox/core/app.py     2022-04-18 05:28:33.000000000 
+0200
+++ new/pynetbox-7.0.0/pynetbox/core/app.py     2022-12-09 18:53:22.000000000 
+0100
@@ -26,7 +26,7 @@
 )
 
 
-class App(object):
+class App:
     """Represents apps in NetBox.
 
     Calls to attributes are returned as Endpoint objects.
@@ -157,7 +157,7 @@
         return config
 
 
-class PluginsApp(object):
+class PluginsApp:
     """
     Basically valid plugins api could be handled by same App class,
     but you need to add plugins to request url path.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/pynetbox/core/endpoint.py 
new/pynetbox-7.0.0/pynetbox/core/endpoint.py
--- old/pynetbox-6.6.2/pynetbox/core/endpoint.py        2022-04-18 
05:28:33.000000000 +0200
+++ new/pynetbox-7.0.0/pynetbox/core/endpoint.py        2022-12-09 
18:53:22.000000000 +0100
@@ -19,7 +19,7 @@
 RESERVED_KWARGS = ()
 
 
-class Endpoint(object):
+class Endpoint:
     """Represent actions available on endpoints in the Netbox API.
 
     Takes ``name`` and ``app`` passed from App() and builds the correct
@@ -338,19 +338,25 @@
 
         Updating objects on the `devices` endpoint:
 
-        >>> device = netbox.dcim.devices.update([
+        >>> devices = nb.dcim.devices.update([
         ...    {'id': 1, 'name': 'test'},
         ...    {'id': 2, 'name': 'test2'},
         ... ])
-        >>> True
+        >>> devices
+        [test2, test]
+        >>>
 
         Use bulk update by passing a list of Records:
 
-        >>> devices = nb.dcim.devices.all()
+        >>> devices = list(nb.dcim.devices.filter())
+        >>> devices
+        [Device1, Device2, Device3]
         >>> for d in devices:
-        >>>     d.name = d.name+'-test'
+        ...     d.name = d.name+'-test'
+        ...
         >>> nb.dcim.devices.update(devices)
-        >>> True
+        [Device1-test, Device2-test, Device3-test]
+        >>>
         """
         series = []
         if not isinstance(objects, list):
@@ -433,7 +439,7 @@
                 cleaned_ids.append(o.id)
             else:
                 raise ValueError(
-                    "Invalid object in list of " "objects to delete: " + 
str(type(o))
+                    "Invalid object in list of objects to delete: " + 
str(type(o))
                 )
 
         req = Request(
@@ -546,7 +552,7 @@
         return ret.get_count()
 
 
-class DetailEndpoint(object):
+class DetailEndpoint:
     """Enables read/write operations on detail endpoints.
 
     Endpoints like ``available-ips`` that are detail routes off
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/pynetbox/core/query.py 
new/pynetbox-7.0.0/pynetbox/core/query.py
--- old/pynetbox-6.6.2/pynetbox/core/query.py   2022-04-18 05:28:33.000000000 
+0200
+++ new/pynetbox-7.0.0/pynetbox/core/query.py   2022-12-09 18:53:22.000000000 
+0100
@@ -13,12 +13,9 @@
 See the License for the specific language governing permissions and
 limitations under the License.
 """
-try:
-    import concurrent.futures as cf
-except ImportError:
-    pass
+import concurrent.futures as cf
 import json
-from six.moves.urllib.parse import urlencode
+from urllib.parse import urlencode
 
 
 def calc_pages(limit, count):
@@ -60,7 +57,7 @@
                     )
                 )
 
-        super(RequestError, self).__init__(req)
+        super().__init__(self.message)
         self.req = req
         self.request_body = req.request.body
         self.base = req.url
@@ -79,7 +76,7 @@
     """
 
     def __init__(self, req):
-        super(AllocationError, self).__init__(req)
+        super().__init__(req)
         self.req = req
         self.request_body = req.request.body
         self.base = req.url
@@ -98,7 +95,7 @@
     """
 
     def __init__(self, req):
-        super(ContentError, self).__init__(req)
+        super().__init__(req)
         self.req = req
         self.request_body = req.request.body
         self.base = req.url
@@ -110,7 +107,7 @@
         return self.error
 
 
-class Request(object):
+class Request:
     """Creates requests to the Netbox API
 
     Responsible for building the url and making the HTTP(S) requests to
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/pynetbox/core/response.py 
new/pynetbox-7.0.0/pynetbox/core/response.py
--- old/pynetbox-6.6.2/pynetbox/core/response.py        2022-04-18 
05:28:33.000000000 +0200
+++ new/pynetbox-7.0.0/pynetbox/core/response.py        2022-12-09 
18:53:22.000000000 +0100
@@ -17,8 +17,8 @@
 from collections import OrderedDict
 
 import pynetbox.core.app
-from six.moves.urllib.parse import urlsplit
-from pynetbox.core.query import Request, RequestError
+from urllib.parse import urlsplit
+from pynetbox.core.query import Request
 from pynetbox.core.util import Hashabledict
 
 
@@ -63,14 +63,14 @@
     }
 
 
-class JsonField(object):
+class JsonField:
     """Explicit field type for values that are not to be converted
     to a Record object"""
 
     _json_field = True
 
 
-class RecordSet(object):
+class RecordSet:
     """Iterator containing Record objects.
 
     Returned by :py:meth:`.Endpoint.all()` and :py:meth:`.Endpoint.filter()` 
methods.
@@ -172,7 +172,7 @@
         return self.endpoint.delete(self)
 
 
-class Record(object):
+class Record:
     """Create Python objects from NetBox API responses.
 
     Creates an object from a NetBox response passed as ``values``.
@@ -354,6 +354,22 @@
         values within.
         """
 
+        def generic_list_parser(key_name, list_item):
+            from pynetbox.models.mapper import CONTENT_TYPE_MAPPER
+
+            if (
+                isinstance(list_item, dict)
+                and "object_type" in list_item
+                and "object" in list_item
+            ):
+                lookup = list_item["object_type"]
+                model = None
+                model = CONTENT_TYPE_MAPPER.get(lookup)
+                if model:
+                    return model(list_item["object"], self.api, self.endpoint)
+
+            return list_item
+
         def list_parser(key_name, list_item):
             if isinstance(list_item, dict):
                 lookup = getattr(self.__class__, key_name, None)
@@ -364,6 +380,7 @@
                 else:
                     model = lookup[0]
                     return model(list_item, self.api, self.endpoint)
+
             return list_item
 
         for k, v in values.items():
@@ -382,8 +399,13 @@
                 self._add_cache((k, v))
 
             elif isinstance(v, list):
-                v = [list_parser(k, i) for i in v]
-                to_cache = list(v)
+                # check if GFK
+                if len(v) and isinstance(v[0], dict) and "object_type" in v[0]:
+                    v = [generic_list_parser(k, i) for i in v]
+                    to_cache = list(v)
+                else:
+                    v = [list_parser(k, i) for i in v]
+                    to_cache = list(v)
                 self._add_cache((k, to_cache))
 
             else:
@@ -399,8 +421,8 @@
             url_path = url_path[len(extra_path) :]
         split_url_path = url_path.split("/")
         if split_url_path[2] == "plugins":
-            # Skip plugins from the path
-            app, name = split_url_path[3:5]
+            app = "plugins/{}".format(split_url_path[3])
+            name = split_url_path[4]
         else:
             app, name = split_url_path[2:4]
         return getattr(pynetbox.core.app.App(self.api, app), name)
@@ -496,7 +518,7 @@
 
         >>> x = nb.dcim.devices.get(name='test1-a3-tor1b')
         >>> x.serial
-        u''
+        ''
         >>> x.serial = '1234'
         >>> x.updates()
         {'serial': '1234'}
@@ -520,7 +542,7 @@
 
         >>> x = nb.dcim.devices.get(name='test1-a3-tor1b')
         >>> x.serial
-        u''
+        ''
         >>> x.serial = '1234'
         >>> x.save()
         True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/pynetbox/models/dcim.py 
new/pynetbox-7.0.0/pynetbox/models/dcim.py
--- old/pynetbox-6.6.2/pynetbox/models/dcim.py  2022-04-18 05:28:33.000000000 
+0200
+++ new/pynetbox-7.0.0/pynetbox/models/dcim.py  2022-12-09 18:53:22.000000000 
+0100
@@ -13,7 +13,7 @@
 See the License for the specific language governing permissions and
 limitations under the License.
 """
-from six.moves.urllib.parse import urlsplit
+from urllib.parse import urlsplit
 
 from pynetbox.core.query import Request
 from pynetbox.core.response import Record, JsonField
@@ -23,6 +23,35 @@
 
 
 class TraceableRecord(Record):
+    def _get_obj_class(self, url):
+        uri_to_obj_class_map = {
+            "dcim/cables": Cables,
+            "dcim/front-ports": FrontPorts,
+            "dcim/interfaces": Interfaces,
+            "dcim/rear-ports": RearPorts,
+        }
+
+        # the url for this item will be something like:
+        #     https://netbox/api/dcim/rear-ports/12761/
+        # TODO: Move this to a more general function.
+        app_endpoint = "/".join(
+            urlsplit(url).path[len(urlsplit(self.api.base_url).path) 
:].split("/")[1:3]
+        )
+        return uri_to_obj_class_map.get(
+            app_endpoint,
+            Record,
+        )
+
+    def _build_termination_data(self, termination_list):
+        terminations_data = []
+        for hop_item_data in termination_list:
+            return_obj_class = self._get_obj_class(hop_item_data["url"])
+            terminations_data.append(
+                return_obj_class(hop_item_data, self.endpoint.api, 
self.endpoint)
+            )
+
+        return terminations_data
+
     def trace(self):
         req = Request(
             key=str(self.id) + "/trace",
@@ -31,38 +60,18 @@
             session_key=self.api.session_key,
             http_session=self.api.http_session,
         ).get()
-        uri_to_obj_class_map = {
-            "dcim/cables": Cables,
-            "dcim/front-ports": FrontPorts,
-            "dcim/interfaces": Interfaces,
-            "dcim/rear-ports": RearPorts,
-        }
+
         ret = []
-        for (termination_a_data, cable_data, termination_b_data) in req:
-            this_hop_ret = []
-            for hop_item_data in (termination_a_data, cable_data, 
termination_b_data):
-                # if not fully terminated then some items will be None
-                if not hop_item_data:
-                    this_hop_ret.append(hop_item_data)
-                    continue
-
-                # the url for this item will be something like:
-                #     https://netbox/api/dcim/rear-ports/12761/
-                # TODO: Move this to a more general function.
-                app_endpoint = "/".join(
-                    urlsplit(hop_item_data["url"])
-                    .path[len(urlsplit(self.api.base_url).path) :]
-                    .split("/")[1:3]
-                )
-                return_obj_class = uri_to_obj_class_map.get(
-                    app_endpoint,
-                    Record,
-                )
-                this_hop_ret.append(
-                    return_obj_class(hop_item_data, self.endpoint.api, 
self.endpoint)
+        for (a_terminations_data, cable_data, b_terminations_data) in req:
+            ret.append(self._build_termination_data(a_terminations_data))
+            if not cable_data:
+                ret.append(cable_data)
+            else:
+                return_obj_class = self._get_obj_class(cable_data["url"])
+                ret.append(
+                    return_obj_class(cable_data, self.endpoint.api, 
self.endpoint)
                 )
-
-            ret.append(this_hop_ret)
+            ret.append(self._build_termination_data(b_terminations_data))
 
         return ret
 
@@ -225,14 +234,6 @@
 
 class Cables(Record):
     def __str__(self):
-        if all(
-            [
-                isinstance(i, Termination)
-                for i in (self.termination_a, self.termination_b)
-            ]
-        ):
-            return "{} <> {}".format(self.termination_a, self.termination_b)
+        if len(self.a_terminations) == 1 and len(self.b_terminations) == 1:
+            return "{} <> {}".format(self.a_terminations[0], 
self.b_terminations[0])
         return "Cable #{}".format(self.id)
-
-    termination_a = Termination
-    termination_b = Termination
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/pynetbox/models/ipam.py 
new/pynetbox-7.0.0/pynetbox/models/ipam.py
--- old/pynetbox-6.6.2/pynetbox/models/ipam.py  2022-04-18 05:28:33.000000000 
+0200
+++ new/pynetbox-7.0.0/pynetbox/models/ipam.py  2022-12-09 18:53:22.000000000 
+0100
@@ -22,6 +22,42 @@
         return str(self.address)
 
 
+class IpRanges(Record):
+    def __str__(self):
+        return str(self.display)
+
+    @property
+    def available_ips(self):
+        """Represents the ``available-ips`` detail endpoint.
+
+        Returns a DetailEndpoint object that is the interface for
+        viewing and creating IP addresses inside an ip range .
+
+        :returns: :py:class:`.DetailEndpoint`
+
+        :Examples:
+
+        >>> ip_range = nb.ipam.ip_ranges.get(24)
+        >>> ip_range.available_ips.list()
+        [10.0.0.1/24, 10.0.0.2/24, 10.0.0.3/24, 10.0.0.4/24, 10.0.0.5/24, ...]
+
+        To create a single IP:
+
+        >>> ip_range = nb.ipam.ip_ranges.get(24)
+        >>> ip_range.available_ips.create()
+        10.0.0.1/24
+
+
+        To create multiple IPs:
+
+        >>> ip_range = nb.ipam.ip_ranges.get(24)
+        >>> create = ip_range.available_ips.create([{} for i in range(2)])
+        >>> create
+        [10.0.0.2/24, 10.0.0.3/24]
+        """
+        return DetailEndpoint(self, "available-ips", custom_return=IpAddresses)
+
+
 class Prefixes(Record):
     def __str__(self):
         return str(self.prefix)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/pynetbox/models/mapper.py 
new/pynetbox-7.0.0/pynetbox/models/mapper.py
--- old/pynetbox-6.6.2/pynetbox/models/mapper.py        1970-01-01 
01:00:00.000000000 +0100
+++ new/pynetbox-7.0.0/pynetbox/models/mapper.py        2022-12-09 
18:53:22.000000000 +0100
@@ -0,0 +1,118 @@
+from .circuits import Circuits, CircuitTerminations
+from .dcim import (
+    DeviceTypes,
+    Devices,
+    Interfaces,
+    PowerOutlets,
+    PowerPorts,
+    ConsolePorts,
+    ConsoleServerPorts,
+    RackReservations,
+    VirtualChassis,
+    FrontPorts,
+    RearPorts,
+    Racks,
+    Termination,
+    Cables,
+)
+from .ipam import (
+    IpAddresses,
+    Prefixes,
+    Aggregates,
+    Vlans,
+    VlanGroups,
+)
+from .virtualization import VirtualMachines
+from .wireless import WirelessLans
+
+
+CONTENT_TYPE_MAPPER = {
+    "circuits.circuit": Circuits,
+    "circuits.circuittermination": CircuitTerminations,
+    "dcim.cable": Cables,
+    "dcim.cablepath": None,
+    "dcim.cabletermination": Termination,
+    "dcim.consoleport": ConsolePorts,
+    "dcim.consoleporttemplate": None,
+    "dcim.consoleserverport": ConsoleServerPorts,
+    "dcim.consoleserverporttemplate": None,
+    "dcim.device": Devices,
+    "dcim.devicebay": None,
+    "dcim.devicebaytemplate": None,
+    "dcim.devicerole": None,
+    "dcim.devicetype": DeviceTypes,
+    "dcim.frontport": FrontPorts,
+    "dcim.frontporttemplate": None,
+    "dcim.interface": Interfaces,
+    "dcim.interfacetemplate": None,
+    "dcim.inventoryitem": None,
+    "dcim.inventoryitemrole": None,
+    "dcim.inventoryitemtemplate": None,
+    "dcim.location": None,
+    "dcim.manufacturer": None,
+    "dcim.module": None,
+    "dcim.modulebay": None,
+    "dcim.modulebaytemplate": None,
+    "dcim.moduletype": None,
+    "dcim.platform": None,
+    "dcim.powerfeed": None,
+    "dcim.poweroutlet": PowerOutlets,
+    "dcim.poweroutlettemplate": None,
+    "dcim.powerpanel": None,
+    "dcim.powerport": ConsolePorts,
+    "dcim.powerporttemplate": None,
+    "dcim.rack": Racks,
+    "dcim.rackreservation": RackReservations,
+    "dcim.rackrole": None,
+    "dcim.rearport": RearPorts,
+    "dcim.rearporttemplate": None,
+    "dcim.region": None,
+    "dcim.site": None,
+    "dcim.sitegroup": None,
+    "dcim.virtualchassis": VirtualChassis,
+    "extras.configcontext": None,
+    "extras.configrevision": None,
+    "extras.customfield": None,
+    "extras.customlink": None,
+    "extras.exporttemplate": None,
+    "extras.imageattachment": None,
+    "extras.jobresult": None,
+    "extras.journalentry": None,
+    "extras.objectchange": None,
+    "extras.report": None,
+    "extras.script": None,
+    "extras.tag": None,
+    "extras.taggeditem": None,
+    "extras.webhook": None,
+    "ipam.aggregate": Aggregates,
+    "ipam.ASN": None,
+    "ipam.FHRPgroup": None,
+    "ipam.FHRPgroupassignment": None,
+    "ipam.IPaddress": IpAddresses,
+    "ipam.IPrange": None,
+    "ipam.L2VPN": None,
+    "ipam.L2VPNtermination": None,
+    "ipam.prefix": Prefixes,
+    "ipam.RIR": None,
+    "ipam.role": None,
+    "ipam.routetarget": None,
+    "ipam.service": None,
+    "ipam.servicetemplate": None,
+    "ipam.VLAN": Vlans,
+    "ipam.VLANgroup": VlanGroups,
+    "ipam.VRF": None,
+    "tenancy.contact": None,
+    "tenancy.contactassignment": None,
+    "tenancy.contactgroup": None,
+    "tenancy.contactrole": None,
+    "tenancy.tenant": None,
+    "tenancy.tenantgroup": None,
+    "virtualization.cluster": None,
+    "virtualization.clustergroup": None,
+    "virtualization.clustertype": None,
+    "virtualization.interface": None,
+    "virtualization.virtualmachine": VirtualMachines,
+    "wireless.WirelessLAN": WirelessLans,
+    "wireless.WirelessLANGroup": None,
+    "wireless.wirelesslink": None,
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/pynetbox.egg-info/PKG-INFO 
new/pynetbox-7.0.0/pynetbox.egg-info/PKG-INFO
--- old/pynetbox-6.6.2/pynetbox.egg-info/PKG-INFO       2022-04-18 
05:28:48.000000000 +0200
+++ new/pynetbox-7.0.0/pynetbox.egg-info/PKG-INFO       2022-12-09 
18:53:33.000000000 +0100
@@ -1,20 +1,16 @@
 Metadata-Version: 2.1
 Name: pynetbox
-Version: 6.6.2
+Version: 7.0.0
 Summary: NetBox API client library
-Home-page: https://github.com/digitalocean/pynetbox
+Home-page: https://github.com/netbox-community/netbox
 Author: Zach Moody
 Author-email: [email protected]
 License: Apache2
 Keywords: netbox
-Platform: UNKNOWN
 Classifier: Intended Audience :: Developers
 Classifier: Development Status :: 5 - Production/Stable
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
 License-File: LICENSE
-
-UNKNOWN
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/pynetbox.egg-info/SOURCES.txt 
new/pynetbox-7.0.0/pynetbox.egg-info/SOURCES.txt
--- old/pynetbox-6.6.2/pynetbox.egg-info/SOURCES.txt    2022-04-18 
05:28:48.000000000 +0200
+++ new/pynetbox-7.0.0/pynetbox.egg-info/SOURCES.txt    2022-12-09 
18:53:33.000000000 +0100
@@ -34,6 +34,7 @@
 pynetbox/models/dcim.py
 pynetbox/models/extras.py
 pynetbox/models/ipam.py
+pynetbox/models/mapper.py
 pynetbox/models/users.py
 pynetbox/models/virtualization.py
 pynetbox/models/wireless.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/pynetbox.egg-info/requires.txt 
new/pynetbox-7.0.0/pynetbox.egg-info/requires.txt
--- old/pynetbox-6.6.2/pynetbox.egg-info/requires.txt   2022-04-18 
05:28:48.000000000 +0200
+++ new/pynetbox-7.0.0/pynetbox.egg-info/requires.txt   2022-12-09 
18:53:33.000000000 +0100
@@ -1,2 +1 @@
 requests<3.0,>=2.20.0
-six==1.*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/requirements-dev.txt 
new/pynetbox-7.0.0/requirements-dev.txt
--- old/pynetbox-6.6.2/requirements-dev.txt     2022-04-18 05:28:33.000000000 
+0200
+++ new/pynetbox-7.0.0/requirements-dev.txt     2022-12-09 18:53:22.000000000 
+0100
@@ -1,3 +1,4 @@
-black~=22.0
-pytest==6.2.*
-pytest-docker==0.10.*
+black~=22.10
+pytest==7.1.*
+pytest-docker==1.0.*
+PyYAML==6.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/requirements.txt 
new/pynetbox-7.0.0/requirements.txt
--- old/pynetbox-6.6.2/requirements.txt 2022-04-18 05:28:33.000000000 +0200
+++ new/pynetbox-7.0.0/requirements.txt 2022-12-09 18:53:22.000000000 +0100
@@ -1,2 +1 @@
 requests>=2.20.0,<3.0
-six==1.*
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/setup.py new/pynetbox-7.0.0/setup.py
--- old/pynetbox-6.6.2/setup.py 2022-04-18 05:28:33.000000000 +0200
+++ new/pynetbox-7.0.0/setup.py 2022-12-09 18:53:22.000000000 +0100
@@ -3,7 +3,7 @@
 setup(
     name="pynetbox",
     description="NetBox API client library",
-    url="https://github.com/digitalocean/pynetbox";,
+    url="https://github.com/netbox-community/netbox";,
     author="Zach Moody",
     author_email="[email protected]",
     license="Apache2",
@@ -13,16 +13,15 @@
     packages=find_packages(exclude=["tests", "tests.*"]),
     install_requires=[
         "requests>=2.20.0,<3.0",
-        "six==1.*",
     ],
     zip_safe=False,
     keywords=["netbox"],
     classifiers=[
         "Intended Audience :: Developers",
         "Development Status :: 5 - Production/Stable",
-        "Programming Language :: Python :: 2",
-        "Programming Language :: Python :: 2.7",
         "Programming Language :: Python :: 3",
-        "Programming Language :: Python :: 3.6",
+        "Programming Language :: Python :: 3.8",
+        "Programming Language :: Python :: 3.9",
+        "Programming Language :: Python :: 3.10",
     ],
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/conftest.py 
new/pynetbox-7.0.0/tests/conftest.py
--- old/pynetbox-6.6.2/tests/conftest.py        2022-04-18 05:28:33.000000000 
+0200
+++ new/pynetbox-7.0.0/tests/conftest.py        2022-12-09 18:53:22.000000000 
+0100
@@ -4,7 +4,7 @@
 from packaging import version
 
 
-DEFAULT_NETBOX_VERSIONS = "2.11, 3.0, 3.1"
+DEFAULT_NETBOX_VERSIONS = "3.3"
 
 
 def pytest_addoption(parser):
@@ -58,7 +58,7 @@
 
         url_parse = parse.urlparse(config.option.url_override)
 
-        class DockerServicesMock(object):
+        class DockerServicesMock:
             def __init__(self, ports):
                 self.ports = ports
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/integration/conftest.py 
new/pynetbox-7.0.0/tests/integration/conftest.py
--- old/pynetbox-6.6.2/tests/integration/conftest.py    2022-04-18 
05:28:33.000000000 +0200
+++ new/pynetbox-7.0.0/tests/integration/conftest.py    2022-12-09 
18:53:22.000000000 +0100
@@ -28,12 +28,8 @@
     """
     major, minor = netbox_version.major, netbox_version.minor
 
-    if (major, minor) == (3, 1):
-        tag = "1.5.1"
-    elif (major, minor) == (3, 0):
-        tag = "1.5.1"
-    elif (major, minor) == (2, 11):
-        tag = "1.2.0"
+    if (major, minor) == (3, 3):
+        tag = "2.2.0"
     else:
         raise NotImplementedError(
             "Version %s is not currently supported" % netbox_version
@@ -82,6 +78,7 @@
     netbox_versions_by_repo_dirpaths = {}
     for netbox_version in pytestconfig.option.netbox_versions:
         repo_version_tag = 
get_netbox_docker_version_tag(netbox_version=netbox_version)
+        print("top: ", git_toplevel)
         repo_fpath = os.path.join(
             git_toplevel, ".netbox-docker-%s" % str(repo_version_tag)
         )
@@ -384,14 +381,10 @@
     """
     netbox_integration_version = request.param
 
-    if netbox_integration_version >= version.Version("2.10"):
-        netbox_service_name = "netbox_v%s_netbox" % str(
-            netbox_integration_version
-        ).replace(".", "_")
-    else:
-        netbox_service_name = "netbox_v%s_nginx" % str(
-            netbox_integration_version
-        ).replace(".", "_")
+    netbox_service_name = "netbox_v%s_netbox" % 
str(netbox_integration_version).replace(
+        ".", "_"
+    )
+
     netbox_service_port = 8080
     try:
         # `port_for` takes a container port and returns the corresponding host 
port
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/integration/test_dcim.py 
new/pynetbox-7.0.0/tests/integration/test_dcim.py
--- old/pynetbox-6.6.2/tests/integration/test_dcim.py   2022-04-18 
05:28:33.000000000 +0200
+++ new/pynetbox-7.0.0/tests/integration/test_dcim.py   2022-12-09 
18:53:22.000000000 +0100
@@ -207,10 +207,12 @@
     @pytest.fixture(scope="class")
     def power_cable(self, api, power_outlet, power_port):
         cable = api.dcim.cables.create(
-            termination_a_id=power_port.id,
-            termination_a_type="dcim.powerport",
-            termination_b_id=power_outlet.id,
-            termination_b_type="dcim.poweroutlet",
+            a_terminations=[
+                {"object_type": "dcim.powerport", "object_id": power_port.id},
+            ],
+            b_terminations=[
+                {"object_type": "dcim.poweroutlet", "object_id": 
power_outlet.id},
+            ],
         )
         yield cable
         cable.delete()
@@ -247,10 +249,15 @@
     @pytest.fixture(scope="class")
     def console_cable(self, api, console_port, console_server_port):
         ret = api.dcim.cables.create(
-            termination_a_id=console_port.id,
-            termination_a_type="dcim.consoleport",
-            termination_b_id=console_server_port.id,
-            termination_b_type="dcim.consoleserverport",
+            a_terminations=[
+                {"object_type": "dcim.consoleport", "object_id": 
console_port.id},
+            ],
+            b_terminations=[
+                {
+                    "object_type": "dcim.consoleserverport",
+                    "object_id": console_server_port.id,
+                },
+            ],
         )
         yield ret
         ret.delete()
@@ -291,10 +298,12 @@
     @pytest.fixture(scope="class")
     def interface_cable(self, api, interface_a, interface_b):
         ret = api.dcim.cables.create(
-            termination_a_id=interface_a.id,
-            termination_a_type="dcim.interface",
-            termination_b_id=interface_b.id,
-            termination_b_type="dcim.interface",
+            a_terminations=[
+                {"object_type": "dcim.interface", "object_id": interface_a.id},
+            ],
+            b_terminations=[
+                {"object_type": "dcim.interface", "object_id": interface_b.id},
+            ],
         )
         yield ret
         ret.delete()
@@ -313,4 +322,4 @@
         test = interface_a.trace()
         assert test
         assert test[0][0].name == "Ethernet1"
-        assert test[0][2].name == "Ethernet1"
+        assert test[2][0].name == "Ethernet1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/test_api.py 
new/pynetbox-7.0.0/tests/test_api.py
--- old/pynetbox-6.6.2/tests/test_api.py        2022-04-18 05:28:33.000000000 
+0200
+++ new/pynetbox-7.0.0/tests/test_api.py        2022-12-09 18:53:22.000000000 
+0100
@@ -1,13 +1,9 @@
 import unittest
-import six
+from unittest.mock import patch
 
 import pynetbox
 from .util import Response
 
-if six.PY3:
-    from unittest.mock import patch
-else:
-    from mock import patch
 
 host = "http://localhost:8000";
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/test_app.py 
new/pynetbox-7.0.0/tests/test_app.py
--- old/pynetbox-6.6.2/tests/test_app.py        2022-04-18 05:28:33.000000000 
+0200
+++ new/pynetbox-7.0.0/tests/test_app.py        2022-12-09 18:53:22.000000000 
+0100
@@ -1,13 +1,8 @@
 import unittest
-
-import six
+from unittest.mock import patch
 
 import pynetbox
 
-if six.PY3:
-    from unittest.mock import patch
-else:
-    from mock import patch
 
 host = "http://localhost:8000";
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/test_circuits.py 
new/pynetbox-7.0.0/tests/test_circuits.py
--- old/pynetbox-6.6.2/tests/test_circuits.py   2022-04-18 05:28:33.000000000 
+0200
+++ new/pynetbox-7.0.0/tests/test_circuits.py   2022-12-09 18:53:22.000000000 
+0100
@@ -1,13 +1,9 @@
 import unittest
-import six
+from unittest.mock import patch
 
 from .util import Response
 import pynetbox
 
-if six.PY3:
-    from unittest.mock import patch
-else:
-    from mock import patch
 
 api = pynetbox.api(
     "http://localhost:8000";,
@@ -18,7 +14,7 @@
 HEADERS = {"accept": "application/json;"}
 
 
-class Generic(object):
+class Generic:
     class Tests(unittest.TestCase):
         name = ""
         ret = pynetbox.core.response.Record
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/test_tenancy.py 
new/pynetbox-7.0.0/tests/test_tenancy.py
--- old/pynetbox-6.6.2/tests/test_tenancy.py    2022-04-18 05:28:33.000000000 
+0200
+++ new/pynetbox-7.0.0/tests/test_tenancy.py    2022-12-09 18:53:22.000000000 
+0100
@@ -1,14 +1,9 @@
 import unittest
-import six
+from unittest.mock import patch
 
 import pynetbox
 from .util import Response
 
-if six.PY3:
-    from unittest.mock import patch
-else:
-    from mock import patch
-
 
 api = pynetbox.api(
     "http://localhost:8000";,
@@ -19,7 +14,7 @@
 HEADERS = {"accept": "application/json;"}
 
 
-class Generic(object):
+class Generic:
     class Tests(unittest.TestCase):
         name = ""
         ret = pynetbox.core.response.Record
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/test_users.py 
new/pynetbox-7.0.0/tests/test_users.py
--- old/pynetbox-6.6.2/tests/test_users.py      2022-04-18 05:28:33.000000000 
+0200
+++ new/pynetbox-7.0.0/tests/test_users.py      2022-12-09 18:53:22.000000000 
+0100
@@ -1,14 +1,9 @@
 import unittest
-import six
+from unittest.mock import patch
 
 import pynetbox
 from .util import Response
 
-if six.PY3:
-    from unittest.mock import patch
-else:
-    from mock import patch
-
 
 api = pynetbox.api(
     "http://localhost:8000";,
@@ -19,7 +14,7 @@
 HEADERS = {"accept": "application/json;"}
 
 
-class Generic(object):
+class Generic:
     class Tests(unittest.TestCase):
         name = ""
         ret = pynetbox.core.response.Record
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/test_virtualization.py 
new/pynetbox-7.0.0/tests/test_virtualization.py
--- old/pynetbox-6.6.2/tests/test_virtualization.py     2022-04-18 
05:28:33.000000000 +0200
+++ new/pynetbox-7.0.0/tests/test_virtualization.py     2022-12-09 
18:53:22.000000000 +0100
@@ -1,14 +1,9 @@
 import unittest
-import six
+from unittest.mock import patch
 
 from .util import Response
 import pynetbox
 
-if six.PY3:
-    from unittest.mock import patch
-else:
-    from mock import patch
-
 
 api = pynetbox.api(
     "http://localhost:8000";,
@@ -19,7 +14,7 @@
 HEADERS = {"accept": "application/json;"}
 
 
-class Generic(object):
+class Generic:
     class Tests(unittest.TestCase):
         name = ""
         ret = pynetbox.core.response.Record
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/test_wireless.py 
new/pynetbox-7.0.0/tests/test_wireless.py
--- old/pynetbox-6.6.2/tests/test_wireless.py   2022-04-18 05:28:33.000000000 
+0200
+++ new/pynetbox-7.0.0/tests/test_wireless.py   2022-12-09 18:53:22.000000000 
+0100
@@ -1,14 +1,9 @@
 import unittest
-import six
+from unittest.mock import patch
 
 import pynetbox
 from .util import Response
 
-if six.PY3:
-    from unittest.mock import patch
-else:
-    from mock import patch
-
 
 api = pynetbox.api("http://localhost:8000";)
 
@@ -17,7 +12,7 @@
 HEADERS = {"accept": "application/json;"}
 
 
-class Generic(object):
+class Generic:
     class Tests(unittest.TestCase):
         name = ""
         ret = pynetbox.core.response.Record
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/unit/test_detailendpoint.py 
new/pynetbox-7.0.0/tests/unit/test_detailendpoint.py
--- old/pynetbox-6.6.2/tests/unit/test_detailendpoint.py        2022-04-18 
05:28:33.000000000 +0200
+++ new/pynetbox-7.0.0/tests/unit/test_detailendpoint.py        2022-12-09 
18:53:22.000000000 +0100
@@ -1,20 +1,15 @@
 import unittest
-
-import six
+from unittest.mock import patch
 
 import pynetbox
 
-if six.PY3:
-    from unittest.mock import patch
-else:
-    from mock import patch
-
 
 nb = pynetbox.api("http://localhost:8000";)
 
 
 class DetailEndpointTestCase(unittest.TestCase):
     def test_detail_endpoint_create_single(self):
+        # Prefixes
         with patch(
             "pynetbox.core.query.Request._make_call",
             return_value={"id": 123, "prefix": "1.2.3.0/24"},
@@ -27,8 +22,22 @@
         ):
             ip_obj = prefix_obj.available_ips.create()
             self.assertEqual(ip_obj.address, "1.2.3.1/24")
+        # IP Ranges
+        with patch(
+            "pynetbox.core.query.Request._make_call",
+            return_value={"id": 321, "display": "1.2.4.1-254/24"},
+        ):
+            ip_range_obj = nb.ipam.ip_ranges.get(321)
+            self.assertEqual(ip_range_obj.display, "1.2.4.1-254/24")
+        with patch(
+            "pynetbox.core.query.Request._make_call",
+            return_value={"address": "1.2.4.2/24"},
+        ):
+            ip_obj = ip_range_obj.available_ips.create()
+            self.assertEqual(ip_obj.address, "1.2.4.2/24")
 
     def test_detail_endpoint_create_list(self):
+        # Prefixes
         with patch(
             "pynetbox.core.query.Request._make_call",
             return_value={"id": 123, "prefix": "1.2.3.0/24"},
@@ -42,3 +51,17 @@
             ip_list = prefix_obj.available_ips.create([{} for _ in range(2)])
             self.assertTrue(isinstance(ip_list, list))
             self.assertEqual(len(ip_list), 2)
+        # IP Ranges
+        with patch(
+            "pynetbox.core.query.Request._make_call",
+            return_value={"id": 321, "display": "1.2.4.1-254/24"},
+        ):
+            ip_range_obj = nb.ipam.ip_ranges.get(321)
+            self.assertEqual(ip_range_obj.display, "1.2.4.1-254/24")
+        with patch(
+            "pynetbox.core.query.Request._make_call",
+            return_value=[{"address": "1.2.4.2/24"}, {"address": 
"1.2.4.3/24"}],
+        ):
+            ip_list = ip_range_obj.available_ips.create([{} for _ in range(2)])
+            self.assertTrue(isinstance(ip_list, list))
+            self.assertEqual(len(ip_list), 2)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/unit/test_endpoint.py 
new/pynetbox-7.0.0/tests/unit/test_endpoint.py
--- old/pynetbox-6.6.2/tests/unit/test_endpoint.py      2022-04-18 
05:28:33.000000000 +0200
+++ new/pynetbox-7.0.0/tests/unit/test_endpoint.py      2022-12-09 
18:53:22.000000000 +0100
@@ -1,14 +1,8 @@
 import unittest
-
-import six
+from unittest.mock import patch, Mock
 
 from pynetbox.core.endpoint import Endpoint
 
-if six.PY3:
-    from unittest.mock import patch, Mock, call
-else:
-    from mock import patch, Mock, call
-
 
 class EndPointTestCase(unittest.TestCase):
     def test_filter(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/unit/test_extras.py 
new/pynetbox-7.0.0/tests/unit/test_extras.py
--- old/pynetbox-6.6.2/tests/unit/test_extras.py        2022-04-18 
05:28:33.000000000 +0200
+++ new/pynetbox-7.0.0/tests/unit/test_extras.py        2022-12-09 
18:53:22.000000000 +0100
@@ -1,7 +1,5 @@
 import unittest
 
-import six
-
 from pynetbox.models.extras import ConfigContexts
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/unit/test_query.py 
new/pynetbox-7.0.0/tests/unit/test_query.py
--- old/pynetbox-6.6.2/tests/unit/test_query.py 2022-04-18 05:28:33.000000000 
+0200
+++ new/pynetbox-7.0.0/tests/unit/test_query.py 2022-12-09 18:53:22.000000000 
+0100
@@ -1,14 +1,8 @@
 import unittest
-
-import six
+from unittest.mock import Mock, call
 
 from pynetbox.core.query import Request
 
-if six.PY3:
-    from unittest.mock import Mock, call
-else:
-    from mock import Mock, call
-
 
 class RequestTestCase(unittest.TestCase):
     def test_get_count(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/unit/test_request.py 
new/pynetbox-7.0.0/tests/unit/test_request.py
--- old/pynetbox-6.6.2/tests/unit/test_request.py       2022-04-18 
05:28:33.000000000 +0200
+++ new/pynetbox-7.0.0/tests/unit/test_request.py       2022-12-09 
18:53:22.000000000 +0100
@@ -1,14 +1,8 @@
 import unittest
-
-import six
+from unittest.mock import Mock
 
 from pynetbox.core.query import Request
 
-if six.PY3:
-    from unittest.mock import Mock
-else:
-    from mock import Mock
-
 
 class RequestTestCase(unittest.TestCase):
     def test_get_openapi(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/unit/test_response.py 
new/pynetbox-7.0.0/tests/unit/test_response.py
--- old/pynetbox-6.6.2/tests/unit/test_response.py      2022-04-18 
05:28:33.000000000 +0200
+++ new/pynetbox-7.0.0/tests/unit/test_response.py      2022-12-09 
18:53:22.000000000 +0100
@@ -1,15 +1,9 @@
 import unittest
-
-import six
+from unittest.mock import patch, Mock
 
 from pynetbox.core.response import Record, RecordSet
 from pynetbox.core.endpoint import Endpoint
 
-if six.PY3:
-    from unittest.mock import patch, Mock, call
-else:
-    from mock import patch, Mock, call
-
 
 class RecordTestCase(unittest.TestCase):
     def test_attribute_access(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pynetbox-6.6.2/tests/util.py 
new/pynetbox-7.0.0/tests/util.py
--- old/pynetbox-6.6.2/tests/util.py    2022-04-18 05:28:33.000000000 +0200
+++ new/pynetbox-7.0.0/tests/util.py    2022-12-09 18:53:22.000000000 +0100
@@ -1,7 +1,7 @@
 import json
 
 
-class Response(object):
+class Response:
     def __init__(self, fixture=None, status_code=200, ok=True, content=None):
         self.status_code = status_code
         self.content = json.dumps(content) if content else 
self.load_fixture(fixture)

Reply via email to