All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
v0.8.5 - 2024-10-23
- Use urljoin to build hrefs #746
v0.8.4 - 2024-10-16
- Support for collection search via
CollectionSearch
class and associated client methods #735
- Python 3.9 support #724
v0.8.3 - 2024-07-01
- Actually set
timeout
when initializingStacApiIO
#709 - Set
_stac_io
onCollectionClient
when reading #709
v0.8.2 - 2024-05-30
- Support for "Feature" type
intersects
dictionaries #696
v0.8.1 - 2024-05-23
- Use singular
include
andexclude
Field extension key names #690
v0.8.0 - 2024-05-17
v0.7.7 - 2024-04-19
- Updated to pystac v1.10.0 #661
- Use uv for CI #663
- use
APILayoutStrategy
as fallback strategy #666 - Updated grammar in README #676
- Respect the
REQUESTS_CA_BUNDLE
andCURL_CA_BUNDLE
environment variables when sending requests #669
v0.7.6 - 2024-02-28
- Recursion error in
get_items
#608 - Fixes inconsistent behavior in
CollectionClient.get_items
when Item IDs are supplied #639 - Logic determining if
context.matched
inItemSearch.matched
response #646
- Passing
-q
to the CLI rather than--query
#614
v0.7.5 - 2023-09-05
--matched
flag in CLI #588
v0.7.4 - 2023-09-05
- Don't provide a
limit
by default, trust the server to know its limits #584
v0.7.3 - 2023-08-21
v0.7.2 - 2023-06-23
- Remove troublesome assertion #549
v0.7.1 - 2023-06-13
- Remove unnecessary
typing_extensions
import #541
v0.7.0 - 2023-06-12
- Timeout option added to
Client.open
#463, #538 - Support for fetching catalog queryables #477
- PySTAC Client specific warnings #480
- Support for fetching and merging a selection of queryables #511
- Better error messages for the CLI #531
Modifiable
to our public API #534max_retries
parameter toStacApiIO
#532
- Switched to Ruff from isort/flake8 #457
- Move to
FutureWarning
fromDeprecationWarning
for item search interface functions that are to be removed #464 - Consolidate contributing docs into one place #478
- Use
pyproject.toml
instead ofsetup.py
#501 - Enable Ruff import sorting #518
query
parameter in GET requests #362- Double encoding of
intersects
parameter in GET requests #362 - Fix geometry instantiation in item-search-intersects.ipynb #484
- Three tests that were false positives due to out-of-date cassettes #491
- Max items checks when paging #492
ItemSearch.url_with_parameters
no longer unquotes the url #530
pystac_client.conformance.CONFORMANCE_URIS
dictionary #480
v0.6.1 - 2023-03-14
- Bumped PySTAC dependency to >= 1.7.0 #449
- Fix parse fail when header has multiple '=' characters #440
Client.open
andClient.from_file
now applyheaders
, etc to existingstac_io
instances (#439)
v0.6.0 - 2023-01-27
- Python 3.11 support #347
request_modifier
toStacApiIO
to allow for additional authentication mechanisms (e.g. AWS SigV4) #372- Authentication tutorial, demonstrating how to use to the provided hooks to use both basic and AWS SigV4 authentication #372
- CI checks for Windows and MacOS #378
- Fallback to
STAC API - Item Search
when finding a single item inCollectionClient
ifSTAC API - Features
is not implemented #379
- Stop iteration on an empty page #338
- Some mishandled cases for datetime intervals #363
- Collection requests when the Client's url ends in a '/' #373, #405
- Parse datetimes more strictly #364
- Python 3.7 support #347
v0.5.1 - 2022-09-19
- Added
ItemSearch.url_with_parameters
to get a formatted search url #304
- Fix variable name in quickstart example #316
StacApiIO.write_text_to_href
#312- Removed mention of STAC_URL in
Client.open
docstring #317
v0.5.0 - 2022-08-19
- Added a new keyword
modifier
to various constructors likeClient.open()
#259
- Fix type annotation of
Client._stac_io
and avoid implicit re-exports inpystac_client.__init__.py
#249 - Added
ItemSearch.pages
,ItemSearch.pages_as_dicts
,ItemSearch.item_collection
, andItemSearch.item_collection_as_dict
as replacements for various deprecated methods #237 - Restored the previous behavior of
Client.search()
to return an unlimited number of items by default. #273
ItemSearch.item_collections
has been deprecated in favor ofItemSearch.pages
. #237
v0.4.0 - 2022-06-08
- Significantly improved type hints
- lru_cache to several methods #167
- Direct item GET via ogcapi-features, if conformant #166
py.typed
for downstream type checking #163- Added tutorial for using various geometry objects (e.g., shapely, geojson) as an Item Search intersects argument #232
- Item Search no longer defaults to returning an unlimited number of result Items from
its "items" methods. The
max_items
parameter now defaults to 100 instead of None. Since thelimit
parameter also defaults to 100, in an ideal situation, only one request will be made to the server to retrieve all 100 items. Both of these parameters can be carefully adjusted upwards to align with the server's capabilities and the expected number of search results. #208 - Better error message when trying to search a non-item-search-conforming catalog #164
- Search
filter-lang
defaults tocql2-json
instead ofcql-json
#169 - Search
filter-lang
will be set tocql2-json
if thefilter
is a dict, orcql2-text
if it is a string #169 - Search parameter
intersects
is now typed to only accept a str, dict, or object that implements__geo_interface__
#174 - Better error message when trying to open a Collection with
Client.open
#222
- Item Search methods
get_items()
andget_item_collections()
have been renamed toitems()
anditem_collections()
. The original methods are now deprecated and may be removed as early as v0.5.0. #206 - Item Search methods
get_all_items()
andget_all_items_as_dict()
are now deprecated, and may be removed as early as v0.5.0. These have been deprecated because they have the potential to perform a large number of requests to the server and instantiate a large number of objects in memory. To a user, this is only visible as a large delay in the method call and/or the exhaustion of all available memory. The iterator methodsitems()
oritem_collections()
should be used instead. #206 - CLI parameter
-q
is now deprecated and may be removed as early as v0.5.0. Use--query
instead. #215
- Client parameter
require_geojson_link
has been removed. #165
- Search query parameter now has correct typing and handles Query Extension JSON format. #220
- Search sortby parameter now has correct typing and handles both GET and POST JSON parameter formats. #175
- Search fields parameter now has correct typing and handles both GET and POST JSON parameter formats. #184
- Use pytest configuration to skip benchmarks by default (instead of a
skip
mark). #168 - Methods retrieving collections incorrectly checked the existence of the OAFeat OpenAPI 3.0 conformance class
(http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/oas30) instead of the
STAC API - Collections
(https://api.stacspec.org/v1.0.0-beta.1/collections) orSTAC API - Features
(https://api.stacspec.org/v1.0.0-beta.1/ogcapi-features) conformance classes. 223
v0.3.5 - 2022-05-26
- Search against earth-search v0 failed with message "object of type 'Link' has no len()" #179
v0.3.4 - 2022-05-18
v0.3.3 - 2022-04-28
- Add
--filter-lang
parameter to allow specifying other filter language to be used within the--filter
parameter #140 - CI checks against minimum versions of all dependencies and any pre-release versions of PySTAC #144
v0.3.2 - 2022-01-11
Client.search
accepts an optionalfilter_lang
argument forfilter
requests #128- Added support for filtering the search endpoint using the
media_type
inClient.open
#142
- Values from
parameters
andheaders
arguments toClient.open
andClient.from_file
are now also used in requests made fromCollectionClient
instances fetched from the same API (#126) - The tests folder is no longer installed as a package.
v0.3.1 - 2021-11-17
- Adds
--block-network
option to all test commands to ensure no network requests are made during unit tests #119 parameters
argument toStacApiIO
,Client.open
, andClient.from_file
to allow query string parameters to be passed to all requests #118
- Update min PySTAC version to 1.2
- Default page size limit set to 100 rather than relying on the server default
- Fetch single collection directly from endpoint in API rather than iterating through children Issue #114
Client.get_collections
raised an exception when API did not publish/collections
conformance class instead of falling back to using child links #120
v0.3.0 - 2021-09-28
- Jupyter Notebook tutorials
- Basic CQL-JSON filtering #100
- Improved performance when constructing
pystac.ItemCollection
objects. - Relax
requests
dependency #87 - Use regular expressions for checking conformance classes #97
- Reorganized documentation, updated all docs
ItemSearch
now correctly handles times without a timezone specifier #92- queries including
gsd
cast to string to float when using shortcut query syntax (i.e., "key=val" strings). #98 - Documentation lints #108
v0.2.0 - 2021-08-04
Client.open
falls back to theSTAC_URL
environment variable if no url is provided as an argument #48- New Search.get_pages() iterator function to retrieve pages as raw JSON, not as ItemCollections
StacApiIO
class added, subclass from PySTACStacIO
. AStacApiIO
instance is used for all IO for a Client instance, and all requests are in a single HTTP session, handle pagination and respects conformanceconformance.CONFORMANCE_CLASSES
dictionary added containing all STAC API Capabilities from stac-api-speccollections
subcommand to CLI, for saving all Collections in catalog as JSONClient.get_collections
overrides Catalog to use /collections endpoint if API conformsClient.get_collection(<collection_id>)
for getting specific collectionClient.get_items
andClient.get_all_items
override Catalog functions to use search endpoint instead of traversing catalog
- Update to use PySTAC 1.1.0
- IO changed to use PySTAC's new StacIO base class.
Search.item_collections()
renamed toSearch.get_item_collections()
Search.item()
renamed toSearch.get_items()
- Conformance is checked by each individual function that requires a particular conformance
- STAC API testing URLs changed to updated APIs
ItemSearch.get_pages()
function moved to StacApiIO class for general use- Logging is now enabled in the CLI in all cases. If data are being printed to stdout, logging goes to stderr. #79
- Improved logging for GET requests (prints encoded URL)
get_pages
andsimple_stac_resolver
functions frompystac_client.stac_io
(The new StacApiIO class understandsLink
objects)Client.search()
no longer accepts anext_resolver
argument- pystac.extensions modules, which were based on PySTAC's previous extension implementation, replaced in 1.0.0
stac_api_object.StacApiObjectMixin
, replaced with conformance checking inStacApiIO
- PySTAC Collection objects can no longer be passed in as
collections
arguments to theItemSearch
class (just pass ids) Catalog.get_collection_list
(was alias toget_child_links
) because made assumption about this being an API only. Also redundant withCatalog.get_collections
Search.item_collections()
Search.items()
- STAC_URL environment variable in Client.open(). url parameter in Client is now required
- STAC_URL environment variable in CLI. CLI now has a required positional argument for the URL
- Running
stac-client
with no arguments no longer raises a confusing exception #52 Client.get_collections_list
#44- The regular expression used for datetime parsing #59
Client.from_file
now works as expected, usingClient.open
is not required, although it will fetch STAC_URL from an envvar
v0.1.1 - 2021-04-16
ItemSearch.items_as_collection
#37- Documentation published on ReadTheDocs #46
- CLI: pass in headers as list of KEY=VALUE pairs
- Include headers in STAC_IO #38
- README updated to reflect actual CLI behavior
v0.1.0 - 2021-04-14
Initial release.