o
    ;Di                     @   s   d dl mZmZmZ d dlZd dlmZ eeZ	e	j
Z
dd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd ZdZdd Zdd ZdS )    )absolute_importprint_functiondivisionN)callablec                 C   s
   t | dS )Ncursor
_hasmethoddbo r   I/var/www/Datamplify/venv/lib/python3.10/site-packages/petl/io/db_utils.py_is_dbapi_connection   s   
r   c                 C   s   dt t| v S )Nclickhouse_driver)strtyper	   r   r   r   _is_clikchouse_dbapi_connection   s   r   c                 C   s   t | dddddS )Nexecuteexecutemanyfetchone	fetchmanyfetchall_hasmethodsr	   r   r   r   _is_dbapi_cursor   s   r   c                 C   s   t | dddot| dS )Nr   connectraw_connectiondriver)r   _haspropr	   r   r   r   _is_sqlalchemy_engine   s   r   c                 C   s   t | dddS )Nr   
connectionget_bindr   r	   r   r   r   _is_sqlalchemy_session!   s   r!   c                 C   s   t | do	t| dS )Nr   r   )r   r   r	   r   r   r   _is_sqlalchemy_connection%   s   r"   c                 C   s   t | |ott| |S Nhasattrr   getattronr   r   r   r   +   s   r   c                    s   t  fdd|D S )Nc                 3   s    | ]}t  |V  qd S r#   r   ).0r)   r(   r   r   	<genexpr>0   s    z_hasmethods.<locals>.<genexpr>)all)r(   lr   r+   r   r   /   s   r   c                 C   s   t | |ott| | S r#   r$   r'   r   r   r   r   3   s   r   "c                 C   s   t | t t t   t  S r#   )	quotecharreplace)sr   r   r   _quote;   s   r3   c                 C   s6  | d u rt d ddgt| }|S t| jj}t|ds1t d||  ddgt| }|S |jdkrFt d ddgt| }|S |jdv r[t d	 dd
gt| }|S |jdkrtt d ddd tt|D }|S |jdkrt d ddd |D }|S t d|j ddgt| }|S )Nz5connection is None, default to using qmark paramstylez, ?
paramstylezMmodule %r from connection %r has no attribute paramstyle, defaulting to qmarkqmarkzfound paramstyle qmark)formatpyformatzfound paramstyle pyformatz%snumericzfound paramstyle numericc                 S   s   g | ]
}d t |d  qS ):   )r   )r*   ir   r   r   
<listcomp>Z   s    z!_placeholders.<locals>.<listcomp>namedzfound paramstyle namedc                 S   s   g | ]}d | qS )z:%sr   )r*   namer   r   r   r=   _   s    z3found unexpected paramstyle %r, defaulting to qmark)	debugjoinlen
__import__	__class__
__module__r%   r5   range)r   namesplaceholdersmodr   r   r   _placeholdersA   sH   !







rJ   )
__future__r   r   r   loggingpetl.compatr   	getLogger__name__loggerr@   r   r   r   r   r!   r"   r   r   r   r0   r3   rJ   r   r   r   r   <module>   s"   
