o
    i                  "   @   sH  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 d dlmZ d dlmZ ddl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) Z.d*d+ Z/e	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 Z0e	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1ed.d.dg d<fe1e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 Z2e	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1ed.d.d2d	d.gfe1e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 Z3e	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1ed.d.eg d<fe1ed.d.egg d=g d<gfe1ed.d.d.e g dJfe1e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 Z4e	j"#dMdNdOgdPdQ Z5e	j"#dRdSg dGfdTg fdUdgfdVg fdWg fdXg dGfdYg fdZdgfgd[d\ Z6d]d^ Z7e	j"#dMe	j8dTe	j"j9ed_k d`d dae	j8dUe	j"j9ed_k d`d dadVdWdbe	j8dXe	j"j9ed_k d`d dae	j8dYe	j"j9ed_k d`d dae	j8dZe	j"j9ed_k d`d dagdcdd 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.dedeg dffed.d.dedegg dCg dfgfed d dded8d8d9d9ed.d.dedegg dgg dhgfe1ed.d.dd.gfe1ed.d.dgd gd.ggfe1ed.d.d.e g d<fe1e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didj 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 dkg dlgfe1ed.d.d2d	d.gfe1ed.d.d2gd d gd	d.ggfe1ed	dedgfe1e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ded>gfed4d>gd>d>gggd d gded>ggfgdmdn 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1ed.d.eg d<fe1ed.d.egg d=g d<gfe1ed.d.d.e g dJfe1e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dodp 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.dedeg fed.d.dedegg g gfe1ed.d.dg fe1e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dqdr 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1ed.d.d2g fe1e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dsdsgd>d>ggdegfedsdsgd>d>gggd gdeggfgdtdu 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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1ed.d.ed.gfe1ed.d.egd gd.ggfe1ed.d.d.e g fe1e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dvdwgdvdxggd4gfedvdwgdvdxgggd gd4ggfgdydz 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.deded{d4gfed.d.dedegd d gd{d4ggfe1ed.d.dd.gfe1ed.d.dgd gd.ggfe1ed.d.d.e g d<fe1e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} ZAe	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1ed.d.d2g fe1e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dedeggg fed4d4gdedegggg g gfgd~d ZBe	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1ed.d.eg fe1ed.d.egg g gfe1ed.d.d.e d.gfe1e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 ZCe	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.dedeg fed.d.dedegg g gfe1ed.d.dg fe1e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 ZDe	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1ed.d.d2g fe1e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dedeggg fed4d4gdedegggg g gfgdd ZEe	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1ed.d.ed	d{gfe1ed.d.egd d gd	d{ggfe1ed.d.d.e g dfe1e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 ZFe	j"#d1eddg fed.d.dedeg fe1ed.d.dg fed4d>gd>d>ggg fgdd ZGe	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1ed.d.d2d	d.gfe1ed.d.d2gd d gd	d.ggfeHddgd gfeHddg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 ZIe	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1ed.d.eg fe1e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 ZJe	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.deded.degfed.d.dedegd d gd.deggfe1ed.d.dg fe1ed.d.dgg g gfe1ed dddgfe1ed dd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 ZKe	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1ed.d.d2g fe1ed.d.d2gg g gfe1ed	ded g fe1e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ded>gfed4d>gd>d>gd>dgggd d gded>ggfgdd ZLe	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1ed.d.ee g fe1e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 ZMe	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.dedeg dffed.d.dedegg dCg dfgfe1ed.d.dd.gfe1ed.d.dgd gd.ggfe1ed.d.d.e g d<fe1e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 ZNe	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1ed.d.d2g fe1e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dedeggg fed4d4gdedegggg g gfgdd ZOe	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1ed.d.eg fe1ed.d.egg g gfe1ed.d.d.e d.gfe1e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 ZPe	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.dedeg fed.d.dedegg g gfe1ed.d.dg fe1e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 ZQe	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Hddgd	d	ggdgfeHddgd	d	gggd gdggfeHdFdFgddggg feHdFdFg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1ed.d.d2g fe1e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dsdsgd>d>ggdegfedsdsgd>d>gggd gdeggfgdd ZRe	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Hd d gd	d	ggg feHd d gd	d	gggg g gfeHdFdFgddggd	gfeHdFdFg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1ed.d.ed.gfe1ed.d.egd gd.ggfe1ed.d.d.e g fe1e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dvdwgdvdxggd4gfedvdwgdvdxgggd gd4ggfgdd ZSe	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Hd d gd	d	ggdgfeHd d gd	d	gggd gdggfeHd2d2gddggdd	gfeHd2d2gddgggd d gdd	ggfeHd d	gd	d ggdgfeHd d	gd	d gggd gdggfed.d.deded{d4gfed.d.dedegd d gd{d4ggfe1ed.d.dd.gfe1ed.d.dgd gd.ggfe1ed.d.d.e g d<fe1e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 ZTe	j"#d1ed d g fed d gg g gfeHd d gddggg feHd d gddgggg g gfeHd d gd	d	ggg feHd d gd	d	gggg g gfeHd d	gd	d ggg feHd 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dedeggg fed4d4gdedeg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1ed.d.d2g fe1ed.d.d2gg g gfgdd ZUe	j"#d1ed d g fed d gg g gfeHd d gd	d	ggg feHd 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1ed.d.eg fe1ed.d.egg g gfe1ed.d.d.e d.gfe1e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 ZVe	j"j)edkdd e	j"#d#ed d ed d gddgeeggdd ZWe	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 ZXe	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jYg feddgejYg 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ń ZZe	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dFd4degfed4d>gd>d4gggdFd d gd4deg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ф Z_e	j"#d#eegeddeggddӄ Z`e	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1edded	fe1ed.d.ed.fedwd4gd>d>ggd>fed4d>gd>d4ggdefgddׄ Zae	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ل Zbe	j"#d1ed2d2d fedFd2d fed2dFdd	dfeHd d2gddggd fgddۄ Zce	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1eddedd	gfe1ed.d.ed	d.gfed4d4gd>d>ggg dBfedwd4gd>d>ggded>gfed4d>gd>d4ggd4degfg	ddބ Zde	j"#d1ed d d fed	d	d	fed d4dded.fed4d>gd>d4ggdefgdd Zee	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1edded	d.gfe1ed.d.eg d<fed4d4gd>d>ggd4d>gfedwd4gd>d>ggd4d>gfgdd Zfdd Zge	j"#d#d$d%ggdd Zhe	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 Zie	j"#d1eg fegg g gfeegddgd	d.ggfgdd Zje	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1edddd	d.gfe1edddgd d gd	d.ggfe1ed.d.d2d.gfe1ed.d.d2gd gd.ggfedwd4gd>d>ggd>gfedwd4gd>d>gggd gd>ggfed4d>gd>d4ggdegfed4d>gd>d4gggd gdeg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 Zke	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1edddg dfe1edddgg d=g dgfe1ed.d.d2d	d.gfe1e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dwd4gd>d>ggded>gfedwd4gd>d>gggd d gded>ggfed4d>gd>d4ggd4degfed4d>gd>d4gggd d gd4deggfgdd Zle	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1edded	d.gfe1eddegd d gd	d.ggfe1ed.d.eg d<fe1e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dwd4gd>d>ggd4d>gfedwd4gd>d>gggd d gd4d>ggfed4d>gd>d4ggdegfed4d>gd>d4gggd gdeggfgdd Zme	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dd Zne	j"#ded2d2d fed2d2gd fed2d2d3fed2d2gd3fgdd  Zodd Zpe	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 Zqe	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 Zre	j"#d1eddg feddgg g gfgdd Zse	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 Zte	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 Zudd Zvdd ZwdS (      N)ThreadPoolExecutor)assert_array_equal)boxgeos_version
MultiPointPointSTRtree)UnsupportedGEOSVersionError)assert_geometries_equal   )emptyempty_line_stringempty_pointpoint   g&.>session)scopec                  c   s(    t tdtd} t| V  d S )N
   )shapelypointsnparanger   geoms r   U/var/www/edux/Edux_v2/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   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, hitsc                 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_init1   s   "r1   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_geometryF   s   "r5   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   r6   r   r   r   test_referencesK   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   r6   r7   r,   r   )arrr   r6   r   r   r   test_flush_geometries]   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_propertyj   s
   r?   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>y   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_persistencev   s   
r^   r.   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)r2   r3   r4   
ValueErrorr,   r   r.   r   r   r   test_query_invalid_geometry   s   "rb   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      ?)r2   r3   r4   r,   r   r   r   r   r   test_query_invalid_dimension   s   "rg   z tree_geometry, geometry,expectedr   rF   c                 C   s   t | }t||| d S r_   )r   r   r,   )tree_geometryr.   expectedr   r   r   r   test_query_with_none_and_empty   s   (rj   zgeometry,expectedre         )rl            	   )r   r   r   r   r   r*   n   )r   r   r   r   r   r   r   )r   r   rl   rn   ro   rp   rq   )r   rF      )r   r   r   ro   )rl   rn   ro   c                 C      t | || d S r_   r   r,   r   r.   ri   r   r   r   test_query_points   s   "rw   )rs   rl   rn   ro   )r   r   r   r   c                 C   rt   r_   ru   r#   r.   ri   r   r   r   test_query_lines   s   ry   g      ?)r   r   r   )r   r   r   r   )r   r   r   rF   )r   r   rF   rs   rl   c                 C   rt   r_   ru   r)   r.   ri   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 optionrc   r   r|   )r2   r3   r`   r,   r   r   r|   r   r   r   test_query_invalid_predicateD  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|   ri   geomr   r   r   test_query_prepared_inputsQ  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   rF   rl   r   r   )r   r   r   r,   r   r   r   )r   r   ri   r   r   r   )test_query_with_partially_prepared_inputsd  s   "r   )rF   rp   r   z
GEOS < 3.8)markstouchesc                 C   sT   t tj | jtddgdtdg|d W d    d S 1 s#w   Y  d S )Nr   nanr   )r2   r3   r   GEOSExceptionr,   r   floatr   r   r   r   test_query_predicate_errorsm  s   $"r   rn   )rF   rs   rl   rn   )r   r   r   r   r   r   )r   r   rF   rs   rl   rn   c                 C      t | j|dd| d S Nr   r   ru   rv   r   r   r   test_query_intersects_points  s   4r   )r   r   r   r   r   )r   r   r   r   rF   c                 C   r   r   ru   rx   r   r   r   test_query_intersects_lines  s   %r   c                 C   r   r   ru   rz   r   r   r   test_query_intersects_polygons     .r   c                 C   r   Nr   r   ru   rv   r   r   r   test_query_within_points#     r   g      @c                 C   r   r   ru   rx   r   r   r   test_query_within_linesB      r   g      @g      @g      @c                 C   r   r   ru   rz   r   r   r   test_query_within_polygonse  s   )r   rs   c                 C   r   Nr   r   ru   rv   r   r   r   test_query_contains_points  r   r   c                 C   r   r   ru   rx   r   r   r   test_query_contains_lines     r   c                 C   r   r   ru   rz   r   r   r   test_query_contains_polygons     r   c                 C   r   Nr   r   ru   rv   r   r   r   test_query_overlaps_points  s   r   c                 C   r   r   ru   rx   r   r   r   test_query_overlaps_lines  r   r   )r   r   rs   rl   c                 C   r   r   ru   rz   r   r   r   test_query_overlaps_polygons,     r   c                 C   r   Nr   r   ru   rv   r   r   r   test_query_crosses_pointsM  s   r   )r   r   )r   r   rp   c                 C   r   r   ru   rx   r   r   r   test_query_crosses_lines^  r   r   c                 C   r   r   ru   rz   r   r   r   test_query_crosses_polygonsy  s   r   c                 C   r   Nr   r   ru   rv   r   r   r   test_query_touches_points  r   r   gHz>c                 C   r   r   ru   rx   r   r   r   test_query_touches_lines  s   r   c                 C   r   r   ru   rz   r   r   r   test_query_touches_polygons  r   r   c                 C   r   Nr   r   ru   rv   r   r   r   test_query_covers_points  r   r   c                 C   r   r   ru   rx   r   r   r   test_query_covers_lines  r   r   c                 C   r   r   ru   rz   r   r   r   test_query_covers_polygons*  r   r   c                 C   r   Nr   r   ru   rv   r   r   r   test_query_covered_by_pointsG  r   r   g      @c                 C   r   r   ru   rx   r   r   r   test_query_covered_by_linesf  s   'r   c                 C   r   r   ru   rz   r   r   r   test_query_covered_by_polygons  r   r   c                 C   r   Nr   r   ru   rv   r   r   r   #test_query_contains_properly_points  s   *r   c                 C   r   r   ru   rx   r   r   r   "test_query_contains_properly_lines  s   r   c                 C   r   r   ru   rz   r   r   r   %test_query_contains_properly_polygons  s   r   )rF   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.10rc   dwithinr   r|   distance)r2   r3   r	   r,   ra   r   r   r   test_query_dwithin_geos_version6  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 )Nrc   r   r   )r2   r3   r`   r,   )r   r.   r   rd   r   r   r   #test_query_dwithin_invalid_distance?  s   "r   zgeometry,distance,expectedg      ?g      ?)r   r   r   )r   r   r   g?g      ?)r   r   r   r   g      @)r   r   rF   rs   c                 C      t | j|d|d| d S Nr   r   ru   )r   r.   r   ri   r   r   r   test_query_dwithin_pointsS  s   Er   c                 C   r   r   ru   )r#   r.   r   ri   r   r   r   test_query_dwithin_lines  s   r   )rF   rs   rl   rn   ro   rp   rq   )r   r   r   r   r   r   r   c                 C   r   r   ru   )r)   r.   r   ri   r   r   r   test_query_dwithin_polygons  s   !r   c                  C   s   t g } | td u sJ d S r_   )r   nearestr   rf   r   r   r   test_nearest_empty_tree  s   r   c                 C   :   t t | | W d    d S 1 sw   Y  d S r_   )r2   r3   r4   r   ra   r   r   r   test_nearest_invalid_geom     "r   c                 C   r   r_   r2   r3   r`   r   ra   r   r   r   test_nearest_none  r   r   c                 C   r   r_   r   ra   r   r   r   test_nearest_empty  s   "r   irq   c                 C   rt   r_   r   r   rv   r   r   r   test_nearest_points  s   r   c                 C      |  |}||v sJ d S r_   r   )r   r.   ri   resultr   r   r   test_nearest_points_equidistant  s   
r   c                 C   rt   r_   r   rx   r   r   r   test_nearest_lines&     
r   )r   rF   rs   rl   c                 C   r   r_   r   )r#   r.   ri   r   r   r   r   test_nearest_lines_equidistant3  s   
r   c                 C   rt   r_   r   rz   r   r   r   test_nearest_polygonsP  r   r   )rF   rs   rl   c                 C   r   r_   r   )r)   r.   ri   r   r   r   r   !test_nearest_polygons_equidistant]  s   
r   c                  C   s2   t g } t| tg  t| tgg g g d S r_   )r   r   query_nearestr   rf   r   r   r   test_query_nearest_empty_treev  s   r   c                 C   r   r_   )r2   r3   r4   r   ra   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   r.   r   ri   indexr   r   r   r   test_query_nearest_none  s
   
r   c                 C   rt   r_   r   r   rv   r   r   r   test_query_nearest_empty_geom  s   r   c                 C   rt   r_   r   rv   r   r   r   test_query_nearest_points  s   %r   )r   r   r   r   r   )r   r   rF   rs   rl   )r   r   rF   c                 C   rt   r_   r   rx   r   r   r   test_query_nearest_lines  s    r   )r   r   r   r   r   )r   r   rF   rs   rl   c                 C   rt   r_   r   rz   r   r   r   test_query_nearest_polygons  s   r   zgeometry,max_distance,expectedrB   c                 C      t | j||d| d S )Nmax_distancer   )r   r.   r   ri   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 0rc   r   r2   r3   r`   r   )r   r.   r   r   r   r   'test_query_nearest_invalid_max_distance   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 valuesrc   re   r   r   )r2   r3   r`   r   r   rf   r   r   r   )test_query_nearest_nonscalar_max_distance.  s   "r   g        g-?c                 C   s:   |\}}| j |dd\}}t|| tt|d| d S )NTr   rs   )r   r   r   round)r   r.   ri   expected_indicesexpected_distactual_indicesactual_distr   r   r   "test_query_nearest_return_distance3  s   
r   zgeometry,exclusive,expected)r   r   r   r   )r   r   r   rF   c                 C   r   N	exclusiver   )r   r.   r   ri   r   r   r   test_query_nearest_exclusiveG  s   r   c                 C   s(   t tddg} t| j|dd| d S )Nr   Tr   )r   r   r   r   rv   r   r   r   'test_query_nearest_exclusive_no_resultsU  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   r.   r   r   r   r   $test_query_nearest_invalid_exclusivea     "r   zgeometry,all_matchesc                 C   r   )Nall_matchesr   )r   r.   r   r   r   r   &test_query_nearest_invalid_all_matchesp  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 )Nre   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  rF   r   i rs   c                    s&   | \}}| } | }|j |ddS r   )r,   )idxsrD   jr   rightpolygons_partstreesr   r   thread_func  s   z0test_strtree_threaded_query.<locals>.thread_func)r   polygonsr   randomrandnr   intr+   rJ   r   appendr   listmap	itertoolsproduct)
r  Nr   npoints_partsrD   leftr   r  poolr   r  r   test_strtree_threaded_query  s0   ,

""r  )xr  mathrK   rO   rQ   concurrent.futuresr   numpyr   r2   numpy.testingr   r   r   r   r   r   r   shapely.errorsr	   shapely.testingr
   commonr   r   r   r   sqrtr'   r(   fixturer   r#   r)   markparametrizer1   r5   r;   r=   r?   skipifplatform
startswithr^   filterwarningsrb   rg   rj   r&   rw   ry   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>   s4	   





	



"
	




 &



'&"$
!"$
&$
%



	
&

3&"$
$& 
-
 
 
(&$ 

"


"

""
&

 *
"
&$ 

"

" 
&" 
-"&"&$ 
)
"
	"
	
 %* +, -/ 02&36;C  &&  &






	

	


	
*
""""  $$
$*""$$$
*""$$ 
 
	& *	(


	