a
    J5d                  '   @   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"#dd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g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   V/var/www/html/django/DPS/env/lib/python3.9/site-packages/shapely/tests/test_strtree.pytree   s    r   c                  c   sL   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   s6   t jt tdtdtt dd} t| V  d S )Nr       )Z	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s6J d S )Nr   d   )r   lenqueryr   size)geometrycounthitsr   r   r   r   	test_init1   s    r0   c                   C   s8   t t tdg W d    n1 s*0    Y  d S )NzNot a geometry)pytestraises	TypeErrorr   r   r   r   r   test_init_with_invalid_geometryF   s    r4   c                  C   s^   t  } t dd}| |g}t|}d } d }dd l}|  |tdddd dgksZJ d S )Nr   r   )r   r   gccollectr+   r   tolist)Zpoint1Zpoint2r   r   r5   r   r   r   test_referencesK   s    
r8   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   r5   r6   r+   r   )arrr   r5   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
   Z
geometriesr   r   )r9   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 sV0    Y  tjtj	t
|gtjd}|j|d |  |jd	ksJ d S )
Nc                 S   s   g | ]}t ||d qS )皙?)r   r%   ).0ir   r   r   
<listcomp>y       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)Ztmp_pathr   Zpickled_strtreeZunpickle_scriptfilenameoutprocr   r   r   test_pickle_persistencev   s    
(rX   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    n1 s.0    Y  d S N)r1   r2   r3   
ValueErrorr+   r   r-   r   r   r   test_query_invalid_geometry   s    r\   c                 C   sF   t jtdd$ | tddgg W d    n1 s80    Y  d S )NzArray should be one dimensionalmatch      ?)r1   r2   r3   r+   r   r   r   r   r   test_query_invalid_dimension   s    ra   z tree_geometry, geometry,expectedr   rC   c                 C   s   t | }t||| d S rY   )r   r   r+   )Ztree_geometryr-   expectedr   r   r   r   test_query_with_none_and_empty   s    (rc   zgeometry,expectedr_         )re            	   )r   r   r   r   r   r)   n   )r   r   r   r   r   r   r   )r   r   re   rg   rh   ri   rj   )r   rC      )r   r   r   rh   )re   rg   rh   c                 C   s   t | || d S rY   r   r+   r   r-   rb   r   r   r   test_query_points   s    "ro   )rl   re   rg   rh   )r   r   r   r   c                 C   s   t | || d S rY   rm   r#   r-   rb   r   r   r   test_query_lines   s    rq   g      ?)r   r   r   )r   r   r   r   )r   r   r   rC   )r   r   rC   rl   re   c                 C   s   t | || d S rY   rm   r(   r-   rb   r   r   r   test_query_polygons  s    &rs   	predicateZbad_predicateZdisjointc                 C   sF   t jtdd$ | jtdd|d W d    n1 s80    Y  d S )Nzis not a valid optionr]   r   rt   )r1   r2   rZ   r+   r   r   rt   r   r   r   test_query_invalid_predicateD  s    	rw   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   ru   )r   r   preparer   r+   )r   rt   rb   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   rC   re   rx   ru   )r   r   r   r+   r   r   r   )r   r   rb   r   r   r   )test_query_with_partially_prepared_inputsd  s    "r   )rC   ri   r   z
GEOS < 3.8)Zmarkstouchesc                 C   sR   t tj2 | jtddgdtdg|d W d    n1 sD0    Y  d S )Nr   nanru   )r1   r2   r   ZGEOSExceptionr+   r   floatrv   r   r   r   test_query_predicate_errorsm  s    r   rg   )rC   rl   re   rg   )r   r   r   r   r   r   )r   r   rC   rl   re   rg   c                 C   s   t | j|dd| d S Nrx   ru   rm   rn   r   r   r   test_query_intersects_points  s    4r   )r   r   r   r   r   )r   r   r   r   rC   c                 C   s   t | j|dd| d S r   rm   rp   r   r   r   test_query_intersects_lines  s    %r   c                 C   s   t | j|dd| d S r   rm   rr   r   r   r   test_query_intersects_polygons  s    .r   c                 C   s   t | j|dd| d S Nry   ru   rm   rn   r   r   r   test_query_within_points#  s    r   g      @c                 C   s   t | j|dd| d S r   rm   rp   r   r   r   test_query_within_linesB  s     r   g      @g      @g      @c                 C   s   t | j|dd| d S r   rm   rr   r   r   r   test_query_within_polygonse  s    )r   rl   c                 C   s   t | j|dd| d S Nrz   ru   rm   rn   r   r   r   test_query_contains_points  s     r   c                 C   s   t | j|dd| d S r   rm   rp   r   r   r   test_query_contains_lines  s    r   c                 C   s   t | j|dd| d S r   rm   rr   r   r   r   test_query_contains_polygons  s    r   c                 C   s   t | j|dd| d S Nr{   ru   rm   rn   r   r   r   test_query_overlaps_points  s    r   c                 C   s   t | j|dd| d S r   rm   rp   r   r   r   test_query_overlaps_lines  s    r   )r   r   rl   re   c                 C   s   t | j|dd| d S r   rm   rr   r   r   r   test_query_overlaps_polygons,  s    r   c                 C   s   t | j|dd| d S Nr|   ru   rm   rn   r   r   r   test_query_crosses_pointsM  s    r   )r   r   )r   r   ri   c                 C   s   t | j|dd| d S r   rm   rp   r   r   r   test_query_crosses_lines^  s    r   c                 C   s   t | j|dd| d S r   rm   rr   r   r   r   test_query_crosses_polygonsy  s    r   c                 C   s   t | j|dd| d S Nr   ru   rm   rn   r   r   r   test_query_touches_points  s    r   gHz>c                 C   s   t | j|dd| d S r   rm   rp   r   r   r   test_query_touches_lines  s    r   c                 C   s   t | j|dd| d S r   rm   rr   r   r   r   test_query_touches_polygons  s    r   c                 C   s   t | j|dd| d S Nr}   ru   rm   rn   r   r   r   test_query_covers_points  s     r   c                 C   s   t | j|dd| d S r   rm   rp   r   r   r   test_query_covers_lines  s    r   c                 C   s   t | j|dd| d S r   rm   rr   r   r   r   test_query_covers_polygons*  s    r   c                 C   s   t | j|dd| d S Nr~   ru   rm   rn   r   r   r   test_query_covered_by_pointsG  s    r   g      @c                 C   s   t | j|dd| d S r   rm   rp   r   r   r   test_query_covered_by_linesf  s    'r   c                 C   s   t | j|dd| d S r   rm   rr   r   r   r   test_query_covered_by_polygons  s    .r   c                 C   s   t | j|dd| d S Nr   ru   rm   rn   r   r   r   #test_query_contains_properly_points  s    *r   c                 C   s   t | j|dd| d S r   rm   rp   r   r   r   "test_query_contains_properly_lines  s    r   c                 C   s   t | j|dd| d S r   rm   rr   r   r   r   %test_query_contains_properly_polygons  s    r   )rC   r   r   zGEOS >= 3.10c                 C   sB   t jtdd  | j|ddd W d    n1 s40    Y  d S )Nzrequires GEOS >= 3.10r]   dwithinr   rt   distance)r1   r2   r	   r+   r[   r   r   r   test_query_dwithin_geos_version6  s    r   zGEOS < 3.10zgeometry,distance,matchz#distance parameter must be providedZfooz!could not convert string to floatz.Could not broadcast distance to match geometryg      ?zshould be one dimensionalc                 C   sB   t jt|d  | j|d|d W d    n1 s40    Y  d S )Nr]   r   r   )r1   r2   rZ   r+   )r   r-   r   r^   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   rC   rl   c                 C   s   t | j|d|d| d S Nr   r   rm   )r   r-   r   rb   r   r   r   test_query_dwithin_pointsS  s    Er   c                 C   s   t | j|d|d| d S r   rm   )r#   r-   r   rb   r   r   r   test_query_dwithin_lines  s    r   )rC   rl   re   rg   rh   ri   rj   )r   r   r   r   r   r   r   c                 C   s   t | j|d|d| d S r   rm   )r(   r-   r   rb   r   r   r   test_query_dwithin_polygons  s    !r   c                  C   s   t g } | td u sJ d S rY   )r   nearestr   r`   r   r   r   test_nearest_empty_tree  s    r   c                 C   s8   t t | | W d    n1 s*0    Y  d S rY   )r1   r2   r3   r   r[   r   r   r   test_nearest_invalid_geom  s    r   c                 C   s8   t t | | W d    n1 s*0    Y  d S rY   r1   r2   rZ   r   r[   r   r   r   test_nearest_none  s    r   c                 C   s8   t t | | W d    n1 s*0    Y  d S rY   r   r[   r   r   r   test_nearest_empty  s    r   irj   c                 C   s   t | || d S rY   r   r   rn   r   r   r   test_nearest_points  s    r   c                 C   s   |  |}||v sJ d S rY   r   )r   r-   rb   resultr   r   r   test_nearest_points_equidistant  s    
r   c                 C   s   t | || d S rY   r   rp   r   r   r   test_nearest_lines&  s    
r   )r   rC   rl   re   c                 C   s   |  |}||v sJ d S rY   r   )r#   r-   rb   r   r   r   r   test_nearest_lines_equidistant3  s    
r   c                 C   s   t | || d S rY   r   rr   r   r   r   test_nearest_polygonsP  s    
r   )rC   rl   re   c                 C   s   |  |}||v sJ d S rY   r   )r(   r-   rb   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 rY   )r   r   query_nearestr   r`   r   r   r   test_query_nearest_empty_treev  s    r   c                 C   s8   t t | | W d    n1 s*0    Y  d S rY   )r1   r2   r3   r   r[   r   r   r   test_query_nearest_invalid_geom|  s    r   z!geometry,return_distance,expectedFTc                 C   sH   |r4| j |dd\}}t||d  t||d  nt|  || d S )NTreturn_distancer   r   )r   r   )r   r-   r   rb   indexr   r   r   r   test_query_nearest_none  s
    
r   c                 C   s   t | || d S rY   r   r   rn   r   r   r   test_query_nearest_empty_geom  s    r   c                 C   s   t | || d S rY   r   rn   r   r   r   test_query_nearest_points  s    %r   )r   r   r   r   r   )r   r   rC   rl   re   )r   r   rC   c                 C   s   t | || d S rY   r   rp   r   r   r   test_query_nearest_lines  s     r   )r   r   r   r   r   )r   r   rC   rl   re   c                 C   s   t | || d S rY   r   rr   r   r   r   test_query_nearest_polygons  s    r   zgeometry,max_distance,expectedr>   c                 C   s   t | j||d| d S )Nmax_distancer   )r   r-   r   rb   r   r   r   test_query_nearest_max_distance
  s    r   zgeometry,max_distancec                 C   s@   t jtdd | j||d W d    n1 s20    Y  d S )Nz#max_distance must be greater than 0r]   r   r1   r2   rZ   r   )r   r-   r   r   r   r   'test_query_nearest_invalid_max_distance   s    
r   c                 C   sH   t jtdd& | jtdddgd W d    n1 s:0    Y  d S )Nz$parameter only accepts scalar valuesr]   r_   r   r   )r1   r2   rZ   r   r   r`   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   rl   )r   r   r   round)r   r-   rb   Zexpected_indicesZexpected_distZactual_indicesZactual_distr   r   r   "test_query_nearest_return_distance3  s    
r   zgeometry,exclusive,expected)r   r   r   r   )r   r   r   rC   c                 C   s   t | j||d| d S N	exclusiver   )r   r-   r   rb   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   rn   r   r   r   'test_query_nearest_exclusive_no_resultsU  s    r   zgeometry,exclusiveinvalidzalso invalidc                 C   s<   t t | j||d W d    n1 s.0    Y  d S r   r   )r   r-   r   r   r   r   $test_query_nearest_invalid_exclusivea  s    r   zgeometry,all_matchesc                 C   s<   t t | j||d W d    n1 s.0    Y  d S )Nall_matchesr   )r   r-   r   r   r   r   &test_query_nearest_invalid_all_matchesp  s    r   c                 C   sT   t dd}t| j|ddddg | j|dd}t|dgsPt|dgsPJ d S )Nr_   Tr   r   r   F)r   r   r   r   Z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	|}
| q fdd}t 0}	t|	|ttdtd W d    n1 sV0    Y  d S )Ni  rC   r   i rl   c                    s&   | \}}| } | }|j |ddS r   )r+   )Zidxsr@   jr   rightZpolygons_partsZtreesr   r   thread_func  s    z0test_strtree_threaded_query.<locals>.thread_func)r   polygonsr   randomZrandnr   intr*   rG   r   appendr   listmap	itertoolsproduct)
r   Nr   nZpoints_partsr@   leftr   r   poolr   r   r   test_strtree_threaded_query  s.    ,

r   )xr   mathrH   rL   rN   concurrent.futuresr   numpyr   r1   Znumpy.testingr   r   r   r   r   r   r   Zshapely.errorsr	   Zshapely.testingr
   commonr   r   r   r   sqrtr&   r'   Zfixturer   r#   r(   markZparametrizer0   r4   r8   r:   r;   Zskipifplatform
startswithrX   filterwarningsr\   ra   rc   r%   ro   rq   rs   rw   r   r   paramZ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>   s  





	



"	





 &


'
&"$!
"$
&$%




	
&
3
&"$$
& -

 
 (
&$ 

"


"

""
&

 *
"
&$ 

"

" &
" -
"&"&$ )

"
	"
   &C  &&  &





	

	


	

*
""""  $$$
*""$$$
*""$$ 
 
	& *	(


	