Skip to main content

Read and write Event Stream (.es) files

Project description

Event Stream

This repository contains an Event Stream Python reader implemented in C++, as well as Matlab bindings.

  1. Python
  2. Matlab

Python

pip3 install event_stream

Documentation

The event_stream library provides three classes: Decoder, IndexedDecoder and Encoder:

  • Decoder reads constant-size byte buffers from an Event Stream file and returns variable-size event buffers
  • IndexedDecoder reads the entire file when created (without storing events in memory) to build an index, and can be used to fetch events at arbitrary timestamps
  • UdpDecoder reads event-stream encoded UDP packets (each packet must start with a uint64 little-endian absolute timestamp then contain an ES compliant stream)
  • Encoder writes event buffers to a file

Use Decoder if you want to process every event without delay. Use IndexedDecoder if you need to move back and forth while reading the file, for example if your are writing a file player with a clickable timeline.

The first argument to Decoder, IndexedDecoder and Encoder is a file name. It must be a path-like object. IndexedDecoder takes a second argument, the keyframe duration in µs. Encoder takes three other arguments, the evvent type and the sensor's width and height.

All three classes are contexts managers compatible with the with operator.

The detailed documentation for each class consists in a commented example (see below). There are more examples in the examples directory. Run examples/download.py first to download the media files used by the example scripts (12.8 MB).

Decoder

import event_stream

# Decoder's only argument is an Event Stream file path
# decoder is an iterator with 3 additional properties: type, width and height
#     type is one of 'generic', 'dvs', 'atis' and 'color'
#     if type is 'generic', both width and height are None
#     otherwise, width and height represent the sensor size in pixels
decoder = event_stream.Decoder('/path/to/file.es')
if decoder.type == 'generic':
    print('generic events')
else:
    print(f'{decoder.type} events, {decoder.width} x {decoder.height} sensor')

# chunk is a numpy array whose dtype depends on the decoder type:
#     generic: [('t', '<u8'), ('bytes', 'object')]
#     dvs: [('t', '<u8'), ('x', '<u2'), ('y', '<u2'), (('on', 'p'), '?')]
#     atis: [('t', '<u8'), ('x', '<u2'), ('y', '<u2'), (('exposure', 'e'), '?'), (('polarity', 'p'), '?')]
#     color: [('t', '<u8'), ('x', '<u2'), ('y', '<u2'), ('r', '?'), ('g', '?'), ('b', '?')]
# chunk always contains at least one event
for chunk in decoder:
    print('{} events, ts = [{} µs, {} µs]'.format(len(chunk), chunk['t'][0], chunk['t'][-1]))

IndexedDecoder

import event_stream

# IndexedDecoder's first argument is an Event Stream file path
#     its second argument is the duration of each keyframe in µs
#     the first keyframe starts with the first event
#     all the keyframes are offset accordingly
# decoder is an object with 3 properties: type, width and height
#     type is one of 'generic', 'dvs', 'atis' and 'color'
#     if type is 'generic', both width and height are None
#     otherwise, width and height represent the sensor size in pixels
# decoder has two methods: keyframes and chunk
decoder = event_stream.IndexedDecoder('/path/to/file.es', 40000)
if decoder.type == 'generic':
    print('generic events')
else:
    print(f'{decoder.type} events, {decoder.width} x {decoder.height} sensor')

# number of generated keyframes (one every 40000 µs here)
keyframes = decoder.keyframes()

for keyframe_index in range(0, keyframes):
    # keyframe_index must be in the range [0, keyframes[
    # the returned events have timestamps in the range
    #     [keyframe_index * T, (keyframe_index + 1) * T[
    #     where T is the second argument passed to IndexedDecoder
    # chunk is a numpy array whose dtype depends on the decoder type:
    #     generic: [('t', '<u8'), ('bytes', 'object')]
    #     dvs: [('t', '<u8'), ('x', '<u2'), ('y', '<u2'), (('on', 'p'), '?')]
    #     atis: [('t', '<u8'), ('x', '<u2'), ('y', '<u2'), (('exposure', 'e'), '?'), (('polarity', 'p'), '?')]
    #     color: [('t', '<u8'), ('x', '<u2'), ('y', '<u2'), ('r', '?'), ('g', '?'), ('b', '?')]
    # chunk may be empty
    chunk = decoder.chunk(keyframe_index)
    if len(chunk) > 0:
        print('{} / {}, {} events, ts = [{} µs, {} µs]'.format(
            keyframe_index + 1,
            keyframes,
            len(chunk),
            chunk['t'][0],
            chunk['t'][-1]))
    else:
        print('{} / {}, 0 events'.format(keyframe_index + 1, keyframes))

UdpDecoder

import event_stream

# UdpDecoder's only argument is the port to which to bind
# decoder is an iterator with 3 additional properties: type, width and height
#     type is one of 'generic', 'dvs', 'atis' and 'color'
#     if type is 'generic', both width and height are None
#     otherwise, width and height represent the sensor size in pixels
# The additional properties are updated everytime a packet is received
decoder = event_stream.UdpDecoder(12345)

# chunk is a numpy array whose dtype depends on the packet type:
#     generic: [('t', '<u8'), ('bytes', 'object')]
#     dvs: [('t', '<u8'), ('x', '<u2'), ('y', '<u2'), ('on', '?')]
#     atis: [('t', '<u8'), ('x', '<u2'), ('y', '<u2'), ('exposure', '?'), ('polarity', '?')]
#     color: [('t', '<u8'), ('x', '<u2'), ('y', '<u2'), ('r', '?'), ('g', '?'), ('b', '?')]

for chunk in decoder:
    print('{} events, ts = [{} µs, {} µs]'.format(len(chunk), chunk['t'][0], chunk['t'][-1]))

Encoder

# Encoder's first argument is an Event Stream file path
#     its second argument is the event type, one of 'generic', 'dvs', 'atis' and 'color'
#     its third and fourth arguments are the sensor's width and height in pixels
#     The width and height are ignored if type is 'generic'
encoder = event_stream.Encoder('/path/to/file.es', 'dvs', 1280, 720)

# write adds an event buffer to the file
# the events must be sorted in order of increasing timestamp
# the chunk passed to write must be a structured numpy array whose dtype depends on the event type:
#     generic: [('t', '<u8'), ('bytes', 'object')]
#     dvs: [('t', '<u8'), ('x', '<u2'), ('y', '<u2'), ('on', '?')]
#     atis: [('t', '<u8'), ('x', '<u2'), ('y', '<u2'), ('exposure', '?'), ('polarity', '?')]
#     color: [('t', '<u8'), ('x', '<u2'), ('y', '<u2'), ('r', '?'), ('g', '?'), ('b', '?')]
first_chunk = numpy.array([
    (0, 50, 100, True),
    (100, 1203, 641, False),
    (200, 73, 288, False),
    (300, 901, 99, True),
], dtype=[('t', '<u8'), ('x', '<u2'), ('y', '<u2'), ('on', '?')])
encoder.write(first_chunk)

# for convenience, event_stream provides dtype constants:
#     generic_dtype, dvs_dtype, atis_dtype and color_dtype
second_chunk = numpy.array([
    (400, 50, 100, True),
    (400, 1203, 641, False),
    (401, 73, 288, False),
    (401, 901, 99, True),
], dtype=event_stream.dvs_dtype)
encoder.write(second_chunk)

Matlab

Setup

After downloading this repository (zip file), run the following commands in Matlab:

cd /path/to/event_stream
cd matlab
mex event_stream_decode.cpp
mex event_stream_encode.cpp
mex event_stream_udp.cpp

The generated files (extension .mexa64, .mexmaci64 or .mexw64 depending on your operating system) can be placed in any directory. They contain the functions event_stream_decode, event_stream_encode and event_stream_udp. You can remove the rest of the repositrory from your machine if you want.

Documentation

event_stream_decode

event_stream_decode reads events from a file.

[header, events] = event_stream_decode('/path/to/file.es');
header =

  struct with fields:

      type: 'dvs'
     width: 320
    height: 240

events =

  struct with fields:

     t: [473225×1 uint64]
     x: [473225×1 uint16]
     y: [473225×1 uint16]
    on: [473225×1 logical]

header is a struct with at least one field, type. header.type is either 'generic', 'dvs', 'atis' or 'color'. Unless header.type is 'generic', header has two extra fields, width and height. They encode the sensor size in pixels.

events is a struct whose fields are numerical arrays of equal length. Each array encodes one property of the events in the file (for example the timestamp t). The number of fields and their names depend on header.type:

  • 'generic':
    • t: [n×1 uint64]
    • bytes: [n×1 string]
  • 'dvs':
    • t: [n×1 uint64]
    • x: [nx1 uint16]
    • y: [nx1 uint16]
    • on: [nx1 logical]
  • 'atis':
    • t: [n×1 uint64]
    • x: [nx1 uint16]
    • y: [nx1 uint16]
    • exposure: [nx1 logical]
    • polarity: [nx1 logical]
  • 'color':
    • t: [n×1 uint64]
    • x: [nx1 uint16]
    • y: [nx1 uint16]
    • r: [nx1 uint8]
    • g: [nx1 uint8]
    • b: [nx1 uint8]

event_stream_encode

event_stream_encode writes events to a file. The fields names and types must match those returned by event_stream_decode.

header = struct(...
    'type', 'dvs',...
    'width', uint16(320),...
    'height', uint16(240))

events = struct(...
    't', uint64([100; 200; 300]),...
    'x', uint16([303; 4; 42]),...
    'y', uint16([105; 201; 6]),...
    'on', logical([true; true; false]))

event_stream_encode('/path/to/file.es', header, events);

event_stream_udp

udp_receiver = udpport(
    "datagram",
    "IPV4",
    "LocalPort", 12345,
    "EnablePortSharing", true,
    "Timeout", 3600
);
while true
    packet = read(udp_receiver, 1, "uint8");
    [header, events] = event_stream_udp(packet.Data)
end

header and events have the same structure as the data returned by event_stream_decode.

Contribute

To format the code, run:

clang-format -i sepia.hpp python/*.cpp matlab/*.cpp

Publish

  1. Bump the version number in setup.py.

  2. Create a new release on GitHub.

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

event_stream-1.6.3.tar.gz (23.6 kB view details)

Uploaded Source

Built Distributions

event_stream-1.6.3-cp312-cp312-win_amd64.whl (53.5 kB view details)

Uploaded CPython 3.12 Windows x86-64

event_stream-1.6.3-cp312-cp312-win32.whl (51.6 kB view details)

Uploaded CPython 3.12 Windows x86

event_stream-1.6.3-cp312-cp312-musllinux_1_2_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

event_stream-1.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (747.5 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

event_stream-1.6.3-cp312-cp312-macosx_11_0_arm64.whl (56.8 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

event_stream-1.6.3-cp312-cp312-macosx_10_9_x86_64.whl (62.0 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

event_stream-1.6.3-cp311-cp311-win_amd64.whl (53.5 kB view details)

Uploaded CPython 3.11 Windows x86-64

event_stream-1.6.3-cp311-cp311-win32.whl (51.5 kB view details)

Uploaded CPython 3.11 Windows x86

event_stream-1.6.3-cp311-cp311-musllinux_1_2_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

event_stream-1.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (744.1 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

event_stream-1.6.3-cp311-cp311-macosx_11_0_arm64.whl (56.7 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

event_stream-1.6.3-cp311-cp311-macosx_10_9_x86_64.whl (61.8 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

event_stream-1.6.3-cp310-cp310-win_amd64.whl (53.5 kB view details)

Uploaded CPython 3.10 Windows x86-64

event_stream-1.6.3-cp310-cp310-win32.whl (51.5 kB view details)

Uploaded CPython 3.10 Windows x86

event_stream-1.6.3-cp310-cp310-musllinux_1_2_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

event_stream-1.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (743.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

event_stream-1.6.3-cp310-cp310-macosx_11_0_arm64.whl (56.7 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

event_stream-1.6.3-cp310-cp310-macosx_10_9_x86_64.whl (61.8 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

event_stream-1.6.3-cp39-cp39-win_amd64.whl (53.5 kB view details)

Uploaded CPython 3.9 Windows x86-64

event_stream-1.6.3-cp39-cp39-win32.whl (51.5 kB view details)

Uploaded CPython 3.9 Windows x86

event_stream-1.6.3-cp39-cp39-musllinux_1_2_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

event_stream-1.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (743.4 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

event_stream-1.6.3-cp39-cp39-macosx_11_0_arm64.whl (56.7 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

event_stream-1.6.3-cp39-cp39-macosx_10_9_x86_64.whl (61.8 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

event_stream-1.6.3-cp38-cp38-win_amd64.whl (53.4 kB view details)

Uploaded CPython 3.8 Windows x86-64

event_stream-1.6.3-cp38-cp38-win32.whl (51.4 kB view details)

Uploaded CPython 3.8 Windows x86

event_stream-1.6.3-cp38-cp38-musllinux_1_2_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

event_stream-1.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (742.7 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

event_stream-1.6.3-cp38-cp38-macosx_11_0_arm64.whl (56.5 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

event_stream-1.6.3-cp38-cp38-macosx_10_9_x86_64.whl (61.6 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

Details for the file event_stream-1.6.3.tar.gz.

File metadata

  • Download URL: event_stream-1.6.3.tar.gz
  • Upload date:
  • Size: 23.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.4

File hashes

Hashes for event_stream-1.6.3.tar.gz
Algorithm Hash digest
SHA256 a5ba0297bf81109294997673e1a9ad9835f75d6d7eabe92f16f1a3c176cbe944
MD5 8a5de1ee85a44d2ba1d0e2d04adf6a65
BLAKE2b-256 b8a31237171a7a39eda68d09fde10cc409bdcb3362d30303ef69ed53a16798bb

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6fe9150d0d6a951bc75b729a40aaa84085695531df73e87cd7447c3db9a14c41
MD5 fc17fa9dd47e6878322dee7e861cf77a
BLAKE2b-256 03b43664c5c62bd1a462a80bbb39f65b594df11e42730a7547205a8b0e175dc8

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp312-cp312-win32.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 a67a7719a32ac50894423490e121548c5101c33975f4a5ef69a5e6252e24a514
MD5 392831d9595d8a3563a7afcd78a54d0c
BLAKE2b-256 60b38d746e0c73b9e28c3e489ba76d5203f1760b0dd34a71a51826c7fe23881c

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e40b3b59c5ebdcfb000394473dc390500d7ca88e002a89d381ae7e2102a6fc0f
MD5 3d95ed6d0937c9cdee5c98c02cba1bff
BLAKE2b-256 b020779ba344ba0b7b7f433849c2cca232598a83de98053d35288d9d800ad353

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d24a9bb86260adfdd6c13ebb6bee89923f09a9eaae20bc56cab74eccb16331ed
MD5 11ec2df30ae6232f8d31aa7aa61f5501
BLAKE2b-256 11a6fa5ff5e0279fd50c0792720ed279461994dd8f0611b3fb3ae8093567f618

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 39d502555a279a3a77b7d60e665e374731ad48aa67893544c6876385a94788de
MD5 93ef0ce518cf3412c90361e7e307f4fc
BLAKE2b-256 63904b79452fff921a5bb4c3241564d6b6d49805f915bff661e170a97fdde5d6

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5cc5bd3acaaea57259d9fb3fab8acca4c30d20839066d69bd6839fe9a795e8fe
MD5 7819dca04461a1703cb9a9bd8e7e1115
BLAKE2b-256 d4dc822c17bc2dadd8cbca8347728dfdce2e171008f892bb5bc1dacb2346a6b2

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 82740cbdd3f3afac02defc82f21a4cddf11455d240d672ca61090895ee4bb393
MD5 ba3f12326dd664a150d6c0f837487145
BLAKE2b-256 a2d60d14a4f88c2918097eaed1da57306da7bca104976631c022a9cb414ba506

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp311-cp311-win32.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 1c25e929dbced9f1f145ba098a5571734d1e375119f459bf747ff25c4ca56c7b
MD5 e1458641f15e05776fbd4e5d703f2063
BLAKE2b-256 7352693d51ab2843fce39a3de67c934e14d89ee5e25ebe012b63d903d3fc17c9

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a3888254349ad5c03b045ff3ae0e5a21f769e45175e3fc338da63f55e5fd333e
MD5 273c7dd7c2667907ee4c5adc603e9817
BLAKE2b-256 198fba139bf9f34e529d81355cf911bdcf19676a48e57743f7d5d142f5464488

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dc7f3a4fa33c619f995b822927b28ec14a4eeff1377e077c0c52d61977e06788
MD5 6a67322aaf53c04f7eac744b1e85673a
BLAKE2b-256 c62d77ccb6b8e6639d35c6973382a58f5de4b132724f1f6917446d613a059d82

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2490f8d560d81af38be07417761253619a3cf7af6775c80570300d42184ebc52
MD5 b8a6db5d77b7238f2ba60c1ced85f887
BLAKE2b-256 ca5c25fc461e4c8824b8fa2da196519902e2be07b1a34a7188ae6150ba64fc4b

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2c2eab33ef25be77156102f99fe40296249d8d6526066ecd76887933ce2a533d
MD5 256b4365f87b2c772be03add9ad43b49
BLAKE2b-256 e508c727e9282647c1b1e0852b5a27b47622cfeac10ef05b3c35c9d601948fc9

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a4b45841f8696230f7a1ea2ba56b70ee18ca4a2ba10ad209a3949ea1256e22fe
MD5 222db5ca014122581e821fb8ed527c55
BLAKE2b-256 721ceac11924524b9dfc38d404b4406d33fb82528dc492da24283eba67835c1d

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp310-cp310-win32.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 dfbfd9c79dc2bc7737bd7d34ba3ee4183299cd1d693d0511bb9e0380d146cd42
MD5 14714e64c30172174909c0f36f628ead
BLAKE2b-256 b07134949e9811abd1eca803ba50ba55e2c1bfb7a40f219d994455798f8a3ca0

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e77e29a12e9a628ad20eaf0fae7dd654db1e80a5b65e76bb3449ed357abf9c29
MD5 88309d5fe0f860acdbf497d108a57f62
BLAKE2b-256 0138d04bd2f39f3e38182cbbd4af9a9869f809541558174e80e4d7a30a277c8b

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 661e83e89a06931af823e34ae2b76f70b8c55327900f77f82bddd45a92b2f56d
MD5 9cb729d6c2a5846d8e8f900df6921e82
BLAKE2b-256 d6044fe41fc2b3105a353f492ca71a369162d336d40bea8fc159a92894a7ce25

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 53f89530cbacdc0dbb3fe0d929cb65165aa1529b6db1d3e1ec8af5a9019e8d93
MD5 2f3f0e48baacc4e498358e2a700c80c9
BLAKE2b-256 f3f470b00b2ef38839da014dc88c9521b9ff242467fc081ce39e1c23889954cb

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6f861091f6c14c81bcb104e35fef95ca8e6ba58dfc256a10fce021eab1bd1934
MD5 86c9cef3dcd43d0455ab9cb55e299b59
BLAKE2b-256 3a9aa050eef9f735c383f5e75636d94253024ec3e6efce57a5c6b9cc5ba08a97

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 fc0079f562470dfb552df03801ab08a2f1620d02a2a96ce1244f5958b61b2a0f
MD5 4a48795736a60426c5bff813caa2441d
BLAKE2b-256 608128688992ce9071516e695d884c7b0f0dd77547d95f7147e8c4260c649956

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp39-cp39-win32.whl.

File metadata

  • Download URL: event_stream-1.6.3-cp39-cp39-win32.whl
  • Upload date:
  • Size: 51.5 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.4

File hashes

Hashes for event_stream-1.6.3-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 f48587662c00b6a3daf283f4388c2a03308508ac36acfce1b7f2049e45d3d171
MD5 bd9f6c276ac3c5ae324eccbbe8336b46
BLAKE2b-256 7e5ec3f48c0a530bac2504eff109cc5bd9653b9f0d473f30ea9df49a51210ae3

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e8d3db5c7053e251f3298fdeba4c55499abddeb32870df4d5c082b6135b5693c
MD5 85d580120eed67c9519a3914bd177ce3
BLAKE2b-256 56749a9c15ae7a2a6ed67ea20311be67646ee85921ae22cd99e32c6b4559284d

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6fd66495b7901ef622f36e86fdeb8c96715cd690c1fe7170d2204a81bb89119d
MD5 5e54badd6742277f0a95592fe0f1f9d4
BLAKE2b-256 898ac0f0e994c7d0697609d867792b26b5dfeb4a4904767bac3d6556a597cb5b

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1d06b0e7ec9e37af5d1aeec3f09697f8635b53556a5374875d164acf9b017c4a
MD5 591880a62665c537db8dc1a1711040a5
BLAKE2b-256 4c49b180108a705d40185098404c9d3dad1254d767c80f4904e24341e140bd9b

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0375557f746eafeb51948294e95439603d70b3f8ddb2afb6a4d2e98cb07284e8
MD5 4993760a9461f93d13c00ed7a2db3bb2
BLAKE2b-256 5180fc90f5f13581c47ee942bb8ae7adebdcb3e10f2235c0a05487706fe1355d

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 dda97e036f0a485af2dc79d69709ddec14e85a202242e49e4baee301e026dbbf
MD5 4c119d0bf7884fc869260bac6f74f266
BLAKE2b-256 6a7b00b44a0b0d3dba25baf0589604edf4ceab34891cf5e15dcc1eacf5793a61

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp38-cp38-win32.whl.

File metadata

  • Download URL: event_stream-1.6.3-cp38-cp38-win32.whl
  • Upload date:
  • Size: 51.4 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.4

File hashes

Hashes for event_stream-1.6.3-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 04614d6e6a1e6ee61943ee2c6877316fe55fce2378c284b8a066cc190590f235
MD5 192faaf0e390e0cd541ee217b15eb3df
BLAKE2b-256 1cd16d7e7a36cefd4d6eafe02295fc7a111fe87dc63d0f6320fb8c1e2d7461ab

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5eb6ea6c221451d13d778204b61fe35c52c5657b0bab02871c3f5db9467df213
MD5 afadbfcc1ad03160107b2bba28ea48b1
BLAKE2b-256 24ae018d8b8107a6561c6f9c055f9aa1ea93908e92096a2f290fee5d59db1a8a

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d580000b710b86b06719dd7dbd95cd50aeeb6bdcd335526d8b92bb7580fe0ad1
MD5 b11458f0658ec23e4f8d406cf2506d01
BLAKE2b-256 53f3e16af37a3b806b3ae82b016e8905ccc8c74de40c7744a04519d906d1a9db

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 afc0d196695293bd5b13961b609083e66a98b14040ad5bb21b9e1578f8f9d223
MD5 94b1c06fd5a8df6f84b81dfc77e3e159
BLAKE2b-256 202e571f6f28b497fe3140d7e3689a19e75c47bf5552feb5a71d0cfbb76e4ecc

See more details on using hashes here.

File details

Details for the file event_stream-1.6.3-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for event_stream-1.6.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 44bdbd1999daa477f56eb15fcd1d52408b557e710153df8575e9beec374e4b01
MD5 ed7b3568b9862ebd7e2430e6e3961fee
BLAKE2b-256 3cb291b829bcc5fd773961c2759592ebf74ae3a841e43bb9549f68de4acb7fc3

See more details on using hashes here.

Supported by

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