
    5Thj                     R    d Z ddlmZmZmZmZmZ dadad	dZ	d Z
d	dZd	dZd ZdS )
z>Implementation of the ipaddres-based network types adaptation
    )new_typenew_array_typeregister_typeregister_adapterQuotedStringNc                     ddl a t          t                      at          D ]}t          ||            t           j        t           j        t           j        t           j        fD ]}t          |t                     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ts      W/mounts/lovelace/software/anaconda3/lib/python3.11/site-packages/psycopg2/_ipaddress.pyregister_ipaddressr   %   s       ?? ' 'a&&&&%y'>#Y%:< - -O,,,,- -    c                      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acidrs       r   r   r   B   sU    FFN33D7Hd33EFFL11D68T22E%u%%r   c                 X    | d S t                               t          |                     S N)r	   ip_interfacestrscurs     r   r   r   L   s&    yt!!#a&&)))r   c                 X    | d S t                               t          |                     S r!   )r	   
ip_networkr#   r$   s     r   r   r   S   s&    ytA'''r   c                 :    t          t          |                     S r!   )r   r#   )objs    r   r   r   Y   s    C!!!r   r!   )__doc__psycopg2.extensionsr   r   r   r   r   r	   r
   r   r   r   r   r    r   r   <module>r.      s    4M M M M M M M M M M M M M M 	 - - - -:& & &* * * *( ( ( (" " " " "r   