
    T>qj                    r    d Z ddlmZ ddlZddlZddlZddlmZmZ ddZ	d Z
ddZddZdd	Zdd
ZddZy)z?Pro subcommands: update, list, config (fingerprint management).    )annotationsN)FingerprintManagerFingerprintUpdateErrorc                R    | j                  d      st        j                  d      | S )Nimp_zAPI key must start with 'imp_'.)
startswithargparseArgumentTypeErrorvalues    P/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/curl_cffi/cli/pro.py_validate_api_keyr      s'    F#(()JKKL    c                    | yt        | t              r| rdS dS t        | t        t        z        rt	        j
                  | dd      S t        |       S )N truefalse),:F)
separatorsensure_ascii)
isinstanceboollistdictjsondumpsstrr   s    r   _format_cellr      sL    }%v+G+%%zz%JUKKu:r   c                L   | D cg c]  }t        |       c}|D ]0  }t        |      D ]   \  }}t        |   t        |            |<   " 2 dfd}t         ||              t        dj	                  d D                     |D ]  }t         ||              y c c}w )Nc                J    dj                  fdt        |       D              S )Nz | c              3  L   K   | ]  \  }}|j                  |           y w)N)ljust).0idxr   widthss      r   	<genexpr>z3_print_table.<locals>.render_row.<locals>.<genexpr>#   s'      
)3eEKKs$
s   !$)join	enumerate)
row_valuesr&   s    r   
render_rowz _print_table.<locals>.render_row"   s&    zz 
7@7L
 
 	
r   z-+-c              3  &   K   | ]	  }d |z    yw)-N )r$   widths     r   r'   z_print_table.<locals>.<genexpr>(   s     5US5[5s   )r*   	list[str]returnr   )lenr)   maxprintr(   )headersrowsheaderrowr%   cellr+   r&   s          @r   _print_tabler:      s    (/0fc&k0F 6"3 	6ICfSk3t95F3K	66

 
*W
	%**5f5
56 jo 1s   B!c                    g d}g }| D ].  }|D cg c]  }t        ||          }}|j                  |       0 t        ||       y c c}w )N)typenamebrowserversionos
os_versionh3_fingerprints)r   appendr:   )fingerprint_rowsr5   r6   itemr7   r8   s         r   _print_fingerprints_tablerF   -   sY    G D  8?@f|DL)@@C $ As   Ac                F    t        t        j                  | dd             y )N   F)indentr   )r4   r   r   )r6   s    r   _print_fingerprints_jsonrJ   >   s    	$**T!%
89r   c                    | j                  ddd       | j                  ddd      }|j                  dd	d
       | j                  ddd      }|j                  ddt        d       y)z.Register update, list, and config subcommands.updatezUpdate local fingerprints cachez-Update fingerprints from the impersonate API.)helpdescriptionr   z"List local and native fingerprintsz#List local and native fingerprints.z--json
store_truezOutput fingerprints as JSON.)actionrM   configzConfigure API accessz$Set the API key for impersonate.pro.z	--api-keyTzAPI key for impersonate.pro)requiredr<   rM   N)
add_parseradd_argumentr   )
subparserslist_parserconfig_parsers      r   add_pro_parsersrX   B   s     .C   ''19 ( K
 +   ))#: * M
 *	  r   c                $   | j                   dk(  r1	 t        j                         }|dk(  rdnd}t        d| d| d       y
| j                   dk(  r8t        j                         }| j                  rt        |       y
t        |       y
| j                   dk(  r@t        j                  | j                         t        dt        j                         z          y
y# t        $ r.}t        t        |      t        j                         Y d	}~y
d	}~ww xY w)zAHandle pro subcommands. Returns True if handled, False otherwise.rL      r   szTotal z fingerprintz
 in cache.)fileNTr   rQ   zAPI key saved to F)commandr   update_fingerprintsr4   r   r   sysstderrlist_fingerprintsr   rJ   rF   set_api_keyapi_keyget_config_path)argsupdatedsuffixexcr6   s        r   handle_pro_commandri   e   s    ||x	D(<<>G #a<RSFF7)<xzBC||v!33599$T*  &d+||x&&t||4!$6$F$F$HHI) & 	-#c(,, 	-s   C 	D!$D

D)r   r   r1   r   )r5   r0   r6   zlist[list[str]])rD   list[dict[str, object]])r6   rj   )r1   None)r1   r   )__doc__
__future__r   r	   r   r_   curl_cffi.fingerprintsr   r   r   r   r:   rF   rJ   rX   ri   r.   r   r   <module>ro      s;    E "   
 M" ": Fr   