o
    h                     @   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   X/var/www/html/scripts/venv/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 fmtcbBzMissing endian flag in fmtN   ><)r      )littlebigr   )r   r   )
ValueErrorstructunpackr   sys	byteorderr   pack)fmtr   	hexendianhexorder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  sridBIIdd20101000020E6100000333333333333F33F3333333333330B40r   r   r,   r   resultr   r   r   test_dumps_srid8   s   
r6   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
big_endianT*00000000013FF3333333333333400B333333333333r3   r4   r   r   r   test_dumps_endiannessC   s   
r:   c                 C   s"   t | dd}|tddksJ d S )NThexr-   r.   )r   r,   r4   r   r   r   test_dumps_hexN   s   r=   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 )Nr2   )r   r   r-   r.   T)include_sridr1   i4l  r/   20101000020346C0000333333333333F33F3333333333330B40)r	   r   
isinstancer   coordsr   r   r,   )geomr5   r   r   r   test_loads_sridS   s   

rC   c                 C   s    t t| dddd| ksJ d S )NTr;   )r	   r   )r   r   r   r   test_loads_hexi   s    rD   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_pointerrestoredr   r   r   test_dump_load_binarym   s   

rP   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 )NrE   wTr;   rH   rK   r   r   r   test_dump_load_hexw   s   

rR   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.rE   rQ   Tr;   NrG   )rI   rJ   r   pytestraises	TypeErrorr   )r   rL   rM   rN   r   r   r   test_dump_hex_load_binary   s   

"rV   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.rE   rF   Nwin32Tr;   )
rI   rJ   r   r%   platformr   rS   rT   UnicodeEncodeErrorUnicodeDecodeErrorrK   r   r   r   test_dump_binary_load_hex   s"   



"r[   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 EMPTYFr7   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)gr5   rA   r   r   r   test_point_empty   s   
rd   c                  C   s"   t d} | jtddksJ d S )NzPOINT Z EMPTYBIddd:0101000080000000000000F87F000000000000F87F000000000000F87F)r   r	   wkb_hexr,   )rc   r   r   r   test_point_z_empty   s   
rh   ) r   r\   r#   r%   rS   shapelyr   shapely.geometryr   shapely.tests.legacy.conftestr   shapely.wkbr   r   r   r	   fixturer   r   r   r,   r6   r:   r=   rC   rD   rP   rR   rV   r[   rd   rh   r   r   r   r   <module>   s4    



