""" app.py - Simple Weather Forecast Web App (Demo) ------------------------------------------------ This is a beginner-friendly Gradio app for Hugging Face Spaces. ⚠️ NOTE: This demo does not use real-time weather APIs (so no API key needed). It generates a mock forecast based on simple rules. You can later connect it to real APIs like OpenWeatherMap. How to run (in Hugging Face Spaces or Colab): 1. pip install -r requirements.txt 2. python app.py 3. Open the public link. """ import gradio as gr import random from datetime import datetime, timedelta # --- Simple mock forecast generator --- def get_mock_forecast(city, days): if not city or days <= 0: return "❌ Please enter a city and valid number of days." forecasts = [] conditions = ["☀️ Sunny", "🌤️ Partly Cloudy", "🌧️ Rainy", "🌩️ Thunderstorm", "❄️ Snow"] today = datetime.now() for i in range(days): date = (today + timedelta(days=i)).strftime("%A, %d %b %Y") temp = random.randint(10, 40) # fake temperature in Celsius condition = random.choice(conditions) forecasts.append(f"{date} — {condition}, {temp}°C") return "\n".join(forecasts) # --- Gradio UI --- with gr.Blocks() as demo: gr.Markdown("## 🌦️ Simple Weather Forecast App (Demo)") with gr.Row(): city = gr.Textbox(label="Enter City", placeholder="e.g. London") days = gr.Slider(1, 7, value=3, step=1, label="Forecast Days") forecast_btn = gr.Button("Get Forecast") output = gr.Textbox(label="Forecast", lines=8) forecast_btn.click(get_mock_forecast, inputs=[city, days], outputs=output) # Launch app if __name__ == "__main__": demo.launch()