☀️ 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 | Provenance | Actions |
|---|---|---|---|---|
| pyopenuv-2023.12.0.tar.gz | 6.6 kB | Without provenance | Details for pyopenuv-2023.12.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pyopenuv-2023.12.0-py3-none-any.whl | Python 3 | none | any | Details for pyopenuv-2023.12.0-py3-none-any.whl |
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
|
Security for pyopenuv 2023.12.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.