-
Notifications
You must be signed in to change notification settings - Fork 175
Changelog
- Bugfixes:
- Minutely rain data on OneCall calls were not read by PyOWM
- Fixed bugs in code recipes
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
andexclude
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
- OneCall calls now support
-
Bugfixes:
- tons on the documentation
- removed dependency version pinning on
PySocks
- patched wrong subdomains for paid API calls
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
- dict configuration
- added support for OneCall endpoints
- renamed a few weather forecast functions
- dropped old OWM history retrieval features as today they're usable only with OWM paid plans
- renamed all "Java-style" getter methods (eg.
get_temperature
) so to allow Pythonic access to object attributes - added HTTP/SOCKS proxies support
- dropped caches: pyowm won't feature any caching mechanism, that shall be done on the client code
- added timezone to Weather objects
- added more units of measurement for winds
- dropped XML schemas and XML dumps for entities
- dropped JSON dumps for entities: only Python dict dumps are now in place
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
- all entities now have dunder methods:
__repr__
,from_dict
,to_dict
- added code recipes and corresponding integration tests
- documented PyOWM 2 maintenance timeline
Bugfixes
- on CityIDRegistyr now US cities have their actual US state attached and are therefore more easily searchable
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
Notably, introducing support for Agro API free features!
-
New features:
- Support for editing polygons (Agro API)
- Support for current soil data (Agro API)
- Support for satellite imagery search, download and statistics (Agro API)
- Support for searching current weather on cities inside a bounding box via the new
owm25.weather_at_stations_in_bbox
function - Now it is possible to download Map Tiles provided by OpenWeatherMap using the new dedicated
pyowm.tiles.tile_manager.TileManager
client
-
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
: fromgeojson>=2.3.0,<2.4
togeojson>=2.3.0,<3
- fixed wrong object to JSON dumping when calling
-
Security:
- upgraded version for dependencies
requests
andurllib3
as known security issues were raised on them
- upgraded version for dependencies
-
Python Versions Support:
- dropped Python 3.3 support as it has reached end of life
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:
- Support for Weather Alerts
- Support for UV Index Forecast and History
- Logos for the project have been introduced! :)
- Support for Python 3.7
- Support for Pipfile
-
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
- issue on
-
Deprecations introduced:
- will be removed on 3.0.0:
OWM25.weather_at_stations_in_bbox
,OWM25.weather_at_station
- will be removed on 3.0.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, theirWeather
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
- In the moment
-
Bugfixes:
- issue on
city_id_registry
read behaviour on Windows - issue on parsing
Location
objects
- issue on
-
Deprecations introduced:
- will be removed on 3.0.0:
forecaster.Forecaster.will_have_sun
,forecaster.Forecaster.when_sun
andforecaster.Forecaster.will_be_sunny_at
- will be removed on 3.0.0:
-
New features:
- introduced support for Sulphur Dioxide (SO2) and Nitric Dioxide (NO2): new methods
owm25.no2index_around_coords
andowm25.so2index_around_coords
- implemented wind speed units specification (imperial/metric)
- introduced support for Sulphur Dioxide (SO2) and Nitric Dioxide (NO2): new methods
-
Bugfixes:
- updated weather history endpoint (was broken)
- fix bug about data parsing at
station_at_coords
andweather_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
andCODE_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
).
- OWM decided to change the syntax of API endpoint for fetching UV data and its format in a non-retrocompatible manner. This results into
- Bugfixes:
- 2.6.0 was not packaging resource files (eg. city IDs text files)
- New features:
- new method
owm25.weather_at_zip_code
- new methods
CityIDRegistry.ids_for
andCityIDRegistry.locations_for
- introduced deprecation decorators to mark methods that will be removed/modified in future versions
- Python 3.6 support
- new method
- Bugfixes:
- reverted a breaking interface change wrongly released on 2.5.0
- fixed
CityIDRegistry.id_for
andCityIDRegistry.location_for
methods -> oh man, they were so buggy! - fixed a bug on Unicode input handling
- 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
andwebapi25.cityidregistry.location_for
- will be modified on 3.0.0:
webapi25.owm25.get_version
andwebapi25.owm25.get_API_version
- will be removed on 3.0.0:
- New features:
- Air Pollution data API: Carbon Monoxide endpoint:
OWM25.coindex_around_coords
, Ozone endpoint:OWM25.ozone_around_coords
-
Ultraviolet data API:
OWM25.uvindex_around_coords
- Air Pollution data API: Carbon Monoxide endpoint:
- Bugfixes:
- fixed
OWM25.is_API_online
method (was not working) - more robust support for querying data on Unicode place names
- fixed
- Enhancements: now datetime objects across all library are timezone-aware
- PyOWM Slack team is live!
- 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
- datetime representation of reception/reference times in
- Updated city ID registry files
- Bugfix: no crashes when data about wind, snow and rain in JSON API responses are
null
- Bugfix: always send an API key to OWM API
- 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
- Fixed bug on visibility distance parsing
- 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
- 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
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