{"id":24440687,"url":"https://github.com/mivek/python-metar-taf-parser","last_synced_at":"2025-10-01T10:30:54.182Z","repository":{"id":39649585,"uuid":"304708713","full_name":"mivek/python-metar-taf-parser","owner":"mivek","description":"Python program parsing METAR and TAF","archived":false,"fork":false,"pushed_at":"2024-02-17T13:14:35.000Z","size":569,"stargazers_count":42,"open_issues_count":3,"forks_count":5,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-03-14T22:24:32.369Z","etag":null,"topics":["airport","icao","metar","python","taf","weather"],"latest_commit_sha":null,"homepage":"https://www.metar-taf-decoder.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mivek.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"ko_fi":"mivek"}},"created_at":"2020-10-16T18:29:54.000Z","updated_at":"2024-04-28T03:57:19.325Z","dependencies_parsed_at":"2024-04-28T03:57:14.680Z","dependency_job_id":"2ec98216-ed05-4c10-a353-fa29ccbb9f2c","html_url":"https://github.com/mivek/python-metar-taf-parser","commit_stats":{"total_commits":51,"total_committers":4,"mean_commits":12.75,"dds":0.3529411764705882,"last_synced_commit":"cc8fad3a82af2b597ccb8546a187bd5532a24536"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mivek%2Fpython-metar-taf-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mivek%2Fpython-metar-taf-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mivek%2Fpython-metar-taf-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mivek%2Fpython-metar-taf-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mivek","download_url":"https://codeload.github.com/mivek/python-metar-taf-parser/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234856223,"owners_count":18897403,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["airport","icao","metar","python","taf","weather"],"created_at":"2025-01-20T20:57:00.612Z","updated_at":"2025-10-01T10:30:53.768Z","avatar_url":"https://github.com/mivek.png","language":"Python","funding_links":["https://ko-fi.com/mivek"],"categories":[],"sub_categories":[],"readme":"# METAR TAF Parser\n\n![Python test](https://github.com/mivek/python-metar-taf-parser/workflows/Python%20test/badge.svg)\n\nThis project provides METAR and TAF parsers.\n\n## Install\n\n```shell\npip install metar-taf-parser-mivek\n```\n\n## Structure\n\n### Commons package\n\nThis package contains the converter module. The module contains helper functions.\n\n### Model package\n\nThis package contains multiple modules\n\n-   enum: Contains the enumerations for the project\n-   model: Contains the model classes for the project\n\n### Parser package\n\nThis package contains the parser module with the `MetarParser` and `TAFParser` classes.\n\n## Model\n\n### Enumerations\n\n-   CloudQuantity: Represents the quantity in a cloud layer\n-   CloudType: Represents the type of cloud in a cloud layer\n-   DepositCoverage: Represents the percentage of a runway covered by the deposit\n-   DepositType: Represents the type of deposit on a runway\n-   Descriptive: Represents the descriptive part of a weather phenomenon\n-   Intensity: Represents the intensity of a weather phenomenon\n-   Phenomenon: Represents the phenomenon of a weather phenomenon\n-   TimeIndicator: Indicates the time trend\n-   WeatherChangeType: Indicate the type of trend\n-   IcingIntensity: Represents the intensity of an icing element\n-   TurbulenceIntensity: Represents the intensity of a turbulence element\n\n\n### Objects\n\n![model.png](model.png)\n\n#### Wind\n\nRepresents the wind part of a metar, taf or trend\n\n-   speed: `int`. The speed of the wind\n-   direction: `str`. The cardinal direction of the wind\n-   degrees: `int`. The direction in degrees\n-   gust: `int`. The speed of gust if any, None otherwise\n-   min_variation: `int`. The minimal degree variation of the wind\n-   max_variation: `int`. The maximal degree variation of the wind\n-   unit: `str`. The unit of the speed of the wind.\n\n#### WindShear\n\nRepresents a wind shear in TAF message. This class extends Wind.\n\n-   height: `int`. The height of the wind shear.\n\n#### Visibility\n\nRepresents the visibility part of a METAR, TAF or trend.\n\n-   distance: `str`. The distance in meters or nautical miles.\n-   min_distance: `int`. The minimal distance in meters if any.\n-   min_direction: `str`. The direction of the minimal distance if any.\n\n#### WeatherCondition\n\nRepresents the weather part of a METAR, TAF or trend.\n\n-   intensity: `Intensity`. The intensity of the weather condition if any, `None` otherwise.\n-   descriptive: `Descriptive`. The descriptive of the weather condition if any, `None` otherwise.\n-   phenomenons: `[Phenomenon]`. Array of phenomenons of the weather condition.\n\n#### TemperatureDated\n\nRepresents the temperature part of a TAF. \n\n-   temperature: `int`. The temperature in celsius degrees.\n-   day: `int`. Day of the occurrence.\n-   hour: `int`. Hour of the occurrence.\n\n#### RunwayInfo\n\nRepresents the visibility or the deposit on a runway.\n\n-   name: `str`. The name of the runway.\n-   min_range: `int`. The minimal visibility distance on the runway.\n-   max_range: `int`. The maximal visibility distance on the runway.\n-   trend: `str`. The trend of the visibility.\n-   indicator: `str`. The indicator on the visual range. `M` for less than and or `P` for greater than.\n-   deposit_type: `DepositType`. The type of deposit.\n-   coverage: `DepositCoverage`. The percentage of coverage.\n-   thickness: `str`. The thickness of the deposit.\n-   braking_capacity: `str`. The braking capacity on the runway.\n\n#### Cloud\n\nRepresents a cloud layer in METAR, TAF or trend object.\n\n-   height: `int`. The height of the layer in feet.\n-   quantity: `CloudQuantity`. The quantity of clouds.\n-   type: `CloudType`. The type of cloud in the layer.\n\n#### Icing\n\nRepresents the icing in a TAF or TAFTrend object.\n\n-   intensity: `IcingIntensity`. The intensity of an icing.\n-   base_height: `int`. The base height of an icing element in feet.\n-   depth: `int`. The icing layer depth in feet. Adding this to the base height determines the top limit of the icing.\n\n#### Turbulence\n\nRepresents the turbulence in a TAF or TAFTrend object.\n\n-   intensity: `TurbulenceIntensity`. The intensity of a turbulence.\n-   base_height: `int`. The base height of a turbulence element in feet.\n-   depth: `int`. The turbulence layer depth in feet. Adding this to the base height determines the top limit of the turbulence.\n\n#### ITafGroups\n\nClass holding turbulence and icing elements.\n\n-   icings: `[Icing]`. List of icing elements.\n-   turbulence: `[Turbulence]`. List of turbulence elements.\n\nThis class is a parent class of `TAF` and `ITafGroups`.\n\n#### AbstractWeatherContainer\n\nAbstract class containing the basic fields of METAR, TAF or trend objects.\n\n-   wind: `Wind`. The wind. Can be `None` for trends.\n-   visibility: `Visibility`. The visibility.\n-   vertical_visibility: `int`. The vertical visibility, can be `None`\n-   wind_shear: `WindShear`. The wind shear object.\n-   cavok: `bool`. Indicates whether the message is CAVOK (Ceiling and visibility OK)\n-   remark: `str`. The remark part of the message.\n-   remarks: `list[str]`. List of remarks. Each element is a different remark or token \n-   clouds: `[Cloud]`. Array of clouds elements.\n-   weather_conditions: `[WeatherCondition]`. Array of weather conditions.\n\n#### AbstractValidity\n\nAbstract class representing the base of a Validity object.\n\n-   start_day: `int`. The starting day of the validity.\n-   start_hour: `int`. The starting hour of the validity.\n\n#### AbstractWeatherCode\n\nClass extending the AbstractWeatherContainer. Abstract parent class of METAR and TAF.\n\n-   day: `int`. The delivery day of the METAR or TAF.\n-   time: `datetime.time`. The delivery time of the METAR/TAF.\n-   message: `str`. The message of the METAR/TAF.\n-   station: `str`. The station for which the message was issued.\n-   trends: `[TAFTrend/MetarTrend]`. Array of trends\n-   flags: `[Flag]`. Set of flags.\n-   auto: `bool`. Whether the METAR is automated.\n-   amendment: `bool`. Whether the TAF is an amendment.\n-   nil: `bool`. Whether the METAR/TAF is null.\n-   canceled: `bool`. Whether the METAR/TAF is canceled.\n-   corrected: `bool`. Whether the METAR/TAF is a correction.\n\n#### Metar\n\nClass representing a metar object.\n\n-   temperature: `int`. The temperature in celsius.\n-   dew_point: `int`. The dew_point in celsius.\n-   altimeter: `float`. The altimeter value in HPa.\n-   nosig: `bool`. Whether the message is nosig: No significant changes to come.\n-   runway_info: `[RunwayInfo]`. Array of runway information.\n\n#### TAF\n\nClass representing a TAF object.\n\n-   validity: `Validity`. The validity of the TAF.\n-   max_temperature: `TemperatureDated`. The maximum temperature during the validity of the TAF.\n-   min_temperature: `TemperatureDated`. The minimum temperature during the validity of the TAF.\n-   amendment: `bool`. Whether the TAF is an amendment.\n\n#### AbstractTrend\n\nAbstract base class for trend.\n\n-   type: `WeatherChangeType`. The type of change.\n\n#### MetarTrendTime\n\nClass containing the time of the trend.\n\n-   time: `datetime.time`. Time of the trend's occurrence.\n-   type: `TimeIndicator`. Type of time change of the trend.\n\n#### MetarTrend\n\nRepresents a trend in a METAR object, this class extends `AbstractTrend`.\n\n-   times: `[MetarTrendTime]`. The list of time change of the trend.\n\n#### TAFTrend\n\nRepresent a trend in a TAF object, this class extends `AbstractTrend`\n\n-   validity: `AbstractValidity`. The validity of the trend either `Validity` or `FMValidity`\n-   probability: `int`. The probability of a trend, can be `None`.\n\n#### Validity\n\nRepresents the validity timespan of a TAF or TAFTrend, this class extends `AbstractValidity`.\n\n-   end_day: `int`. The ending day of the validity.\n-   end_hour: `int` The ending hour of the validity.\n\n#### FMValidity\n\nRepresents the validity of a From trend, extends AbstractValidity\n\n-   start_minutes: `int`. The starting minute of the trend.\n\n\n## Example\n\n### Parse a METAR\n\nUse the method `parse(string)` of the `MetarParser` to parse a metar.\n\n```python\nfrom metar_taf_parser.parser.parser import MetarParser\n\nmetar = MetarParser().parse('KTTN 051853Z 04011KT 9999 VCTS SN FZFG BKN003 OVC010 M02/M02 A3006')\n\n```\n\n\n### Parse a TAF \n\nUse the method `parse(string)` of the TAFParser to parse a TAF message.\nThe message must start with `TAF` in order to be parsed.\n\n```python\nfrom metar_taf_parser.parser.parser import TAFParser\n\ntaf = TAFParser().parse(\n    'TAF LFPG 150500Z 1506/1612 17005KT 6000 SCT012 TEMPO 1506/1509 3000 BR BKN006 PROB40 TEMPO 1506/1508 0400 BCFG BKN002 PROB40 TEMPO 1512/1516 4000 -SHRA FEW030TCU BKN040 BECMG 1520/1522 CAVOK TEMPO 1603/1608 3000 BR BKN006 PROB40 TEMPO 1604/1607 0400 BCFG BKN002 TX17/1512Z TN07/1605Z')\n```\n\n\n## Internationalization\n\nThe following locales are supported:\n- en (default)\n- fr\n- de\n- pl\n- it\n- ru\n\nTo add or complete locales please see [CONTRIBUTING](CONTRIBUTING.md)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmivek%2Fpython-metar-taf-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmivek%2Fpython-metar-taf-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmivek%2Fpython-metar-taf-parser/lists"}