Skip to main content

Decode TAF

tests PyPI - Version License

463267a9-1d75-4edf-b8e0-38b98977111b~3.jpg

Convert a TAF string to a data structure.

>>> import detaf
>>> bulletin = """
... TAF EGAA 081058Z 0812/0912 14010KT 9999 BKN015
... TEMPO 0812/0906 6000 BKN008
... PROB30 TEMPO 0906/0912 BKN008
... """
>>> detaf.parse(bulletin)
TAF(
  version=<Version.ORIGINAL: 'ORIGINAL'>,
  icao_identifier='EGAA',
  issue_time=issue(day=8, hour=10, minute=58),
  weather_conditions=[
    WeatherCondition(
      period=period(begin=dayhour(day=8, hour=12), end=dayhour(day=9, hour=12)),
      probability=None,
      change=None,
      phenomena=[Wind(direction=140, speed=10, gust=None), Visibility(distance=9999)]),
      ...

Easy to traverse data structure, suitable for any template engine.

>>> taf = detaf.parse(bulletin)
>>> for cnd in taf.weather_conditions:
...     for phenom in cnd.phenomena:
...         print(cnd.period, phenom)
...
period(begin=dayhour(day=8, hour=12), end=dayhour(day=9, hour=12)) Wind(direction=140, speed=10, gust=None)
period(begin=dayhour(day=8, hour=12), end=dayhour(day=9, hour=12)) Visibility(distance=9999)
period(begin=dayhour(day=8, hour=12), end=dayhour(day=9, hour=12)) Cloud(description=<CloudDescription.BROKEN: 'BKN'>, height=1500)
period(begin=dayhour(day=8, hour=12), end=dayhour(day=9, hour=6)) Visibility(distance=6000)
period(begin=dayhour(day=8, hour=12), end=dayhour(day=9, hour=6)) Cloud(description=<CloudDescription.BROKEN: 'BKN'>, height=800)
period(begin=dayhour(day=9, hour=6), end=dayhour(day=9, hour=12)) Cloud(description=<CloudDescription.BROKEN: 'BKN'>, height=800)

Render TAF encodings and Python objects

Detaf enables partial encoding, to make it easier to annotate parts of the report. For example, to add tooltips or syntax highlighting.

The encoder detaf.encode is polymorphic, to make it easier to selectively render TAF snippets or Python data.

>>> import detaf
>>> bulletin = """TAF EIDW 081700Z 0818/0918 14010KT 4000 -DZ BKN007
... BECMG 0818/0820 9999 NSW SCT010 BKN015
... BECMG 0901/0903 15005KT
... BECMG 0907/0909 13010KT
... TEMPO 0907/0918 BKN012
... PROB30 TEMPO 0907/0912 4000 -DZ BKN008"""
>>> taf = detaf.decode(bulletin)
>>>
>>> html = ""
>>> for cnd in taf.weather_conditions:
...     html += f"<div>{detaf.encode(cnd)}</div>\n"
...
>>> print(html)
<div>0818/0918 14010KT 4000 -DZ BKN007</div>
<div>BECMG 0818/0820 9999 NSW SCT010 BKN015</div>
<div>BECMG 0901/0903 15005KT</div>
<div>BECMG 0907/0909 13010KT</div>
<div>TEMPO 0907/0918 BKN012</div>
<div>PROB30 TEMPO 0907/0912 4000 -DZ BKN008</div>

Or a single weather condition list of weather phenomena.

>>> for ph in taf.weather_conditions[1].phenomena:
...     print(f"<li>{detaf.encode(ph)}</li>")
...
<li>9999</li>
<li>NSW</li>
<li>SCT010</li>
<li>BKN015</li>

The ability to map back and forth from a data structure to TAF encoding allows hypermedia driven applications to interpret TAF reports.

# Even more mix/match rendering
>>> for cnd in taf.weather_conditions:
...     for ph in cnd.phenomena:
...         if isinstance(ph, detaf.Visibility):
...             print(detaf.encode(cnd.period), ph)
...
0818/0918 Visibility(distance=4000)
0818/0820 Visibility(distance=9999)
0907/0912 Visibility(distance=4000)

Release files for detaf 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for detaf 0.3.1
File Size Uploaded
detaf-0.3.1.tar.gz 9.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for detaf 0.3.1
File Interpreter ABI Platform
detaf-0.3.1-py3-none-any.whl Python 3 none any Details

Total release size: 18.0 kB

Release files / detaf-0.3.1.tar.gz

Download URL detaf-0.3.1.tar.gz
Size 9.8 kB
Tags Source
SHA-256 checksum
How to use checksums
3dd18a15dcbbd7598743f3b797ec0342faff8bbcb6df58443325761ac4d85752
BLAKE2b-256 checksum
How to use checksums
6cd5b955b5a3834324f83324ce5b45c2bc71aadd488b8577743f094072fd42aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via pdm/2.20.1 CPython/3.10.12 Linux/6.5.0-1025-azure

Release files / detaf-0.3.1-py3-none-any.whl

Download URL detaf-0.3.1-py3-none-any.whl
Size 8.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ebecccf0d4aa16d37e1a3369cdc52f39cf96795bd3baa6ac873de5ff38142331
BLAKE2b-256 checksum
How to use checksums
5d3fe5eddbd368765d9af933b2402fd6769d741b20f1e74d6b754a88c59b96a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via pdm/2.20.1 CPython/3.10.12 Linux/6.5.0-1025-azure

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page