From: Daniele Varrazzo Date: Wed, 8 May 2024 21:57:11 +0000 (+0200) Subject: refactor(column): remove ColumnData internal object X-Git-Tag: 3.2.0~29^2~4 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=7f99b118e12ec03bc9f731c1ba7efad59565e204;p=thirdparty%2Fpsycopg.git refactor(column): remove ColumnData internal object --- diff --git a/psycopg/psycopg/_column.py b/psycopg/psycopg/_column.py index 171f3470d..71e91b87f 100644 --- a/psycopg/psycopg/_column.py +++ b/psycopg/psycopg/_column.py @@ -4,19 +4,13 @@ The Column object in Cursor.description # Copyright (C) 2020 The Psycopg Team -from typing import Any, NamedTuple, Optional, Sequence, TYPE_CHECKING +from typing import Any, Optional, Sequence, TYPE_CHECKING from operator import attrgetter if TYPE_CHECKING: from ._cursor_base import BaseCursor -class ColumnData(NamedTuple): - ftype: int - fmod: int - fsize: int - - class Column(Sequence[Any]): __module__ = "psycopg" @@ -31,12 +25,10 @@ class Column(Sequence[Any]): # COPY_OUT results have columns but no name self._name = f"column_{index + 1}" - self._data = ColumnData( - ftype=res.ftype(index), - fmod=res.fmod(index), - fsize=res.fsize(index), - ) - self._type = cursor.adapters.types.get(self._data.ftype) + self._ftype = res.ftype(index) + self._type = cursor.adapters.types.get(self._ftype) + self._fmod = res.fmod(index) + self._fsize = res.fsize(index) _attrs = tuple( attrgetter(attr) @@ -60,7 +52,7 @@ class Column(Sequence[Any]): parts = [] parts.append(self._type.name) - mod = self._type.get_modifier(self._data.fmod) + mod = self._type.get_modifier(self._fmod) if mod: parts.append(f"({', '.join(map(str, mod))})") @@ -83,28 +75,28 @@ class Column(Sequence[Any]): @property def type_code(self) -> int: """The numeric OID of the column.""" - return self._data.ftype + return self._ftype @property def display_size(self) -> Optional[int]: """The field size, for :sql:`varchar(n)`, None otherwise.""" - return self._type.get_display_size(self._data.fmod) if self._type else None + return self._type.get_display_size(self._fmod) if self._type else None @property def internal_size(self) -> Optional[int]: """The internal field size for fixed-size types, None otherwise.""" - fsize = self._data.fsize + fsize = self._fsize return fsize if fsize >= 0 else None @property def precision(self) -> Optional[int]: """The number of digits for fixed precision types.""" - return self._type.get_precision(self._data.fmod) if self._type else None + return self._type.get_precision(self._fmod) if self._type else None @property def scale(self) -> Optional[int]: """The number of digits after the decimal point if available.""" - return self._type.get_scale(self._data.fmod) if self._type else None + return self._type.get_scale(self._fmod) if self._type else None @property def null_ok(self) -> Optional[bool]: