pax_global_header 0000666 0000000 0000000 00000000064 15042115121 0014502 g ustar 00root root 0000000 0000000 52 comment=0ff7529150046bcb885e0e60ea3a031592c23820 stac-check-1.11.1/ 0000775 0000000 0000000 00000000000 15042115121 0013570 5 ustar 00root root 0000000 0000000 stac-check-1.11.1/.env-example 0000664 0000000 0000000 00000000064 15042115121 0016012 0 ustar 00root root 0000000 0000000 STAC_CHECK_CONFIG="stac_check/stac-check.config.yml" stac-check-1.11.1/.github/ 0000775 0000000 0000000 00000000000 15042115121 0015130 5 ustar 00root root 0000000 0000000 stac-check-1.11.1/.github/workflows/ 0000775 0000000 0000000 00000000000 15042115121 0017165 5 ustar 00root root 0000000 0000000 stac-check-1.11.1/.github/workflows/docs.yml 0000664 0000000 0000000 00000003065 15042115121 0020644 0 ustar 00root root 0000000 0000000 name: Documentation on: push: branches: [ main ] paths: - 'docs/**' - 'stac_check/**/*.py' - 'README.md' pull_request: branches: [ main ] paths: - 'docs/**' - 'stac_check/**/*.py' - 'README.md' # Allow manual triggering workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install dependencies run: | python -m pip install --upgrade pip pip install -e ".[docs]" - name: Build documentation run: | sphinx-build -b html docs/ docs/_build/html - name: Upload documentation artifact uses: actions/upload-artifact@v4 with: name: documentation path: docs/_build/html retention-days: 7 # Only deploy when pushing to main (not on PRs) deploy: needs: build if: github.event_name == 'push' && github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' runs-on: ubuntu-latest permissions: contents: write steps: - name: Download built documentation uses: actions/download-artifact@v4 with: name: documentation path: ./docs-build - name: Deploy to GitHub Pages uses: peaceiris/actions-gh-pages@v4 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./docs-build force_orphan: true commit_message: "Update documentation [skip ci]" stac-check-1.11.1/.github/workflows/publish.yml 0000664 0000000 0000000 00000001451 15042115121 0021357 0 ustar 00root root 0000000 0000000 name: Publish on: push: tags: - "v*.*.*" # Triggers when a tag starting with 'v' followed by version numbers is pushed jobs: build-and-publish: name: Build and Publish to PyPI runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python 3.10 uses: actions/setup-python@v5 with: python-version: "3.10" - name: Install dependencies run: | python -m pip install --upgrade pip pip install setuptools wheel twine - name: Build package run: | python setup.py sdist bdist_wheel - name: Publish package to PyPI env: TWINE_USERNAME: "__token__" TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }} run: | twine upload dist/* stac-check-1.11.1/.github/workflows/test-runner.yml 0000664 0000000 0000000 00000002421 15042115121 0022175 0 ustar 00root root 0000000 0000000 name: Test Runner on: push: branches: - main - dev pull_request: branches: - main - dev jobs: pre-commit: name: Run pre-commit checks runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python 3.12 uses: actions/setup-python@v5 with: python-version: "3.12" - name: Install dependencies run: | python -m pip install --upgrade pip pip install '.[dev]' - name: Run pre-commit checks uses: pre-commit/action@v3.0.1 with: extra_args: --all-files env: PRE_COMMIT_HOME: ~/.cache/pre-commit test: needs: pre-commit # This ensures tests run after pre-commit checks name: Execute tests runs-on: ubuntu-latest strategy: matrix: python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] steps: - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip pip install '.[dev]' - name: Run unit tests run: pytest -v stac-check-1.11.1/.gitignore 0000664 0000000 0000000 00000003424 15042115121 0015563 0 ustar 00root root 0000000 0000000 # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ pip-wheel-metadata/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 db.sqlite3-journal # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # PEP 582; used by e.g. github.com/David-OConnor/pyflow __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ **/.DS_Store stac-check-1.11.1/.pre-commit-config.yaml 0000664 0000000 0000000 00000001500 15042115121 0020045 0 ustar 00root root 0000000 0000000 repos: - repo: https://github.com/PyCQA/flake8 rev: 7.3.0 hooks: - id: flake8 args: - --ignore=E501,E712,W503 - repo: https://github.com/timothycrosley/isort rev: 6.0.1 hooks: - id: isort args: ["--profile", "black"] - repo: https://github.com/psf/black rev: 25.1.0 hooks: - id: black language_version: python3.12 - repo: https://github.com/pre-commit/mirrors-mypy rev: v1.17.0 hooks: - id: mypy exclude: /tests/ # --strict args: [ --no-strict-optional, --ignore-missing-imports, --implicit-reexport, --explicit-package-bases, ] additional_dependencies: ["types-attrs", "types-requests", "types-setuptools", "types-PyYAML"] stac-check-1.11.1/.readthedocs.yml 0000664 0000000 0000000 00000000136 15042115121 0016656 0 ustar 00root root 0000000 0000000 # Build documentation in the docs/ directory with Sphinx sphinx: configuration: docs/conf.py stac-check-1.11.1/CHANGELOG.md 0000664 0000000 0000000 00000032703 15042115121 0015406 0 ustar 00root root 0000000 0000000 ## STAC-CHECK Change Log All notable changes to this project will be documented in this file. The format is (loosely) based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). ## Unreleased ## [v1.11.1] - 2025-07-29 ### Updated - Updated stac-validator dependency to v3.10.1 ([#140](https://github.com/stac-utils/stac-check/pull/140)) - Updated Github Actions and documentation dependencies ([#139](https://github.com/stac-utils/stac-check/pull/139)) ### Removed - Removed pdoc-generated documentation files and references as the project now uses Sphinx exclusively for documentation. ([#141](https://github.com/stac-utils/stac-check/pull/141)) ## [v1.11.0] - 2025-06-22 ### Added - Results summary for options that produce numerous results, ie. --collections, --item-collection, --recursive ([#138](https://github.com/stac-utils/stac-check/pull/138)) - Support for --verbose flag to show verbose results summary ([#138](https://github.com/stac-utils/stac-check/pull/138)) - Added `--output`/`-o` option to save validation results to a file ([#138](https://github.com/stac-utils/stac-check/pull/138)) - Tests for CLI options ([#138](https://github.com/stac-utils/stac-check/pull/138)) ## [v1.10.1] - 2025-06-21 ### Fixed - Fixed issue where pages parameter was being added to the wrong Linter ([#137](https://github.com/stac-utils/stac-check/pull/137)) ## [v1.10.0] - 2025-06-20 ### Added - Created api_lint.py module to handle API linting ([#135](https://github.com/stac-utils/stac-check/pull/135)) - Added support for --item-collection flag to validate item collection responses ([#135](https://github.com/stac-utils/stac-check/pull/135)) - Added support for --collections flag to validate collections responses ([#135](https://github.com/stac-utils/stac-check/pull/135)) - Added support for --pages flag to limit the number of pages to validate ([#135](https://github.com/stac-utils/stac-check/pull/135)) ### Changed - Refactored display messages into a dedicated module for better code organization and maintainability ([#135](https://github.com/stac-utils/stac-check/pull/135)) - Organized test files, added v1.0.0 recursion test ([#135](https://github.com/stac-utils/stac-check/pull/135)) ## [v1.9.1] - 2025-06-16 ### Added - Added display of failed schema information in the validation output ([#134](https://github.com/stac-utils/stac-check/pull/134)) - Added recommendation messages to guide users when validation fails ([#134](https://github.com/stac-utils/stac-check/pull/134)) - Added disclaimer about schema-based STAC validation being an initial indicator of validity only ([#134](https://github.com/stac-utils/stac-check/pull/134)) ### Changed - Updated validation output to show "Passed" instead of "Valid" for accuracy ([#134](https://github.com/stac-utils/stac-check/pull/134)) ## [v1.9.0] - 2025-06-13 ### Added - Added support for --verbose flag to show verbose error messages ([#132](https://github.com/stac-utils/stac-check/pull/132)) ### Changed - Updated stac-validator to v3.9.0 ([#132](https://github.com/stac-utils/stac-check/pull/132)) - Improved cli output, message formatting ([#132](https://github.com/stac-utils/stac-check/pull/132)) ## [v1.8.0] - 2025-06-11 ### Changed - Made `stac-pydantic` an optional dependency ([#129](https://github.com/stac-utils/stac-check/pull/129)) - `stac-validator` is now installed without the `[pydantic]` extra by default - Added `stac-check[pydantic]` extra for users who need pydantic validation - Added graceful fallback to JSONSchema validation when pydantic is not available - Updated tests to handle both scenarios (with and without pydantic installed) - Added helpful warning messages when pydantic is requested but not installed - Migrated documentation from Read the Docs to GitHub Pages ([#128](https://github.com/stac-utils/stac-check/pull/128)) - Updated documentation build system to use Sphinx with sphinx_rtd_theme - Added support for Markdown content in documentation using myst-parser - Updated README with instructions for building documentation locally - Added GitHub Actions workflow for automatic documentation deployment ## [v1.7.0] - 2025-06-01 ### Added - Added validation for bounding boxes that cross the antimeridian (180°/-180° longitude) ([#121](https://github.com/stac-utils/stac-check/pull/121)) - Checks that bbox coordinates follow the GeoJSON specification for antimeridian crossing - Detects and reports cases where a bbox incorrectly "belts the globe" instead of properly crossing the antimeridian - Provides clear error messages to help users fix incorrectly formatted bboxes - Added sponsors and supporters section with logos ([#122](https://github.com/stac-utils/stac-check/pull/122)) - Added check to verify that bbox matches item's polygon geometry ([#123](https://github.com/stac-utils/stac-check/pull/123)) - Added configuration documentation to README ([#124](https://github.com/stac-utils/stac-check/pull/124)) - Added validation for geometry coordinates order to detect potentially reversed lat/lon coordinates ([#125](https://github.com/stac-utils/stac-check/pull/125)) - Checks that coordinates follow the GeoJSON specification with [longitude, latitude] order - Uses heuristics to identify coordinates that may be reversed or contain errors - Provides nuanced error messages acknowledging the uncertainty in coordinate validation - Added validation for definite geometry coordinate errors ([#125](https://github.com/stac-utils/stac-check/pull/125)) - Detects coordinates with latitude values exceeding ±90 degrees - Detects coordinates with longitude values exceeding ±180 degrees - Returns detailed information about invalid coordinates - Added dedicated geometry validation configuration section ([#125](https://github.com/stac-utils/stac-check/pull/125)) - Created a new `geometry_validation` section in the configuration file - Added a master enable/disable switch for all geometry validation checks - Reorganized geometry validation options into the new section - Separated geometry validation errors in CLI output with a [BETA] label - Added detailed documentation for geometry validation features - Added `--pydantic` option for validating STAC objects using stac-pydantic models, providing enhanced type checking and validation ([#126](https://github.com/stac-utils/stac-check/pull/126)) ### Enhanced - Improved bbox validation output to show detailed information about mismatches between bbox and geometry bounds, including which specific coordinates differ and by how much ([#126](https://github.com/stac-utils/stac-check/pull/126)) ### Fixed - Fixed collection summaries check incorrectly showing messages for Item assets ([#121](https://github.com/stac-utils/stac-check/pull/127)) ### Updated - Improved README with table of contents, better formatting, stac-check logo, and enhanced documentation ([#122](https://github.com/stac-utils/stac-check/pull/122)) - Enhanced Contributing guidelines with step-by-step instructions ([#122](https://github.com/stac-utils/stac-check/pull/122)) ### Removed - Support for Python 3.8 ([#121](https://github.com/stac-utils/stac-check/pull/121)) ## [v1.6.0] - 2025-03-14 ### Added - Test for Python 3.13 in workflow ([#120](https://github.com/stac-utils/stac-check/pull/120)) ### Fixed - Prevented `KeyError` in `check_unlocated()` when `bbox` is unset ([#104](https://github.com/stac-utils/stac-check/pull/119)) ### Updated - Updated stac-validator to v3.6.0 ([#120](https://github.com/stac-utils/stac-check/pull/120)) ## [v1.5.0] - 2025-01-17 ### Added - Allow to provide HTTP headers ([#114](https://github.com/stac-utils/stac-check/pull/114)) - Configure whether to open URLs when validating assets ([#114](https://github.com/stac-utils/stac-check/pull/114)) ### Changed - No longer use the deprecated pkg-resources package. It has been replaced with importlib from the Python standard library ([#112](https://github.com/stac-utils/stac-check/pull/112)) ### Updated - Updated stac-validator to v3.5.0 and other dependecies as well ([#116](https://github.com/stac-utils/stac-check/pull/116)) ## [v1.4.0] - 2024-10-09 ### Added - Added pre-commit config ([#111](https://github.com/stac-utils/stac-check/pull/111)) - Added publish.yml to automatically publish new releases to PyPI ([#111](https://github.com/stac-utils/stac-check/pull/111)) ### Changed - Updated stac-validator dependency to ensure STAC v1.1.0 compliance ([#111](https://github.com/stac-utils/stac-check/pull/111)) ## [v1.3.3] - 2023-11-17 ### Changed - Development dependencies removed from runtime dependency list ([#109](https://github.com/stac-utils/stac-check/pull/109)) ## [v1.3.2] - 2023-03-23 ### Added - Ability to lint dictionaries https://github.com/stac-utils/stac-check/pull/94 - Docstrings and pdoc api documents ### Fixed - Fixed the check_catalog_file_name() method to only work on static catalogs https://github.com/stac-utils/stac-check/pull/94 - Jsonschema version to use a released version https://github.com/stac-utils/stac-check/pull/105 ## [v1.3.1] - 2022-10-05 ### Changed - Changed pin on stac-validator to >=3.1.0 from ==3.2.0 ## [v1.3.0] - 2022-09-20 ### Added - recursive mode lints assets https://github.com/stac-utils/stac-check/pull/84 ### Changed - recursive mode swaps pystac for stac-validator https://github.com/stac-utils/stac-check/pull/84 ### Fixed - fix catalog file name check https://github.com/stac-utils/stac-check/pull/83 ## [v1.2.0] - 2022-04-26 ### Added - Option to include a configuration file to ignore selected checks ### Changed - Change name from stac_check to stac-check in setup for cli ### Fixed - Fix thumbnail size check ## [v1.1.2] - 2022-03-03 ### Changed - Make it easier to export linting messages - Set stac-validator version to 2.4.0 ### Fixed - Fix self-link test ## [v1.0.1] - 2022-02-20 ### Changed - Update readme - Reorganized code for version 1.0.0 release ## [v0.2.0] - 2022-02-02 - 2022-02-19 ### Added - Import main validator as stac-validator was updated to 2.3.0 - Added best practices docuument to repo - Recommend 'self' link in links - Check catalogs and collections use 'catalog.json' or 'collection.json' as a file name - Check that links in collections and catalogs have a title field - Recommend that eo:bands or similar information is provided in collection summaries - Check for small thumbnail image file type ## [v0.1.3] - 2022-01-23 ### Added - Check for bloated metadata, too many fields in properties - Check for geometry field, recommend that STAC not be used for non-spatial data ### Changed - Changed bloated links check to a boolean to mirror bloated metadata ## [v0.1.2] - 2022-01-17 - 2022-01-22 ### Added - Check for null datetime - Check for unlocated items, bbox should be set to null if geometry is ## [v0.1.1] - 2021-11-26 - 2021-12-12 ### Added - Added github actions to test and push to pypi - Added makefile, dockerfile ### Changed - Removed pipenv ## [v0.1.0] - 2021-11-26 - 2021-12-05 ### Added - Best practices - searchable identifiers - lowercase, numbers, '\_' or '-' for id names https://github.com/radiantearth/stac-spec/blob/master/best-practices.md#searchable-identifiers - Best practices ensure item ids don't contain ':' or '/' characters https://github.com/radiantearth/stac-spec/blob/master/best-practices.md#item-ids - Best practices check for item ids to see if they match file names - Add url support, check for valid urls, validate urls - Add pystac validate_all to new cli option -> recursive - Update pystac from 0.5.6 to 1.1.0 - Move stac-validator 2.3.0 into repository - Best practices check for too many links in object - Best practices check for summaries in collections - Validation from stac-validator 2.3.0 - Links and assets validation checks [Unreleased]: https://github.com/stac-utils/stac-check/compare/v1.11.1...main [v1.11.1]: https://github.com/stac-utils/stac-check/compare/v1.11.0...v1.11.1 [v1.11.0]: https://github.com/stac-utils/stac-check/compare/v1.10.1...v1.11.0 [v1.10.1]: https://github.com/stac-utils/stac-check/compare/v1.10.0...v1.10.1 [v1.10.0]: https://github.com/stac-utils/stac-check/compare/v1.9.1...v1.10.0 [v1.9.1]: https://github.com/stac-utils/stac-check/compare/v1.9.0...v1.9.1 [v1.9.0]: https://github.com/stac-utils/stac-check/compare/v1.8.0...v1.9.0 [v1.8.0]: https://github.com/stac-utils/stac-check/compare/v1.7.0...v1.8.0 [v1.7.0]: https://github.com/stac-utils/stac-check/compare/v1.6.0...v1.7.0 [v1.6.0]: https://github.com/stac-utils/stac-check/compare/v1.5.0...v1.6.0 [v1.5.0]: https://github.com/stac-utils/stac-check/compare/v1.4.0...v1.5.0 [v1.4.0]: https://github.com/stac-utils/stac-check/compare/v1.3.3...v1.4.0 [v1.3.3]: https://github.com/stac-utils/stac-check/compare/v1.3.2...v1.3.3 [v1.3.2]: https://github.com/stac-utils/stac-check/compare/v1.3.1...v1.3.2 [v1.3.1]: https://github.com/stac-utils/stac-check/compare/v1.3.0...v1.3.1 [v1.3.0]: https://github.com/stac-utils/stac-check/compare/v1.2.0...v1.3.0 [v1.2.0]: https://github.com/stac-utils/stac-check/compare/v1.1.2...v1.2.0 [v1.1.2]: https://github.com/stac-utils/stac-check/compare/v1.0.1...v1.1.2 [v1.0.1]: https://github.com/stac-utils/stac-check/compare/v0.2.0...v1.0.1 [v0.2.0]: https://github.com/stac-utils/stac-check/compare/v0.1.3...v0.2.0 [v0.1.3]: https://github.com/stac-utils/stac-check/compare/v0.1.2...v0.1.3 [v0.1.2]: https://github.com/stac-utils/stac-check/compare/v0.1.1...v0.1.2 [v0.1.1]: https://github.com/stac-utils/stac-check/compare/v0.1.0...v0.1.1 [v0.1.0]: https://github.com/stac-utils/stac-check/releases/tag/v0.1.0 stac-check-1.11.1/Dockerfile 0000664 0000000 0000000 00000000532 15042115121 0015562 0 ustar 00root root 0000000 0000000 FROM python:3.9-slim WORKDIR /app # Install build tools and dependencies RUN apt-get update && \ apt-get install -y --no-install-recommends \ make \ build-essential \ && rm -rf /var/lib/apt/lists/* COPY . . # Install the package in development mode with dev and docs extras RUN pip install -e ".[dev,docs]" CMD ["stac_check"] stac-check-1.11.1/LICENSE 0000664 0000000 0000000 00000002057 15042115121 0014601 0 ustar 00root root 0000000 0000000 MIT License Copyright (c) 2021 Jonathan Healy 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. stac-check-1.11.1/MANIFEST.in 0000664 0000000 0000000 00000000050 15042115121 0015321 0 ustar 00root root 0000000 0000000 include stac_check/stac-check.config.yml stac-check-1.11.1/Makefile 0000664 0000000 0000000 00000001222 15042115121 0015225 0 ustar 00root root 0000000 0000000 .PHONY: build build: docker build \ -t stac_check . run_docker = docker run -it --rm \ stac_check .PHONY: shell shell: $(run_docker) /bin/bash .PHONY: docs docs: ## Build documentation locally pip install -e ".[docs]" sphinx-build -b html -E docs/ docs/_build/html @echo "Documentation built in docs/_build/html" .PHONY: docker-docs docker-docs: ## Build documentation inside Docker container docker build -t stac_check . docker run --rm -v $(PWD)/docs/_build:/app/docs/_build stac_check sphinx-build -b html -E docs/ docs/_build/html @echo "Documentation built in docs/_build/html" @echo "Docker documentation build complete." stac-check-1.11.1/README.md 0000664 0000000 0000000 00000044203 15042115121 0015052 0 ustar 00root root 0000000 0000000 # stac-check
stac-check: STAC spec validation and linting tool
Please upgrade from version 0.9.0 to version 1.1.0!
Validator: stac-validator 3.9.1
Valid ITEM: True
Schemas validated:
https://cdn.staclint.com/v0.9.0/extension/eo.json
https://cdn.staclint.com/v0.9.0/extension/view.json
https://cdn.staclint.com/v0.9.0/item.json
STAC Best Practices:
Item name 'LC81530252014153LGN00' should only contain Searchable identifiers
Identifiers should consist of only lowercase characters, numbers, '_', and '-'
https://github.com/radiantearth/stac-spec/blob/master/best-practices.md#searchable-identifiers
Item file names should match their ids: 'landsat8-sample' not equal to 'LC81530252014153LGN00
A link to 'self' in links is strongly recommended
This object has 4 links
### Recursive Validation
```bash
stac-check https://raw.githubusercontent.com/stac-utils/pystac/main/tests/data-files/examples/0.9.0/collection-spec/examples/landsat-collection.json --recursive
```
stac-check: STAC spec validation and linting tool
Please upgrade from version 0.9.0 to version 1.1.0!
Validator: stac-validator 3.9.1
Recursive: Validate all assets in a collection or catalog
Max-depth = None
-------------------------
Asset 1 Validated: https://raw.githubusercontent.com/stac-utils/pystac/main/tests/data-files/examples/0.9.0/collection-spec/examples/landsat-collection.json
Valid COLLECTION: True
Schemas validated:
https://cdn.staclint.com/v0.9.0/collection.json
STAC Best Practices:
Object should be called 'collection.json' not 'landsat-collection.json'
A STAC collection should contain a summaries field
It is recommended to store information like eo:bands in summaries
Links in catalogs and collections should always have a 'title' field
This object has 4 links
-------------------------
Asset 2 Validated: https://landsat-stac.s3.amazonaws.com/landsat-8-l1/paths/catalog.json
Valid: False
Schemas validated:
https://cdn.staclint.com/v0.9.0/collection.json
Error Type: JSONDecodeError
Error Message: Expecting value: line 1 column 1 (char 0)
-------------------------
### Asset Validation
```bash
stac-check sample_files/1.0.0/core-item.json --assets
```
stac-check: STAC spec validation and linting tool
Please upgrade from version 1.0.0 to version 1.1.0!
Validator: stac-validator 3.9.1
Valid ITEM: True
Schemas validated:
https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json
STAC Best Practices:
Item name '20201211_223832_CS2' should only contain Searchable identifiers
Identifiers should consist of only lowercase characters, numbers, '_', and '-'
https://github.com/radiantearth/stac-spec/blob/master/best-practices.md#searchable-identifiers
Item file names should match their ids: 'core-item' not equal to '20201211_223832_CS2
Please avoid setting the datetime field to null, many clients search on this field
A link to 'self' in links is strongly recommended
No ASSET format errors!
ASSET request errors:
http://cool-sat.com/catalog/20201211_223832_CS2/20201211_223832_CS2.EPH
This object has 4 links
### Link and Asset Validation
```bash
stac-check sample_files/1.0.0/core-item-bad-links.json --links --assets
```
stac-check: STAC spec validation and linting tool
Please upgrade from version 1.0.0 to version 1.1.0!
Validator: stac-validator 3.9.1
Valid ITEM: True
Schemas validated:
https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json
STAC Best Practices:
Item name '20201211_223832_CS2' should only contain Searchable identifiers
Identifiers should consist of only lowercase characters, numbers, '_', and '-'
https://github.com/radiantearth/stac-spec/blob/master/best-practices.md#searchable-identifiers
Item file names should match their ids: 'core-item-bad-links' not equal to '20201211_223832_CS2
Please avoid setting the datetime field to null, many clients search on this field
A link to 'self' in links is strongly recommended
ASSET format errors:
https:/storage.googleapis.com/open-cogs/stac-examples/20201211_223832_CS2.jpg
ASSET request errors:
https:/storage.googleapis.com/open-cogs/stac-examples/20201211_223832_CS2.jpg
http://cool-sat.com/catalog/20201211_223832_CS2/20201211_223832_CS2.EPH
LINK format errors:
http:/remotdata.io/catalog/20201211_223832_CS2/index.html
LINK request errors:
http://catalog/collection.json
http:/remotdata.io/catalog/20201211_223832_CS2/index.html
This object has 4 links
### Invalid STAC
```bash
stac-check sample_files/0.9.0/bad-item.json
```
stac-check: STAC spec validation and linting tool
Please upgrade from version 0.9.0 to version 1.1.0!
Validator: stac-validator 3.9.1
Valid : False
Schemas validated:
https://cdn.staclint.com/v0.9.0/item.json
STAC Best Practices:
A link to 'self' in links is strongly recommended
Validation error type:
ValidationError
Validation error message:
'id' is a required property of the root of the STAC object
This object has 5 links
### Using HTTP Headers
```bash
stac-check https://stac-catalog.eu/collections/sentinel-s2-l2a/items/item1 --assets --no-assets-urls --header x-api-key $MY_API_KEY --header foo bar
```
stac-check: STAC spec validation and linting tool
Please upgrade from version 1.0.0 to version 1.1.0!
Validator: stac-validator 3.9.1
Valid ITEM: True
Schemas validated:
https://stac-extensions.github.io/timestamps/v1.1.0/schema.json
https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json
STAC Best Practices:
A STAC collection should contain a summaries field
It is recommended to store information like eo:bands in summaries
No ASSET format errors!
This object has 4 links
### STAC API Validation
stac-check can validate STAC API endpoints, including item collections and collections endpoints. It supports pagination and can validate multiple pages of results.
**Validating an Item Collection Endpoint:**
```bash
stac-check https://stac.geobon.org/collections/chelsa-clim/items --item-collection
```
stac-check: STAC spec validation and linting tool
Validator: stac-validator 3.9.1
Item Collection: Validate all assets in a feature collection
Pages = 1
Valid ITEM: True
Schemas validated:
https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json
This object has 10 items
**Validating Multiple Pages of an Item Collection:**
```bash
stac-check https://stac.geobon.org/collections/chelsa-clim/items --item-collection --pages 3
```
stac-check: STAC spec validation and linting tool
Validator: stac-validator 3.9.1
Item Collection: Validate all assets in a feature collection
Pages = 3
Valid ITEM: True
Schemas validated:
https://schemas.stacspec.org/v1.0.0/item-spec/json-schema/item.json
This object has 30 items
**Validating a Collections Endpoint:**
```bash
stac-check https://stac.geobon.org/collections --collections
```
stac-check: STAC spec validation and linting tool
Validator: stac-validator 3.9.1
Collections: Validate all collections in a STAC API
Pages = 1
Valid COLLECTION: True
Schemas validated:
https://schemas.stacspec.org/v1.0.0/collection-spec/json-schema/collection.json
This object has 5 collections
## Development
### Building Documentation
Documentation is automatically built and published to GitHub Pages on every push to the `main` branch. You can view the latest version at [stac-utils.github.io/stac-check](https://stac-utils.github.io/stac-check/).
To build the documentation locally (for development or testing), you'll need to install the development dependencies first:
```bash
# Install the package with documentation dependencies
pip install -e ".[docs]"
# Build the documentation
make docs
# Open the built documentation
xdg-open docs/_build/html/index.html # On Linux
open docs/_build/html/index.html # On macOS
start docs/_build/html/index.html # On Windows
```
Or using Docker:
```bash
# Build the Docker image and documentation
make docker-docs
```
The documentation is built using Sphinx with the following extensions:
- `sphinx.ext.autodoc` for API documentation
- `sphinx_click` for CLI documentation
- `sphinx_rtd_theme` for the ReadTheDocs theme
- `myst_parser` for Markdown support
## Sponsors and Supporters
The following organizations have contributed time and/or funding to support the development of this project:
- [Healy Hyperspatial](https://healy-hyperspatial.github.io/)
- [Radiant Earth Foundation](https://radiant.earth/)
We are grateful for the support of our sponsors who help make this project possible. If your organization uses stac-check and would like to become a sponsor, please reach out to us!
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
### How to Contribute
1. **Fork the repository** - Create your own fork of the project
2. **Create a feature branch** - `git checkout -b feature/your-feature-name`
3. **Commit your changes** - Make sure to write clear, concise commit messages
4. **Push to your branch** - `git push origin feature/your-feature-name`
5. **Open a Pull Request** - Describe your changes in detail
### Development Guidelines
- Follow the existing code style
- Add tests for new features
- Update documentation as needed
- Make sure all tests pass before submitting a PR
### Reporting Issues
If you find a bug or have a feature request, please open an issue on the [GitHub repository](https://github.com/stac-utils/stac-check/issues).
## License
This project is licensed under the Apache License 2.0. stac-check-1.11.1/assets/ 0000775 0000000 0000000 00000000000 15042115121 0015072 5 ustar 00root root 0000000 0000000 stac-check-1.11.1/assets/radiant-earth.webp 0000664 0000000 0000000 00000014512 15042115121 0020477 0 ustar 00root root 0000000 0000000 RIFFB WEBPVP8X
VP8 b p *>u:H&8en|7]/os=%g +o
@y*qY/O:nzSK> h-Q`~ҋ7zXcwnޱ7zXcwnޱ7zXcwnޱ7zXcwnޱ7xGLDQygU4KR E6ӧ%:ʓ@-.)R4u˙ch]O<0]A֠|="-hȷtS$~56]瀳4Eޱ9c2atg_Rφas@뒰ik
2arUʭwp9>I23#$ .RQDŽ|LD K
tui:J5<(lLKִ!IxRqH;9xw6Fjpt$'2X#DŽYƋcw*b"=WGPDXzt9bQq!WAf(pmצ~,Ckcwg"Bl0/]{jBc_ \1Uy9&W[JJke[} mM3i-0fĉJwn:p>;R!?r$w1b
tf?v>Nč}썟rqF0M~e V{@`UG:k,Jnqۓjtȑ/hrsi JYǡ~9R>Nnj
q*9f
U_I7[Z Ϧ($t֘mN=萰wg*ыnKW",n