Skip to main content

In-process CPython frame stack sampler

Project description

Echion

Near-zero-overhead, in-process CPython frame stack sampler with async support

Synopsis

Echion is an in-process CPython frame stack sampler. It can achieve near-zero-overhead, similar to Austin, by sampling the frame stack of each thread without holding the GIL. Native stacks can be sampled too, but the overhead is higher.

Echion is also the first example of a high-performance sampling async profiler for CPython.

Installation

Currently Echion is available to install from PyPI with

pip install echion

Alternativey, if a wheel is not available for your combination of platform and architecture, it can be installed from sources with

pip install git+https://github.com/p403n1x87/echion

Compilation requires a C++ compiler and static versions of the libunwind and lzma libraries.

Usage

The following is the output of the echion --help command.

usage: echion [-h] [-i INTERVAL] [-c] [-n] [-o OUTPUT] [-s] [-w] [-v] [-V] ...

In-process CPython frame stack sampler

positional arguments:
  command               Command string to execute.

options:
  -h, --help            show this help message and exit
  -i INTERVAL, --interval INTERVAL
                        sampling interval in microseconds
  -c, --cpu             sample on-CPU stacks only
  -x EXPOSURE, --exposure EXPOSURE
                        exposure time, in seconds
  -m, --memory          Collect memory allocation events
  -n, --native          sample native stacks
  -o OUTPUT, --output OUTPUT
                        output location (can use %(pid) to insert the process ID)
  -p PID, --pid PID     Attach to the process with the given PID
  -s, --stealth         stealth mode (sampler thread is not accounted for)
  -w WHERE, --where WHERE
                        where mode: display thread stacks of the given process
  -v, --verbose         verbose logging
  -V, --version         show program's version number and exit

The output is written to a file specified with the --output option. Curretly, this is in the format of the normal Austin format, that is collapsed stacks with metadata at the top. This makes it easy to re-use existing visualisation tools, like the Austin VS Code extension.

Compatibility

Supported platforms: Linux (amd64, i686), Darwin (amd64, aarch64)

Supported interpreters: CPython 3.8-3.11

Notes

Attaching to a process (including in where mode) requires extra permissions. On Unix, you can attach to a running process with sudo. On Linux, one may also set the ptrace scope to 0 with sudo sysctl kernel.yama.ptrace_scope=0 to allow attaching to any process. However, this is not recommended for security reasons.

Where mode

The where mode is similar to Austin's where mode, that is Echion will dump the stacks of all running threads to standard error. This is useful for debugging deadlocks and other issues that may occur in a running process.

When running or attaching to a process, you can also send a SIGQUIT signal to dump the stacks of all running threads. The result is similar to the where mode. You can normally send a SIGQUIT signal with the CTRL+\ key combination.

Memory mode

Besides wall time and CPU time, Echion can be used to profile memory allocations. In this mode, Echion tracks the Python memory domain allocators and accounts for each single event. Because of the tracing nature, this mode introduces considerable overhead, but gives pretty accurate results that can be used to investigate potential memory leaks. To fully understand that data that is collected in this mode, one should be aware of how Echion tracks allocations and deallocations. When an allocation is made, Echion records the frame stack that was involved and maps it to the returned memory address. When a deallocation for a tracked memory address is made, the freed memory is accounted for the same stack. Therefore, objects that are allocated and deallocated during the tracking period account for a total of 0 allocated bytes. This means that all the non-negative values reported by Echion represent memory that was still allocated by the time the tracking ended.

Since Echion 0.3.0.

Why Echion?

Sampling in-process comes with some benefits. One has easier access to more information, like thread names, and potentially the task abstraction of async frameworks, like asyncio, gevent, ... . Also available is more accurate per-thread CPU timing information.

Currently, Echion supports sampling asyncio-based applications, but not in native mode. This makes Echion the very first example of an async profiler for CPython.

Echion relies on some assumptions to collect and sample all the running threads without holding the GIL. This makes Echion very similar to tools like Austin. However, some features, like multiprocess support, are more complicated to handle and would require the use of e.g. IPC solutions. Furthermore, Echion normally requires that you install it within your environment, wheareas Austin can be installed indepdendently.

How it works

On a fundamental level, there is one key assumption that Echion relies upon:

The interpreter state object lives as long as the CPython process itself.

All unsafe memory reads are performed indirectly via copies of data structure obtained with the use of system calls like process_vm_readv. This is essentially what allows Echion to run its sampling thread without the GIL.

As for attaching to a running process, we make use of the hypno library to inject Python code that bootstraps Echion into the target process.

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

echion-0.3.3.tar.gz (711.3 kB view details)

Uploaded Source

Built Distributions

echion-0.3.3-cp312-cp312-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

echion-0.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (881.4 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

echion-0.3.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (869.7 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686

echion-0.3.3-cp312-cp312-macosx_11_0_arm64.whl (101.0 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

echion-0.3.3-cp312-cp312-macosx_10_9_x86_64.whl (107.4 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

echion-0.3.3-cp312-cp312-macosx_10_9_universal2.whl (163.7 kB view details)

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

echion-0.3.3-cp311-cp311-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

echion-0.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (852.0 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

echion-0.3.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (841.9 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686

echion-0.3.3-cp311-cp311-macosx_11_0_arm64.whl (100.6 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

echion-0.3.3-cp311-cp311-macosx_10_9_x86_64.whl (107.2 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

echion-0.3.3-cp311-cp311-macosx_10_9_universal2.whl (163.1 kB view details)

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

echion-0.3.3-cp310-cp310-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

echion-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (835.7 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

echion-0.3.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (823.7 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686

echion-0.3.3-cp310-cp310-macosx_11_0_arm64.whl (100.1 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

echion-0.3.3-cp310-cp310-macosx_10_9_x86_64.whl (106.5 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

echion-0.3.3-cp310-cp310-macosx_10_9_universal2.whl (161.9 kB view details)

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

echion-0.3.3-cp39-cp39-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

echion-0.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (829.3 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

echion-0.3.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (818.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

echion-0.3.3-cp39-cp39-macosx_11_0_arm64.whl (100.1 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

echion-0.3.3-cp39-cp39-macosx_10_9_x86_64.whl (106.5 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

echion-0.3.3-cp39-cp39-macosx_10_9_universal2.whl (161.9 kB view details)

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

echion-0.3.3-cp38-cp38-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

echion-0.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (829.1 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

echion-0.3.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (818.4 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

echion-0.3.3-cp38-cp38-macosx_11_0_arm64.whl (100.0 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

echion-0.3.3-cp38-cp38-macosx_10_9_x86_64.whl (106.4 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

echion-0.3.3-cp38-cp38-macosx_10_9_universal2.whl (161.7 kB view details)

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

File details

Details for the file echion-0.3.3.tar.gz.

File metadata

  • Download URL: echion-0.3.3.tar.gz
  • Upload date:
  • Size: 711.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for echion-0.3.3.tar.gz
Algorithm Hash digest
SHA256 d5852ae6c3851c003feb1856c81d5707c3df0f6116dc7c18d413f75f5f0fe277
MD5 92990e928992c0a618446b32c8a52600
BLAKE2b-256 3c15808ca0d837a6acc9c4f8d0b9ac84b8f0ce6c1d3856e1e1d83b838f93dc81

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e82f3e7402ff1cbb2ad2cd812cedf79be35b61ae3cb9f91a7360d479a3e5baad
MD5 f9e9fc44ec4ea738bc0521795cfbc554
BLAKE2b-256 2218b3dbc7db8236071fb5626e0e1956c5df4208da2cbf9f5d53626aaed45950

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eecbda37a438a7df509dc8185bcfe405e9f8b898f802e20300bb9ccaeba1b947
MD5 c21c0828d7d80e12d9f2a1bdfe1d8b8d
BLAKE2b-256 542d24fa2251201f63fddeeb72ccbad4124e22950c51356601827310d7676a16

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 72f13b96d15d73a62fadc5034ee00cdc1357a0fb9a22cf789bf6f9e3a54f8b0b
MD5 e4e9fe1fcd9a3c2947b3a8eac19a73be
BLAKE2b-256 3c9beac4aca5be74197ce64dc5f348c725f0008b23ea5e2ddbe32d54120a01a9

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bdb8ae7591e122264928fb803630d760ca8cd95192530abab402c5af83df8f95
MD5 277532ecca48987ba676ce7ea8ffb671
BLAKE2b-256 69db478dec495cb6dbab7b647b35e20a261e048131a075c7d975dbb98aa4bdeb

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1c19539e5f0e5d0864fc1fc3439d032f2ae2bd8cb8e853accd9b974a5e62c46b
MD5 adbaffb88e19bb85254e48e174e8c112
BLAKE2b-256 ba48d0ef4b3d0edb02183a3df6f07559e8c3e1d3b66b907908cebce9999774a6

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp312-cp312-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp312-cp312-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 eb89e9668014bea7e71108705d567dc89dde804a95446992cf144736e96b00ee
MD5 e6163804ac27735fdd2bea0dfed58ef4
BLAKE2b-256 c2234983a45cc04db55d597391b8f6d61efa79d244c28246347689f3553cc0ed

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b641260fedd6e4b53246ca73859cfce85c2e6aa4a43ca793d7a5c7ac78c62dd8
MD5 481e22cb071560632518d7f7faed1fa6
BLAKE2b-256 781684c7117b0790c2bb474cc631aef89ec60819b310958c55eea1c315599194

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e6387003ebeaf0397b7c1a3ddfb14c077aff89aa3761845e8b6e9b5dd47df73f
MD5 a637c990e2e2d21b569c09308bc477e0
BLAKE2b-256 38b7b96b904e56c55c7e8c363e18918f6a091cfa22efe231105c4ae95229cdf4

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 192ae5a2135ee5ee416d080b3f5603ae995e9a96044317d2aeeebae0dc46b26e
MD5 479ffca44906b58368428d710c31f931
BLAKE2b-256 3be0652952726165bedd1dcf3c797f5ec2d2831f07e94f4b108317f05e0ac04e

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c035233ea5fbd1ba569a8f2a3bffb17bf3e859a49bf290ee4f245a679d4b7660
MD5 7675e25ad7584145c1a68f04032851c5
BLAKE2b-256 c74a1857d427aaf11ade15dae8142838afb9746c1ee6997c0cd6910dffe48a27

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 26138685d09b9df60bfcaf9819d3bd43d843e5f6f2a025a749631b798f5a3b7e
MD5 382591026400ef4e006eb3fb54e5e9fb
BLAKE2b-256 18b54b544f3782113ab5eb2a37c046a70607c3f28d241c9993a4946a54bd6673

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 9dab63cd2b20981dfbbc0a18a21376c50598948f77d39a4fb7e41ec792778f90
MD5 851b69dd3c9b327299d2188fd04310ed
BLAKE2b-256 4f945c1e7fb54a2303addf4148a24b1f6d5758fadd26cab15cc1a101a6fdefd7

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3c422ae7bead41656c1f01197e2fac4e8932ef5d2185284e9358f603de949d85
MD5 a71659e723682b8ea266158ae52fd049
BLAKE2b-256 897cecda5ba6fba9deaee01405e2dffde1c7e7ee69b957542e4faf24fd2f0443

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6dacded2f1a7ff14811ea039c167b6197ec530ba85518df3976c6a33cb026bec
MD5 4c3c7cc97cffceacde2cc246869a1d7b
BLAKE2b-256 5e183575fbf4e458e8124ad00ea0ea4a135d5192a328de5d0b5cc5f50fde1d0e

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a124a71b9d37e2607b86365a9d1f5d61ac528e4dcf0171ffbcb358eaeb66e2d7
MD5 14e1481583ce139848b607164b02c7c9
BLAKE2b-256 9ed8024c0209f1a90aa5830ad428c5cd27899a049eeeb2179f1ed36dd11e5678

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2f65bc5a4ac7cb7ba47bc5cffc3c682f07191c64731b64dc6600562d02caeaa3
MD5 52fcbbc2ed528b88c03e8693fc9eabc8
BLAKE2b-256 f7ae043be30b7f29d87dbacaea7388aa86809f4c60b76bd5099542cd13a7e1cc

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7b8035adc6ca5a7da106d39bd198153d601ec000eea7c1779a45e009c6410a9f
MD5 0dc8747900c639dc81714f442cf492a5
BLAKE2b-256 829eb81c233fa437e1cb988112cf308775228203acb2d678f712f656adf8b635

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 eb9ad2ebdb4b66e5ee91889a6541226bfab26d3f65a50e72dababa885e2e5ea7
MD5 8c0e1f64b6807225e4e3c4b03df8fa91
BLAKE2b-256 818f43628bca14dff4dc0373ce1d5be9effd7f107400d0b701865571d8cb4319

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9879a0ec55a5faeddda6e601a68c8c73ae73d6c97e15bb8b0e74b11894e92f82
MD5 ee90b697162c4875843930c21a3f4506
BLAKE2b-256 66993bc01d7e73fe973b04baac9204c6d50367c9717b5a84be5f041791ca0580

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3c84c80580cdcc7887c12cb79b919adbfe4814b6acafc30e28fa8a98a44def4e
MD5 74d7c9c30f5b71d536f013fa158d1c59
BLAKE2b-256 8b457d0d5e989c08caa249ba6e7ce43aba88c294a6df6dcda1047533ec267669

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e1fd236470294c924f46eb80af7929fd8ddc0a8a63e4fbe1589fe260292270b2
MD5 a683b8dbd20fe2fc4839a8a0506616c0
BLAKE2b-256 c3c25110425efd00761220b183f2195b9d124063fcec091d991be4b279f2c39b

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3b17146100dab116cf37e03246d052736d8bb720e5a1f0af3064950396e6cef7
MD5 98b1b8a8294ddcace7790837ea0bb26a
BLAKE2b-256 10018051be27c4d477206c9fb2d540609e63c011696097a8318baffa20ff4da0

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ac831183513e6058a5770da4b5756656fddb4ca89389d41344da5e163cbebde3
MD5 4b901bcb39b3e0d4645833093fd09270
BLAKE2b-256 6a4811b80592907e59c0014e21edc5dc4574b4021a7de488874d826a33b2fd7b

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 bdde2ea76cc3061a936b0ca7f56b592c8ebf72c18bbf9977b0bd539a3c450e0f
MD5 c2063c999c792d0a424f67c1d7857ff0
BLAKE2b-256 583c8b51be37a37e1ad1e6501798ef87d5ef3c8c20923e1ec1e99c2d7fa1e079

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 31a9d7f3effb50264f363f02f52a5d76b2124550918e04c6a19f4a64ea0e7cd1
MD5 7b65ba89e93cbd93be28cf949c9186c2
BLAKE2b-256 d919cbd36aeaf05711c849039dc848c360bf513268c4788ac441740a782df52a

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 410d22c1521d7419c3bd8b8155e9d48c73537746367c12328fe721faafe2297b
MD5 cde0634fd1a44532d63c16b60d2f3c8e
BLAKE2b-256 f5e70b60cfeb00c886bf674824ea1153a2261344fbf5b6d1cab4ab0599ac718e

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ba3a0aa99c8725fe4636464d5a95188a9e3100df96b84d0e4e0772338afa97ee
MD5 e2b31a54274eb94cdbc687058fcdab50
BLAKE2b-256 7561cc12796a2f0c3d6eab90a17d2fd51c4d5211ec709515fd626c07e4b88840

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 642eab513c467a97a8ded578d0a15cf74275241cddefdf589573f58ef346a6aa
MD5 93fcec59bd8072af60df16229d661433
BLAKE2b-256 0ab0163a7987dc37e651a3be06d115392fc82ee0a59a1901a4c63ac4281f442c

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 22e7aeff5ae0535690eb05e9f85cf0d504979b78740cde8d46de2b493a6ee62f
MD5 13221647d15eec88925ee50e7d2479b9
BLAKE2b-256 8ad9cd6854d85d400be9d3d8c3d238c531a26f097203e101f2b9a83ff2e73893

See more details on using hashes here.

File details

Details for the file echion-0.3.3-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for echion-0.3.3-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 27e5ed5055ddfa69793132260ae400fb17c8cc2053e95df5b566e0b5b4f3c70b
MD5 705beff407a38a29f367d0a0f71a9c9a
BLAKE2b-256 92e7e7e46f549287932bceb04be4a9c5f65dcb974c26eaea8b68ffaa9d5d8ab6

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