Skip to content

Commit a8896ff

Browse files
committed
Merge branch 'main' into 1.0
2 parents 0e4a87e + 2f42fbc commit a8896ff

Some content is hidden

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

50 files changed

+1254
-147
lines changed

.github/pull_request_template.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@
1010
- [ ] Tests pass (run `scripts/test`)
1111
- [ ] Documentation has been updated to reflect changes, if applicable
1212
- [ ] This PR maintains or improves overall codebase code coverage.
13-
- [ ] Changes are added to the [CHANGELOG](https://github.com/stac-utils/pystac/blob/develop/CHANGELOG.md). See [the docs](https://pystac.readthedocs.io/en/latest/contributing.html#changelog) for information about adding to the changelog.
13+
- [ ] Changes are added to the [CHANGELOG](https://github.com/stac-utils/pystac/blob/main/CHANGELOG.md). See [the docs](https://pystac.readthedocs.io/en/latest/contributing.html#changelog) for information about adding to the changelog.

.github/workflows/continuous-integration.yml

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ jobs:
1414
test:
1515
name: test
1616
runs-on: ${{ matrix.os }}
17-
continue-on-error: ${{ startsWith(matrix.python-version, '3.10')}}
1817
strategy:
1918
# Allow other matrix jobs to complete if 1 fails
2019
fail-fast: false
@@ -23,7 +22,7 @@ jobs:
2322
- "3.7"
2423
- "3.8"
2524
- "3.9"
26-
- "3.10.0-beta.3"
25+
- "3.10"
2726
os:
2827
- ubuntu-latest
2928
- windows-latest
@@ -38,13 +37,11 @@ jobs:
3837
python-version: ${{ matrix.python-version }}
3938

4039
- uses: actions-rs/toolchain@v1
41-
# No wheels exist for orjson on Python 3.10 on MacOS or Windows, and the Linux
42-
# wheels are sometimes not uploaded until after the package is initially
43-
# published. This sets up the Rust nightly toolchain so we can build the orjson
44-
# wheel.
40+
# Wheels for orjson on Python 3.10 are still spotty on MacOS or Windows. This sets up the Rust
41+
# toolchain so we can build the orjson wheel.
4542
if: ${{ startsWith(matrix.python-version, '3.10')}}
4643
with:
47-
toolchain: nightly-2021-04-27
44+
toolchain: stable
4845
override: true
4946
default: true
5047
profile: minimal
@@ -120,7 +117,7 @@ jobs:
120117
run: coverage xml --fail-under 0
121118

122119
- name: Upload All coverage to Codecov
123-
uses: codecov/codecov-action@v2.0.2
120+
uses: codecov/codecov-action@v2.1.0
124121
if: ${{ env.GITHUB_REPOSITORY }} == 'stac-utils/pystac'
125122
with:
126123
token: ${{ secrets.CODECOV_TOKEN }}
@@ -142,7 +139,7 @@ jobs:
142139
- "3.7"
143140
- "3.8"
144141
- "3.9"
145-
- "3.10.0-beta.3"
142+
- "3.10"
146143

147144
steps:
148145
- uses: actions/checkout@v2

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,14 +106,14 @@ ipython_config.py
106106
# pyenv
107107
# For a library or package, you might want to ignore these files since the code is
108108
# intended to run in multiple environments; otherwise, check them in:
109-
# .python-version
109+
.python-version
110110

111111
# pipenv
112112
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
113113
# However, in case of collaboration, if having platform-specific dependencies or dependencies
114114
# having no cross-platform support, pipenv may install dependencies that don't work, or not
115115
# install all needed dependencies.
116-
#Pipfile.lock
116+
# Pipfile.lock
117117

118118
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
119119
__pypackages__/

CHANGELOG.md

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,37 @@
1212

1313
### Deprecated
1414

15+
## [v1.2.0]
16+
17+
### Added
18+
19+
- Added Table-extension ([#646](https://github.com/stac-utils/pystac/pull/646))
20+
- Stable support for Python 3.10 ([#656](https://github.com/stac-utils/pystac/pull/656))
21+
- `.python-version` files are now ignored by Git ([#647](https://github.com/stac-utils/pystac/pull/647))
22+
- Added a flag to allow users to skip transforming hierarchical link HREFs based on root catalog type ([#663](https://github.com/stac-utils/pystac/pull/663))
23+
24+
### Removed
25+
26+
- Exclude `tests` from package distribution. This should make the package lighter ([#604](https://github.com/stac-utils/pystac/pull/604))
27+
28+
### Changed
29+
30+
- Enable [strict
31+
mode](https://mypy.readthedocs.io/en/latest/command_line.html?highlight=strict%20mode#cmdoption-mypy-strict)
32+
for `mypy` ([#591](https://github.com/stac-utils/pystac/pull/591))
33+
- Links will get their `title` from their target if no `title` is provided ([#607](https://github.com/stac-utils/pystac/pull/607))
34+
- Relax typing on `LabelClasses` from `List` to `Sequence` ([#627](https://github.com/stac-utils/pystac/pull/627))
35+
- Upgraded datacube-extension to version 2.0.0 ([#645](https://github.com/stac-utils/pystac/pull/645))
36+
- By default, ItemCollections will not modify Item HREFs based on root catalog type to avoid performance costs of root link reads ([#663](https://github.com/stac-utils/pystac/pull/663))
37+
38+
### Fixed
39+
40+
- `generate_subcatalogs` can include multiple template values in a single subfolder layer
41+
([#595](https://github.com/stac-utils/pystac/pull/595))
42+
- Avoid implicit re-exports ([#591](https://github.com/stac-utils/pystac/pull/591))
43+
- Fix issue that caused incorrect root links when constructing multi-leveled catalogs ([#658](https://github.com/stac-utils/pystac/pull/658))
44+
- Regression where string `Enum` values were not serialized properly in methods like `Link.to_dict` ([#654](https://github.com/stac-utils/pystac/pull/654))
45+
1546
## [v1.1.0]
1647

1748
### Added
@@ -494,7 +525,8 @@ use `Band.create`
494525

495526
Initial release.
496527

497-
[Unreleased]: <https://github.com/stac-utils/pystac/compare/v1.1.0..main>
528+
[Unreleased]: <https://github.com/stac-utils/pystac/compare/v1.2.0..main>
529+
[v1.2.0]: <https://github.com/stac-utils/pystac/compare/v1.1.0..v1.2.0>
498530
[v1.1.0]: <https://github.com/stac-utils/pystac/compare/v1.0.1..v1.1.0>
499531
[v1.0.1]: <https://github.com/stac-utils/pystac/compare/v1.0.0..v1.0.1>
500532
[v1.0.0]: <https://github.com/stac-utils/pystac/compare/v1.0.0-rc.3..v1.0.0>

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ for Python versions. This means that users can expect support for Python 3.7 to
1616
removed from the `main` branch after Dec 26, 2021 and therefore from the next release
1717
after that date.
1818

19-
*Support for Python >= 3.10 should be considered experimental
20-
until further notice.*
19+
Note that while we support Python 3.10.\*, wheels for the `orjson` library are not always immediately available for all
20+
platforms. If you install PySTAC with the `orjson` extra, you may need to have the Rust toolchain installed (e.g. via [rustup](https://rustup.rs/)) in order to
21+
build the package from source.
2122

2223
PySTAC has a single required dependency (`python-dateutil`).
2324
PySTAC can be installed from pip or the source repository.

docs/api.rst

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,22 @@ AdditionalDimension
362362
:show-inheritance:
363363
:inherited-members:
364364

365+
VariableType
366+
~~~~~~~~~~~~
367+
368+
.. autoclass:: pystac.extensions.datacube.VariableType
369+
:members:
370+
:show-inheritance:
371+
:inherited-members:
372+
373+
Variable
374+
~~~~~~~~
375+
376+
.. autoclass:: pystac.extensions.datacube.Variable
377+
:members:
378+
:show-inheritance:
379+
:inherited-members:
380+
365381
DatacubeExtension
366382
~~~~~~~~~~~~~~~~~
367383

@@ -793,6 +809,39 @@ ItemScientificExtension
793809
:members:
794810
:show-inheritance:
795811

812+
Table Extension
813+
---------------
814+
815+
These classes are representations of the :stac-ext:`Table Extension Spec <tables>`.
816+
817+
TableExtension
818+
~~~~~~~~~~~~~~
819+
820+
.. autoclass:: pystac.extensions.table.TableExtension
821+
:members:
822+
:show-inheritance:
823+
824+
CollectionTableExtension
825+
~~~~~~~~~~~~~~~~~~~~~~~~
826+
827+
.. autoclass:: pystac.extensions.table.CollectionTableExtension
828+
:members:
829+
:show-inheritance:
830+
831+
ItemTableExtension
832+
~~~~~~~~~~~~~~~~~~
833+
834+
.. autoclass:: pystac.extensions.table.ItemTableExtension
835+
:members:
836+
:show-inheritance:
837+
838+
AssetTableExtension
839+
~~~~~~~~~~~~~~~~~~~
840+
841+
.. autoclass:: pystac.extensions.table.AssetTableExtension
842+
:members:
843+
:show-inheritance:
844+
796845
Timestamps Extension
797846
--------------------
798847

docs/concepts.rst

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ To use them you can pass in a strategy to the normalize_hrefs call.
6969
Using templates
7070
'''''''''''''''
7171

72-
You can utilze template strings to determine the file paths of HREFs set on Catalogs,
72+
You can utilize template strings to determine the file paths of HREFs set on Catalogs,
7373
Collection or Items. These templates use python format strings, which can name
7474
the property or attribute of the item you want to use for replacing the template
7575
variable. For example:
@@ -84,7 +84,9 @@ variable. For example:
8484
8585
The above code will save items in subfolders based on the collection ID, year and month
8686
of it's datetime (or start_datetime if a date range is defined and no datetime is
87-
defined).
87+
defined). Note that the forward slash (``/``) should be used as path separator in the
88+
template string regardless of the system path separator (thus both in POSIX-compliant
89+
and Windows environments).
8890

8991
You can use dot notation to specify attributes of objects or keys in dictionaries for
9092
template variables. PySTAC will look at the object, it's ``properties`` and its

mypy.ini

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,6 @@
11
[mypy]
2-
check_untyped_defs = True
3-
disallow_any_generics = True
4-
disallow_incomplete_defs = True
5-
disallow_subclassing_any = True
6-
disallow_untyped_calls = True
7-
disallow_untyped_decorators = True
8-
disallow_untyped_defs = True
9-
no_implicit_optional = True
102
show_error_codes = True
11-
strict_equality = True
12-
warn_redundant_casts = True
13-
warn_return_any = True
14-
warn_unused_configs = True
15-
warn_unused_ignores = True
3+
strict = True
164

175
[mypy-jsonschema.*]
186
ignore_missing_imports = True

pystac/__init__.py

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,43 @@
11
"""
22
PySTAC is a library for working with SpatioTemporal Asset Catalogs (STACs)
33
"""
4+
__all__ = [
5+
"__version__",
6+
"STACError",
7+
"STACTypeError",
8+
"DuplicateObjectKeyError",
9+
"ExtensionAlreadyExistsError",
10+
"ExtensionNotImplemented",
11+
"ExtensionTypeError",
12+
"RequiredPropertyMissing",
13+
"STACValidationError",
14+
"MediaType",
15+
"RelType",
16+
"StacIO",
17+
"STACObject",
18+
"STACObjectType",
19+
"Link",
20+
"HIERARCHICAL_LINKS",
21+
"Catalog",
22+
"CatalogType",
23+
"Collection",
24+
"Extent",
25+
"SpatialExtent",
26+
"TemporalExtent",
27+
"Summaries",
28+
"CommonMetadata",
29+
"RangeSummary",
30+
"Item",
31+
"Asset",
32+
"ItemCollection",
33+
"Provider",
34+
"ProviderRole",
35+
"read_file",
36+
"read_dict",
37+
"write_file",
38+
"get_stac_version",
39+
"set_stac_version",
40+
]
441

542
from pystac.errors import (
643
STACError,
@@ -30,11 +67,11 @@
3067
Extent,
3168
SpatialExtent,
3269
TemporalExtent,
33-
Summaries,
3470
)
3571
from pystac.common_metadata import CommonMetadata
36-
from pystac.summaries import RangeSummary
37-
from pystac.item import Item, Asset
72+
from pystac.summaries import RangeSummary, Summaries
73+
from pystac.asset import Asset
74+
from pystac.item import Item
3875
from pystac.item_collection import ItemCollection
3976
from pystac.provider import ProviderRole, Provider
4077
import pystac.validation
@@ -50,6 +87,7 @@
5087
import pystac.extensions.sar
5188
import pystac.extensions.sat
5289
import pystac.extensions.scientific
90+
import pystac.extensions.table
5391
import pystac.extensions.timestamps
5492
import pystac.extensions.version
5593
import pystac.extensions.view
@@ -66,6 +104,7 @@
66104
pystac.extensions.sar.SAR_EXTENSION_HOOKS,
67105
pystac.extensions.sat.SAT_EXTENSION_HOOKS,
68106
pystac.extensions.scientific.SCIENTIFIC_EXTENSION_HOOKS,
107+
pystac.extensions.table.TABLE_EXTENSION_HOOKS,
69108
pystac.extensions.timestamps.TIMESTAMPS_EXTENSION_HOOKS,
70109
pystac.extensions.version.VERSION_EXTENSION_HOOKS,
71110
pystac.extensions.view.VIEW_EXTENSION_HOOKS,

0 commit comments

Comments
 (0)