Various Helper Tools to make working with azure functions easier
Project description
🎷 FuncTown 🎷
FuncTown
is a python library that is designed to make your life with Azure Functions
easier.
The core features of FuncTown
are:
- Error handling - automatically handle errors and return a response to the user
- Debugging - Set debug flags that automatically return logs and traces as part of error responses from your function
- JWT token validation - automatically validate JWT tokens and provide the user information
- Request argument parsing - automatically parse arguments from the
HttpRequest
and provide them to your function - Metrics - Handle connections to Application Insights and gives you easy to use metrics objects
- Logging, Tracing & Events - Log your functions data directly into Application Insights
For detailed features see the docs.
Getting Started
You can install FuncTown
using pip
:
pip install functown
Note that some dependencies are hidden behind sub-packages (e.g.
functown[jwt]
for JWT token validation).
Almost all functionality of FuncTown
is provided through decorators.
If you want to add error handling to your function:
from logging import Logger
from functown import ErrorHandler
@ErrorHandler(debug=True, enable_logger=True)
def main(req: func.HttpRequest, logger: Logger, **kwargs) -> func.HttpResponse:
logger.info('Python HTTP trigger function processed a request.')
# ...
# exception will be caught and handled by the decorator (returning a 500)
raise ValueError("something went wrong")
return func.HttpResponse("success", status_code=200)
Note: Decorators might pass down additional arguments to your function, so it is generally a good idea to modify your function signature to accept these arguments (see docs for more information) and add a
**kwargs
to the end.
Decorators are also stackable, so we could parse function arguments and handle a JWT Token in the same function:
from functown import ArgsHandler, RequestArgHandler, AuthHandler
from functown.auth import Token
@ArgsHandler()
@AuthHandler(scopes=["user.read"])
def main(
req: func.HttpRequest, args: RequestArgHandler, token: Token
) -> func.HttpResponse:
# retrieve some arguments
data = args.get_body_query("data_name", required=True, allowed=["foo", "bar"])
switch = args.get_body("bool_name", map_fct='bool')
file = args.get_file('file_name', required=True)
# check the user id
user_id = token.user_id
# ...
This would also directly fail with a 400
message if there is no token provided,
or the token does not contain the required scopes.
Be sure to check out the docs for a full overview of all decorators.
If you want to test it on your own Azure Subscription, you can check out the example guide in the dev section of the docs.
🎷 Welcome to FuncTown! 🎷
Note
‼️ If you find this library helpful or have suggestions please let me know. Also any contributions are welcome! ‼️
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file functown-2.0.0.tar.gz
.
File metadata
- Download URL: functown-2.0.0.tar.gz
- Upload date:
- Size: 30.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aaaf2251c1d30b3ebffb0c8c230a2cd031361455540ab13926b9dc8604037c85 |
|
MD5 | a4de0a0d0490526a66edbd7ef8832482 |
|
BLAKE2b-256 | 68e50f9cc15301c98e702868e9b1f28be0b04c89c85f0f73bc1388c26048bf84 |
File details
Details for the file functown-2.0.0-py3-none-any.whl
.
File metadata
- Download URL: functown-2.0.0-py3-none-any.whl
- Upload date:
- Size: 40.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8bd21da0b649b6a1be2094b89c77441b6e7c6b0222b6da1e654fdda0d238a354 |
|
MD5 | 23b08a362047b5f9a7d660716a4e66b9 |
|
BLAKE2b-256 | f53ae49a227c96dc4e741a66170a8ea2fbaf23a5d5bba6695fff5425c17f6893 |