From c40a95e9bc5f919f23fe823f0239631a2e6021e5 Mon Sep 17 00:00:00 2001 From: George O <16269580+Ge0rg3@users.noreply.github.com> Date: Fri, 29 May 2026 12:56:17 +0100 Subject: [PATCH 1/2] Rewrite README and add AGENTS.md --- AGENTS.md | 130 ++++++++++ README.md | 731 +++++++++++++++++++----------------------------------- 2 files changed, 384 insertions(+), 477 deletions(-) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..b3bb290 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,130 @@ +# AGENTS.md + +Guidance for coding agents working in this repository. For user-facing usage docs, see +[README.md](README.md). + +## Project overview + +`flask-parameter-validation` is a Flask extension that validates route inputs declared as type +hints with `Parameter` defaults in the view signature, and generates OpenAPI 3.1 documentation +from the same declarations. It is a published PyPI package (`Flask-Parameter-Validation`). + +- Language: Python, supporting 3.9–3.13. +- Runtime dependencies: `Flask`, `flask[async]`, `python-dateutil`, `jsonschema`. +- Packaging: `setup.py` (setuptools). Version is the `version=` field there. +- License: MIT. + +## Repository layout + +``` +flask_parameter_validation/ # The package +├── __init__.py # Public API: ValidateParameters + parameter types +├── parameter_validation.py # @ValidateParameters decorator; input extraction + dispatch +├── docs_blueprint.py # /docs blueprint + OpenAPI / legacy-JSON generation +├── parameter_types/ # One module per input source +│ ├── parameter.py # Base Parameter class; core validation logic +│ ├── route.py query.py json.py form.py file.py +│ └── multi_source.py # MultiSource (accepts a value from several sources) +├── exceptions/exceptions.py # MissingInputError, InvalidParameterTypeError, +│ # ValidationError, ConfigurationError +├── templates/fpv_default_docs.html# HTML docs page rendered by the blueprint +└── test/ # Test suite (see below) +docs/ # Screenshots referenced by the README +setup.py # Package metadata and dependencies +tox.ini # flake8 / black line-length config +.github/workflows/ # CI (python-test.yml) and PyPI publish (python-publish.yml) +README.md # User-facing documentation +``` + +### Key concepts + +- **`Parameter` subclasses** (`Route`, `Query`, `Json`, `Form`, `File`, `MultiSource`) define + *where* an input comes from. Each may override conversion behaviour but shares validation + logic from the base `Parameter` in `parameter_types/parameter.py`. +- **`ValidateParameters`** wraps a view: it reads the signature, pulls each declared input from + the appropriate source, runs type checking + constraints, and calls the view with validated + values. It also records function metadata used to generate documentation. +- **`docs_blueprint`** turns the recorded metadata + route docstrings into OpenAPI and the + legacy JSON/HTML formats. + +## Setup + +Develop against a virtual environment (do not install into a global/base interpreter): + +```sh +python -m venv .venv +source .venv/bin/activate +pip install pytest +pip install -r flask_parameter_validation/test/requirements.txt +``` + +`flask_parameter_validation/test/requirements.txt` installs the local package (via `../../`), +`Flask`, `requests`, and `pytest`, so the editable package is available to the tests. + +## Testing + +The test suite uses **pytest** and Flask's test client. There is no network or database +dependency — tests spin up an in-process Flask app (`test/testing_application.py`) whose routes +come from the blueprints in `test/testing_blueprints/`. + +Run the full suite from inside the package directory (this matches CI): + +```sh +cd flask_parameter_validation +pytest +``` + +Useful variants: + +```sh +pytest test/test_json_params.py # one source's tests +pytest -k uuid # tests matching an expression +pytest -q # quieter output +``` + +### Test layout + +- `test/conftest.py` — `app`, `client`, and `runner` fixtures. +- `test/testing_application.py` — `create_app()`; registers per-type and multi-source blueprints + and the docs blueprint. OpenAPI is enabled here. +- `test/test_*.py` — one module per input source (`json`, `query`, `form`, `route`, `file`, + `multi_source`) plus `test_api_docs.py` for documentation generation. +- `test/testing_blueprints/` — routes exercising each type/source combination. + +### Adding or changing behaviour + +- New behaviour needs tests. Match the existing pattern: add/extend a blueprint in + `testing_blueprints/` to expose a route, then assert against it via the `client` fixture in + the matching `test_*.py`. +- Changes that affect generated documentation must keep `test_api_docs.py` passing. +- The library targets Python 3.9+. Avoid syntax/APIs newer than 3.9 (e.g. be careful with + `typing` constructs, `is_typeddict`, and `Annotated` differences — there is version-specific + handling already in the codebase). CI runs the matrix 3.9 → 3.13, so verify across versions + when touching type introspection. + +## Code style + +- `tox.ini` sets flake8 `max-line-length = 120` (with `E501` ignored) and black + `line-length = 119`. There is no enforced formatter in CI; keep lines within these bounds and + match the surrounding style. +- Follow the existing structure: one input source per module under `parameter_types/`, shared + logic on the base `Parameter`. +- Raise the project's own exceptions (`exceptions/exceptions.py`) for validation/configuration + errors rather than generic ones. + +## Pull requests & commits + +- CI (`.github/workflows/python-test.yml`) runs pytest on every push and PR to `master` across + Python 3.9–3.13; all versions must pass. +- Keep commit messages short and imperative, matching the existing history + (e.g. "Add test for …", "Fix incorrect regex"). +- Bump `version` in `setup.py` for releases; publishing is handled by + `.github/workflows/python-publish.yml`. +- The README is the package's PyPI long description — update it when public behaviour changes. + +## Notes for agents + +- Do not commit unless explicitly asked. + treat it as dead code or delete it without confirmation. +- This environment's base interpreter does not have the dependencies installed; create a + virtualenv (above) before running tests. diff --git a/README.md b/README.md index b694140..27e093e 100644 --- a/README.md +++ b/README.md @@ -1,554 +1,331 @@ # Flask Parameter Validation -### Get and validate all Flask input parameters with ease. + +**Get and validate all Flask input parameters with ease.** + +Flask Parameter Validation lets you declare a route's expected inputs directly in the +function signature using type hints and `Parameter` defaults. Inputs are then automatically +extracted, type-checked, validated against the constraints you specify, and passed to your +view. As a bonus, the same declarations are used to generate OpenAPI 3.1 documentation. + +```py +@app.route("/users/", methods=["POST"]) +@ValidateParameters() +def update_user( + id: int = Route(), + username: str = Json(min_str_length=5, blacklist="<>"), + age: int = Json(min_int=18, max_int=99), + is_admin: bool = Query(False), +): + ... +``` + +## Features + +- Declarative validation via type hints and `Parameter` defaults — no boilerplate parsing. +- Input sources: `Route`, `Query`, `Json`, `Form`, `File`, and `MultiSource`. +- Rich type support: primitives, `datetime`/`date`/`time`, `UUID`, `Enum`, `list`, `dict`, + `TypedDict`, `Union`/`Optional`, and more. +- Constraints: length/range bounds, regex patterns, character white/blacklists, JSON Schema, + and fully custom validation functions. +- Customisable error responses. +- Automatic API documentation: OpenAPI 3.1 (with 3.2 compatibility) plus a built-in HTML docs page. +- Supports both sync and async views; tested on Python 3.9–3.13. ## Install -* Pip: Install with `pip install flask_parameter_validation`. -* Manually: - - `git clone https://github.com/Ge0rg3/flask-parameter-validation.git` - - `python setup.py install` -## Usage Example +```sh +pip install flask_parameter_validation +``` + +Or from source: + +```sh +git clone https://github.com/Ge0rg3/flask-parameter-validation.git +cd flask-parameter-validation +pip install . +``` + +## Quick start + ```py from flask import Flask -from typing import Optional, TypedDict, NotRequired, Annotated from flask_parameter_validation import ValidateParameters, Route, Json, Query -from flask_parameter_validation.docs_blueprint import docs_blueprint -from datetime import datetime -from enum import Enum -from uuid import UUID - -class AccountStatus(int, Enum): # In Python 3.11 or later, subclass IntEnum from enum package instead of int, Enum - """The status of a user's account""" - - ACTIVE = 1 # User can log in - DISABLED = 0 # All actions blocked - -class UserType(str, Enum): # In Python 3.11 or later, subclass StrEnum from enum package instead of str, Enum - USER = "user" # Human - SERVICE = "service" # Bot user - -class SocialLink(TypedDict): - """A link to a user's social profiles""" - - friendly_name: str # Display name - url: Annotated[str, "Link to social profile"] - icon: NotRequired[str] # The icon for this link app = Flask(__name__) -app.config["FPV_OPENAPI_ENABLE"] = True -app.config["FPV_OPENAPI_BASE"] = { - "openapi": "3.1.0" -} -app.register_blueprint(docs_blueprint) -@app.route("/update/", methods=["POST"]) +@app.route("/users/", methods=["POST"]) @ValidateParameters() -def hello( +def update_user( id: int = Route(), - username: str = Json(min_str_length=5, blacklist="<>"), + username: str = Json(min_str_length=5), age: int = Json(min_int=18, max_int=99), - nicknames: list[str] = Json(), - date_of_birth: datetime = Json(), - password_expiry: Optional[int] = Json(5), is_admin: bool = Query(False), - user_type: UserType = Json(alias="type"), - status: AccountStatus = Json(), - unique: UUID = Json(), - permissions: dict[str, str] = Query(list_disable_query_csv=True), - socials: list[SocialLink] = Json() - ): - return "Hello World!" - +): + return {"id": id, "username": username, "age": age, "is_admin": is_admin} if __name__ == "__main__": app.run() ``` -## Usage -To validate parameters with flask-parameter-validation, two conditions must be met. -1. The `@ValidateParameters()` decorator must be applied to the function -2. Type hints ([supported types](#type-hints-and-accepted-input-types)) and a default of a subclass of `Parameter` must be supplied per parameter +A request to this route, supplying `id` via the path, `is_admin` via the query string, and +`username`/`age` via the JSON body: +```sh +curl -X POST "http://localhost:5000/users/42?is_admin=true" \ + -H "Content-Type: application/json" \ + -d '{"username": "alice123", "age": 30}' +``` -### Enable and customize Validation for a Route with the @ValidateParameters decorator -The `@ValidateParameters()` decorator takes parameters that alter route validation behavior or provide documentation information: - -| Parameter | Type | Default | Description | -|-------------------|----------------------|---------|------------------------------------------------------------------------------------------------------------------------------------------------------| -| error_handler | `Optional[Response]` | `None` | Overwrite the output format of generated errors, see [Overwriting Default Errors](#overwriting-default-errors) for more | -| openapi_responses | `Optional[dict]` | `None` | The OpenAPI Responses Object for this route, as a `dict` to be used in any generated [API Documentation](#api-documentation) | - -#### Overwriting Default Errors -By default, the error messages are returned as a JSON response, with the detailed error in the "error" field, eg: ```json -{ - "error": "Parameter 'age' must be type 'int'" -} +{"id": 42, "username": "alice123", "age": 30, "is_admin": true} ``` -However, this can be edited by passing a custom error function into the `ValidateParameters()` decorator. For example: -```py -def error_handler(err): - error_name = type(err) - error_parameters = err.args - error_message = str(err) - return { - "error_name": type(err).__name__, - "error_parameters": err.args, - "error_message": str(err) - }, 400 +Two conditions must be met for a route to be validated: -@app.route(...) -@ValidateParameters(error_handler) -def api(...) -``` +1. The `@ValidateParameters()` decorator is applied to the view function. +2. Each validated argument has a [type hint](#supported-types) and a default that is an + instance of a [`Parameter` subclass](#parameter-sources). + +## Parameter sources -### Specify Parameter types and constraints with type hints and subclasses of Parameter -#### Parameter Class -The `Parameter` class provides a base for validation common among all input types, all location-specific classes extend `Parameter`. These subclasses are: +Each input source is a subclass of `Parameter`: -| Subclass Name | Input Source | Available For | -|---------------|------------------------------------------------------------------------------------------------------------------------|---------------------------------| -| Route | Parameter passed in the pathname of the URL, such as `/users/` | All HTTP Methods | -| Form | Parameter in an HTML form or a `FormData` object in the request body, often with `Content-Type: x-www-form-urlencoded` | POST Methods | -| Json | Parameter in the JSON object in the request body, must have header `Content-Type: application/json` | POST Methods | -| Query | Parameter in the query of the URL, such as /news_article?id=55 | All HTTP Methods | -| File | Parameter is a file uploaded in the request body | POST Method | -| MultiSource | Parameter is in one of the locations provided to the constructor | Dependent on selected locations | +| Subclass | Input source | Available for | +|---------------|-----------------------------------------------------------------------------|---------------------------------| +| `Route` | A value in the URL path, e.g. `/users/` | All HTTP methods | +| `Query` | A value in the URL query string, e.g. `/articles?id=55` | All HTTP methods | +| `Json` | A value in the JSON request body (`Content-Type: application/json`) | Body methods (POST/PUT/PATCH/…) | +| `Form` | A value in an HTML form / `FormData` body (`x-www-form-urlencoded`) | Body methods (POST/PUT/PATCH/…) | +| `File` | An uploaded file in the request body | Body methods (POST/PUT/PATCH/…) | +| `MultiSource` | A value from any combination of the sources above | Depends on chosen sources | -Note: "**POST Methods**" refers to the HTTP methods that send data in the request body, such as POST, PUT, PATCH and DELETE. Although sending data via some methods such as DELETE is not standard, it is supported by Flask and this library. +> "Body methods" are the HTTP methods that carry a request body — POST, PUT, PATCH and DELETE. +> Sending a body via DELETE is non-standard, but Flask and this library support it. -##### MultiSource Parameters -Using the `MultiSource` parameter type, parameters can be accepted from any combination of `Parameter` subclasses. Example usage is as follows: +### MultiSource parameters + +`MultiSource` accepts a value from any combination of the other sources, tried in order: ```py +from flask_parameter_validation import ValidateParameters, MultiSource, Route, Query, Json + @app.route("/") -@app.route("/") # If accepting parameters by Route and another type, a path with and without that Route parameter must be specified +@app.route("/") # Register paths with and without the Route parameter @ValidateParameters() def multi_source_example( value: int = MultiSource(Route, Query, Json, min_int=0) -) +): + return {"value": value} ``` -The above example will accept parameters passed to the route through Route, Query, and JSON Body. - - -Note: "**POST Methods**" refers to the HTTP methods that send data in the request body, such as POST, PUT, PATCH and DELETE. Although sending data via some methods such as DELETE is not standard, it is supported by Flask and this library. - -#### Type Hints and Accepted Input Types -Type Hints allow for inline specification of the input type of a parameter. Some types are only available to certain `Parameter` subclasses. - -| Type Hint / Expected Python Type | Notes | `Route` | `Form` | `Json` | `Query` | `File` | -|-----------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|--------|--------|---------|--------| -| `str` | | Y | Y | Y | Y | N | -| `int` | | Y | Y | Y | Y | N | -| `bool` | | Y | Y | Y | Y | N | -| `float` | | Y | Y | Y | Y | N | -| `list`/`typing.List` (`typing.List` is [deprecated](https://docs.python.org/3/library/typing.html#typing.List)) | For `Json`, received as a JSON List

For `Query`, can be received as `value=1,2,3` if `list_disable_query_csv` is `False`.

For `Form` or `Query`, received as `value=1&value=2&value=3`.

A single `value=` with no value will always be transformed to an empty list, but `value=,` (`Query` only) and `value=&value=` will be transformed to a list of empty `str`.

Lists with `None` as an accepted type are only supported in `Json` parameters. | N | Y | Y | Y | N | -| `typing.Union` | | Y | Y | Y | Y | N | -| `typing.Optional` | Not supported for `Route` inputs | Y | Y | Y | Y | Y | -| `datetime.datetime` | Received as a `str` in ISO-8601 date-time format | Y | Y | Y | Y | N | -| `datetime.date` | Received as a `str` in ISO-8601 full-date format | Y | Y | Y | Y | N | -| `datetime.time` | Received as a `str` in ISO-8601 partial-time format | Y | Y | Y | Y | N | -| `dict` | For `Query` and `Form` inputs, users should pass the stringified JSON. For `Query`, you likely will need to use `list_disable_query_csv=True`. | N | Y | Y | Y | N | -| `TypedDict` | For `Query` and `Form` inputs, users should pass the stringified JSON. For `Query`, you likely will need to use `list_disable_query_csv=True`. | N | Y | Y | Y | N | -| `FileStorage` | | N | N | N | N | Y | -| A subclass of `StrEnum` or `IntEnum`, or a subclass of `Enum` with `str` or `int` mixins prior to Python 3.11 | | Y | Y | Y | Y | N | -| `uuid.UUID` | Received as a `str` with or without hyphens, case-insensitive | Y | Y | Y | Y | N | - -These can be used in tandem to describe a parameter to validate: `parameter_name: type_hint = ParameterSubclass()` -- `parameter_name`: The field name itself, such as username -- `type_hint`: The expected Python data type -- `ParameterSubclass`: An instance of a subclass of `Parameter` - -### Validation with arguments to Parameter -Validation beyond type-checking can be done by passing arguments into the constructor of the `Parameter` subclass. The arguments available for use on each type hint are: - -| Parameter Name | Type of Argument | Effective On Types | OpenAPI Docs | Description | -|--------------------------|--------------------------------------------------|------------------------|--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `default` | any, except `NoneType` | All, except in `Route` | ✅ | Specifies the default value for the field, makes non-Optional fields not required | -| `min_str_length` | `int` | `str` | ✅ | Specifies the minimum character length for a string input | -| `max_str_length` | `int` | `str` | ✅ | Specifies the maximum character length for a string input | -| `min_list_length` | `int` | `list` | ✅ | Specifies the minimum number of elements in a list | -| `max_list_length` | `int` | `list` | ✅ | Specifies the maximum number of elements in a list | -| `min_int` | `int` | `int` | ✅ | Specifies the minimum number for an integer input | -| `max_int` | `int` | `int` | ✅ | Specifies the maximum number for an integer input | -| `whitelist` | `str` | `str` | Use `pattern` instead | A string containing allowed characters for the value | -| `blacklist` | `str` | `str` | Use `pattern` instead | A string containing forbidden characters for the value | -| `pattern` | `str` | `str` | ✅ | A regex pattern to test for string matches | -| `func` | `Callable[Any] -> Union[bool, tuple[bool, str]]` | All | ❌ No Attribute | A function containing a fully customized logic to validate the value. See the [custom validation function](#custom-validation-function) below for usage | -| `datetime_format` | `str` | `datetime.datetime` | ❌ JSON Schema limitation | Python datetime format string datetime format string ([datetime format codes](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes)) | -| `comment` | `str` | All | ✅ | A string to display as the argument description in any generated documentation | -| `alias` | `str` | All but `FileStorage` | ✅ | An expected parameter name to receive instead of the function name. | -| `json_schema` | `dict` | All but `FileStorage` | ✅ | An expected [JSON Schema](https://json-schema.org) which the dict input must conform to, overrides the generated JSON Schema in API Docs when provided. | -| `content_types` | `list[str]` | `FileStorage` | ✅ | Allowed `Content-Type`s | -| `min_length` | `int` | `FileStorage` | ❌ JSON Schema limitation | Minimum `Content-Length` for a file | -| `max_length` | `int` | `FileStorage` | ❌ JSON Schema limitation | Maximum `Content-Length` for a file | -| `blank_none` | `bool` | `Optional[str]` | ❌ No Attribute | If `True`, an empty string will be converted to `None`, defaults to configured `FPV_BLANK_NONE`, see [Validation Behavior Configuration](#validation-behavior-configuration) for more | -| `list_disable_query_csv` | `bool` | `list` in `Query` | ❌ No Attribute | If `False`, list-type Query parameters will be split by `,`, defaults to configured `FPV_LIST_DISABLE_QUERY_CSV`, see [Validation Behavior Configuration](#validation-behavior-configuration) for more | - -These validators are passed into the `Parameter` subclass in the route function, such as: -* `username: str = Json(default="defaultusername", min_length=5)` -* `profile_picture: werkzeug.datastructures.FileStorage = File(content_types=["image/png", "image/jpeg"])` -* `filter: str = Query()` - -#### Custom Validation Function - -Custom validation functions passed into the `func` property can be used to validate an input against custom logic and return customized error responses for that validation - -Example custom validation functions are below: -```py -def is_even(val: int): - """Return a single bool, True if valid, False if invalid""" - return val % 2 == 0 +## Supported types + +Type hints declare the expected Python type of each parameter. Some types are only available +to certain sources. + +| Type hint | Notes | `Route` | `Form` | `Json` | `Query` | `File` | +|-------------------------------------------------|------------------------------------------------------------------------------------------------|:-------:|:------:|:------:|:-------:|:------:| +| `str` | | Y | Y | Y | Y | N | +| `int` | | Y | Y | Y | Y | N | +| `bool` | | Y | Y | Y | Y | N | +| `float` | | Y | Y | Y | Y | N | +| `list` / `typing.List` | See [list parsing](#list-parsing) for how values are received per source. | N | Y | Y | Y | N | +| `dict` | For `Query`/`Form`, pass stringified JSON (usually with `list_disable_query_csv=True`). | N | Y | Y | Y | N | +| `TypedDict` | As `dict`, with per-key type validation. | N | Y | Y | Y | N | +| `typing.Union` | | Y | Y | Y | Y | N | +| `typing.Optional` | Not supported for `Route`. | Y | Y | Y | Y | Y | +| `datetime.datetime` | Received as an ISO-8601 date-time string. | Y | Y | Y | Y | N | +| `datetime.date` | Received as an ISO-8601 full-date string. | Y | Y | Y | Y | N | +| `datetime.time` | Received as an ISO-8601 partial-time string. | Y | Y | Y | Y | N | +| `enum.Enum` (with `str`/`int` mixin or sub) | `StrEnum`/`IntEnum`, or `str, Enum` / `int, Enum` prior to Python 3.11. | Y | Y | Y | Y | N | +| `uuid.UUID` | Received as a `str`, with or without hyphens, case-insensitive. | Y | Y | Y | Y | N | +| `werkzeug.datastructures.FileStorage` | | N | N | N | N | Y | + +### List parsing + +- **`Json`**: received as a JSON list. +- **`Query`**: `value=1,2,3` if `list_disable_query_csv` is `False` (the default), or + `value=1&value=2&value=3`. +- **`Form`**: `value=1&value=2&value=3`. +- A single `value=` with no value always becomes an empty list; `value=,` (`Query`) and + `value=&value=` become a list of empty strings. +- Lists that accept `None` as a member type are only supported for `Json`. + +## Validation constraints + +Pass constraints as keyword arguments to a `Parameter` subclass. Each constraint applies only +to certain types: + +| Argument | Type | Applies to | Description | +|--------------------------|--------------------------------------------------|------------------------|-----------------------------------------------------------------------------| +| `default` | any (except `None`) | All except `Route` | Default value; makes a non-`Optional` field not required. | +| `min_str_length` | `int` | `str` | Minimum string length. | +| `max_str_length` | `int` | `str` | Maximum string length. | +| `min_list_length` | `int` | `list` | Minimum number of list elements. | +| `max_list_length` | `int` | `list` | Maximum number of list elements. | +| `min_int` | `int` | `int` | Minimum value. | +| `max_int` | `int` | `int` | Maximum value. | +| `whitelist` | `str` | `str` | String of allowed characters. | +| `blacklist` | `str` | `str` | String of forbidden characters. | +| `pattern` | `str` | `str` | Regex pattern the value must match. | +| `func` | `Callable[[Any], bool \| tuple[bool, str]]` | All | [Custom validation function](#custom-validation-functions). | +| `datetime_format` | `str` | `datetime.datetime` | `strptime` format string overriding ISO-8601 parsing. | +| `comment` | `str` | All | Description used in generated documentation. | +| `alias` | `str` | All except `File` | Accept this parameter name instead of the function argument name. | +| `json_schema` | `dict` | All except `File` | [JSON Schema](https://json-schema.org) the value must conform to. | +| `content_types` | `list[str]` | `File` | Allowed `Content-Type`s. | +| `min_length` | `int` | `File` | Minimum `Content-Length`. | +| `max_length` | `int` | `File` | Maximum `Content-Length`. | +| `blank_none` | `bool` | `Optional[str]` | Convert an empty string to `None`. Defaults to `FPV_BLANK_NONE`. | +| `list_disable_query_csv` | `bool` | `list` in `Query` | If `False`, split query lists on `,`. Defaults to `FPV_LIST_DISABLE_QUERY_CSV`. | + +Examples: -def is_odd(val: int): - """Return a tuple with a bool, as above, and the error message if the bool is False""" - return val % 2 != 0, "val must be odd" +```py +username: str = Json(default="anonymous", min_str_length=5) +profile_picture: FileStorage = File(content_types=["image/png", "image/jpeg"]) +search: str = Query() ``` -### Configuration Options +### Custom validation functions -#### API Documentation (OpenAPI 3.1.0 - 3.2.0) -* `FPV_OPENAPI_BASE: dict`: The base [OpenAPI Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#openapi-object) that will be populated with a generated [Paths Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#paths-object). Must be set to enable the blueprints. Alternatively, the standalone Paths Object can be retrieved anytime through the `generate_openapi_paths_object()` method. +Pass a callable to `func`. It receives the value and returns either a `bool`, or a +`(bool, error_message)` tuple: -#### API Documentation (Deprecated, non-standard format) -* `FPV_DOCS_SITE_NAME: str`: Your site's name, to be displayed in the page title, default: `Site` -* `FPV_DOCS_CUSTOM_BLOCKS: array`: An array of dicts to display as cards at the top of your documentation, with the (optional) keys: - * `title: Optional[str]`: The title of the card - * `body: Optional[str] (HTML allowed)`: The body of the card - * `order: int`: The order in which to display this card (out of the other custom cards) -* `FPV_DOCS_DEFAULT_THEME: str`: The default theme to display in the generated webpage +```py +def is_even(value: int): + return value % 2 == 0 -See the [API Documentation](#api-documentation) below for other information on API Documentation generation +def is_odd(value: int): + return value % 2 != 0, "value must be odd" -#### Validation Behavior Configuration -* `FPV_BLANK_NONE: bool`: Set the default `blank_none` behavior for routes in your application, defaults to `False` if unset -* `FPV_LIST_DISABLE_QUERY_CSV: bool`: Set the default `list_disable_query_csv` behavior for routes in your application, defaults to `False` if unset +count: int = Json(func=is_even) +``` -### API Documentation -Using the data provided through parameters, docstrings, and Flask route registrations, Flask Parameter Validation can generate API Documentation in various formats. -To make this easy to use, it comes with a `Blueprint` and the output shown below and configuration options [above](#api-documentation-configuration): +### JSON Schema validation -#### Included Blueprint -The documentation blueprint can be added using the following code: ```py -from flask_parameter_validation.docs_blueprint import docs_blueprint -... -app.register_blueprint(docs_blueprint) +json_schema = { + "type": "object", + "required": ["user_id", "first_name", "last_name", "tags"], + "properties": { + "user_id": {"type": "integer"}, + "first_name": {"type": "string"}, + "last_name": {"type": "string"}, + "tags": {"type": "array", "items": {"type": "string"}}, + }, +} + +@app.post("/json_schema_example") +@ValidateParameters() +def json_schema_example(data: dict = Json(json_schema=json_schema)): + return {"data": data} ``` -The default blueprint adds two `GET` routes: -* `/`: HTML Page with Bootstrap CSS and toggleable light/dark mode -* `/json`: Non-standard Format JSON Representation of the generated documentation -* `/openapi`: OpenAPI 3.1.0 - 3.2.0 (JSON) Representation of the generated documentation +## Error handling + +By default, validation failures return a JSON response with the message in the `error` field: -The `/json` route yields a response with the following format: ```json -{ - "custom_blocks": "", - "default_theme": "", - "docs": "", - "site_name": "{"configs": - [{"id": int, - "module": str, - "name": str, - "description": str, - "value": str}, ...] - } - """ - system_configs = [] - for system_config in SystemConfig.query.all(): - system_configs.append(system_config.toDict()) - return resp_success({"configs": system_configs}) - - -@config_api.post("/") -@ValidateParameters() -def edit_config( - config_id: int = Route(comment="The ID of the Config Record to Edit"), - value: str = Json(max_str_length=2000, comment="The value to set in the Config Record") -): - """Edit a specific System Configuration value""" - config = SystemConfig.get_by_id(config_id) - if config is None: - return resp_not_found("No link exists with ID " + str(config_id)) - else: - config.update(value) - return resp_success() +def error_handler(err): + return { + "error_name": type(err).__name__, + "error_parameters": err.args, + "error_message": str(err), + }, 400 + +@app.route(...) +@ValidateParameters(error_handler) +def api(...): + ... ``` -Documentation Generated: -![](docs/api_documentation_example.png) +## Configuration -For another example, below is the documentation generated from the [Usage Example](#usage-example). +Set these keys in `app.config`: -Documentation Generated (non-standard format): +### API documentation -![](docs/usage_example_non_standard_documentation.png) +| Key | Type | Description | +|----------------------|--------|----------------------------------------------------------------------------------------------| +| `FPV_OPENAPI_ENABLE` | `bool` | Enable OpenAPI generation. Must be truthy for the `/docs/openapi` route. | +| `FPV_OPENAPI_BASE` | `dict` | Base [OpenAPI Object](https://spec.openapis.org/oas/v3.1.0#openapi-object); its `paths` is populated automatically. | -Documentation Generated (OpenAPI): +### Validation behaviour -```json -{ - "openapi": "3.1.0", - "paths": { - "/update/{id}": { - "post": { - "parameters": [ - { - "in": "path", - "name": "id", - "required": true, - "schema": { - "type": "integer" - } - }, - { - "in": "query", - "name": "is_admin", - "required": false, - "schema": { - "default": false, - "type": "boolean" - } - }, - { - "in": "query", - "name": "permissions", - "required": true, - "schema": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "age": { - "maximum": 99, - "minimum": 18, - "type": "integer" - }, - "date_of_birth": { - "format": "date-time", - "type": "string" - }, - "nicknames": { - "items": { - "type": "string" - }, - "type": "array" - }, - "password_expiry": { - "default": 5, - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "socials": { - "items": { - "description": "A link to a user's social profiles", - "properties": { - "friendly_name": { - "description": "Display name", - "type": "string" - }, - "icon": { - "type": "string" - }, - "url": { - "description": "Link to social profile", - "type": "string" - } - }, - "required": [ - "friendly_name", - "url" - ], - "title": "SocialLink", - "type": "object" - }, - "type": "array" - }, - "status": { - "description": "The status of a user's account", - "oneOf": [ - { - "const": 1, - "description": "User can log in", - "title": "ACTIVE" - }, - { - "const": 0, - "description": "All actions blocked", - "title": "DISABLED" - } - ], - "title": "AccountStatus", - "type": "integer" - }, - "type": { - "description": "Whether this user is a bot or person", - "oneOf": [ - { - "const": "user", - "description": "Human", - "title": "USER" - }, - { - "const": "service", - "description": "Bot user", - "title": "SERVICE" - } - ], - "title": "UserType", - "type": "string" - }, - "unique": { - "format": "uuid", - "type": "string" - }, - "username": { - "minLength": 5, - "type": "string" - } - }, - "required": [ - "username", - "age", - "nicknames", - "date_of_birth", - "type", - "status", - "unique", - "socials" - ], - "type": "object" - } - } - } - } - } - } - } -} -``` +| Key | Type | Default | Description | +|------------------------------|--------|---------|------------------------------------------------------| +| `FPV_BLANK_NONE` | `bool` | `False` | Default `blank_none` behaviour for all routes. | +| `FPV_LIST_DISABLE_QUERY_CSV` | `bool` | `False` | Default `list_disable_query_csv` behaviour. | -##### Custom Blueprint -If you would like to use your own blueprint, you can get the raw data from the following functions: -```py -from flask_parameter_validation.docs_blueprint import get_route_docs -from flask_parameter_validation.docs_blueprint import generate_openapi_paths_object, generate_openapi_docs -... -get_route_docs() # The non-standard format (deprecated) -generate_openapi_paths_object() # Just the OpenAPI Paths object -generate_openapi_docs() # The entire OpenAPI Object -``` +### Legacy HTML docs (deprecated, non-standard format) -###### get_route_docs() return value format -This method returns an object with the following structure: +| Key | Type | Default | Description | +|---------------------------|---------|----------|---------------------------------------------------| +| `FPV_DOCS_SITE_NAME` | `str` | `Site` | Page title for the HTML docs. | +| `FPV_DOCS_CUSTOM_BLOCKS` | `list` | `[]` | Cards shown at the top of the docs page. | +| `FPV_DOCS_DEFAULT_THEME` | `str` | `light` | Default theme for the HTML docs page. | -```json -[ - { - "rule": "/path/to/route", - "methods": ["HTTPVerb"], - "docstring": "String, unsanitized of HTML Tags", - "decorators": ["@decorator1", "@decorator2(param)"], - "responses": { - "openapi": "3.1.0", - "description": "See [OpenAPI Spec 3.1.0 Responses Object](https://swagger.io/specification/#response-object)" - }, - "args": { - "": [ - { - "name": "Argument Name", - "type": "Argument Type", - "loc_args": { - "": "Value passed to Argument", - "": 0 - } - } - ], - "": [] - } - }, - - ... -] +## API documentation + +Register the bundled blueprint to expose generated documentation: + +```py +from flask_parameter_validation.docs_blueprint import docs_blueprint + +app.config["FPV_OPENAPI_ENABLE"] = True +app.config["FPV_OPENAPI_BASE"] = {"openapi": "3.1.0"} +app.register_blueprint(docs_blueprint) ``` -##### Marking routes as deprecated in generated documentation +The blueprint is mounted at `/docs` and adds three `GET` routes: -Using the `warnings.deprecated` (Python 3.13+) or `typing_extensions.deprecated` decorators, you can mark a route as deprecated. +- `/docs/` — an HTML documentation page (Bootstrap, light/dark mode). +- `/docs/openapi` — the OpenAPI 3.1 document as JSON. +- `/docs/json` — a non-standard JSON representation (deprecated). -##### Comments in generated OpenAPI documentation +To generate documentation without the blueprint: -Generated OpenAPI documentation uses the docstring from your routes as the `description` of the OpenAPI Operation object. +```py +from flask_parameter_validation.docs_blueprint import ( + get_route_docs, # non-standard format (deprecated) + generate_openapi_paths_object, # just the OpenAPI Paths object + generate_openapi_docs, # the full OpenAPI document +) +``` -Generated OpenAPI documentation will pull parameter comments from various locations in the following order (highest priority to lowest priority) for use in the `description` of OpenAPI Schema objects: -1. `comment` argument passed to a subclass of `Parameter` -2. `Annotated[T, "annotated comment"]` on a member of a TypedDict, or `# inline comment` on the same line as a member of a TypedDict or Enum -3. Docstring on a class (for Enums and TypedDicts) +### Documenting routes +- The route's **docstring** becomes the OpenAPI Operation `description`. +- Parameter descriptions are resolved in priority order: a `Parameter`'s `comment` argument, + then `Annotated[T, "..."]` / `# inline comment` on a `TypedDict` or `Enum` member, then a + class docstring. +- Mark a route deprecated with `warnings.deprecated` (Python 3.13+) or + `typing_extensions.deprecated`. +- Pass `openapi_responses` to `ValidateParameters()` to document a route's responses. -### JSON Schema Validation -An example of the [JSON Schema](https://json-schema.org) validation is provided below: +## Contributing -```python -json_schema = { - "type": "object", - "required": ["user_id", "first_name", "last_name", "tags"], - "properties": { - "user_id": {"type": "integer"}, - "first_name": {"type": "string"}, - "last_name": {"type": "string"}, - "tags": { - "type": "array", - "items": {"type": "string"} - } - } -} +Contributions are welcome. See [AGENTS.md](AGENTS.md) for the project layout, how to run the +test suite, and coding conventions. +Many thanks to all those who have contributed: -@api.get("/json_schema_example") -@ValidateParameters() -def json_schema(data: dict = Json(json_schema=json_schema)): - return jsonify({"data": data}) -``` +- [d3-steichman](https://github.com/d3-steichman) / [smt5541](https://github.com/smt5541): API documentation, custom error handling, datetime validation and bug fixes +- [willowrimlinger](https://github.com/willowrimlinger): TypedDict support, dict subtyping, and async view handling bug fixes +- [summersz](https://github.com/summersz): parameter aliases, async support, form type conversion and list bug fixes +- [Garcel](https://github.com/Garcel): custom validator functions +- [iml1111](https://github.com/iml1111): regex validation +- [borisowww](https://github.com/borisowww): file handling bug fixes +- [Charlie-Mindified](https://github.com/Charlie-Mindified): JSON handling bug fix +- [dkassen](https://github.com/dkassen): list parsing fixes -## Contributions -Many thanks to all those who have made contributions to the project: -* [d3-steichman](https://github.com/d3-steichman)/[smt5541](https://github.com/smt5541): API documentation, custom error handling, datetime validation and bug fixes -* [willowrimlinger](https://github.com/willowrimlinger): TypedDict support, dict subtyping, and async view handling bug fixes -* [summersz](https://github.com/summersz): Parameter aliases, async support, form type conversion and list bug fixes -* [Garcel](https://github.com/Garcel): Allow passing custom validator function -* [iml1111](https://github.com/iml1111): Implement regex validation -* [borisowww](https://github.com/borisowww): Fix file handling bugs -* [Charlie-Mindified](https://github.com/Charlie-Mindified): Fix JSON handling bug -* [dkassen](https://github.com/dkassen): Helped to resolve broken list parsing logic +## License +Released under the MIT License. From 983e82c2c970d728d0717b213c1d264984c6c36b Mon Sep 17 00:00:00 2001 From: George O <16269580+Ge0rg3@users.noreply.github.com> Date: Fri, 29 May 2026 13:07:58 +0100 Subject: [PATCH 2/2] Remove unused docs screenshots --- AGENTS.md | 1 - docs/api_documentation_example.png | Bin 72980 -> 0 bytes ...usage_example_non_standard_documentation.png | Bin 70853 -> 0 bytes 3 files changed, 1 deletion(-) delete mode 100644 docs/api_documentation_example.png delete mode 100644 docs/usage_example_non_standard_documentation.png diff --git a/AGENTS.md b/AGENTS.md index b3bb290..34ee754 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -29,7 +29,6 @@ flask_parameter_validation/ # The package │ # ValidationError, ConfigurationError ├── templates/fpv_default_docs.html# HTML docs page rendered by the blueprint └── test/ # Test suite (see below) -docs/ # Screenshots referenced by the README setup.py # Package metadata and dependencies tox.ini # flake8 / black line-length config .github/workflows/ # CI (python-test.yml) and PyPI publish (python-publish.yml) diff --git a/docs/api_documentation_example.png b/docs/api_documentation_example.png deleted file mode 100644 index d0222360806c3a00f056e7a1eaf72b68944901a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72980 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 HKJ>o;GR9cE diff --git a/docs/usage_example_non_standard_documentation.png b/docs/usage_example_non_standard_documentation.png deleted file mode 100644 index b82a156668c1026dc7a4b684caeba077b41f730a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70853 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%0D<&$fWq6mhQMVfkAAC9ZP| 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 h8i|w>vi_QB_cxt63>iNb- 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 x5}0-&VH^!jky0aY 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