Basic Types
pytypeinput supports all basic Python types: str, int, float, bool, date, time.
String
Basic string input:
from dataclasses import dataclass
from pytypeinput import analyze_dataclass
@dataclass
class UserForm:
username: str
params = analyze_dataclass(UserForm)
print(params[0].name) # "username"
print(params[0].param_type) # <class 'str'>
HTML Renderer Demo:
Integer
Basic integer input:
from dataclasses import dataclass
from pytypeinput import analyze_dataclass
@dataclass
class UserForm:
age: int
params = analyze_dataclass(UserForm)
print(params[0].name) # "age"
print(params[0].param_type) # <class 'int'>
HTML Renderer Demo:
Float
Basic float input:
from dataclasses import dataclass
from pytypeinput import analyze_dataclass
@dataclass
class ProductForm:
price: float
params = analyze_dataclass(ProductForm)
print(params[0].name) # "price"
print(params[0].param_type) # <class 'float'>
HTML Renderer Demo:
Boolean
Boolean toggle switch:
from dataclasses import dataclass
from pytypeinput import analyze_dataclass
@dataclass
class PreferencesForm:
newsletter: bool
params = analyze_dataclass(PreferencesForm)
print(params[0].name) # "newsletter"
print(params[0].param_type) # <class 'bool'>
HTML Renderer Demo:
Date
Date picker input:
from dataclasses import dataclass
from datetime import date
from pytypeinput import analyze_dataclass
@dataclass
class UserForm:
birthday: date
params = analyze_dataclass(UserForm)
print(params[0].name) # "birthday"
print(params[0].param_type) # <class 'datetime.date'>
HTML Renderer Demo:
Time
Time picker input:
from dataclasses import dataclass
from datetime import time
from pytypeinput import analyze_dataclass
@dataclass
class MeetingForm:
meeting_time: time
params = analyze_dataclass(MeetingForm)
print(params[0].name) # "meeting_time"
print(params[0].param_type) # <class 'datetime.time'>
HTML Renderer Demo:
Default Values
All basic types support default values:
from dataclasses import dataclass
from pytypeinput import analyze_dataclass
@dataclass
class SettingsForm:
theme: str = "dark"
volume: int = 50
notifications: bool = True
params = analyze_dataclass(SettingsForm)
print(params[0].default) # "dark"
print(params[1].default) # 50
print(params[2].default) # True
HTML Renderer Demo: