mysteriendrama/lib/python3.11/site-packages/psycopg/_enums.py
2023-07-26 21:33:29 +02:00

80 lines
1.6 KiB
Python

"""
Enum values for psycopg
These values are defined by us and are not necessarily dependent on
libpq-defined enums.
"""
# Copyright (C) 2020 The Psycopg Team
from enum import Enum, IntEnum
from selectors import EVENT_READ, EVENT_WRITE
from . import pq
class Wait(IntEnum):
R = EVENT_READ
W = EVENT_WRITE
RW = EVENT_READ | EVENT_WRITE
class Ready(IntEnum):
R = EVENT_READ
W = EVENT_WRITE
RW = EVENT_READ | EVENT_WRITE
class PyFormat(str, Enum):
"""
Enum representing the format wanted for a query argument.
The value `AUTO` allows psycopg to choose the best format for a certain
parameter.
"""
__module__ = "psycopg.adapt"
AUTO = "s"
"""Automatically chosen (``%s`` placeholder)."""
TEXT = "t"
"""Text parameter (``%t`` placeholder)."""
BINARY = "b"
"""Binary parameter (``%b`` placeholder)."""
@classmethod
def from_pq(cls, fmt: pq.Format) -> "PyFormat":
return _pg2py[fmt]
@classmethod
def as_pq(cls, fmt: "PyFormat") -> pq.Format:
return _py2pg[fmt]
class IsolationLevel(IntEnum):
"""
Enum representing the isolation level for a transaction.
"""
__module__ = "psycopg"
READ_UNCOMMITTED = 1
""":sql:`READ UNCOMMITTED` isolation level."""
READ_COMMITTED = 2
""":sql:`READ COMMITTED` isolation level."""
REPEATABLE_READ = 3
""":sql:`REPEATABLE READ` isolation level."""
SERIALIZABLE = 4
""":sql:`SERIALIZABLE` isolation level."""
_py2pg = {
PyFormat.TEXT: pq.Format.TEXT,
PyFormat.BINARY: pq.Format.BINARY,
}
_pg2py = {
pq.Format.TEXT: PyFormat.TEXT,
pq.Format.BINARY: PyFormat.BINARY,
}