U
    luf                  	   @   s   d Z ddlZddlZddlmZ dd Ze  edd Ze  ddlmZ W 5 Q R X d	d
l	m
Z
 d	dl
T ddlT ddlmZ ddlT dd Zdd ZdZedZdddge
j ej ej ZdS )zPython bindings for 0MQ.    N)contextmanagerc               	   C   s  ddl } ttd}|   dk}|rddl}t }|j|B }|tt	dd M }|rtj dkr|tt	dd	O }|tt	d
d M }t
| zhzd	dlm} W n, tk
r   ddlm} |ddrƂ Y n(X |t d< |rddl}||j|j W 5 |rt
| X dS )z#load bundled libzmq if there is oner   Ngetdlopenflagspypy
RTLD_LOCAL   darwin	RTLD_LAZY   RTLD_NOW   )libzmq)	find_specz.libzmqzmqZ_libzmq)platformhasattrsyspython_implementationlowerctypesr   RTLD_GLOBALgetattrossetdlopenflags r   ImportErrorimportlib.utilr   globalsCDLL__file__)r   dlopenZPYPYr   Zdlflagsflagsr   r    r!   0/tmp/pip-unpacked-wheel-h6ekxre8/zmq/__init__.py_load_libzmq   s0    




r#   c               	   c   s   t jdsdV  dS tjtjtjttj	d} tj
| sNdV  dS tjd}z$tj|phd| gtjd< dV  W 5 |dkrtjd n
|tjd< X dS )zcontext manager for libs directory on $PATH

    Works around mysterious issue where os.add_dll_directory
    does not resolve imports (conda-forge Python >= 3.8)
    winNz
pyzmq.libsPATHr   )r   r   
startswithr   pathabspathjoindirnamer   pardirexistsenvirongetpoppathsep)Zlibs_dirZpath_beforer!   r!   r"   _libs_on_path@   s(    

r1   )backendr	   )	constants)*)sugarc                     st   ddl m} m}m}mm} |t |  |g fdddD  }| drp| d |S )zNReturn a list of directories to include for linking against pyzmq with cython.r   )r(   r*   r,   r)   r+   c                    s   g | ]} |qS r!   r!   ).0subdirbaser)   parentr!   r"   
<listcomp>v   s     z get_includes.<locals>.<listcomp>)utilsinclude)os.pathr(   r*   r,   r)   r+   r   append)r(   r*   r,   r+   Zincludesr!   r8   r"   get_includesp   s    r@   c                  C   s:   ddl m} m}m}m} |t}| |||}|||gS )zIReturn a list of directories used to link against pyzmq's bundled libzmq.r   )r(   r*   r)   r+   )r>   r(   r*   r)   r+   r   )r(   r*   r)   r+   r9   r:   r!   r!   r"   get_library_dirs|   s    rA   i   ZdraftCOPY_THRESHOLD	DRAFT_API)__doc__r   r   
contextlibr   r#   r1   r   r2   r   r3   Zzmq.backendr5   Z	zmq.sugarr@   rA   rB   ZhasrC   __all__r!   r!   r!   r"   <module>   s:   0
%	
