OpsPulse is a simple ETL (Extract, Transform, Load) project built using Python. It fetches live weather data from the Open-Meteo public API, stores the raw response in JSON format, transforms the data into a structured CSV file using Pandas, and validates the output with Pytest.
This project demonstrates API integration, data transformation, file handling, and automated testing.
OpsPulse/
│── data/
│ ├── raw_weather.json
│ ├── weather.csv
│
│── src/
│ ├── fetch_weather.py
│ ├── transform.py
│
│── tests/
│ ├── test_transform.py
│
│── requirements.txt
│── README.md
- Fetches live weather data from a public API.
- Stores raw API response in JSON format.
- Converts JSON data into a CSV file using Pandas.
- Includes automated tests using Pytest.
- Demonstrates a simple ETL pipeline.
- Python 3.x
- Requests
- Pandas
- Pytest
Clone the repository:
git clone https://github.com/your-username/OpsPulse.git
cd OpsPulseInstall the required packages:
pip install -r requirements.txtpython src/fetch_weather.pyThis creates:
data/raw_weather.json
python src/transform.pyThis creates:
data/weather.csv
Run the following command:
pytestExpected output:
============================= test session starts =============================
...
3 passed in 0.05s
| Time | Temperature | Humidity | WindSpeed |
|---|---|---|---|
| 2026-07-17T10:00 | 31.2 | 74 | 12.5 |
data/raw_weather.json
Contains the complete API response.
data/weather.csv
Contains the cleaned weather information in tabular format.
The project includes three automated tests:
- Verify required columns exist.
- Ensure temperature values are not null.
- Check humidity values are between 0 and 100.
Open-Meteo Weather API
API Endpoint:
https://api.open-meteo.com/v1/forecast
- Support multiple cities.
- Store processed data in SQLite or PostgreSQL.
- Schedule automatic data collection.
- Generate weather trend visualizations.
- Add logging and exception handling.
Vijay Kumar Subramanian
Mini Project – OpsPulse
Python | Pandas | API Integration | Pytest