
    i                    `    d Z ddlmZ ddlmZmZmZ ddlmZ erddl	m
Z
  G d dee         Zy	)
z)
The Column object in Cursor.description
    )annotations)TYPE_CHECKINGAnySequence
attrgetter   )
BaseCursorc                      e Zd ZdZddZ ed dj                         D              ZddZddZe	dd       Z
ddZe	dd	       Ze	dd
       Ze	dd       Ze	dd       Ze	dd       Ze	dd       Ze	dd       Zy)Columnpsycopgc                   |j                   }|sJ |j                  |      x}r!|j                  |j                        | _        nd|dz    | _        |j                  |      | _        |j                  j                  j                  | j                        | _
        |j                  |      | _        |j                  |      | _        y )Ncolumn_r	   )pgresultfnamedecode	_encoding_nameftype_ftypeadapterstypesget_typefmod_fmodfsize_fsize)selfcursorindexresr   s        o/var/www/html/hwPaymentPortal-be-dev/hw-payment-portal-api/venv/lib/python3.12/site-packages/psycopg/_column.py__init__zColumn.__init__   s    oo
sIIe$$5$f&6&67DJ #519+.DJii&__**..t{{;
XXe_
ii&    c              #  2   K   | ]  }t        |        y wNr   ).0attrs     r#   	<genexpr>zColumn.<genexpr>"   s       	4s   z[
            name type_code display_size internal_size precision scale null_ok
            c                V    d| j                   d| j                   d| j                   dS )Nz<Column z, type: z (oid: z)>)nametype_display	type_coder   s    r#   __repr__zColumn.__repr__)   s6    tyym $''(/?rC	
r%   c                     y)N    r/   s    r#   __len__zColumn.__len__/   s    r%   c                    | j                   st        | j                        S | j                   j                  | j                  | j                        S )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   strr.   get_type_displayr   r/   s    r#   r-   zColumn.type_display2   s<     zzt~~&&zz**t~~DJJ*OOr%   c                     t        |t              r!t         fd j                  |   D              S   j                  |          S )Nc              3  .   K   | ]  } |        y wr'   r3   )r(   getterr   s     r#   r*   z%Column.__getitem__.<locals>.<genexpr>A   s     G&Gs   )
isinstanceslicetuple_attrs)r   r!   s   ` r#   __getitem__zColumn.__getitem__?   s=    eU#GDKK4FGGG%4;;u%d++r%   c                    | j                   S )zThe name of the column.)r   r/   s    r#   r,   zColumn.nameE   s     zzr%   c                    | j                   S )zThe numeric OID of the column.)r   r/   s    r#   r.   zColumn.type_codeJ   s     {{r%   c                h    | j                   r%| j                   j                  | j                        S dS )z;The field size, for string types such as :sql:`varchar(n)`.N)r   get_display_sizer   r/   s    r#   display_sizezColumn.display_sizeO   s(     ;?**tzz**4::6N$Nr%   c                ,    | j                   }|dk\  r|S dS )z=The internal field size for fixed-size types, None otherwise.r   N)r   )r   r   s     r#   internal_sizezColumn.internal_sizeT   s     
u,,r%   c                h    | j                   r%| j                   j                  | j                        S dS )z/The number of digits for fixed precision types.N)r   get_precisionr   r/   s    r#   	precisionzColumn.precisionZ   s(     8<zztzz''

3KtKr%   c                h    | j                   r%| j                   j                  | j                        S dS )z:The number of digits after the decimal point if available.N)r   	get_scaler   r/   s    r#   scalezColumn.scale_   s(     48::tzz##DJJ/G4Gr%   c                     y)zAlways `!None`Nr3   r/   s    r#   null_okzColumn.null_okd   s     r%   N)r    zBaseCursor[Any, Any]r!   int)returnr7   )rQ   rP   )r!   r   rQ   r   )rQ   z
int | None)rQ   zbool | None)__name__
__module____qualname__r$   r>   splitr?   r0   r4   propertyr-   r@   r,   r.   rE   rG   rJ   rM   rO   r3   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   r3   r%   r#   <module>r\      s0    # / / (WXc] Wr%   