]> git.ipfire.org Git - thirdparty/psycopg.git/commitdiff
refactor(column): remove ColumnData internal object
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>
Wed, 8 May 2024 21:57:11 +0000 (23:57 +0200)
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>
Wed, 15 May 2024 15:56:39 +0000 (17:56 +0200)
psycopg/psycopg/_column.py

index 171f3470daddcd14c3c81bf72ae48636018004ba..71e91b87fc65cff388300602a48fcb76f7afe3b9 100644 (file)
@@ -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]: