Skip to content

Add an extra SELF_CONTAINED catalog test #658

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

Merged
merged 13 commits into from
Nov 12, 2021

Conversation

pomadchin
Copy link
Contributor

@pomadchin pomadchin commented Nov 9, 2021

Related Issue(s): #657

Description:
Adds a unit test that tests #657

I notcied that there is an issue only with catalogs of the full hierarchy:

  • catalog
    • collection
      • item

The following one works as expected:

  • catalog
    • item

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 duckontheweb added this to the 1.2.0 milestone Nov 10, 2021
pomadchin and others added 2 commits November 10, 2021 09:06
'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).
@lossyrob
Copy link
Member

lossyrob commented Nov 10, 2021

I just updated to avoid checking the "self" link, which per the spec is always absolute. This ends up making the test pass. I'm going to try and get it to re-fail in the way @pomadchin mentioned in Gitter (where the rel="collection" link was absolute from a saved self-contained catalog).

@pomadchin
Copy link
Contributor Author

@lossyrob I can parse it via json.loads to make it more explicit, do you want me to try that?

@lossyrob
Copy link
Member

@pomadchin I'm poking around a bit to see if I can trigger it again, will probably use that, but let me take a swing and report back

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.
@lossyrob
Copy link
Member

This issue is caused by the order of operations when creating the collection/catalogs, and the logic surrounding deciding whether a link HREF should be absolute or relative based on the link owner's root.

When the Item is first added to the Collection, that Collection is set as the Item's root. When that Collection is added to the Catalog, the Catalog is set as the Collection's root, but the Item's root stays set as the Collection. When the save method is called, it changes the Catalog's type to SELF_CONTAINED, which means that any link owned by a STACObject whose root is that Catalog will return a relative HREF. However, as the Item's root is still the Collection, and that Collection's type never changed from the default ABSOLUTE_PUBLISHED, the links owned by that Item returns an absolute href.

I added some logic that, when setting the root of a Catalog, crawls through the resolved links of that Catalog and recursively sets the root as the new root passed in.

This seems to have caused other errors in other tests, so I'll investigate why that is.

@@ -242,32 +242,3 @@ def test_case_8() -> Collection:
"data-files/catalogs/" "planet-example-v1.0.0-beta.2/collection.json"
)
)

@staticmethod
def test_case_9() -> Catalog:
Copy link
Member

Choose a reason for hiding this comment

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

Inlined the creation of this catalog as it's specific to that issue, the "test_case_X" methods are meant to represent a set of reusable test Catalogs that are used through many tests.

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.
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.
@codecov-commenter
Copy link

codecov-commenter commented Nov 10, 2021

Codecov Report

Merging #658 (e4dbf36) into main (c815552) will decrease coverage by 0.00%.
The diff coverage is 91.66%.

Impacted file tree graph

@@            Coverage Diff             @@
##             main     #658      +/-   ##
==========================================
- Coverage   94.21%   94.20%   -0.01%     
==========================================
  Files          77       77              
  Lines       11079    11101      +22     
  Branches     1075     1080       +5     
==========================================
+ Hits        10438    10458      +20     
- Misses        465      466       +1     
- Partials      176      177       +1     
Impacted Files Coverage Δ
tests/test_catalog.py 98.93% <88.88%> (-0.25%) ⬇️
pystac/catalog.py 92.00% <100.00%> (+0.10%) ⬆️
pystac/stac_object.py 90.81% <100.00%> (ø)

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 c815552...e4dbf36. Read the comment docs.

@lossyrob
Copy link
Member

Latest commits fix this error - turns out that during the cloning and full_copy process, setting the children and item's root during the parent set_root call was causing conflicts. For clone, the purpose of calling set_root(None) is to clear only the target object's root link, and shouldn't modify the children or items. The logic in full_copy recurses the links of the clone itself, and so the new logic in set_root on Catalog was interfering with that processing.

I'd consider this a non-ideal fix, and highlights some of the complexity with root-tracking and link logic. @matthewhanson tagging you to take a look as this is an outcome of the hierarchical link refactor, which itself was to reduce some of the complexity of the previous link work. Maybe you can see a better workaround/solution?

@pomadchin
Copy link
Contributor Author

🚀 thanks!

Copy link
Contributor

@duckontheweb duckontheweb left a comment

Choose a reason for hiding this comment

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

Thanks @pomadchin and @lossyrob for getting this ironed out. I agree that the root-tracking in these hierarchical links probably needs to be reworked to reduce some of the complexity, but this seems like the best solution until we are able to do that.

@duckontheweb
Copy link
Contributor

@matthewhanson I'm going to merge this so we can go ahead with a new release tomorrow. If your review turns up a better way to handle this just let me know and we can try to sneak in another update before the release.

@duckontheweb duckontheweb merged commit f0f7f37 into stac-utils:main Nov 12, 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>
@pomadchin pomadchin deleted the feautre/self-contained-items branch November 13, 2021 13:22
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.

4 participants