Skip to content

Releases: brownag/py-soildb

soildb v0.8.0

31 May 01:17
109b3d6

Choose a tag to compare

[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

22 May 07:02
50c966e

Choose a tag to compare

[0.7.4] - 2026-05-21

Patch release with SoilProfileCollection integration and schema cleanup.

Added

  • Leaner .to_soilprofilecollection() method for SDAResponse to convert horizon data to SoilProfileCollection object

Changed

  • Renamed DatabaseTableSchema class in backends module for clarity (previously TableSchema)

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

01 May 16:34
c725dc5

Choose a tag to compare

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

14 Apr 01:50

Choose a tag to compare

soildb 0.7.2

  • Added a dialect parameter to the LDMQueryBuilder class 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 _coalesce helper method in LDMQueryBuilder to use the appropriate SQL function (ISNULL for SQL Server, IFNULL for SQLite) for null handling in generated queries. Updated query construction logic to use this method for prep_code and analyzed_size_frac filters
  • Removed duplicate deprecated function exports from src/soildb/__init__.py
  • Added SSURGOClient to backend module exports in src/soildb/backends/__init__.py
  • Improved and wrapped docstrings and comments for clarity in src/soildb/awdb/client.py

What's Changed

Also fixed broken ReadTheDocs build!!

Full Changelog: 0.7.1...0.7.2

soildb v0.7.1

31 Mar 04:14

Choose a tag to compare

Patch release focused on LDM query parity, typing fixes, and cleanup.

Changed

  • Aligned LDM filter logic with soilDB::fetchLDM (table-scoped prep_code/analyzed_size_frac, AND semantics)
  • 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 LDMQueryBuilder via 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

30 Mar 00:13
edc66ed

Choose a tag to compare

Major refactoring introducing multi-backend architecture and Laboratory Data Mart support.

Added

  • Multi-Backend Architecture: Unified data access across multiple sources

    • BaseBackend abstract 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_pointfetch_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

11 Jan 06:02
6ea0856

Choose a tag to compare

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

  • feat: add WSSClient and download_wss by @brownag in #6

Full Changelog: 0.5.0...0.6.0

soildb v0.5.0

02 Jan 09:07
bdd550a

Choose a tag to compare

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.)
  • Renamed the begin_publication_date parameter to start_publication_date in AWDB client

Enhancements:

  • Added a helper function _apply_station_timezone to 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_data method now fetches station metadata to obtain time zone offsets and applies them to hourly data
  • The TimeSeriesDataPoint model now includes element_code, variable_name, and station_timezone_offset fields 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

11 Dec 06:22
54250bf

Choose a tag to compare

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 SpatialQuery and QueryBuilder classes (use Query() 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.models module (use soildb.schema_system instead)
  • 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

11 Dec 03:26
d762f15

Choose a tag to compare

New Features

  • AWDB Module: Added support for the Air and Water Database (AWDB) with new soildb.awdb module for weather station queries, data availability checks, and time series fetching
  • Synchronous API: Introduced @sync decorator for automatic generation of synchronous versions of async functions
  • Enhanced Validation: Improved data quality scoring and validation results in SDAResponse

Bug Fixes

  • Fixed ValueError when converting empty SDA responses to SoilProfileCollection objects 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