https://github.com/workfloworchestrator/pydantic-forms
Define JSON scheme with pydantic so a frontend can generate forms with pydantic validators
https://github.com/workfloworchestrator/pydantic-forms
Last synced: 4 months ago
JSON representation
Define JSON scheme with pydantic so a frontend can generate forms with pydantic validators
- Host: GitHub
- URL: https://github.com/workfloworchestrator/pydantic-forms
- Owner: workfloworchestrator
- License: apache-2.0
- Created: 2022-07-12T10:47:14.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2026-02-17T10:27:09.000Z (4 months ago)
- Last Synced: 2026-02-17T15:50:27.760Z (4 months ago)
- Language: Python
- Size: 275 KB
- Stars: 13
- Watchers: 19
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Pydantic forms
[](https://pypi.org/project/pydantic-forms)
[](https://pypi.org/project/pydantic-forms)
[](https://pepy.tech/project/pydantic-forms)
[](https://codecov.io/gh/workfloworchestrator/pydantic-forms)
A Python package that lets you add smart forms to [FastAPI](https://fastapi.tiangolo.com/)
and [Flask](https://palletsprojects.com/p/flask/). Forms will respond with a JSON scheme that
contains all info needed in a React frontend with uniforms to render the forms and handle all validation tasks.
Forms can also consist out of a wizard, so you can create complex form flows consisting out of multiple
consecutive forms. The forms and the validation logic are defined by
using [Pydantic](https://pydantic-docs.helpmanual.io/) models.
Documentation regarding the usage of Forms can be found
[here](https://github.com/workfloworchestrator/orchestrator-core/blob/main/docs/architecture/application/forms-frontend.md)
### Installation (Development standalone)
Install the project and its dependencies to develop on the code.
#### Step 1 - install flit:
```shell
python3 -m venv venv
source venv/bin/activate
pip install flit
```
#### Step 2 - install the development code:
```shell
flit install --deps develop --symlink --python venv/bin/python
```
!!! danger
Make sure to use the flit binary that is installed in your environment. You can check the correct
path by running
```shell
which flit
```
To be sure that the packages will be installed against the correct venv you can also prepend the python interpreter
that you want to use:
```shell
flit install --deps develop --symlink --python venv/bin/python
```
### Running tests
Run the unit-test suite to verify a correct setup.
#### Step 2 - Run tests
```shell
pytest tests/unit_tests
```
or with xdist:
```shell
pytest -n auto tests/unit_tests
```
If you do not encounter any failures in the test, you should be able to develop features in the pydantic-forms.
### Installation (Development symlinked into project that use pydantic-forms)
If you are working on a project that already uses the `pydantic-forms` and you want to test your new form features
against it, you can use some `flit` magic to symlink the dev version of the forms to your project. It will
automatically replace the pypi dep with a symlink to the development version
of the core and update/downgrade all required packages in your own project.
#### Step 1 - install flit:
```shell
python - m venv venv
source venv/bin/activate
pip install flit
```
### Step 2 - symlink the core to your own project
```shell
flit install --deps develop --symlink --python /path/to/a/project/venv/bin/python
```
# Increasing the version number for a (pre) release.
When your PR is accepted you will get a version number.
You can do the necessary change with a clean, e.g. every change committed, branch:
```shell
bumpversion patch --new-version 0.0.1
```
Note: specifying it like this, instead of relying on bumpversion itself to increase the version, allows you to
set a "RC1" version if needed.
# Debugging Form behaviour
If you want/need the traceback of pydantic in a Form response you can add an env variable:
`
PYDANTIC_FORMS_LOGLEVEL=DEBUG
`
This will add the traceback to the `JSONResponse`. If the loglevel is set to DEBUG the library will also add the
traceback to the logger.