
    *Jf                         d Z ddlmZmZmZmZmZ ddlmZ erddl	m
Z
  G d de          Z G d d	ee                   Zd
S )z)
The Column object in Cursor.description
    )Any
NamedTupleOptionalSequenceTYPE_CHECKING
attrgetter   )
BaseCursorc                   .    e Zd ZU eed<   eed<   eed<   dS )
ColumnDataftypefmodfsizeN)__name__
__module____qualname__int__annotations__     R/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/psycopg/_column.pyr   r      s+         JJJ
IIIJJJJJr   r   c                      e Zd ZdZdddefdZ ed d                                D                       Zdefd	Z	defd
Z
defdZdedefdZedefd            Zedefd            Zedee         fd            Zedee         fd            Zedee         fd            Zedee         fd            Zedee         fd            ZdS )ColumnpsycopgcursorzBaseCursor[Any, Any]indexc                    |j         }|sJ |                    |          }|r |                    |j                  | _        nd|dz    | _        t          |                    |          |                    |          |                    |                    | _	        |j
        j                            | j	        j                  | _        d S )Ncolumn_r
   )r   r   r   )pgresultfnamedecode	_encoding_namer   r   r   r   _dataadapterstypesget_type)selfr   r   resr!   s        r   __init__zColumn.__init__   s    o


		%   	/f&677DJJ /519..DJ))E""%))E""
 
 


 _*..tz/?@@


r   c              #   4   K   | ]}t          |          V  d S Nr   ).0attrs     r   	<genexpr>zColumn.<genexpr>)   s>         	4     r   z[
            name type_code display_size internal_size precision scale null_ok
            returnc                 R    d| j         d|                                  d| j         dS )Nz<Column z, type: z (oid: z)>)name_type_display	type_coder*   s    r   __repr__zColumn.__repr__0   sO    Fty F F((**F F37>F F F	
r   c                     dS )N   r   r7   s    r   __len__zColumn.__len__6   s    qr   c                    g }|                     | j        r| j        j        nt          | j                             | j        }|| j        }|rQ|                     d|            | j        r|                     d| j                    |                     d           | j        r*| j        | j        j        k    r|                     d           d	                    |          S )N(z, )z[] )
appendr)   r4   strr6   	precisiondisplay_sizescale	array_oidjoin)r*   partsmod1s      r   r5   zColumn._type_display9   s    
KTZ__DN8K8KLLL~<$D 	LLT$$$z 0.$*..///LL: 	$.DJ,@@@LLwwu~~r   c                      t          |t                    r&t           fd j        |         D                       S   j        |                    S )Nc              3   .   K   | ]} |          V  d S r.   r   )r/   getterr*   s     r   r1   z%Column.__getitem__.<locals>.<genexpr>M   s+      GG&GGGGGGr   )
isinstanceslicetuple_attrs)r*   r   s   ` r   __getitem__zColumn.__getitem__K   sV    eU## 	,GGGGDK4FGGGGGG%4;u%d+++r   c                     | j         S )zThe name of the column.)r$   r7   s    r   r4   zColumn.nameQ   s     zr   c                     | j         j        S )zThe numeric OID of the column.)r%   r   r7   s    r   r6   zColumn.type_codeV   s     zr   c                 b    | j         sdS | j         j        dv r| j        j        }|dk    r|dz
  S dS )z6The field size, for :sql:`varchar(n)`, None otherwise.N)varcharcharr      r)   r4   r%   r   r*   r   s     r   rC   zColumn.display_size[   sC     z 	4:?111:?Dqyyaxtr   c                 .    | j         j        }|dk    r|ndS )z=The internal field size for fixed-size types, None otherwise.r   N)r%   r   )r*   r   s     r   internal_sizezColumn.internal_sizeh   s      
 

uu,r   c                     | j         sdS d}| j         j        dk    r| j        j        }|dk    r|dz	  S n%| j         j        |v r| j        j        }|dk    r|dz  S dS )z/The number of digits for fixed precision types.N)timetimetz	timestamptimestamptzintervalnumericr        rW   )r*   dttypesr   s      r   rB   zColumn.precisionn   sz     z 	4L:?i'':?Dqyyrz!  Z_'':?Dqyyf}$tr   c                 h    | j         r*| j         j        dk    r| j        j        dz
  }|dk    r|dz  S dS )z:The number of digits after the decimal point if available.ra   rV   r   rc   NrW   rX   s     r   rD   zColumn.scale   sB     : 	%$*/Y66:?Q&Dqyyf}$tr   c                     dS )zAlways `!None`Nr   r7   s    r   null_okzColumn.null_ok   s	     tr   N)r   r   r   r   r,   rN   splitrO   rA   r8   r;   r5   r   rP   propertyr4   r6   r   rC   rZ   rB   rD   boolrg   r   r   r   r   r      s       JA5 Ac A A A A$ U  	    F
# 
 
 
 
    s    $, , , , , , c    X  3       X  
hsm 
 
 
 X
 -x} - - - X-
 8C=    X$ x}    X $    X  r   r   N)__doc__typingr   r   r   r   r   operatorr	   r   r   r   r   r   r   r   <module>rn      s     F E E E E E E E E E E E E E       #""""""       z z z z zXc] z z z z zr   