o
    ¢ØÆhæ  ã                   @   sþ  d dl mZmZmZmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZ ddlmZmZ deeef defd	d
„ZdZdZdZde Zde Zed Zde ZedfedfedfedfedfedfedffZdeeeef  deeeef  fdd„Zdedeeeef  fdd„ZdZde defdd„Z!dedefd d!„Z"de
defd"d#„Z#d$e	defd%d&„Z$dede%fd'd(„Z&d)ede%fd*d+„Z'd,edee fd-d.„Z(d,edeeeef  fd/d0„Z)d1eeef defd2d3„Z*d4ee defd5d6„Z+d7edefd8d9„Z,d:S );é    )ÚAnyÚIterableÚIteratorÚTupleÚUnion)Úparse)ÚURIÚHash32)ÚdenomsÚfrom_weié   )Úsliding_windowÚtakeÚsecondsÚreturnc                 C   s:   t | ƒdkrdS ttt | ƒƒƒ}d dd„ td|ƒD ƒ¡S )Nr   Ú0sÚ c                 s   s    � | ]\}}|› |› �V  qd S ©N© )Ú.0ÚamountÚunitr   r   ú_/var/www/html/HyperOracle/crypto_trader/venv/lib/python3.10/site-packages/eth_utils/humanize.pyÚ	<genexpr>"   s   € z#humanize_seconds.<locals>.<genexpr>é   )ÚintÚ_consume_leading_zero_unitsÚ_humanize_secondsÚjoinr   )r   Úunit_valuesr   r   r   Úhumanize_seconds   s   r    é<   i  é   im  é   é   ÚyÚmÚwÚdÚhÚsÚ
units_iterc                 c   s2   � | D ]\}}|dkrq||fV   | E d H  d S )Nr   r   )r+   r   r   r   r   r   r   9   s   €
r   c                 c   s<   � | }t D ]\}}|s d S || }||fV  ||; }qd S r   )ÚUNITS)r   Ú	remainderÚdurationr   Únumr   r   r   r   F   s   €

ùr   é   Úvaluec                 C   sJ   t | ƒtd kr|  ¡ S |  ¡ }|d t… }|dt d … }|› d|› �S )Nr   éÿÿÿÿú..)ÚlenÚDISPLAY_HASH_CHARSÚhex)r1   Úvalue_as_hexÚheadÚtailr   r   r   Úhumanize_bytesV   s   r:   c                 C   sŠ   | dt  d … }| d d… dkr.t| dd … ƒt d kr| S | dt d … }d|› d|› �S t| ƒt d kr8| S | d t … }|› d|› �S )Nr2   é   Ú0xr3   )r5   r4   )r1   r9   r8   r   r   r   Úhumanize_hexstr_   s   r=   c                 C   s   t | ƒS r   )r:   )r1   r   r   r   Úhumanize_hashn   s   r>   Úuric                 C   sR   t | ƒst| › d�ƒ‚t | ¡}|j}|d t… }|dt d … }d|› d|› �S )NzW does not look like a valid IPFS uri. Currently, only CIDv0 hash schemes are supported.r2   zipfs://r3   )Úis_ipfs_uriÚ	TypeErrorr   ÚurlparseÚnetlocr5   )r?   ÚparsedÚ	ipfs_hashr8   r9   r   r   r   Úhumanize_ipfs_urir   s   ÿ
rF   c                 C   s6   t | tƒsdS t | ¡}|jdks|jsdS t|jƒS )NFÚipfs)Ú
isinstanceÚstrr   rB   ÚschemerC   Ú_is_CIDv0_ipfs_hash)r1   rD   r   r   r   r@   €   s   


r@   rE   c                 C   s   |   d¡rt| ƒdkrdS dS )NÚQmé.   TF)Ú
startswithr4   )rE   r   r   r   rK   ‹   s   rK   Úvaluesc                  g   sH   � dV  t td| ƒdƒD ]\}\}}|d |krq|V  qt| ƒV  d S )Nr   r;   r   )Ú	enumerater   r4   )rO   ÚindexÚleftÚrightr   r   r   Ú_find_breakpoints‘   s   €rT   c                  g   s<   � t dt| Ž ƒD ]\}}| ||… }|d |d fV  qdS )zæ
    Return a tuple of consecutive ranges of integers.

    :param values: a sequence of ordered integers

    - fn(1, 2, 3) -> ((1, 3),)
    - fn(1, 2, 3, 7, 8, 9) -> ((1, 3), (7, 9))
    - fn(1, 7, 8, 9) -> ((1, 1), (7, 9))
    r;   r   r2   N)r   rT   )rO   rR   rS   Úchunkr   r   r   Ú_extract_integer_ranges›   s
   €
þrV   Úboundsc                 C   s&   | \}}||krt |ƒS |› d|› �S )NÚ-)rI   )rW   rR   rS   r   r   r   Ú_humanize_rangeª   s   rY   Úvalues_iterc                 C   s$   t | ƒ}|sdS d ttt|Ž ƒ¡S )zï
    Return a concise, human-readable string representing a sequence of integers.

    - fn((1, 2, 3)) -> '1-3'
    - fn((1, 2, 3, 7, 8, 9)) -> '1-3|7-9'
    - fn((1, 2, 3, 5, 7, 8, 9)) -> '1-3|5|7-9'
    - fn((1, 7, 8, 9)) -> '1|7-9'
    z(empty)Ú|)Útupler   ÚmaprY   rV   )rZ   rO   r   r   r   Úhumanize_integer_sequence²   s   	r^   Únumberc                 C   sD   | t jkrd}n
| t jkrd}nd}t| |ƒ}t|ƒ› d|› �}|S )NÚetherÚgweiÚweiÚ )r
   ÚfinneyÚmweir   rI   )r_   r   r   Úxr   r   r   Úhumanize_weiÂ   s   


rg   N)-Útypingr   r   r   r   r   Úurllibr   Ú
eth_typingr   r	   Úeth_utils.currencyr
   r   Útoolzr   r   Úfloatr   rI   r    ÚSECONDÚMINUTEÚHOURÚDAYÚYEARÚMONTHÚWEEKr,   r   r   r5   Úbytesr:   r=   r>   rF   Úboolr@   rK   rT   rV   rY   r^   rg   r   r   r   r   Ú<module>   sN    	ùÿ
þ	
