diff --git a/.github/styles/.gitignore b/.github/styles/.gitignore
new file mode 100644
index 0000000..41ae1c3
--- /dev/null
+++ b/.github/styles/.gitignore
@@ -0,0 +1,2 @@
+Google
+write-good
diff --git a/vale/styles/config/vocabularies/docs/accept.txt b/.github/styles/config/vocabularies/docs/accept.txt
similarity index 100%
rename from vale/styles/config/vocabularies/docs/accept.txt
rename to .github/styles/config/vocabularies/docs/accept.txt
diff --git a/vale/styles/config/vocabularies/docs/reject.txt b/.github/styles/config/vocabularies/docs/reject.txt
similarity index 100%
rename from vale/styles/config/vocabularies/docs/reject.txt
rename to .github/styles/config/vocabularies/docs/reject.txt
diff --git a/vale/styles/write-good/TooWordy.yml b/.github/styles/docs/TooWordy.yml
similarity index 99%
rename from vale/styles/write-good/TooWordy.yml
rename to .github/styles/docs/TooWordy.yml
index ff7b887..99c8b97 100644
--- a/vale/styles/write-good/TooWordy.yml
+++ b/.github/styles/docs/TooWordy.yml
@@ -187,6 +187,7 @@ tokens:
- requirement
- reside
- residence
+ - retain
- satisfy
- shall
- should you wish
diff --git a/vale/styles/docs/capitalization.yml b/.github/styles/docs/capitalization.yml
similarity index 100%
rename from vale/styles/docs/capitalization.yml
rename to .github/styles/docs/capitalization.yml
diff --git a/vale/styles/docs/double-spaces.yml b/.github/styles/docs/double-spaces.yml
similarity index 91%
rename from vale/styles/docs/double-spaces.yml
rename to .github/styles/docs/double-spaces.yml
index 5681180..e77305a 100644
--- a/vale/styles/docs/double-spaces.yml
+++ b/.github/styles/docs/double-spaces.yml
@@ -2,6 +2,5 @@ extends: existence
message: "Don't use double spaces between words."
nonword: true
level: warning
-scope: raw
tokens:
- '\w \w'
diff --git a/vale/styles/docs/empty-lines.yml b/.github/styles/docs/empty-lines.yml
similarity index 92%
rename from vale/styles/docs/empty-lines.yml
rename to .github/styles/docs/empty-lines.yml
index f6d0073..0cdeb13 100644
--- a/vale/styles/docs/empty-lines.yml
+++ b/.github/styles/docs/empty-lines.yml
@@ -2,6 +2,5 @@ extends: existence
message: "Don't use more than one empty line to structure content."
nonword: true
level: error
-scope: raw
tokens:
- '\n\n\n'
diff --git a/vale/styles/docs/horizontal-line.yml b/.github/styles/docs/horizontal-line.yml
similarity index 100%
rename from vale/styles/docs/horizontal-line.yml
rename to .github/styles/docs/horizontal-line.yml
diff --git a/vale/styles/docs/trailing-space.yml b/.github/styles/docs/trailing-space.yml
similarity index 100%
rename from vale/styles/docs/trailing-space.yml
rename to .github/styles/docs/trailing-space.yml
diff --git a/vale/styles/docs/word-choice.yml b/.github/styles/docs/word-choice.yml
similarity index 100%
rename from vale/styles/docs/word-choice.yml
rename to .github/styles/docs/word-choice.yml
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 04345c3..dcda5f7 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -9,9 +9,20 @@ jobs:
- uses: actions/checkout@v4
with:
lfs: true
- - uses: errata-ai/vale-action@reviewdog
+ - name: Install Vale
+ run: |
+ VALE_URL="https://github.com/errata-ai/vale/releases/download/v3.12.0/vale_3.12.0_Linux_64-bit.tar.gz"
+ curl -L "$VALE_URL" -o vale.tar.gz
+ tar -xzf vale.tar.gz
+ mv vale /usr/local/bin/
+ - name: Setup Node
+ uses: actions/setup-node@v4
with:
- fail_on_error: true
+ node-version: 22
+ - name: Install MDX preprocessor
+ run: npm install -g mdx2vast
+ - name: Run vale
+ run: vale sync && vale .
docs-quality:
name: Check docs standards
runs-on: ubuntu-latest
@@ -22,7 +33,7 @@ jobs:
- name: Setup Node
uses: actions/setup-node@v4
with:
- node-version: 20
+ node-version: 22
- name: Install Mintlify CLI
run: npm install -g mintlify
- name: Run Mintlify broken-links
diff --git a/.gitignore b/.gitignore
index c85c9e4..e43b0f9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1 @@
-vale/styles/Google
.DS_Store
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 6882b72..14035df 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,5 +1,5 @@
repos:
- repo: https://github.com/errata-ai/vale
- rev: v3.9.6
+ rev: v3.12.0
hooks:
- id: vale
diff --git a/.vale.ini b/.vale.ini
index 1ff85c8..8c05a33 100644
--- a/.vale.ini
+++ b/.vale.ini
@@ -1,23 +1,15 @@
-StylesPath = "vale/styles"
+StylesPath = ".github/styles"
Vocab = docs
-Packages = Google
+Packages = Google, write-good
IgnoredScopes = code, tt, img, url, a, text.frontmatter
SkippedScopes = script, style, pre, figure, code
MinAlertLevel = warning
-# Treat MDX as Markdown
-[formats]
-mdx = md
-
-[*.{md,mdx}]
-
-# Ignore react components starting with export const
-# Ignore code blocks in triple backticks
-# Ignore inline code blocks in backticks
-BlockIgnores = (export const (.|\n)*), (?s).*?, (?s)```.*?```, `.*?`, \[.*\]\(http[^\)]*?\), \(\/.*\)
+[*.mdx]
BasedOnStyles = Vale, Google, write-good, docs
+write-good.TooWordy = NO # we have our own list of too wordy as docs.TooWordy
write-good.Passive = NO
Google.Headings = NO
Google.Will = NO
diff --git a/api-reference/python/tilebox.datasets/Collection.load.mdx b/api-reference/python/tilebox.datasets/Collection.load.mdx
deleted file mode 100644
index d44fc66..0000000
--- a/api-reference/python/tilebox.datasets/Collection.load.mdx
+++ /dev/null
@@ -1,73 +0,0 @@
----
-title: Collection.load
-icon: layer-group
----
-
-```python
-def Collection.load(
- time_or_interval: TimeIntervalLike,
- skip_data: bool = False,
- show_progress: bool = False
-) -> xarray.Dataset
-```
-
-Load a range of data points in this collection in a specified interval.
-If no data exists for the requested time or interval, an empty `xarray.Dataset` is returned.
-
-## Parameters
-
-
- The time or time interval for which to load data. This can be a single time scalar, a tuple of two time scalars, or an array of time scalars.
-
- Valid time scalars are: `datetime.datetime` objects, strings in ISO 8601 format, or Unix timestamps in seconds.
-
- Behavior for each input type:
-
- - **TimeScalar**: If a single time scalar is provided, `load` returns all data points for that exact millisecond.
-
- - **TimeInterval**: If a time interval is provided, `load` returns all data points in that interval. Intervals can be a tuple of two `TimeScalars` or a `TimeInterval` object. Tuples are interpreted as a half-open interval `[start, end)`. With a `TimeInterval` object, the `start_exclusive` and `end_inclusive` parameters control whether the start and end time are inclusive or exclusive.
-
- - **Iterable[TimeScalar]**: If an array of time scalars is provided, `load` constructs a time interval from the first and last time scalar in the array. Here, both the `start` and `end` times are inclusive.
-
-
-
-
- If `True`, the response contains only the [required fields for the dataset type](/datasets/types/timeseries) without the actual dataset-specific fields. Defaults to `False`.
-
-
-
- If `True`, a progress bar is displayed when pagination is required. Defaults to `False`.
-
-
-## Returns
-
-An [`xarray.Dataset`](/sdks/python/xarray) containing the requested data points.
-
-
-```python Python
-from datetime import datetime
-from tilebox.clients.core.data import TimeInterval
-
-# loading a specific time
-time = "2023-05-01 12:45:33.423"
-data = collection.load(time)
-
-# loading a time interval
-interval = ("2023-05-01", "2023-08-01")
-data = collection.load(interval, show_progress=True)
-
-# loading a time interval with TimeInterval
-interval = TimeInterval(
- start=datetime(2023, 5, 1),
- end=datetime(2023, 8, 1),
- start_exclusive=False,
- end_inclusive=False,
-)
-data = collection.load(interval, show_progress=True)
-
-# loading with an iterable
-meta_data = collection.load(..., skip_data=True)
-first_50 = collection.load(meta_data.time[:50], skip_data=False)
-```
-
-
diff --git a/api-reference/python/tilebox.datasets/Collection.query.mdx b/api-reference/python/tilebox.datasets/Collection.query.mdx
new file mode 100644
index 0000000..c5feb42
--- /dev/null
+++ b/api-reference/python/tilebox.datasets/Collection.query.mdx
@@ -0,0 +1,73 @@
+---
+title: Collection.query
+icon: layer-group
+---
+
+```python
+def Collection.query(
+ temporal_extent: TimeIntervalLike,
+ skip_data: bool = False,
+ show_progress: bool = False
+) -> xarray.Dataset
+```
+
+Query a range of data points in this collection in a specified temporal extent.
+If no data exists for the requested time or interval, an empty `xarray.Dataset` is returned.
+
+## Parameters
+
+
+ The time or time interval for which to query data. This can be a single time scalar, a tuple of two time scalars, or an array of time scalars.
+
+ Valid time scalars are: `datetime.datetime` objects, strings in ISO 8601 format, or Unix timestamps in seconds.
+
+ Behavior for each input type:
+
+ - **TimeScalar**: If a single time scalar is provided, `query` returns all data points for that exact millisecond.
+
+ - **TimeInterval**: If a time interval is provided, `query` returns all data points in that interval. Intervals can be a tuple of two `TimeScalars` or a `TimeInterval` object. Tuples are interpreted as a half-open interval `[start, end)`. With a `TimeInterval` object, the `start_exclusive` and `end_inclusive` parameters control whether the start and end time are inclusive or exclusive.
+
+ - **Iterable[TimeScalar]**: If an array of time scalars is provided, `query` constructs a time interval from the first and last time scalar in the array. Here, both the `start` and `end` times are inclusive.
+
+
+
+
+ If `True`, the response contains only the [required fields for the dataset type](/datasets/types/timeseries) without the actual dataset-specific fields. Defaults to `False`.
+
+
+
+ If `True`, a progress bar is displayed when pagination is required. Defaults to `False`.
+
+
+## Returns
+
+An [`xarray.Dataset`](/sdks/python/xarray) containing the requested data points.
+
+
+```python Python
+from datetime import datetime
+from tilebox.clients.core.data import TimeInterval
+
+# querying a specific time
+time = "2023-05-01 12:45:33.423"
+data = collection.query(temporal_extent=time)
+
+# querying a time interval
+interval = ("2023-05-01", "2023-08-01")
+data = collection.query(temporal_extent=interval, show_progress=True)
+
+# querying a time interval with TimeInterval
+interval = TimeInterval(
+ start=datetime(2023, 5, 1),
+ end=datetime(2023, 8, 1),
+ start_exclusive=False,
+ end_inclusive=False,
+)
+data = collection.query(temporal_extent=interval, show_progress=True)
+
+# querying with an iterable
+meta_data = collection.query(temporal_extent=..., skip_data=True)
+first_50 = collection.query(temporal_extent=meta_data.time[:50], skip_data=False)
+```
+
+
diff --git a/datasets/delete.mdx b/datasets/delete.mdx
index 52762ab..9582375 100644
--- a/datasets/delete.mdx
+++ b/datasets/delete.mdx
@@ -95,7 +95,7 @@ since you only need the datapoint IDs. See [fetching only metadata](/datasets/qu
```python Python
-to_delete = collection.load(("2023-05-01", "2023-06-01"), skip_data=True)
+to_delete = collection.query(temporal_extent=("2023-05-01", "2023-06-01"), skip_data=True)
n_deleted = collection.delete(datapoints)
print(f"Deleted {n_deleted} data points.")
diff --git a/datasets/ingest.mdx b/datasets/ingest.mdx
index 9d82966..cf6be9a 100644
--- a/datasets/ingest.mdx
+++ b/datasets/ingest.mdx
@@ -84,7 +84,7 @@ Ingestion can be done either in Python or Go.
[`collection.ingest`](/api-reference/python/tilebox.datasets/Collection.ingest) supports a wide range of input types. Below is an example of using either a `pandas.DataFrame` or an `xarray.Dataset` as input.
-#### pandas.DataFrame
+#### pandas DataFrame
A [pandas.DataFrame](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.html) is a representation of two-dimensional, potentially heterogeneous tabular data. It's a powerful tool for working with structured data, and Tilebox supports it as input for `ingest`.
@@ -145,7 +145,7 @@ Measurements: [2025-03-28T11:44:23.000 UTC, 2025-03-28T11:45:19.000 UTC] (2 data
You can now also head on over to the [Tilebox Console](/console) and view the newly ingested data points there.
-#### xarray.Dataset
+#### xarray Dataset
[`xarray.Dataset`](/sdks/python/xarray) is the default format in which Tilebox Datasets returns data when
[querying data](/datasets/query) from a collection.
@@ -260,7 +260,7 @@ Since `ingest` takes `query`'s output as input, you can easily copy or move data
```python Python
src_collection = dataset.collection("Measurements")
-data_to_copy = src_collection.load(("2025-03-28", "2025-03-29"))
+data_to_copy = src_collection.query(temporal_extent=("2025-03-28", "2025-03-29"))
dest_collection = dataset.collection("OtherMeasurements")
dest_collection.ingest(data_to_copy) # copy the data to the other collection
diff --git a/datasets/query.mdx b/datasets/query.mdx
index ffd659e..44ec4cf 100644
--- a/datasets/query.mdx
+++ b/datasets/query.mdx
@@ -43,18 +43,18 @@ func main() {
```
-To load data points from a dataset collection, use the [load](/api-reference/python/tilebox.datasets/Collection.load) method. It requires a `time_or_interval` parameter to specify the time or time interval for loading.
+To query data points from a dataset collection, use the [query](/api-reference/python/tilebox.datasets/Collection.query) method. It requires a `temporal_extent` parameter to specify the time or time interval for querying.
## Filtering by time
### Time interval
-To load data for a specific time interval, use a `tuple` in the form `(start, end)` as the `time_or_interval` parameter. Both `start` and `end` must be [TimeScalars](#time-scalars), which can be `datetime` objects or strings in ISO 8601 format.
+To query data for a specific time interval, use a `tuple` in the form `(start, end)` as the `temporal_extent` parameter. Both `start` and `end` must be [TimeScalars](#time-scalars), which can be `datetime` objects or strings in ISO 8601 format.
```python Python
interval = ("2017-01-01", "2023-01-01")
-data = collection.load(interval, show_progress=True)
+data = collection.query(temporal_extent=interval, show_progress=True)
```
```go Go
startDate := time.Date(2017, time.January, 1, 0, 0, 0, 0, time.UTC)
@@ -112,7 +112,7 @@ import xarray as xr
data = []
for year in [2017, 2018, 2019, 2020, 2021, 2022]:
interval = (f"{year}-01-01", f"{year + 1}-01-01")
- data.append(collection.load(interval, show_progress=True))
+ data.append(collection.query(temporal_extent=interval, show_progress=True))
# Concatenate the data into a single dataset, which is equivalent
# to the result of the single request in the code example above.
@@ -170,7 +170,7 @@ print(f"They are equivalent: {interval1 == interval2}")
print(interval2.to_half_open())
# Query data for a time interval
-data = collection.load(interval1, show_progress=True)
+data = collection.query(temporal_extent=interval1, show_progress=True)
```
```go Go
interval1 := query.TimeInterval{
@@ -217,11 +217,11 @@ You can load all datapoints linked to a specific timestamp by specifying a `Time
A collection may contain multiple datapoints for one millisecond, so multiple data points could still be returned. If you want to fetch only a single data point, [query the collection by id](#loading-a-data-point-by-id) instead.
-Here's how to load a data point at a specific millisecond from a [collection](/datasets/concepts/collections).
+Here's how to query a data point at a specific millisecond from a [collection](/datasets/concepts/collections).
```python Python
- data = collection.load("2024-08-01 00:00:01.362")
+ data = collection.query(temporal_extent="2024-08-01 00:00:01.362")
print(data)
```
```go Go
@@ -265,18 +265,18 @@ First datapoint time: 2024-08-01 00:00:01.362 +0000 UTC
Tilebox uses millisecond precision for timestamps. To load all data points for a specific second, it's a [time interval](/datasets/query#time-interval) request. Refer to the examples below for details.
-The output of the `load` method is an `xarray.Dataset` object. To learn more about Xarray, visit the dedicated [Xarray page](/sdks/python/xarray).
+The output of the `query` method is an `xarray.Dataset` object. To learn more about Xarray, visit the dedicated [Xarray page](/sdks/python/xarray).
### Time iterables (Python only)
-You can specify a time interval by using an iterable of `TimeScalar`s as the `time_or_interval` parameter. This is especially useful when you want to use the output of a previous `load` call as input for another load. Here's how that works.
+You can specify a time interval by using an iterable of `TimeScalar`s as the `temporal_extent` parameter. This is especially useful when you want to use the output of a previous `query` call as input for another query. Here's how that works.
```python Python
interval = ("2017-01-01", "2023-01-01")
- meta_data = collection.load(interval, skip_data=True)
+ meta_data = collection.query(temporal_extent=interval, skip_data=True)
- first_50_data_points = collection.load(meta_data.time[:50], skip_data=False)
+ first_50_data_points = collection.query(temporal_extent=meta_data.time[:50], skip_data=False)
print(first_50_data_points)
```
@@ -315,7 +315,7 @@ tokyo_time = pytz.timezone('Asia/Tokyo').localize(
datetime(2017, 1, 1, 11, 45, 25, 679000)
)
print(tokyo_time)
-data = collection.load(tokyo_time)
+data = collection.query(temporal_extent=tokyo_time)
print(data)
```
```go Go
@@ -431,7 +431,7 @@ If this flag is set, the response will only include the required fields for the
```python Python
- data = collection.load("2024-08-01 00:00:01.362", skip_data=True)
+ data = collection.query(temporal_extent="2024-08-01 00:00:01.362", skip_data=True)
print(data)
```
```go Go
@@ -473,12 +473,12 @@ First datapoint time: 2024-08-01 00:00:01.362 +0000 UTC
## Empty response
-The `load` method always returns an `xarray.Dataset` object, even if there are no data points for the specified query. In such cases, the returned dataset will be empty, but no error will be raised.
+The `query` method always returns an `xarray.Dataset` object, even if there are no data points for the specified query. In such cases, the returned dataset will be empty, but no error will be raised.
```python Python
time_with_no_data_points = "1997-02-06 10:21:00"
- data = collection.load(time_with_no_data_points)
+ data = collection.query(temporal_extent=time_with_no_data_points)
print(data)
```
```go Go
diff --git a/docs.json b/docs.json
index 145d840..0ee7fa5 100644
--- a/docs.json
+++ b/docs.json
@@ -161,7 +161,7 @@
"api-reference/python/tilebox.datasets/Collection.find",
"api-reference/python/tilebox.datasets/Collection.info",
"api-reference/python/tilebox.datasets/Collection.ingest",
- "api-reference/python/tilebox.datasets/Collection.load"
+ "api-reference/python/tilebox.datasets/Collection.query"
]
},
{
diff --git a/guides/datasets/ingest.mdx b/guides/datasets/ingest.mdx
index 82f4cc8..01fb045 100644
--- a/guides/datasets/ingest.mdx
+++ b/guides/datasets/ingest.mdx
@@ -108,18 +108,18 @@ Now, to match the given MODIS dataset, you'll specify the following fields:
| Field | Type | Note |
| --- | --- | --- |
-| granule_name | string | MODIS granule name |
-| geometry | Geometry | Tile boundary coordinates of the granule |
-| end_time | Timestamp | Measurement end time |
-| horizontal_tile_number | int64 | Horizontal modis tile number (0-35) |
-| vertical_tile_number | int64 | Vertical modis tile number (0-17) |
-| tile_id | int64 | Modis Tile ID |
-| file_size | uint64 | File size of the product in bytes |
-| checksum | string | Hash checksum of the file |
-| checksum_type | string | Checksum algorithm (MD5 / CKSUM) |
-| day_night_flag | int64 | Day / Night / Both |
-| browse_granule_id | string | Optional granule ID for browsing |
-| published_at | Timestamp | The time the product was published |
+| `granule_name` | string | MODIS granule name |
+| `geometry` | Geometry | Tile boundary coordinates of the granule |
+| `end_time` | Timestamp | Measurement end time |
+| `horizontal_tile_number` | int64 | Horizontal modis tile number (0-35) |
+| `vertical_tile_number` | int64 | Vertical modis tile number (0-17) |
+| `tile_id` | int64 | Modis Tile ID |
+| `file_size` | uint64 | File size of the product in bytes |
+| `checksum` | string | Hash checksum of the file |
+| `checksum_type` | string | Checksum algorithm (MD5 / CKSUM) |
+| `day_night_flag` | int64 | Day / Night / Both |
+| `browse_granule_id` | string | Optional granule ID for browsing |
+| `published_at` | Timestamp | The time the product was published |
In the console, this will look like the following:
@@ -187,7 +187,7 @@ You can now query the newly ingested data. You can query a subset of the data fo
```python Python
-data = collection.load(("2015-01-01", "2020-01-01"))
+data = collection.query(temporal_extent=("2015-01-01", "2020-01-01"))
data
```
diff --git a/quickstart.mdx b/quickstart.mdx
index e4823e3..b8cc36a 100644
--- a/quickstart.mdx
+++ b/quickstart.mdx
@@ -63,7 +63,7 @@ If you prefer to work locally, follow these steps to get started.
# and load data from a collection in a given time range
collection = dataset.collection("S2A_S2MSI1C")
- data_january_2022 = collection.load(("2022-01-01", "2022-02-01"))
+ data_january_2022 = collection.query(temporal_extent=("2022-01-01", "2022-02-01"))
```
diff --git a/sdks/python/async.mdx b/sdks/python/async.mdx
index eb2c3a9..273647b 100644
--- a/sdks/python/async.mdx
+++ b/sdks/python/async.mdx
@@ -44,7 +44,7 @@ info = collection.info()
print(f"Data for My-collection is available for {info.availability}")
# Loading data
-data = collection.load(("2022-05-01", "2022-06-01"), show_progress=True)
+data = collection.query(temporal_extent=("2022-05-01", "2022-06-01"), show_progress=True)
# Finding a specific datapoint
datapoint_uuid = "01910b3c-8552-7671-3345-b902cc0813f3"
@@ -65,7 +65,7 @@ info = await collection.info()
print(f"Data for My-collection is available for {info.availability}")
# Loading data
-data = await collection.load(("2022-05-01", "2022-06-01"), show_progress=True)
+data = await collection.query(temporal_extent=("2022-05-01", "2022-06-01"), show_progress=True)
# Finding a specific datapoint
datapoint_uuid = "01910b3c-8552-7671-3345-b902cc0813f3"
@@ -98,7 +98,7 @@ collections = datasets.open_data.copernicus.landsat8_oli_tirs.collections()
def stats_for_2020(collection: TimeseriesCollection) -> None:
"""Fetch data for 2020 and print the number of data points that were loaded."""
- data = collection.load(("2020-01-01", "2021-01-01"), show_progress=True)
+ data = collection.query(temporal_extent=("2020-01-01", "2021-01-01"), show_progress=True)
n = data.sizes['time'] if 'time' in data else 0
return (collection.name, n)
@@ -125,7 +125,7 @@ collections = await datasets.open_data.copernicus.landsat8_oli_tirs.collections(
async def stats_for_2020(collection: TimeseriesCollection) -> None:
"""Fetch data for 2020 and print the number of data points that were loaded."""
- data = await collection.load(("2020-01-01", "2021-01-01"), show_progress=True)
+ data = await collection.query(temporal_extent=("2020-01-01", "2021-01-01"), show_progress=True)
n = data.sizes['time'] if 'time' in data else 0
return (collection.name, n)
@@ -190,7 +190,7 @@ class FetchData(Task):
async def load_data(interval: TimeIntervalLike):
datasets = await DatasetsClient().datasets()
collections = await datasets.open_data.copernicus.landsat8_oli_tirs.collections()
- return await collections["L1T"].load(interval)
+ return await collections["L1T"].query(temporal_extent=interval)
async def load_first_three_months() -> tuple[xr.Dataset, xr.Dataset, xr.Dataset]:
jan = load_data(("2020-01-01", "2020-02-01"))
diff --git a/sdks/python/geometries.mdx b/sdks/python/geometries.mdx
index d98aff9..39a7533 100644
--- a/sdks/python/geometries.mdx
+++ b/sdks/python/geometries.mdx
@@ -15,7 +15,7 @@ client = Client()
datasets = client.datasets()
ers_collection = datasets.open_data.asf.ers_sar.collection("ERS-2")
-ers_data = ers_collection.load(("2008-02-10T21:00", "2008-02-10T22:00"))
+ers_data = ers_collection.query(temporal_extent=("2008-02-10T21:00", "2008-02-10T22:00"))
```
## Shapely
diff --git a/sdks/python/install.mdx b/sdks/python/install.mdx
index 4a4574f..5342728 100644
--- a/sdks/python/install.mdx
+++ b/sdks/python/install.mdx
@@ -69,7 +69,7 @@ client = Client()
datasets = client.datasets()
collection = datasets.open_data.copernicus.landsat8_oli_tirs.collection("L1T")
-data = collection.load(("2015-01-01", "2020-01-01"), show_progress=True)
+data = collection.query(temporal_extent=("2015-01-01", "2020-01-01"), show_progress=True)
data
```
diff --git a/sdks/python/xarray.mdx b/sdks/python/xarray.mdx
index 9a5475b..a231b21 100644
--- a/sdks/python/xarray.mdx
+++ b/sdks/python/xarray.mdx
@@ -45,7 +45,7 @@ from tilebox.datasets import Client
client = Client()
datasets = client.datasets()
collection = datasets.open_data.copernicus.landsat8_oli_tirs.collection("L1GT")
-satellite_data = collection.load(("2022-05-01", "2022-06-01"), show_progress=True)
+satellite_data = collection.query(temporal_extent=("2022-05-01", "2022-06-01"), show_progress=True)
print(satellite_data)
```
diff --git a/storage/clients.mdx b/storage/clients.mdx
index 5cb3621..0aba5f6 100644
--- a/storage/clients.mdx
+++ b/storage/clients.mdx
@@ -44,7 +44,7 @@ collections = s2_dataset.collections()
collection = collections["S2A_S2MSI2A"]
# Loading metadata
-s2_data = collection.load(("2024-08-01", "2024-08-02"), show_progress=True)
+s2_data = collection.query(temporal_extent=("2024-08-01", "2024-08-02"), show_progress=True)
# Selecting a data point to download
selected = s2_data.isel(time=0) # index 0 selected
@@ -79,7 +79,7 @@ For example, a Sentinel-2 L2A product includes many files such as metadata, diff
```python Python {4, 15}
collection = datasets.open_data.copernicus.sentinel2_msi.collections()["S2A_S2MSI2A"]
-s2_data = collection.load(("2024-08-01", "2024-08-02"), show_progress=True)
+s2_data = collection.query(temporal_extent=("2024-08-01", "2024-08-02"), show_progress=True)
selected = s2_data.isel(time=0) # download the first granule in the given time range
objects = storage_client.list_objects(selected)
@@ -137,7 +137,7 @@ collections = ers_dataset.collections()
collection = collections["ERS-2"]
# Loading metadata
-ers_data = collection.load(("2009-01-01", "2009-01-02"), show_progress=True)
+ers_data = collection.query(temporal_extent=("2009-01-01", "2009-01-02"), show_progress=True)
# Selecting a data point to download
selected = ers_data.isel(time=0) # index 0 selected
@@ -206,7 +206,7 @@ collections = umbra_dataset.collections()
collection = collections["SAR"]
# Loading metadata
-umbra_data = collection.load(("2024-01-05", "2024-01-06"), show_progress=True)
+umbra_data = collection.query(temporal_extent=("2024-01-05", "2024-01-06"), show_progress=True)
# Selecting a data point to download
selected = umbra_data.isel(time=0) # index 0 selected
@@ -239,7 +239,7 @@ The below example shows how to download only the metadata file for a given data
```python Python {4, 15}
collection = datasets.open_data.umbra.sar.collections()["SAR"]
-umbra_data = collection.load(("2024-01-05", "2024-01-06"), show_progress=True)
+umbra_data = collection.query(temporal_extent=("2024-01-05", "2024-01-06"), show_progress=True)
# Selecting a data point to download
selected = umbra_data.isel(time=0) # index 0 selected
diff --git a/vale/styles/docs/bold.yml b/vale/styles/docs/bold.yml
deleted file mode 100644
index 4b7e023..0000000
--- a/vale/styles/docs/bold.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-extends: existence
-message: "Only use bold for UI elements."
-link: "https://developers.google.com/style/ui-elements"
-nonword: true
-level: suggestion
-scope: raw
-tokens:
- - '\*\*.+\*\*'
diff --git a/vale/styles/write-good/Cliches.yml b/vale/styles/write-good/Cliches.yml
deleted file mode 100644
index c953143..0000000
--- a/vale/styles/write-good/Cliches.yml
+++ /dev/null
@@ -1,702 +0,0 @@
-extends: existence
-message: "Try to avoid using clichés like '%s'."
-ignorecase: true
-level: warning
-tokens:
- - a chip off the old block
- - a clean slate
- - a dark and stormy night
- - a far cry
- - a fine kettle of fish
- - a loose cannon
- - a penny saved is a penny earned
- - a tough row to hoe
- - a word to the wise
- - ace in the hole
- - acid test
- - add insult to injury
- - against all odds
- - air your dirty laundry
- - all fun and games
- - all in a day's work
- - all talk, no action
- - all thumbs
- - all your eggs in one basket
- - all's fair in love and war
- - all's well that ends well
- - almighty dollar
- - American as apple pie
- - an axe to grind
- - another day, another dollar
- - armed to the teeth
- - as luck would have it
- - as old as time
- - as the crow flies
- - at loose ends
- - at my wits end
- - avoid like the plague
- - babe in the woods
- - back against the wall
- - back in the saddle
- - back to square one
- - back to the drawing board
- - bad to the bone
- - badge of honor
- - bald faced liar
- - ballpark figure
- - banging your head against a brick wall
- - baptism by fire
- - barking up the wrong tree
- - bat out of hell
- - be all and end all
- - beat a dead horse
- - beat around the bush
- - been there, done that
- - beggars can't be choosers
- - behind the eight ball
- - bend over backwards
- - benefit of the doubt
- - bent out of shape
- - best thing since sliced bread
- - bet your bottom dollar
- - better half
- - better late than never
- - better mousetrap
- - better safe than sorry
- - between a rock and a hard place
- - beyond the pale
- - bide your time
- - big as life
- - big cheese
- - big fish in a small pond
- - big man on campus
- - bigger they are the harder they fall
- - bird in the hand
- - bird's eye view
- - birds and the bees
- - birds of a feather flock together
- - bit the hand that feeds you
- - bite the bullet
- - bite the dust
- - bitten off more than he can chew
- - black as coal
- - black as pitch
- - black as the ace of spades
- - blast from the past
- - bleeding heart
- - blessing in disguise
- - blind ambition
- - blind as a bat
- - blind leading the blind
- - blood is thicker than water
- - blood sweat and tears
- - blow off steam
- - blow your own horn
- - blushing bride
- - boils down to
- - bolt from the blue
- - bone to pick
- - bored stiff
- - bored to tears
- - bottomless pit
- - boys will be boys
- - bright and early
- - brings home the bacon
- - broad across the beam
- - broken record
- - brought back to reality
- - bull by the horns
- - bull in a china shop
- - burn the midnight oil
- - burning question
- - burning the candle at both ends
- - burst your bubble
- - bury the hatchet
- - busy as a bee
- - by hook or by crook
- - call a spade a spade
- - called onto the carpet
- - calm before the storm
- - can of worms
- - can't cut the mustard
- - can't hold a candle to
- - case of mistaken identity
- - cat got your tongue
- - cat's meow
- - caught in the crossfire
- - caught red-handed
- - checkered past
- - chomping at the bit
- - cleanliness is next to godliness
- - clear as a bell
- - clear as mud
- - close to the vest
- - cock and bull story
- - cold shoulder
- - come hell or high water
- - cool as a cucumber
- - cool, calm, and collected
- - cost a king's ransom
- - count your blessings
- - crack of dawn
- - crash course
- - creature comforts
- - cross that bridge when you come to it
- - crushing blow
- - cry like a baby
- - cry me a river
- - cry over spilt milk
- - crystal clear
- - curiosity killed the cat
- - cut and dried
- - cut through the red tape
- - cut to the chase
- - cute as a bugs ear
- - cute as a button
- - cute as a puppy
- - cuts to the quick
- - dark before the dawn
- - day in, day out
- - dead as a doornail
- - devil is in the details
- - dime a dozen
- - divide and conquer
- - dog and pony show
- - dog days
- - dog eat dog
- - dog tired
- - don't burn your bridges
- - don't count your chickens
- - don't look a gift horse in the mouth
- - don't rock the boat
- - don't step on anyone's toes
- - don't take any wooden nickels
- - down and out
- - down at the heels
- - down in the dumps
- - down the hatch
- - down to earth
- - draw the line
- - dressed to kill
- - dressed to the nines
- - drives me up the wall
- - dull as dishwater
- - dyed in the wool
- - eagle eye
- - ear to the ground
- - early bird catches the worm
- - easier said than done
- - easy as pie
- - eat your heart out
- - eat your words
- - eleventh hour
- - even the playing field
- - every dog has its day
- - every fiber of my being
- - everything but the kitchen sink
- - eye for an eye
- - face the music
- - facts of life
- - fair weather friend
- - fall by the wayside
- - fan the flames
- - feast or famine
- - feather your nest
- - feathered friends
- - few and far between
- - fifteen minutes of fame
- - filthy vermin
- - fine kettle of fish
- - fish out of water
- - fishing for a compliment
- - fit as a fiddle
- - fit the bill
- - fit to be tied
- - flash in the pan
- - flat as a pancake
- - flip your lid
- - flog a dead horse
- - fly by night
- - fly the coop
- - follow your heart
- - for all intents and purposes
- - for the birds
- - for what it's worth
- - force of nature
- - force to be reckoned with
- - forgive and forget
- - fox in the henhouse
- - free and easy
- - free as a bird
- - fresh as a daisy
- - full steam ahead
- - fun in the sun
- - garbage in, garbage out
- - gentle as a lamb
- - get a kick out of
- - get a leg up
- - get down and dirty
- - get the lead out
- - get to the bottom of
- - get your feet wet
- - gets my goat
- - gilding the lily
- - give and take
- - go against the grain
- - go at it tooth and nail
- - go for broke
- - go him one better
- - go the extra mile
- - go with the flow
- - goes without saying
- - good as gold
- - good deed for the day
- - good things come to those who wait
- - good time was had by all
- - good times were had by all
- - greased lightning
- - greek to me
- - green thumb
- - green-eyed monster
- - grist for the mill
- - growing like a weed
- - hair of the dog
- - hand to mouth
- - happy as a clam
- - happy as a lark
- - hasn't a clue
- - have a nice day
- - have high hopes
- - have the last laugh
- - haven't got a row to hoe
- - head honcho
- - head over heels
- - hear a pin drop
- - heard it through the grapevine
- - heart's content
- - heavy as lead
- - hem and haw
- - high and dry
- - high and mighty
- - high as a kite
- - hit paydirt
- - hold your head up high
- - hold your horses
- - hold your own
- - hold your tongue
- - honest as the day is long
- - horns of a dilemma
- - horse of a different color
- - hot under the collar
- - hour of need
- - I beg to differ
- - icing on the cake
- - if the shoe fits
- - if the shoe were on the other foot
- - in a jam
- - in a jiffy
- - in a nutshell
- - in a pig's eye
- - in a pinch
- - in a word
- - in hot water
- - in the gutter
- - in the nick of time
- - in the thick of it
- - in your dreams
- - it ain't over till the fat lady sings
- - it goes without saying
- - it takes all kinds
- - it takes one to know one
- - it's a small world
- - it's only a matter of time
- - ivory tower
- - Jack of all trades
- - jockey for position
- - jog your memory
- - joined at the hip
- - judge a book by its cover
- - jump down your throat
- - jump in with both feet
- - jump on the bandwagon
- - jump the gun
- - jump to conclusions
- - just a hop, skip, and a jump
- - just the ticket
- - justice is blind
- - keep a stiff upper lip
- - keep an eye on
- - keep it simple, stupid
- - keep the home fires burning
- - keep up with the Joneses
- - keep your chin up
- - keep your fingers crossed
- - kick the bucket
- - kick up your heels
- - kick your feet up
- - kid in a candy store
- - kill two birds with one stone
- - kiss of death
- - knock it out of the park
- - knock on wood
- - knock your socks off
- - know him from Adam
- - know the ropes
- - know the score
- - knuckle down
- - knuckle sandwich
- - knuckle under
- - labor of love
- - ladder of success
- - land on your feet
- - lap of luxury
- - last but not least
- - last hurrah
- - last-ditch effort
- - law of the jungle
- - law of the land
- - lay down the law
- - leaps and bounds
- - let sleeping dogs lie
- - let the cat out of the bag
- - let the good times roll
- - let your hair down
- - let's talk turkey
- - letter perfect
- - lick your wounds
- - lies like a rug
- - life's a bitch
- - life's a grind
- - light at the end of the tunnel
- - lighter than a feather
- - lighter than air
- - like clockwork
- - like father like son
- - like taking candy from a baby
- - like there's no tomorrow
- - lion's share
- - live and learn
- - live and let live
- - long and short of it
- - long lost love
- - look before you leap
- - look down your nose
- - look what the cat dragged in
- - looking a gift horse in the mouth
- - looks like death warmed over
- - loose cannon
- - lose your head
- - lose your temper
- - loud as a horn
- - lounge lizard
- - loved and lost
- - low man on the totem pole
- - luck of the draw
- - luck of the Irish
- - make hay while the sun shines
- - make money hand over fist
- - make my day
- - make the best of a bad situation
- - make the best of it
- - make your blood boil
- - man of few words
- - man's best friend
- - mark my words
- - meaningful dialogue
- - missed the boat on that one
- - moment in the sun
- - moment of glory
- - moment of truth
- - money to burn
- - more power to you
- - more than one way to skin a cat
- - movers and shakers
- - moving experience
- - naked as a jaybird
- - naked truth
- - neat as a pin
- - needle in a haystack
- - needless to say
- - neither here nor there
- - never look back
- - never say never
- - nip and tuck
- - nip it in the bud
- - no guts, no glory
- - no love lost
- - no pain, no gain
- - no skin off my back
- - no stone unturned
- - no time like the present
- - no use crying over spilled milk
- - nose to the grindstone
- - not a hope in hell
- - not a minute's peace
- - not in my backyard
- - not playing with a full deck
- - not the end of the world
- - not written in stone
- - nothing to sneeze at
- - nothing ventured nothing gained
- - now we're cooking
- - off the top of my head
- - off the wagon
- - off the wall
- - old hat
- - older and wiser
- - older than dirt
- - older than Methuselah
- - on a roll
- - on cloud nine
- - on pins and needles
- - on the bandwagon
- - on the money
- - on the nose
- - on the rocks
- - on the spot
- - on the tip of my tongue
- - on the wagon
- - on thin ice
- - once bitten, twice shy
- - one bad apple doesn't spoil the bushel
- - one born every minute
- - one brick short
- - one foot in the grave
- - one in a million
- - one red cent
- - only game in town
- - open a can of worms
- - open and shut case
- - open the flood gates
- - opportunity doesn't knock twice
- - out of pocket
- - out of sight, out of mind
- - out of the frying pan into the fire
- - out of the woods
- - out on a limb
- - over a barrel
- - over the hump
- - pain and suffering
- - pain in the
- - panic button
- - par for the course
- - part and parcel
- - party pooper
- - pass the buck
- - patience is a virtue
- - pay through the nose
- - penny pincher
- - perfect storm
- - pig in a poke
- - pile it on
- - pillar of the community
- - pin your hopes on
- - pitter patter of little feet
- - plain as day
- - plain as the nose on your face
- - play by the rules
- - play your cards right
- - playing the field
- - playing with fire
- - pleased as punch
- - plenty of fish in the sea
- - point with pride
- - poor as a church mouse
- - pot calling the kettle black
- - pretty as a picture
- - pull a fast one
- - pull your punches
- - pulling your leg
- - pure as the driven snow
- - put it in a nutshell
- - put one over on you
- - put the cart before the horse
- - put the pedal to the metal
- - put your best foot forward
- - put your foot down
- - quick as a bunny
- - quick as a lick
- - quick as a wink
- - quick as lightning
- - quiet as a dormouse
- - rags to riches
- - raining buckets
- - raining cats and dogs
- - rank and file
- - rat race
- - reap what you sow
- - red as a beet
- - red herring
- - reinvent the wheel
- - rich and famous
- - rings a bell
- - ripe old age
- - ripped me off
- - rise and shine
- - road to hell is paved with good intentions
- - rob Peter to pay Paul
- - roll over in the grave
- - rub the wrong way
- - ruled the roost
- - running in circles
- - sad but true
- - sadder but wiser
- - salt of the earth
- - scared stiff
- - scared to death
- - sealed with a kiss
- - second to none
- - see eye to eye
- - seen the light
- - seize the day
- - set the record straight
- - set the world on fire
- - set your teeth on edge
- - sharp as a tack
- - shoot for the moon
- - shoot the breeze
- - shot in the dark
- - shoulder to the wheel
- - sick as a dog
- - sigh of relief
- - signed, sealed, and delivered
- - sink or swim
- - six of one, half a dozen of another
- - skating on thin ice
- - slept like a log
- - slinging mud
- - slippery as an eel
- - slow as molasses
- - smart as a whip
- - smooth as a baby's bottom
- - sneaking suspicion
- - snug as a bug in a rug
- - sow wild oats
- - spare the rod, spoil the child
- - speak of the devil
- - spilled the beans
- - spinning your wheels
- - spitting image of
- - spoke with relish
- - spread like wildfire
- - spring to life
- - squeaky wheel gets the grease
- - stands out like a sore thumb
- - start from scratch
- - stick in the mud
- - still waters run deep
- - stitch in time
- - stop and smell the roses
- - straight as an arrow
- - straw that broke the camel's back
- - strong as an ox
- - stubborn as a mule
- - stuff that dreams are made of
- - stuffed shirt
- - sweating blood
- - sweating bullets
- - take a load off
- - take one for the team
- - take the bait
- - take the bull by the horns
- - take the plunge
- - takes one to know one
- - takes two to tango
- - the more the merrier
- - the real deal
- - the real McCoy
- - the red carpet treatment
- - the same old story
- - there is no accounting for taste
- - thick as a brick
- - thick as thieves
- - thin as a rail
- - think outside of the box
- - third time's the charm
- - this day and age
- - this hurts me worse than it hurts you
- - this point in time
- - three sheets to the wind
- - through thick and thin
- - throw in the towel
- - tie one on
- - tighter than a drum
- - time and time again
- - time is of the essence
- - tip of the iceberg
- - tired but happy
- - to coin a phrase
- - to each his own
- - to make a long story short
- - to the best of my knowledge
- - toe the line
- - tongue in cheek
- - too good to be true
- - too hot to handle
- - too numerous to mention
- - touch with a ten foot pole
- - tough as nails
- - trial and error
- - trials and tribulations
- - tried and true
- - trip down memory lane
- - twist of fate
- - two cents worth
- - two peas in a pod
- - ugly as sin
- - under the counter
- - under the gun
- - under the same roof
- - under the weather
- - until the cows come home
- - unvarnished truth
- - up the creek
- - uphill battle
- - upper crust
- - upset the applecart
- - vain attempt
- - vain effort
- - vanquish the enemy
- - vested interest
- - waiting for the other shoe to drop
- - wakeup call
- - warm welcome
- - watch your p's and q's
- - watch your tongue
- - watching the clock
- - water under the bridge
- - weather the storm
- - weed them out
- - week of Sundays
- - went belly up
- - wet behind the ears
- - what goes around comes around
- - what you see is what you get
- - when it rains, it pours
- - when push comes to shove
- - when the cat's away
- - when the going gets tough, the tough get going
- - white as a sheet
- - whole ball of wax
- - whole hog
- - whole nine yards
- - wild goose chase
- - will wonders never cease?
- - wisdom of the ages
- - wise as an owl
- - wolf at the door
- - words fail me
- - work like a dog
- - world weary
- - worst nightmare
- - worth its weight in gold
- - wrong side of the bed
- - yanking your chain
- - yappy as a dog
- - years young
- - you are what you eat
- - you can run but you can't hide
- - you only live once
- - you're the boss
- - young and foolish
- - young and vibrant
diff --git a/vale/styles/write-good/E-Prime.yml b/vale/styles/write-good/E-Prime.yml
deleted file mode 100644
index 074a102..0000000
--- a/vale/styles/write-good/E-Prime.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-extends: existence
-message: "Try to avoid using '%s'."
-ignorecase: true
-level: suggestion
-tokens:
- - am
- - are
- - aren't
- - be
- - been
- - being
- - he's
- - here's
- - here's
- - how's
- - i'm
- - is
- - isn't
- - it's
- - she's
- - that's
- - there's
- - they're
- - was
- - wasn't
- - we're
- - were
- - weren't
- - what's
- - where's
- - who's
- - you're
diff --git a/vale/styles/write-good/Illusions.yml b/vale/styles/write-good/Illusions.yml
deleted file mode 100644
index b4f1321..0000000
--- a/vale/styles/write-good/Illusions.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-extends: repetition
-message: "'%s' is repeated!"
-level: warning
-alpha: true
-action:
- name: edit
- params:
- - truncate
- - " "
-tokens:
- - '[^\s]+'
diff --git a/vale/styles/write-good/Passive.yml b/vale/styles/write-good/Passive.yml
deleted file mode 100644
index f472cb9..0000000
--- a/vale/styles/write-good/Passive.yml
+++ /dev/null
@@ -1,183 +0,0 @@
-extends: existence
-message: "'%s' may be passive voice. Use active voice if you can."
-ignorecase: true
-level: warning
-raw:
- - \b(am|are|were|being|is|been|was|be)\b\s*
-tokens:
- - '[\w]+ed'
- - awoken
- - beat
- - become
- - been
- - begun
- - bent
- - beset
- - bet
- - bid
- - bidden
- - bitten
- - bled
- - blown
- - born
- - bought
- - bound
- - bred
- - broadcast
- - broken
- - brought
- - built
- - burnt
- - burst
- - cast
- - caught
- - chosen
- - clung
- - come
- - cost
- - crept
- - cut
- - dealt
- - dived
- - done
- - drawn
- - dreamt
- - driven
- - drunk
- - dug
- - eaten
- - fallen
- - fed
- - felt
- - fit
- - fled
- - flown
- - flung
- - forbidden
- - foregone
- - forgiven
- - forgotten
- - forsaken
- - fought
- - found
- - frozen
- - given
- - gone
- - gotten
- - ground
- - grown
- - heard
- - held
- - hidden
- - hit
- - hung
- - hurt
- - kept
- - knelt
- - knit
- - known
- - laid
- - lain
- - leapt
- - learnt
- - led
- - left
- - lent
- - let
- - lighted
- - lost
- - made
- - meant
- - met
- - misspelt
- - mistaken
- - mown
- - overcome
- - overdone
- - overtaken
- - overthrown
- - paid
- - pled
- - proven
- - put
- - quit
- - read
- - rid
- - ridden
- - risen
- - run
- - rung
- - said
- - sat
- - sawn
- - seen
- - sent
- - set
- - sewn
- - shaken
- - shaven
- - shed
- - shod
- - shone
- - shorn
- - shot
- - shown
- - shrunk
- - shut
- - slain
- - slept
- - slid
- - slit
- - slung
- - smitten
- - sold
- - sought
- - sown
- - sped
- - spent
- - spilt
- - spit
- - split
- - spoken
- - spread
- - sprung
- - spun
- - stolen
- - stood
- - stridden
- - striven
- - struck
- - strung
- - stuck
- - stung
- - stunk
- - sung
- - sunk
- - swept
- - swollen
- - sworn
- - swum
- - swung
- - taken
- - taught
- - thought
- - thrived
- - thrown
- - thrust
- - told
- - torn
- - trodden
- - understood
- - upheld
- - upset
- - wed
- - wept
- - withheld
- - withstood
- - woken
- - won
- - worn
- - wound
- - woven
- - written
- - wrung
diff --git a/vale/styles/write-good/README.md b/vale/styles/write-good/README.md
deleted file mode 100644
index 3edcc9b..0000000
--- a/vale/styles/write-good/README.md
+++ /dev/null
@@ -1,27 +0,0 @@
-Based on [write-good](https://github.com/btford/write-good).
-
-> Naive linter for English prose for developers who can't write good and wanna learn to do other stuff good too.
-
-```
-The MIT License (MIT)
-
-Copyright (c) 2014 Brian Ford
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-```
diff --git a/vale/styles/write-good/So.yml b/vale/styles/write-good/So.yml
deleted file mode 100644
index e57f099..0000000
--- a/vale/styles/write-good/So.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-extends: existence
-message: "Don't start a sentence with '%s'."
-level: error
-raw:
- - '(?:[;-]\s)so[\s,]|\bSo[\s,]'
diff --git a/vale/styles/write-good/ThereIs.yml b/vale/styles/write-good/ThereIs.yml
deleted file mode 100644
index 8b82e8f..0000000
--- a/vale/styles/write-good/ThereIs.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-extends: existence
-message: "Don't start a sentence with '%s'."
-ignorecase: false
-level: error
-raw:
- - '(?:[;-]\s)There\s(is|are)|\bThere\s(is|are)\b'
diff --git a/vale/styles/write-good/Weasel.yml b/vale/styles/write-good/Weasel.yml
deleted file mode 100644
index d1d90a7..0000000
--- a/vale/styles/write-good/Weasel.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-extends: existence
-message: "'%s' is a weasel word!"
-ignorecase: true
-level: warning
-tokens:
- - clearly
- - completely
- - exceedingly
- - excellent
- - extremely
- - fairly
- - huge
- - interestingly
- - is a number
- - largely
- - mostly
- - obviously
- - quite
- - relatively
- - remarkably
- - several
- - significantly
- - substantially
- - surprisingly
- - tiny
- - usually
- - various
- - vast
- - very
diff --git a/vale/styles/write-good/meta.json b/vale/styles/write-good/meta.json
deleted file mode 100644
index a115d28..0000000
--- a/vale/styles/write-good/meta.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "feed": "https://github.com/errata-ai/write-good/releases.atom",
- "vale_version": ">=1.0.0"
-}