3
 (ƒh—  ã               @   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   sZ   ddl a tdkrtƒ axtD ]}t|| ƒ qW x&t jt jt jt jgD ]}t|t	ƒ qDW 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   ú@/tmp/pip-install-q3hcpn_q/psycopg2-binary/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ée  ZINETé  zINET[]éŠ  ZCIDRé‹  zCIDR[])r   )r   )r   )r   )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 jt| ƒƒS )N)r   Úip_interfacer   )ÚsÚcurr   r   r   r   M   s    r   c             C   s   | d krd S t jt| ƒƒS )N)r   Ú
ip_networkr   )r   r   r   r   r   r   T   s    r   c             C   s   t t| ƒƒS )N)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   



