gradio/demo/tax_calculator.py

47 lines
1.2 KiB
Python

# Demo: (Number, Radio, Dataframe) -> (Textbox)
import gradio as gr
def tax_calculator(income, marital_status, assets):
tax_brackets = [
(10, 0),
(25, 8),
(60, 12),
(120, 20),
(250, 30)
]
total_deductible = sum(assets[assets["Deduct"]]["Cost"])
taxable_income = income - total_deductible
total_tax = 0
for bracket, rate in tax_brackets:
if taxable_income > bracket:
total_tax += (taxable_income - bracket) * rate / 100
if marital_status == "Married":
total_tax *= 0.75
elif marital_status == "Divorced":
total_tax *= 0.8
return round(total_tax)
io = gr.Interface(
tax_calculator,
[
"number",
gr.inputs.Radio(["Single", "Married", "Divorced"]),
gr.inputs.Dataframe(
headers=["Item", "Cost", "Deduct"],
datatype=["str", "number", "bool"],
label="Assets Purchased this Year"
)
],
"number",
interpretation="default",
examples=[
[10000, "Married", [["Car", 5000, False], ["Laptop", 800, True]]],
[80000, "Single", [["Suit", 800, True], ["Watch", 1800, False]]],
]
)
io.launch()