A Python wrapper around the OpenWeatherMap web API

Overview

logo

PyOWM

A Python wrapper around OpenWeatherMap web APIs

PyPI version PyPI - Downloads
PyPI - Python Version
Latest Release Documentation Build Status Coverage Status
Buy Me A Coffee Say Thanks!

What is it?

PyOWM is a client Python wrapper library for OpenWeatherMap (OWM) web APIs. It allows quick and easy consumption of OWM data from Python applications via a simple object model and in a human-friendly fashion.

PyOWM runs on Python 3.7+

Former Dark Sky API users: you can can use PyOWM to get OpenWeatherMap's OneCall API data as an easy replacement to Dark Sky

What kind of data can I get with PyOWM ?

With PyOWM you can integrate into your code any of the following OpenWeatherMap web APIs:

  • Weather API v2.5 + OneCall API, providing current weather data, weather forecasts, weather history
  • Agro API v1.0, providing soil data and satellite imagery search and download
  • Air Pollution API v3.0, providing data about CO, O3, NO2 and SO2
  • UV Index API v3.0, providing data about Ultraviolet exposition
  • Stations API v3.0, allowing to create and manage meteostation and publish local weather measurements
  • Weather Alerts API v3.0, allowing to set triggers on weather conditions and areas and poll for spawned alerts
  • Image tiles for several map layers provided by OWM

Get started

API key

As OpenWeatherMap APIs need a valid API key to allow responses, PyOWM won't work if you don't provide one. This stands for both free and paid (pro) subscription plans. You can signup for a free API key on the OWM website Please notice that the free API subscription plan is subject to requests throttling.

Example

With a free OWM API Key:

from pyowm import OWM
from pyowm.utils import config
from pyowm.utils import timestamps

# ---------- FREE API KEY examples ---------------------

owm = OWM('your free OWM API key')
mgr = owm.weather_manager()


# Search for current weather in London (Great Britain) and get details
observation = mgr.weather_at_place('London,GB')
w = observation.weather

w.detailed_status         # 'clouds'
w.wind()                  # {'speed': 4.6, 'deg': 330}
w.humidity                # 87
w.temperature('celsius')  # {'temp_max': 10.5, 'temp': 9.7, 'temp_min': 9.0}
w.rain                    # {}
w.heat_index              # None
w.clouds                  # 75

# Will it be clear tomorrow at this time in Milan (Italy) ?
forecast = mgr.forecast_at_place('Milan,IT', 'daily')
answer = forecast.will_be_clear_at(timestamps.tomorrow())

# ---------- PAID API KEY example ---------------------

config_dict = config.get_default_config_for_subscription_type('professional')
owm = OWM('your paid OWM API key', config_dict)

# What's the current humidity in Berlin (Germany) ?
one_call_object = mgr.one_call(lat=52.5244, lon=13.4105)
one_call_object.current.humidity

Installation

Install with pip for your ease:

$ pip install pyowm

There are alternatives: setuptools, Windows installers and common Linux package managers such as Yaourt (Arch Linux) YaST/Zypper (OpenSuse) (please refer to the documentation for more detail)

Eager to fetch the very latest updates to PyOWM? Install the development trunk (which might be unstable). Eg on Linux:

$ git clone https://github.com/csparpa/pyowm.git
$ cd pyowm && git checkout develop
$ pip install -r requirements.txt && python setup.py install

Documentation

The library software API documentation is available on Read the Docs.

The Code recipes section comes in handy!

Help - PyOWM is giving me errors!

Please read the FAQ section of the documentation before filing a new issue on GitHub!

There are many common issues, therefore a fix for your issue might come easier than you think

Community & Contributing

Here are some cool projects that use PyOWM

Join the PyOWM public Slack team by signing up here

Contributors (coding, testing, packaging, reporting issues) are welcome! See the the official documentation website for details or the CONTRIBUTING.md file for a quick primer.

License

MIT license

Comments
  • The API worhs for weather_at_place() but not for forecast_at_place()

    The API worhs for weather_at_place() but not for forecast_at_place()

    The API works with:

    owm = pyowm.OWM(owm_token)
    mgr = owm.weather_manager()
    obs = mgr.weather_at_place('Roma')
    

    But if I use:

    daily_forecast = mgr.forecast_at_place('Roma', 'daily').forecast

    It give me this error:

    raise exceptions.UnauthorizedError('Invalid API Key provided')
    pyowm.commons.exceptions.UnauthorizedError: Invalid API Key provided
    

    With only the weather_at_place() code it works but if I add at the same program the forecast_at_place() it gives me this error.

    potential-bug 
    opened by EightFawn 21
  • AttributeError: 'OWM' object has no attribute 'weather_at_place'`

    AttributeError: 'OWM' object has no attribute 'weather_at_place'`

    GitHub actions returned this error code, after hundreds of successful runs. Run python main.py Traceback (most recent call last): File "main.py", line 68, in <module> csvArrIn = getWeatherInfo(city) File "main.py", line 35, in getWeatherInfo obs = owm.weather_at_place(city+',CZ') AttributeError: 'OWM' object has no attribute 'weather_at_place'

    opened by filiptronicek 19
  • Pip install pyowm 2.6.0 does not seem to install registry files

    Pip install pyowm 2.6.0 does not seem to install registry files

    • Python 3.5.2+
    • PyOWM 2.6.0
    • Linux 4.8.0-34-generic Ubuntu

    pip installed pyowm, really excited to test these new registries (thanks!). But I got this:

    File "/usr/local/lib/python3.5/dist-packages/pkg_resources/__init__.py", line 1569, in get_resource_stream
        return open(self._fn(self.module_path, resource_name), 'rb')
    FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/lib/python3.5/dist-packages/pyowm/webapi25/cityids/103-108.txt'
    

    I got no result from locate 103-108.txt

    and for ll /usr/local/lib/python3.5/dist-packages/pyowm/webapi25/cityids I got:

    drwxr-sr-x 3 root staff 4096 Jan 30 22:38 ./
    drwxr-sr-x 5 root staff 4096 Jan 30 22:38 ../
    -rw-r--r-- 1 root staff    1 Jan 30 22:38 __init__.py
    drwxr-sr-x 2 root staff 4096 Jan 30 22:38 __pycache__/
    

    So then I tried pip install --upgrade --no-deps --force-reinstall pyowm

    Collecting pyowm
    Installing collected packages: pyowm
      Found existing installation: pyowm 2.6.0
        Uninstalling pyowm-2.6.0:
          Successfully uninstalled pyowm-2.6.0
    Successfully installed pyowm-2.6.0
    

    But still no luck. In the scripts dir I see https://github.com/csparpa/pyowm/blob/master/scripts/generate_city_id_files.py but this doesn't appear to be in the pip install, so I downloaded and ran it but got

      File "generate_city_id_files.py", line 25
        print 'Downloading file '+city_list_url+' ...'
                                ^
    SyntaxError: Missing parentheses in call to 'print'
    

    Meaning it's not python 3.5 compatible - I don't really want to install python 2 if I don't need to, but is this the only way?

    My apologies if I am being stupid here and missing something and I do appreciate all your work on this.

    bug 
    opened by ghost 18
  • Py3 OSX

    Py3 OSX "Module not found"

    The installation makes no trouble i get the success message for Py2 and 3. When trying to import them Py2 makes no trouble but Py3 says ModuleNotFoundError: No module named 'pyowm'. Installed via pip2 install pyowm and pip3 install pyowm. I also tried pip install git+https://github.com/csparpa/[email protected] but the problem still remains.

    (I hade no problem installing it on my Windows.)

    opened by BartzLeon 14
  • Cannot get city info for any US city

    Cannot get city info for any US city

    Hi, I'm trying to use the following function to get the city info:

    list_of_locations = city_registry.locations_for("New York", country="US")
    

    It returns the empty list. The following function returns non-empty list:

    list_of_locations = city_registry.locations_for("Paris", country="FR")
    

    What could be the reason for the empty list in the first case? I tried many different US cities and all of them return empty list. Thanks!

    enhancement refactoring 
    opened by project-owner 11
  • Support One Call API

    Support One Call API

    Overview

    In the dusk of the popular Dark Sky API, it might be worth considering to add support for the One Call API, which is considered the alternative.

    Reference

    Migration guide

    https://openweathermap.org/darksky-openweather?gclid=Cj0KCQjw-Mr0BRDyARIsAKEFbefcb00d_wztgHKOYj4HYEF1fLl-DnE0Yek9vWQ_bxptj2PcYLSNhDwaAu8REALw_wcB

    API docs

    https://openweathermap.org/api/one-call-api

    new feature requested-by-users 
    opened by difelice 9
  • Fix incorrect name for city New London [id:4839416].

    Fix incorrect name for city New London [id:4839416].

    In the old cities.db.bz2 file the record for "New London" [id: 4839416] had the name set incorrectly to "New Londonhttps://www.geonames.org/1524325/ekibastuz.html#", as seen in this screenshot:

    image

    In the updated cities.db.bz2 file this has been corrected as shown here:

    image

    bug 
    opened by Crozzers 8
  • Two types of weather condition icons

    Two types of weather condition icons

    https://openweathermap.org/weather-conditions shows two different types of icons, with the base URI being different: http://openweathermap.org/img/wn/ vs http://openweathermap.org/img/w/. PyOWM uses the latter right now: https://github.com/csparpa/pyowm/blob/e35446ebe081c0b14a25dca0f7f8105836745b04/pyowm/weatherapi25/uris.py#L18 Is there a documented reason for there being two different types? And would it be possible to choose which type to use with Weather.weather_icon_url? In my opinion, the /wn/ versions are cleaner and clearer in most cases.

    question 
    opened by Harmon758 8
  • AgroMonitor API

    AgroMonitor API

    Not sure if it is a current issue with AgroMonitor or OpenWeatherMap in general but I keep on getting a time out error when trying to download satellite imagery as in the example in the docs.

    https://pyowm.readthedocs.io/en/latest/usage-examples-v2/agro-api-usage-examples.html#operations-summary

    It seems that I am capable of getting one image without the error though when I then go to get the stats or view the image it's blank as well. Checking the length of the returned results shows that there should be 5 images available for the time frame that I searched in my polygon.

    Tested on Win7 in a JupyterLab environment, Python 3.6, also sent a request to OWM help desk info just to check if there's an issue on their end.

    potential-bug 
    opened by geofbaum 8
  • Unauthorized error when using free api key for daily_forecast

    Unauthorized error when using free api key for daily_forecast

    Hi Claudio,

    Thank you for maintaining this library. I am a beginner trying to get daily forecast information from OWM. According to the website it is possible to get 5 days/3 hour forecast with the free API, however I get an error when I use your daily_forecast method. I know my API key is working because I am able to get current condition information. I am using Python 3.5, Windows 10, Jupyter Notebook. Below is a sample code that produces this error. Any suggestions for how to get daily forecast info would be greatly appreciated. I am only looking for the forecast for today and tomorrow. Thanks.

    Code: from pyowm import OWM API_key = 'I use my free API key' location = 'Seattle, US' owm = OWM(API_key) fc = owm.daily_forecast(location)

    Error: UnauthorizedError: Your API subscription level does not allow to perform this operation Reason: Invalid API key

    potential-bug 
    opened by gsimiao 8
  • [Feature suggestion] Change wind speed unit

    [Feature suggestion] Change wind speed unit

    While get_temperature()supports unit parameter, get_wind() does not support it. OWM has wind speed unit available as Imperial (miles/hour) or Metric (meter/sec) unit.

    Suggested implementation: w.get_wind(unit = 'Imperial') or
    w.get_wind(unit = 'miles/hour') or
    w.get_wind('Imperial')

    References: https://openweathermap.org/weather-data

    enhancement contributor-friendly 
    opened by feliciakri 8
  • Bump certifi from 2021.10.8 to 2022.12.7

    Bump certifi from 2021.10.8 to 2022.12.7

    Bumps certifi from 2021.10.8 to 2022.12.7.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • openweathermap deprecating 2.5 APIs

    openweathermap deprecating 2.5 APIs

    It looks like open weather map are progressing the deprecation of the 2.5 API set used by pyowm. This is the response I got from them on a support ticket about access problems with a new API key: "In general One Call 1.0 (2.5) has been replaced by 3.0. That is the reason for getting the 401 error."

    3.3.0 still uses the 2.5 API set as its base URL for One Call APIs (compared to 3.0 for other APIs).

    Are there any plans to adopt the 3.0 One Call APIs?

    opened by KeithB 12
  • Having problems with SQLite3 connection

    Having problems with SQLite3 connection

    Hello there! I have been trying to use the module for a personal project, but I haven't been able to get it to work, I think this is probably a misconfiguration from my environment from what I have been able to see online, but I still want to ask here so maybe I can get some help, as I haven't been able to find anything that can solve this. Of course, I have tried to do the obvious things like reinstalling everything back again, but still nothing changes. I am able to import the package all fine, but whenever I try to use it, it crashes showing the following message:

    Traceback (most recent call last):
      File "C:\Users\Juan\Desktop\analisis-meteorologico\src\main.py", line 19, in <module>
        reg = owm.city_id_registry()
      File "C:\Users\Juan\AppData\Local\Programs\Python\Python310\lib\site-packages\pyowm\owm.py", line 96, in city_id_registry
        return cityidregistry.CityIDRegistry.get_instance()
      File "C:\Users\Juan\AppData\Local\Programs\Python\Python310\lib\site-packages\pyowm\commons\cityidregistry.py", line 29, in get_instance
        return CityIDRegistry(CITY_ID_DB_PATH)
      File "C:\Users\Juan\AppData\Local\Programs\Python\Python310\lib\site-packages\pyowm\commons\cityidregistry.py", line 21, in __init__
        self.connection = self.__decompress_db_to_memory(sqlite_db_path)
      File "C:\Users\Juan\AppData\Local\Programs\Python\Python310\lib\site-packages\pyowm\commons\cityidregistry.py", line 52, in __decompress_db_to_memory
        src_conn = sqlite3.connect(tmpf_name)
    sqlite3.OperationalError: unable to open database file
    

    Thanks!

    opened by juanpuerto23 5
  • Understand why some tests fail on Travis CI but pass locally

    Understand why some tests fail on Travis CI but pass locally

    Unit tests failing on Travis CI: https://app.travis-ci.com/github/csparpa/pyowm/builds/249771377

    Branch: develop Module: tests.unit.airpollutionapi30.test_airpollution_client.TestAirPollutionHttpClient

    # extract from Travis CI build log
    
    ======================================================================
    FAIL: test_get_coi (tests.unit.airpollutionapi30.test_airpollution_client.TestAirPollutionHttpClient)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/home/travis/build/[secure]/pyowm/tests/unit/airpollutionapi30/test_airpollution_client.py", line 42, in test_get_coi
        self.assertEqual(expected_url, result)
    AssertionError: 'co/43.75,8.25/current.json' != {'time': '2016-10-01T13:07:01Z', 'locatio[342 chars]07}]}
    ======================================================================
    FAIL: test_get_o3 (tests.unit.airpollutionapi30.test_airpollution_client.TestAirPollutionHttpClient)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/home/travis/build/[secure]/pyowm/tests/unit/airpollutionapi30/test_airpollution_client.py", line 93, in test_get_o3
        self.assertEqual(expected_url, result)
    AssertionError: 'o3/43.75,8.25/current.json' != {'time': '2016-10-06T13:32:53Z', 'locatio[68 chars]0781}
    
    

    The same tests pass locally, with all Python versions

    It looks like mocking is not working properly on Travis CI and this happens only on that Python test module.

    enhancement 
    opened by csparpa 0
  • Strange behaviour during iterative requests

    Strange behaviour during iterative requests

    I have been having trouble with pyowm not returning the most recent weather data when the request is inside a function definition or a list iteration. (I apologise if my terminology here is incorrect). It seems to return the result for a request from the first time that request was made in that specific way. I have refined the code to show the specific bug:

    owm = OWM('removed key') mgr = owm.weather_manager() placesIDs = ['removed list of places']

    wobs = mgr.weather_at_id(placesIDs[0]) wweather = wobs.weather wwind = wweather.wind() print(wobs) print(wweather) print(wwind)

    listOfObservations = mgr.weather_at_ids(placesIDs) weatherList = [obs.weather for obs in listOfObservations] windList = [weather.wind() for weather in weatherList] print(listOfObservations[0]) print(weatherList[0]) print(windList[0])

    The two lumps of code should return the exact same data. However they do not. This is the print out:

    <pyowm.weatherapi25.observation.Observation - reception_time=2022-04-01 17:04:14+00:00> <pyowm.weatherapi25.weather.Weather - reference_time=2022-04-01 17:04:13+00:00, status=clouds, detailed_status=broken clouds> {'speed': 2.84, 'deg': 313, 'gust': 5.77} <pyowm.weatherapi25.observation.Observation - reception_time=2022-04-01 17:04:14+00:00> <pyowm.weatherapi25.weather.Weather - reference_time=2022-04-01 16:09:47+00:00, status=clouds, detailed_status=broken clouds> {'speed': 3.11, 'deg': 328}

    The weather managers are the same but the .weathers are not and the wind data is different. This is not limited to wind but as a bonus I have noticed that the gust information is stripped from the data created through the iterative method.

    This behviour is preserved on Thonny on windows and Raspberry Pi and directly on python3 on Raspberry Pi.

    Hopefully I haven't wasted your time!

    opened by mrneilbutler 3
Releases(3.3.0)
  • 3.3.0(Feb 14, 2022)

    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

    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

    Source code(tar.gz)
    Source code(zip)
  • 3.2.0(Feb 24, 2021)

    • 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
    Source code(tar.gz)
    Source code(zip)
  • 3.1.1bis(Oct 2, 2020)

  • 3.1.0(Oct 1, 2020)

    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
    Source code(tar.gz)
    Source code(zip)
  • 3.0.0(May 30, 2020)

    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
    Source code(tar.gz)
    Source code(zip)
  • 2.10(Dec 21, 2018)

    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
    Source code(tar.gz)
    Source code(zip)
  • freeze-2.9-LTS(Jan 19, 2020)

  • 2.9.0(Jul 28, 2018)

    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
    Source code(tar.gz)
    Source code(zip)
  • 2.8.0(Dec 23, 2017)

    • 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
    Source code(tar.gz)
    Source code(zip)
  • 2.7.1(Jun 30, 2017)

  • 2.7.0(Jun 30, 2017)

    • 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).
    Source code(tar.gz)
    Source code(zip)
  • 2.6.1(Jan 31, 2017)

  • 2.6.0(Dec 21, 2016)

    • 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
    Source code(tar.gz)
    Source code(zip)
  • 2.5.0(Oct 10, 2016)

    • New features:
      • Air Pollution data API endpoints: OWM25.coindex_around_coords, OWM25.ozone_around_coords
      • UV data endpoint: OWM25.uvindex_around_coords
    • 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!
    Source code(tar.gz)
    Source code(zip)
  • 2.4.0(Aug 29, 2016)

    • 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
    Source code(tar.gz)
    Source code(zip)
  • 2.3.2(Jul 6, 2016)

  • 2.3.1(Mar 18, 2016)

  • 2.3.0(Jan 2, 2016)

    • New feature: can now specify whether 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
    Source code(tar.gz)
    Source code(zip)
  • 2.2.1(Jun 5, 2015)

  • 2.2(Feb 11, 2015)

    • New entity Station: represents a meteostation recording weather data
    • New feature: search for meteostations around a lat/lon couple
    • New feature: retrieve weather currently measured by a meteostation
    • New feature: retrieve weathers currently measured by meteostations within a bounding box
    • Can now query for weather forecasts based on geographical coordinates
    • Can now query for weather forecasts based on city ID
    • Support querying of extreme weather conditions in Forecaster convenience methods
    • Enriched Weather class with methods to support data fields retrieved from meteostations
    • Now supporting Unicode strings as parameters for all PyOWM public methods
    • Increased test coverage
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(Aug 28, 2014)

    • Renaming of some functions in PyOWM public interface (breaking change!)
    • Multilingual support for weather data descriptions
    • Can now retrieve current weather from city IDs
    • Can now retrieve weather history from city IDs
    • Can now do toponyms to city IDs conversions using a registry
    • Added more human-friendly utilities in Historian and timeutils modules
    • Now checking code coverage via coveralls.io
    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(Mar 13, 2014)

    Changelog versus release 1.0.0

    • Ported to Python 3 while maintaining Python 2.7+ compatibility
    • Officialy stated Python 2.6 lack of support (please update to 2.7)
    • Added CONTRIBUTORS.md file for credits
    • Extended Travis-CI builders to test the codebase out against Python 3.2 and 3.3 versions
    • Bug fixes
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Feb 28, 2014)

    Changelog versus 0.4.1 release:

    • 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
    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Dec 10, 2013)

Owner
Claudio Sparpaglione
Software Architect on his road to perfection. Pythonista, lover of green, just enough geek :)
Claudio Sparpaglione
A way to export your saved reddit posts to a Notion table.

reddit-saved-to-notion A way to export your saved reddit posts and comments to a Notion table.Uses notion-sdk-py and praw for interacting with Notion

19 Sep 12, 2022
AUDD IS MUSIC RECOGNITION API

AUDD IS MUSIC RECOGNITION API

Abdimk 1 Dec 15, 2021
An Open Source ALL-In-One Telegram RoBot, that can do lot of things.

An Open Source ALL-In-One Telegram RoBot, that can do lot of things.

JOBIN 0 Dec 01, 2021
LoL 台版10周年活動自動輸入邀請碼

LoLTW_10Year_88Event LoLTW 8.8 周年慶 邀請碼自動輸入 設定 在 LoLTW_10Year_88Evnet.exe 的位置建立一個檔案 .env,內容如下 Bahamut_Discussion = https://forum.gamer.com.tw/C.php?bsn

古丁丁 5 Dec 13, 2021
This is a simple collection of instructions and scripts to accompany the computerphile video about mininet and openflow.

How to get going. This project should work on Linux or MacOS. I used Ubuntu 20.04 and provide some notes here. Note, this is certainly not intended as

Richard G. Clegg 70 Jan 02, 2023
Best Buy purchase bot

B3 Best-Buy-Bot. Written in Python NOTICE: Don't be a disgrace to society. Don't use this for any mass buying/reselling purposes. About B3 is a bot th

Dogey11 8 Aug 15, 2022
This is a TG Video Compress BoT. Product by BINARY Tech

🌀 Video Compressor Bot Product by BINARY Tech Deploy to Heroku The Hard Way virtualenv -p python3 VENV . ./VENV/bin/activate pip install -r requireme

1 Jan 04, 2022
A modular Telegram Python bot running on python3 with a sqlalchemy, redis, telethon.

GilbertAnimeBot A modular Telegram Python bot running on python3 with a sqlalchemy, redis, telethon. How to setup/deploy. Read these notes carefully b

Kishore 1 Jan 23, 2022
Attempting to create a framework for Discord Slash commands... yes

discord_slash.py Attempting to create a framework for Discord Slash commands... yes Installation pip install slashpy Documentation Coming soon™ Why is

AlexFlipnote 11 Mar 24, 2021
Asynchronous wrapper for wttr.in weather forecast.

aiopywttr Asynchronous wrapper for wttr.in weather forecast. Synchronous version here. Installation pip install aiopywttr Example This example prints

Almaz 4 Dec 24, 2022
Telegram bot that sends new offers from otomoto.pl

Telegram bot that sends new offers under certain filters from otomoto.pl How to use this bot? Install requirements with pip install -r requirements.tx

Mikhail Zanka 1 Feb 14, 2022
Its The Basic Commands Of Termux

Its The Basic Commands Of Termux

ANKIT KUMAR 1 Dec 27, 2021
🎵 RythmReloaded 🎵 A bot that can play music on Telegram Group and Channel Voice Chats

🎵 RythmReloaded 🎵 A bot that can play music on Telegram Group and Channel Voice Chats POWERED BY MARSHALX TGCALLS Available on telegram as @OptimusP

0 Nov 03, 2021
A simple script that loads and hot-reloads cogs when you save any changes

DiscordBot-HotReload A simple script that loads and hot-reloads cogs when you save any changes Usage @bot.event async def on_ready(): from HotRelo

2 Jan 14, 2022
A Telegram Bot That Provides Permanent Download Links For Sent Files.

FileStreamBot A Telegram bot to all media and documents files to web link . Report a Bug | Request Feature Demo Bot: 🍁 About This Bot : This bot will

Flux Inc. 1 Nov 02, 2021
A heraldry-related bot, designed for the Heraldry Community.

Heraldtron A heraldry-related bot, designed for the Heraldry Community. Requirements Python 3.9+ discord.py aiohttp (comes installed with discord.py)

1 Mar 31, 2022
Powerful Telegram Members Scraping and Adding Toolkit

🔥 Genisys V2.1 Powerful Telegram Members Scraping and Adding Toolkit 🔻 Features 🔺 ADDS IN BULK[by user id, not by username] Scrapes and adds to pub

The Cryptonian 16 Mar 01, 2022
Бот для мини-игры "Рабы" ("Рабство") ВКонтакте.

vk-slaves-bot Бот для мини-игры "Рабы" ("Рабство") ВК Группа в ВК, в ней публикуются новости и другая полезная информация. У группы есть беседа, в кот

Almaz 80 Dec 17, 2022
42-event-notifier - 42 Event notifier using 42API and Github Actions

42 Event Notifier 42서울 Agenda에 새로운 이벤트가 등록되면 알려드립니다! 현재는 Github Issue로 등록되므로 상단

6 May 16, 2022
Gorrabot is a bot made to automate checks and processes in the development process.

Gorrabot is a Gitlab bot made to automate checks and processes in the Faraday development. Features Check that the CHANGELOG is modified By default, m

Faraday 7 Dec 14, 2022