Documentation
¶
Overview ¶
Package fakeweather provides synthetic weather for offline demonstrations. With an explicit date, the same request produces the same report across runs. An omitted date uses the current UTC day. The output is not real weather.
Index ¶
- type AirQuality
- type AirQualityLevel
- type Alert
- type AlertSeverity
- type AlertType
- type Astronomy
- type Condition
- type Coordinates
- type HourlyForecast
- type Precipitation
- type PrecipitationIntensity
- type PrecipitationType
- type Request
- type Response
- type Temperature
- type TimeRange
- type Tool
- type UVIndex
- type UVLevel
- type Wind
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AirQuality ¶
type AirQualityLevel ¶
type AirQualityLevel string
AirQualityLevel is the US AQI qualitative scale.
const ( AirQualityGood AirQualityLevel = "Good" AirQualityModerate AirQualityLevel = "Moderate" AirQualityUnhealthyForSensitiveGroups AirQualityLevel = "Unhealthy for Sensitive Groups" AirQualityUnhealthy AirQualityLevel = "Unhealthy" AirQualityVeryUnhealthy AirQualityLevel = "Very Unhealthy" AirQualityHazardous AirQualityLevel = "Hazardous" )
type AlertSeverity ¶
type AlertSeverity string
const ( AlertSeverityModerate AlertSeverity = "moderate" AlertSeveritySevere AlertSeverity = "severe" AlertSeverityExtreme AlertSeverity = "extreme" )
type Astronomy ¶
type Astronomy struct {
Sunrise string `json:"sunrise"`
Sunset string `json:"sunset"`
Moonrise string `json:"moonrise"`
Moonset string `json:"moonset"`
MoonPhase string `json:"moon_phase"`
MoonIllumination int `json:"moon_illumination"` // 0-100
}
Sun and moon times are approximate solar-local HH:MM values.
type Condition ¶
type Condition string
const ( ConditionBlizzard Condition = "Blizzard" ConditionClear Condition = "Clear" ConditionCloudy Condition = "Cloudy" ConditionCold Condition = "Cold" ConditionDrizzle Condition = "Drizzle" ConditionDusty Condition = "Dusty" ConditionFoggy Condition = "Foggy" ConditionFreezing Condition = "Freezing" ConditionHazy Condition = "Hazy" ConditionHot Condition = "Hot" ConditionHumid Condition = "Humid" ConditionMild Condition = "Mild" ConditionOvercast Condition = "Overcast" ConditionPartlyCloudy Condition = "Partly Cloudy" ConditionRainy Condition = "Rainy" ConditionSnowy Condition = "Snowy" ConditionStormy Condition = "Stormy" ConditionSunny Condition = "Sunny" ConditionWindy Condition = "Windy" )
type Coordinates ¶
type HourlyForecast ¶
type Precipitation ¶
type Precipitation struct {
Type PrecipitationType `json:"type"`
Probability int `json:"probability"` // 0-100
Amount float64 `json:"amount"` // mm
Intensity PrecipitationIntensity `json:"intensity"`
}
type PrecipitationIntensity ¶
type PrecipitationIntensity string
const ( PrecipitationLight PrecipitationIntensity = "light" PrecipitationModerate PrecipitationIntensity = "moderate" PrecipitationHeavy PrecipitationIntensity = "heavy" )
type PrecipitationType ¶
type PrecipitationType string
const ( PrecipitationRain PrecipitationType = "rain" PrecipitationSleet PrecipitationType = "sleet" PrecipitationSnow PrecipitationType = "snow" )
type Request ¶
type Request struct {
Location string `` /* 186-byte string literal not displayed */
Date string `` /* 160-byte string literal not displayed */
IncludeHourly bool `json:"include_hourly,omitzero" jsonschema_description:"Include a full daily hourly forecast. Defaults to false."`
IncludeAirQuality bool `json:"include_air_quality,omitzero" jsonschema_description:"Include AQI and pollutant concentrations. Defaults to false."`
}
type Response ¶
type Response struct {
Location string `json:"location"`
Coordinates Coordinates `json:"coordinates"`
Timestamp TimeRange `json:"timestamp"`
Temperature Temperature `json:"temperature"`
Condition Condition `json:"condition"`
Description string `json:"description"`
Humidity int `json:"humidity"`
Pressure int `json:"pressure"` // hPa
Visibility int `json:"visibility"` // km
CloudCover int `json:"cloud_cover"` // 0-100
DewPoint int `json:"dew_point"`
Wind Wind `json:"wind"`
Precipitation *Precipitation `json:"precipitation,omitzero"`
AirQuality *AirQuality `json:"air_quality,omitzero"`
UVIndex UVIndex `json:"uv_index"`
Astronomy Astronomy `json:"astronomy"`
HourlyForecast []HourlyForecast `json:"hourly_forecast,omitempty"`
Alerts []Alert `json:"alerts,omitempty"`
Source string `json:"source"`
LastUpdated int64 `json:"last_updated"` // Unix seconds at the start of the target date
}
type Temperature ¶
type Tool ¶
type Tool struct {
toolcontract.Func[Request, *Response]
// contains filtered or unexported fields
}
func New ¶
New creates an offline tool. With an explicit date, output is deterministic. The optional writer receives call activity and remains owned by the caller.
func (*Tool) Call ¶
func (t *Tool) Call(ctx context.Context, invocation toolcontract.Invocation) (toolcontract.Result, error)
type UVIndex ¶
type UVIndex struct {
Value int `json:"value"`
Level UVLevel `json:"level"`
Description string `json:"description"`
}
UVIndex per WHO levels (0-11+).
Click to show internal directories.
Click to hide internal directories.