Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Apply StacIO instance from root in Catalog.set_root #590

Merged

Conversation

duckontheweb
Copy link
Contributor

@duckontheweb duckontheweb commented Jul 30, 2021

Related Issue(s):

Description:

  • Adds "public" Catalog.stac_io property that reads/writes to Catalog._stac_io for backwards compatibility.

    Since we are reading and writing to this attribute from outside the owning class in a number of cases it seems appropriate to make it a public property.

  • Adds the StacIO instance from root.stac_io to the calling Catalog in Catalog.set_root.

PR Checklist:

  • Code is formatted (run pre-commit run --all-files)
  • Tests pass (run scripts/test)
  • Documentation has been updated to reflect changes, if applicable
  • This PR maintains or improves overall codebase code coverage.
  • Changes are added to the CHANGELOG. See the docs for information about adding to the changelog.

duckontheweb added a commit to duckontheweb/pystac that referenced this pull request Jul 30, 2021
@lossyrob
Copy link
Member

Since we are reading and writing to this attribute from outside the owning class in a number of cases it seems appropriate to make it a public property.

The intent with using the underscore was to indicate that the _stac_io property was not part of the public API, i.e. not for user consumption but only for internal library use. This is a different mechanism than the strict public/private-per-class strategy found in typed OO languages. As a Python user, when I see an underscore, I know that I can't rely on that property as a user and should stay away from messing with it. By making this "public" (no underscore), we're committing to this as public API that we should expect users to read from, set into, and generally rely on. Is this the intended change, or do we want that property only to be used within the library code?

@duckontheweb
Copy link
Contributor Author

The intent with using the underscore was to indicate that the _stac_io property was not part of the public API, i.e. not for user consumption but only for internal library use. This is a different mechanism than the strict public/private-per-class strategy found in typed OO languages. As a Python user, when I see an underscore, I know that I can't rely on that property as a user and should stay away from messing with it. By making this "public" (no underscore), we're committing to this as public API that we should expect users to read from, set into, and generally rely on. Is this the intended change, or do we want that property only to be used within the library code?

That's a good point. If someone were constructing a Catalog instance manually (using __init__), then they might want to set the stac_io attribute directly if they don't want to use the default for some reason. However, it's probably not worth the change until that case actually comes up. I can revert that part of the PR unless there are others who feel it should be a public API.

@gadomski @matthewhanson Are either of you setting Catalog._stac_io directly in stactools or pystac-client?

@gadomski
Copy link
Member

@gadomski @matthewhanson Are either of you setting Catalog._stac_io directly in stactools or pystac-client?

pystac-client does, e.g. here: https://github.com/stac-utils/pystac-client/blob/main/pystac_client/client.py#L67. stactools does not.

@duckontheweb
Copy link
Contributor Author

@gadomski @matthewhanson Are either of you setting Catalog._stac_io directly in stactools or pystac-client?

pystac-client does, e.g. here: https://github.com/stac-utils/pystac-client/blob/main/pystac_client/client.py#L67. stactools does not.

Thanks @gadomski. Based on the fact that the pystac-client use-case is calling a method not present in any of the PySTAC StacIO classes I think it's probably enough of an edge case that it doesn't justify making this a public attribute.

Unless there are other objections or arguments for a public Catalog.stac_io attribute I'll revert that change.

@duckontheweb
Copy link
Contributor Author

Reverted Catalog.stac_io -> Catalog._stac_io and rebased to resolve merge conflicts. @lossyrob @matthewhanson This is ready for a review.

@codecov-commenter
Copy link

codecov-commenter commented Aug 14, 2021

Codecov Report

Merging #590 (10b31cd) into main (74e1482) will increase coverage by 0.00%.
The diff coverage is 100.00%.

Impacted file tree graph

@@           Coverage Diff           @@
##             main     #590   +/-   ##
=======================================
  Coverage   94.69%   94.69%           
=======================================
  Files          75       75           
  Lines       10777    10790   +13     
  Branches     1053     1054    +1     
=======================================
+ Hits        10205    10218   +13     
  Misses        396      396           
  Partials      176      176           
Impacted Files Coverage Δ
pystac/catalog.py 91.97% <100.00%> (+0.04%) ⬆️
tests/test_catalog.py 99.18% <100.00%> (+0.01%) ⬆️

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 74e1482...10b31cd. Read the comment docs.

Copy link
Member

@lossyrob lossyrob left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 after the CHANGELOG is updated to remove the public stac_io property mention

CHANGELOG.md Outdated
@@ -4,13 +4,19 @@

### Added

- "Public" `Catalog.stac_io` property to match "private" `Catalog._stac_io` attribute
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This entry should be removed

@duckontheweb
Copy link
Contributor Author

@matthewhanson I'll plan on merging this today unless I hear from you that there are issues.

@duckontheweb duckontheweb merged commit 5ddfa83 into stac-utils:main Aug 24, 2021
@duckontheweb duckontheweb deleted the change/gh-589-use-root-stac-io branch August 24, 2021 12:38
duckontheweb added a commit that referenced this pull request Oct 4, 2021
duckontheweb pushed a commit that referenced this pull request Oct 28, 2021
duckontheweb pushed a commit that referenced this pull request Nov 12, 2021
* build(deps): bump ipython from 7.25.0 to 7.26.0 (#592)

Bumps [ipython](https://github.com/ipython/ipython) from 7.25.0 to 7.26.0.
- [Release notes](https://github.com/ipython/ipython/releases)
- [Commits](ipython/ipython@7.25.0...7.26.0)

---
updated-dependencies:
- dependency-name: ipython
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump nbsphinx from 0.8.6 to 0.8.7

Bumps [nbsphinx](https://github.com/spatialaudio/nbsphinx) from 0.8.6 to 0.8.7.
- [Release notes](https://github.com/spatialaudio/nbsphinx/releases)
- [Changelog](https://github.com/spatialaudio/nbsphinx/blob/master/NEWS.rst)
- [Commits](spatialaudio/nbsphinx@0.8.6...0.8.7)

---
updated-dependencies:
- dependency-name: nbsphinx
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Avoid implicit re-exports (#591)

* Remove implicit re-exports

* Enable mypy strict mode

* Update CHANGELOG for #591

* build(deps): bump orjson from 3.6.0 to 3.6.1 (#596)

Bumps [orjson](https://github.com/ijl/orjson) from 3.6.0 to 3.6.1.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](ijl/orjson@3.6.0...3.6.1)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump pre-commit from 2.13.0 to 2.14.0 (#600)

Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 2.13.0 to 2.14.0.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/master/CHANGELOG.md)
- [Commits](pre-commit/pre-commit@v2.13.0...v2.14.0)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump types-orjson from 0.1.1 to 3.6.0 (#599)

Bumps [types-orjson](https://github.com/python/typeshed) from 0.1.1 to 3.6.0.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-orjson
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump types-python-dateutil from 0.1.4 to 0.1.6 (#598)

Bumps [types-python-dateutil](https://github.com/python/typeshed) from 0.1.4 to 0.1.6.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* exclude tests from package distribution (#604)

* exclude tests from package distribution

* update changelog

* Get link title from target, when possible (#607)

* Get link title from target, when possible

* Update CHANGELOG for #607

* Add tests for serialization and title in init

* Better control on subfolders in `generate_subcatalogs` (#595)

* LayoutTemplate.get_template_values -> .substitute

* test that template elements can be merged in a subdir

* fix test to use "/" as separator in template

* fix docs on the use of "/" as template path separator

* add changes to CHANGELOG.md

* build(deps): bump orjson from 3.6.1 to 3.6.3 (#610)

Bumps [orjson](https://github.com/ijl/orjson) from 3.6.1 to 3.6.3.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](ijl/orjson@3.6.1...3.6.3)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Apply StacIO instance from root in Catalog.set_root (#590)

* Use root StacIO in Catalog.set_root

* Add "public" Catalog.stac_io property

* Update CHANGELOG for #590

* Revert "Add "public" Catalog.stac_io property"

This reverts commit 9c229d0.

* Fix some docstrings in catalog.py

* Fix remaining Catalog.stac_io reference

* Remove outdated CHANGELOG entry

* Update PR template for main branch rename (#613)

* build(deps): bump black from 21.7b0 to 21.8b0 (#614)

Bumps [black](https://github.com/psf/black) from 21.7b0 to 21.8b0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/commits)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump codecov/codecov-action from 2.0.2 to 2.0.3 (#612)

Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)
- [Commits](codecov/codecov-action@v2.0.2...v2.0.3)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump ipython from 7.26.0 to 7.27.0 (#615)

* build(deps): bump ipython from 7.26.0 to 7.27.0

Bumps [ipython](https://github.com/ipython/ipython) from 7.26.0 to 7.27.0.
- [Release notes](https://github.com/ipython/ipython/releases)
- [Commits](ipython/ipython@7.26.0...7.27.0)

---
updated-dependencies:
- dependency-name: ipython
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update Python 3.10 CI version

* Use stable toolchain for orjson build

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jon Duckworth <duckontheweb@gmail.com>

* build(deps): bump pre-commit from 2.14.0 to 2.14.1 (#616)

Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 2.14.0 to 2.14.1.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/master/CHANGELOG.md)
- [Commits](pre-commit/pre-commit@v2.14.0...v2.14.1)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump types-python-dateutil from 0.1.6 to 2.8.0 (#620)

Bumps [types-python-dateutil](https://github.com/python/typeshed) from 0.1.6 to 2.8.0.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump pre-commit from 2.14.1 to 2.15.0 (#621)

Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 2.14.1 to 2.15.0.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/master/CHANGELOG.md)
- [Commits](pre-commit/pre-commit@v2.14.1...v2.15.0)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Use Sequence for annotations for label classes (#627)

* Use Sequence for annotations for label classes

Per https://mypy.readthedocs.io/en/stable/common_issues.html#variance,
`List` is invariant, so the LabelClasses.classes type annotation is
unncessarily strict. This commit relaxes the type annotation to use
`Sequence`, including a simple unit test.

* Update CHANGELOG for #627

* build(deps): bump codecov/codecov-action from 2.0.3 to 2.1.0 (#623)

Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 2.0.3 to 2.1.0.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/master/CHANGELOG.md)
- [Commits](codecov/codecov-action@v2.0.3...v2.1.0)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump doc8 from 0.9.0 to 0.9.1 (#628)

Bumps [doc8](https://github.com/pycqa/doc8) from 0.9.0 to 0.9.1.
- [Release notes](https://github.com/pycqa/doc8/releases)
- [Commits](PyCQA/doc8@0.9.0...0.9.1)

---
updated-dependencies:
- dependency-name: doc8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump sphinx from 4.1.2 to 4.2.0 (#624)

Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 4.1.2 to 4.2.0.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/4.x/CHANGES)
- [Commits](sphinx-doc/sphinx@v4.1.2...v4.2.0)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump black from 21.8b0 to 21.9b0 (#625)

Bumps [black](https://github.com/psf/black) from 21.8b0 to 21.9b0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/commits)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump ipython from 7.27.0 to 7.28.0 (#629)

Bumps [ipython](https://github.com/ipython/ipython) from 7.27.0 to 7.28.0.
- [Release notes](https://github.com/ipython/ipython/releases)
- [Commits](ipython/ipython@7.27.0...7.28.0)

---
updated-dependencies:
- dependency-name: ipython
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump jsonschema from 3.2.0 to 4.0.1 (#630)

Bumps [jsonschema](https://github.com/Julian/jsonschema) from 3.2.0 to 4.0.1.
- [Release notes](https://github.com/Julian/jsonschema/releases)
- [Changelog](https://github.com/Julian/jsonschema/blob/main/CHANGELOG.rst)
- [Commits](python-jsonschema/jsonschema@v3.2.0...v4.0.1)

---
updated-dependencies:
- dependency-name: jsonschema
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump coverage from 5.5 to 6.0 (#632)

Bumps [coverage](https://github.com/nedbat/coveragepy) from 5.5 to 6.0.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](nedbat/coveragepy@coverage-5.5...6.0)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump orjson from 3.6.3 to 3.6.4 (#631)

Bumps [orjson](https://github.com/ijl/orjson) from 3.6.3 to 3.6.4.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](ijl/orjson@3.6.3...3.6.4)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump coverage from 6.0 to 6.0.1 (#636)

Bumps [coverage](https://github.com/nedbat/coveragepy) from 6.0 to 6.0.1.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](nedbat/coveragepy@6.0...6.0.1)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump flake8 from 3.9.2 to 4.0.1 (#637)

Bumps [flake8](https://github.com/pycqa/flake8) from 3.9.2 to 4.0.1.
- [Release notes](https://github.com/pycqa/flake8/releases)
- [Commits](PyCQA/flake8@3.9.2...4.0.1)

---
updated-dependencies:
- dependency-name: flake8
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump types-orjson from 3.6.0 to 3.6.1 (#640)

Bumps [types-orjson](https://github.com/python/typeshed) from 3.6.0 to 3.6.1.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump jsonschema from 4.0.1 to 4.1.1 (#643)

Bumps [jsonschema](https://github.com/Julian/jsonschema) from 4.0.1 to 4.1.1.
- [Release notes](https://github.com/Julian/jsonschema/releases)
- [Changelog](https://github.com/Julian/jsonschema/blob/main/CHANGELOG.rst)
- [Commits](python-jsonschema/jsonschema@v4.0.1...v4.1.1)

---
updated-dependencies:
- dependency-name: jsonschema
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump types-python-dateutil from 2.8.0 to 2.8.2 (#642)

Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.0 to 2.8.2.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump coverage from 6.0.1 to 6.0.2 (#639)

Bumps [coverage](https://github.com/nedbat/coveragepy) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](nedbat/coveragepy@6.0.1...6.0.2)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump jsonschema from 4.1.1 to 4.1.2 (#644)

Bumps [jsonschema](https://github.com/Julian/jsonschema) from 4.1.1 to 4.1.2.
- [Release notes](https://github.com/Julian/jsonschema/releases)
- [Changelog](https://github.com/Julian/jsonschema/blob/main/CHANGELOG.rst)
- [Commits](python-jsonschema/jsonschema@v4.1.1...v4.1.2)

---
updated-dependencies:
- dependency-name: jsonschema
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Revert "Apply StacIO instance from root in Catalog.set_root (#590)" (#633)

This reverts commit 5ddfa83.

* Extension/datacube - added variable property (#645)

* Extension/datacube - added variable property

* Extension/datacube - complied with pre-commit hooks

* Extension/datacube - applied suggest changes from pr #645

* Extension/datacube - applied suggest changes from pr #645

Co-authored-by: Thomas Li Fredriksen <thomas.fredriksen@oceandata.earth>

* build(deps): bump coverage from 6.0.2 to 6.1.1 (#650)

Bumps [coverage](https://github.com/nedbat/coveragepy) from 6.0.2 to 6.1.1.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](nedbat/coveragepy@6.0.2...6.1.1)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump black from 21.9b0 to 21.10b0 (#649)

Bumps [black](https://github.com/psf/black) from 21.9b0 to 21.10b0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/commits)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Extension/Table - Added extension (#646)

* Extension/table - created extension

* Extension/table - Added extension hook. Added unittests

* Extension/table - Removed deepcopy usage

* Extension/table - Implemented changes proposed in PR #646

* Extension/table - Updated docs for PR #646

* Extension/table - Updated changelog for PR #646

Co-authored-by: Thomas Li Fredriksen <thomas.fredriksen@oceandata.earth>

* build(deps): bump ipython from 7.28.0 to 7.29.0 (#648)

Bumps [ipython](https://github.com/ipython/ipython) from 7.28.0 to 7.29.0.
- [Release notes](https://github.com/ipython/ipython/releases)
- [Commits](ipython/ipython@7.28.0...7.29.0)

---
updated-dependencies:
- dependency-name: ipython
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump jsonschema from 4.1.2 to 4.2.0 (#651)

Bumps [jsonschema](https://github.com/Julian/jsonschema) from 4.1.2 to 4.2.0.
- [Release notes](https://github.com/Julian/jsonschema/releases)
- [Changelog](https://github.com/Julian/jsonschema/blob/main/CHANGELOG.rst)
- [Commits](python-jsonschema/jsonschema@v4.1.2...v4.2.0)

---
updated-dependencies:
- dependency-name: jsonschema
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump jsonschema from 4.2.0 to 4.2.1 (#655)

Bumps [jsonschema](https://github.com/Julian/jsonschema) from 4.2.0 to 4.2.1.
- [Release notes](https://github.com/Julian/jsonschema/releases)
- [Changelog](https://github.com/Julian/jsonschema/blob/main/CHANGELOG.rst)
- [Commits](python-jsonschema/jsonschema@v4.2.0...v4.2.1)

---
updated-dependencies:
- dependency-name: jsonschema
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Use stable Python 3.10 in CI (#656)

* Use stable python 3.10 in CI

* Add CHANGELOG entry for 656

* Update README.md

Co-authored-by: Pete Gadomski <pete.gadomski@gmail.com>

* Update .github/workflows/continuous-integration.yml

Co-authored-by: Pete Gadomski <pete.gadomski@gmail.com>

Co-authored-by: Pete Gadomski <pete.gadomski@gmail.com>

* Packaging: Add Trove Classifier for Python 3.10 (#659)

* gitignore .python-version file (#647)

* Gitignore .python-version file

* Add CHANGELOG entry for #647

* Fix string enum serialization (#654)

* Add failing test for RelType serialization

* Fix serialization of string Enum classes

* Add CHANGELOG entry for 654

* Use assertEqual instead of assert + ==

* Use StringEnum in remaining classes inheriting from str, Enum

* Add an extra SELF_CONTAINED catalog test (#658)

* Add an extra SELF_CONTAINED catalog test

* Improve unit test

* Run pre-commit

* Make linter happy

* Update test to avoid checking 'self' link

'self' link is always absolute; PySTAC avoids writing
the link if the Catalog is self contained or relative published
(besides the root catalog in the latter case).

* Inline test issue-specific catalog; check raw json

* Set root on resolved links when setting on Catalog

When setting the root on a Catalog, also set the root on
any child or item objects that are resolved. This handles the case
where child items and catalogs were created, added to a catalog,
and then that catalog added to another catalog, invalidating the
originally set root links of the leaf items and catalogs.

* Close file properly in test

* Message which catalog failed for better debugging

* Don't recursively clear the root of children/items

When clearing the root link of a Catalog, avoid clearing the
root link of the children/items. This is to avoid the root link clearing
in the "clone" method to avoid touching the un-cloned linked STAC Objects.

* Use STACObject.set_root in full_copy

This avoids logic in the child class implementations that are incompatible
with the full_copy logic, such as the Catalog's call of set_root
on of child and item links. This crawling logic is handled by full_copy
itself.

* Update CHANGELOG

Co-authored-by: Rob Emanuele <rdemanuele@gmail.com>

* build(deps): bump coverage from 6.1.1 to 6.1.2 (#660)

Bumps [coverage](https://github.com/nedbat/coveragepy) from 6.1.1 to 6.1.2.
- [Release notes](https://github.com/nedbat/coveragepy/releases)
- [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst)
- [Commits](nedbat/coveragepy@6.1.1...6.1.2)

---
updated-dependencies:
- dependency-name: coverage
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump sphinx from 4.2.0 to 4.3.0 (#661)

Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 4.2.0 to 4.3.0.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/4.x/CHANGES)
- [Commits](sphinx-doc/sphinx@v4.2.0...v4.3.0)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump doc8 from 0.9.1 to 0.10.1 (#662)

Bumps [doc8](https://github.com/pycqa/doc8) from 0.9.1 to 0.10.1.
- [Release notes](https://github.com/pycqa/doc8/releases)
- [Commits](PyCQA/doc8@0.9.1...0.10.1)

---
updated-dependencies:
- dependency-name: doc8
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Allow PySTAC to skip transforming hrefs to relative or absolute based on CatalogType (#663)

* Use clone_item to determine preserve_dict

Currently the clone_item parameter only affects the case
where the items are pystac.Items. The analogous use
for a list of Dicts representing the Items is
by using preserve_dict if the Items should be "cloned".
This allows users to use clone_item=False to speed
up reading ItemCollections in the case that they are
passing in a list of Dicts.

* Take a Callable instead of a Type for set_default

This shouldn't break any client code as a Type[StacIO] is
itself a Callable[[], StacIO]. This allows flexibility
in how we generate the StacIO object, which is useful
in cases like mocking the StacIO object.

* Add MockDefaultStacIO

This allows the default StacIO to be set inside a context
manager for tests that want to utilize a mock as the default StacIO.

* Test ItemCollection.to_dict won't read item roots

This test, which fails without a subsequent fix,
tests that there should only be a single read operation
when convering an ItemCollection to a dict. This test
fails due to the root link being read for each item
in the logic that determines if heirarchial links should
be absolute or relative.

* Allow link href transformation logic to be skipped

This adds a new option to determine if a link's href
should be transformed based on the link's owner's root
catalog type. The current implementation always checks
the link's owner for a root catalog, and if it exists
and if that root catalog is of type RELATIVE_PUBLISHED
or SELF_CONTAINED, and that link is a hierarchical link,
then the link's href is transformed to be relative to
the link's owner's root catalog.

The default option is to maintain this behavior for
the default to_dict method, along with the
Catalog, Collection and Item to_dict methods; but this
flag now allows users to skip this link href transformation,
saving reads.

The ItemCollection.to_dict method was modified to skip
link transformation by default. If Items exist in an
ItemCollection, the likely desired behavior is not to modify
the link hrefs based on the root catalog type, and the result
of transforming hrefs in situations where the ItemCollection
does not itself have a root catalog results in a root link
resolution for each Item, which can be very slow.

* Update CHANGELOG

* Bump to v1.2.0 (#653)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rob Emanuele <rdemanuele@gmail.com>
Co-authored-by: Vincent Sarago <vincent.sarago@gmail.com>
Co-authored-by: Francesco Nattino <49899980+fnattino@users.noreply.github.com>
Co-authored-by: Pete Gadomski <pete.gadomski@gmail.com>
Co-authored-by: Thomas Li Fredriksen <thomafred@users.noreply.github.com>
Co-authored-by: Thomas Li Fredriksen <thomas.fredriksen@oceandata.earth>
Co-authored-by: Tyler Battle <tyler@battle.ca>
Co-authored-by: Grigory <gr.pomadchin@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants