o
    Jf"                 "   @   sI  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Zd dl	Z	d dl
mZ d dlZd dl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 edd Zd	Ze	j d
ddd Z!e	j d
ddd Z"e	j d
ddd Z#e	j$%dg d d fegddfdgd d fedgddfeeegd d feeeegddfgdd Z&dd Z'dd Z(dd Z)dd Z*e	j$j+ej,-ddd d!d" Z.e	j$%d#d$d$ged d d%gg d&dgge	j$/d'd(d) Z0d*d+ Z1e	j$%d,g eg fg egg g gfg dg fg dgg g gfdgeg fdgegg g gfdgdg fdgdgg g gfegdg fegdgg g gfegeg fegegg g gfegeg fegegg g gfeegeg feegegg g gfdeged d d-d-dgfdeged d d-d-gd gdggfdeeged d d-d-dgfedeged d d-d-d dgfedeged d d-d-gd d gd dggfeegeegdgdggfeeeegeeeegd.gd.ggfgd/d0 Z2e	j$%d1ed2d2g fed2d2gg g gfedddgfeddgd gdggfedded3d3eddgd dgddggfed d ddd dgfed d ddgd d gd dggfed4d4d5d5g d6fed4d4d5d5gg d7g d6gfed d dded8d8d9d9ed4d4d5d5gg d:g d;gfe3ed.d.dg d<fe3ed.d.dgg d=g d<gfed4d>gd>d4ggg d?fed4d>gd>d4gggg d=g d?gfgd@dA Z4e	j$%d1ed d d gfed d gd gd ggfed2d2d gfed2d2gd gd ggfed d2d gfed d2gd gd ggfeddd dgfeddgd d gd dggfed d ddd dgfed d ddgd d gd dggfe3ed.d.d2dd.gfe3ed.d.d2gd d gdd.ggfed4d>gd>d4ggg dBfed4d>gd>d4gggg dCg dBgfgdDdE Z5e	j$%d1ed2d2d dgfed2d2gd d gd dggfedddgfeddgd gdggfed d ddd dgfed d ddgd d gd dggfed d dFdFg dGfed d dFdFgg d=g dGgfed d dded8d8d9d9eddd.d.gg dHg dIgfe3ed.d.eg d<fe3ed.d.egg d=g d<gfe3ed.d.d.e g dJfe3ed.d.d.e gg d7g dJgfed4d>gd>d4ggg d?fed4d>gd>d4gggg d=g d?gfgdKdL Z6e	j$%dMdNdOgdPdQ Z7e	j$%dRdSg dGfdTg fdUdgfdVg fdWg fdXg dGfdYg fdZdgfgd[d\ Z8d]d^ Z9e	j$%dRe	j:dSdge	j$j;ed_k d`d dae	j:dTg e	j$j;edbk dcd dae	j:dUg e	j$j;edbk dcd dadVg fdWdgfddg fe	j:dXg e	j$j;edbk dcd dae	j:dYg e	j$j;edbk dcd dae	j:dZg e	j$j;edbk dcd dag	dedf Z<e	j$%d1ed2d2g fed2d2gg g gfedddgfeddgd gdggfed.d.dgdgg dhfed.d.dgdggg dCg dhgfed d dded8d8d9d9ed.d.dgdggg dig djgfe3ed.d.dd.gfe3ed.d.dgd gd.ggfe3ed.d.d.e g d<fe3ed.d.d.e gg d=g d<gfed4d4gd>d>ggd4d>gfed4d4gd>d>gggd d gd4d>ggfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>ggd>gfed4d>gd>d>gggd gd>ggfgdkdl Z=e	j$%d1ed d d gfed d gd gd ggfed2d2d gfed2d2gd gd ggfed d2g fed d2gg g gfeddd dgfeddgd d gd dggfed d ddd dgfed d ddgd d gd dggfed d dded8d8d9d9eddd.d.gg dmg dngfe3ed.d.d2dd.gfe3ed.d.d2gd d gdd.ggfe3eddedgfe3eddegd gdggfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>ggdgd>gfed4d>gd>d>gggd d gdgd>ggfgdodp Z>e	j$%d1ed d2d gfed d2gd gd ggfed2d d gfed2d gd gd ggfed2d2d dgfed2d2gd d gd dggfedddgfeddgd gdggfed d ddd dgfed d ddgd d gd dggfed d dFdFg dGfed d dFdFgg d=g dGgfed d dded8d8d9d9eddd.d.gg dHg dIgfe3ed.d.eg d<fe3ed.d.egg d=g d<gfe3ed.d.d.e g dJfe3ed.d.d.e gg d7g dJgfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>ggd>gfed4d>gd>d>gggd gd>ggfgdqdr Z?e	j$%d1ed2d2g fed2d2gg g gfedddgfeddgd gdggfed.d.dgdgg fed.d.dgdggg g gfe3ed.d.dg fe3ed.d.dgg g gfed4d4gd>d>ggg fed4d4gd>d>gggg g gfed4d>gd>d>ggg fed4d>gd>d>gggg g gfed4d>gd>d4ggg fed4d>gd>d4gggg g gfgdsdt Z@e	j$%d1ed d g fed d gg g gfed2d2d gfed2d2gd gd ggfed d2g fed d2gg g gfeddg feddgg g gfed d ddg fed d ddgg g gfe3ed.d.d2g fe3ed.d.d2gg g gfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>ggg fed4d>gd>d>gggg g gfedudugd>d>ggdggfedudugd>d>gggd gdgggfgdvdw ZAe	j$%d1ed d2d gfed d2gd gd ggfed2d d gfed2d gd gd ggfed2d2d dgfed2d2gd d gd dggfedddgfeddgd gdggfed d ddg fed d ddgg g gfed d d2d2d gfed d d2d2gd gd ggfed d dFdFg fed d dFdFgg g gfe3ed.d.ed.gfe3ed.d.egd gd.ggfe3ed.d.d.e g fe3ed.d.d.e gg g gfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>ggg fed4d>gd>d>gggg g gfedxdygdxdzggd4gfedxdygdxdzgggd gd4ggfgd{d| ZBe	j$%d1ed2d2g fed2d2gg g gfedddgfeddgd gdggfed.d.dgdgd}d4gfed.d.dgdggd d gd}d4ggfe3ed.d.dd.gfe3ed.d.dgd gd.ggfe3ed.d.d.e g d<fe3ed.d.d.e gg d=g d<gfed4d4gd>d>ggd4d>gfed4d4gd>d>gggd d gd4d>ggfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>ggd>gfed4d>gd>d>gggd gd>ggfgd~d ZCe	j$%d1ed d g fed d gg g gfed d ddd gfed d ddgd gd ggfe3ed.d.d2g fe3ed.d.d2gg g gfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>ggg fed4d>gd>d>gggg g gfed4d4gdgdgggg fed4d4gdgdggggg g gfgdd ZDe	j$%d1ed d g fed d gg g gfed d ddg fed d ddgg g gfed d dddgfed d ddgd gdggfe3ed.d.eg fe3ed.d.egg g gfe3ed.d.d.e d.gfe3ed.d.d.e gd gd.ggfed4d>gd>d4ggg fed4d>gd>d4gggg g gfgdd ZEe	j$%d1ed2d2g fed2d2gg g gfeddg feddgg g gfed.d.dgdgg fed.d.dgdggg g gfe3ed.d.dg fe3ed.d.dgg g gfed4d4gd>d>ggg fed4d4gd>d>gggg g gfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>ggg fed4d>gd>d>gggg g gfgdd ZFe	j$%d1ed d g fed d gg g gfed d dFdFg fed d dFdFgg g gfe3ed.d.d2g fe3ed.d.d2gg g gfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>ggg fed4d>gd>d>gggg g gfed4d4gdgdgggg fed4d4gdgdggggg g gfgdd ZGe	j$%d1ed d g fed d gg g gfed d ddd dgfed d ddgd d gd dggfed d ddd dgfed d ddgd d gd dggfe3ed.d.edd}gfe3ed.d.egd d gdd}ggfe3ed.d.d.e g dfe3ed.d.d.e gg dCg dgfed4d>gd>d>ggg fed4d>gd>d>gggg g gfgdd ZHe	j$%d1eddg fed.d.dgdgg fe3ed.d.dg fed4d>gd>d>ggg fgdd ZIe	j$%d1ed d g fed d gg g gfed d dFdFdgfed d dFdFgd gdggfe3ed.d.d2dd.gfe3ed.d.d2gd d gdd.ggfeJddgd gfeJddggd gd ggfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>gd>dggg fed4d>gd>d>gd>dgggg g gfgdd ZKe	j$%d1ed d2g fed d2gg g gfed d dFdFg fed d dFdFgg g gfe3ed.d.eg fe3ed.d.egg g gfed4d>gd>d>gd>dggd>gfed4d>gd>d>gd>dgggd gd>ggfgdd ZLe	j$%d1ed2d2g fed2d2gg g gfeddg feddgg g gfed.d.dgdgd.dggfed.d.dgdggd d gd.dgggfe3ed.d.dg fe3ed.d.dgg g gfeddgdgfeddggd gdggfed4d4gd>d>ggg fed4d4gd>d>gggg g gfgdd ZMe	j$%d1ed d d gfed d gd gd ggfed2d2g fed2d2gg g gfeddd dgfeddgd d gd dggfed d dddgfed d ddgd gdggfe3ed.d.d2g fe3ed.d.d2gg g gfe3edded g fe3edded gg g gfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>gd>dggdgd>gfed4d>gd>d>gd>dgggd d gdgd>ggfgdd ZNe	j$%d1ed d2g fed d2gg g gfeee d d gfeee d gd gd ggfed d ddg fed d ddgg g gfeee d ddd gfeee d ddgd gd ggfe3ed.d.ee g fe3ed.d.ee gg g gfed d gd>d>gd>dggg fed d gd>d>gd>dgggg g gfgdd ZOe	j$%d1ed2d2g fed2d2gg g gfedddgfeddgd gdggfed.d.dgdgg dhfed.d.dgdggg dCg dhgfe3ed.d.dd.gfe3ed.d.dgd gd.ggfe3ed.d.d.e g d<fe3ed.d.d.e gg d=g d<gfed4d4gd>d>ggd4d>gfed4d4gd>d>gggd d gd4d>ggfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>ggd>gfed4d>gd>d>gggd gd>ggfgdd ZPe	j$%d1ed d g fed d gg g gfed d dFdFd gfed d dFdFgd gd ggfeddd.d.ddgfeddd.d.gd d gddggfe3ed.d.d2g fe3ed.d.d2gg g gfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>ggg fed4d>gd>d>gggg g gfed4d4gdgdgggg fed4d4gdgdggggg g gfgdd ZQe	j$%d1ed d g fed d gg g gfed d ddg fed d ddgg g gfed d dddgfed d ddgd gdggfe3ed.d.eg fe3ed.d.egg g gfe3ed.d.d.e d.gfe3ed.d.d.e gd gd.ggfed4d>gd>d4ggg fed4d>gd>d4gggg g gfgdd ZRe	j$%d1ed2d2g fed2d2gg g gfedddgfeddgd gdggfed.d.dgdgg fed.d.dgdggg g gfe3ed.d.dg fe3ed.d.dgg g gfed4d4gd>d>ggg fed4d4gd>d>gggg g gfed4d>gd>d>ggg fed4d>gd>d>gggg g gfed4d>gd>d4ggg fed4d>gd>d4gggg g gfgdd ZSe	j$%d1ed d d gfed d gd gd ggfed2d2d gfed2d2gd gd ggfed d2g fed d2gg g gfeddd dgfeddgd d gd dggfeJddgddggdgfeJddgddgggd gdggfeJdFdFgddggg feJdFdFgddgggg g gfed d ddg fed d ddgg g gfe3ed.d.d2g fe3ed.d.d2gg g gfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>ggg fed4d>gd>d>gggg g gfedudugd>d>ggdggfedudugd>d>gggd gdgggfgdd ZTe	j$%d1ed d2d gfed d2gd gd ggfed2d d gfed2d gd gd ggfedddgfeddgd gdggfed2d2d dgfed2d2gd d gd dggfeJd d gddggg feJd d gddgggg g gfeJdFdFgddggdgfeJdFdFgddgggd gdggfed d ddg fed d ddgg g gfed d d2d2d gfed d d2d2gd gd ggfed d dFdFg fed d dFdFgg g gfe3ed.d.ed.gfe3ed.d.egd gd.ggfe3ed.d.d.e g fe3ed.d.d.e gg g gfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>ggg fed4d>gd>d>gggg g gfedxdygdxdzggd4gfedxdygdxdzgggd gd4ggfgdd ZUe	j$%d1ed2d2g fed2d2gg g gfedddgfeddgd gdggfeJd d gddggdgfeJd d gddgggd gdggfeJd2d2gddggddgfeJd2d2gddgggd d gddggfeJd dgdd ggdgfeJd dgdd gggd gdggfed.d.dgdgd}d4gfed.d.dgdggd d gd}d4ggfe3ed.d.dd.gfe3ed.d.dgd gd.ggfe3ed.d.d.e g d<fe3ed.d.d.e gg d=g d<gfed4d4gd>d>ggd4d>gfed4d4gd>d>gggd d gd4d>ggfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>ggd>gfed4d>gd>d>gggd gd>ggfgdd ZVe	j$%d1ed d g fed d gg g gfeJd d gddggg feJd d gddgggg g gfeJd d gddggg feJd d gddgggg g gfeJd dgdd ggg feJd dgdd gggg g gfed4d>gd>d4ggg fed4d>gd>d4gggg g gfed4d>gd>d>ggg fed4d>gd>d>gggg g gfed4d4gdgdgggg fed4d4gdgdggggg g gfed d ddg fed d ddgg g gfed d ddg fed d ddgg g gfe3ed.d.d2g fe3ed.d.d2gg g gfgdd ZWe	j$%d1ed d g fed d gg g gfeJd d gddggg feJd d gddgggg g gfed d ddg fed d ddgg g gfed d dddgfed d ddgd gdggfe3ed.d.eg fe3ed.d.egg g gfe3ed.d.d.e d.gfe3ed.d.d.e gd gd.ggfed4d>gd>d4ggg fed4d>gd>d4gggg g gfgdd ZXe	j$j+edkdd e	j$%d#ed d ed d gddgeeggdd ZYe	j$j+edk dd e	j$%ded d ddfed d gddfed d ddfed d gddfed d gdgdfed d d dgdfed d gd dgdfed d dggdfed d gdggdfg	dd ZZe	j$j+edk dd e	j$%dg ddg fdgdg g gfeddd g feddgd g g gfeddd3g feddgd3g g gfeddej[g feddgej[g g gfe dg fe gdg g gfeddd2d gfeddgd2d gd ggfedddg dGfeddgdg d=g dGgfed.d.dFg d<fed.d.gdFg d=g d<gfed2d2dd dgfed2d2gdd d gd dggfded2d2gdddgd dggfed2d2eddgdg dg d¢gfed dÃeddăgddgg dŢg dIgfed d d.d.d g dIfed d d.d.gd g dCg dIgfed d d.d.dg dIfed d d.d.gdg dCg dIgfedddddFg dIfeddddgdFg dCg dIgfeddgdFdFggdg dGfeddgdFdFgggdg d=g dGgfed2d2gddggdg dǢfed2d2gddgggdg dCg dǢgfddɄ Z\e	j$j+edk dd e	j$%dddg fdgdg g gfed2d2d d gfed2d2gd d gd ggfed2d2dd dgfed2d2gdd d gd dggfeddd2ddgfeddgd2d d gddggfed d ddd2d dgfed d ddgd2d d gd dggfed2d2dFdFd2d dgfed2d2dFdFgd2d d gd dggfed4d4gd>d>ggd2g dBfed4d4gd>d>gggd2g dCg dBgfed4d>gd>d4ggdFd4dggfed4d>gd>d4gggdFd d gd4dgggfgdd˄ Z]e	j$j+edk dd e	j$%ded d d d gfed d gd d gd ggfed d d2d gfed d gd2d gd ggfed d dFd dgfed d gdFd d gd dggfed2d2dd dgfed2d2gdd d gd dggfed2d2d2d dgfed2d2gd2d d gd dggfed d ddd d dgfed d ddgd d d gd dggfed d dddg dGfed d ddgdg d=g dGgfed4d4gd>d>ggd2d4d>gfed4d4gd>d>gggd2d d gd4d>ggfed4d4gd>d>ggdg d̢fed4d4gd>d>gggdg d͢g d̢gfgddτ Z^ddф Z_e	j$%d#d$gddӄ Z`e	j$%d#ddgedddggddՄ Zae	j$%d#eegeddeggddׄ Zbe	j$%d1eddd fedddfedddfedded d gdd gfeddeddgddgfedd؃ed8d8gd dgfed2d2dddfe3eddedfe3ed.d.ed.fedyd4gd>d>ggd>fed4d>gd>d4ggdgfgddۄ Zce	j$%d1ed2d2d dgfed d d.d.g dIfed4d4gd>d>ggd4d>gfgdd݄ Zde	j$%d1ed2d2d fedFd2d fed2dFdddfeJd d2gddggd fgdd߄ Zee	j$%d1eddddgfed d ddd dgfed2d2dFdFd dgfed.d.d4d4g dfe3eddeddgfe3ed.d.edd.gfed4d4gd>d>ggg dBfedyd4gd>d>ggdgd>gfed4d>gd>d4ggd4dggfg	dd Zfe	j$%d1ed d d fedddfed d4ddgd.fed4d>gd>d4ggdgfgdd Zge	j$%d1ed2d2d dgfed d ddd dgfed2d2dFdFg dGfed.d.d4d4g dfe3eddedd.gfe3ed.d.eg d<fed4d4gd>d>ggd4d>gfedyd4gd>d>ggd4d>gfgdd Zhdd Zie	j$%d#d$d%ggdd Zje	j$%dddg fdgdg g gfddg g ffdgdg g gg ffgdd Zke	j$%d1eg fegg g gfeegddgdd.ggfgdd Zle	j$%d1eddd gfeddgd gd ggfedddgfeddgd gdggfedddgfeddgd gdggfed2d2d dgfed2d2gd d gd dggfedded d gd dgdd ggfeddeddgd dgddggfedd؃ed8d8gd dgd dggfed2d2dddgfed2d2ddgd gdggfed d d.d.g dIfed d d.d.gg dCg dIgfe3eddddd.gfe3edddgd d gdd.ggfe3ed.d.d2d.gfe3ed.d.d2gd gd.ggfedyd4gd>d>ggd>gfedyd4gd>d>gggd gd>ggfed4d>gd>d4ggdggfed4d>gd>d4gggd gdgggfed4d4gd>d>ggd4d>gfed4d4gd>d>gggd d gd4d>ggfed2d2gddggg dǢfed2d2gddgggg dCg dǢgfgdd Zme	j$%d1ed2d2d gfed2d2gd gd ggfeddddgfeddgd d gddggfed d ddd dgfed d ddgd d gd dggfed2d2dFdFd dgfed2d2dFdFgd d gd dggfed d d2d2ed.d.d4d4gg dg dgfe3edddg dfe3edddgg d=g dgfe3ed.d.d2dd.gfe3ed.d.d2gd d gdd.ggfed4d4gd>d>ggg dBfed4d4gd>d>gggg dCg dBgfedyd4gd>d>ggdgd>gfedyd4gd>d>gggd d gdgd>ggfed4d>gd>d4ggd4dggfed4d>gd>d4gggd d gd4dgggfgdd Zne	j$%d1ed d d gfed d gd gd ggfedddgfeddgd gdggfed2d2d dgfed2d2gd d gd dggfed d ddd dgfed d ddgd d gd dggfed2d2dFdFg dGfed2d2dFdFgg d=g dGgfed d dded.d.d4d4gg dg dgfe3eddedd.gfe3eddegd d gdd.ggfe3ed.d.eg d<fe3ed.d.egg d=g d<gfed4d4gd>d>ggd4d>gfed4d4gd>d>gggd d gd4d>ggfedyd4gd>d>ggd4d>gfedyd4gd>d>gggd d gd4d>ggfed4d>gd>d4ggdggfed4d>gd>d4gggd gdgggfgdd Zoe	j$%ded2d2dd dgfed2d2gdd d gd dggfed2d2d-d dgfed2d2gd-d d gd dggfed2d2dg fed2d2gdg g gfed2d2ed d gddgd ggfgd d Zpe	j$%ded2d2d fed2d2gd fed2d2d3fed2d2gd3fgdd Zqdd Zre	j$%d1ed d d gdgffed d gd gd ggdgffed2d2d dgddgffed2d2gd d gd dggddgffed d ddd dgddgffed d ddgd d gd dggddgffgd	d
 Zse	j$%deddddgfeddgdd gdggfedddd dgfeddgdd d gd dggfeddeddgdg dg dgfgdd Zte	j$%d1eddg feddgg g gfgdd Zue	j$%dedddfedddgfeddgg feddgdgfgdd Zve	j$%dedddfedddgfeddgg feddgdgfgdd Zwdd Zxdd ZydS (      N)ThreadPoolExecutor)assert_array_equal)boxgeos_version
LineString
MultiPointPointSTRtree)UnsupportedGEOSVersionError)assert_geometries_equal)emptyempty_line_stringempty_pointignore_invalidpoint   g&.>session)scopec                  c   s(    t tdtd} t| V  d S )N
   )shapelypointsnparanger	   geoms r   f/home/deployuser/azure_apps/autowriter/venv/lib/python3.10/site-packages/shapely/tests/test_strtree.pytree   s   r   c                  c   sN    t d} t d}d}tt | | | g||| ggj}t|V  d S )Nr      )r   r   r   linestringsarrayTr	   )xyoffsetr   r   r   r   	line_tree#   s   

&r%   c                  c   s8    t jt tdtdtt dd} t| V  d S )Nr       )	quad_segs)r   bufferr   r   r   HALF_UNIT_DIAGEPSr	   r   r   r   r   	poly_tree,   s
   r+   zgeometry,count, hitsr   c                 C   s:   t | }t||ksJ |tddddj|ksJ d S )Nr   d   )r	   lenqueryr   size)geometrycounthitsr   r   r   r   	test_init6   s   "r3   c                   C   s:   t t tdg W d    d S 1 sw   Y  d S )NzNot a geometry)pytestraises	TypeErrorr	   r   r   r   r   test_init_with_invalid_geometryK   s   "r7   c                  C   s^   t  } t dd}| |g}t|}d } d }dd l}|  |tdddd dgks-J d S )Nr   r   )r   r	   gccollectr.   r   tolist)point1point2r   r   r8   r   r   r   test_referencesP   s   
&r=   c                  C   sJ   t tdtd} t| }d | d d < dd l}|  |t d S )Nr   r   )	r   r   r   r   r	   r8   r9   r.   r   )arrr   r8   r   r   r   test_flush_geometriesb   s   r?   c                  C   sD   t tg} t| }t| |j tdd| d< tt|jd  d S )Nr   )r   r    r   r	   r   
geometriesr   r   )r>   r   r   r   r   test_geometries_propertyo   s
   rA   win32zdoes not run on Appveyor)reasonc                 C   s   t dd tdD }t|}d}| d }t|d}|| W d    n1 s+w   Y  tjtj	t
|gtjd}|j|d |  |jd	ksNJ d S )
Nc                 S   s   g | ]
}t ||d qS )皙?)r   r(   ).0ir   r   r   
<listcomp>~   s    z+test_pickle_persistence.<locals>.<listcomp>   a0  
import pickle
import sys

from shapely import Point, geos_version

pickled_strtree = sys.stdin.buffer.read()
print("received pickled strtree:", repr(pickled_strtree))
tree = pickle.loads(pickled_strtree)

tree.query(Point(0, 0))
if geos_version >= (3, 6, 0):
    tree.nearest(Point(0, 0))
print("done")
zunpickle-strtree.pyw)stdin)inputr   )r	   rangepickledumpsopenwrite
subprocessPopensys
executablestrPIPEcommunicatewait
returncode)tmp_pathr   pickled_strtreeunpickle_scriptfilenameoutprocr   r   r   test_pickle_persistence{   s   
r`   r0   zI am not a geometryzstill not a geometryzin a mixed arrayz8ignore:Creating an ndarray from ragged nested sequences:c                 C   s>   t ttf | | W d    d S 1 sw   Y  d S N)r4   r5   r6   
ValueErrorr.   r   r0   r   r   r   test_query_invalid_geometry   s   "rd   c                 C   sH   t jtdd | tddgg W d    d S 1 sw   Y  d S )NzArray should be one dimensionalmatch      ?)r4   r5   r6   r.   r   r   r   r   r   test_query_invalid_dimension   s   "ri   z tree_geometry, geometry,expectedr   rH   c                 C   s   t | }t||| d S ra   )r	   r   r.   )tree_geometryr0   expectedr   r   r   r   test_query_with_none_and_empty   s   (rl   zgeometry,expectedrg         )rn            	   )r   r   r   r   r   r,   n   )r   r   r   r   r   r   r   )r   r   rn   rp   rq   rr   rs   )r   rH      )r   r   r   rq   )rn   rp   rq   c                 C      t | || d S ra   r   r.   r   r0   rk   r   r   r   test_query_points   s   "ry   )ru   rn   rp   rq   )r   r   r   r   c                 C   rv   ra   rw   r%   r0   rk   r   r   r   test_query_lines  s   r{   g      ?)r   r   r   )r   r   r   r   )r   r   r   rH   )r   r   rH   ru   rn   c                 C   rv   ra   rw   r+   r0   rk   r   r   r   test_query_polygons   s   &r}   	predicatebad_predicatedisjointc                 C   sH   t jtdd | jtdd|d W d    d S 1 sw   Y  d S )Nzis not a valid optionre   r   r~   )r4   r5   rb   r.   r   )r   r~   r   r   r   test_query_invalid_predicateI  s   	"r   zpredicate,expected
intersectswithincontainsoverlapscrossescovers
covered_bycontains_properlyc                 C   s0   t dddd}t| t| j||d| d S )Nr   r   r   )r   r   preparer   r.   )r   r~   rk   geomr   r   r   test_query_prepared_inputsV  s   
r   c                 C   sV   t tddddtddddg}| j|dd}t|d  t|| j|dd d S )Nr   r   rH   rn   r   r   )r   r    r   r.   r   r   r   )r   r   rk   r   r   r   )test_query_with_partially_prepared_inputsi  s   "r   rH      r   zGEOS < 3.13)marks)rH   rr   r   z
GEOS < 3.8touchesc                 C   s   t   tddgdtdg}W d    n1 sw   Y  tdk rCttj | j||d W d    d S 1 s<w   Y  d S t	| j||d| d S )Nr   nanr   r   )
r   r   r   floatr   r4   r5   GEOSExceptionr.   r   )r   r~   rk   line_nanr   r   r   test_query_predicate_errorsr  s   '"r   rp   )rH   ru   rn   rp   )r   r   r   r   r   r   )r   r   rH   ru   rn   rp   c                 C      t | j|dd| d S Nr   r   rw   rx   r   r   r   test_query_intersects_points  s   4r   )r   r   r   r   r   )r   r   r   r   rH   c                 C   r   r   rw   rz   r   r   r   test_query_intersects_lines  s   %r   c                 C   r   r   rw   r|   r   r   r   test_query_intersects_polygons     .r   c                 C   r   Nr   r   rw   rx   r   r   r   test_query_within_points6     r   g      @c                 C   r   r   rw   rz   r   r   r   test_query_within_linesU      r   g      @g      @g      @c                 C   r   r   rw   r|   r   r   r   test_query_within_polygonsx  s   )r   ru   c                 C   r   Nr   r   rw   rx   r   r   r   test_query_contains_points  r   r   c                 C   r   r   rw   rz   r   r   r   test_query_contains_lines     r   c                 C   r   r   rw   r|   r   r   r   test_query_contains_polygons     r   c                 C   r   Nr   r   rw   rx   r   r   r   test_query_overlaps_points  s   r   c                 C   r   r   rw   rz   r   r   r   test_query_overlaps_lines#  r   r   )r   r   ru   rn   c                 C   r   r   rw   r|   r   r   r   test_query_overlaps_polygons?     r   c                 C   r   Nr   r   rw   rx   r   r   r   test_query_crosses_points`  s   r   )r   r   )r   r   rr   c                 C   r   r   rw   rz   r   r   r   test_query_crosses_linesq  r   r   c                 C   r   r   rw   r|   r   r   r   test_query_crosses_polygons  s   r   )rm   rm   )r   r   c                 C   r   Nr   r   rw   rx   r   r   r   test_query_touches_points  r   r   gHz>c                 C   r   r   rw   rz   r   r   r   test_query_touches_lines  s   r   c                 C   r   r   rw   r|   r   r   r   test_query_touches_polygons  r   r   c                 C   r   Nr   r   rw   rx   r   r   r   test_query_covers_points  r   r   c                 C   r   r   rw   rz   r   r   r   test_query_covers_lines  r   r   c                 C   r   r   rw   r|   r   r   r   test_query_covers_polygons=  r   r   c                 C   r   Nr   r   rw   rx   r   r   r   test_query_covered_by_pointsZ  r   r   g      @c                 C   r   r   rw   rz   r   r   r   test_query_covered_by_linesy  s   'r   c                 C   r   r   rw   r|   r   r   r   test_query_covered_by_polygons  r   r   c                 C   r   Nr   r   rw   rx   r   r   r   #test_query_contains_properly_points  s   *r   c                 C   r   r   rw   rz   r   r   r   "test_query_contains_properly_lines  s   r   c                 C   r   r   rw   r|   r   r   r   %test_query_contains_properly_polygons%  s   r   )rH   r   r   zGEOS >= 3.10c                 C   sD   t jtdd | j|ddd W d    d S 1 sw   Y  d S )Nzrequires GEOS >= 3.10re   dwithinr   r~   distance)r4   r5   r
   r.   rc   r   r   r   test_query_dwithin_geos_versionI  s   "r   zGEOS < 3.10zgeometry,distance,matchz#distance parameter must be providedfooz!could not convert string to floatz.Could not broadcast distance to match geometryg      ?zshould be one dimensionalc                 C   sD   t jt|d | j|d|d W d    d S 1 sw   Y  d S )Nre   r   r   )r4   r5   rb   r.   )r   r0   r   rf   r   r   r   #test_query_dwithin_invalid_distanceR  s   "r   zgeometry,distance,expectedg      ?g      ?)r   r   r   )r   r   r   g?g      ?)r   r   r   r   g      @)r   r   rH   ru   c                 C      t | j|d|d| d S Nr   r   rw   )r   r0   r   rk   r   r   r   test_query_dwithin_pointsf  s   Er   c                 C   r   r   rw   )r%   r0   r   rk   r   r   r   test_query_dwithin_lines  s   r   )rH   ru   rn   rp   rq   rr   rs   )r   r   r   r   r   r   r   c                 C   r   r   rw   )r+   r0   r   rk   r   r   r   test_query_dwithin_polygons  s   !r   c                  C   s   t g } | td u sJ d S ra   )r	   nearestr   rh   r   r   r   test_nearest_empty_tree  s   r   c                 C   :   t t | | W d    d S 1 sw   Y  d S ra   )r4   r5   r6   r   rc   r   r   r   test_nearest_invalid_geom     "r   c                 C   r   ra   r4   r5   rb   r   rc   r   r   r   test_nearest_none  r   r   c                 C   r   ra   r   rc   r   r   r   test_nearest_empty
  s   "r   irs   c                 C   rv   ra   r   r   rx   r   r   r   test_nearest_points  s   r   c                 C      |  |}||v sJ d S ra   r   )r   r0   rk   resultr   r   r   test_nearest_points_equidistant&  s   
r   c                 C   rv   ra   r   rz   r   r   r   test_nearest_lines9     
r   )r   rH   ru   rn   c                 C   r   ra   r   )r%   r0   rk   r   r   r   r   test_nearest_lines_equidistantF  s   
r   c                 C   rv   ra   r   r|   r   r   r   test_nearest_polygonsc  r   r   )rH   ru   rn   c                 C   r   ra   r   )r+   r0   rk   r   r   r   r   !test_nearest_polygons_equidistantp  s   
r   c                  C   s2   t g } t| tg  t| tgg g g d S ra   )r	   r   query_nearestr   rh   r   r   r   test_query_nearest_empty_tree  s   r   c                 C   r   ra   )r4   r5   r6   r   rc   r   r   r   test_query_nearest_invalid_geom  r   r   z!geometry,return_distance,expectedFTc                 C   sJ   |r| j |dd\}}t||d  t||d  d S t|  || d S )NTreturn_distancer   r   )r   r   )r   r0   r   rk   indexr   r   r   r   test_query_nearest_none  s
   
r   c                 C   rv   ra   r   r   rx   r   r   r   test_query_nearest_empty_geom  s   r   c                 C   rv   ra   r   rx   r   r   r   test_query_nearest_points  s   %r   )r   r   r   r   r   )r   r   rH   ru   rn   )r   r   rH   c                 C   rv   ra   r   rz   r   r   r   test_query_nearest_lines  s    r   )r   r   r   r   r   )r   r   rH   ru   rn   c                 C   rv   ra   r   r|   r   r   r   test_query_nearest_polygons  s   r   zgeometry,max_distance,expectedrD   c                 C      t | j||d| d S )Nmax_distancer   )r   r0   r   rk   r   r   r   test_query_nearest_max_distance  s   r   zgeometry,max_distancec                 C   sB   t jtdd | j||d W d    d S 1 sw   Y  d S )Nz#max_distance must be greater than 0re   r   r4   r5   rb   r   )r   r0   r   r   r   r   'test_query_nearest_invalid_max_distance3  s   
"r   c                 C   sJ   t jtdd | jtdddgd W d    d S 1 sw   Y  d S )Nz$parameter only accepts scalar valuesre   rg   r   r   )r4   r5   rb   r   r   rh   r   r   r   )test_query_nearest_nonscalar_max_distanceA  s   "r   g        g-?c                 C   s:   |\}}| j |dd\}}t|| tt|d| d S )NTr   ru   )r   r   r   round)r   r0   rk   expected_indicesexpected_distactual_indicesactual_distr   r   r   "test_query_nearest_return_distanceF  s   
r   zgeometry,exclusive,expected)r   r   r   r   )r   r   r   rH   c                 C   r   N	exclusiver   )r   r0   r   rk   r   r   r   test_query_nearest_exclusiveZ  s   r   c                 C   s(   t tddg} t| j|dd| d S )Nr   Tr   )r	   r   r   r   rx   r   r   r   'test_query_nearest_exclusive_no_resultsh  s   r   zgeometry,exclusiveinvalidzalso invalidc                 C   >   t t | j||d W d    d S 1 sw   Y  d S r   r   )r   r0   r   r   r   r   $test_query_nearest_invalid_exclusivet     "r  zgeometry,all_matchesc                 C   r   )Nall_matchesr   )r   r0   r  r   r   r   &test_query_nearest_invalid_all_matches  r  r  c                 C   sX   t dd}t| j|ddddg | j|dd}t|dgs(t|dgs*J d S d S )Nrg   Tr  r   r   F)r   r   r   r   array_equal)r   r   indicesr   r   r   test_query_nearest_all_matches  s   
(r  c            
   
      sd  t tjddd} d}t dtj| d dtj| d }tt| d }| d | | |d|  | d| d|  | d| d  g tt|d }|d | ||d|  |d| d|  |d| d  g}g tdD ]}|| }t	|}
| qu fdd}t }	t|	|ttdtd W d    d S 1 sw   Y  d S )Ni  rH   r   i ru   c                    s&   | \}}| } | }|j |ddS r   )r.   )idxsrF   jr   rightpolygons_partstreesr   r   thread_func  s   z0test_strtree_threaded_query.<locals>.thread_func)r   polygonsr   randomrandnr   intr-   rL   r	   appendr   listmap	itertoolsproduct)
r  Nr   npoints_partsrF   leftr   r  poolr   r  r   test_strtree_threaded_query  s0   ,

""r  )zr  mathrM   rQ   rS   concurrent.futuresr   numpyr   r4   numpy.testingr   r   r   r   r   r   r   r	   shapely.errorsr
   shapely.testingr   shapely.tests.commonr   r   r   r   r   sqrtr)   r*   fixturer   r%   r+   markparametrizer3   r7   r=   r?   rA   skipifplatform
startswithr`   filterwarningsrd   ri   rl   r(   ry   r{   r}   r   r   r   paramxfailr   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   r   r   r   r   r   r   r   r   r   r  r  r  r  r   r   r   r   <module>   sH	    	





	



"
	




 &



'&"$
!"$
&$
%



	
&&

3&"$
$& 
-
 
 
(&$ 

"


"

""
&

 *
"
&$ 

"

" 
&" 
-"&"&$ 
)
"
	"
	
 %* +, -/ 02&36;C  &&  &






	

	


	
*
""""  $$
$*""$$$
*""$$ 
 	& *	(


	