U
    (¬Þa—  ã                   @   sf   d Z ddlmZmZmZmZmZ ddl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ÚQuotedString)Ú	text_typeNc                 C   sR   ddl a tdk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)Zconn_or_cursÚcÚt© r   ú‚/home/adriano.carvalho/ftp/files/BrinquedotecaVirtual/brinquedotecavirtual/venv/lib/python3.8/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  ZINET)i  zINET[])iŠ  ZCIDR)i‹  zCIDR[])r   Úcast_interfacer   Úcast_network)ZinetZainetZcidrZacidrr   r   r   r
   C   s
    r
   c                 C   s   | d krd S t  t| ƒ¡S ©N)r   Úip_interfacer   ©ÚsÚcurr   r   r   r   M   s    r   c                 C   s   | d krd S t  t| ƒ¡S r   )r   Ú
ip_networkr   r   r   r   r   r   T   s    r   c                 C   s   t t| ƒƒS r   )r   Ústr)Úobjr   r   r   r   Z   s    r   )N)N)N)Ú__doc__Zpsycopg2.extensionsr   r   r   r   r   Zpsycopg2.compatr   r   r	   r   r
   r   r   r   r   r   r   r   Ú<module>   s   



