Skip to main content

Yandex Weather API with asyncio support and typings

Project description

YaWeather | Yandex Weather API

Python PyPI License: MIT

Build Status

☀️🌤🌧🌩❄️ Yandex Weather API wrapper with typings and asyncio support.

Docs: https://tech.yandex.com/weather/doc/dg/concepts/forecast-test-docpage (RU)

Get API Key: https://developer.tech.yandex.ru/services/18

⚠️ Warning: As a developer of this library, I recommend you not to use Yandex Weather API, here are some reasons:

  • Incomplete responses even for metropolises — you can have a look to all Optional fields that I had to use in models, that means you should add None checks before access literally to any attribute
  • Bad official documentation — for example, I really had to parse html code of doc pages just because tables copying was broken
  • Incomprehensible and big delay answers from support team
  • Few requests available — 50 per day on free rate and 5000 per day for one test month
  • Closed information about real prices that are accessible only via support team

Consider usage of OpenWeatherMap with 1 mln free requests every month and really good documentation which easy to understand and parse.

📝 Table of Contents


🎒 Installation

Just

pip install yaweather

🛠 Examples

Simple

from yaweather import UnitedKingdom, YaWeather

y = YaWeather(api_key='secret')
res = y.forecast(UnitedKingdom.London)

print(f'Now: {res.fact.temp} °C, feels like {res.fact.feels_like} °C')
print(f'Condition: {res.fact.condition}')

Output:

Now: 18.0 °C, feels like 15.0 °C
Condition: cloudy

Simple Async

import asyncio

from yaweather import Russia, YaWeatherAsync


async def main():
    async with YaWeatherAsync(api_key='secret') as y:
        res = await y.forecast(Russia.Moscow)

        print(f'Now: {res.fact.temp} °C, feels like {res.fact.feels_like} °C')
        print(f'Condition: {res.fact.condition}')


asyncio.run(main())

Output:

Now: 16.0 °C, feels like 16.0 °C
Condition: clear

Forecasts

from yaweather import UnitedStates, YaWeather

y = YaWeather(api_key='secret')

res = y.forecast(UnitedStates.NewYork)

for f in res.forecasts:
    day = f.parts.day_short
    print(f'{f.date} | {day.temp} °C, {day.condition}')

Output:

2020-07-30 | 32.0 °C, cloudy
2020-07-31 | 26.0 °C, light-rain
2020-08-01 | 28.0 °C, cloudy
2020-08-02 | 28.0 °C, rain
2020-08-03 | 28.0 °C, light-rain
2020-08-04 | 27.0 °C, rain
2020-08-05 | 29.0 °C, light-rain

Forecasts Async

import asyncio

from yaweather import China, YaWeatherAsync


async def main():
    async with YaWeatherAsync(api_key='secret') as y:
        res = await y.forecast(China.Beijing)

        for f in res.forecasts:
            day = f.parts.day_short
            print(f'{f.date} | {day.temp} °C, {day.condition}')


asyncio.run(main())

Output:

2020-07-31 | 34.0 °C, light-rain
2020-08-01 | 34.0 °C, cloudy
2020-08-02 | 30.0 °C, heavy-rain
2020-08-03 | 33.0 °C, cloudy
2020-08-04 | 35.0 °C, cloudy
2020-08-05 | 34.0 °C, light-rain
2020-08-06 | 31.0 °C, heavy-rain

📜 Manual

Methods

API have one method:

  • forecast — request for the forecast, return type: ResponseForecast

Types

This library uses pydantic for parsing API responses. You can see data models in yaweather/models.

In case of unsupported types

API results can change and the library may not parse the new result. So you can request «raw» dicts:

raw_dict = y.forecast_raw(UnitedKingdom.London)

👨🏻‍💻 Author

Ramzan Bekbulatov:

💬 Contributing

Contributions, issues and feature requests are welcome!

📝 License

This project is MIT licensed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yaweather-1.3.0.tar.gz (30.1 kB view details)

Uploaded Source

Built Distribution

yaweather-1.3.0-py3-none-any.whl (29.4 kB view details)

Uploaded Python 3

File details

Details for the file yaweather-1.3.0.tar.gz.

File metadata

  • Download URL: yaweather-1.3.0.tar.gz
  • Upload date:
  • Size: 30.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for yaweather-1.3.0.tar.gz
Algorithm Hash digest
SHA256 0ebf2e463deb7c5706156a68dee40aaa2605a34eaf278c8ee876c14fd6efc73c
MD5 5a3bf88a9e6275af9610472bfe9173db
BLAKE2b-256 96e71fd2bc814145e686c62e6e1caa6ce1389ab7bae972f619ca10f4117ebdb8

See more details on using hashes here.

Provenance

The following attestation bundles were made for yaweather-1.3.0.tar.gz:

Publisher: pythonpublish.yml on uburuntu/yaweather

Attestations:

File details

Details for the file yaweather-1.3.0-py3-none-any.whl.

File metadata

  • Download URL: yaweather-1.3.0-py3-none-any.whl
  • Upload date:
  • Size: 29.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for yaweather-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 580be01f9525e7e433e212e5edd4b781ebf34e95f96f9b9d22b29091b492731d
MD5 6e0dc4e0ffd6f019901f395100dfdf5c
BLAKE2b-256 58b3192e80e4182990acdd7978770a78d7ee6bf3ff252a5038c60c5c82a8594c

See more details on using hashes here.

Provenance

The following attestation bundles were made for yaweather-1.3.0-py3-none-any.whl:

Publisher: pythonpublish.yml on uburuntu/yaweather

Attestations:

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page