cdef object _context
cdef object _connection
cdef PGconn _pgconn
+ cdef impl.Oid _oid
def __init__(self, src: type, context: AdaptContext = None):
self._src = src
@property
def oid(self) -> int:
- return 0
+ # Implicitly initialised to zero
+ # Subclasses may implement __cinit__ to set a per-class value
+ return self._oid
@classmethod
def register(
cdef class IntDumper(CDumper):
- oid = oids.INT8_OID
+
+ def __cinit__(self):
+ self._oid = oids.INT8_OID
+
+ def __init__(self, src: type, context: AdaptContext = None):
+ super().__init__(src, context)
def dump(self, obj) -> bytes:
cdef char buf[22]
cdef class BoolDumper(CDumper):
- oid = oids.BOOL_OID
+ def __cinit__(self):
+ self._oid = oids.BOOL_OID
def dump(self, obj) -> bytes:
# Fast paths, just a pointer comparison
cdef class BytesDumper(CDumper):
cdef Escaping esc
+ def __cinit__(self):
+ self._oid = oids.BYTEA_OID
+
def __init__(self, src: type, context: AdaptContext):
super().__init__(src, context)
self.esc = Escaping(self._pgconn)
- @property
- def oid(self) -> int:
- return oids.BYTEA_OID
-
def dump(self, obj) -> memoryview:
return self.esc.escape_bytea(obj)