Releases: brownag/py-soildb
soildb v0.8.0
[0.8.0] - 2026-05-30
Minor release with streamlined codebase and improved documentation.
Changed
- Streamlined codebase with removal of deprecated APIs and internal consolidation
- Improved code organization and maintainability
What's Changed
New Contributors
Full Changelog: 0.7.4...0.8.0
soildb v0.7.4
[0.7.4] - 2026-05-21
Patch release with SoilProfileCollection integration and schema cleanup.
Added
- Leaner
.to_soilprofilecollection()method forSDAResponseto convert horizon data to SoilProfileCollection object
Changed
- Renamed
DatabaseTableSchemaclass in backends module for clarity (previouslyTableSchema)
Removed
- Deleted no-longer-used validation system (
spc_presets.py,spc_validator.py; functionality was previously moved upstream to soilprofilecollection package)
What's Changed
Full Changelog: 0.7.3...0.7.4
soildb v0.7.3
soildb v0.7.3
- Added
.to_geopandas()method to SDAResponse (for #11) - Improved
fetch_by_keys()examples for spatial tables (for #11) - Harmonized methods for conversion of SDA response to various data frame types (
.to_dataframe()and friends:.to_geodataframe(),.to_pandas(),.to_polars(),.to_geopandas())
What's Changed
Full Changelog: 0.7.2...0.7.3
soildb v0.7.2
soildb 0.7.2
- Added a
dialectparameter to theLDMQueryBuilderclass and its initialization, allowing queries to be generated for either SQL Server or SQLite backends. The dialect is now determined dynamically in the LDM client based on the backend type. - Implemented a
_coalescehelper method inLDMQueryBuilderto use the appropriate SQL function (ISNULLfor SQL Server,IFNULLfor SQLite) for null handling in generated queries. Updated query construction logic to use this method forprep_codeandanalyzed_size_fracfilters - Removed duplicate deprecated function exports from
src/soildb/__init__.py - Added
SSURGOClientto backend module exports insrc/soildb/backends/__init__.py - Improved and wrapped docstrings and comments for clarity in
src/soildb/awdb/client.py
What's Changed
- docs: updates for 0.7.x by @brownag in #8
- test: improve coverage by @brownag in #9
- soildb v0.7.2 by @brownag in #10
Also fixed broken ReadTheDocs build!!
Full Changelog: 0.7.1...0.7.2
soildb v0.7.1
Patch release focused on LDM query parity, typing fixes, and cleanup.
Changed
- Aligned LDM filter logic with
soilDB::fetchLDM(table-scopedprep_code/analyzed_size_frac,ANDsemantics) - Minor LDM diagnostics/docs polish (table descriptions and parameter error messages)
Fixed
- Fixed
Invalid column name 'analyzed_size_frac'by applying size-fraction filters only to fractionated tables - Resolved mypy issues in
LDMQueryBuildervia explicit optional typing for filter attributes - Added a regression test for default flat-table queries and applied lint/format follow-up fixes
Full Changelog: 0.7.0...0.7.1
soildb v0.7.0
Major refactoring introducing multi-backend architecture and Laboratory Data Mart support.
Added
-
Multi-Backend Architecture: Unified data access across multiple sources
BaseBackendabstract class defining unified interface- SDABackend for HTTP queries via Soil Data Access
- SQLiteBackend for local SQLite database queries
- GeoPackageBackend for spatial GeoPackage files
- ResponseAdapter for converting backend results to SDAResponse
- SchemaIntrospector for database-agnostic schema discovery
- TypeMapperFactory for database-specific type mappings
-
Laboratory Data Mart (LDM) Module: Complete access to NCSS Soil Characterization Database
fetch_ldm()high-level convenience function- LDMClient for unified lab data queries via SDA or SQLite
- LDMQueryBuilder for LDM-specific SQL query building
- Comprehensive LDM table schema definitions
- Support for flexible column selection in lab pedon queries
- Structured object models for nested pedon data with horizons
-
Backend Integration: Extended fetch tier with backend support
fetch_by_keys()now supports multiple backends- SSURGOClient for structured SSURGO data from any backend
- Automatic backend selection based on data source
Changed
- API Naming Clarity:
fetch_pedon_struct_*→fetch_labpedon_*(lab pedon data)fetch_mapunit_struct_by_point→fetch_ssurgo_mapunit_by_point(structured SSURGO)- Better distinction between generic and structured data access
Fixed
- Type annotations across all new backend modules
- Schema introspection for diverse database systems
Deprecated
- Direct use of deprecated fetch functions (use
fetch_by_keys()instead)
What's Changed
Full Changelog: 0.6.0...0.7.0
soildb v0.6.0
Release adding Web Soil Survey download capabilities for bulk SSURGO and STATSGO data acquisition.
Added
- Web Soil Survey Downloads: Bulk download functionality for soil survey datasets
download_wss()function for downloading SSURGO and STATSGO data- Support for concurrent downloads with configurable concurrency limits
- WSSClient class for low-level download operations
- WSSDownloadError exception for download-specific error handling
What's Changed
Full Changelog: 0.5.0...0.6.0
soildb v0.5.0
Renaming functions for better semantic clarity using consistent verb prefixes. Various enhancements to AWDB API, mostly related to hourly data, and added new HENRY functions.
Breaking changes:
- Introduced function names such as
discover_stations,discover_stations_nearby,get_property_data_near.- Deprecated older names (
find_stations_by_criteria,get_monitoring_station_data, etc.)
- Deprecated older names (
- Renamed the
begin_publication_dateparameter tostart_publication_datein AWDB client
Enhancements:
- Added a helper function
_apply_station_timezoneto correctly interpret and assign time zone information to naive datetime values returned by the AWDB API, using station metadata, aligning with ISO 8601 timestamp standard - The
get_station_datamethod now fetches station metadata to obtain time zone offsets and applies them to hourly data - The
TimeSeriesDataPointmodel now includeselement_code,variable_name, andstation_timezone_offsetfields to provide more detailed metadata for each data point - Added new functions for working with the Henry Mount Soil Temperature and Water Database
What's Changed
Full Changelog: 0.4.0...0.5.0
soildb v0.4.0
Major release with API consolidation, improved developer experience, and production readiness.
Breaking Changes: See "Changed" section for migration details. Old API functions have straightforward replacements.
Added
- Unified spatial query API: Single
spatial_query()function for all geometry types - Unified bulk fetch API: Single
fetch_by_keys()function replacing specialized functions - Synchronous API wrapper:
.sync()decorator for all async functions for easier interactive use - SoilProfileCollection integration: Export soil horizon data to soilprofilecollection objects
- Soil water availability workflows: Integrated AWDB + SDA for comprehensive soil-water analysis
- Modular schema system: Improved schema architecture for extensibility
- Consolidated type mapping: Unified approach to type conversion across all data types
- Enhanced exception hierarchy: Structured error types (SDANetworkError, SDAQueryError, AWDBError)
- ResponseValidator: Improved response parsing and validation
- Error handling guide: Comprehensive documentation on handling network and query errors
- Troubleshooting guide: Solutions for common issues and performance optimization
Changed
- Breaking: Removed legacy
SpatialQueryandQueryBuilderclasses (useQuery()instead) - Breaking: Removed specialized fetch functions (use
fetch_by_keys()instead)fetch_mapunit_polygon()→fetch_by_keys(..., "mupolygon")fetch_component_by_mukey()→fetch_by_keys(..., "component", "mukey")fetch_chorizon_by_cokey()→fetch_by_keys(..., "chorizon", "cokey")fetch_survey_area_polygon()→fetch_by_keys(..., "sapolygon")
- Breaking: Removed spatial query functions (use
spatial_query()instead)query_mupolygon(),query_sapolygon(),query_featpoint(),query_featline()
- Breaking: Removed
soildb.modelsmodule (usesoildb.schema_systeminstead) - Sync API is now the primary documented interface (async available for advanced users)
- Improved fetch hierarchy with better pagination strategies
- Enhanced metadata parsing from fgdcmetadata column
Fixed
- SDA empty response handling
- SDAResponse data_quality_score calculation
- Custom column name generalization in high-level schemas
- Type annotations and mypy compliance
- Response validation for edge cases
Dependencies
- Added: hatchling (build system)
- Added: editables (editable installs)
- Added: build, quartodoc, quarto (documentation tools)
- Improved: pandas, polars, soilprofilecollection support
What's Changed
Full Changelog: https://github.com/brownag/py-soildb/commits/0.4.0
soildb v0.3.0
New Features
- AWDB Module: Added support for the Air and Water Database (AWDB) with new
soildb.awdbmodule for weather station queries, data availability checks, and time series fetching - Synchronous API: Introduced
@syncdecorator for automatic generation of synchronous versions of async functions - Enhanced Validation: Improved data quality scoring and validation results in
SDAResponse
Bug Fixes
- Fixed
ValueErrorwhen converting empty SDA responses toSoilProfileCollectionobjects by properly handling column validation - Corrected type annotations, mypy errors, and validation logic
- Fixed client selection and test suite issues
Improvements
- Enhanced response parsing with better metadata extraction and error recovery
- Improved empty DataFrame handling to preserve column schemas
- Code quality enhancements with Ruff linting and type checking
Dependencies
- Added optional AWDB dependencies
- Updated build and development tool versions
What's Changed
Full Changelog: 0.2.0...0.3.0