o
    A+ i                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZ ejdd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d Zdd Ze
dd Zd d! Zd"d# Zd$d% ZdS )&    N)wktPoint)shapely20_todo)dumpdumpsloadloadsmodule)scopec                   C   s
   t ddS )N333333?333333@r    r   r   i/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/shapely/tests/legacy/test_wkb.py
some_point   s   
r   c                 C   s   t |  dS )Nzutf-8)binasciib2a_hexupperdecodevaluer   r   r   bin2hex   s   r   c                 C   s
   t | S N)r   a2b_hexr   r   r   r   hex2bin   s   
r   c                 C   s   | r| d dv rt d| r| d dvrt dt| d t|dd \}dd	d
| }d	ddtj }||kr<|S ttj||  ddd| gt||  t|dd R  S )ab  Re-pack a hex WKB value to native endianness if needed

    This routine does not understand WKB format, so it must be provided a
    struct module format string, without initial indicator character ("@=<>!"),
    which will be interpreted as big- or little-endian with standard sizes
    depending on the endian flag in the first byte of the value.
    r   z@=<>!z1Initial indicator character, one of @=<>!, in fmtZcbBzMissing endian flag in fmtN   ><)r      )littlebigr   )r   r   )
ValueErrorstructunpackr   sys	byteorderr   pack)fmtr   Z	hexendianZhexorderZsysorderr   r   r   	hostorder   s"   	r(   c                 C   sD   t | }t|tddksJ t | dd}t|tddks J d S )NBIdd*0101000000333333333333F33F3333333333330B40i  ZsridBIIdd20101000020E6100000333333333333F33F3333333333330B40r   r   r(   r   resultr   r   r   test_dumps_srid8   s   
r1   c                 C   sZ   t | }t|tddksJ t | dd}t|dksJ t | dd}t|dks+J d S )Nr)   r*   FZ
big_endianTZ*00000000013FF3333333333333400B333333333333r.   r/   r   r   r   test_dumps_endiannessC   s   
r3   c                 C   s"   t | dd}|tddksJ d S )NThexr)   r*   )r   r(   r/   r   r   r   test_dumps_hexN   s   r6   c                  C   s   t td} t| tsJ | jd d  dgksJ t| }t|tddks(J t| dd}t|tddks9J t| dd	}t|tdd
ksJJ d S )Nr-   )r   r   r)   r*   T)Zinclude_sridr,   i4l  r+   Z20101000020346C0000333333333333F33F3333333333330B40)r	   r   
isinstancer   coordsr   r   r(   )Zgeomr0   r   r   r   test_loads_sridS   s   

r9   c                 C   s    t t| dddd| ksJ d S )NTr4   )r	   r   )r   r   r   r   test_loads_hexi   s    r:   c                 C   s   | d}t|d}t| | W d    n1 sw   Y  t|d}t|}W d    n1 s3w   Y  | |ks>J d S )Ntest.wkbwbrbjoinopenr   r   r   tmpdirfilefile_pointerZrestoredr   r   r   test_dump_load_binarym   s   

rE   c                 C   s   | d}t|d}t| |dd W d    n1 sw   Y  t|}t|dd}W d    n1 s6w   Y  | |ksAJ d S )Nr;   wTr4   r>   rA   r   r   r   test_dump_load_hexw   s   

rG   c              	   C   s   | d}t|d}t| |dd W d   n1 sw   Y  tt* t|d}t| W d   n1 s;w   Y  W d   dS W d   dS 1 sSw   Y  dS )z<Asserts that reading a binary file as text (hex mode) fails.r;   rF   Tr4   Nr=   )r?   r@   r   pytestraises	TypeErrorr   )r   rB   rC   rD   r   r   r   test_dump_hex_load_binary   s   

"rK   c              	   C   s  | d}t|d}t| | W d   n1 sw   Y  tjdkrFt|}t|dd}W d   n1 s9w   Y  | |ksDJ dS ttt	f+ t|}t|dd W d   n1 scw   Y  W d   dS W d   dS 1 s{w   Y  dS )z<Asserts that reading a text file (hex mode) as binary fails.r;   r<   Nwin32Tr4   )
r?   r@   r   r$   platformr   rH   rI   UnicodeEncodeErrorUnicodeDecodeErrorrA   r   r   r   test_dump_binary_load_hex   s"   



"rP   c                  C   sh   t d} t| dd}|d d dksJ td|dd  }t|dks'J tdd	 |D s2J d S )
NzPOINT EMPTYFr2   is      z<2dr   c                 s   s    | ]}t |V  qd S r   )mathisnan).0valr   r   r   	<genexpr>   s    z#test_point_empty.<locals>.<genexpr>)r   r	   r   r"   r#   lenall)gr0   r8   r   r   r   test_point_empty   s   
rY   c                  C   s"   t d} | jtddksJ d S )NzPOINT Z EMPTYZBIdddZ:0101000080000000000000F87F000000000000F87F000000000000F87F)r   r	   Zwkb_hexr(   )rX   r   r   r   test_point_z_empty   s   
rZ   ) r   rQ   r"   r$   rH   Zshapelyr   Zshapely.geometryr   Zshapely.tests.legacy.conftestr   Zshapely.wkbr   r   r   r	   Zfixturer   r   r   r(   r1   r3   r6   r9   r:   rE   rG   rK   rP   rY   rZ   r   r   r   r   <module>   s4    



