E5C5 GitHub - offerrall/pytypeinput: Extract structured metadata from Python type hints.
[go: up one dir, main page]

Skip to content

offerrall/pytypeinput

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pytypeinput 0.1.4

PyPI version Python Tests License

Extract structured metadata from Python type hints.


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...

Design Goals

  • 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

Installation

Core only:

pip install pytypeinput

With HTML renderer:

pip install pytypeinput[html]

Requirements: Python 3.10+ • Pydantic 2.0+

Documentation

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 | None with toggle switches
  • Choices: Literal, Enum, Dropdown(func)
  • Constraints: Field(min=, max=, pattern=) for validation
  • UI Metadata: Custom labels, descriptions, placeholders, sliders, etc.

Renderers:

Reference:

What pytypeinput does

✅ 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).

Contributing

Found a bug or have a suggestion? Open an issue

License

MIT • Beltrán Offerrall

About

Extract structured metadata from Python type hints.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0