{"library":"pynmeagps","title":"pynmeagps","description":"pynmeagps is an original Python 3 parser aimed primarily at the subset of the NMEA 0183 © v4 protocol relevant to GNSS/GPS receivers. It provides functionalities for both parsing incoming NMEA messages from various streams (e.g., serial, socket, file) and generating outbound NMEA messages. The library is actively maintained, currently at version 1.1.2, with regular updates and bug fixes.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install pynmeagps"],"cli":null},"imports":["from pynmeagps import NMEAReader","from pynmeagps import NMEAMessage","from pynmeagps.nmeatypes_core import NMEA_TALKERS","from pynmeagps import VALCKSUM, VALMSGID, ERR_LOG"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"from pynmeagps import NMEAReader, NMEAMessage, VALCKSUM, VALMSGID\n\n# Example 1: Parsing an NMEA message string\nnmea_string = b'$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47\\r\\n'\n\ntry:\n    # Using NMEAReader.parse() for individual messages\n    parsed_message = NMEAReader.parse(nmea_string, validate=VALCKSUM | VALMSGID)\n    print(f\"Parsed GGA message: {parsed_message}\")\n    print(f\"  Talker: {parsed_message.talker}\")\n    print(f\"  Message ID: {parsed_message.msgID}\")\n    print(f\"  Latitude: {parsed_message.lat}° {parsed_message.lat_dir}\")\n    print(f\"  Longitude: {parsed_message.lon}° {parsed_message.lon_dir}\")\nexcept Exception as e:\n    print(f\"Error parsing message: {e}\")\n\n# Example 2: Creating an NMEA message (e.g., GLL)\n# For a real application, ensure correct talker, msgID, and payload values\n# This example uses nominal values for illustration\nfrom datetime import datetime, time\n\ntry:\n    msg = NMEAMessage(\n        talker='GP', \n        msgID='GLL', \n        msgmode=0, \n        lat=48.12345, \n        lat_dir='N', \n        lon=11.67890, \n        lon_dir='E', \n        time=time(10, 30, 0),\n        status='A',\n        posMode='A'\n    )\n    # The to_nmea() method returns the checksummed NMEA message as bytes\n    generated_nmea = msg.to_nmea()\n    print(f\"Generated GLL message: {generated_nmea.decode('ascii').strip()}\")\nexcept Exception as e:\n    print(f\"Error generating message: {e}\")","lang":"python","description":"This quickstart demonstrates how to parse an NMEA message from a string using `NMEAReader.parse()` and how to construct a new NMEA message using the `NMEAMessage` class. It includes basic error handling and illustrates accessing parsed attributes and generating checksummed NMEA output. Note that NMEA messages should generally be byte strings (e.g., `b'$GPGGA...'`).","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"1.1.4","pypi_latest":"1.1.4","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":80,"avg_install_s":1.6,"avg_import_s":0.06,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"pynmeagps","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.04,"mem_mb":2.1,"disk_size":"18.2M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"pynmeagps","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.03,"mem_mb":2.1,"disk_size":"19M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"pynmeagps","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.08,"mem_mb":2.3,"disk_size":"20.1M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"pynmeagps","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.7,"import_time_s":0.07,"mem_mb":2.3,"disk_size":"21M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"pynmeagps","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.06,"mem_mb":2.3,"disk_size":"12.0M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"pynmeagps","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.06,"mem_mb":2.3,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"pynmeagps","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":0.06,"mem_mb":2.4,"disk_size":"11.7M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"pynmeagps","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":1.5,"import_time_s":0.06,"mem_mb":2.1,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"pynmeagps","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"pynmeagps","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":1.7,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}