]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
Added repr and slots to Json wrappers
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Mon, 11 Jan 2021 14:53:26 +0000 (15:53 +0100)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Tue, 12 Jan 2021 15:14:38 +0000 (16:14 +0100)
psycopg3/psycopg3/types/json.py

index 543a2674ed15528af9cba2b380bd8a7a2af085ce..a058de9424304bd56eaa48e79ae04c6ba7adad52 100644 (file)
@@ -15,20 +15,28 @@ JsonDumpsFunction = Callable[[Any], str]
 
 
 class _JsonWrapper:
+    __slots__ = ("obj", "_dumps")
+
     def __init__(self, obj: Any, dumps: Optional[JsonDumpsFunction] = None):
         self.obj = obj
         self._dumps: JsonDumpsFunction = dumps or json.dumps
 
+    def __repr__(self) -> str:
+        sobj = repr(self.obj)
+        if len(sobj) > 40:
+            sobj = f"{sobj[:35]} ... ({len(sobj)} chars)"
+        return f"{self.__class__.__name__}({sobj})"
+
     def dumps(self) -> str:
         return self._dumps(self.obj)
 
 
 class Json(_JsonWrapper):
-    pass
+    __slots__ = ()
 
 
 class Jsonb(_JsonWrapper):
-    pass
+    __slots__ = ()
 
 
 class _JsonDumper(Dumper):