diff --git a/CHANGELOG.md b/CHANGELOG.md index ef0188bc..5b727634 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,22 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Fixed -## [v4.0.0a0] - 2025-04-17 +## [v4.0.0a1] - 2925-04-17 + +### Changed +- Updated package names in setup.py files to use underscores instead of periods for PEP 625 compliance [#358](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/358) + - Changed `stac_fastapi.opensearch` to `stac_fastapi_opensearch` + - Changed `stac_fastapi.elasticsearch` to `stac_fastapi_elasticsearch` + - Changed `stac_fastapi.core` to `stac_fastapi_core` + - Updated all related dependencies to use the new naming convention +- Renamed `docker-compose.yml` to `compose.yml` to align with Docker Compose V2 conventions [#358](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/358) +- Removed deprecated `version` field from all compose files [#358](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/358) +- Updated `STAC_FASTAPI_VERSION` environment variables to 4.0.0a1 in all compose files [#358](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/358) +- Bumped version from 4.0.0a0 to 4.0.0a1 for the PEP 625 compliant release [#358](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/358) +- Updated dependency requirements to use compatible release specifiers (~=) for more controlled updates while allowing for bug fixes and security patches [#358](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/issues/358) +- Removed elasticsearch-dsl dependency as it's now part of the elasticsearch package since version 8.18.0 [#358](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/issues/358) + +## [v4.0.0a0] - 2025-04-16 ### Added - Added support for dynamically-generated queryables based on Elasticsearch/OpenSearch mappings, with extensible metadata augmentation [#351](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pull/351) @@ -328,7 +343,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Use genexp in execute_search and get_all_collections to return results. - Added db_to_stac serializer to item_collection method in core.py. -[Unreleased]: https://github.com/stac-utils/stac-fastapi-elasticsearch/tree/v4.0.0a0...main +[Unreleased]: https://github.com/stac-utils/stac-fastapi-elasticsearch/tree/v4.0.0a1...main +[v4.0.0a1]: https://github.com/stac-utils/stac-fastapi-elasticsearch/tree/v4.0.0a0...v4.0.0a1 [v4.0.0a0]: https://github.com/stac-utils/stac-fastapi-elasticsearch/tree/v3.2.5...v4.0.0a0 [v3.2.5]: https://github.com/stac-utils/stac-fastapi-elasticsearch/tree/v3.2.4...v3.2.5 [v3.2.4]: https://github.com/stac-utils/stac-fastapi-elasticsearch/tree/v3.2.3...v3.2.4 diff --git a/Makefile b/Makefile index e965d785..a16fe6d9 100644 --- a/Makefile +++ b/Makefile @@ -107,10 +107,10 @@ install-os: pybase-install .PHONY: docs-image docs-image: - docker compose -f docker compose.docs.yml \ + docker compose -f compose.docs.yml \ build .PHONY: docs docs: docs-image - docker compose -f docker compose.docs.yml \ + docker compose -f compose.docs.yml \ run docs \ No newline at end of file diff --git a/README.md b/README.md index 84c38d12..d6e648f3 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@

- [![PyPI version](https://badge.fury.io/py/stac-fastapi.elasticsearch.svg)](https://badge.fury.io/py/stac-fastapi.elasticsearch) + [![PyPI version](https://badge.fury.io/py/stac-fastapi-elasticsearch.svg)](https://badge.fury.io/py/stac-fastapi-elasticsearch) [![PyPI version](https://badge.fury.io/py/stac-fastapi-opensearch.svg)](https://badge.fury.io/py/stac-fastapi-opensearch) [![Join the chat at https://gitter.im/stac-fastapi-elasticsearch/community](https://badges.gitter.im/stac-fastapi-elasticsearch/community.svg)](https://gitter.im/stac-fastapi-elasticsearch/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) @@ -26,7 +26,7 @@ - Our Api core library can be used to create custom backends. See [stac-fastapi-mongo](https://github.com/Healy-Hyperspatial/stac-fastapi-mongo) for a working example. - Reach out on our [Gitter](https://app.gitter.im/#/room/#stac-fastapi-elasticsearch_community:gitter.im) channel or feel free to add to our [Discussions](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/discussions) page here on github. -- There is [Postman](https://documenter.getpostman.com/view/12888943/2s8ZDSdRHA) documentation here for examples on how to run some of the API routes locally - after starting the elasticsearch backend via the docker-compose.yml file. +- There is [Postman](https://documenter.getpostman.com/view/12888943/2s8ZDSdRHA) documentation here for examples on how to run some of the API routes locally - after starting the elasticsearch backend via the compose.yml file. - The `/examples` folder shows an example of running stac-fastapi-elasticsearch from PyPI in docker without needing any code from the repository. There is also a Postman collection here that you can load into Postman for testing the API routes. - For changes, see the [Changelog](CHANGELOG.md) @@ -35,14 +35,20 @@ ### To install from PyPI: -```shell -pip install stac_fastapi.elasticsearch -``` -or -``` -pip install stac_fastapi.opensearch +```bash +# For versions 4.0.0a1 and newer (PEP 625 compliant naming): +pip install stac-fastapi-elasticsearch # Elasticsearch backend +pip install stac-fastapi-opensearch # Opensearch backend +pip install stac-fastapi-core # Core library + +# For versions 4.0.0a0 and older: +pip install stac-fastapi.elasticsearch # Elasticsearch backend +pip install stac-fastapi.opensearch # Opensearch backend +pip install stac-fastapi.core # Core library ``` +> **Important Note:** Starting with version 4.0.0a1, package names have changed from using periods (e.g., `stac-fastapi.core`) to using hyphens (e.g., `stac-fastapi-core`) to comply with PEP 625. The internal package structure uses underscores, but users should install with hyphens as shown above. Please update your requirements files accordingly. + ### To install and run via pre-built Docker Images We provide ready-to-use Docker images through GitHub Container Registry ([ElasticSearch](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pkgs/container/stac-fastapi-es) and [OpenSearch](https://github.com/stac-utils/stac-fastapi-elasticsearch-opensearch/pkgs/container/stac-fastapi-os) backends). You can easily pull and run these images: @@ -57,15 +63,15 @@ docker pull ghcr.io/stac-utils/stac-fastapi-os:latest ## Run Elasticsearch API backend on localhost:8080 -You need to ensure [**Docker Compose**](https://docs.docker.com/compose/install/) or [**Podman Compose**](https://podman-desktop.io/docs/compose) installed and running on your machine. In the follwoing command instead of `docker-compose` you can use `podman-compose` as well. +You need to ensure [**Docker Compose**](https://docs.docker.com/compose/install/) or [**Podman Compose**](https://podman-desktop.io/docs/compose) installed and running on your machine. In the following command instead of `docker compose` you can use `podman-compose` as well. ```shell -docker-compose up elasticsearch app-elasticsearch +docker compose up elasticsearch app-elasticsearch ``` -By default, docker-compose uses Elasticsearch 8.x and OpenSearch 2.11.1. +By default, Docker Compose uses Elasticsearch 8.x and OpenSearch 2.11.1. If you wish to use a different version, put the following in a -file named `.env` in the same directory you run docker-compose from: +file named `.env` in the same directory you run Docker Compose from: ```shell ELASTICSEARCH_VERSION=7.17.1 @@ -165,7 +171,7 @@ These templates will be used implicitly when creating new Collection and Item in This section covers how to create a snapshot repository and then create and restore snapshots with this. Create a snapshot repository. This puts the files in the `elasticsearch/snapshots` in this git repo clone, as -the elasticsearch.yml and docker-compose files create a mapping from that directory to +the elasticsearch.yml and compose files create a mapping from that directory to `/usr/share/elasticsearch/snapshots` within the Elasticsearch container and grant permissions on using it. ```shell diff --git a/docker-compose.docs.yml b/compose.docs.yml similarity index 94% rename from docker-compose.docs.yml rename to compose.docs.yml index 4d91a06b..49573fbf 100644 --- a/docker-compose.docs.yml +++ b/compose.docs.yml @@ -1,5 +1,3 @@ -version: '3' - services: docs: container_name: stac-fastapi-docs-dev diff --git a/docker-compose.yml b/compose.yml similarity index 97% rename from docker-compose.yml rename to compose.yml index 8ec0701b..a66e584f 100644 --- a/docker-compose.yml +++ b/compose.yml @@ -9,7 +9,7 @@ services: environment: - STAC_FASTAPI_TITLE=stac-fastapi-elasticsearch - STAC_FASTAPI_DESCRIPTION=A STAC FastAPI with an Elasticsearch backend - - STAC_FASTAPI_VERSION=2.1 + - STAC_FASTAPI_VERSION=4.0.0a1 - APP_HOST=0.0.0.0 - APP_PORT=8080 - RELOAD=true @@ -41,7 +41,7 @@ services: environment: - STAC_FASTAPI_TITLE=stac-fastapi-opensearch - STAC_FASTAPI_DESCRIPTION=A STAC FastAPI with an Opensearch backend - - STAC_FASTAPI_VERSION=3.0.0a2 + - STAC_FASTAPI_VERSION=4.0.0a1 - APP_HOST=0.0.0.0 - APP_PORT=8082 - RELOAD=true diff --git a/examples/auth/docker-compose.basic_auth.yml b/examples/auth/compose.basic_auth.yml similarity index 98% rename from examples/auth/docker-compose.basic_auth.yml rename to examples/auth/compose.basic_auth.yml index a6292a1f..c3e069ec 100644 --- a/examples/auth/docker-compose.basic_auth.yml +++ b/examples/auth/compose.basic_auth.yml @@ -1,5 +1,3 @@ -version: '3.9' - services: app-elasticsearch: container_name: stac-fastapi-es @@ -11,7 +9,7 @@ services: environment: - STAC_FASTAPI_TITLE=stac-fastapi-elasticsearch - STAC_FASTAPI_DESCRIPTION=A STAC FastAPI with an Elasticsearch backend - - STAC_FASTAPI_VERSION=3.0.0a2 + - STAC_FASTAPI_VERSION=4.0.0a1 - APP_HOST=0.0.0.0 - APP_PORT=8080 - RELOAD=true @@ -44,7 +42,7 @@ services: environment: - STAC_FASTAPI_TITLE=stac-fastapi-opensearch - STAC_FASTAPI_DESCRIPTION=A STAC FastAPI with an Opensearch backend - - STAC_FASTAPI_VERSION=2.1 + - STAC_FASTAPI_VERSION=4.0.0a1 - APP_HOST=0.0.0.0 - APP_PORT=8082 - RELOAD=true diff --git a/examples/auth/docker-compose.oauth2.yml b/examples/auth/compose.oauth2.yml similarity index 97% rename from examples/auth/docker-compose.oauth2.yml rename to examples/auth/compose.oauth2.yml index 8cd8f72f..ccd3bb1f 100644 --- a/examples/auth/docker-compose.oauth2.yml +++ b/examples/auth/compose.oauth2.yml @@ -1,5 +1,3 @@ -version: '3.9' - services: app-elasticsearch: container_name: stac-fastapi-es @@ -11,7 +9,7 @@ services: environment: - STAC_FASTAPI_TITLE=stac-fastapi-elasticsearch - STAC_FASTAPI_DESCRIPTION=A STAC FastAPI with an Elasticsearch backend - - STAC_FASTAPI_VERSION=3.0.0a1 + - STAC_FASTAPI_VERSION=4.0.0a1 - APP_HOST=0.0.0.0 - APP_PORT=8080 - RELOAD=true @@ -45,7 +43,7 @@ services: environment: - STAC_FASTAPI_TITLE=stac-fastapi-opensearch - STAC_FASTAPI_DESCRIPTION=A STAC FastAPI with an Opensearch backend - - STAC_FASTAPI_VERSION=2.1 + - STAC_FASTAPI_VERSION=4.0.0a1 - APP_HOST=0.0.0.0 - APP_PORT=8082 - RELOAD=true diff --git a/examples/auth/docker-compose.route_dependencies.yml b/examples/auth/compose.route_dependencies.yml similarity index 97% rename from examples/auth/docker-compose.route_dependencies.yml rename to examples/auth/compose.route_dependencies.yml index b10fbb6f..0516fccd 100644 --- a/examples/auth/docker-compose.route_dependencies.yml +++ b/examples/auth/compose.route_dependencies.yml @@ -1,5 +1,3 @@ -version: '3.9' - services: app-elasticsearch: container_name: stac-fastapi-es @@ -11,7 +9,7 @@ services: environment: - STAC_FASTAPI_TITLE=stac-fastapi-elasticsearch - STAC_FASTAPI_DESCRIPTION=A STAC FastAPI with an Elasticsearch backend - - STAC_FASTAPI_VERSION=3.0.0a2 + - STAC_FASTAPI_VERSION=4.0.0a1 - APP_HOST=0.0.0.0 - APP_PORT=8080 - RELOAD=true @@ -44,7 +42,7 @@ services: environment: - STAC_FASTAPI_TITLE=stac-fastapi-opensearch - STAC_FASTAPI_DESCRIPTION=A STAC FastAPI with an Opensearch backend - - STAC_FASTAPI_VERSION=2.1 + - STAC_FASTAPI_VERSION=4.0.0a1 - APP_HOST=0.0.0.0 - APP_PORT=8082 - RELOAD=true diff --git a/examples/pip_docker/docker-compose.yml b/examples/pip_docker/compose.yml similarity index 98% rename from examples/pip_docker/docker-compose.yml rename to examples/pip_docker/compose.yml index 3b2e6926..c9b3d641 100644 --- a/examples/pip_docker/docker-compose.yml +++ b/examples/pip_docker/compose.yml @@ -1,5 +1,3 @@ -version: '3' - services: app-elasticsearch: container_name: stac-fastapi-es diff --git a/examples/rate_limit/docker-compose.rate_limit.yml b/examples/rate_limit/compose.rate_limit.yml similarity index 97% rename from examples/rate_limit/docker-compose.rate_limit.yml rename to examples/rate_limit/compose.rate_limit.yml index 5416e139..3fa902ab 100644 --- a/examples/rate_limit/docker-compose.rate_limit.yml +++ b/examples/rate_limit/compose.rate_limit.yml @@ -1,5 +1,3 @@ -version: '3.9' - services: app-elasticsearch: container_name: stac-fastapi-es @@ -11,7 +9,7 @@ services: environment: - STAC_FASTAPI_TITLE=stac-fastapi-elasticsearch - STAC_FASTAPI_DESCRIPTION=A STAC FastAPI with an Elasticsearch backend - - STAC_FASTAPI_VERSION=2.1 + - STAC_FASTAPI_VERSION=4.0.0a1 - APP_HOST=0.0.0.0 - APP_PORT=8080 - RELOAD=true @@ -44,7 +42,7 @@ services: environment: - STAC_FASTAPI_TITLE=stac-fastapi-opensearch - STAC_FASTAPI_DESCRIPTION=A STAC FastAPI with an Opensearch backend - - STAC_FASTAPI_VERSION=3.0.0a2 + - STAC_FASTAPI_VERSION=4.0.0a1 - APP_HOST=0.0.0.0 - APP_PORT=8082 - RELOAD=true diff --git a/stac_fastapi/core/setup.py b/stac_fastapi/core/setup.py index 43b3e911..adde5c82 100644 --- a/stac_fastapi/core/setup.py +++ b/stac_fastapi/core/setup.py @@ -6,32 +6,31 @@ desc = f.read() install_requires = [ - "fastapi", + "fastapi~=0.109.0", "attrs>=23.2.0", - "pydantic", - "stac_pydantic==3.1.*", + "pydantic>=2.4.1,<3.0.0", + "stac_pydantic~=3.1.0", "stac-fastapi.api==5.1.1", "stac-fastapi.extensions==5.1.1", "stac-fastapi.types==5.1.1", - "orjson", - "overrides", - "geojson-pydantic", - "pygeofilter==0.3.1", - "jsonschema", - "slowapi==0.1.9", + "orjson~=3.9.0", + "overrides~=7.4.0", + "geojson-pydantic~=1.0.0", + "pygeofilter~=0.3.1", + "jsonschema~=4.0.0", + "slowapi~=0.1.9", ] setup( - name="stac_fastapi.core", + name="stac_fastapi_core", description="Core library for the Elasticsearch and Opensearch stac-fastapi backends.", long_description=desc, long_description_content_type="text/markdown", - python_requires=">=3.8", + python_requires=">=3.9", classifiers=[ "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: Science/Research", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", diff --git a/stac_fastapi/core/stac_fastapi/core/version.py b/stac_fastapi/core/stac_fastapi/core/version.py index 3488c82b..af49b95b 100644 --- a/stac_fastapi/core/stac_fastapi/core/version.py +++ b/stac_fastapi/core/stac_fastapi/core/version.py @@ -1,2 +1,2 @@ """library version.""" -__version__ = "4.0.0a0" +__version__ = "4.0.0a1" diff --git a/stac_fastapi/elasticsearch/setup.py b/stac_fastapi/elasticsearch/setup.py index 3355dbe3..1377211b 100644 --- a/stac_fastapi/elasticsearch/setup.py +++ b/stac_fastapi/elasticsearch/setup.py @@ -6,38 +6,36 @@ desc = f.read() install_requires = [ - "stac-fastapi.core==4.0.0a0", - "elasticsearch[async]==8.11.0", - "elasticsearch-dsl==8.11.0", - "uvicorn", - "starlette", + "stac-fastapi-core==4.0.0a1", + "elasticsearch[async]~=8.18.0", + "uvicorn~=0.23.0", + "starlette>=0.35.0,<0.36.0", ] extra_reqs = { "dev": [ - "pytest", - "pytest-cov", - "pytest-asyncio", - "pre-commit", - "requests", - "ciso8601", - "httpx<=0.27.2", + "pytest~=7.0.0", + "pytest-cov~=4.0.0", + "pytest-asyncio~=0.21.0", + "pre-commit~=3.0.0", + "requests>=2.32.0,<3.0.0", + "ciso8601~=2.3.0", + "httpx>=0.24.0,<0.28.0", ], - "docs": ["mkdocs", "mkdocs-material", "pdocs"], - "server": ["uvicorn[standard]==0.19.0"], + "docs": ["mkdocs~=1.4.0", "mkdocs-material~=9.0.0", "pdocs~=1.2.0"], + "server": ["uvicorn[standard]~=0.23.0"], } setup( - name="stac_fastapi.elasticsearch", + name="stac_fastapi_elasticsearch", description="An implementation of STAC API based on the FastAPI framework with both Elasticsearch and Opensearch.", long_description=desc, long_description_content_type="text/markdown", - python_requires=">=3.8", + python_requires=">=3.9", classifiers=[ "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: Science/Research", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", diff --git a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/config.py b/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/config.py index d14295f4..fb9e2e0f 100644 --- a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/config.py +++ b/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/config.py @@ -31,7 +31,7 @@ def _es_config() -> Dict[str, Any]: # Initialize the configuration dictionary config: Dict[str, Any] = { "hosts": hosts, - "headers": {"accept": "application/vnd.elasticsearch+json; compatible-with=7"}, + "headers": {"accept": "application/vnd.elasticsearch+json; compatible-with=8"}, } # Handle API key diff --git a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/database_logic.py b/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/database_logic.py index 38d05e29..ec84de57 100644 --- a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/database_logic.py +++ b/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/database_logic.py @@ -8,7 +8,7 @@ from typing import Any, Dict, Iterable, List, Optional, Tuple, Type import attr -from elasticsearch_dsl import Q, Search +from elasticsearch.dsl import Q, Search from starlette.requests import Request from elasticsearch import exceptions, helpers # type: ignore @@ -232,7 +232,7 @@ async def get_all_collections( body={ "sort": [{"id": {"order": "asc"}}], "size": limit, - "search_after": search_after, + **({"search_after": search_after} if search_after is not None else {}), }, ) @@ -497,7 +497,7 @@ async def execute_search( ignore_unavailable=ignore_unavailable, query=query, sort=sort or DEFAULT_SORT, - search_after=search_after, + **({"search_after": search_after} if search_after is not None else {}), size=size_limit, ) ) diff --git a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/version.py b/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/version.py index 3488c82b..af49b95b 100644 --- a/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/version.py +++ b/stac_fastapi/elasticsearch/stac_fastapi/elasticsearch/version.py @@ -1,2 +1,2 @@ """library version.""" -__version__ = "4.0.0a0" +__version__ = "4.0.0a1" diff --git a/stac_fastapi/opensearch/setup.py b/stac_fastapi/opensearch/setup.py index 8cae5dce..ece68679 100644 --- a/stac_fastapi/opensearch/setup.py +++ b/stac_fastapi/opensearch/setup.py @@ -6,38 +6,37 @@ desc = f.read() install_requires = [ - "stac-fastapi.core==4.0.0a0", - "opensearch-py==2.4.2", - "opensearch-py[async]==2.4.2", - "uvicorn", - "starlette", + "stac-fastapi-core==4.0.0a1", + "opensearch-py~=2.8.0", + "opensearch-py[async]~=2.8.0", + "uvicorn~=0.23.0", + "starlette>=0.35.0,<0.36.0", ] extra_reqs = { "dev": [ - "pytest", - "pytest-cov", - "pytest-asyncio", - "pre-commit", - "requests", - "ciso8601", - "httpx<=0.27.2", + "pytest~=7.0.0", + "pytest-cov~=4.0.0", + "pytest-asyncio~=0.21.0", + "pre-commit~=3.0.0", + "requests>=2.32.0,<3.0.0", + "ciso8601~=2.3.0", + "httpx>=0.24.0,<0.28.0", ], - "docs": ["mkdocs", "mkdocs-material", "pdocs"], - "server": ["uvicorn[standard]==0.19.0"], + "docs": ["mkdocs~=1.4.0", "mkdocs-material~=9.0.0", "pdocs~=1.2.0"], + "server": ["uvicorn[standard]~=0.23.0"], } setup( - name="stac_fastapi.opensearch", + name="stac_fastapi_opensearch", description="Opensearch stac-fastapi backend.", long_description=desc, long_description_content_type="text/markdown", - python_requires=">=3.8", + python_requires=">=3.9", classifiers=[ "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: Science/Research", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", diff --git a/stac_fastapi/opensearch/stac_fastapi/opensearch/version.py b/stac_fastapi/opensearch/stac_fastapi/opensearch/version.py index 3488c82b..af49b95b 100644 --- a/stac_fastapi/opensearch/stac_fastapi/opensearch/version.py +++ b/stac_fastapi/opensearch/stac_fastapi/opensearch/version.py @@ -1,2 +1,2 @@ """library version.""" -__version__ = "4.0.0a0" +__version__ = "4.0.0a1"