49 lines
1.1 KiB
Python
49 lines
1.1 KiB
Python
"""
|
|
Adapters for booleans.
|
|
"""
|
|
|
|
# Copyright (C) 2020 The Psycopg Team
|
|
|
|
from .. import postgres
|
|
from ..pq import Format
|
|
from ..abc import AdaptContext
|
|
from ..adapt import Buffer, Dumper, Loader
|
|
|
|
|
|
class BoolDumper(Dumper):
|
|
oid = postgres.types["bool"].oid
|
|
|
|
def dump(self, obj: bool) -> bytes:
|
|
return b"t" if obj else b"f"
|
|
|
|
def quote(self, obj: bool) -> bytes:
|
|
return b"true" if obj else b"false"
|
|
|
|
|
|
class BoolBinaryDumper(Dumper):
|
|
format = Format.BINARY
|
|
oid = postgres.types["bool"].oid
|
|
|
|
def dump(self, obj: bool) -> bytes:
|
|
return b"\x01" if obj else b"\x00"
|
|
|
|
|
|
class BoolLoader(Loader):
|
|
def load(self, data: Buffer) -> bool:
|
|
return data == b"t"
|
|
|
|
|
|
class BoolBinaryLoader(Loader):
|
|
format = Format.BINARY
|
|
|
|
def load(self, data: Buffer) -> bool:
|
|
return data != b"\x00"
|
|
|
|
|
|
def register_default_adapters(context: AdaptContext) -> None:
|
|
adapters = context.adapters
|
|
adapters.register_dumper(bool, BoolDumper)
|
|
adapters.register_dumper(bool, BoolBinaryDumper)
|
|
adapters.register_loader("bool", BoolLoader)
|
|
adapters.register_loader("bool", BoolBinaryLoader)
|