├── .github
└── workflows
│ └── test-run.yaml
├── .gitignore
├── LICENSE
├── README.md
├── overturemaps
├── __init__.py
├── cli.py
├── core.py
└── examples
│ └── geopandas_example.ipynb
├── poetry.lock
└── pyproject.toml
/.github/workflows/test-run.yaml:
--------------------------------------------------------------------------------
1 | name: CLI install test
2 |
3 | on: [push]
4 |
5 | jobs:
6 | build:
7 | runs-on: ubuntu-latest
8 | strategy:
9 | matrix:
10 | python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
11 | steps:
12 | - uses: actions/checkout@v4
13 | - name: Set up Python ${{ matrix.python-version }}
14 | uses: actions/setup-python@v5
15 | with:
16 | python-version: ${{ matrix.python-version }}
17 | - name: Install Poetry
18 | run: pip3 install poetry
19 | - name: Build library and install deps
20 | run: poetry install
21 | - name: Test run
22 | run: poetry run overturemaps download --bbox=-71.068,42.353,-71.058,42.363 -f geojson --type=building -o boston.geojson
23 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Adapted from https://github.com/github/gitignore/blob/main/Python.gitignore
2 |
3 | # Byte-compiled / optimized / DLL files
4 | __pycache__/
5 | *.py[cod]
6 | *$py.class
7 |
8 | # C extensions
9 | *.so
10 |
11 | # Distribution / packaging
12 | .Python
13 | build/
14 | develop-eggs/
15 | dist/
16 | downloads/
17 | eggs/
18 | .eggs/
19 | lib/
20 | lib64/
21 | parts/
22 | sdist/
23 | var/
24 | wheels/
25 | share/python-wheels/
26 | *.egg-info/
27 | .installed.cfg
28 | *.egg
29 | MANIFEST
30 |
31 | # PyInstaller
32 | # Usually these files are written by a python script from a template
33 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
34 | *.manifest
35 | *.spec
36 |
37 | # Installer logs
38 | pip-log.txt
39 | pip-delete-this-directory.txt
40 |
41 | # Unit test / coverage reports
42 | htmlcov/
43 | .tox/
44 | .nox/
45 | .coverage
46 | .coverage.*
47 | .cache
48 | nosetests.xml
49 | coverage.xml
50 | *.cover
51 | *.py,cover
52 | .hypothesis/
53 | .pytest_cache/
54 | cover/
55 |
56 | # Translations
57 | *.mo
58 | *.pot
59 |
60 | # Django stuff:
61 | *.log
62 | local_settings.py
63 | db.sqlite3
64 | db.sqlite3-journal
65 |
66 | # Flask stuff:
67 | instance/
68 | .webassets-cache
69 |
70 | # Scrapy stuff:
71 | .scrapy
72 |
73 | # Sphinx documentation
74 | docs/_build/
75 |
76 | # PyBuilder
77 | .pybuilder/
78 | target/
79 |
80 | # Jupyter Notebook
81 | .ipynb_checkpoints
82 |
83 | # IPython
84 | profile_default/
85 | ipython_config.py
86 |
87 | # pdm
88 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
89 | #pdm.lock
90 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
91 | # in version control.
92 | # https://pdm.fming.dev/latest/usage/project/#working-with-version-control
93 | .pdm.toml
94 | .pdm-python
95 | .pdm-build/
96 |
97 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
98 | __pypackages__/
99 |
100 | # Celery stuff
101 | celerybeat-schedule
102 | celerybeat.pid
103 |
104 | # SageMath parsed files
105 | *.sage.py
106 |
107 | # Environments
108 | .env
109 | .venv
110 | env/
111 | venv/
112 | ENV/
113 | env.bak/
114 | venv.bak/
115 |
116 | # Spyder project settings
117 | .spyderproject
118 | .spyproject
119 |
120 | # Rope project settings
121 | .ropeproject
122 |
123 | # mkdocs documentation
124 | /site
125 |
126 | # mypy
127 | .mypy_cache/
128 | .dmypy.json
129 | dmypy.json
130 |
131 | # Pyre type checker
132 | .pyre/
133 |
134 | # pytype static type analyzer
135 | .pytype/
136 |
137 | # Cython debug symbols
138 | cython_debug/
139 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 Overture Maps
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | [](https://pypi.python.org/pypi/overturemaps)
2 |
3 | # overturemaps-py
4 |
5 | Official Python command-line tool of the [Overture Maps Foundation](https://overturemaps.org)
6 |
7 | Overture Maps provides free and open geospatial map data, from many different sources and normalized to a
8 | [common schema](https://github.com/OvertureMaps/schema). This tool helps to download Overture data
9 | within a region of interest and converts it to a few different file formats. For more information about accessing
10 | Overture Maps data, see our official documentation site https://docs.overturemaps.org.
11 |
12 | Note: This repository and project are experimental. Things are likely change including the user interface
13 | until a stable release, but we will keep the documentation here up-to-date.
14 |
15 | ## Quick Start
16 |
17 | Download the building footprints for the specific bounding box as GeoJSON and save to a file named "boston.geojson"
18 |
19 | ```
20 | $ overturemaps download --bbox=-71.068,42.353,-71.058,42.363 -f geojson --type=building -o boston.geojson
21 | ```
22 |
23 | ## Usage
24 |
25 | #### `download`
26 | There is currently one option to the `overturemaps` utility, `download`. It will download Overture Maps data
27 | with an optional bounding box into the specified file format. When specifying a bounding box,
28 | only the minimum data is transferred. The result is streamed out and can handle arbitrarily
29 | large bounding boxes.
30 |
31 | Command-line options:
32 | * `--bbox` (optional): west, south, east, north longitude and latitude coordinates. When omitted the
33 | entire dataset for the specified type will be downloaded
34 | * `-f` (required: one of "geojson", "geojsonseq", "geoparquet"): output format
35 | * `--output`/`-o` (optional): Location of output file. When omitted output will be written to stdout.
36 | * `--type`/`-t` (required): The Overture map data type to be downloaded. Examples of types are `building`
37 | for building footprints, `place` for POI places data, etc. Run `overturemaps download --help` for the
38 | complete list of allowed types
39 |
40 | This downloads data directly from Overture's S3 bucket without interacting with any other servers.
41 | By including bounding box extents on each row in the Overture distribution, the underlying Parquet
42 | readers use the Parquet summary statistics to download the minimum amount of data
43 | necessary to extract data from the desired region.
44 |
45 | To help find bounding boxes of interest, we like this [bounding box tool](https://boundingbox.klokantech.com/)
46 | from [Klokantech](https://www.klokantech.com/). Choose the CSV format and copy the value directly into
47 | the `--bbox` field here.
48 |
49 |
50 | ## Installation
51 |
52 | To install overturemaps from [PyPi](https://pypi.org/project/overturemaps/) using pip
53 |
54 | ```shell
55 | pip install overturemaps
56 | ```
57 |
58 | overturemaps is also on [conda-forge](https://anaconda.org/conda-forge/overturemaps) and can be installed using conda, mamba, or pixi. To install overturemaps using conda:
59 |
60 | ```shell
61 | conda install -c conda-forge overturemaps
62 | ```
63 |
--------------------------------------------------------------------------------
/overturemaps/__init__.py:
--------------------------------------------------------------------------------
1 | from .core import (
2 | record_batch_reader,
3 | get_all_overture_types,
4 | )
5 |
--------------------------------------------------------------------------------
/overturemaps/cli.py:
--------------------------------------------------------------------------------
1 | """
2 | Overture Maps (overturemaps.org) command line utility.
3 |
4 | Currently provides the ability to extract features from an Overture dataset in a
5 | specified bounding box in a few different file formats.
6 |
7 | """
8 | import json
9 | import os
10 | import sys
11 | from typing import Optional
12 |
13 | import click
14 | import pyarrow as pa
15 | import pyarrow.dataset as ds
16 | import pyarrow.compute as pc
17 | import pyarrow.fs as fs
18 | import pyarrow.parquet as pq
19 | import shapely.wkb
20 |
21 | from . core import record_batch_reader, get_all_overture_types
22 |
23 |
24 | def get_writer(output_format, path, schema):
25 | if output_format == "geojson":
26 | writer = GeoJSONWriter(path)
27 | elif output_format == "geojsonseq":
28 | writer = GeoJSONSeqWriter(path)
29 | elif output_format == "geoparquet":
30 | # Update the geoparquet metadata to remove the file-level bbox which
31 | # will no longer apply to this file. Since we cannot write the field at
32 | # the end, just remove it as it's optional. Let the per-row bounding
33 | # boxes do all the work.
34 | metadata = schema.metadata
35 | # extract geo metadata
36 | geo = json.loads(metadata[b"geo"])
37 | # the spec allows for multiple geom columns
38 | geo_columns = geo["columns"]
39 | if len(geo_columns) > 1:
40 | raise IOError("Expected single geom column but encountered multiple.")
41 | for geom_col_vals in geo_columns.values():
42 | # geom level extents "bbox" is optional - remove if present
43 | # since extracted data will have different extents
44 | if "bbox" in geom_col_vals:
45 | geom_col_vals.pop("bbox")
46 | # add "covering" if there is a row level "bbox" column
47 | # this facilitates spatial filters e.g. geopandas read_parquet
48 | if "bbox" in schema.names:
49 | geom_col_vals["covering"] = {
50 | "bbox": {
51 | "xmin": ["bbox", "xmin"],
52 | "ymin": ["bbox", "ymin"],
53 | "xmax": ["bbox", "xmax"],
54 | "ymax": ["bbox", "ymax"],
55 | }
56 | }
57 | metadata[b"geo"] = json.dumps(geo).encode("utf-8")
58 | schema = schema.with_metadata(metadata)
59 | writer = pq.ParquetWriter(path, schema)
60 | return writer
61 |
62 |
63 | class BboxParamType(click.ParamType):
64 | name = "bbox"
65 |
66 | def convert(self, value, param, ctx):
67 | try:
68 | bbox = [float(x.strip()) for x in value.split(",")]
69 | fail = False
70 | except ValueError: # ValueError raised when passing non-numbers to float()
71 | fail = True
72 |
73 | if fail or len(bbox) != 4:
74 | self.fail(
75 | f"bbox must be 4 floating point numbers separated by commas. Got '{value}'"
76 | )
77 |
78 | return bbox
79 |
80 |
81 | @click.group()
82 | def cli():
83 | pass
84 |
85 |
86 | @cli.command()
87 | @click.option("--bbox", required=False, type=BboxParamType())
88 | @click.option(
89 | "-f",
90 | "output_format",
91 | type=click.Choice(["geojson", "geojsonseq", "geoparquet"]),
92 | required=True,
93 | )
94 | @click.option("-o", "--output", required=False, type=click.Path())
95 | @click.option(
96 | "-t",
97 | "--type",
98 | "type_",
99 | type=click.Choice(get_all_overture_types()),
100 | required=True,
101 | )
102 | def download(bbox, output_format, output, type_):
103 | if output is None:
104 | output = sys.stdout
105 |
106 | reader = record_batch_reader(type_, bbox)
107 | if reader is None:
108 | return
109 |
110 | with get_writer(output_format, output, schema=reader.schema) as writer:
111 | copy(reader, writer)
112 |
113 |
114 | def copy(reader, writer):
115 | while True:
116 | try:
117 | batch = reader.read_next_batch()
118 | except StopIteration:
119 | break
120 | if batch.num_rows > 0:
121 | writer.write_batch(batch)
122 |
123 |
124 | class BaseGeoJSONWriter:
125 | """
126 | A base feature writer that manages either a file handle
127 | or output stream. Subclasses should implement write_feature()
128 | and finalize() if needed
129 | """
130 |
131 | def __init__(self, where):
132 | self.file_handle = None
133 | if isinstance(where, str):
134 | self.file_handle = open(os.path.expanduser(where), "w")
135 | self.writer = self.file_handle
136 | else:
137 | self.writer = where
138 | self.is_open = True
139 |
140 | def __enter__(self):
141 | return self
142 |
143 | def __exit__(self, exc_type, value, traceback):
144 | self.close()
145 |
146 | def close(self):
147 | if not self.is_open:
148 | return
149 | self.finalize()
150 | if self.file_handle:
151 | self.file_handle.close()
152 | self.is_open = False
153 |
154 | def write_batch(self, batch):
155 | if batch.num_rows == 0:
156 | return
157 |
158 | for row in batch.to_pylist():
159 | feature = self.row_to_feature(row)
160 | self.write_feature(feature)
161 |
162 | def write_feature(self, feature):
163 | pass
164 |
165 | def finalize(self):
166 | pass
167 |
168 | def row_to_feature(self, row):
169 | geometry = shapely.wkb.loads(row.pop("geometry"))
170 | row.pop("bbox")
171 |
172 | # This only removes null values in the top-level dictionary but will leave in
173 | # nulls in sub-properties
174 | properties = {k: v for k, v in row.items() if k != "bbox" and v is not None}
175 | return {
176 | "type": "Feature",
177 | "geometry": geometry.__geo_interface__,
178 | "properties": properties,
179 | }
180 |
181 |
182 | class GeoJSONSeqWriter(BaseGeoJSONWriter):
183 | def write_feature(self, feature):
184 | self.writer.write(json.dumps(feature, separators=(",", ":")))
185 | self.writer.write("\n")
186 |
187 |
188 | class GeoJSONWriter(BaseGeoJSONWriter):
189 | def __init__(self, *args, **kwargs):
190 | super().__init__(*args, **kwargs)
191 | self._has_written_feature = False
192 |
193 | self.writer.write('{"type": "FeatureCollection", "features": [\n')
194 |
195 | def write_feature(self, feature):
196 | if self._has_written_feature:
197 | self.writer.write(",\n")
198 | self.writer.write(json.dumps(feature, separators=(",", ":")))
199 | self._has_written_feature = True
200 |
201 | def finalize(self):
202 | self.writer.write("]}")
203 |
204 |
205 | if __name__ == "__main__":
206 | cli()
207 |
--------------------------------------------------------------------------------
/overturemaps/core.py:
--------------------------------------------------------------------------------
1 | from typing import List, Optional
2 |
3 | import pyarrow as pa
4 | import pyarrow.compute as pc
5 | import pyarrow.dataset as ds
6 | import pyarrow.fs as fs
7 |
8 | # Allows for optional import of additional dependencies
9 | try:
10 | import geopandas as gpd
11 | from geopandas import GeoDataFrame
12 | HAS_GEOPANDAS = True
13 | except ImportError:
14 | HAS_GEOPANDAS = False
15 | GeoDataFrame = None
16 |
17 | def record_batch_reader(overture_type, bbox=None) -> Optional[pa.RecordBatchReader]:
18 | """
19 | Return a pyarrow RecordBatchReader for the desired bounding box and s3 path
20 | """
21 | path = _dataset_path(overture_type)
22 |
23 | if bbox:
24 | xmin, ymin, xmax, ymax = bbox
25 | filter = (
26 | (pc.field("bbox", "xmin") < xmax)
27 | & (pc.field("bbox", "xmax") > xmin)
28 | & (pc.field("bbox", "ymin") < ymax)
29 | & (pc.field("bbox", "ymax") > ymin)
30 | )
31 | else:
32 | filter = None
33 |
34 | dataset = ds.dataset(
35 | path, filesystem=fs.S3FileSystem(anonymous=True, region="us-west-2")
36 | )
37 | batches = dataset.to_batches(filter=filter)
38 |
39 | # to_batches() can yield many batches with no rows. I've seen
40 | # this cause downstream crashes or other negative effects. For
41 | # example, the ParquetWriter will emit an empty row group for
42 | # each one bloating the size of a parquet file. Just omit
43 | # them so the RecordBatchReader only has non-empty ones. Use
44 | # the generator syntax so the batches are streamed out
45 | non_empty_batches = (b for b in batches if b.num_rows > 0)
46 |
47 | geoarrow_schema = geoarrow_schema_adapter(dataset.schema)
48 | reader = pa.RecordBatchReader.from_batches(geoarrow_schema, non_empty_batches)
49 | return reader
50 |
51 | def geodataframe(overture_type: str, bbox: (float, float, float, float) = None) -> GeoDataFrame:
52 | """
53 | Loads geoparquet for specified type into a geopandas dataframe
54 |
55 | Parameters
56 | ----------
57 | overture_type: type to load
58 | bbox: optional bounding box for data fetch (xmin, ymin, xmax, ymax)
59 |
60 | Returns
61 | -------
62 | GeoDataFrame with the optionally filtered theme data
63 |
64 | """
65 | if not HAS_GEOPANDAS:
66 | raise ImportError("geopandas is required to use this function")
67 |
68 | reader = record_batch_reader(overture_type, bbox)
69 | return gpd.GeoDataFrame.from_arrow(reader)
70 |
71 | def geoarrow_schema_adapter(schema: pa.Schema) -> pa.Schema:
72 | """
73 | Convert a geoarrow-compatible schema to a proper geoarrow schema
74 |
75 | This assumes there is a single "geometry" column with WKB formatting
76 |
77 | Parameters
78 | ----------
79 | schema: pa.Schema
80 |
81 | Returns
82 | -------
83 | pa.Schema
84 | A copy of the input schema with the geometry field replaced with
85 | a new one with the proper geoarrow ARROW:extension metadata
86 |
87 | """
88 | geometry_field_index = schema.get_field_index("geometry")
89 | geometry_field = schema.field(geometry_field_index)
90 | geoarrow_geometry_field = geometry_field.with_metadata(
91 | {b"ARROW:extension:name": b"geoarrow.wkb"}
92 | )
93 |
94 | geoarrow_schema = schema.set(geometry_field_index, geoarrow_geometry_field)
95 |
96 | return geoarrow_schema
97 |
98 |
99 | type_theme_map = {
100 | "address": "addresses",
101 | "bathymetry": "base",
102 | "building": "buildings",
103 | "building_part": "buildings",
104 | "division": "divisions",
105 | "division_area": "divisions",
106 | "division_boundary": "divisions",
107 | "place": "places",
108 | "segment": "transportation",
109 | "connector": "transportation",
110 | "infrastructure": "base",
111 | "land": "base",
112 | "land_cover": "base",
113 | "land_use": "base",
114 | "water": "base",
115 | }
116 |
117 |
118 | def _dataset_path(overture_type: str) -> str:
119 | """
120 | Returns the s3 path of the Overture dataset to use. This assumes overture_type has
121 | been validated, e.g. by the CLI
122 |
123 | """
124 | # Map of sub-partition "type" to parent partition "theme" for forming the
125 | # complete s3 path. Could be discovered by reading from the top-level s3
126 | # location but this allows to only read the files in the necessary partition.
127 | theme = type_theme_map[overture_type]
128 | return f"overturemaps-us-west-2/release/2025-03-19.0/theme={theme}/type={overture_type}/"
129 |
130 |
131 | def get_all_overture_types() -> List[str]:
132 | return list(type_theme_map.keys())
133 |
--------------------------------------------------------------------------------
/overturemaps/examples/geopandas_example.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {
7 | "vscode": {
8 | "languageId": "plaintext"
9 | }
10 | },
11 | "outputs": [],
12 | "source": [
13 | "from overturemaps import core"
14 | ]
15 | },
16 | {
17 | "cell_type": "code",
18 | "execution_count": 2,
19 | "metadata": {
20 | "vscode": {
21 | "languageId": "plaintext"
22 | }
23 | },
24 | "outputs": [],
25 | "source": [
26 | "# Cambridge Kendall Square\n",
27 | "bbox = (-71.0886055604, 42.3606368124, -71.0766325984, 42.3606368124)"
28 | ]
29 | },
30 | {
31 | "cell_type": "code",
32 | "execution_count": 3,
33 | "metadata": {},
34 | "outputs": [],
35 | "source": [
36 | "gdf = core.geodataframe(\"segment\", bbox=bbox)"
37 | ]
38 | },
39 | {
40 | "cell_type": "code",
41 | "execution_count": 4,
42 | "metadata": {},
43 | "outputs": [
44 | {
45 | "data": {
46 | "text/html": [
47 | "
\n",
48 | "\n",
61 | "
\n",
62 | " \n",
63 | " \n",
64 | " | \n",
65 | " id | \n",
66 | " geometry | \n",
67 | " bbox | \n",
68 | " version | \n",
69 | " sources | \n",
70 | " subtype | \n",
71 | " class | \n",
72 | " names | \n",
73 | " connector_ids | \n",
74 | " routes | \n",
75 | " access_restrictions | \n",
76 | " level_rules | \n",
77 | " prohibited_transitions | \n",
78 | " road_surface | \n",
79 | " road_flags | \n",
80 | " speed_limits | \n",
81 | " width_rules | \n",
82 | "
\n",
83 | " \n",
84 | " \n",
85 | " \n",
86 | " 0 | \n",
87 | " 0852a3067fffffff0469ef7c3fc96601 | \n",
88 | " LINESTRING (-71.11551 42.37213, -71.11529 42.3... | \n",
89 | " {'xmin': -71.11550903320312, 'xmax': -71.05274... | \n",
90 | " 0 | \n",
91 | " [{'property': '', 'dataset': 'OpenStreetMap', ... | \n",
92 | " rail | \n",
93 | " None | \n",
94 | " {'primary': 'Red Line', 'common': None, 'rules... | \n",
95 | " [08f2a3067184655b044bf7748f3e3876, 08f2a306718... | \n",
96 | " None | \n",
97 | " None | \n",
98 | " None | \n",
99 | " None | \n",
100 | " None | \n",
101 | " None | \n",
102 | " None | \n",
103 | " None | \n",
104 | "
\n",
105 | " \n",
106 | " 1 | \n",
107 | " 0862a30667ffffff0479fdc40c5e8067 | \n",
108 | " LINESTRING (-71.10204 42.36441, -71.10201 42.3... | \n",
109 | " {'xmin': -71.10204315185547, 'xmax': -71.08793... | \n",
110 | " 0 | \n",
111 | " None | \n",
112 | " road | \n",
113 | " cycleway | \n",
114 | " None | \n",
115 | " [08f2a30662625bad045efa82cdf75d93, 08f2a306627... | \n",
116 | " None | \n",
117 | " [{'access_type': 'denied', 'when': {'during': ... | \n",
118 | " [{'value': 1, 'between': [0.48834895, 0.496672... | \n",
119 | " None | \n",
120 | " [{'value': 'paved', 'between': [0.0, 0.7918249... | \n",
121 | " [{'values': ['is_bridge'], 'between': [0.48834... | \n",
122 | " None | \n",
123 | " None | \n",
124 | "
\n",
125 | " \n",
126 | " 2 | \n",
127 | " 0892a3066237ffff047bfa92b25f2bfc | \n",
128 | " LINESTRING (-71.0888 42.36072, -71.08872 42.36... | \n",
129 | " {'xmin': -71.08880615234375, 'xmax': -71.08824... | \n",
130 | " 0 | \n",
131 | " [{'property': '', 'dataset': 'OpenStreetMap', ... | \n",
132 | " road | \n",
133 | " footway | \n",
134 | " None | \n",
135 | " [08f2a30662343963044dfe87ba195288, 08f2a306623... | \n",
136 | " None | \n",
137 | " [{'access_type': 'allowed', 'when': {'during':... | \n",
138 | " None | \n",
139 | " None | \n",
140 | " [{'value': 'paved', 'between': None}] | \n",
141 | " None | \n",
142 | " None | \n",
143 | " None | \n",
144 | "
\n",
145 | " \n",
146 | " 3 | \n",
147 | " 0892a3066237ffff047eff9c52bc5736 | \n",
148 | " LINESTRING (-71.08855 42.3608, -71.08848 42.36... | \n",
149 | " {'xmin': -71.08855438232422, 'xmax': -71.08799... | \n",
150 | " 0 | \n",
151 | " [{'property': '', 'dataset': 'OpenStreetMap', ... | \n",
152 | " road | \n",
153 | " footway | \n",
154 | " None | \n",
155 | " [08f2a30662341d8c0450ea91ce3396bc, 08f2a306623... | \n",
156 | " None | \n",
157 | " [{'access_type': 'allowed', 'when': {'during':... | \n",
158 | " None | \n",
159 | " None | \n",
160 | " [{'value': 'paved', 'between': None}] | \n",
161 | " None | \n",
162 | " None | \n",
163 | " None | \n",
164 | "
\n",
165 | " \n",
166 | " 4 | \n",
167 | " 0892a3066237ffff0442faa7187bc82c | \n",
168 | " LINESTRING (-71.08773 42.35998, -71.08775 42.3... | \n",
169 | " {'xmin': -71.08827209472656, 'xmax': -71.08773... | \n",
170 | " 0 | \n",
171 | " [{'property': '', 'dataset': 'OpenStreetMap', ... | \n",
172 | " road | \n",
173 | " sidewalk | \n",
174 | " None | \n",
175 | " [08f2a3066234d99d0470feb178e8c55e, 08f2a306623... | \n",
176 | " None | \n",
177 | " None | \n",
178 | " None | \n",
179 | " None | \n",
180 | " [{'value': 'paved', 'between': None}] | \n",
181 | " None | \n",
182 | " None | \n",
183 | " None | \n",
184 | "
\n",
185 | " \n",
186 | "
\n",
187 | "
"
188 | ],
189 | "text/plain": [
190 | " id \\\n",
191 | "0 0852a3067fffffff0469ef7c3fc96601 \n",
192 | "1 0862a30667ffffff0479fdc40c5e8067 \n",
193 | "2 0892a3066237ffff047bfa92b25f2bfc \n",
194 | "3 0892a3066237ffff047eff9c52bc5736 \n",
195 | "4 0892a3066237ffff0442faa7187bc82c \n",
196 | "\n",
197 | " geometry \\\n",
198 | "0 LINESTRING (-71.11551 42.37213, -71.11529 42.3... \n",
199 | "1 LINESTRING (-71.10204 42.36441, -71.10201 42.3... \n",
200 | "2 LINESTRING (-71.0888 42.36072, -71.08872 42.36... \n",
201 | "3 LINESTRING (-71.08855 42.3608, -71.08848 42.36... \n",
202 | "4 LINESTRING (-71.08773 42.35998, -71.08775 42.3... \n",
203 | "\n",
204 | " bbox version \\\n",
205 | "0 {'xmin': -71.11550903320312, 'xmax': -71.05274... 0 \n",
206 | "1 {'xmin': -71.10204315185547, 'xmax': -71.08793... 0 \n",
207 | "2 {'xmin': -71.08880615234375, 'xmax': -71.08824... 0 \n",
208 | "3 {'xmin': -71.08855438232422, 'xmax': -71.08799... 0 \n",
209 | "4 {'xmin': -71.08827209472656, 'xmax': -71.08773... 0 \n",
210 | "\n",
211 | " sources subtype class \\\n",
212 | "0 [{'property': '', 'dataset': 'OpenStreetMap', ... rail None \n",
213 | "1 None road cycleway \n",
214 | "2 [{'property': '', 'dataset': 'OpenStreetMap', ... road footway \n",
215 | "3 [{'property': '', 'dataset': 'OpenStreetMap', ... road footway \n",
216 | "4 [{'property': '', 'dataset': 'OpenStreetMap', ... road sidewalk \n",
217 | "\n",
218 | " names \\\n",
219 | "0 {'primary': 'Red Line', 'common': None, 'rules... \n",
220 | "1 None \n",
221 | "2 None \n",
222 | "3 None \n",
223 | "4 None \n",
224 | "\n",
225 | " connector_ids routes \\\n",
226 | "0 [08f2a3067184655b044bf7748f3e3876, 08f2a306718... None \n",
227 | "1 [08f2a30662625bad045efa82cdf75d93, 08f2a306627... None \n",
228 | "2 [08f2a30662343963044dfe87ba195288, 08f2a306623... None \n",
229 | "3 [08f2a30662341d8c0450ea91ce3396bc, 08f2a306623... None \n",
230 | "4 [08f2a3066234d99d0470feb178e8c55e, 08f2a306623... None \n",
231 | "\n",
232 | " access_restrictions \\\n",
233 | "0 None \n",
234 | "1 [{'access_type': 'denied', 'when': {'during': ... \n",
235 | "2 [{'access_type': 'allowed', 'when': {'during':... \n",
236 | "3 [{'access_type': 'allowed', 'when': {'during':... \n",
237 | "4 None \n",
238 | "\n",
239 | " level_rules prohibited_transitions \\\n",
240 | "0 None None \n",
241 | "1 [{'value': 1, 'between': [0.48834895, 0.496672... None \n",
242 | "2 None None \n",
243 | "3 None None \n",
244 | "4 None None \n",
245 | "\n",
246 | " road_surface \\\n",
247 | "0 None \n",
248 | "1 [{'value': 'paved', 'between': [0.0, 0.7918249... \n",
249 | "2 [{'value': 'paved', 'between': None}] \n",
250 | "3 [{'value': 'paved', 'between': None}] \n",
251 | "4 [{'value': 'paved', 'between': None}] \n",
252 | "\n",
253 | " road_flags speed_limits width_rules \n",
254 | "0 None None None \n",
255 | "1 [{'values': ['is_bridge'], 'between': [0.48834... None None \n",
256 | "2 None None None \n",
257 | "3 None None None \n",
258 | "4 None None None "
259 | ]
260 | },
261 | "execution_count": 4,
262 | "metadata": {},
263 | "output_type": "execute_result"
264 | }
265 | ],
266 | "source": [
267 | "gdf.head()"
268 | ]
269 | },
270 | {
271 | "cell_type": "code",
272 | "execution_count": null,
273 | "metadata": {},
274 | "outputs": [],
275 | "source": []
276 | }
277 | ],
278 | "metadata": {
279 | "kernelspec": {
280 | "display_name": "Python 3 (ipykernel)",
281 | "language": "python",
282 | "name": "python3"
283 | },
284 | "language_info": {
285 | "codemirror_mode": {
286 | "name": "ipython",
287 | "version": 3
288 | },
289 | "file_extension": ".py",
290 | "mimetype": "text/x-python",
291 | "name": "python",
292 | "nbconvert_exporter": "python",
293 | "pygments_lexer": "ipython3",
294 | "version": "3.12.4"
295 | }
296 | },
297 | "nbformat": 4,
298 | "nbformat_minor": 4
299 | }
300 |
--------------------------------------------------------------------------------
/poetry.lock:
--------------------------------------------------------------------------------
1 | # This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
2 |
3 | [[package]]
4 | name = "certifi"
5 | version = "2024.7.4"
6 | description = "Python package for providing Mozilla's CA Bundle."
7 | optional = true
8 | python-versions = ">=3.6"
9 | files = [
10 | {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"},
11 | {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"},
12 | ]
13 |
14 | [[package]]
15 | name = "click"
16 | version = "8.1.7"
17 | description = "Composable command line interface toolkit"
18 | optional = false
19 | python-versions = ">=3.7"
20 | files = [
21 | {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"},
22 | {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"},
23 | ]
24 |
25 | [package.dependencies]
26 | colorama = {version = "*", markers = "platform_system == \"Windows\""}
27 |
28 | [[package]]
29 | name = "colorama"
30 | version = "0.4.6"
31 | description = "Cross-platform colored terminal text."
32 | optional = false
33 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
34 | files = [
35 | {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
36 | {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
37 | ]
38 |
39 | [[package]]
40 | name = "geopandas"
41 | version = "1.0.1"
42 | description = "Geographic pandas extensions"
43 | optional = true
44 | python-versions = ">=3.9"
45 | files = [
46 | {file = "geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6"},
47 | {file = "geopandas-1.0.1.tar.gz", hash = "sha256:b8bf70a5534588205b7a56646e2082fb1de9a03599651b3d80c99ea4c2ca08ab"},
48 | ]
49 |
50 | [package.dependencies]
51 | numpy = ">=1.22"
52 | packaging = "*"
53 | pandas = ">=1.4.0"
54 | pyogrio = ">=0.7.2"
55 | pyproj = ">=3.3.0"
56 | shapely = ">=2.0.0"
57 |
58 | [package.extras]
59 | all = ["GeoAlchemy2", "SQLAlchemy (>=1.3)", "folium", "geopy", "mapclassify", "matplotlib (>=3.5.0)", "psycopg-binary (>=3.1.0)", "pyarrow (>=8.0.0)", "xyzservices"]
60 | dev = ["black", "codecov", "pre-commit", "pytest (>=3.1.0)", "pytest-cov", "pytest-xdist"]
61 |
62 | [[package]]
63 | name = "numpy"
64 | version = "1.24.4"
65 | description = "Fundamental package for array computing in Python"
66 | optional = false
67 | python-versions = ">=3.8"
68 | files = [
69 | {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"},
70 | {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"},
71 | {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"},
72 | {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"},
73 | {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"},
74 | {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"},
75 | {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"},
76 | {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"},
77 | {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"},
78 | {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"},
79 | {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"},
80 | {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"},
81 | {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"},
82 | {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"},
83 | {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"},
84 | {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"},
85 | {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"},
86 | {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"},
87 | {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"},
88 | {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"},
89 | {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"},
90 | {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"},
91 | {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"},
92 | {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"},
93 | {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"},
94 | {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"},
95 | {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"},
96 | {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"},
97 | ]
98 |
99 | [[package]]
100 | name = "numpy"
101 | version = "2.0.1"
102 | description = "Fundamental package for array computing in Python"
103 | optional = false
104 | python-versions = ">=3.9"
105 | files = [
106 | {file = "numpy-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fbb536eac80e27a2793ffd787895242b7f18ef792563d742c2d673bfcb75134"},
107 | {file = "numpy-2.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:69ff563d43c69b1baba77af455dd0a839df8d25e8590e79c90fcbe1499ebde42"},
108 | {file = "numpy-2.0.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:1b902ce0e0a5bb7704556a217c4f63a7974f8f43e090aff03fcf262e0b135e02"},
109 | {file = "numpy-2.0.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:f1659887361a7151f89e79b276ed8dff3d75877df906328f14d8bb40bb4f5101"},
110 | {file = "numpy-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4658c398d65d1b25e1760de3157011a80375da861709abd7cef3bad65d6543f9"},
111 | {file = "numpy-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4127d4303b9ac9f94ca0441138acead39928938660ca58329fe156f84b9f3015"},
112 | {file = "numpy-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e5eeca8067ad04bc8a2a8731183d51d7cbaac66d86085d5f4766ee6bf19c7f87"},
113 | {file = "numpy-2.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9adbd9bb520c866e1bfd7e10e1880a1f7749f1f6e5017686a5fbb9b72cf69f82"},
114 | {file = "numpy-2.0.1-cp310-cp310-win32.whl", hash = "sha256:7b9853803278db3bdcc6cd5beca37815b133e9e77ff3d4733c247414e78eb8d1"},
115 | {file = "numpy-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:81b0893a39bc5b865b8bf89e9ad7807e16717f19868e9d234bdaf9b1f1393868"},
116 | {file = "numpy-2.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75b4e316c5902d8163ef9d423b1c3f2f6252226d1aa5cd8a0a03a7d01ffc6268"},
117 | {file = "numpy-2.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6e4eeb6eb2fced786e32e6d8df9e755ce5be920d17f7ce00bc38fcde8ccdbf9e"},
118 | {file = "numpy-2.0.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:a1e01dcaab205fbece13c1410253a9eea1b1c9b61d237b6fa59bcc46e8e89343"},
119 | {file = "numpy-2.0.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:a8fc2de81ad835d999113ddf87d1ea2b0f4704cbd947c948d2f5513deafe5a7b"},
120 | {file = "numpy-2.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a3d94942c331dd4e0e1147f7a8699a4aa47dffc11bf8a1523c12af8b2e91bbe"},
121 | {file = "numpy-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15eb4eca47d36ec3f78cde0a3a2ee24cf05ca7396ef808dda2c0ddad7c2bde67"},
122 | {file = "numpy-2.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b83e16a5511d1b1f8a88cbabb1a6f6a499f82c062a4251892d9ad5d609863fb7"},
123 | {file = "numpy-2.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f87fec1f9bc1efd23f4227becff04bd0e979e23ca50cc92ec88b38489db3b55"},
124 | {file = "numpy-2.0.1-cp311-cp311-win32.whl", hash = "sha256:36d3a9405fd7c511804dc56fc32974fa5533bdeb3cd1604d6b8ff1d292b819c4"},
125 | {file = "numpy-2.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:08458fbf403bff5e2b45f08eda195d4b0c9b35682311da5a5a0a0925b11b9bd8"},
126 | {file = "numpy-2.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6bf4e6f4a2a2e26655717a1983ef6324f2664d7011f6ef7482e8c0b3d51e82ac"},
127 | {file = "numpy-2.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6fddc5fe258d3328cd8e3d7d3e02234c5d70e01ebe377a6ab92adb14039cb4"},
128 | {file = "numpy-2.0.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5daab361be6ddeb299a918a7c0864fa8618af66019138263247af405018b04e1"},
129 | {file = "numpy-2.0.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:ea2326a4dca88e4a274ba3a4405eb6c6467d3ffbd8c7d38632502eaae3820587"},
130 | {file = "numpy-2.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:529af13c5f4b7a932fb0e1911d3a75da204eff023ee5e0e79c1751564221a5c8"},
131 | {file = "numpy-2.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6790654cb13eab303d8402354fabd47472b24635700f631f041bd0b65e37298a"},
132 | {file = "numpy-2.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cbab9fc9c391700e3e1287666dfd82d8666d10e69a6c4a09ab97574c0b7ee0a7"},
133 | {file = "numpy-2.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d0d92a5e3613c33a5f01db206a33f8fdf3d71f2912b0de1739894668b7a93b"},
134 | {file = "numpy-2.0.1-cp312-cp312-win32.whl", hash = "sha256:173a00b9995f73b79eb0191129f2455f1e34c203f559dd118636858cc452a1bf"},
135 | {file = "numpy-2.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:bb2124fdc6e62baae159ebcfa368708867eb56806804d005860b6007388df171"},
136 | {file = "numpy-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bfc085b28d62ff4009364e7ca34b80a9a080cbd97c2c0630bb5f7f770dae9414"},
137 | {file = "numpy-2.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8fae4ebbf95a179c1156fab0b142b74e4ba4204c87bde8d3d8b6f9c34c5825ef"},
138 | {file = "numpy-2.0.1-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:72dc22e9ec8f6eaa206deb1b1355eb2e253899d7347f5e2fae5f0af613741d06"},
139 | {file = "numpy-2.0.1-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:ec87f5f8aca726117a1c9b7083e7656a9d0d606eec7299cc067bb83d26f16e0c"},
140 | {file = "numpy-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f682ea61a88479d9498bf2091fdcd722b090724b08b31d63e022adc063bad59"},
141 | {file = "numpy-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8efc84f01c1cd7e34b3fb310183e72fcdf55293ee736d679b6d35b35d80bba26"},
142 | {file = "numpy-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3fdabe3e2a52bc4eff8dc7a5044342f8bd9f11ef0934fcd3289a788c0eb10018"},
143 | {file = "numpy-2.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:24a0e1befbfa14615b49ba9659d3d8818a0f4d8a1c5822af8696706fbda7310c"},
144 | {file = "numpy-2.0.1-cp39-cp39-win32.whl", hash = "sha256:f9cf5ea551aec449206954b075db819f52adc1638d46a6738253a712d553c7b4"},
145 | {file = "numpy-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:e9e81fa9017eaa416c056e5d9e71be93d05e2c3c2ab308d23307a8bc4443c368"},
146 | {file = "numpy-2.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:61728fba1e464f789b11deb78a57805c70b2ed02343560456190d0501ba37b0f"},
147 | {file = "numpy-2.0.1-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:12f5d865d60fb9734e60a60f1d5afa6d962d8d4467c120a1c0cda6eb2964437d"},
148 | {file = "numpy-2.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eacf3291e263d5a67d8c1a581a8ebbcfd6447204ef58828caf69a5e3e8c75990"},
149 | {file = "numpy-2.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2c3a346ae20cfd80b6cfd3e60dc179963ef2ea58da5ec074fd3d9e7a1e7ba97f"},
150 | {file = "numpy-2.0.1.tar.gz", hash = "sha256:485b87235796410c3519a699cfe1faab097e509e90ebb05dcd098db2ae87e7b3"},
151 | ]
152 |
153 | [[package]]
154 | name = "packaging"
155 | version = "24.1"
156 | description = "Core utilities for Python packages"
157 | optional = true
158 | python-versions = ">=3.8"
159 | files = [
160 | {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"},
161 | {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"},
162 | ]
163 |
164 | [[package]]
165 | name = "pandas"
166 | version = "2.2.2"
167 | description = "Powerful data structures for data analysis, time series, and statistics"
168 | optional = true
169 | python-versions = ">=3.9"
170 | files = [
171 | {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"},
172 | {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"},
173 | {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"},
174 | {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"},
175 | {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"},
176 | {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"},
177 | {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"},
178 | {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"},
179 | {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"},
180 | {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"},
181 | {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"},
182 | {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"},
183 | {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"},
184 | {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"},
185 | {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"},
186 | {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"},
187 | {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"},
188 | {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"},
189 | {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"},
190 | {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"},
191 | {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"},
192 | {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"},
193 | {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"},
194 | {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"},
195 | {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"},
196 | {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"},
197 | {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"},
198 | {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"},
199 | {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"},
200 | ]
201 |
202 | [package.dependencies]
203 | numpy = [
204 | {version = ">=1.22.4", markers = "python_version < \"3.11\""},
205 | {version = ">=1.23.2", markers = "python_version == \"3.11\""},
206 | {version = ">=1.26.0", markers = "python_version >= \"3.12\""},
207 | ]
208 | python-dateutil = ">=2.8.2"
209 | pytz = ">=2020.1"
210 | tzdata = ">=2022.7"
211 |
212 | [package.extras]
213 | all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"]
214 | aws = ["s3fs (>=2022.11.0)"]
215 | clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"]
216 | compression = ["zstandard (>=0.19.0)"]
217 | computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"]
218 | consortium-standard = ["dataframe-api-compat (>=0.1.7)"]
219 | excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"]
220 | feather = ["pyarrow (>=10.0.1)"]
221 | fss = ["fsspec (>=2022.11.0)"]
222 | gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"]
223 | hdf5 = ["tables (>=3.8.0)"]
224 | html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"]
225 | mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"]
226 | output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"]
227 | parquet = ["pyarrow (>=10.0.1)"]
228 | performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"]
229 | plot = ["matplotlib (>=3.6.3)"]
230 | postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"]
231 | pyarrow = ["pyarrow (>=10.0.1)"]
232 | spss = ["pyreadstat (>=1.2.0)"]
233 | sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"]
234 | test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"]
235 | xml = ["lxml (>=4.9.2)"]
236 |
237 | [[package]]
238 | name = "pyarrow"
239 | version = "17.0.0"
240 | description = "Python library for Apache Arrow"
241 | optional = false
242 | python-versions = ">=3.8"
243 | files = [
244 | {file = "pyarrow-17.0.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:a5c8b238d47e48812ee577ee20c9a2779e6a5904f1708ae240f53ecbee7c9f07"},
245 | {file = "pyarrow-17.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db023dc4c6cae1015de9e198d41250688383c3f9af8f565370ab2b4cb5f62655"},
246 | {file = "pyarrow-17.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da1e060b3876faa11cee287839f9cc7cdc00649f475714b8680a05fd9071d545"},
247 | {file = "pyarrow-17.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c06d4624c0ad6674364bb46ef38c3132768139ddec1c56582dbac54f2663e2"},
248 | {file = "pyarrow-17.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:fa3c246cc58cb5a4a5cb407a18f193354ea47dd0648194e6265bd24177982fe8"},
249 | {file = "pyarrow-17.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:f7ae2de664e0b158d1607699a16a488de3d008ba99b3a7aa5de1cbc13574d047"},
250 | {file = "pyarrow-17.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:5984f416552eea15fd9cee03da53542bf4cddaef5afecefb9aa8d1010c335087"},
251 | {file = "pyarrow-17.0.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:1c8856e2ef09eb87ecf937104aacfa0708f22dfeb039c363ec99735190ffb977"},
252 | {file = "pyarrow-17.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2e19f569567efcbbd42084e87f948778eb371d308e137a0f97afe19bb860ccb3"},
253 | {file = "pyarrow-17.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b244dc8e08a23b3e352899a006a26ae7b4d0da7bb636872fa8f5884e70acf15"},
254 | {file = "pyarrow-17.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b72e87fe3e1db343995562f7fff8aee354b55ee83d13afba65400c178ab2597"},
255 | {file = "pyarrow-17.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:dc5c31c37409dfbc5d014047817cb4ccd8c1ea25d19576acf1a001fe07f5b420"},
256 | {file = "pyarrow-17.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:e3343cb1e88bc2ea605986d4b94948716edc7a8d14afd4e2c097232f729758b4"},
257 | {file = "pyarrow-17.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:a27532c38f3de9eb3e90ecab63dfda948a8ca859a66e3a47f5f42d1e403c4d03"},
258 | {file = "pyarrow-17.0.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:9b8a823cea605221e61f34859dcc03207e52e409ccf6354634143e23af7c8d22"},
259 | {file = "pyarrow-17.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f1e70de6cb5790a50b01d2b686d54aaf73da01266850b05e3af2a1bc89e16053"},
260 | {file = "pyarrow-17.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0071ce35788c6f9077ff9ecba4858108eebe2ea5a3f7cf2cf55ebc1dbc6ee24a"},
261 | {file = "pyarrow-17.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:757074882f844411fcca735e39aae74248a1531367a7c80799b4266390ae51cc"},
262 | {file = "pyarrow-17.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:9ba11c4f16976e89146781a83833df7f82077cdab7dc6232c897789343f7891a"},
263 | {file = "pyarrow-17.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b0c6ac301093b42d34410b187bba560b17c0330f64907bfa4f7f7f2444b0cf9b"},
264 | {file = "pyarrow-17.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:392bc9feabc647338e6c89267635e111d71edad5fcffba204425a7c8d13610d7"},
265 | {file = "pyarrow-17.0.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:af5ff82a04b2171415f1410cff7ebb79861afc5dae50be73ce06d6e870615204"},
266 | {file = "pyarrow-17.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:edca18eaca89cd6382dfbcff3dd2d87633433043650c07375d095cd3517561d8"},
267 | {file = "pyarrow-17.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c7916bff914ac5d4a8fe25b7a25e432ff921e72f6f2b7547d1e325c1ad9d155"},
268 | {file = "pyarrow-17.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f553ca691b9e94b202ff741bdd40f6ccb70cdd5fbf65c187af132f1317de6145"},
269 | {file = "pyarrow-17.0.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:0cdb0e627c86c373205a2f94a510ac4376fdc523f8bb36beab2e7f204416163c"},
270 | {file = "pyarrow-17.0.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:d7d192305d9d8bc9082d10f361fc70a73590a4c65cf31c3e6926cd72b76bc35c"},
271 | {file = "pyarrow-17.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:02dae06ce212d8b3244dd3e7d12d9c4d3046945a5933d28026598e9dbbda1fca"},
272 | {file = "pyarrow-17.0.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:13d7a460b412f31e4c0efa1148e1d29bdf18ad1411eb6757d38f8fbdcc8645fb"},
273 | {file = "pyarrow-17.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9b564a51fbccfab5a04a80453e5ac6c9954a9c5ef2890d1bcf63741909c3f8df"},
274 | {file = "pyarrow-17.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32503827abbc5aadedfa235f5ece8c4f8f8b0a3cf01066bc8d29de7539532687"},
275 | {file = "pyarrow-17.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a155acc7f154b9ffcc85497509bcd0d43efb80d6f733b0dc3bb14e281f131c8b"},
276 | {file = "pyarrow-17.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:dec8d129254d0188a49f8a1fc99e0560dc1b85f60af729f47de4046015f9b0a5"},
277 | {file = "pyarrow-17.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:a48ddf5c3c6a6c505904545c25a4ae13646ae1f8ba703c4df4a1bfe4f4006bda"},
278 | {file = "pyarrow-17.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:42bf93249a083aca230ba7e2786c5f673507fa97bbd9725a1e2754715151a204"},
279 | {file = "pyarrow-17.0.0.tar.gz", hash = "sha256:4beca9521ed2c0921c1023e68d097d0299b62c362639ea315572a58f3f50fd28"},
280 | ]
281 |
282 | [package.dependencies]
283 | numpy = ">=1.16.6"
284 |
285 | [package.extras]
286 | test = ["cffi", "hypothesis", "pandas", "pytest", "pytz"]
287 |
288 | [[package]]
289 | name = "pyogrio"
290 | version = "0.9.0"
291 | description = "Vectorized spatial vector file format I/O using GDAL/OGR"
292 | optional = true
293 | python-versions = ">=3.8"
294 | files = [
295 | {file = "pyogrio-0.9.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:1a495ca4fb77c69595747dd688f8f17bb7d2ea9cd86603aa71c7fc98cc8b4174"},
296 | {file = "pyogrio-0.9.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:6dc94a67163218581c7df275223488ac9b31dc582ccd756da607c3338908566c"},
297 | {file = "pyogrio-0.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e38c3c6d37cf2cc969407e4d051dcb507cfd948eb26c7b0840c4f7d7d4a71bd4"},
298 | {file = "pyogrio-0.9.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:f47c9b6818cc0f420015b672d5dcc488530a5ee63e5ba35a184957b21ea3922a"},
299 | {file = "pyogrio-0.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb04bd80964428491951766452f0071b0bc37c7d38c45ef02502dbd83e5d74a0"},
300 | {file = "pyogrio-0.9.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:f5d80eb846be4fc4e642cbedc1ed0c143e8d241653382ecc76a7620bbd2a5c3a"},
301 | {file = "pyogrio-0.9.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:2f2ec57ab74785db9c2bf47c0a6731e5175595a13f8253f06fa84136adb310a9"},
302 | {file = "pyogrio-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a289584da6df7ca318947301fe0ba9177e7f863f63110e087c80ac5f3658de8"},
303 | {file = "pyogrio-0.9.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:13642608a1cd67797ae8b5d792b0518d8ef3eb76506c8232ab5eaa1ea1159dff"},
304 | {file = "pyogrio-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:9440466c0211ac81f3417f274da5903f15546b486f76b2f290e74a56aaf0e737"},
305 | {file = "pyogrio-0.9.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2e98913fa183f7597c609e774820a149e9329fd2a0f8d33978252fbd00ae87e6"},
306 | {file = "pyogrio-0.9.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:f8bf193269ea9d347ac3ddada960a59f1ab2e4a5c009be95dc70e6505346b2fc"},
307 | {file = "pyogrio-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f964002d445521ad5b8e732a6b5ef0e2d2be7fe566768e5075c1d71398da64a"},
308 | {file = "pyogrio-0.9.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:083351b258b3e08b6c6085dac560bd321b68de5cb4a66229095da68d5f3d696b"},
309 | {file = "pyogrio-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:796e4f6a4e769b2eb6fea9a10546ea4bdee16182d1e29802b4d6349363c3c1d7"},
310 | {file = "pyogrio-0.9.0-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:7fcafed24371fe6e23bcf5abebbb29269f8d79915f1dd818ac85453657ea714a"},
311 | {file = "pyogrio-0.9.0-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:30cbeeaedb9bced7012487e7438919aa0c7dfba18ac3d4315182b46eb3139b9d"},
312 | {file = "pyogrio-0.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4da0b9deb380bd9a200fee13182c4f95b02b4c554c923e2e0032f32aaf1439ed"},
313 | {file = "pyogrio-0.9.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:4e0f90a6c3771ee1f1fea857778b4b6a1b64000d851b819f435f9091b3c38c60"},
314 | {file = "pyogrio-0.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:959022f3ad04053f8072dc9a2ad110c46edd9e4f92352061ba835fc91df3ca96"},
315 | {file = "pyogrio-0.9.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:2829615cf58b1b24a9f96fea42abedaa1a800dd351c67374cc2f6341138608f3"},
316 | {file = "pyogrio-0.9.0-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:17420febc17651876d5140b54b24749aa751d482b5f9ef6267b8053e6e962876"},
317 | {file = "pyogrio-0.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a2fcaa269031dbbc8ebd91243c6452c5d267d6df939c008ab7533413c9cf92d"},
318 | {file = "pyogrio-0.9.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:019731a856a9abfe909e86f50eb13f8362f6742337caf757c54b7c8acfe75b89"},
319 | {file = "pyogrio-0.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:d668cb10f2bf6ccd7c402f91e8b06290722dd09dbe265ae95b2c13db29ebeba0"},
320 | {file = "pyogrio-0.9.0.tar.gz", hash = "sha256:6a6fa2e8cf95b3d4a7c0fac48bce6e5037579e28d3eb33b53349d6e11f15e5a8"},
321 | ]
322 |
323 | [package.dependencies]
324 | certifi = "*"
325 | numpy = "*"
326 | packaging = "*"
327 |
328 | [package.extras]
329 | benchmark = ["pytest-benchmark"]
330 | dev = ["Cython"]
331 | geopandas = ["geopandas"]
332 | test = ["pytest", "pytest-cov"]
333 |
334 | [[package]]
335 | name = "pyproj"
336 | version = "3.6.1"
337 | description = "Python interface to PROJ (cartographic projections and coordinate transformations library)"
338 | optional = true
339 | python-versions = ">=3.9"
340 | files = [
341 | {file = "pyproj-3.6.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ab7aa4d9ff3c3acf60d4b285ccec134167a948df02347585fdd934ebad8811b4"},
342 | {file = "pyproj-3.6.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4bc0472302919e59114aa140fd7213c2370d848a7249d09704f10f5b062031fe"},
343 | {file = "pyproj-3.6.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5279586013b8d6582e22b6f9e30c49796966770389a9d5b85e25a4223286cd3f"},
344 | {file = "pyproj-3.6.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80fafd1f3eb421694857f254a9bdbacd1eb22fc6c24ca74b136679f376f97d35"},
345 | {file = "pyproj-3.6.1-cp310-cp310-win32.whl", hash = "sha256:c41e80ddee130450dcb8829af7118f1ab69eaf8169c4bf0ee8d52b72f098dc2f"},
346 | {file = "pyproj-3.6.1-cp310-cp310-win_amd64.whl", hash = "sha256:db3aedd458e7f7f21d8176f0a1d924f1ae06d725228302b872885a1c34f3119e"},
347 | {file = "pyproj-3.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ebfbdbd0936e178091309f6cd4fcb4decd9eab12aa513cdd9add89efa3ec2882"},
348 | {file = "pyproj-3.6.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:447db19c7efad70ff161e5e46a54ab9cc2399acebb656b6ccf63e4bc4a04b97a"},
349 | {file = "pyproj-3.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7e13c40183884ec7f94eb8e0f622f08f1d5716150b8d7a134de48c6110fee85"},
350 | {file = "pyproj-3.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65ad699e0c830e2b8565afe42bd58cc972b47d829b2e0e48ad9638386d994915"},
351 | {file = "pyproj-3.6.1-cp311-cp311-win32.whl", hash = "sha256:8b8acc31fb8702c54625f4d5a2a6543557bec3c28a0ef638778b7ab1d1772132"},
352 | {file = "pyproj-3.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:38a3361941eb72b82bd9a18f60c78b0df8408416f9340521df442cebfc4306e2"},
353 | {file = "pyproj-3.6.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1e9fbaf920f0f9b4ee62aab832be3ae3968f33f24e2e3f7fbb8c6728ef1d9746"},
354 | {file = "pyproj-3.6.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d227a865356f225591b6732430b1d1781e946893789a609bb34f59d09b8b0f8"},
355 | {file = "pyproj-3.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83039e5ae04e5afc974f7d25ee0870a80a6bd6b7957c3aca5613ccbe0d3e72bf"},
356 | {file = "pyproj-3.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb059ba3bced6f6725961ba758649261d85ed6ce670d3e3b0a26e81cf1aa8d"},
357 | {file = "pyproj-3.6.1-cp312-cp312-win32.whl", hash = "sha256:2d6ff73cc6dbbce3766b6c0bce70ce070193105d8de17aa2470009463682a8eb"},
358 | {file = "pyproj-3.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:7a27151ddad8e1439ba70c9b4b2b617b290c39395fa9ddb7411ebb0eb86d6fb0"},
359 | {file = "pyproj-3.6.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4ba1f9b03d04d8cab24d6375609070580a26ce76eaed54631f03bab00a9c737b"},
360 | {file = "pyproj-3.6.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:18faa54a3ca475bfe6255156f2f2874e9a1c8917b0004eee9f664b86ccc513d3"},
361 | {file = "pyproj-3.6.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd43bd9a9b9239805f406fd82ba6b106bf4838d9ef37c167d3ed70383943ade1"},
362 | {file = "pyproj-3.6.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50100b2726a3ca946906cbaa789dd0749f213abf0cbb877e6de72ca7aa50e1ae"},
363 | {file = "pyproj-3.6.1-cp39-cp39-win32.whl", hash = "sha256:9274880263256f6292ff644ca92c46d96aa7e57a75c6df3f11d636ce845a1877"},
364 | {file = "pyproj-3.6.1-cp39-cp39-win_amd64.whl", hash = "sha256:36b64c2cb6ea1cc091f329c5bd34f9c01bb5da8c8e4492c709bda6a09f96808f"},
365 | {file = "pyproj-3.6.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fd93c1a0c6c4aedc77c0fe275a9f2aba4d59b8acf88cebfc19fe3c430cfabf4f"},
366 | {file = "pyproj-3.6.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6420ea8e7d2a88cb148b124429fba8cd2e0fae700a2d96eab7083c0928a85110"},
367 | {file = "pyproj-3.6.1.tar.gz", hash = "sha256:44aa7c704c2b7d8fb3d483bbf75af6cb2350d30a63b144279a09b75fead501bf"},
368 | ]
369 |
370 | [package.dependencies]
371 | certifi = "*"
372 |
373 | [[package]]
374 | name = "python-dateutil"
375 | version = "2.9.0.post0"
376 | description = "Extensions to the standard Python datetime module"
377 | optional = true
378 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
379 | files = [
380 | {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"},
381 | {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"},
382 | ]
383 |
384 | [package.dependencies]
385 | six = ">=1.5"
386 |
387 | [[package]]
388 | name = "pytz"
389 | version = "2024.1"
390 | description = "World timezone definitions, modern and historical"
391 | optional = true
392 | python-versions = "*"
393 | files = [
394 | {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"},
395 | {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"},
396 | ]
397 |
398 | [[package]]
399 | name = "shapely"
400 | version = "2.0.5"
401 | description = "Manipulation and analysis of geometric objects"
402 | optional = false
403 | python-versions = ">=3.7"
404 | files = [
405 | {file = "shapely-2.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:89d34787c44f77a7d37d55ae821f3a784fa33592b9d217a45053a93ade899375"},
406 | {file = "shapely-2.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:798090b426142df2c5258779c1d8d5734ec6942f778dab6c6c30cfe7f3bf64ff"},
407 | {file = "shapely-2.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45211276900c4790d6bfc6105cbf1030742da67594ea4161a9ce6812a6721e68"},
408 | {file = "shapely-2.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e119444bc27ca33e786772b81760f2028d930ac55dafe9bc50ef538b794a8e1"},
409 | {file = "shapely-2.0.5-cp310-cp310-win32.whl", hash = "sha256:9a4492a2b2ccbeaebf181e7310d2dfff4fdd505aef59d6cb0f217607cb042fb3"},
410 | {file = "shapely-2.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:1e5cb5ee72f1bc7ace737c9ecd30dc174a5295fae412972d3879bac2e82c8fae"},
411 | {file = "shapely-2.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5bbfb048a74cf273db9091ff3155d373020852805a37dfc846ab71dde4be93ec"},
412 | {file = "shapely-2.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93be600cbe2fbaa86c8eb70656369f2f7104cd231f0d6585c7d0aa555d6878b8"},
413 | {file = "shapely-2.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f8e71bb9a46814019f6644c4e2560a09d44b80100e46e371578f35eaaa9da1c"},
414 | {file = "shapely-2.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5251c28a29012e92de01d2e84f11637eb1d48184ee8f22e2df6c8c578d26760"},
415 | {file = "shapely-2.0.5-cp311-cp311-win32.whl", hash = "sha256:35110e80070d664781ec7955c7de557456b25727a0257b354830abb759bf8311"},
416 | {file = "shapely-2.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:6c6b78c0007a34ce7144f98b7418800e0a6a5d9a762f2244b00ea560525290c9"},
417 | {file = "shapely-2.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:03bd7b5fa5deb44795cc0a503999d10ae9d8a22df54ae8d4a4cd2e8a93466195"},
418 | {file = "shapely-2.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ff9521991ed9e201c2e923da014e766c1aa04771bc93e6fe97c27dcf0d40ace"},
419 | {file = "shapely-2.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b65365cfbf657604e50d15161ffcc68de5cdb22a601bbf7823540ab4918a98d"},
420 | {file = "shapely-2.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21f64e647a025b61b19585d2247137b3a38a35314ea68c66aaf507a1c03ef6fe"},
421 | {file = "shapely-2.0.5-cp312-cp312-win32.whl", hash = "sha256:3ac7dc1350700c139c956b03d9c3df49a5b34aaf91d024d1510a09717ea39199"},
422 | {file = "shapely-2.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:30e8737983c9d954cd17feb49eb169f02f1da49e24e5171122cf2c2b62d65c95"},
423 | {file = "shapely-2.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ff7731fea5face9ec08a861ed351734a79475631b7540ceb0b66fb9732a5f529"},
424 | {file = "shapely-2.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff9e520af0c5a578e174bca3c18713cd47a6c6a15b6cf1f50ac17dc8bb8db6a2"},
425 | {file = "shapely-2.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b299b91557b04acb75e9732645428470825061f871a2edc36b9417d66c1fc5"},
426 | {file = "shapely-2.0.5-cp37-cp37m-win32.whl", hash = "sha256:b5870633f8e684bf6d1ae4df527ddcb6f3895f7b12bced5c13266ac04f47d231"},
427 | {file = "shapely-2.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:401cb794c5067598f50518e5a997e270cd7642c4992645479b915c503866abed"},
428 | {file = "shapely-2.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e91ee179af539100eb520281ba5394919067c6b51824e6ab132ad4b3b3e76dd0"},
429 | {file = "shapely-2.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8af6f7260f809c0862741ad08b1b89cb60c130ae30efab62320bbf4ee9cc71fa"},
430 | {file = "shapely-2.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5456dd522800306ba3faef77c5ba847ec30a0bd73ab087a25e0acdd4db2514f"},
431 | {file = "shapely-2.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b714a840402cde66fd7b663bb08cacb7211fa4412ea2a209688f671e0d0631fd"},
432 | {file = "shapely-2.0.5-cp38-cp38-win32.whl", hash = "sha256:7e8cf5c252fac1ea51b3162be2ec3faddedc82c256a1160fc0e8ddbec81b06d2"},
433 | {file = "shapely-2.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:4461509afdb15051e73ab178fae79974387f39c47ab635a7330d7fee02c68a3f"},
434 | {file = "shapely-2.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7545a39c55cad1562be302d74c74586f79e07b592df8ada56b79a209731c0219"},
435 | {file = "shapely-2.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4c83a36f12ec8dee2066946d98d4d841ab6512a6ed7eb742e026a64854019b5f"},
436 | {file = "shapely-2.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89e640c2cd37378480caf2eeda9a51be64201f01f786d127e78eaeff091ec897"},
437 | {file = "shapely-2.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06efe39beafde3a18a21dde169d32f315c57da962826a6d7d22630025200c5e6"},
438 | {file = "shapely-2.0.5-cp39-cp39-win32.whl", hash = "sha256:8203a8b2d44dcb366becbc8c3d553670320e4acf0616c39e218c9561dd738d92"},
439 | {file = "shapely-2.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:7fed9dbfbcfec2682d9a047b9699db8dcc890dfca857ecba872c42185fc9e64e"},
440 | {file = "shapely-2.0.5.tar.gz", hash = "sha256:bff2366bc786bfa6cb353d6b47d0443c570c32776612e527ee47b6df63fcfe32"},
441 | ]
442 |
443 | [package.dependencies]
444 | numpy = ">=1.14,<3"
445 |
446 | [package.extras]
447 | docs = ["matplotlib", "numpydoc (==1.1.*)", "sphinx", "sphinx-book-theme", "sphinx-remove-toctrees"]
448 | test = ["pytest", "pytest-cov"]
449 |
450 | [[package]]
451 | name = "six"
452 | version = "1.16.0"
453 | description = "Python 2 and 3 compatibility utilities"
454 | optional = true
455 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
456 | files = [
457 | {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
458 | {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
459 | ]
460 |
461 | [[package]]
462 | name = "tzdata"
463 | version = "2024.1"
464 | description = "Provider of IANA time zone data"
465 | optional = true
466 | python-versions = ">=2"
467 | files = [
468 | {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"},
469 | {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"},
470 | ]
471 |
472 | [extras]
473 | geopandas = ["geopandas"]
474 |
475 | [metadata]
476 | lock-version = "2.0"
477 | python-versions = "^3.8"
478 | content-hash = "7eab200a1fb7d7b7a9fa85622ea88a6cae4138ac392a654f3d1fcf46e2b83738"
479 |
--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------
1 | [tool.poetry]
2 | name = "overturemaps"
3 | version = "0.14.0"
4 | description = "Python tools for interacting with Overture Maps (overturemaps.org) data."
5 | authors = ["Jacob Wasserman "]
6 | license = "MIT"
7 | readme = "README.md"
8 |
9 | [tool.poetry.dependencies]
10 | python = "^3.8"
11 | click = ">=8.1.7"
12 | pyarrow = ">=15.0.2"
13 | shapely = ">=2.0.3"
14 | # shapely has numpy as a dependency and only specific versions are compatible via poetry install
15 | numpy = [
16 | {version = "1.24.4", python = "<3.9"},
17 | {version = ">=1.26.4", python = ">=3.9"}
18 | ]
19 | geopandas = { version = ">=1.0", optional = true, python = ">=3.9" }
20 |
21 | [tool.poetry.extras]
22 | geopandas = ["geopandas"]
23 |
24 | [tool.poetry.scripts]
25 | overturemaps = 'overturemaps.cli:cli'
26 |
27 |
28 | [build-system]
29 | requires = ["poetry-core"]
30 | build-backend = "poetry.core.masonry.api"
31 |
--------------------------------------------------------------------------------