> For the complete documentation index, see [llms.txt](https://gosford-high-school.gitbook.io/preliminary-software-engineering/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gosford-high-school.gitbook.io/preliminary-software-engineering/unit-1-programming-fundamentals/5-assessment-task-1/task-guide/development/create-python-module/example-weatherfetch-module.md).

# Example: WeatherFetch Module

This is some starter code which you could use if you want to use the WeatherAPI. You will need to sign up at <https://www.weatherapi.com/> to get your API Key.

{% hint style="warning" %}

## API Key

Some APIs do not keep their API public and you will need to go on their website and sign up to receive a unique API key.&#x20;

Make sure you replace `"DEMO_KEY"` with a real key from the WeatherAPI in the **`API_KEY`** variable.&#x20;
{% endhint %}

<pre class="language-python" data-title="weatherfetch.py"><code class="lang-python"><strong># Import the requests library to handle HTTP requests
</strong>import requests

# API key for WeatherAPI (must be filled in to work)
api_key = "YOUR_KEY"

# Base URL for WeatherAPI
base_url = "http://api.weatherapi.com/v1"

def fetch_weather(city_name):
    """
    Fetches the current weather data for a given city using WeatherAPI.
    """
    # Construct the complete API request URL
    complete_url = f"{base_url}/current.json?key={api_key}&#x26;q={city_name}"

    # Send an HTTP GET request to the API
    response = requests.get(complete_url)

    # Check if the request was successful (status code 200)
    if response.status_code == 200:
        # Return the JSON response as a Python dictionary
        return response.json()
    else:
        # Return None if there was an error with the request
        return None
    
def display_weather_info(weather_data):
    """
    Displays weather information from the API response.
    """
    if weather_data:
        # Extract relevant data from the API response
        location = weather_data["location"]["name"]  # City name
        region = weather_data["location"]["region"]  # Region/State
        country = weather_data["location"]["country"]  # Country
        temperature = weather_data["current"]["temp_c"]  # Temperature in Celsius
        condition = weather_data["current"]["condition"]["text"]  # Weather condition (e.g., Sunny, Rainy)

        # Print the weather details
        print(f"Weather in {location}, {region}, {country}:")
        print(f"Temperature: {temperature}°C")
        print(f"Condition: {condition}")
    else:
        # Print an error message if data could not be retrieved
        print("Error retrieving weather data.")

#&#x3C;--------------------------------------------TEST THE FUNCTIONS-------------------------------------------->
</code></pre>

## Testing the Above

```python
#<--------------------------------------------TEST THE FUNCTIONS-------------------------------------------->
city_name = "Gosford"  # Example city, change as needed

# Fetch weather data for the given city
weather_data = fetch_weather(city_name)

# Display the retrieved weather information
display_weather_info(weather_data)
```
