A powerful Python library for weather data retrieval with both synchronous and asynchronous support.
- Full type hints support
- Async and sync operations
- Dataclass-style models
- Context managers
- Clean API interface
- Current weather conditions
- Detailed forecasts
- Hourly predictions
- Astronomical data
- Wind information
- Sync/Async operations
- Custom API endpoints
- Format selection (j1/j2)
- Unit preferences
- Multi-location support
pip install skypulse
git clone https://github.com/HelpingAI/skypulse.git
cd skypulse
pip install -e .
- Python 3.7+
- Required packages:
requests>=2.28.2
- HTTP requests for sync operationsaiohttp>=3.8.4
- Async HTTP client
from skypulse import SkyPulse, UnitPreferences
# Initialize client
client = SkyPulse()
# Set unit preferences (optional)
client.set_units(UnitPreferences(
temperature="C",
wind_speed="kmh",
pressure="mb"
))
# Get current weather
current = client.get_current("London")
print(f"Temperature: {current.temperature_c}°C")
print(f"Condition: {current.condition.description}")
print(f"Wind: {current.wind_speed_kmh} km/h {current.wind_direction}")
print(f"Humidity: {current.humidity}%")
# Get forecast with hourly data
forecast = client.get_forecast("London")
for day in forecast.days:
print(f"\nDate: {day.date}")
print(f"Temperature: {day.min_temp_c}°C to {day.max_temp_c}°C")
print(f"Sunrise: {day.astronomy.sunrise}")
print(f"Sunset: {day.astronomy.sunset}")
# Hourly forecast
for hour in day.hourly:
print(f"\nTime: {hour.time}")
print(f"Temperature: {hour.temperature_c}°C")
print(f"Feels like: {hour.feels_like_c}°C")
print(f"Rain chance: {hour.rain_chance}%")
import asyncio
from skypulse import SkyPulse
async def compare_weather():
async with SkyPulse(async_mode=True) as client:
# Compare weather for multiple cities concurrently
cities = ["London", "New York", "Tokyo"]
tasks = [client.get_current_async(city) for city in cities]
results = await asyncio.gather(*tasks)
for city, weather in zip(cities, results):
print(f"\n{city}:")
print(f"Temperature: {weather.temperature_c}°C")
print(f"Condition: {weather.condition.description}")
print(f"Humidity: {weather.humidity}%")
# Run async code
asyncio.run(compare_weather())
- Real-time temperature and humidity
- Wind speed, direction, and gusts
- Atmospheric pressure
- Cloud cover and visibility
- Weather conditions with icons
- Multi-day weather forecasts
- Hourly predictions
- Temperature ranges
- Rain and snow chances
- Astronomical data (sunrise/sunset)
- City name or coordinates
- Country and region info
- Latitude and longitude
- Population data
- Weather station URL
- Temperature (°C/°F)
- Wind speed (km/h, mph)
- Pressure (mb, in)
- Distance (km, miles)
- Precipitation (mm, in)
- Real-time weather insights
- Natural language analysis
- Activity suggestions
- Weather pattern detection
- Streaming responses
- Cross-platform Unicode support
from skypulse.ai_weather import WeatherAnalyzer
# Initialize analyzer
analyzer = WeatherAnalyzer()
# Get AI analysis
analysis = analyzer.analyze_weather("Tokyo")
print(analysis)
# CLI usage
skypulse analyze --location "Tokyo"
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under the HelpingAI License v3.0 - see the LICENSE file for details.