☀️ pyopenuv: A simple Python API for data from openuv.io
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!
- Check for open features/bugs or initiate a discussion on one.
- Fork the repository.
- (optional, but highly recommended) Create a virtual environment:
python3 -m venv .venv - (optional, but highly recommended) Enter the virtual environment:
source ./.venv/bin/activate - Install the dev environment:
script/setup - Code your new feature or bug fix on a new branch.
- Write tests that cover your new functionality.
- Run tests and ensure 100% code coverage:
poetry run pytest --cov pyopenuv tests - Update
README.mdwith any new documentation. - Submit a pull request!
Metadata
Release files for pyopenuv 2023.12.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyopenuv-2023.12.0.tar.gz | 6.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyopenuv-2023.12.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.4 kB
Release files / pyopenuv-2023.12.0.tar.gz
| Download URL | pyopenuv-2023.12.0.tar.gz |
|---|---|
| Size | 6.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7648af6453ec336d86be719606ae40d9950093fe9f240017a26aa39d0f612d94
|
|
BLAKE2b-256 checksum How to use checksums |
fd0c608d18ba56b88b7a34dca1579e52e71d76a98a93ab34076ee501cc199f72
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.7.1 CPython/3.12.1 Linux/6.2.0-1018-azure
|
Release files / pyopenuv-2023.12.0-py3-none-any.whl
| Download URL | pyopenuv-2023.12.0-py3-none-any.whl |
|---|---|
| Size | 6.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
eedda9a2f6960392b52f4e3456d183f226457c4984983b36c0b65ab67e0dcd45
|
|
BLAKE2b-256 checksum How to use checksums |
1edb66b1557a0213ff0659a9d764e394c024415e9d7a22c85868a70f33af8254
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.7.1 CPython/3.12.1 Linux/6.2.0-1018-azure
|