pytypeinput analyzes Python type hints and extracts structured metadata. Use this metadata to build UIs, CLIs, config editors, or anything that needs input specifications.
from dataclasses import dataclass
from pytypeinput import Field, Annotated, analyze_dataclass
@dataclass
class User:
username: Annotated[str, Field(min_length=3, max_length=20)]
age: Annotated[int, Field(ge=18, le=120)]
bio: str | None = None
# Extract metadata
params = analyze_dataclass(User)
# Use it to build: HTML forms, CLIs, GUIs, validators...- Single source of truth - Define once with type hints, use everywhere (forms, CLIs, validation)
- Minimal code - Maximum features with minimum boilerplate
- Type-safe - Full IDE autocomplete and type checking
- Pure Python - Build UIs with Python code, not templates or DSLs
Core only:
pip install pytypeinputWith HTML renderer:
pip install pytypeinput[html]Requirements: Python 3.10+ • Pydantic 2.0+
Complete Documentation with interactive examples
Type System:
- Basic Types:
int,float,str,bool,date,time - Special Types:
Email,Color,File,ImageFile, etc. - Lists:
list[Type]with item and list-level validation - Optionals:
Type | Nonewith toggle switches - Choices:
Literal,Enum,Dropdown(func) - Constraints:
Field(min=, max=, pattern=)for validation - UI Metadata: Custom labels, descriptions, placeholders, sliders, etc.
Renderers:
- HTML Renderer - Generate forms with client-side validation
Reference:
- API Reference - Complete API documentation
✅ Extracts metadata from type hints
✅ Works with functions, dataclasses, Pydantic models, classes
✅ Optional HTML renderer with client-side validation
✅ Framework-agnostic
❌ No server-side validation
❌ No form submission handling
pytypeinput is a building block, not a complete solution.
Validation: Type hints validated when extracting metadata. HTML forms validate client-side. Server-side is your responsibility (use Pydantic with same type hints).
Found a bug or have a suggestion? Open an issue
MIT • Beltrán Offerrall