o
    ƒ¡gj  ã                   @   sZ   d Z ddlmZmZmZmZmZ dadaddd„Z	dd„ Z
ddd	„Zdd
d„Zdd„ ZdS )z>Implementation of the ipaddres-based network types adaptation
é    )Únew_typeÚnew_array_typeÚregister_typeÚregister_adapterÚQuotedStringNc                 C   sR   ddl a tdu rtƒ atD ]}t|| ƒ qt jt jt jt jfD ]}t|t	ƒ qdS )a  
    Register conversion support between `ipaddress` objects and `network types`__.

    :param conn_or_curs: the scope where to register the type casters.
        If `!None` register them globally.

    After the function is called, PostgreSQL :sql:`inet` values will be
    converted into `~ipaddress.IPv4Interface` or `~ipaddress.IPv6Interface`
    objects, :sql:`cidr` values into into `~ipaddress.IPv4Network` or
    `~ipaddress.IPv6Network`.

    .. __: https://www.postgresql.org/docs/current/static/datatype-net-types.html
    r   N)
Ú	ipaddressÚ_castersÚ_make_castersr   ÚIPv4InterfaceÚIPv6InterfaceÚIPv4NetworkÚIPv6Networkr   Úadapt_ipaddress)Úconn_or_cursÚcÚt© r   úh/var/www/primordialfields.com/dashboard_backend/venv/lib/python3.10/site-packages/psycopg2/_ipaddress.pyÚregister_ipaddress%   s   ÿþr   c                  C   s<   t ddtƒ} tdd| ƒ}t ddtƒ}tdd|ƒ}| |||gS )	N)ie  ÚINET)i  zINET[])iŠ  ÚCIDR)i‹  zCIDR[])r   Úcast_interfacer   Úcast_network)ÚinetÚainetÚcidrÚacidrr   r   r   r	   B   s
   r	   c                 C   ó   | d u rd S t  t| ƒ¡S ©N)r   Úip_interfaceÚstr©ÚsÚcurr   r   r   r   L   s   r   c                 C   r   r   )r   Ú
ip_networkr    r!   r   r   r   r   S   s   r   c                 C   s   t t| ƒƒS r   )r   r    )Úobjr   r   r   r   Y   s   r   r   )Ú__doc__Úpsycopg2.extensionsr   r   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   Ú<module>   s    



