Skip to main content

This project represents sample of asynchronous weather REST API that is build using **quart** (flask compatible API) python web microframework based on Asyncio

Project description

made-with-python Code style: black GitHub version Build Status Coverage Status

Forks Stars Issues GitHub watchers GitHub contributors

PyPI version shields.io PyPI pyversions License

Async weather API

This project represents sample of asynchronous weather REST API that is build using quart (flask compatible API) python web microframework based on Asyncio.

Tools

Usage

Please run following script to obtain latest package from PYPI:

 pip install async-weather-api

Then please execute instructions below to launch game from your environment:

import weather

weather.run(key="your-secret-key", bind="0.0.0.0:5001", debug=False)
Running on https://0.0.0.0:5001 (CTRL + C to quit)
...

Note key stands for API key from https://openweathermap.org

Endpoints

  • / - home page
      curl -X GET http://0.0.0.0:5001/   curl -X GET http://0.0.0.0:5001/index 
    
    Response: html page
  • /api/weather/{city}/{state}/{country} - current weather event
      curl -X GET http://0.0.0.0:5001/api/events/London/GB/GreatBritain
    
    Response: json object
    {"city":"London","country":"GreatBritain","name":"Jeff the player","state":"GB"}
    
  • /api/weather/{zip_code}/{country} - current weather in city
      curl -X GET http://0.0.0.0:5001/api/weather/97002/us
    
    Response: json object
    {"base":"stations","clouds":{"all":90},"cod":200,"coord":{"lat":45.23,"lon":-122.8},
    ...}
    
  • /api/sun/{zip_code}/{country} - current sunset/sunrise in city
      curl -X GET http://0.0.0.0:5001/sun/weather/97002/us
    
    Response: json object
    {"astronomical_twilight_begin":"04:03:49 PM","astronomical_twilight_end":"04:29:50 AM",
    ...}
    

Development notes

Run from source code

To be able to run source code please execute command below:

 python -m weather run --bind 0.0.0.0:5001 --mode prod --key your-secret-key
Running on https://0.0.0.0:5001 (CTRL + C to quit)
...

CI/CD

Project has Travis CI integration using .travis.yml file thus code analysis (black, mypy, pydocstyle, pylint, flake8) and unittests (pytest) will be run automatically after every made change to the repository.

To be able to run code analysis, please execute command below:

 ./analyse-code.sh

Also test-report.html will be generated after unittests execution.

Other than that, a fresh versioned package will be delivered on PYPI after new tag is created using pythonpublish.yml file.

Release notes

  • 0.4.1
    • Read requirements for PYPI build
  • 0.4.0
    • Introduce PYPI package
  • 0.3.0
    • Introduce asynchronous approach
  • 0.2.0
    • Introduce synchronous approach
  • 0.1.0
    • Distribute initial project version

Meta

Author – Volodymyr Yahello

Distributed under the MIT license. See LICENSE for more information.

You can reach out me at:

Contributing

  1. clone the repository
  2. configure Git for the first time after cloning with your name and email
  3. pip install -r requirements.txt to install all project dependencies
  4. pip install -r requirements-dev.txt to install all development project dependencies

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

async-weather-api-0.4.1.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

async_weather_api-0.4.1-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file async-weather-api-0.4.1.tar.gz.

File metadata

  • Download URL: async-weather-api-0.4.1.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for async-weather-api-0.4.1.tar.gz
Algorithm Hash digest
SHA256 b1038de2997c9842c544650e4cd6dd4bcf82d24511ba5b32a904a1fa0e469d22
MD5 0573e4d76f65b7b963e10a16b274bfcb
BLAKE2b-256 f4e69030c6643b1fe7392d74379f0e43ea3007f18acd31cd5d39795df0d57eb3

See more details on using hashes here.

File details

Details for the file async_weather_api-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: async_weather_api-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.8.0

File hashes

Hashes for async_weather_api-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6e5d97bd07f3a459bd43805308b69c82b5dcad659a974eaa013ba9994290b349
MD5 3c8ec08d242c4a8ed37c67a965adbafe
BLAKE2b-256 0cd633bedc2ca6bc481222b616078b196aed258902063ef5e570a65f715ef97a

See more details on using hashes here.

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