o
    Zqi                     @   s  d dl Z d dlZd dlZd dl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mZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) dZ*dZ+e*e+B Z,d	Z-d
Z.e-e. Z/e0dddddZ1e0de2dZ3e0ddde3d  Z4e0ddde*B e3d  Z5e0ddde+B e3d  Z6e0ddde,B e3d  Z7e0dddde4 Z8e0ddde*B de5 Z9e0ddde+B de6 Z:e0ddde,B de7 Z;e0dddde4 Z<e0ddde*B de5 Z=e0ddde+B de6 Z>e0ddde,B de7 Z?e0dddde8 Z@e0ddde*B de9 ZAe0ddde+B de: ZBe0ddde,B de; ZCdZDe jEdddgdddZFe jEddddgdddidddZGe jEd ddd!d"gdd#d$iddd%d!d&gd'dgd(d&gd)dggdd&d$d*ddd+d,d&gd-d&gd-dgd,dgd,d&gggdd.d/id$d*dgd0ddZHe	IddZJe	Id!d"ge	Kd!d&gd'dgd(d&gd)dgge	Ld,d&gd-d&gd-dgd,dgd,d&gggZMd1d2 ZNd3d4 ZOejPQd5dd6eRd7fd8d9d:eSd;fd9d6ed;fd9d<eTd=fd>d?d6ed@fd?d:eSd@fdAdBd:eSdCfdDdEd6edFfdEd:eSdFfgdGdH ZUejPjVe	jWdIk dJdKejPQdLg dMdNdO ZXejPjVe	jWdIkdPdKdQdR ZYejPQdSedTdU ZZejPQdVdWdXdY Z[ejPQdVdZd[d\ Z\d]d^ Z]d_d` Z^dadb Z_ejPQdcdd6eRd7fd8d9d6eddfd9d:eSddfd9d<eTd=fdedfd6edgfdfd:eSdgfeDdhddfeDd6edifeDd:eSdifgdjdk Z`ejPjVe	jWdIk dJdKejPQdldmdneDdofgdpdq ZaejPjVe	jWdIkdPdKdrds ZbejPQdSeejPQdtdudvgejPQdwd dgdxdy ZcejPQdSeejPQdtdudvgejPQdwd dgdzd{ ZdejPjVe	jWd|k d}dKejPQdSeejPQdtdudvgejPQdwd dgd~d ZeejPjVe	jWd|k d}dKejPQdSeejPQdtdudvgejPQdwd dgdd ZfejPQdSe e e e
 fdd ZgejPQdddd Zhdd Zidd Zjdd Zkdd Zldd Zmdd Zndd Zodd ZpejPQdVg ddd Zqdd Zrdd ZsejPQdSedd ed dgdd ZtejPQdSedd ed dgdd ZuejPQdSed d deddgeg deg deg dg dgeddgeeddgeddggee)eg dge
e'ed d dge
e
ed d dgged d ejvfdged d ejvfdddge
ed d ed d dggdd Zwdd Zxdd Zydd ZzejPjVe	jWd|k d}dKdd Z{dd Z|dd Z}ejPjVe	jWd|k d}dKdd Z~dd Zdd Zdd ZddÄ Zddń ZddǄ ZddɄ Zdd˄ Zdd̈́ ZejPjVe	jWdk ddKddф ZejPjVe	jWd|k d}dKddӄ ZejPjVe	jWdk ddKddՄ ZejPjVe	jWdkddKddׄ ZejPQdejee4ddڍejee4ddڍejee4ddڍejee4ddڍeje!e8ddڍeje#e8ddڍeje"e8ddڍeje$e8ddڍeje	ege<ddڍeje	ege<ddڍeje	ege<ddڍeje	ege<ddڍeje	e!ge@ddڍeje	e#ge@ddڍeje	e"ge@ddڍeje	e$ge@ddڍgdd ZejPQdejee5ddڍejee5ddڍeje#e9ddڍeje$e9ddڍeje	ege=ddڍeje	ege=ddڍeje	e#geAddڍeje	e$geAddڍgdd ZejPjVe	jWd|k d}dKejPQdejee6ddڍeje"e:ddڍeje	ege>ddڍeje	e"geBddڍgdd ZejPjVe	jWd|k d}dKejPQdejee7ddڍeje$e;ddڍeje	ege?ddڍeje	e$geCddڍgdd ZejPQdejee4ddڍeje!e8ddڍeje	ege<ddڍeje	e!ge@ddڍgdd ZejPQdeje4d dddڍeje5d dddڍeje8ddddڍeje9ddddڍeje<ddddڍeje=ddddڍeje@ddddڍejeAddddڍgdd ZejPjVe	jWd|k d}dKejPQdeje6d d dڍeje:dddڍeje>dddڍejeBdddڍgdd ZejPjVe	jWd|k d}dKejPQdeje7d ddڍeje;dddڍeje?dddڍejeCdd	dڍgd
d Zdd ZejPQdSee'ef dd ZejPQdSedd ZejPjVe	jWd|k d}dKejPQdSedd ZejPjVe	jWd|k d}dKejPQdSedd ZejPQdSee'ef dd ZejPjVe	jWdk ddKejPQdejeFeJddڍejeGeJddڍejeHe	eMddڍejeFgd eJgd ddڍejddddڍejeFdgeJdgd dڍgd!d" ZejPjVe	jWdk ddKd#d$ ZejPjVe	jWdk ddKd%d& ZejPjVe	jWdk ddKd'd( ZejPjVe	jWdk ddKd)d* ZejPjVe	jWdk d+dKejPQd,ejeFeJddڍejeFgd eJgd ddڍejddddڍejeFdgeJdgd dڍgd-d. ZejPjVe	jWdk d+dKejPQd/g d0d1d2 ZejPjVe	jWdk d+dKd3d4 ZejPjVe	jWd5k d6dKejPQdSee	ee%ge	ee%ge	e	ege%ggd7d8 ZejPjVe	jWdk ddKejPQdSed9d: ZdS (;      N)nullcontext)	GeometryCollectionGEOSException
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPointPolygon)UnsupportedGEOSVersionError)assert_geometries_equal)	all_typesall_types_mall_types_zall_types_zmempty_pointempty_point_mempty_point_zempty_point_zm)equal_geometries_abnormally_yield_unequalmulti_point_emptymulti_point_empty_mmulti_point_empty_zmulti_point_empty_zmpointpoint_mpoint_zpoint_zm	polygon_zl        i   @  i  <BI2d         ?z<dnanz<BI         z<BII   ZZ01030000000100000002000000507daec600b1354100de02498e5e3d41306ea321fcb03541a011a53d905e3d41r
   gffffff_@g333333$@)typeZcoordinatesindentZFeaturenamezDinagat Islands)r)   geometry
propertiesZFeatureCollectiong     Y@g333333?prop0Zvalue0r   g        g     Y@g      Z@g     @Z@)Zprop1r/   r   g      Y@g     @Y@thisthat)r)   featuresc                  C   8   t dd} t d}t||  t d}t||  d S )Nr"   POINT (1 1)s   POINT (1 1))shapelypointsfrom_wktr   expectedactual r;   \/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/shapely/tests/test_io.pytest_from_wkt   s
   


r=   c                   C      t d d u s	J d S N)r5   r7   r;   r;   r;   r<   test_from_wkt_none      r@   zwkt, on_invalid, error, messageraise!Expected bytes or string, got int) ignoreNNrD   warnz+Expected word but encountered end of streamunsupported_optionnot a valid option)LINESTRING (0 0)rE   NNrI   zmust contain 0 or >1 elements)NOT A WKT STRINGrE   NNrJ   zUnknown type: 'NOT')POLYGON ((0 0, 0 0))rE   NNrK   zInvalid number of pointsc                 C      |dkrt j||d}n|dkrt j||d}n|dkr t }nt j||d}| tj| |d}|d u s7J W d    d S 1 sBw   Y  d S NrF   matchrB   rE   
on_invalid)pytestwarnsraisesr   r5   r7   )wktrQ   errormessagehandlerresultr;   r;   r<   test_from_wkt_on_invalid   s   "rZ   )r&      r   z/on_invalid='fix' not supported with GEOS < 3.11)reasonzwkt, expected_wkt)	)rD   N)rI   N)rJ   N)rK   N)zPOLYGON ((0 0, 1 1, 0 1))zPOLYGON ((0 0, 1 1, 0 1, 0 0)))zPOLYGON ((0 0, 1 1))zPOLYGON ((0 0, 1 1, 0 0)))z3MULTIPOLYGON (((5 5, 6 6, 6 5, 5 5)), ((0 0, 0 0)))N)z3MULTIPOLYGON (((5 5, 6 6, 6 5, 5 5)), ((0 0, 1 1)))z8MULTIPOLYGON (((5 5, 6 6, 6 5, 5 5)), ((0 0, 1 1, 0 0))))zIGEOMETRYCOLLECTION (POLYGON ((5 5, 6 6, 6 5, 5 5)), POLYGON ((0 0, 0 0)))Nc                 C   $   t j| dd}t ||ksJ dS z[Tests for on_invalid="fix".

    Geometries that cannot be fixed are returned as None.
    fixrP   N)r5   r7   to_wkt)rU   expected_wktgeomr;   r;   r<   test_from_wkt_on_invalid_fix   s   rc   z/on_invalid='fix' is supported with GEOS >= 3.11c                  C   B   t jtdd tjddd} W d   dS 1 sw   Y  dS )/on_invalid="fix" not supported with GEOS < 3.110on_invalid='fix' only supported for GEOS >= 3.11rN   rD   r_   rP   N)rR   rT   
ValueErrorr5   r7   _r;   r;   r<   -test_from_wkt_on_invalid_fix_unsupported_geos   
   "rj   rb   c                 C   sd   t | }t |}t| r+tt t||  W d    d S 1 s$w   Y  d S t||  d S r?   )r5   r`   r7   r   rR   rT   AssertionErrorr   )rb   rU   r:   r;   r;   r<   test_from_wkt_all_types   s   

"rm   rU   )POINT EMPTYzLINESTRING EMPTYzPOLYGON EMPTYzGEOMETRYCOLLECTION EMPTYc                 C   sD   t | }t | sJ t | sJ t || ks J d S r?   )r5   r7   is_geometryallis_emptyr`   )rU   rb   r;   r;   r<   test_from_wkt_empty   s   
rr   )zCIRCULARSTRING(1 3,2 4,3 1)z4COMPOUNDCURVE(CIRCULARSTRING(1 3,2 4,3 1),(3 1,0 0))zCURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0,2 1,2 3,4 3),(4 3,4 5,1 4,0 0)),CIRCULARSTRING(1.7 1,1.4 0.4,1.6 0.4,1.6 0.5,1.7 1))zhMULTICURVE((0 0,5 5),COMPOUNDCURVE((-1 -1,0 0),CIRCULARSTRING(0 0,1 1,2 0)),CIRCULARSTRING(4 0,4 4,8 4))zMULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(0 0,4 0,4 4,0 4,0 0),(1 1,3 3,3 1,1 1)),((10 10,14 12,11 10,10 10),(11 11,11.5 11,11 11.5,11 11)))c                 C      t jdkr$tjtdd t |  W d    d S 1 sw   Y  d S tjt jjdd t |  W d    d S 1 s>w   Y  d S )Nr&      r   4Nonlinear geometry types are not currently supportedrN   zUnknown type)r5   geos_versionrR   rT   NotImplementedErrorr7   errorsr   rU   r;   r;   r<   #test_from_wkt_nonlinear_unsupported   s   
""r{   c                  C   s$   t dd} t t}t||  d S Nr"   )r5   r6   from_wkbPOINT11_WKBr   r8   r;   r;   r<   test_from_wkb  s   
r   c                  C   r3   )Nr"   Z*0101000000000000000000F03F000000000000F03Fs*   0101000000000000000000F03F000000000000F03F)r5   r6   r}   r   r8   r;   r;   r<   test_from_wkb_hex  s
   


r   c                   C   r>   r?   )r5   r}   r;   r;   r;   r<   test_from_wkb_none$  rA   r   zwkb, on_invalid, error, messagezUnexpected EOF parsing WKB)       rE   NNr   ParseExceptionrE   z4Points of LinearRing do not form a closed linestringc                 C   rL   rM   )rR   rS   rT   r   r5   r}   )wkbrQ   rV   rW   rX   rY   r;   r;   r<   test_from_wkb_on_invalid)  s   "r   zwkb, expected_wkt)    N)r   Nz[POLYGON ((1421568.7761 1924750.2852, 1421564.1314 1924752.2408, 1421568.7761 1924750.2852))c                 C   r]   r^   )r5   r}   r`   )r   ra   rb   r;   r;   r<   test_from_wkb_on_invalid_fixR  s   r   c                  C   rd   )re   rf   rN   r   r_   rP   N)rR   rT   rg   r5   r}   rh   r;   r;   r<   -test_from_wkb_on_invalid_fix_unsupported_geosj  rk   r   use_hexFT
byte_orderc                 C   D   t | t jjkrtd t j| ||d}t |}t||  d S Nz$Linearrings are not preserved in WKBhexr   	r5   get_type_idGeometryType
LINEARRINGrR   skipto_wkbr}   r   rb   r   r   r   r:   r;   r;   r<   test_from_wkb_all_typesv  
   

r   c                 C   r   r   r   r   r;   r;   r<   test_from_wkb_all_types_z  r   r   r&      r   z,M coordinates not supported with GEOS < 3.12c                 C   r   r   r   r   r;   r;   r<   test_from_wkb_all_types_m  
   

r   c                 C   r   r   r   r   r;   r;   r<   test_from_wkb_all_types_zm  r   r   c                 C   sN   t | }t |} t |  sJ t |  sJ t | |ks%J d S r?   )r5   r   r}   ro   rp   rq   )rb   r   r;   r;   r<   test_from_wkb_empty  s
   

r   r   )Zr010800000003000000000000000000F03F0000000000000840000000000000004000000000000010400000000000000840000000000000F03FZ01090000200E16000002000000010800000003000000000000000000F03F0000000000000840000000000000004000000000000010400000000000000840000000000000F03F0102000000020000000000000000000840000000000000F03F00000000000000000000000000000000A"  010A0000200E1600000200000001090000000200000001080000000500000000000000000000000000000000000000000000000000004000000000000000000000000000000040000000000000F03F00000000000000400000000000000840000000000000104000000000000008400102000000040000000000000000001040000000000000084000000000000010400000000000001440000000000000F03F000000000000104000000000000000000000000000000000010800000005000000333333333333FB3F000000000000F03F666666666666F63F9A9999999999D93F9A9999999999F93F9A9999999999D93F9A9999999999F93F000000000000E03F333333333333FB3F000000000000F03FA  010B000000030000000102000000020000000000000000000000000000000000000000000000000014400000000000001440010900000002000000010200000002000000000000000000F0BF000000000000F0BF0000000000000000000000000000000001080000000300000000000000000000000000000000000000000000000000F03F000000000000F03F00000000000000400000000000000000010800000003000000000000000000104000000000000000000000000000001040000000000000104000000000000020400000000000001040A  010C00000002000000010A000000020000000108000000050000000000000000000000000000000000000000000000000010400000000000000000000000000000104000000000000010400000000000000000000000000000104000000000000000000000000000000000010200000004000000000000000000F03F000000000000F03F000000000000084000000000000008400000000000000840000000000000F03F000000000000F03F000000000000F03F01030000000200000004000000000000000000244000000000000024400000000000002C40000000000000284000000000000026400000000000002440000000000000244000000000000024400400000000000000000026400000000000002640000000000000274000000000000026400000000000002640000000000000274000000000000026400000000000002640c                 C   rs   )Nrt   rv   rN   zUnknown WKB type)r5   rw   rR   rT   rx   r}   ry   r   )r   r;   r;   r<   #test_from_wkb_nonlinear_unsupported  s   
""r   c                  C   s\   t dd} t | }|dksJ t j| dd}|dksJ t j| ddd}|dks,J d S )	Nr"   r4   FtrimzPOINT (1.000000 1.000000)r&   )Zrounding_precisionr   zPOINT (1.000 1.000))r5   r6   r`   r   r:   r;   r;   r<   test_to_wkt  s   
r   c                  C   s   t ddd} t | dksJ t j| dddksJ t j| dddks&J t j| ddd	ks1J t jd
krAt j| dddksCJ d S d S )Nr"   r%   r&   POINT Z (1 2 3)output_dimensionPOINT (1 2)TZold_3dPOINT (1 2 3)r   r'   )r5   r6   r`   rw   r   r;   r;   r<   test_to_wkt_z  s   
r   c                  C   s   t d} t j| dddksJ t jdk r6t | dksJ t j| dddks)J t j| dd	d
ks4J d S t | dks?J t j| dddksJJ t j| dddksUJ t j| dd	dks`J d S )NzPOINT M (1 2 4)r%   r   r   r   zPOINT Z (1 2 4)r&   Tr   zPOINT (1 2 4)r'   r5   r7   r`   rw   r   r;   r;   r<   test_to_wkt_m  s   

r   c                  C   s   t d} t j| dddksJ t j| dddksJ t jdk r6t | dks)J t j| dd	d
ks4J d S t | dks?J t j| dddksJJ t j| dd	dksUJ d S )NzPOINT ZM (1 2 3 4)r%   r   r   r&   r   r   Tr   r   r'   zPOINT (1 2 3 4)r   r   r;   r;   r<   test_to_wkt_zm  s   

r   c                   C   r>   r?   )r5   r`   r;   r;   r;   r<   test_to_wkt_none  rA   r   c                  C   s,   g d} t | }tt || ksJ d S )N)POINT Z EMPTYNPOLYGON Z EMPTY)r5   r7   listr`   )Z	empty_wktZempty_geomsr;   r;   r<   test_to_wkt_array_with_empty_z  s   
r   c                   C   st   t t td W d    n1 sw   Y  t tj tjtdd W d    d S 1 s3w   Y  d S )Nr"      r   )rR   rT   	TypeErrorr5   r`   r   r   r;   r;   r;   r<   test_to_wkt_exceptions  s   "r   c                   C   s   t tdks	J d S )Nrn   )r5   r`   r   r;   r;   r;   r<   test_to_wkt_point_empty!  s   r   )r   zLINESTRING Z EMPTYzLINEARRING Z EMPTYr   c                 C   s   t t | | ksJ d S r?   )r5   r`   r7   rz   r;   r;   r<   test_to_wkt_empty_z%  s   
r   c                  C   s&   t ttg} t | dsJ d S )Nz(POINT EMPTY, POINT (2 3)))r5   geometrycollectionsr   r   r`   endswith)Z
collectionr;   r;   r<   /test_to_wkt_geometrycollection_with_point_empty2  s   r   c                  C   s8   t ttg} t jdkrd}nd}t | |ksJ d S )Nr   zMULTIPOINT (EMPTY, (2 3))zMULTIPOINT (EMPTY, 2 3))r5   multipointsr   r   rw   r`   )rb   r9   r;   r;   r<   'test_to_wkt_multipoint_with_point_empty9  s
   
r   g}Ô%ITc                 C   s   t |  dt| vsJ d S )NException in WKT writer)r5   r`   reprrb   r;   r;   r<   test_to_wkt_large_float_okC  s   
r   \nTc                 C   st   t jdkr| t t | sJ d S tjtdd t |  W d    n1 s+w   Y  dt| v s8J d S )Nrt   z(WKT output of coordinates greater than.*rN   r   )	r5   rw   equalsr7   r`   rR   rT   rg   r   r   r;   r;   r<   test_to_wkt_large_floatJ  s   
r   r   r   r   )r   r   r   )r   r   r"   r   r"   r   r   r   )r   )r   
   r   )r   r   r   r   r   )r   r"   r   r   c              
   C   sR   zt |  W n ty" } zt|dsJ W Y d }~nd }~ww t|  d S )Nz&WKT output of coordinates greater than)r5   r`   rg   str
startswithr   )rb   er;   r;   r<   #test_to_wkt_large_float_3d_no_crashX  s   r   c                   C   s"   t jtddddddksJ d S )Nr   r   r%   r   POINT (0 0))r5   r`   r
   r;   r;   r;   r<   test_to_wkt_large_float_skip_z|  s   "r   c                   C   s"   t jtdddddsJ d S )Nr   r   Fr   zPOINT ()r5   r`   r
   r   r;   r;   r;   r<   test_to_wkt_large_float_no_trim  s   "r   c                   C   $   t tdksJ t tdksJ d S )Nz<POINT (2 3)>z<POINT Z (2 3 4)>)r   r   r   r;   r;   r;   r<   	test_repr  s   r   c                   C   r   )Nz<POINT M (2 3 5)>z<POINT ZM (2 3 4 5)>)r   r   r   r;   r;   r;   r<   test_repr_m     r   c                  C   sB   t tdtd} t| }t|dksJ |dsJ d S )Nr    P   z...>)r5   linestringsnpZaranger   lenr   )rb   Zrepresentationr;   r;   r<   test_repr_max_length  s   r   c                   C   s   t tdksJ d S )Nz<POINT Z EMPTY>)r   r   r;   r;   r;   r<   test_repr_point_z_empty  s   r   c                   C   r   )Nz<POINT M EMPTY>z<POINT ZM EMPTY>)r   r   r   r;   r;   r;   r<   test_repr_point_m_empty  r   r   c                  C   s*   t dd} t j| dd}|tksJ d S )Nr"   r   )r5   r6   r   r~   r   r;   r;   r<   test_to_wkb  s   r   c                  C   sD   t dd} t j| ddd}d}d}d}||| d|  ks J d S )Nr"   Tr   Z01Z01000000Z000000000000F03Fr%   r5   r6   r   )r   r:   le
point_typecoordr;   r;   r<   test_to_wkb_hex  s   r   c                  C   s   t ddd} tddddd}tdddtB ddd}t j| dd	|ks'J t j| ddd
|ks3J t j| ddd
|ks?J t jdkrPt j| ddd
|ksRJ d S d S )Nr"   r%   r&   r!   r#          @<BI3d      @r   r   r   r   r'   )r5   r6   structpackEWKBZr   rw   )r   expected_wkbexpected_wkb_zr;   r;   r<   test_to_wkb_z  s   
r   c               
   C   s   t tdddtB ddd} tddddd}tdddtB ddd}t jdk r+|}t j| dd|ks6J t j| d	dd
|ksBJ t j| ddd
|ksNJ t jdkr_t j| ddd
|ksaJ d S d S )Nr   r"   r#   r         @r!   r   r   r%   r   r&   r'   )r5   r}   r   r   EWKBMrw   r   )r   r   Zexpected_wkb_mr;   r;   r<   test_to_wkb_m  s   

r   c                  C   s   t tdddtB dddd} tddddd}tdddtB ddd}tdddtB dddd}t jd	k r9|}t j| dd
|ksDJ t j| ddd|ksPJ t j| ddd|ks\J t jd	krmt j| ddd|ksoJ d S d S )Nz<BI4dr"   r#   r   r   r   r!   r   r   r   r%   r   r&   r'   )r5   r}   r   r   EWKBZMr   rw   r   )r   r   r   Zexpected_wkb_zmr;   r;   r<   test_to_wkb_zm  s    

r   c                   C   r>   r?   )r5   r   r;   r;   r;   r<   test_to_wkb_none  rA   r   c                   C   s   t t td W d    n1 sw   Y  t tj tjtdd W d    n1 s2w   Y  t t tjtdd W d    d S 1 sOw   Y  d S )Nr"   r   r   otherflavor)rR   rT   r   r5   r   r   r   rg   r;   r;   r;   r<   test_to_wkb_exceptions  s   "r   c                  C   sx   t dd} d}d}d}d}t j| dd|| d|  ksJ t j| d	d||d d d
  d|d d d
   ks:J d S )Nr#          s      s         ?r"   r   r%   r   r   )r   ber   r   r   r;   r;   r<   test_to_wkb_byte_order  s   ":r   c                  C   s   d} d}t | }t j|dddksJ t j|ddd|ks J t j|dddd| ks-J t dd}t |td	}t j|ddd
}t|dd d	 d	ksTJ d S )NZ201010000200400000000000000000000000000000000000000Z*010100000000000000000000000000000000000000Tr   r   r"   r   )r   include_sridr     )r   r   r   	   z<u4)
r5   r}   r`   r   r6   set_sridr   Zint32Z
frombufferitem)Zewkbr   r:   r   Zpoint_with_sridrY   r;   r;   r<   test_to_wkb_srid	  s   
$r   )r&   r   r   zGEOS < 3.10.0c                  C   s   t jtdd} |  dd tddtB  ksJ t jtddd} |  dd tddtB  ks7J t jtddd} |  dd tddtB  ksSJ d S )	Nr"   r   r%   r   <Iextendedr   r   iso)r5   r   r   r   r   r   r   ISOWKBZr:   r;   r;   r<   test_to_wkb_flavor  s   ((,r  c                  C   s   t jtdd} |  dd tddtB  ksJ t jtddd} |  dd tddtB  ks7J t jtdd} |  dd tddt	B  ksRJ t jtddd} |  dd tddt
B  ksnJ d S )Nr"   r   r%   r   r  r  r  )r5   r   r   r   r   r   r   ISOWKBMr   r   ISOWKBZMr  r;   r;   r<   test_to_wkb_m_flavor%  s   (((,r
  c                   C   sD   t jtdd tjtddd W d    d S 1 sw   Y  d S )Nzcannot be used togetherrN   Tr  )r   r   )rR   rT   rg   r5   r   r   r;   r;   r;   r<   test_to_wkb_flavor_srid7  s   "r  c                   C   s>   t t tjtdd W d    d S 1 sw   Y  d S )Nr  r   )rR   rT   r   r5   r   r   r;   r;   r;   r<   #test_to_wkb_flavor_unsupported_geos=  s   "r  zgeom,expectedrn   )idr   zPOINT M EMPTYzPOINT ZM EMPTYzMULTIPOINT EMPTYzMULTIPOINT Z EMPTYzMULTIPOINT M EMPTYzMULTIPOINT ZM EMPTYz GEOMETRYCOLLECTION (POINT EMPTY)z"GEOMETRYCOLLECTION (POINT Z EMPTY)z"GEOMETRYCOLLECTION (POINT M EMPTY)z#GEOMETRYCOLLECTION (POINT ZM EMPTY)z%GEOMETRYCOLLECTION (MULTIPOINT EMPTY)z'GEOMETRYCOLLECTION (MULTIPOINT Z EMPTY)z'GEOMETRYCOLLECTION (MULTIPOINT M EMPTY)z(GEOMETRYCOLLECTION (MULTIPOINT ZM EMPTY)c                 C   v   t j| ddd}d}t|| }t||| ksJ |d | |d | ks(J ttd||d   s9J d S )Nr%   r"   r      <2dr5   r   r   r   isnanr   unpackrp   rb   r9   r:   Zcoordinate_lengthheader_lengthr;   r;   r<   test_to_wkb_point_empty_2dC  s   F&r  c                 C   r  Nr&   r"   r      z<3dr  r  r;   r;   r<   test_to_wkb_point_empty_z  s   &&r  c                 C   r  r  r  r  r;   r;   r<   test_to_wkb_point_empty_m     &r  c                 C   r  )Nr'   r"   r       z<4dr  r  r;   r;   r<   test_to_wkb_point_empty_zm  r  r  c                 C   r  )Nr&   r"   r   r  r  r  r  r;   r;   r<   'test_to_wkb_point_empty_2d_output_dim_3  s   &r  zwkb,expected_type,expected_dimPOINT_NAN_WKBPOINTZ_NAN_WKBMULTIPOINT_NAN_WKBMULTIPOINTZ_NAN_WKBGEOMETRYCOLLECTION_NAN_WKBGEOMETRYCOLLECTIONZ_NAN_WKBNESTED_COLLECTION_NAN_WKBNESTED_COLLECTIONZ_NAN_WKBc                 C   s@   t | }t |sJ t ||ksJ t ||ksJ d S r?   )r5   r}   rq   r   get_coordinate_dimension)r   expected_typeZexpected_dimrb   r;   r;   r<   test_from_wkb_point_empty.  s   
r)  zwkb,expected_typePOINTM_NAN_WKBMULTIPOINTM_NAN_WKBGEOMETRYCOLLECTIONM_NAN_WKBNESTED_COLLECTIONM_NAN_WKBc                 C   s\   t | }t |sJ t ||ksJ t |dksJ t |r%J t |s,J d S )Nr&   r5   r}   rq   r   r'  has_zhas_mr   r(  rb   r;   r;   r<   test_from_wkb_point_empty_mE  s   
r2  POINTZM_NAN_WKBMULTIPOINTZM_NAN_WKBGEOMETRYCOLLECTIONZM_NAN_WKBNESTED_COLLECTIONZM_NAN_WKBc                 C   s\   t | }t |sJ t ||ksJ t |dksJ t |s%J t |s,J d S )Nr'   r.  r1  r;   r;   r<   test_from_wkb_point_empty_zm\  s   
r7  c                  C   s:   t td} t j| dd}t |}t |dksJ d S )Ni  T)r   )r5   r   r   r   r}   get_srid)r9   r   r:   r;   r;   r<   test_to_wkb_point_empty_sridu  s   
r9  c                 C   s"   t | }tt || dd d S Nr   Z	tolerance)pickledumpsr   loadsrb   pickledr;   r;   r<   test_pickle|  s   
rA  c                 C   sN   t | }t |}t|| dd |js|jsJ tjdkr#|jr%J d S d S )Nr   r;  r   )	r<  r=  r>  r   rq   r/  r5   rw   r0  rb   r@  r:   r;   r;   r<   test_pickle_z  s   




rC  c                 C   sD   t | }t |}t|| dd |jrJ |js|js J d S d S r:  )r<  r=  r>  r   r/  rq   r0  rB  r;   r;   r<   test_pickle_m  s   



rD  c                 C   sD   t | }t |}t|| dd |js|jsJ |js J d S d S r:  )r<  r=  r>  r   rq   r/  r0  rB  r;   r;   r<   test_pickle_zm  s   



rE  c                 C   s2   t | d} t| }t t|dksJ d S )Nr   )r5   r   r<  r=  r8  r>  r?  r;   r;   r<   test_pickle_with_srid  s   
rF  )r&   r   r"   zGEOS < 3.10.1zgeojson,expectedGEOJSON_GEOMETRYGEOJSON_FEATUREGEOJSON_FEATURECOLECTIONZGEOJSON_GEOMETRYx2NoneZGEOJSON_GEOMETRY_Nonec                 C   s   t | }t|| d S r?   )r5   from_geojsonr   )geojsonr9   r:   r;   r;   r<   test_from_geojson  s   
rM  c                   C   s`  t jtdd td W d    n1 sw   Y  t jtjdd td W d    n1 s4w   Y  t jtjdd td W d    n1 sQw   Y  t jtjdd td	 W d    n1 snw   Y  t jtjd
d td W d    n1 sw   Y  t jtjd
d td W d    d S 1 sw   Y  d S )NrC   rN   r"   zError parsing JSONrD   zUnknown geometry typez){"type": "NoGeometry", "coordinates": []}ztype must be array, but is nullz+{"type": "LineString", "coordinates": null}zkey 'type' not foundz${"geometry": null, "properties": []}z{"no": "geojson"})rR   rT   r   r5   rK  r   r;   r;   r;   r<   test_from_geojson_exceptions  s$   "rN  c                   C   sJ   t jtdd tjdddd u sJ W d    d S 1 sw   Y  d S )NzInvalid GeoJSONrN   rD   rF   rP   )rR   rS   Warningr5   rK  r;   r;   r;   r<   !test_from_geojson_warn_on_invalid  s   "rP  c                   C   sN   t   t d tjdddd u sJ W d    d S 1 s w   Y  d S )NrV   rD   rE   rP   )warningscatch_warningssimplefilterr5   rK  r;   r;   r;   r<   #test_from_geojson_ignore_on_invalid  s   

"rT  c                   C   sB   t jtdd tjtdd W d    d S 1 sw   Y  d S )NrH   rN   rG   rP   )rR   rT   rg   r5   rK  rG  r;   r;   r;   r<   /test_from_geojson_on_invalid_unsupported_option  s   "rU  zGEOS < 3.10zexpected,geometryc                 C   s*   t j| dd}t|t|ksJ d S )Nr'   r*   )r5   
to_geojsonr   rp   Zasarray)r-   r9   r:   r;   r;   r<   test_to_geojson  s   rW  r+   )Nr   r'   c                 C   sD   | d u rdnd}t jt t| |d}tjt| d}||ks J d S )N),:)rX  z: )r+   
separatorsr*   )jsonr=  r>  rG  r5   rV  GEOJSON_GEOMETRY_EXPECTED)r+   rZ  r9   r:   r;   r;   r<   test_to_geojson_indent  s   r]  c                   C   s:   t t td W d    d S 1 sw   Y  d S r|   )rR   rT   r   r5   rV  r;   r;   r;   r<   test_to_geojson_exceptions  s   "r^  r&   r   r%   zGEOS < 3.10.2c                 C   s   |  tt| sJ d S r?   )r   r5   rK  rV  r   r;   r;   r<   test_to_geojson_point_empty#  s   r`  c                 C   s   t | }|t jjkrtd n| jr$|t jjkr$t jdk r$td t 	| }t 
|}|jr3J t | |g}| rF| sDJ d S t||  d S )Nz(Linearrings are not preserved in GeoJSONr_  zGEOS < 3.10.2 with POINT EMPTY)r5   r   r   r   rR   r   rq   ZPOINTrw   rV  rK  r/  anyrp   r   )rb   Ztype_idrL  r:   Zgeoms_are_emptyr;   r;   r<   test_geojson_all_types3  s   





rb  )r[  r<  r   rQ  
contextlibr   numpyr   rR   r5   r   r   r   r   r   r   r	   r
   r   Zshapely.errorsr   Zshapely.testingr   Zshapely.tests.commonr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r   r~   floatZNANr  r   r*  r3  r!  r"  r+  r4  r#  r$  r,  r5  r%  r&  r-  r6  ZINVALID_WKBr=  rG  rH  rI  r6   r\  r   ZpolygonsZGEOJSON_COLLECTION_EXPECTEDr=   r@   markZparametrizer   rO  rg   rZ   Zskipifrw   rc   rj   rm   rr   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r$   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  paramr   r  r  r  r  r  r)  r2  r7  r9  rA  rC  rD  rE  rF  rM  rN  rP  rT  rU  rW  r]  r^  r   r`  rb  r;   r;   r;   r<   <module>   s   ,P	'+  		









	




	







	

	

	











	













E




%









	


			