
    R
h                    n    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d	S )
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                                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dS ) ColumnpsycopgcursorBaseCursor[Any, Any]indexintc                   |j         }|sJ |                    |          }|r |                    |j                  | _        nd|dz    | _        |                    |          | _        |j        j        	                    | j                  | _
        |                    |          | _        |                    |          | _        d S )Ncolumn_r	   )pgresultfnamedecode	_encoding_nameftype_ftypeadapterstypesget_typefmod_fmodfsize_fsize)selfr   r   resr   s        Z/var/www/html/01_SiteInternet/03_Maps/venv/lib/python3.11/site-packages/psycopg/_column.py__init__zColumn.__init__   s    o


		%   	/f&677DJJ /519..DJii&&_*..t{;;
XXe__
ii&&    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
            returnstrc                8    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__*   sF    Cty C C'C C04C C C	
r'   c                    dS )N    r3   s    r%   __len__zColumn.__len__0   s    qr'   c                    | j         st          | j                  S | 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   r.   r2   get_type_displayr    r3   s    r%   r1   zColumn.type_display3   s=     z 	't~&&&z**t~DJ*OOOr'   r   c                     t          |t                    r&t           fd j        |         D                       S   j        |                    S )Nc              3  .   K   | ]} |          V  d S r)   r7   )r*   getterr#   s     r%   r,   z%Column.__getitem__.<locals>.<genexpr>B   s+      GG&GGGGGGr'   )
isinstanceslicetuple_attrs)r#   r   s   ` r%   __getitem__zColumn.__getitem__@   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   r3   s    r%   r0   zColumn.nameF   s     zr'   c                    | j         S )zThe numeric OID of the column.)r   r3   s    r%   r2   zColumn.type_codeK   s     {r'   
int | Nonec                R    | j         r| j                             | j                  ndS )z;The field size, for string types such as :sql:`varchar(n)`.N)r   get_display_sizer    r3   s    r%   display_sizezColumn.display_sizeP   s(     ;?*Ntz**4:666$Nr'   c                $    | j         }|dk    r|ndS )z=The internal field size for fixed-size types, None otherwise.r   N)r"   )r#   r!   s     r%   internal_sizezColumn.internal_sizeU   s     

uu,r'   c                R    | j         r| j                             | j                  ndS )z/The number of digits for fixed precision types.N)r   get_precisionr    r3   s    r%   	precisionzColumn.precision[   s(     8<zKtz''
333tKr'   c                R    | j         r| j                             | j                  ndS )z:The number of digits after the decimal point if available.N)r   	get_scaler    r3   s    r%   scalezColumn.scale`   s(     48:Gtz##DJ///4Gr'   bool | Nonec                    dS )zAlways `!None`Nr7   r3   s    r%   null_okzColumn.null_oke   s	     tr'   N)r   r   r   r   )r-   r.   )r-   r   )r   r   r-   r   )r-   rF   )r-   rR   )__name__
__module____qualname__r&   rA   splitrB   r4   r8   propertyr1   rC   r0   r2   rI   rK   rN   rQ   rT   r7   r'   r%   r   r      s       J' ' ' '  U  	    F
 
 
 
    
P 
P 
P X
P, , , ,    X    X O O O XO - - - X-
 L L L XL H H H XH    X  r'   r   N)__doc__
__future__r   typingr   r   r   operatorr   _cursor_baser
   r   r7   r'   r%   <module>r_      s     # " " " " " / / / / / / / / / /       )((((((X X X X XXc] X X X X Xr'   