# EarthScope SDK Changelog

## v1.x.x

**Release date:** TBD

## v1.4.0

**Release date:** 2026-04-24

> [!IMPORTANT]
> **Python:** Support for Python 3.9 is removed. **Python 3.10 or newer** is required; `pip` will not install this release on 3.9.

- [!29](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/29) - new: add changelog to docs
- [!28](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/28) - fix: unbound upload spec queue to let validation run ahead of producers
- [!27](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/27) - fix: don't block event loop for sync generators
- [!26](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/26) - fix: join dropoff path components with `posixpath`
- [!25](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/25) - new: simple constructor for named profiles
- [!24](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/24) - new: support multiple reference points for `gnss_ephemeris_positions`
- [!22](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/22) - chore: update `pymseed` version dependency
- [!21](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/21) - chore: drop support for python 3.9
- [!20](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/20) - new: add `structured_messages` fields to `DropoffObject`

## v1.3.1

**Release date:** 2026-03-16

- [!19](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/19) - new: add dropoff summary SDK method
- [!18](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/18) - chore: update pymseed validation logic to version 0.6.0
- [!17](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/17) - new: added dropoff list filter fields
- [!16](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/16) - new: add CRC64NVME integrity checks to S3 multipart uploads

## v1.3.0

**Release date:** 2026-01-21

- [!15](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/15) - new support for EarthScope Dropoff system

## v1.2.0

**Release date:** 2025-12-13

- [!14](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/14) - fix docs cross-reference target
- [!13](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/13) - fix ReadTheDocs build errors
- [!11](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/11) - new datasource discovery and data access methods

## v1.1.1

**Release date:** 2025-12-03

- [!12](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/12) - fix `FileNotFoundError` when saving temp AWS creds
- [!10](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/10) - fix repository URL in docs

## v1.1.0

**Release date:** 2025-06-25

- [!9](https://gitlab.com/earthscope/public/earthscope-sdk/-/merge_requests/9) - new `http.extra_headers` setting to inject arbitrary HTTP headers into all requests

## v1.0.0

**Release date:** 2025-06-18

- **Initial Release**: Complete rewrite and modernization of the EarthScope SDK
- **Dual Client Support**: Both synchronous (`EarthScopeClient`) and asynchronous (`AsyncEarthScopeClient`) clients
- **Context Manager Support**: Clients can be used as context managers for automatic resource cleanup
- **Comprehensive Authentication**: Multiple authentication flows including device code flow and client credentials flow
- **Flexible Configuration**: Multi-level configuration system with environment variables, dotenv files, and config files
- **Type Safety**: Full type hints and Pydantic models for data validation of API response bodies
- **HTTP Client**: Modern HTTP client with retry logic and connection pooling

### Changed

- **Architecture**: Complete architectural redesign for better maintainability and extensibility
- **Package Structure**: Reorganized package structure for better module organization
- **Dependencies**: Updated to modern Python dependencies (httpx, pydantic-settings, stamina)
- **Python Support**: Minimum Python version raised to 3.9
- **Build System**: Migrated to modern Python packaging with pyproject.toml

### Removed

- **Legacy Code**: Removed deprecated APIs and old implementation patterns
- **Outdated Dependencies**: Removed legacy dependency management

### Fixed

- **Authentication Flow**: Improved OAuth2 authentication flow reliability
- **Error Handling**: Better handling of HTTP errors and service responses
- **Configuration Loading**: Fixed configuration loading precedence and fallback behavior
