Skip to content

Commit c2d8ba6

Browse files
Unify UUID, pagination and intervals (#8)
* Unify UUID, pagination and intervals * keep imports backward compatible
1 parent e1d1662 commit c2d8ba6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+1100
-1133
lines changed

buf.gen.datasets.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# please keep this file in sync with buf.gen.workflows.yaml, especially the plugins versions
12
version: v2
23
managed:
34
enabled: true
@@ -14,3 +15,4 @@ inputs:
1415
- module: buf.build/tilebox/api
1516
paths:
1617
- "datasets"
18+
- "tilebox"

buf.gen.workflows.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# please keep this file in sync with buf.gen.datasets.yaml, especially the plugins versions
12
version: v2
23
managed:
34
enabled: true

pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ exclude = [
7070
# it's auto generated, don't lint it
7171
"*/datasets/v1/*",
7272
"*/workflows/v1/*",
73+
"*/tilebox/v1/*",
7374
]
7475

7576
[tool.ruff.lint]
@@ -118,6 +119,7 @@ ignore = [
118119
# it's auto generated
119120
"**/datasets/v1",
120121
"**/workflows/v1",
122+
"**/tilebox/v1",
121123
]
122124

123125
# pyright needs to have all the dependencies installed to be able to type check

tilebox-datasets/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ packages = ["tilebox"]
5454
packages = ["tilebox"]
5555

5656
[tool.coverage.run]
57-
omit = ["tilebox/*/datasets/v1/*"]
57+
omit = ["tilebox/*/datasets/v1/*", "tilebox/*/tilebox/v1/*"]
5858

5959
[tool.pytest.ini_options]
6060
minversion = "6.0"

tilebox-datasets/tests/data/collection.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33

44
from hypothesis.strategies import DrawFn, composite, integers, just, none, text, uuids
55

6-
from tests.data.time_interval import time_intervals
6+
from tests.query.time_interval import time_intervals
77
from tilebox.datasets.data.collection import Collection, CollectionInfo
8-
from tilebox.datasets.data.time_interval import _EMPTY_TIME_INTERVAL
8+
from tilebox.datasets.query.time_interval import _EMPTY_TIME_INTERVAL
99

1010

1111
@composite

tilebox-datasets/tests/data/data_access.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
from hypothesis.strategies import DrawFn, booleans, composite, none, one_of, sampled_from
44
from shapely import Geometry
55

6-
from tests.data.datapoint import datapoint_intervals
7-
from tests.data.time_interval import time_intervals
86
from tests.data.well_known_types import shapely_polygons
7+
from tests.query.datapoint import id_intervals
8+
from tests.query.time_interval import time_intervals
99
from tilebox.datasets.data.data_access import (
1010
QueryFilters,
1111
SpatialCoordinateSystem,
@@ -55,6 +55,6 @@ def spatial_filters(draw: DrawFn) -> SpatialFilter:
5555
@composite
5656
def query_filters(draw: DrawFn) -> QueryFilters:
5757
"""A hypothesis strategy for generating random query filters"""
58-
temporal_extent = draw(one_of(time_intervals(), datapoint_intervals()))
58+
temporal_extent = draw(one_of(time_intervals(), id_intervals()))
5959
spatial_extent = draw(spatial_filters() | none())
6060
return QueryFilters(temporal_extent, spatial_extent)

tilebox-datasets/tests/data/datapoint.py

Lines changed: 4 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
)
1919

2020
from tests.data.datasets import example_dataset_type_url
21-
from tests.data.pagination import paginations
22-
from tests.data.time_interval import i64_datetimes
2321
from tests.data.well_known_types import (
2422
datetime_messages,
2523
duration_messages,
@@ -31,44 +29,11 @@
3129
vec3_messages,
3230
)
3331
from tests.example_dataset.example_dataset_pb2 import ExampleDatapoint
34-
from tilebox.datasets.data.datapoint import (
35-
AnyMessage,
36-
DatapointInterval,
37-
DatapointIntervalLike,
38-
IngestResponse,
39-
QueryResultPage,
40-
RepeatedAny,
41-
)
42-
from tilebox.datasets.data.time_interval import (
43-
datetime_to_timestamp,
44-
)
32+
from tests.query.pagination import paginations
33+
from tests.query.time_interval import i64_datetimes
34+
from tilebox.datasets.data.datapoint import AnyMessage, IngestResponse, QueryResultPage, RepeatedAny
4535
from tilebox.datasets.datasets.v1 import core_pb2
46-
47-
48-
@composite
49-
def datapoint_intervals(draw: DrawFn) -> DatapointInterval:
50-
"""A hypothesis strategy for generating random datapoint intervals"""
51-
start = draw(uuids(version=4))
52-
end = draw(uuids(version=4))
53-
start, end = min(start, end), max(start, end) # make sure start is before end
54-
55-
start_exclusive = draw(booleans())
56-
end_inclusive = draw(booleans())
57-
58-
return DatapointInterval(start, end, start_exclusive, end_inclusive)
59-
60-
61-
@composite
62-
def datapoint_intervals_like(draw: DrawFn) -> DatapointIntervalLike:
63-
"""A hypothesis strategy for generating random datapoint intervals"""
64-
interval = draw(datapoint_intervals())
65-
return draw(
66-
one_of(
67-
just(interval),
68-
just((str(interval.start_id), str(interval.end_id))),
69-
just((interval.start_id, interval.end_id)),
70-
)
71-
)
36+
from tilebox.datasets.query.time_interval import datetime_to_timestamp
7237

7338

7439
@composite

tilebox-datasets/tests/data/test_collection.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from tests.data.collection import collection_infos, collections
44
from tilebox.datasets.data.collection import Collection, CollectionInfo
5-
from tilebox.datasets.data.time_interval import _EMPTY_TIME_INTERVAL
5+
from tilebox.datasets.query.time_interval import _EMPTY_TIME_INTERVAL
66

77

88
@given(collections())

tilebox-datasets/tests/data/test_datapoint.py

Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,7 @@
11
from hypothesis import given
22

3-
from tests.data.datapoint import (
4-
anys,
5-
datapoint_intervals,
6-
datapoint_intervals_like,
7-
ingest_datapoints_responses,
8-
query_result_pages,
9-
repeated_anys,
10-
)
11-
from tilebox.datasets.data.datapoint import (
12-
AnyMessage,
13-
DatapointInterval,
14-
DatapointIntervalLike,
15-
IngestResponse,
16-
QueryResultPage,
17-
RepeatedAny,
18-
)
19-
20-
21-
@given(datapoint_intervals())
22-
def test_datapoint_intervals_to_message_and_back(interval: DatapointInterval) -> None:
23-
assert DatapointInterval.from_message(interval.to_message()) == interval
24-
25-
26-
@given(datapoint_intervals_like())
27-
def test_parse_datapoint_interval_from_tuple(interval: DatapointIntervalLike) -> None:
28-
parsed = DatapointInterval.parse(interval)
29-
30-
if isinstance(interval, DatapointInterval):
31-
assert parsed == interval, f"Failed parsing interval from {interval}"
32-
assert parsed.start_exclusive == interval.start_exclusive
33-
assert parsed.end_inclusive == interval.end_inclusive
34-
else:
35-
assert not parsed.start_exclusive
36-
assert parsed.end_inclusive
3+
from tests.data.datapoint import anys, ingest_datapoints_responses, query_result_pages, repeated_anys
4+
from tilebox.datasets.data.datapoint import AnyMessage, IngestResponse, QueryResultPage, RepeatedAny
375

386

397
@given(anys())

tilebox-datasets/tests/data/well_known_types.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
)
1111
from shapely import MultiPolygon, Polygon, box, to_wkb
1212

13-
from tests.data.time_interval import i64_datetimes
14-
from tilebox.datasets.data.time_interval import datetime_to_timestamp
13+
from tests.query.time_interval import i64_datetimes
1514
from tilebox.datasets.datasets.v1 import well_known_types_pb2
15+
from tilebox.datasets.query.time_interval import datetime_to_timestamp
1616

1717

1818
@composite

0 commit comments

Comments
 (0)