Skip to main content

A simple Python API data from openuv.io

Project description

☀️ pyopenuv: A simple Python API for data from openuv.io

CI PyPI Version License Code Coverage Maintainability

Buy Me A Coffee

pyopenuv is a simple Python library for retrieving UV-related information from openuv.io.

Installation

pip install pyopenuv

Python Versions

pyopenuv is currently supported on:

  • Python 3.10
  • Python 3.11
  • Python 3.12

API Key

You can get an API key from the OpenUV console.

Usage

import asyncio

from pyopenuv import Client
from pyopenuv.errors import OpenUvError


async def main():
    client = Client(
        "<OPENUV_API_KEY>", "<LATITUDE>", "<LONGITUDE>", altitude="<ALTITUDE>"
    )

    try:
        # Get the current status of the OpenUV API:
        print(await client.api_status())
        # >>> True

        # Get current UV info:
        print(await client.uv_index())
        # >>> { "result": { ... } }

        # Get forecasted UV info:
        print(await client.uv_forecast())
        # >>> { "result": { ... } }

        # Get UV protection window:
        print(await client.uv_protection_window())
        # >>> { "result": { ... } }

        # Get API usage info/statistics:
        print(await client.api_statistics())
        # >>> { "result": { ... } }
    except OpenUvError as err:
        print(f"There was an error: {err}")


asyncio.run(main())

Checking API Status Before Requests

If you would prefer to not call api_status manually, you can configure the Client object to automatically check the status of the OpenUV API before executing any of the API methods—simply pass the check_status_before_request parameter:

import asyncio

from pyopenuv import Client
from pyopenuv.errors import ApiUnavailableError, OpenUvError


async def main():
    client = Client(
        "<OPENUV_API_KEY>",
        "<LATITUDE>",
        "<LONGITUDE>",
        altitude="<ALTITUDE>",
        check_status_before_request=True,
    )

    try:
        print(await client.uv_index())
    except ApiUnavailableError:
        print("The API is unavailable")
    except OpenUvError as err:
        print(f"There was an error: {err}")


asyncio.run(main())

Connection Pooling

By default, the library creates a new connection to OpenUV with each coroutine. If you are calling a large number of coroutines (or merely want to squeeze out every second of runtime savings possible), an aiohttp ClientSession can be used for connection pooling:

import asyncio

from aiohttp import ClientSession
from pyopenuv import Client
from pyopenuv.errors import OpenUvError


async def main():
    async with ClientSession() as session:
        client = Client(
            "<OPENUV_API_KEY>",
            "<LATITUDE>",
            "<LONGITUDE>",
            altitude="<ALTITUDE>",
            session=session,
        )

        try:
            print(await client.uv_index())
        except OpenUvError as err:
            print(f"There was an error: {err}")


asyncio.run(main())

Contributing

Thanks to all of our contributors so far!

  1. Check for open features/bugs or initiate a discussion on one.
  2. Fork the repository.
  3. (optional, but highly recommended) Create a virtual environment: python3 -m venv .venv
  4. (optional, but highly recommended) Enter the virtual environment: source ./.venv/bin/activate
  5. Install the dev environment: script/setup
  6. Code your new feature or bug fix on a new branch.
  7. Write tests that cover your new functionality.
  8. Run tests and ensure 100% code coverage: poetry run pytest --cov pyopenuv tests
  9. Update README.md with any new documentation.
  10. Submit a pull request!

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

pyopenuv-2023.12.0.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

pyopenuv-2023.12.0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file pyopenuv-2023.12.0.tar.gz.

File metadata

  • Download URL: pyopenuv-2023.12.0.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.1 Linux/6.2.0-1018-azure

File hashes

Hashes for pyopenuv-2023.12.0.tar.gz
Algorithm Hash digest
SHA256 7648af6453ec336d86be719606ae40d9950093fe9f240017a26aa39d0f612d94
MD5 729aa1ce333cc22c22112ff6714d50d1
BLAKE2b-256 fd0c608d18ba56b88b7a34dca1579e52e71d76a98a93ab34076ee501cc199f72

See more details on using hashes here.

File details

Details for the file pyopenuv-2023.12.0-py3-none-any.whl.

File metadata

  • Download URL: pyopenuv-2023.12.0-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.1 Linux/6.2.0-1018-azure

File hashes

Hashes for pyopenuv-2023.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eedda9a2f6960392b52f4e3456d183f226457c4984983b36c0b65ab67e0dcd45
MD5 5f9d2a81111b804958a6362c13c20dc8
BLAKE2b-256 1edb66b1557a0213ff0659a9d764e394c024415e9d7a22c85868a70f33af8254

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