Skip to main content

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

Docker pulls 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

PYPI

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

Docker image

Please run next command to start async weather api via docker:

docker run -it -p 3000:5001 vyahello/async-weather-api:0.5.0 weather run --bind 0.0.0.0:5001 --mode prod --key <secret-key>

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)
...

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

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.5.0
    • Add official docker image
  • 0.4.2
    • Add manifest package installer file
  • 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

Release files for async-weather-api 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for async-weather-api 0.5.0
File Size Uploaded
async-weather-api-0.5.0.tar.gz 7.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for async-weather-api 0.5.0
File Interpreter ABI Platform
async_weather_api-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 18.8 kB

Release files / async-weather-api-0.5.0.tar.gz

Download URL async-weather-api-0.5.0.tar.gz
Size 7.8 kB
Tags Source
SHA-256 checksum
How to use checksums
99c1e22a5a9c5d3bf8083eef80e4243a554800fdbc6e41d3e3d94973932dc1ea
BLAKE2b-256 checksum
How to use checksums
e481a78037d7049ffdfbb19e25507d3ae25e2d4afa6391adfaaff2caa7bf21ef
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / async_weather_api-0.5.0-py3-none-any.whl

Download URL async_weather_api-0.5.0-py3-none-any.whl
Size 11.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3ac9ae7d2d60d4ebf05cd4890422652e175bca53d61c3b7b7ef0e0845684821f
BLAKE2b-256 checksum
How to use checksums
a1200926312b16751bf07d112a8632a19256f2c394179a205603315aa21773c4
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page