diff --git a/.dockerignore b/.dockerignore index 578aa7b6..a8063854 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,5 @@ * -!deps +!requirements.txt !robosat !config !rs diff --git a/.travis.yml b/.travis.yml index 99120f2f..7c39e354 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,21 +14,18 @@ matrix: addons: apt: sources: ['deadsnakes'] - packages: ['python3.6', 'python3.6-dev', 'python3.6-tk', 'python3.6-venv', 'build-essential', 'libboost-python-dev', 'libexpat1-dev', 'zlib1g-dev', 'libbz2-dev', 'libspatialindex-dev'] + packages: ['python3.6', 'python3.6-pip', 'python3.6-venv', 'libspatialindex-dev', 'libglib2.0-0'] before_install: - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" - sudo apt-get update && sudo apt-get -y install docker-ce - - sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 10 - python3 -m venv .env && . .env/bin/activate - - python3 -m pip install pip==19.1.1 - -install: + - python -m pip install pip==19.1.1 pip-tools==3.7.0 + - python -m piptools sync - python -m pip install https://download.pytorch.org/whl/cpu/torch-1.1.0-cp36-cp36m-linux_x86_64.whl - python -m pip install https://download.pytorch.org/whl/cpu/torchvision-0.3.0-cp36-cp36m-linux_x86_64.whl - - python -m pip install -r deps/requirements-lock.txt --quiet script: - python -m pytest diff --git a/deps/requirements-lock.txt b/deps/requirements-lock.txt deleted file mode 100644 index bcca3766..00000000 --- a/deps/requirements-lock.txt +++ /dev/null @@ -1,46 +0,0 @@ -affine==2.2.2 -atomicwrites==1.3.0 -attrs==19.1.0 -certifi==2019.3.9 -chardet==3.0.4 -Click==7.0 -click-plugins==1.1.1 -cligj==0.5.0 -cycler==0.10.0 -Flask==1.0.3 -geojson==2.4.1 -idna==2.8 -importlib-metadata==0.15 -itsdangerous==1.1.0 -Jinja2==2.10.1 -kiwisolver==1.1.0 -MarkupSafe==1.1.1 -matplotlib==3.1.0 -mercantile==1.0.4 -more-itertools==7.0.0 -numpy==1.16.4 -opencv-contrib-python==4.1.0.25 -osmium==2.15.2 -Pillow==6.0.0 -pluggy==0.12.0 -py==1.8.0 -pyparsing==2.4.0 -pyproj==2.1.3 -pytest==4.5.0 -python-dateutil==2.8.0 -rasterio==1.0.23 -requests==2.22.0 -Rtree==0.8.3 -scipy==1.3.0 -Shapely==1.6.4.post2 -six==1.12.0 -snuggs==1.4.6 -supermercado==0.0.5 -toml==0.10.0 -torch==1.1.0 -torchvision==0.3.0 -tqdm==4.32.1 -urllib3==1.25.3 -wcwidth==0.1.7 -Werkzeug==0.15.4 -zipp==0.5.1 diff --git a/docker/Dockerfile.cpu b/docker/Dockerfile.cpu index cb06b7c3..f9eb635f 100644 --- a/docker/Dockerfile.cpu +++ b/docker/Dockerfile.cpu @@ -2,20 +2,21 @@ FROM ubuntu:18.04 WORKDIR /usr/src/app -ENV LANG="C.UTF-8" LC_ALL="C.UTF-8" PATH="/opt/venv/bin:$PATH" +ENV LANG="C.UTF-8" LC_ALL="C.UTF-8" PATH="/opt/venv/bin:$PATH" PIP_NO_CACHE_DIR="false" -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ - python3 python3-pip python3-venv libspatialindex-c4v5 libsm6 libxrender1 libxext6 && \ - python3 -m venv /opt/venv && \ - python3 -m pip install pip==19.1.1 && \ +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + python3 python3-pip python3-venv libspatialindex-c4v5 libglib2.0-0 && \ rm -rf /var/lib/apt/lists/* +COPY requirements.txt . + +RUN python3 -m venv /opt/venv && \ + python3 -m pip install pip==19.1.1 pip-tools==3.7.0 && \ + python3 -m piptools sync + RUN python3 -m pip install https://download.pytorch.org/whl/cpu/torch-1.1.0-cp36-cp36m-linux_x86_64.whl && \ python3 -m pip install https://download.pytorch.org/whl/cpu/torchvision-0.3.0-cp36-cp36m-linux_x86_64.whl -COPY deps/requirements-lock.txt deps/requirements-lock.txt -RUN python3 -m pip install -r deps/requirements-lock.txt - RUN python3 -c "from torchvision.models import resnet50; resnet50(True)" COPY . . diff --git a/docker/Dockerfile.gpu b/docker/Dockerfile.gpu index d0c0f6e8..f2466e36 100644 --- a/docker/Dockerfile.gpu +++ b/docker/Dockerfile.gpu @@ -2,20 +2,21 @@ FROM nvidia/cuda:10.1-cudnn7-runtime WORKDIR /usr/src/app -ENV LANG="C.UTF-8" LC_ALL="C.UTF-8" PATH="/opt/venv/bin:$PATH" +ENV LANG="C.UTF-8" LC_ALL="C.UTF-8" PATH="/opt/venv/bin:$PATH" PIP_NO_CACHE_DIR="false" -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ - python3 python3-pip python3-venv libspatialindex-c4v5 libsm6 libxrender1 libxext6 && \ - python3 -m venv /opt/venv && \ - python3 -m pip install pip==19.1.1 && \ +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + python3 python3-pip python3-venv libspatialindex-c4v5 libglib2.0-0 && \ rm -rf /var/lib/apt/lists/* +COPY requirements.txt . + +RUN python3 -m venv /opt/venv && \ + python3 -m pip install pip==19.1.1 pip-tools==3.7.0 && \ + python3 -m piptools sync + RUN python3 -m pip install https://download.pytorch.org/whl/cu100/torch-1.1.0-cp36-cp36m-linux_x86_64.whl && \ python3 -m pip install https://download.pytorch.org/whl/cu100/torchvision-0.3.0-cp36-cp36m-linux_x86_64.whl -COPY deps/requirements-lock.txt deps/requirements-lock.txt -RUN python3 -m pip install -r deps/requirements-lock.txt - RUN python3 -c "from torchvision.models import resnet50; resnet50(True)" COPY . . diff --git a/deps/requirements.txt b/requirements.in similarity index 76% rename from deps/requirements.txt rename to requirements.in index de42ea2e..97f9c74b 100644 --- a/deps/requirements.txt +++ b/requirements.in @@ -1,9 +1,7 @@ -torch -torchvision numpy pillow scipy -opencv-contrib-python +opencv-contrib-python-headless tqdm flask requests diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..15545b11 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,367 @@ +# +# This file is autogenerated by pip-compile +# To update, run: +# +# pip-compile --generate-hashes +# +affine==2.2.2 \ + --hash=sha256:e5970e2e53edd75fee60eb2550df365a1c3a58d78755e9e5164e345ac36df322 \ + --hash=sha256:ff0d0f40a90faa651f7bc7fece15bdbb7a0e0658b1e7ba6a03422c21efa7da90 \ + # via rasterio, supermercado +atomicwrites==1.3.0 \ + --hash=sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4 \ + --hash=sha256:75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6 \ + # via pytest +attrs==19.1.0 \ + --hash=sha256:69c0dbf2ed392de1cb5ec704444b08a5ef81680a61cb899dc08127123af36a79 \ + --hash=sha256:f0b870f674851ecbfbbbd364d6b5cbdff9dcedbc7f3f5e18a6891057f21fe399 \ + # via pytest, rasterio +certifi==2019.3.9 \ + --hash=sha256:59b7658e26ca9c7339e00f8f4636cdfe59d34fa37b9b04f6f9e9926b3cece1a5 \ + --hash=sha256:b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae \ + # via requests +chardet==3.0.4 \ + --hash=sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae \ + --hash=sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691 \ + # via requests +click-plugins==1.1.1 \ + --hash=sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b \ + --hash=sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8 \ + # via rasterio, supermercado +click==7.0 \ + --hash=sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13 \ + --hash=sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7 \ + # via click-plugins, cligj, flask, mercantile, rasterio, supermercado +cligj==0.5.0 \ + --hash=sha256:20f24ce9abfde3f758aec3399e6811b936b6772f360846c662c19bf5537b4f14 \ + --hash=sha256:60c93dda4499562eb87509a8ff3535a7441053b766c9c26bcf874a732f939c7c \ + --hash=sha256:6c7d52d529a78712491974f975c33473f430c0f7beb18c0d7a402a743dcb460a \ + # via rasterio, supermercado +cycler==0.10.0 \ + --hash=sha256:1d8a5ae1ff6c5cf9b93e8811e581232ad8920aeec647c37316ceac982b08cb2d \ + --hash=sha256:cd7b2d1018258d7247a71425e9f26463dfb444d411c39569972f4ce586b0c9d8 \ + # via matplotlib +flask==1.0.3 \ + --hash=sha256:ad7c6d841e64296b962296c2c2dabc6543752985727af86a975072dea984b6f3 \ + --hash=sha256:e7d32475d1de5facaa55e3958bc4ec66d3762076b074296aa50ef8fdc5b9df61 +geojson==2.4.1 \ + --hash=sha256:b175e00a76d923d6e7409de0784c147adcdd6e04b311b1d405895a4db3612c9d \ + --hash=sha256:b2bfb5c8e6b4b0c55dd139996317145aa8526146b3f8570586f9613c527a648a +idna==2.8 \ + --hash=sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407 \ + --hash=sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c \ + # via requests +importlib-metadata==0.17 \ + --hash=sha256:a9f185022cfa69e9ca5f7eabfd5a58b689894cb78a11e3c8c89398a8ccbb8e7f \ + --hash=sha256:df1403cd3aebeb2b1dcd3515ca062eecb5bd3ea7611f18cba81130c68707e879 \ + # via pluggy +itsdangerous==1.1.0 \ + --hash=sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19 \ + --hash=sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749 \ + # via flask +jinja2==2.10.1 \ + --hash=sha256:065c4f02ebe7f7cf559e49ee5a95fb800a9e4528727aec6f24402a5374c65013 \ + --hash=sha256:14dd6caf1527abb21f08f86c784eac40853ba93edb79552aa1e4b8aef1b61c7b \ + # via flask +kiwisolver==1.1.0 \ + --hash=sha256:05b5b061e09f60f56244adc885c4a7867da25ca387376b02c1efc29cc16bcd0f \ + --hash=sha256:26f4fbd6f5e1dabff70a9ba0d2c4bd30761086454aa30dddc5b52764ee4852b7 \ + --hash=sha256:3b2378ad387f49cbb328205bda569b9f87288d6bc1bf4cd683c34523a2341efe \ + --hash=sha256:400599c0fe58d21522cae0e8b22318e09d9729451b17ee61ba8e1e7c0346565c \ + --hash=sha256:47b8cb81a7d18dbaf4fed6a61c3cecdb5adec7b4ac292bddb0d016d57e8507d5 \ + --hash=sha256:53eaed412477c836e1b9522c19858a8557d6e595077830146182225613b11a75 \ + --hash=sha256:58e626e1f7dfbb620d08d457325a4cdac65d1809680009f46bf41eaf74ad0187 \ + --hash=sha256:5a52e1b006bfa5be04fe4debbcdd2688432a9af4b207a3f429c74ad625022641 \ + --hash=sha256:5c7ca4e449ac9f99b3b9d4693debb1d6d237d1542dd6a56b3305fe8a9620f883 \ + --hash=sha256:682e54f0ce8f45981878756d7203fd01e188cc6c8b2c5e2cf03675390b4534d5 \ + --hash=sha256:79bfb2f0bd7cbf9ea256612c9523367e5ec51d7cd616ae20ca2c90f575d839a2 \ + --hash=sha256:7f4dd50874177d2bb060d74769210f3bce1af87a8c7cf5b37d032ebf94f0aca3 \ + --hash=sha256:8944a16020c07b682df861207b7e0efcd2f46c7488619cb55f65882279119389 \ + --hash=sha256:8aa7009437640beb2768bfd06da049bad0df85f47ff18426261acecd1cf00897 \ + --hash=sha256:939f36f21a8c571686eb491acfffa9c7f1ac345087281b412d63ea39ca14ec4a \ + --hash=sha256:9733b7f64bd9f807832d673355f79703f81f0b3e52bfce420fc00d8cb28c6a6c \ + --hash=sha256:a02f6c3e229d0b7220bd74600e9351e18bc0c361b05f29adae0d10599ae0e326 \ + --hash=sha256:a0c0a9f06872330d0dd31b45607197caab3c22777600e88031bfe66799e70bb0 \ + --hash=sha256:acc4df99308111585121db217681f1ce0eecb48d3a828a2f9bbf9773f4937e9e \ + --hash=sha256:b64916959e4ae0ac78af7c3e8cef4becee0c0e9694ad477b4c6b3a536de6a544 \ + --hash=sha256:d3fcf0819dc3fea58be1fd1ca390851bdb719a549850e708ed858503ff25d995 \ + --hash=sha256:d52e3b1868a4e8fd18b5cb15055c76820df514e26aa84cc02f593d99fef6707f \ + --hash=sha256:db1a5d3cc4ae943d674718d6c47d2d82488ddd94b93b9e12d24aabdbfe48caee \ + --hash=sha256:e3a21a720791712ed721c7b95d433e036134de6f18c77dbe96119eaf7aa08004 \ + --hash=sha256:e8bf074363ce2babeb4764d94f8e65efd22e6a7c74860a4f05a6947afc020ff2 \ + --hash=sha256:f16814a4a96dc04bf1da7d53ee8d5b1d6decfc1a92a63349bb15d37b6a263dd9 \ + --hash=sha256:f2b22153870ca5cf2ab9c940d7bc38e8e9089fa0f7e5856ea195e1cf4ff43d5a \ + --hash=sha256:f790f8b3dff3d53453de6a7b7ddd173d2e020fb160baff578d578065b108a05f \ + # via matplotlib +markupsafe==1.1.1 \ + --hash=sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473 \ + --hash=sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161 \ + --hash=sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235 \ + --hash=sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5 \ + --hash=sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff \ + --hash=sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b \ + --hash=sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1 \ + --hash=sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e \ + --hash=sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183 \ + --hash=sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66 \ + --hash=sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1 \ + --hash=sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1 \ + --hash=sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e \ + --hash=sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b \ + --hash=sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905 \ + --hash=sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735 \ + --hash=sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d \ + --hash=sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e \ + --hash=sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d \ + --hash=sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c \ + --hash=sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21 \ + --hash=sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2 \ + --hash=sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5 \ + --hash=sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b \ + --hash=sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6 \ + --hash=sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f \ + --hash=sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f \ + --hash=sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7 \ + # via jinja2 +matplotlib==3.1.0 \ + --hash=sha256:08d9bc2e2acef42965256acd5015dc2c899cbd53e01bf4214c5510c7ea0efd2d \ + --hash=sha256:1e0213f87cc0076f7b0c4c251d7e23601e2419cd98691df79edb95517ba06f0c \ + --hash=sha256:1f31053f660df5f0310118d7f5bd1e8025170e9773f0bebe8fec486d0926adf6 \ + --hash=sha256:399bf6352633aeeb45ca55c6c943fa2738022fb17ae498c32a142ced0b41528d \ + --hash=sha256:409a5894efb810d630d2512449c7a4394de9a4d15fc6394e26a409b17d9cc18c \ + --hash=sha256:5c5ef5cf1bc8f483123102e2615644937af7d4c01d100acc72bf74a044a78717 \ + --hash=sha256:d0052be5cdfa27018bb08194b8812c47cb985d60eb682e1809c76e9600839516 \ + --hash=sha256:e7d6620d145ca9f6c3e88248e5734b6fda430e75e70755b887e48f8e9bc1de2a \ + --hash=sha256:f3d8b6bccc577e4e5ecbd58fdd63cacb8e58f0ed1e97616a7f7a7baaf4b8d036 +mercantile==1.0.4 \ + --hash=sha256:0278b393a05d17c3618c5f5da64488bb3707e14046fe36f594d7215db3b376c4 \ + --hash=sha256:db13b7d674a38ea69673898e96f6c6b33e3fd41ccbbfe8ba54860d427fa7d492 \ + --hash=sha256:e56a48313ab8b5ba26d4e601963df02ad989efba58589fce6f90ca9ffac04829 +more-itertools==7.0.0 \ + --hash=sha256:2112d2ca570bb7c3e53ea1a35cd5df42bb0fd10c45f0fb97178679c3c03d64c7 \ + --hash=sha256:c3e4748ba1aad8dba30a4886b0b1a2004f9a863837b8654e7059eebf727afa5a \ + # via pytest +numpy==1.16.4 \ + --hash=sha256:0778076e764e146d3078b17c24c4d89e0ecd4ac5401beff8e1c87879043a0633 \ + --hash=sha256:141c7102f20abe6cf0d54c4ced8d565b86df4d3077ba2343b61a6db996cefec7 \ + --hash=sha256:14270a1ee8917d11e7753fb54fc7ffd1934f4d529235beec0b275e2ccf00333b \ + --hash=sha256:27e11c7a8ec9d5838bc59f809bfa86efc8a4fd02e58960fa9c49d998e14332d5 \ + --hash=sha256:2a04dda79606f3d2f760384c38ccd3d5b9bb79d4c8126b67aff5eb09a253763e \ + --hash=sha256:3c26010c1b51e1224a3ca6b8df807de6e95128b0908c7e34f190e7775455b0ca \ + --hash=sha256:52c40f1a4262c896420c6ea1c6fda62cf67070e3947e3307f5562bd783a90336 \ + --hash=sha256:6e4f8d9e8aa79321657079b9ac03f3cf3fd067bf31c1cca4f56d49543f4356a5 \ + --hash=sha256:7242be12a58fec245ee9734e625964b97cf7e3f2f7d016603f9e56660ce479c7 \ + --hash=sha256:7dc253b542bfd4b4eb88d9dbae4ca079e7bf2e2afd819ee18891a43db66c60c7 \ + --hash=sha256:94f5bd885f67bbb25c82d80184abbf7ce4f6c3c3a41fbaa4182f034bba803e69 \ + --hash=sha256:a89e188daa119ffa0d03ce5123dee3f8ffd5115c896c2a9d4f0dbb3d8b95bfa3 \ + --hash=sha256:ad3399da9b0ca36e2f24de72f67ab2854a62e623274607e37e0ce5f5d5fa9166 \ + --hash=sha256:b0348be89275fd1d4c44ffa39530c41a21062f52299b1e3ee7d1c61f060044b8 \ + --hash=sha256:b5554368e4ede1856121b0dfa35ce71768102e4aa55e526cb8de7f374ff78722 \ + --hash=sha256:cbddc56b2502d3f87fda4f98d948eb5b11f36ff3902e17cb6cc44727f2200525 \ + --hash=sha256:d79f18f41751725c56eceab2a886f021d70fd70a6188fd386e29a045945ffc10 \ + --hash=sha256:dc2ca26a19ab32dc475dbad9dfe723d3a64c835f4c23f625c2b6566ca32b9f29 \ + --hash=sha256:dd9bcd4f294eb0633bb33d1a74febdd2b9018b8b8ed325f861fffcd2c7660bb8 \ + --hash=sha256:e8baab1bc7c9152715844f1faca6744f2416929de10d7639ed49555a85549f52 \ + --hash=sha256:ec31fe12668af687b99acf1567399632a7c47b0e17cfb9ae47c098644ef36797 \ + --hash=sha256:f12b4f7e2d8f9da3141564e6737d79016fe5336cc92de6814eba579744f65b0a \ + --hash=sha256:f58ac38d5ca045a377b3b377c84df8175ab992c970a53332fa8ac2373df44ff7 +opencv-contrib-python-headless==4.1.0.25 \ + --hash=sha256:03383f0adcf264ded23c6fe0b1498d341bdf8d119e622c4b0153483e9b490967 \ + --hash=sha256:2eb815bbe22025a9652a7a30368394dca70afce5037e29f8a9efac409ba01c16 \ + --hash=sha256:434a931b87d2475a8213c37252893cf92155ee81dd196f42b920087e89896e30 \ + --hash=sha256:4fe7d51dab3018e305c4373ac66ca0701ace6e7b69eee7eac9aaed662e6e0300 \ + --hash=sha256:533a711313056a25a9c2491e0a701ffb71fc8f3391393ef4b769b85f50132099 \ + --hash=sha256:5aeb858293934e859e80d3fa161a61990a194666e3eef5962fe5c811413eaebf \ + --hash=sha256:62ca879be3f4e68a16ebbc8be2300f64b025285be0b2c49ad4aff633644cc331 \ + --hash=sha256:665bfdd387bb8231791199a45f2d88d81927df0d3b57c5cd09702e91a1a5cd88 \ + --hash=sha256:7d23e70f59d19772857d79f454db61038b0faaa10fc19b55377172750901f19d \ + --hash=sha256:802aacdb13eb2e0e670511bce3760c462970362137304546c56ca3a1105c626e \ + --hash=sha256:80c3bc0224d67fd789db6f912a37ddc18fc12d28ca775b7daeb50c9840c9b205 \ + --hash=sha256:83079ef6d3ab76c8d9553525ef9378cb0c07bff31ff22b86ef0899560a9e15cd \ + --hash=sha256:91e7e470bceb2b82726be000e3e10aafc99192d94d175d4992ccc6ce5fcfda7c \ + --hash=sha256:9a300e80b275de7a636c70155c600a6fb44839a059a356353358107453f42e8c \ + --hash=sha256:a45e6b293d50045712a2c7d2214533ce2b1f857e4303440508c566a46c1261d3 \ + --hash=sha256:b23386fcf7aaed228e0fab691a4d881c9ba25f91171d61d35d769992741c3844 \ + --hash=sha256:bcff1fd3437ad758c30219b3006f0c01b96684ee02a7cdcc5f981ec8aae40d8f \ + --hash=sha256:c15981be8ce7210cad4636bb1c55e1c0cd8017c6ce87d5c06e8fab9d4d206c15 \ + --hash=sha256:c5163424c0bc0c6d9a952195f01f5f9176defc1fdecdc411ce0dbc1bdca0cd2c \ + --hash=sha256:c8f0fe926b43965e4e2c4f9fbb94cb5f226ed92e9e85f00a94dfad42816cb389 \ + --hash=sha256:d27fad451fb47c12f53ef63d97f2cf35f0f294420447241e0504c6b9e7bfb362 \ + --hash=sha256:dd1a21552f4d4101e14064a5cd00fc34cb9e3622718102b21de7bbfa4e6bbc13 \ + --hash=sha256:efa2d49fd9430534c71f31c3a6110f5b18ea2195f7f2b69e3244f4e4eb821388 \ + --hash=sha256:f28d809b87a75e6f45fddefca13c5070fbd8e23e1c63e5eab161f9763f92ca70 \ + --hash=sha256:f67456343a905ad524bba30352a7d8d714fa8ecffb57c5f5cb019f80fca5eaff \ + --hash=sha256:f8383ef16004789635a666a68110c20d10713f21047f6993dd6af3c3fdb91b4f \ + --hash=sha256:fe17070b7de59d197be1ccf4a39f21f3e30414c193088352b9bdfe44e7a6a9ce +osmium==2.15.2 \ + --hash=sha256:05bbd36e9a7e54b9c3fd39753d49f23978e365832a01a78510e83a3426f3d962 \ + --hash=sha256:0cc6f22025b94895beba19bec4f099cc9d9ab528f2e6867aac8705e61c8bb634 \ + --hash=sha256:0d0b9baa07ba4148e686f0727997eedfa5ddb8ae67a2f4d162efcfb9e0fe3f41 \ + --hash=sha256:10bb7d60d95c78d1dcc85c17aa44df2215ccde0131b31b45b3fd3879cb7ee179 \ + --hash=sha256:180b218a966372e0d8d3abf2f643b42c7fe14921bda0b9ea755d2c24b015c230 \ + --hash=sha256:42730929cdcaf78519ff343fc1d6ec9be4c476b0374ae191a70f39c1e75909ab \ + --hash=sha256:4f749ca9d86770ca65c9e1b92aac6c93e360a64c45cc3724924226490a2b7ca4 \ + --hash=sha256:5211108ff3a42214a9e1e1eb67562c89c079655e837cadb936dff65daf50015d \ + --hash=sha256:5423c34dd76b266dd31865a5089eb174886ccf1060e0c881b62971d4d73fe8c1 \ + --hash=sha256:5925688a9f4d48129829b6ab1460f34c0f7fd8f4ee1b72f74da5e5c72ffb4c62 \ + --hash=sha256:599e7ecc7be5060512da2b6803a1a96fc56986db29e83db5b3401a1cd5a6fcc2 \ + --hash=sha256:84ec0affc2522451a386d0fdc4f5490eaa88531374947674e2c95507465275a3 \ + --hash=sha256:8dd730a9f367bff32c813e6c3fc599e83494ddb981961c5c4f4433c6a1a85a37 \ + --hash=sha256:ac4a4e0d8e77d89e93858d9cc24909238756eefff895092d97ac882c86a2777f \ + --hash=sha256:b316fad933a580f5fe6d0b665fe722d9adc24035c71d21088a195f5f97ccf105 \ + --hash=sha256:c0052bec1178431d62f3a5d67911471aa178ab3530c0a832cab0c500e405df16 \ + --hash=sha256:c12445476c0276bc2ddb5a13c98fd6215fceca5aa0a08fcfaf1b630492e7e974 \ + --hash=sha256:c781ae862a6029cf6cc0d2b8892665405a34293e32fbdb7216c3832bbf8bdef6 \ + --hash=sha256:ca5ad170c0809714d5161ff07fa571a4af0599352b035999711a12e32a955b36 \ + --hash=sha256:d495a5191ae1d390dfa23aa055ca74eb386d42689069b7cc95ca9297428d1749 \ + --hash=sha256:f42b9aa176c1d003f04bcb5c20b8d56d678130202bf32e40ce286dccb3e640e8 \ + --hash=sha256:fe481236cb0f4660d406a43b885b535e964cd9409d9567716d2001f7cd19a448 +pillow==6.0.0 \ + --hash=sha256:15c056bfa284c30a7f265a41ac4cbbc93bdbfc0dfe0613b9cb8a8581b51a9e55 \ + --hash=sha256:1a4e06ba4f74494ea0c58c24de2bb752818e9d504474ec95b0aa94f6b0a7e479 \ + --hash=sha256:1c3c707c76be43c9e99cb7e3d5f1bee1c8e5be8b8a2a5eeee665efbf8ddde91a \ + --hash=sha256:1fd0b290203e3b0882d9605d807b03c0f47e3440f97824586c173eca0aadd99d \ + --hash=sha256:24114e4a6e1870c5a24b1da8f60d0ba77a0b4027907860188ea82bd3508c80eb \ + --hash=sha256:258d886a49b6b058cd7abb0ab4b2b85ce78669a857398e83e8b8e28b317b5abb \ + --hash=sha256:33c79b6dd6bc7f65079ab9ca5bebffb5f5d1141c689c9c6a7855776d1b09b7e8 \ + --hash=sha256:367385fc797b2c31564c427430c7a8630db1a00bd040555dfc1d5c52e39fcd72 \ + --hash=sha256:3c1884ff078fb8bf5f63d7d86921838b82ed4a7d0c027add773c2f38b3168754 \ + --hash=sha256:44e5240e8f4f8861d748f2a58b3f04daadab5e22bfec896bf5434745f788f33f \ + --hash=sha256:46aa988e15f3ea72dddd81afe3839437b755fffddb5e173886f11460be909dce \ + --hash=sha256:74d90d499c9c736d52dd6d9b7221af5665b9c04f1767e35f5dd8694324bd4601 \ + --hash=sha256:809c0a2ce9032cbcd7b5313f71af4bdc5c8c771cb86eb7559afd954cab82ebb5 \ + --hash=sha256:85d1ef2cdafd5507c4221d201aaf62fc9276f8b0f71bd3933363e62a33abc734 \ + --hash=sha256:8c3889c7681af77ecfa4431cd42a2885d093ecb811e81fbe5e203abc07e0995b \ + --hash=sha256:9218d81b9fca98d2c47d35d688a0cea0c42fd473159dfd5612dcb0483c63e40b \ + --hash=sha256:9aa4f3827992288edd37c9df345783a69ef58bd20cc02e64b36e44bcd157bbf1 \ + --hash=sha256:9d80f44137a70b6f84c750d11019a3419f409c944526a95219bea0ac31f4dd91 \ + --hash=sha256:b7ebd36128a2fe93991293f997e44be9286503c7530ace6a55b938b20be288d8 \ + --hash=sha256:c4c78e2c71c257c136cdd43869fd3d5e34fc2162dc22e4a5406b0ebe86958239 \ + --hash=sha256:c6a842537f887be1fe115d8abb5daa9bc8cc124e455ff995830cc785624a97af \ + --hash=sha256:cf0a2e040fdf5a6d95f4c286c6ef1df6b36c218b528c8a9158ec2452a804b9b8 \ + --hash=sha256:cfd28aad6fc61f7a5d4ee556a997dc6e5555d9381d1390c00ecaf984d57e4232 \ + --hash=sha256:dca5660e25932771460d4688ccbb515677caaf8595f3f3240ec16c117deff89a \ + --hash=sha256:de7aedc85918c2f887886442e50f52c1b93545606317956d65f342bd81cb4fc3 \ + --hash=sha256:e6c0bbf8e277b74196e3140c35f9a1ae3eafd818f7f2d3a15819c49135d6c062 +pluggy==0.12.0 \ + --hash=sha256:0825a152ac059776623854c1543d65a4ad408eb3d33ee114dff91e57ec6ae6fc \ + --hash=sha256:b9817417e95936bf75d85d3f8767f7df6cdde751fc40aed3bb3074cbcb77757c \ + # via pytest +py==1.8.0 \ + --hash=sha256:64f65755aee5b381cea27766a3a147c3f15b9b6b9ac88676de66ba2ae36793fa \ + --hash=sha256:dc639b046a6e2cff5bbe40194ad65936d6ba360b52b3c3fe1d08a82dd50b5e53 \ + # via pytest +pyparsing==2.4.0 \ + --hash=sha256:1873c03321fc118f4e9746baf201ff990ceb915f433f23b395f5580d1840cb2a \ + --hash=sha256:9b6323ef4ab914af344ba97510e966d64ba91055d6b9afa6b30799340e89cc03 \ + # via matplotlib, snuggs +pyproj==2.1.3 \ + --hash=sha256:0b363909ba0f873db684e75821c215146b010c38cb719346d872d473b890af78 \ + --hash=sha256:0c856964194f4c5e5418e69f2b1fbcc64b4230a7fbc8ba0af06c918f043ca9b8 \ + --hash=sha256:0df13fa24a458026e71599b9af75d47bb7994ff24d9f7a94f47960289a9b0d71 \ + --hash=sha256:193c966982728ea25addc00a0d4a4ecc2ca722ac13f7addb19a6e8f628eda802 \ + --hash=sha256:25d5e394bb91a8a9b3080effdc023ba3a646bf500a28ebaebd4d83ce9584a62a \ + --hash=sha256:38f799621cc3c4c33db367e177340a5f5393ea27994966516d5a8d97b55be230 \ + --hash=sha256:3d890a8e75b55934e37d024aa69c2219ae2b26f57cc5daa10a7ec66e6dab365b \ + --hash=sha256:4c1852652b335ddd9c5a2b760f4ab7a8a448d6831818f3ffa5ffbe260370c8c9 \ + --hash=sha256:56312e0342f48085b452a35d7f67211b62d6663905622de20321e1fb9386039d \ + --hash=sha256:6c33f973b8719f211de073d9b119095ce420a2e96657aef0f2276f97055dd20f \ + --hash=sha256:783720ae26fd40708193c3775231785efc9068aa67f5df1ab4e354ae03dc3794 \ + --hash=sha256:8fd410470f2f3e26983731146863bd939f5b33cc4b572843af836a4a1f43eb44 \ + --hash=sha256:99c52788b01a7bb9a88024bf4d40965c0a66a93d654600b5deacf644775f424d \ + --hash=sha256:9beef4f85a25a86caf73cf2f03918f4c19d7002e2c0f85d12151b3382efd6705 \ + --hash=sha256:a28c4842ef8e6f2bf04e870ba8634020fa6a0a234b46c585aba33de72e261d3e \ + --hash=sha256:cc4ba1f2ffaff2c36fc3c3a50e49892ee5d468eeed7a572ade71367382df4de7 \ + --hash=sha256:d46dc7a2b03724204b8d0daf30fca78d47e9018e10393c2d8b14c5be52ef0135 \ + --hash=sha256:e96ec8763f795fbbc8ac0d5bf2fb6ea39d37f17d73d614aacbd18d2b8f5367d8 \ + --hash=sha256:f1930f3eacd50acbd7a833d5ca0cdf38bb3a7c86f73a45c9b26f9ec0d1d40de0 \ + --hash=sha256:f89b610a9a38d0292e29b06093ffa09365d36259f58aa085b7cf32f2a8ab2b96 \ + --hash=sha256:fac2992495a2a4c29690916a129c6cc58cc93cf689db1e1cab016f2e210f3f4a +pytest==4.5.0 \ + --hash=sha256:1a8aa4fa958f8f451ac5441f3ac130d9fc86ea38780dd2715e6d5c5882700b24 \ + --hash=sha256:b8bf138592384bd4e87338cb0f256bf5f615398a649d4bd83915f0e4047a5ca6 +python-dateutil==2.8.0 \ + --hash=sha256:7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb \ + --hash=sha256:c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e \ + # via matplotlib +rasterio==1.0.23 \ + --hash=sha256:060d1b554b96de916599bfaf73dca533aeecd7b395f6b4dbe9124e6c47eb526f \ + --hash=sha256:3ce69eb247dd800952a1cd4ced60a8b07be75c3cfcb5714d0588cc15b0e3ed73 \ + --hash=sha256:45e1a4b3c5c58a0b9f1a6bfd0aa08bdc15da57fa690a1f6f26d1a6a3d3cc7aa5 \ + --hash=sha256:58a3df45ecff9fb4c1e2c75501bdcd1fb5ad17c1c0222ea24381a4345527b4ad \ + --hash=sha256:688e4ca47e4ce756843b16ab99d32fb9ff0a39218face0297a1eb8dd4901c794 \ + --hash=sha256:88ca29dc0ae35ed96186be7a291f6fe44c93ee68c510722eb5fe7f0bdeba613d \ + --hash=sha256:98ee1aba2a43210d48b12e29523b9e570295cc3264c981a12e298e9da91bc3be \ + --hash=sha256:9902a7966418daaccb6f7299b50e31b2188a9ba0c38759fb98393208e2318f39 \ + --hash=sha256:abc051353c2b5238bef201502c67a2fb188a92c2779f67d021f570389f22c77b \ + --hash=sha256:c36eaee43268fd15f4f625c688aef114b94fce69b7bd8a268f5db7d9535d2bb0 \ + --hash=sha256:d1624ab6bb98df71a1399a1f3ca9d9659f19151f6eee352aae4e17d14ce5c7cd +requests==2.22.0 \ + --hash=sha256:11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4 \ + --hash=sha256:9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31 +rtree==0.8.3 \ + --hash=sha256:6cb9cf3000963ea6a3db777a597baee2bc55c4fc891e4f1967f262cc96148649 \ + --hash=sha256:8526431aa15d8cea1c07b451ce853b62b1da4cf6b74c07810aba5b81d12efe66 \ + --hash=sha256:a9e67386073f93f22449f396d5993dfe479335169c376f3f7fb04a396391f0dc +scipy==1.3.0 \ + --hash=sha256:03b1e0775edbe6a4c64effb05fff2ce1429b76d29d754aa5ee2d848b60033351 \ + --hash=sha256:09d008237baabf52a5d4f5a6fcf9b3c03408f3f61a69c404472a16861a73917e \ + --hash=sha256:10325f0ffac2400b1ec09537b7e403419dcd25d9fee602a44e8a32119af9079e \ + --hash=sha256:1db9f964ed9c52dc5bd6127f0dd90ac89791daa690a5665cc01eae185912e1ba \ + --hash=sha256:409846be9d6bdcbd78b9e5afe2f64b2da5a923dd7c1cd0615ce589489533fdbb \ + --hash=sha256:4907040f62b91c2e170359c3d36c000af783f0fa1516a83d6c1517cde0af5340 \ + --hash=sha256:6c0543f2fdd38dee631fb023c0f31c284a532d205590b393d72009c14847f5b1 \ + --hash=sha256:826b9f5fbb7f908a13aa1efd4b7321e36992f5868d5d8311c7b40cf9b11ca0e7 \ + --hash=sha256:a7695a378c2ce402405ea37b12c7a338a8755e081869bd6b95858893ceb617ae \ + --hash=sha256:a84c31e8409b420c3ca57fd30c7589378d6fdc8d155d866a7f8e6e80dec6fd06 \ + --hash=sha256:adadeeae5500de0da2b9e8dd478520d0a9945b577b2198f2462555e68f58e7ef \ + --hash=sha256:b283a76a83fe463c9587a2c88003f800e08c3929dfbeba833b78260f9c209785 \ + --hash=sha256:c19a7389ab3cd712058a8c3c9ffd8d27a57f3d84b9c91a931f542682bb3d269d \ + --hash=sha256:c3bb4bd2aca82fb498247deeac12265921fe231502a6bc6edea3ee7fe6c40a7a \ + --hash=sha256:c5ea60ece0c0c1c849025bfc541b60a6751b491b6f11dd9ef37ab5b8c9041921 \ + --hash=sha256:db61a640ca20f237317d27bc658c1fc54c7581ff7f6502d112922dc285bdabee +shapely==1.6.4.post2 \ + --hash=sha256:0378964902f89b8dbc332e5bdfa08e0bc2f7ab39fecaeb17fbb2a7699a44fe71 \ + --hash=sha256:34e7c6f41fb27906ccdf2514ee44a5774b90b39a256b6511a6a57d11ffe64999 \ + --hash=sha256:3ca69d4b12e2b05b549465822744b6a3a1095d8488cc27b2728a06d3c07d0eee \ + --hash=sha256:3e9388f29bd81fcd4fa5c35125e1fbd4975ee36971a87a90c093f032d0e9de24 \ + --hash=sha256:3ef28e3f20a1c37f5b99ea8cf8dcb58e2f1a8762d65ed2d21fd92bf1d4811182 \ + --hash=sha256:523c94403047eb6cacd7fc1863ebef06e26c04d8a4e7f8f182d49cd206fe787e \ + --hash=sha256:5d22a1a705c2f70f61ccadc696e33d922c1a92e00df8e1d58a6ade14dd7e3b4f \ + --hash=sha256:714b6680215554731389a1bbdae4cec61741aa4726921fa2b2b96a6f578a2534 \ + --hash=sha256:7dfe1528650c3f0dc82f41a74cf4f72018288db9bfb75dcd08f6f04233ec7e78 \ + --hash=sha256:ba58b21b9cf3c33725f7f530febff9ed6a6846f9d0bf8a120fc74683ff919f89 \ + --hash=sha256:c4b87bb61fc3de59fc1f85e71a79b0c709dc68364d9584473697aad4aa13240f \ + --hash=sha256:ebb4d2bee7fac3f6c891fcdafaa17f72ab9c6480f6d00de0b2dc9a5137dfe342 +six==1.12.0 \ + --hash=sha256:3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c \ + --hash=sha256:d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73 \ + # via cycler, pytest, python-dateutil +snuggs==1.4.6 \ + --hash=sha256:5ac04dadd8ba20e70ab2a0d565fe2e1a7347635aa2aaf3650d1551b1ef941994 \ + --hash=sha256:8b87e5754fd2d0d1295b70bd502419f6f82be98c4bf668552da9d7c5f4387d1f \ + # via rasterio +supermercado==0.0.5 \ + --hash=sha256:c0d7b8ce428681c597d3f3a51df8bc1b347a6cfc3c1d278a7e68fe6b991a5407 +toml==0.10.0 \ + --hash=sha256:229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c \ + --hash=sha256:235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e +tqdm==4.32.1 \ + --hash=sha256:0a860bf2683fdbb4812fe539a6c22ea3f1777843ea985cb8c3807db448a0f7ab \ + --hash=sha256:e288416eecd4df19d12407d0c913cbf77aa8009d7fddb18f632aded3bdbdda6b +urllib3==1.25.3 \ + --hash=sha256:b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1 \ + --hash=sha256:dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232 \ + # via requests +wcwidth==0.1.7 \ + --hash=sha256:3df37372226d6e63e1b1e1eda15c594bca98a22d33a23832a90998faa96bc65e \ + --hash=sha256:f4ebe71925af7b40a864553f761ed559b43544f8f71746c2d756c7fe788ade7c \ + # via pytest +werkzeug==0.15.4 \ + --hash=sha256:865856ebb55c4dcd0630cdd8f3331a1847a819dda7e8c750d3db6f2aa6c0209c \ + --hash=sha256:a0b915f0815982fb2a09161cb8f31708052d0951c3ba433ccc5e1aa276507ca6 \ + # via flask +zipp==0.5.1 \ + --hash=sha256:8c1019c6aad13642199fbe458275ad6a84907634cc9f0989877ccc4a2840139d \ + --hash=sha256:ca943a7e809cc12257001ccfb99e3563da9af99d52f261725e96dfe0f9275bc3 \ + # via importlib-metadata