Skip to main content

Python Mode-S and ADS-B Decoder

Project description

PyModeS is a Python library designed to decode Mode-S (including ADS-B) messages. It can be imported to your python project or used as a standalone tool to view and save live traffic data.

This is a project created by Junzi Sun, who works at TU Delft, Aerospace Engineering Faculty, CNS/ATM research group. It is supported by many contributors from different institutions.

Introduction

pyModeS supports the decoding of following types of messages:

  • DF4 / DF20: Altitude code

  • DF5 / DF21: Identity code (squawk code)

  • DF17 / DF18: Automatic Dependent Surveillance-Broadcast (ADS-B)

    • TC=1-4 / BDS 0,8: Aircraft identification and category

    • TC=5-8 / BDS 0,6: Surface position

    • TC=9-18 / BDS 0,5: Airborne position

    • TC=19 / BDS 0,9: Airborne velocity

    • TC=28 / BDS 6,1: Airborne status [to be implemented]

    • TC=29 / BDS 6,2: Target state and status information [to be implemented]

    • TC=31 / BDS 6,5: Aircraft operational status [to be implemented]

  • DF20 / DF21: Mode-S Comm-B messages

    • BDS 1,0: Data link capability report

    • BDS 1,7: Common usage GICB capability report

    • BDS 2,0: Aircraft identification

    • BDS 3,0: ACAS active resolution advisory

    • BDS 4,0: Selected vertical intention

    • BDS 4,4: Meteorological routine air report (experimental)

    • BDS 4,5: Meteorological hazard report (experimental)

    • BDS 5,0: Track and turn report

    • BDS 6,0: Heading and speed report

If you find this project useful for your research, please considering cite this tool as:

@article{sun2019pymodes,
    author={J. {Sun} and H. {V\^u} and J. {Ellerbroek} and J. M. {Hoekstra}},
    journal={IEEE Transactions on Intelligent Transportation Systems},
    title={pyModeS: Decoding Mode-S Surveillance Data for Open Air Transportation Research},
    year={2019},
    doi={10.1109/TITS.2019.2914770},
    ISSN={1524-9050},
}

Resources

Check out and contribute to this open-source project at: https://github.com/junzis/pyModeS

Detailed manual on Mode-S decoding is published at: https://mode-s.org/decode

The API documentation of pyModeS is at: https://mode-s.org/api

Basic installation

Installation examples:

# stable version
pip install pyModeS

# conda (compiled) version
conda install -c conda-forge pymodes

# development version
pip install git+https://github.com/junzis/pyModeS

Dependencies numpy, and pyzmq are installed automatically during previous installations processes.

If you need to connect pyModeS to a RTL-SDR receiver, pyrtlsdr need to be installed manually:

pip install pyrtlsdr

Advanced installation (using c modules)

If you want to make use of the (faster) c module, install pyModeS as follows:

# conda (compiled) version
conda install -c conda-forge pymodes

# stable version
pip install pyModeS

# development version
git clone https://github.com/junzis/pyModeS
cd pyModeS
poetry install -E rtlsdr

View live traffic (modeslive)

General usage:

$ modeslive [-h] --source SOURCE [--connect SERVER PORT DATAYPE]
            [--latlon LAT LON] [--show-uncertainty] [--dumpto DUMPTO]

arguments:
 -h, --help            show this help message and exit
 --source SOURCE       Choose data source, "rtlsdr" or "net"
 --connect SERVER PORT DATATYPE
                       Define server, port and data type. Supported data
                       types are: ['raw', 'beast', 'skysense']
 --latlon LAT LON      Receiver latitude and longitude, needed for the surface
                       position, default none
 --show-uncertainty    Display uncertainty values, default off
 --dumpto DUMPTO       Folder to dump decoded output, default none

Live with RTL-SDR

If you have an RTL-SDR receiver connected to your computer, you can use the rtlsdr source switch (require pyrtlsdr package), with command:

$ modeslive --source rtlsdr

Live with network data

If you want to connect to a TCP server that broadcast raw data. use can use net source switch, for example:

$ modeslive --source net --connect localhost 30002 raw
$ modeslive --source net --connect 127.0.0.1 30005 beast

Example screenshot:

https://github.com/junzis/pyModeS/raw/master/doc/modeslive-screenshot.png

Use the library

import pyModeS as pms

Common functions

pms.df(msg)                 # Downlink Format
pms.icao(msg)               # Infer the ICAO address from the message
pms.crc(msg, encode=False)  # Perform CRC or generate parity bit

pms.hex2bin(str)      # Convert hexadecimal string to binary string
pms.bin2int(str)      # Convert binary string to integer
pms.hex2int(str)      # Convert hexadecimal string to integer
pms.gray2int(str)     # Convert grey code to integer

Core functions for ADS-B decoding

pms.adsb.icao(msg)
pms.adsb.typecode(msg)

# Typecode 1-4
pms.adsb.callsign(msg)

# Typecode 5-8 (surface), 9-18 (airborne, barometric height), and 20-22 (airborne, GNSS height)
pms.adsb.position(msg_even, msg_odd, t_even, t_odd, lat_ref=None, lon_ref=None)
pms.adsb.airborne_position(msg_even, msg_odd, t_even, t_odd)
pms.adsb.surface_position(msg_even, msg_odd, t_even, t_odd, lat_ref, lon_ref)
pms.adsb.surface_velocity(msg)

pms.adsb.position_with_ref(msg, lat_ref, lon_ref)
pms.adsb.airborne_position_with_ref(msg, lat_ref, lon_ref)
pms.adsb.surface_position_with_ref(msg, lat_ref, lon_ref)

pms.adsb.altitude(msg)

# Typecode: 19
pms.adsb.velocity(msg)          # Handles both surface & airborne messages
pms.adsb.speed_heading(msg)     # Handles both surface & airborne messages
pms.adsb.airborne_velocity(msg)

Note: When you have a fix position of the aircraft, it is convenient to use position_with_ref() method to decode with only one position message (either odd or even). This works with both airborne and surface position messages. But the reference position shall be within 180NM (airborne) or 45NM (surface) of the true position.

Decode altitude replies in DF4 / DF20

pms.common.altcode(msg)   # Downlink format must be 4 or 20

Decode identity replies in DF5 / DF21

pms.common.idcode(msg)   # Downlink format must be 5 or 21

Common Mode-S functions

pms.icao(msg)           # Infer the ICAO address from the message
pms.bds.infer(msg)      # Infer the Modes-S BDS register

# Check if BDS is 5,0 or 6,0, give reference speed, track, altitude (from ADS-B)
pms.bds.is50or60(msg, spd_ref, trk_ref, alt_ref)

# Check each BDS explicitly
pms.bds.bds10.is10(msg)
pms.bds.bds17.is17(msg)
pms.bds.bds20.is20(msg)
pms.bds.bds30.is30(msg)
pms.bds.bds40.is40(msg)
pms.bds.bds44.is44(msg)
pms.bds.bds50.is50(msg)
pms.bds.bds60.is60(msg)

Mode-S Elementary Surveillance (ELS)

pms.commb.ovc10(msg)      # Overlay capability, BDS 1,0
pms.commb.cap17(msg)      # GICB capability, BDS 1,7
pms.commb.cs20(msg)       # Callsign, BDS 2,0

Mode-S Enhanced Surveillance (EHS)

# BDS 4,0
pms.commb.selalt40mcp(msg)   # MCP/FCU selected altitude (ft)
pms.commb.selalt40fms(msg)   # FMS selected altitude (ft)
pms.commb.p40baro(msg)    # Barometric pressure (mb)

# BDS 5,0
pms.commb.roll50(msg)     # Roll angle (deg)
pms.commb.trk50(msg)      # True track angle (deg)
pms.commb.gs50(msg)       # Ground speed (kt)
pms.commb.rtrk50(msg)     # Track angle rate (deg/sec)
pms.commb.tas50(msg)      # True airspeed (kt)

# BDS 6,0
pms.commb.hdg60(msg)      # Magnetic heading (deg)
pms.commb.ias60(msg)      # Indicated airspeed (kt)
pms.commb.mach60(msg)     # Mach number (-)
pms.commb.vr60baro(msg)   # Barometric altitude rate (ft/min)
pms.commb.vr60ins(msg)    # Inertial vertical speed (ft/min)

Meteorological reports [Experimental]

To identify BDS 4,4 and 4,5 codes, you must set mrar argument to True in the infer() function:

pms.bds.infer(msg. mrar=True)

Once the correct MRAR and MHR messages are identified, decode them as follows:

Meteorological routine air report (MRAR)

# BDS 4,4
pms.commb.wind44(msg)     # Wind speed (kt) and direction (true) (deg)
pms.commb.temp44(msg)     # Static air temperature (C)
pms.commb.p44(msg)        # Average static pressure (hPa)
pms.commb.hum44(msg)      # Humidity (%)

Meteorological hazard air report (MHR)

# BDS 4,5
pms.commb.turb45(msg)     # Turbulence level (0-3)
pms.commb.ws45(msg)       # Wind shear level (0-3)
pms.commb.mb45(msg)       # Microburst level (0-3)
pms.commb.ic45(msg)       # Icing level (0-3)
pms.commb.wv45(msg)       # Wake vortex level (0-3)
pms.commb.temp45(msg)     # Static air temperature (C)
pms.commb.p45(msg)        # Average static pressure (hPa)
pms.commb.rh45(msg)       # Radio height (ft)

Customize the streaming module

The TCP client module from pyModeS can be re-used to stream and process Mode-S data as you like. You need to re-implement the handle_messages() function from the TcpClient class to write your own logic to handle the messages.

Here is an example:

import pyModeS as pms
from pyModeS.extra.tcpclient import TcpClient

# define your custom class by extending the TcpClient
#   - implement your handle_messages() methods
class ADSBClient(TcpClient):
    def __init__(self, host, port, rawtype):
        super(ADSBClient, self).__init__(host, port, rawtype)

    def handle_messages(self, messages):
        for msg, ts in messages:
            if len(msg) != 28:  # wrong data length
                continue

            df = pms.df(msg)

            if df != 17:  # not ADSB
                continue

            if pms.crc(msg) !=0:  # CRC fail
                continue

            icao = pms.adsb.icao(msg)
            tc = pms.adsb.typecode(msg)

            # TODO: write you magic code here
            print(ts, icao, tc, msg)

# run new client, change the host, port, and rawtype if needed
client = ADSBClient(host='127.0.0.1', port=30005, rawtype='beast')
client.run()

Unit test

uv sync --dev --all-extras
uv run pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymodes-2.21.1.tar.gz (317.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pymodes-2.21.1-cp313-cp313-win_amd64.whl (494.9 kB view details)

Uploaded CPython 3.13Windows x86-64

pymodes-2.21.1-cp313-cp313-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pymodes-2.21.1-cp313-cp313-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pymodes-2.21.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pymodes-2.21.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pymodes-2.21.1-cp313-cp313-macosx_10_13_universal2.whl (644.4 kB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

pymodes-2.21.1-cp312-cp312-win_amd64.whl (495.6 kB view details)

Uploaded CPython 3.12Windows x86-64

pymodes-2.21.1-cp312-cp312-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pymodes-2.21.1-cp312-cp312-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pymodes-2.21.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pymodes-2.21.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pymodes-2.21.1-cp312-cp312-macosx_10_13_universal2.whl (647.8 kB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

pymodes-2.21.1-cp311-cp311-win_amd64.whl (494.4 kB view details)

Uploaded CPython 3.11Windows x86-64

pymodes-2.21.1-cp311-cp311-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pymodes-2.21.1-cp311-cp311-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pymodes-2.21.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pymodes-2.21.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pymodes-2.21.1-cp311-cp311-macosx_10_9_universal2.whl (647.9 kB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

pymodes-2.21.1-cp310-cp310-win_amd64.whl (494.6 kB view details)

Uploaded CPython 3.10Windows x86-64

pymodes-2.21.1-cp310-cp310-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pymodes-2.21.1-cp310-cp310-musllinux_1_2_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pymodes-2.21.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pymodes-2.21.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

pymodes-2.21.1-cp310-cp310-macosx_10_9_universal2.whl (643.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file pymodes-2.21.1.tar.gz.

File metadata

  • Download URL: pymodes-2.21.1.tar.gz
  • Upload date:
  • Size: 317.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pymodes-2.21.1.tar.gz
Algorithm Hash digest
SHA256 b7a0aa0d19e2d248a625b5e83060844316b25b221b0487709adf1fe632c4f6f3
MD5 6fe63063edb129cc1e0f1080675dce59
BLAKE2b-256 0aff9511a63766a2f4876055e8f343cfeedef923a2fa08f7f8821a446d048d1f

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pymodes-2.21.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 494.9 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pymodes-2.21.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 42cbd67e6468bef0861243872220fafe6fd9ec88b6e573b74b239a476c5dbb14
MD5 048e490773a6d513555b62687399f2fb
BLAKE2b-256 a67f5509c502a408eaaf4e77f497e10b7dc9f18fedd2e06da051ea2a31684400

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8238d0569ba81f03978165783733b9e961e9f2a55d97f5e8de2f6e11125f0754
MD5 82869ddfa6b380c079bbbeaf64f994aa
BLAKE2b-256 7628efaa80883a04e20de886c128f8e793dbf2bd1f995dd06cf2c25ca76fd841

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e929cfefcd4c66f60bbe6e5dac65554928ad4260187be897fde9e99e44e71f7f
MD5 de1faf4ec8194dde3e98af60ba9e769c
BLAKE2b-256 5b80ba233cfe2e0b059226bfd35149a8243fc2c947a7f83c0a6a89a776ff5baf

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f645d7f6073b7718232c25f3551fd08dcfba15906d66101b3c61bd95518ef30b
MD5 eaf53997e0d1b950ef69f8070ac94cab
BLAKE2b-256 5d55c2c94c6162c0eb0bcf65dbc00cce3c20d0d091319b1a1c195b59f942d5b8

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 70849d243e7ccef91f3ad5e69e1a233760c1435b1ee480fc109952faf82ded7f
MD5 1a23995f8a8c4619260cccea8c83bb2a
BLAKE2b-256 6d1fa924212dc0227c34f469b1f825864f0ccb9da29fbcfd8715688616cfda46

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 7150c92109ba503c1ed1dc21027382525aa5166d74ac21706c7428e564495ab5
MD5 cbe3d06cfa3c80b4bc62d7130cf21f25
BLAKE2b-256 8ba52e6069cfe0c4482c50dcc3af537cdfe7645856bb011dc098d899a679dfba

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pymodes-2.21.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 495.6 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pymodes-2.21.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b46cb4ebc0850271b1c03b03fc2417c61756db618ae8f732e935dbfca81d81bd
MD5 b827c7ae1f7d90a2c3bf541d48f97f19
BLAKE2b-256 9ac6524c5538ec4bdf23a1b7ff563028526178a0f730c02303989fcb8efd075f

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a176e1ad6efb915a6f55f8203c5a2650da9da59797de4a2537e5dd5f79136d45
MD5 99e75c3827c51ab3f2ff6f3a3f7c9c80
BLAKE2b-256 9d9124f5bbbc7503359a7af5c1208fc17aa9ffc13157501f0addf9de99ab1b5f

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 55be696f37d27d6cc83bd8db96493edc8a3a7f96c8172d2a2eb180ce54056484
MD5 73f433ee0dcb561f0c8bcefffc8f3a91
BLAKE2b-256 46eeb7eff627b7c69d1a366be8cb009932edb2c7a6db03ac09170488a098f1b3

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3cf5c47bfc6314b0430bb44935a44aadc7304b4f94aac63a64eb72997d1c4cbc
MD5 872ca460f6fde2ad6e1caccee247f5a1
BLAKE2b-256 58ab03f94090dd491152e5129a8d73e9a538e8527443802b6f400e2f14293545

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 abe13300dbebd1168620eebff7defc8a280ca0fa994e0f9eef6162d16185b750
MD5 ba25ebe94d81e979e53e9ced2ef21c08
BLAKE2b-256 cad0382abd164a5f5f8cfd5d60bf908aba15ff11fe0632e95762d9f48384436f

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 ad0637d413caaec388910ce4db29cc3adddecbe81cf22cd2c689f583975c2e11
MD5 5bcbc5aaa23a147d423bc3a171b2ccce
BLAKE2b-256 febbd539691498ab1bd17edededdac11fe3b41a07500904b0354d11878da4a3e

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pymodes-2.21.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 494.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pymodes-2.21.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b504363a39b6dd3f525a67f91c83e16e920f1d5780774a40d95a2c87e0337c94
MD5 b6a1a433d9ab8b246b4d5140b9ae4f49
BLAKE2b-256 c6e3773636414a0cabee9edc4b867539d52776325e47d284ed5b8145044c8837

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 82340c0cc6b736c8672863b6d84e53e1ff0d5e4275ea863b346a95369de97e56
MD5 46fe4256ec8d6cca69cb08455da116bc
BLAKE2b-256 89495f2566e1bc9ef7116ae255f1c988f4ef60fbcfe86e93ba778e5e552f7a8c

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4ef1b75f0f4349fcfba548e1511e21106189a246fee65dd55f342a1f14eb7e52
MD5 a0ad5439fa4f7dedadeb3d676c0ce421
BLAKE2b-256 b49fc4e0fe0b333345d499a5e3344c86b264febb9db00c862cf934991aafa538

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 05afc4e14ffa825ef9ed3f56bf7e73f2705ff5b136232ed550af21d340120ffb
MD5 aa1ce35db34e690934c0c4744a1d6f20
BLAKE2b-256 c5366d6e3b1a6e2ed69612747eeff09d3a066eba1df5823f040939588b836fd2

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5d1be24662d6d86360947c8c34855138b749b8c26cc8d486a31e499ebc6264f5
MD5 aaec0a119b9df8ae50699e957c3ca4eb
BLAKE2b-256 28539219e6f0b666112a0524ccf249eaec4fd65d53b45d388ab9308a8235ba33

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 d005b58a35fd02690711889851734d5c5b3e14e83f9b25b312cbfddd0c706c71
MD5 98366039ef9cd0b7db55aec44cdee4ff
BLAKE2b-256 ec96479552c0aa0e3fa9921336fa40943facc3b0206bdfdddf6d2ba67d6a09e4

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pymodes-2.21.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 494.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pymodes-2.21.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 48f4c8b158c3aaade3bb63098fa36034c879f174b7ea6d6fda07e24685223af2
MD5 8856e8a0becfe157773fdecbe23f7dcc
BLAKE2b-256 3763f4ade3dd50362978a2330f78581cc7f980e9a46d95fad4af44977ce06072

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 876fb276c29fa8ecaf07be79c2d74475b63732124bb87e764aeab3841b9113df
MD5 1b9e24811aff79087c30ba5c200faf70
BLAKE2b-256 618290a0984a97ac4e861c60b3d1fc5d7e9f700d2b4c2e21b1d7de4f6dab8a9e

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4a6290f5cdf0595ef90a63aaea90c1a1ec7ae699ac0dbe41e7ab7d9358b6528e
MD5 03819ce770f7e5899db9f4f71a39bc58
BLAKE2b-256 504768bbf96a46130e21317c12b3178d7d7fa8349fb0a656e9bca547d56ae7c0

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 190d4eba517e5087d150a91b1c120ba64ca02cb3634d6e2b719c8d8b4982228f
MD5 73b042f334cd4241762b73d7c09fac07
BLAKE2b-256 31f51b2b004bb8b38157f7288ae648333754ae1a62a265e369dee76e96c7058d

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 69cb00fff1388530f7925ce08706828eb69497c662f7800e3d7dc3e59fd86d50
MD5 e6bb2258ca1f4a3318e54bc59863d742
BLAKE2b-256 6e1d9958c962eb72920e5a4ef6d2d57ff3812c9aac8f065b829da3022b5086d4

See more details on using hashes here.

File details

Details for the file pymodes-2.21.1-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pymodes-2.21.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 d015e09d22908203893fb3482579ba769c5322e77b2f402f016ad1a3d11d6df7
MD5 0b326b2203367622742f60160764c24e
BLAKE2b-256 d5e02465ef4ab6928ccf1d1e818a62c40849deff6b90414ab89005295e3d3019

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page