
    (ph                    j    S r SSKJr  SSKJrJrJr  SSKJr  \(       a  SSK	J
r
   " S S\\   5      rg	)
z)
The Column object in Cursor.description
    )annotations)AnySequenceTYPE_CHECKING
attrgetter   )
BaseCursorc                     \ rS rSrSrSS jr\" S SR                  5        5       5      rSS jrSS jr	\
SS j5       rSS	 jr\
SS
 j5       r\
SS j5       r\
SS j5       r\
SS j5       r\
SS j5       r\
SS j5       r\
SS j5       rSrg)Column   psycopgc                   UR                   nU(       d   eUR                  U5      nU(       a!  UR                  UR                  5      U l        OSUS-    3U l        UR                  U5      U l        UR                  R                  R                  U R                  5      U l
        UR                  U5      U l        UR                  U5      U l        g )Ncolumn_r	   )pgresultfnamedecode	_encoding_nameftype_ftypeadapterstypesget_typefmod_fmodfsize_fsize)selfcursorindexresr   s        B/var/www/html/venv/lib/python3.13/site-packages/psycopg/_column.py__init__Column.__init__   s    oo
s		% f&6&67DJ #519+.DJii&__**..t{{;
XXe_
ii&    c              #  8   #    U  H  n[        U5      v   M     g 7fNr   ).0attrs     r$   	<genexpr>Column.<genexpr>#   s#      D 	4s   z[
            name type_code display_size internal_size precision scale null_ok
            c                X    SU R                   < SU R                   SU R                   S3$ )Nz<Column z, type: z (oid: z)>)nametype_display	type_coder    s    r$   __repr__Column.__repr__*   s6    tyym $''(/?rC	
r'   c                    g)N    r2   s    r$   __len__Column.__len__0   s    r'   c                    U R                   (       d  [        U R                  5      $ U R                   R                  U R                  U R                  S9$ )zA pretty representation of the column type.

It is composed by the type name, followed by eventual modifiers and
brackets to signify arrays, e.g. :sql:`text`, :sql:`varchar(42)`,
:sql:`date[]`.
)oidr   )r   strr1   get_type_displayr   r2   s    r$   r0   Column.type_display3   s<     zzt~~&&zz**t~~DJJ*OOr'   c                   ^  [        U[        5      (       a"  [        U 4S jT R                  U    5       5      $ T R                  U   " T 5      $ )Nc              3  2   >#    U  H  o" T5      v   M     g 7fr)   r7   )r*   getterr    s     r$   r,   %Column.__getitem__.<locals>.<genexpr>B   s     G4F&4Fs   )
isinstanceslicetuple_attrs)r    r"   s   ` r$   __getitem__Column.__getitem__@   s>    eU##GDKK4FGGG;;u%d++r'   c                    U R                   $ )zThe name of the column.)r   r2   s    r$   r/   Column.nameF   s     zzr'   c                    U R                   $ )zThe numeric OID of the column.)r   r2   s    r$   r1   Column.type_codeK   s     {{r'   c                r    U R                   (       a%  U R                   R                  U R                  5      $ S$ )z;The field size, for string types such as :sql:`varchar(n)`.N)r   get_display_sizer   r2   s    r$   display_sizeColumn.display_sizeP   s(     ;?**tzz**4::6N$Nr'   c                .    U R                   nUS:  a  U$ S$ )z=The internal field size for fixed-size types, None otherwise.r   N)r   )r    r   s     r$   internal_sizeColumn.internal_sizeU   s     
u,,r'   c                r    U R                   (       a%  U R                   R                  U R                  5      $ S$ )z/The number of digits for fixed precision types.N)r   get_precisionr   r2   s    r$   	precisionColumn.precision[   s(     8<zztzz''

3KtKr'   c                r    U R                   (       a%  U R                   R                  U R                  5      $ S$ )z:The number of digits after the decimal point if available.N)r   	get_scaler   r2   s    r$   scaleColumn.scale`   s(     48::tzz##DJJ/G4Gr'   c                    g)zAlways `!None`Nr7   r2   s    r$   null_okColumn.null_oke   s     r'   )r   r   r   r   r   N)r!   zBaseCursor[Any, Any]r"   int)returnr<   )r`   r_   )r"   r   r`   r   )r`   z
int | None)r`   zbool | None)__name__
__module____qualname____firstlineno__r%   rE   splitrF   r3   r8   propertyr0   rG   r/   r1   rO   rR   rV   rZ   r]   __static_attributes__r7   r'   r$   r   r      s    J'    F
 
P 
P,     O O - -
 L L H H  r'   r   N)__doc__
__future__r   typingr   r   r   operatorr   _cursor_baser
   r   r7   r'   r$   <module>rm      s0    # / / (XXc] Xr'   