Skip to content

Changelog

Claudio Sparpaglione edited this page Feb 14, 2022 · 28 revisions

What's new in Release 3.3.0

  • New features

    • 380 Implemented National Weather Alerts support
    • 376 Now PyOWM uses SQLite instead of files to internally store city data. CityIDRegistry interface has changed but in a retrocompatible way
  • Enhancements

    • 381 Now it is possible to specify how many times to retry an API call
    • Documentation enhancements
  • Bugfixes

    • 379 Experimental fix for 404 errors on Agromonitor API satellite image search
    • 387 Fixed lat/lon swap bug on Airpollution API
    • 389 Fixed wrong city name in City ID database

What's new in Release 3.2.0

  • New features

    • Support for new AirPollution API encompassing current, historical and forecast air pollution indicators and air quality index
    • Support for new Geocoding API
    • Python 3.9 supported
    • New matching method for CityIDRegistry: startswith
  • Enhancements

    • added probability of precipitation in OneCall API responses
  • Bugfixes

    • fixed many typos in the documentation (code recipes)
  • Security

    • Automatic fixes nailed by Dependabot
  • Deprecations introduced

    • will be removed in version 4.0.0:
      • AirPollutionManager.coindex_around_coords
      • AirPollutionManager.ozone_around_coords
      • AirPollutionManager.no2index_around_coords
      • AirPollutionManager.so2index_around_coords

What's new in Release 3.1.1

  • Bugfixes:
    • Minutely rain data on OneCall calls were not read by PyOWM
    • Fixed bugs in code recipes

What's new in Release 3.1.0

3.0 was not "ripe" in terms of documentation and a few weird thing happened on the OWM API side with API keys Many of you helped out to notify documentation bugs, implement OneCall features and confirming the API key behaviour - thanks!

Here's the changelog:

  • New features:

    • Support for OneCall minutely forecast data
  • Enhancements:

    • OneCall calls now support units and exclude parameters
    • queries to weather objects now support new visibility distance (miles) and barometric pressure (InHG) units
    • now it is possible to obtain weather icons in 2 sizes (2x, 4x)
    • all PyOWM timestamps are now timezone-aware
    • now PyOWM exposes a list of OWM supported languages (pyowm.constants.LANGUAGES)
    • added an FAQ page to the documentation
  • Bugfixes:

    • tons on the documentation
    • removed dependency version pinning on PySocks
    • patched wrong subdomains for paid API calls

What's new in Release 3.0.0

This is a major release.

This means that no retrocompatibility is offered, as many high-level PyOWM interface functions have been modified or removed: this might result in your client code breaking.

But fear not! Patching your code is very likely a breeze: please verify the "migration guide" in the documentation about how to patch.

New and modified features

Platforms Support

  • dropped legacy support for Python2 and support for Python 3.4 - only supports Python 3.7+ now
  • dropped support for Docker (no more Dockerfiles and Docker images)

Enhancements

Bugfixes

Internals

  • gave the weatherapi module exactly the same dignity as other api modules...
  • PollutionAPI and UVIndexAPI: both will feature a Manager object, which will be instantiated by the new OWM entry point
  • made Exceptions hierarchy more consistent

Security

  • Now using SSL as the default option for all API calls
  • HTTP calls timeout is increased to 5 seconds (to allow download of satellite images)
  • finalized deprecations foreseen for v3

What's new in Release 2.10.0

Notably, introducing support for Agro API free features!

  • New features:

  • Enhancements:

    • Refactored Weather API code to a dedicated package
    • Implemented an automated integration and release pipeline
  • Bugfixes:

    • fixed wrong object to JSON dumping when calling send_measurements() on Stations API
    • relaxing hard upper limit on dependency geojson: from geojson>=2.3.0,<2.4 to geojson>=2.3.0,<3
  • Security:

    • upgraded version for dependencies requests and urllib3 as known security issues were raised on them
  • Python Versions Support:

    • dropped Python 3.3 support as it has reached end of life

What's new in Release 2.9.0

Python 2.7 is now officially deprecated

Bugfixing support for it will be granted on the dedicated v2.9-LTS branch that will be killed off on Jan 1st, 2020

Please check out the drop timeline for details.

  • New features:

  • Enhancements:

    • Heavily improved readthedocs documentation
    • Now PyOWM talks to OWM APIs over SSL
    • Refactored out one single consistent HTTP base client, based on requests
    • Refactored UV API and Air Pollution API code to dedicated packages
  • Bugfixes:

    • issue on requests==2.19.1 incompatibility
    • now printing on console the detailed weather status (language-sensitive) instead of generic english-based weather status
    • fixed broken links in a few Markdown docs
  • Deprecations introduced:

    • will be removed on 3.0.0: OWM25.weather_at_stations_in_bbox, OWM25.weather_at_station

What's new in Release 2.8.0

  • New features:

    • introduced support for Stations API 3.0
    • new methods for Forecaster class: will_have_clear, when_clear, will_be_clear_at
    • new light Docker images based on Alpine Linux
  • Enhancements:

    • In the moment Forecast objects are created, their Weather objects having reference timestamps prior to that moment are discarded (this means: you only get real forecasts!)
    • Introduced requests as only PyOWM dependency: requests>=2.18.2,<2.19
  • Bugfixes:

    • issue on city_id_registry read behaviour on Windows
    • issue on parsing Location objects
  • Deprecations introduced:

    • will be removed on 3.0.0: forecaster.Forecaster.will_have_sun, forecaster.Forecaster.when_sun and forecaster.Forecaster.will_be_sunny_at

What's new in Release 2.7.1

  • New features:

    • introduced support for Sulphur Dioxide (SO2) and Nitric Dioxide (NO2): new methods owm25.no2index_around_coords and owm25.so2index_around_coords
    • implemented wind speed units specification (imperial/metric)
  • Bugfixes:

    • updated weather history endpoint (was broken)
    • fix bug about data parsing at station_at_coords and weather_at_station methods
    • now the deg attribute is correctly parsed from 16 day forecast weather data items
    • fix bug on printing Unicode upon library exceptions
    • fix handling of Weather objects parsing (it was failing whenever some data wasn't provided by OWM)
  • Enhancements:

    • shrinked city ID files size by 60% (via compression)
    • reported in the Wiki a list of known projects that use PyOWM
    • integrated the Say Thanks! hook
    • introduced CONTRIBUTING.md and CODE_OF_CONDUCT.md files, thus welcoming GitHub's suggested best practices for building better open source communities
    • introduced installation tests
    • improved integrations tests organization and running
  • Breaking changes:

    • OWM decided to change the syntax of API endpoint for fetching UV data and its format in a non-retrocompatible manner. This results into UVIndex object entity fields changing, as well as the corresponding OWM25 method signature (owm25.uvindex_around_coords).

What's new in Release 2.6.1

  • Bugfixes:
    • 2.6.0 was not packaging resource files (eg. city IDs text files)

What's new in Release 2.6.0

  • New features:
    • new method owm25.weather_at_zip_code
    • new methods CityIDRegistry.ids_for and CityIDRegistry.locations_for
    • introduced deprecation decorators to mark methods that will be removed/modified in future versions
    • Python 3.6 support
  • Bugfixes:
  • Enhancements:
    • reorganized project Wiki
    • embedded PyOWM usage examples as markdown file into the distribution package
  • Deprecations introduced:
    • will be removed on 3.0.0: webapi25.cityidregistry.id_for and webapi25.cityidregistry.location_for
    • will be modified on 3.0.0: webapi25.owm25.get_version and webapi25.owm25.get_API_version

What's new in Release 2.5.0

  • New features:
  • Bugfixes:
    • fixed OWM25.is_API_online method (was not working)
    • more robust support for querying data on Unicode place names
  • Enhancements: now datetime objects across all library are timezone-aware
  • PyOWM Slack team is live!

What's new in Release 2.4.0

  • New features:
    • weather_at_ids
    • weather_history_at_coords
    • introduced support for Python 3.4 and 3.5
  • Bugfixes: full support for Unicode place names
  • Enhancements:
    • datetime representation of reception/reference times in Weather, Forecast, History objects
    • better exception hierarchy
  • Updated city ID registry files

What's new in Release 2.3.2

  • Bugfix: no crashes when data about wind, snow and rain in JSON API responses are null

What's new in Release 2.3.1

  • Bugfix: always send an API key to OWM API

What's new in Release 2.3.0

  • New feature: can now specify wether to use the pro OWM API version or not:
    owm = OWM(subscription_type='pro', API_key='my-pro-api-key')
  • Better support for Python 3 on CityIDRegistry
  • Bug fixes on parsing of humidity, wind and visibility

What's new in Release 2.2.1

  • Fixed bug on visibility distance parsing

What's new in Release 2.2.0

  • New entity Station: represents a meteostation recording weather data
    Station(name, station_ID, station_type, status, lat, lon, distance=None, last_weather=None)
  • New feature: search for meteostations around a lat/lon couple
    owm25.station_at_coords(42.4, 13.9)
  • New feature: retrieve weather currently measured by a meteostation
    owm25.weather_at_station(916)
  • New feature: retrieve weathers currently measured by meteostations within a bounding box
    owm25.weather_at_stations_in_bbox(lat_top_left, lon_top_left, lat_bottom_right, lon_bottom_right, cluster=False, limit=None)
  • Can now query for weather forecasts based on geographical coordinates
    three_hours_forecast_at_coords(42.4, 13.9)
    daily_forecast_at_coords(42.4, 13.9, limit=4)
  • Can now query for weather forecasts based on city ID
    three_hours_forecast_at_id(7768)
    daily_forecast_at_id(7768, limit=4)
  • Support querying of extreme weather conditions in Forecaster convenience methods
    when_storm()
    will_have_storm()
    will_be_stormy_at()

    when_tornado()
    will_have_tornado()
    will_be_tornado_at()

    when_hurricane()
    will_have_hurricane()
    will_be_hurricane_at()
  • Enriched Weather class with methods to support data fields retrieved from meteostations
    get_dewpoint()
    get_humidex()
    get_heatindex()
    get_visibility_distance()
  • Now supporting Unicode strings as parameters for all PyOWM public methods

  • Increased test coverage

Release 2.0.0

  • Renaming of some functions in PyOWM public interface (breaking change!)
    owm25.API_online             -> owm25.is_API_online
    owm25.weather_at             -> owm25.weather_at_place
    owm25.find_weather_by_name   -> owm25.weather_at_places
    owm25.find_weather_by_coords -> owm25.weather_around_coords
    owm25.weather_history        -> owm25.weather_history_at_place
  • Multilingual support for weather data descriptions
    owm = OWM(language='ru')
    obs = owm.weather_at('Moscow')
    obs.get_weather().get_detailed_status()  # "ясно"
  • Can now retrieve current weather from city IDs
    owm.weather_at_id(5128581)
  • Can now retrieve weather history from city IDs
    owm.weather_history_at_id(5128581)
  • Can now do toponyms to city IDs conversions using a registry
    registry = owm.city_id_registry()
    registry.id_for("New York,US")  # 5128581
  • Added more human-friendly utilities in Historian and timeutils modules
    Historian.max_temperature()
    Historian.max_humidity()
    Historian.max_pressure()
    Historian.max_rain()
    Historian.min_temperature()
    Historian.min_humidity()
    Historian.min_pressure()
    Historian.min_rain()
    Historian.average_temperature()
    Historian.average_humidity()
    Historian.average_pressure()
    Historian.average_rain()

    timeutils.next_week()
    timeutils.last_week()
    timeutils.next_hour()
    timeutils.last_hour()
  • Now checking code coverage via coveralls.io

Older Releases

Release 1.2.0

  • Ported to Python 3 while maintaining Python 2.7+ compatibility
  • Python 2.6 is now unsupported (please update to 2.7)
  • Bug fixes

Release 1.0.0

  • Users can inject configuration when instantiating the library
  • Code is now compliant to PEP-8 guidelines
  • Added XMLNS support to printed XML
  • Refactoring of low-level utility functions
  • Bug fixes