Changelog

All notable changes to the Python CIMIS Client project will be documented here.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[1.3.2] - 2025-07-20

Added

  • Complete ReadTheDocs documentation with Sphinx

  • Comprehensive API reference documentation

  • User guide with practical examples

  • Installation guide with troubleshooting

  • Examples section with real-world use cases

  • Fixed get_daily_data() to return only daily records

  • Enhanced README with comprehensive PyPI documentation

Changed

  • Updated package metadata with correct author name

  • Added M. A. Andrade as co-author

  • Added Precision Irrigation Management Lab (PRIMA) as maintainer

  • Updated documentation URLs to working GitHub links

  • Improved CSV export with better column naming

  • Enhanced error handling and validation

Fixed

  • get_daily_data() now properly filters out hourly data

  • Package metadata now shows correct author information

  • Documentation URLs now point to working resources

[1.3.1] - 2025-07-18

Added

  • Enhanced CSV export functionality

  • Automatic filename generation for exports

  • Better error handling and validation

  • Comprehensive test suite

Changed

  • Improved API response handling

  • Better data model structure

  • Enhanced documentation

[1.3.0] - 2025-07-15

Added

  • Support for multiple target types (stations, zip codes, coordinates, addresses)

  • Comprehensive data models for weather data and stations

  • Custom exception classes for better error handling

  • CSV export functionality with intelligent file naming

  • Station discovery and information retrieval

  • Quality control flag handling

Changed

  • Restructured package organization

  • Improved API client with better error handling

  • Enhanced data validation and processing

[1.2.0] - 2025-07-10

Added

  • Hourly data support for WSN stations

  • Spatial CIMIS System (SCS) data support

  • Enhanced data filtering capabilities

  • Comprehensive type hints

Changed

  • Improved API response parsing

  • Better handling of missing data

  • Enhanced documentation

[1.1.0] - 2025-07-05

Added

  • Daily weather data retrieval

  • Basic CSV export functionality

  • Station information access

  • Simple error handling

Changed

  • Improved API client structure

  • Better data model organization

[1.0.0] - 2025-07-01

Added

  • Initial release

  • Basic CIMIS API client

  • Core functionality for weather data retrieval

  • MIT License

  • Basic documentation

Features

Current Features (v1.3.2)

🌤️ Weather Data Access
  • Daily and hourly weather measurements

  • Multiple data sources (WSN and SCS)

  • Quality control information

  • Comprehensive data validation

🏛️ Station Information
  • Complete station metadata

  • Geographic coverage information

  • Active/inactive status tracking

  • ETo calculation capabilities

📊 Data Export
  • CSV export with intelligent naming

  • Configurable data filtering

  • Quality control flag inclusion

  • Batch processing support

🔧 Developer Experience
  • Complete type hints

  • Comprehensive error handling

  • Extensive documentation

  • Real-world examples

🌾 Agricultural Applications
  • Irrigation scheduling calculations

  • Growing degree day computations

  • Frost monitoring and alerts

  • Crop coefficient integration

Breaking Changes

Version 1.3.2

  • get_daily_data() now returns only daily records (previously could include hourly data)

  • This ensures clean separation between daily and hourly data retrieval methods

Version 1.3.0

  • Restructured package organization - imports may need updating

  • Enhanced data models with new attributes

  • Improved error handling with custom exception classes

Migration Guide

From 1.3.1 to 1.3.2

Daily Data Filtering

The get_daily_data() method now automatically filters out any hourly records:

# Before (1.3.1) - could return mixed data
weather_data = client.get_daily_data(targets=[2], start_date="2023-06-01", end_date="2023-06-07")
records = weather_data.get_all_records()  # Might include hourly records

# After (1.3.2) - only daily records
weather_data = client.get_daily_data(targets=[2], start_date="2023-06-01", end_date="2023-06-07")
records = weather_data.get_all_records()  # Only daily records

No Action Required

This change is backward compatible and improves data consistency. No code changes are needed.

From 1.2.x to 1.3.0

Package Import Changes

# Before (1.2.x)
from python_cimis.client import CimisClient

# After (1.3.0)
from python_cimis import CimisClient

Exception Handling

# Before (1.2.x)
try:
    weather_data = client.get_daily_data(...)
except Exception as e:
    print(f"Error: {e}")

# After (1.3.0)
from python_cimis.exceptions import CimisAPIError, CimisConnectionError

try:
    weather_data = client.get_daily_data(...)
except CimisConnectionError as e:
    print(f"Connection error: {e.message}")
except CimisAPIError as e:
    print(f"API error: {e.message}")

Roadmap

Planned Features

Version 1.4.0 (Q3 2025)
  • Enhanced caching system

  • Improved batch processing

  • Advanced data analytics functions

  • Integration with popular data science libraries

Version 1.5.0 (Q4 2025)
  • Real-time data streaming

  • Advanced visualization tools

  • Machine learning integration

  • Enhanced agricultural decision support

Version 2.0.0 (Q1 2026)
  • Async/await support

  • Multi-threaded processing

  • Advanced caching strategies

  • Enhanced performance optimizations

Contributing

We welcome contributions! See our Contributing Guide for details.

Areas where we need help: - Documentation improvements - Example applications - Bug reports and fixes - Performance optimizations - Integration with other libraries

Support

  • Documentation: Complete guides and API reference

  • Examples: Real-world usage patterns in the examples directory

  • Issues: Report bugs and request features on GitHub

  • Discussions: Community support and questions

License

This project is licensed under the MIT License - see the LICENSE file for details.