Skip to main content

General purpose library

Project description

PyPI - Downloads

GitHub tag (with filter) Static Badge Static Badge Static Badge

PyPI - Version PyPI - Format Static Badge Static Badge PyPI - Python Version Static Badge PyPI - Implementation

GitHub License PyPI - Status

Cengal

Cengal is a versatile Python library designed for a wide range of applications. To enhance performance, certain modules within Cengal have been implemented using Cython, C/C++, Nim or Go.

Architecture & API Design Rationale

Rationale

The Cengal library adheres to an API design approach used in frameworks such as Qt. For those familiar with the C++ language, I will draw comparisons between the approaches of Qt and the C++ Standard Template Library (STL). The API provided by the STL was designed to significantly reduce the burden on programmers who develop the STL. This decision was logical from the standpoint of marketing the STL among compiler creators. However, this led to the usability of the STL for the user not being great. This is evident in the fact that the STL provides the most minimal possible API, and any conveniences must be programmed anew by each programmer every time - constantly reinventing the wheel. In contrast, Qt uses the opposite approach to API construction: classes have many methods whose purposes are similar, but are aimed at different usage models. This simplifies the use of Qt for users, speeds up the writing of the final code, and avoids many errors that we usually make when we write our own 'bicycles' for the same actions each time (not because the we are not smart, but because we are humans and therefore prone to make mistakes from time to time).

Cengal compatibility and requirements

Compatibility and requirements
  • Target platforms: Win32, Linux, macOS, Android, iOS, Emscripten
  • Target architectures: x64, x86, ARM
  • Target interpreters: CPython, PyPy
  • Recommended Python versions: 3.8+

Installation

General wheel

To get started with Cengal, you can easily install it along with all the mandatory dependencies by running pip install cengal. This command not only installs Cengal and its required dependencies but also takes care of fetching and installing prebuilt wheels tailored for the Cengal library. These wheels are compatible with both Windows and Linux systems and work seamlessly with both CPython and PyPy interpreters.

Wheel without dependencies

If you prefer to install Cengal without its dependencies, you can opt for the 'cengal-light' package, which serves as the backend for the 'cengal' package. Simply run pip install cengal-light to get the lightweight version of Cengal.

Documentation

Cengal Documentation

For example Cengal Coroutines Concepts & Usage

or partially:

Cengal Wiki

For example Wiki: Cengal Coroutines Concepts & Usage

Stand-Alone Packages for Specific Cengal Modules

Rationale

To cater to varying needs and streamline the installation process, I've introduced stand-alone packages for select Cengal modules. These packages are designed to offer users the ability to install specific Cengal functionality without the burden of the library's full set of dependencies.

The core of this approach lies in our 'cengal-light' package, which houses both Python and compiled Cengal modules. The 'cengal' package itself serves as a lightweight shell, devoid of its own modules, but dependent on 'cengal-light[full]' for a complete Cengal library installation with all required dependencies.

For users seeking individual Cengal features or looking to minimize dependencies, our stand-alone packages provide a convenient solution. Each stand-alone package is dedicated to a specific Cengal module and relies on 'cengal-light' as its sole dependency.

Below, you'll find a list of these stand-alone packages, each corresponding to a distinct Cengal module:

  • CengalPolyBuild: A Comprehensive and Hackable Build System for Multilingual Python Packages: Cython (including automatic conversion from Python to Cython), C/C++, Objective-C, Go, and Nim, with ongoing expansions to include additional languages. (Planned to be released soon)
  • InterProcessPyObjects (package for cengal.parallel_execution.asyncio.ashared_memory_manager module): High-performance package delivers blazing-fast inter-process communication through shared memory, enabling Python objects to be shared across processes with exceptional efficiency.
  • cengal_memory_barriers (package for cengal.hardware.memory.barriers module): Fast crossplatform memory barriers for Python.
  • cengal_cpu_info (package for cengal.hardware.info.cpu module): Extended, cached CPU info with consistent output format.
  • cengal_app_dir_path_finder (package for cengal.file_system.app_fs_structure.app_dir_path module): Offering a unified API for easy retrieval of OS-specific application directories, enhancing data management across Windows, Linux, and macOS.

Stay tuned for future additions to our collection of stand-alone packages!

Exclusive Features: No Alternatives Online

Build system (work in progress)

Build system (work in progress)

Automatic hackable build system for your package which supports Python modules made with different languages: Cython (including Python to Cython automatic compilation), C/C++, ObjectiveC, Go, Nim. Other languages support is in progress.

Compiles your code, gather binary artifacts and puts them into your wheel.

Examples

Fast inter-process communication through shared memory

Fast inter-process communication through shared memory

blazing-fast inter-process communication through shared memory, enabling Python objects to be shared across processes with exceptional efficiency. By minimizing the need for frequent serialization-deserialization, it enhances overall speed and responsiveness. The package offers a comprehensive suite of functionalities designed to support a diverse array of Python types and facilitate asynchronous IPC, optimizing performance for demanding applications.

title

from cengal.hardware.memory.shared_memory import *
from cengal.parallel_execution.asyncio.ashared_memory_manager import *

Key Features

  • Shared Memory Communication:

    • Enables sharing of Python objects directly between processes using shared memory.
    • Utilizes a linked list of global messages to inform connected processes about new shared objects.
  • Lock-Free Synchronization:

    • Uses memory barriers for efficient communication, avoiding slow syscalls.
    • Ensures each process can access and modify shared memory without contention.
  • Supported Python Types:

    • Handles various Python data structures including:
      • Basic types: None, bool, 64-bit int, large int (arbitrary precision integers), float, complex, bytes, bytearray, str.
      • Standard types: Decimal, slice, datetime, timedelta, timezone, date, time
      • Containers: tuple, list, classes inherited from: AbstractSet (frozenset), MutableSet (set), Mapping and MutableMapping (dict).
      • Pickable classes instancess: custom classes including dataclass
    • Allows mutable containers (lists, sets, mappings) to save basic types (None, bool, 64 bit int, float) internally, optimizing memory use and speed.
  • NumPy and Torch Support:

    • Supports numpy arrays by creating shared bytes objects coupled with independent arrays.
    • Supports torch tensors by coupling them with shared numpy arrays.
  • Custom Class Support:

    • Projects pickable custom classes instancess (including dataclasses) onto shared dictionaries in shared memory.
    • Modifies the class instance to override attribute access methods, managing data fields within the shared dictionary.
    • supports classes with or without __dict__ attr
    • supports classes with or without __slots__ attr
  • Asyncio Compatibility:

    • Provides a wrapper module for async-await functionality, integrating seamlessly with asyncio.
    • Ensures asynchronous operations work smoothly with the package's lock-free approach.

Docs

Readme.md

Examples

Performance Benchmark results

Approach sync/async Throughput GiB/s
InterProcessPyObjects (sync) sync 3.770
InterProcessPyObjects + uvloop async 3.222
InterProcessPyObjects + asyncio async 3.079
multiprocessing.shared_memory sync 2.685
uvloop.UnixDomainSockets async 0.966
asyncio + cengal.Streams async 0.942
uvloop.Streams async 0.922
asyncio.Streams async 0.784
asyncio.UnixDomainSockets async 0.708
multiprocessing.Queue sync 0.669
multiprocessing.Pipe sync 0.469

Todo

  • Connect more than two processes
  • Use third-party fast hashing implementations instead of or in addition to built in hash() call
  • Continuous performance improvements
Concurrent Execution of blocking CPU-Bound and GUI Tasks on a Single Thread

Concurrent Execution of blocking CPU-Bound and GUI Tasks on a Single Thread

Cengal offers a unique and powerful feature that allows you to execute a diverse set of tasks concurrently on a single thread, effectively managing CPU-bound and GUI-related operations without introducing the complexity of multithreading or multiprocessing. Notably, Cengal can convert blocking CPU-bound functions into proper asynchronous coroutines, preventing them from blocking the thread for extended periods.

Examples

In this example, an application concurrently (at the same time) executes all of the following components within a single thread:

  • own blocking CPU-bound function
  • third-party blocking CPU-bound function
  • Tkinter application
  • CustomTkinter application
  • asyncio-based file reading task.

YouTube Showcase

Watch the video

Source code

Tutorial

Async LMDB database API

Async LMDB database API

An example of usage (unit test of the module):

Async logging into LMDB database

Async logging into LMDB database

Developer can observe their logs in runtime using cengal.parallel_execution.coroutines.coro_tools.loop_administration.admin_tk module (made with Async Tkinter GUI):

An example of usage of the admin_tk:

Alternatively, developer can load logs in off-line mode using Log Viewer application (made with async Tkinter GUI):

Async Tkinter and Customtkinter

Async Tkinter and Customtkinter

Async wxPython

Async wxPython

Async QT (PySide, PySide2, PySide6, PyQt4, PyQt5, PyQt6)

Async QT (PySide, PySide2, PySide6, PyQt4, PyQt5, PyQt6)

Async PyTermGUI

Async PyTermGUI

Wrapper for Netti (reliable UDP connection library for games in Nim)

Wrapper for Netti (reliable UDP connection library for games in Nim)

Transparent background for your desktop applications (TBA)

Transparent background for your desktop applications (TBA)

  • Target OS: Windows 11, Windows 10, Windows 8, Windows 7, Windows Vista.
  • Target frameworks: PySide, PyQt, Kivy, PyWebView

title , title

Tkinter True Borderless apps for Windows platform (TBA)

Tkinter True Borderless apps for Windows platform (TBA)

  • Target OS: Windows 11, Windows 10, Windows 8, Windows 7, Windows Vista.
  • Target frameworks: CustomTkinter, Tkinter, ttkbootstrap, ...

title

Cengal Coroutines and Asyncio Administration and Monitoring Page

Cengal Coroutines and Asyncio Administration and Monitoring Page

Observe loop performance, services state and coroutines list with details. Use an async interactive console in order to interact with your application from inside.

YouTube Showcase

Watch the video

Examples

admin_test.py

Modules with unique functionality

Unique modules List (was not updated for some time)
  • "parallel_execution"
    • "coroutines" - asynchronous loop with almost preemptive multitasking within the single thread. Brings an async approach to an unmodified Tkinter, Qt, Kivy, etc. Unlike asyncio/trio/curio, it uses microkernel (services-based) approach which makes it highly- and easily-expandable. Can be executed both independently (asyncio/uvloop loop will be injected within the Cengal-coroutine when needed) and within already executed asyncio/uvloop loop. Can be used from the PyScript for the Web app creation.
      • "coro_standard_services" - set of standard services. You can replace standard service by yours for your app or for third-party module without code changes: by registering your own alias.
        • "loop_yield" - automatically kinda yield from your loops from time to time (priority based). Can be used to make a proper coroutine (which will not hangs on its endless loops) even from the long-running CPU-hungry third-party function (by function's bytecode modification made in runtime).
        • "tkinter" - make your Tkninter app async easily. Run any number of asynchronous Tkinter apps in single thread.
        • "db" - async wrapper around LMDB which provides an appropriate async API
        • "asyncio_loop" - use asyncio-based code directly from your async Cengal-coroutine neither Trio nor Curio able to to do this
        • "wait_coro" - 'put_atomic' request is an analogue of Trio's Nurseries for list of one or more coroutines; 'put_fastest' - returns when at least N of coroutines from the list were done successfully; etc.
        • "read_write_locker" - sync primitive usefull for DB creation (was made for a TagDB)
        • "remote_nodes" - in progress - connect to any opened listener/port of the node (TCP/UDP/Unix_Socket - doesn't matter), and identify your receiver by name (defined once - during the connection creation process). Uses improved version of the asyncio.streams as a backend in order to have a back pressure and an improved performance (see "efficient_streams" module description below).
      • "coro_tools" - tools
        • "await_coro" - await Cengal-coroutine or await for a call to the Cengal-service from your asyncio code
        • "low_latency" - use standard json module from your coroutines without hangs on huge Json-data (which usually hung even fast json implementation like orjson)
      • "integrations" -
        • "Qt" - wrapper around an unmodified Qt (supports: PySide, PySide2, PySide6, PyQt4, PyQt5, PyQt6). Adds asynchronous behavior to Slots. Doesn't require total reimplementation of your Qt app unlike other suggestions and competitors.
        • "customtkinter" - wrapper around an unmodified customtkinter. Implements an additional call, Customtkinter async apps needs to be executed for a proper work
        • "nicegui" - wrapper around an unmodified NiceGUI. Execute nicegui instance from within your code (administrative page for example). Build your pages in an asynchronous way in order to improve your server latency (NiceGUI makes it in a sync way).
        • "uvicorn" - wrapper around an unmodified uvicorn. Run uvicorn as a usual asyncio coroutine.
        • "uvloop" - an easy-install for a uvloop (if awailable).
        • "PyTermGUI" - wrapper around an unmodified PyTermGUI. Adds asynchronous behavior. No competitors currently.
    • "asyncio" - tools for an asyncio
      • "efficient_streams" - more efficient remake of an asyncion.streams. Better awailable traffic limits utilisation. Less kerner-calls number. Back pressure. Unlike asyncio, UDP version is planned but is not ready yet.
  • "code_flow_control" -
    • "python_bytecode_manipulator" - modify your or third-party Python function's code in runtime easily
    • "chained_flow" - easy to use monad. Execute your your code if all/none/some of steps were completed withot an exceptions. Use all/none/some resutls of your steps at the final part of monad execution.
    • "multiinterface_essence" - Make your model and add different interfaces to it easily. Can be used for example in games: create "chair", "ball", "person" models and add to them your library of general interfaces like "touch", "push", "sit", "shot", "burn", "wet", etc.
  • "hardware" - hardware related
    • "memory" - RAM related
      • "barriers" - fast full memory barriers for both x86/x64 and ARM (Windows, Linux, OS X, iOS, Android).
  • "time_management" -
    • "high_precision_sync_sleep" - provides an ability to put your thread into legetimate sleep for at least 10x smaller time period than time.sleep() from the Python's Standard Library able to do on same Operating System: uses nanosleep() on Linux and periodic SwitchToThread() on Windows.
    • "cpu_clock_cycles" - Returnes value of RDTSCP on x86/x86_64 or CNTVCT_EL0 on ARM. Fast implementation: 6-12 times faster than all other competitors on Github. Note: CPU Time Stamp Counter (TSC) is not depends on actual current CPU frequency in modern CPUs (starting from around year 2007) so can be safely used as a high precision clock (see time_management.cpu_clock module). Windows, Linux and other Operating Systems are using it internaly.
    • "cpu_clock" - like perf_counter() but 25% faster. Supports both x86/x86_64 and ARM. cpu_clock is slightly faster than cpu_clock_cycles because double (float in Python terms) transfered from C-code to Python code more efficiently than 64-bit int (which needs an addition internal logic inside the Python itself for conversion). Highest-precision possible since it is CPU Time Stamp Counter based which is not depends on actual current CPU frequency in modern CPUs (starting from around year 2007) so can be safely used as a high precision clock (and Windows, Linux and other Operating Systems are using it internaly in this way). Benchmark: cpu_clock_test.py

Some Other modules

Other modules List (was not updated for some time)
  • "parallel_execution"
    • "coroutines" -
      • "coro_tools" - tools
        • "wait_coro" - decorate your coroutine in order to be able to execute it from the plain sunc code as a sync function
        • "run_in_loop" - serves the same purpose as an asyncio.run() call
        • "prepare_loop" - creates and returns loop. You may use it later
    • "asyncio" - tools for an asyncio
      • "run_loop" - similar to asyncio.run() but ends only when all background tasks will be finished (main coro can be finished long before this moment).
      • "timed_yield" - simple (dum-dum but faster) version of the "loop_yield" (see above) but made directly for an asyncio.
  • "bulk_pip_actions" - install lists of required modules. Lists can be different for a different operating systems
  • "code_inspection" -
    • "auto_line_tracer" - smart and easy to use line logger (current func name, file, lines numbers, surrounding code)
    • "line_tracer" - - easy to use line logger (current func name, file, line number)
    • "line_profiling" - confinient work with a line_profiler if awailable
  • "data_containers" - usefull data containers like stack, fast fifo, etc. Some of them are highly optimized for speed
  • "data_manipulation" -
    • "conversion" -
      • "bit_cast_like" - similar to std::bit_cast from C++
      • "reinterpret_cast" - similar to reinterpret_cast from C++. You have a third-party object and you want to change its type (and behavior) in runtime.
    • "serialization" - automatically choose a fastest appropriate serializer for your type and structure of data (json, simplejson, ujson, ojson, msgpack, cbor, cbor2, marshal, pickle, cloudpickle, ...)
    • "tree_traversal" - both recrsive and nonrecursive tree traversal algorithms
  • "ctypes_tools" - ctypes code and structures used by Cengal.
    • "tools" - ctypes tools usefull for your code
  • "file_system" - normalized relative path, etc.
    • "app_fs_structure" - unified list of the default app directories (data, cache, temp, etc.) recommended by OS (Linux, Windows, Mac OS X) in a runtime for a given application name or a service name. Results are cached. Cache size can be modified in runtime.
  • "hardware" - hardware related
    • "info" - hardware info
      • "cpu" - normalized results from cpuinfo extended with an info from psutil.
  • "introspection" -
    • "inspect" - find out function parameters, entity owners list (method -> subclass -> class -> module), entitie's own properties (excluding parent's properties), etc.
    • "third_party" -
      • "ctypes" - provice an instance of ctypes Structure and take a dict with all internals of this structure. Good for inspecting/logging/printing values of a given structure with all values of all its substructures.
  • "io" -
    • "used_ports" - database of known TCP/UDP ports. Updates from an appropriate Wikipedia page once per Cengal release but you can update if for your self anytime if you want to.
    • "serve_free_ports" - provide ports range with an interested port types set and receive number of the first open appropriate port on your machine within given port range.
    • "named_connections_manager" - base for the "remote_nodes" (see above) and similar entities
    • "net_io" - an experimental networking library with an expandable architecture. Has implemented modules for epoll and select.
  • "math" -
    • "algebra" -
      • "fast_algorithms" - Fast inverse square root (the one from Quake III) implemented efficiently
    • "geometry" -
      • "ellipse" - ellipse related. Also several algorithms for precisely or efficiently compute an ellipse perimeter
      • "point" - numpy (if awailable) or python implementation of points (1D, 2D, 3D, nD)
      • "vector" - numpy (if awailable) or python algotithms on vectors (1D, 2D, 3D, nD). Implements CoordinateVectorNd, VectorNd, DirectedGraphNd
  • "modules_management" - reload module, import drop-in-replacement module if an original is not awailable
  • "statistics" -
    • "normal_distribution" - compute the normal distribution of your data. Booth count or use a formula. 99, 95, 68; standard_deviation: diff_mean, sqrt(variance), max_deviation, min_deviation.
  • "text_processing" - text parsing, patching, detect BOM and encoding
  • "time_management" -
    • "timer" - timer for any synchronous code
    • "sleep_tools" - sleep for a production code. Using usual sleep you may get not wat you want if you are not really into your target OS internals (Windows/Linux)
    • "repeat_for_a_time" - measures code/function executions per second. But it smart and eficiently repeats target code/function not N times but up to a T seconds. Results to a high precision measurements for even smallest and fastest pieces of code.
    • "relative_time" - time related module for a business purposes (calendars, payments, etc.)
  • "unittest" -
    • "patcher" - set of context manager for monkey patching builtins or other entities
  • "user_interface" -
    • "gui" -
      • "nt" -
        • "blur_behind" - Turn on Aero Glass backgrownd in Winndows 7, 10, 11 using documented or undocumented API (which one is awailable)
        • "dpi_awareness" - Turn on DPI awareness
  • "web_tools" -
    • "detect_browsers_host_device_type" -
      • "by_http_user_agent" - detects is it mobile or tablet device by analizing its http user_agent string

Size of the Cengal library

At the moment of 19 Mar 2024:

Around 200 modules

-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Python                         751          23696          30083          77396
Cython                          10            727            472           1892
C                                2             39             26            163
C/C++ Header                     2             14             26             37
Go                               3             19             37             88
Nim                              2             14              6             36
-------------------------------------------------------------------------------
SUM:                           770          24509          30650          79612
-------------------------------------------------------------------------------

Counted with cloc util.

Unittest coverage

At the moment of 2 Apr 2024:

Linux:

Stmts   Miss  Cover
41576  25826    38%

Examples

Examples locations
  • Can be found in examples dir
  • Each module has a development folder. Examples are usually placed there
  • Some of old examples can be fined inside the tests dir.

Cengal.coroutines examples

Text processing example

Ensures and updates copyright (with dates) in each Cengal's source file

Build from sources

Build instructions

Linux, macOS:

git clone https://github.com/FI-Mihej/Cengal.git
cd ./Cengal
./prepare__setup.sh
./install_in_dev_mode.sh

Windows:

git clone https://github.com/FI-Mihej/Cengal.git
cd .\Cengal
.\prepare__setup.cmd
.\install_in_dev_mode.cmd

Installation process requires compilation. So ensure that:

  • GCC/Clang is installed in your Linux/WSL (sudo apt-get --yes install build-essential for Ubuntu. And ./before_install_on_wsl.sh for Ubuntu under WSL for UI like Tkinter or Qt if you are using some kind of XServer on your host Windows)
  • At least Visual Studio Community - Build Tools are installed on your Windows and you are installing Cengal from within its Developer Command Prompt for an appropriate target CPU architecture (x64 Native Tools Command Prompt for VS 2022 for example). Make sure that you have compatible version of Visual Studio for your target CPython interpreter (see python -VV command output. For example Python 3.9.11 (tags/v3.9.11:2de452f, Mar 16 2022, 14:33:45) [MSC v.1929 64 bit (AMD64)]: this python interpreter requires Visual Studio 2019 version 16.11.2+ according to 1929 word search in Wikipedia page)
  • Nim installed (Optional)
  • Go installed (Optional)

Projects using Cengal

  • CengalPolyBuild - A Comprehensive and Hackable Build System for Multilingual Python Packages: Cython (including automatic conversion from Python to Cython), C/C++, Objective-C, Go, and Nim, with ongoing expansions to include additional languages. (Planned to be released soon)
  • cengal_app_dir_path_finder - A Python module offering a unified API for easy retrieval of OS-specific application directories, enhancing data management across Windows, Linux, and macOS
  • cengal_cpu_info - Extended, cached CPU info with consistent output format.
  • cengal_memory_barriers - Fast crossplatform memory barriers for Python.
  • flet_async - wrapper which makes Flet async and brings booth Cengal.coroutines and asyncio to Flet (Flutter based UI)
  • justpy_containers - wrapper around JustPy in order to bring more security and more production-needed features to JustPy (VueJS based UI)
  • Bensbach - decompiler from Unreal Engine 3 bytecode to a Lisp-like script and compiler back to Unreal Engine 3 bytecode. Made for a game modding purposes
  • Realistic-Damage-Model-mod-for-Long-War - Mod for both the original XCOM:EW and the mod Long War. Was made with a Bensbach, which was made with Cengal
  • SmartCATaloguer.com - TagDB based catalog of images (tags), music albums (genre tags) and apps (categories)

License

Copyright © 2012-2024 ButenkoMS. All rights reserved.

Licensed under the Apache License, Version 2.0.

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

cengal-4.4.0.tar.gz (43.1 kB view details)

Uploaded Source

Built Distributions

cengal-4.4.0-pp310-none-win_amd64.whl (18.9 kB view details)

Uploaded PyPy Windows x86-64

cengal-4.4.0-pp310-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

cengal-4.4.0-pp310-none-macosx_14_0_arm64.whl (19.2 kB view details)

Uploaded PyPy macOS 14.0+ ARM64

cengal-4.4.0-pp310-none-macosx_13_0_x86_64.whl (19.2 kB view details)

Uploaded PyPy macOS 13.0+ x86-64

cengal-4.4.0-pp39-none-win_amd64.whl (18.9 kB view details)

Uploaded PyPy Windows x86-64

cengal-4.4.0-pp39-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

cengal-4.4.0-pp39-none-macosx_14_0_arm64.whl (19.2 kB view details)

Uploaded PyPy macOS 14.0+ ARM64

cengal-4.4.0-pp39-none-macosx_13_0_x86_64.whl (19.2 kB view details)

Uploaded PyPy macOS 13.0+ x86-64

cengal-4.4.0-pp38-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

cengal-4.4.0-pp38-none-macosx_14_0_arm64.whl (19.2 kB view details)

Uploaded PyPy macOS 14.0+ ARM64

cengal-4.4.0-pp38-none-macosx_13_0_x86_64.whl (19.2 kB view details)

Uploaded PyPy macOS 13.0+ x86-64

cengal-4.4.0-cp312-none-win_amd64.whl (18.9 kB view details)

Uploaded CPython 3.12 Windows x86-64

cengal-4.4.0-cp312-none-musllinux_1_2_x86_64.whl (18.8 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

cengal-4.4.0-cp312-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

cengal-4.4.0-cp312-none-macosx_14_0_arm64.whl (19.2 kB view details)

Uploaded CPython 3.12 macOS 14.0+ ARM64

cengal-4.4.0-cp312-none-macosx_13_0_x86_64.whl (19.2 kB view details)

Uploaded CPython 3.12 macOS 13.0+ x86-64

cengal-4.4.0-cp311-none-win_amd64.whl (18.9 kB view details)

Uploaded CPython 3.11 Windows x86-64

cengal-4.4.0-cp311-none-musllinux_1_2_x86_64.whl (18.8 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

cengal-4.4.0-cp311-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

cengal-4.4.0-cp311-none-macosx_14_0_arm64.whl (19.2 kB view details)

Uploaded CPython 3.11 macOS 14.0+ ARM64

cengal-4.4.0-cp311-none-macosx_13_0_x86_64.whl (19.2 kB view details)

Uploaded CPython 3.11 macOS 13.0+ x86-64

cengal-4.4.0-cp310-none-win_amd64.whl (18.9 kB view details)

Uploaded CPython 3.10 Windows x86-64

cengal-4.4.0-cp310-none-musllinux_1_1_x86_64.whl (18.8 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

cengal-4.4.0-cp310-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

cengal-4.4.0-cp310-none-macosx_14_0_arm64.whl (19.2 kB view details)

Uploaded CPython 3.10 macOS 14.0+ ARM64

cengal-4.4.0-cp310-none-macosx_13_0_x86_64.whl (19.2 kB view details)

Uploaded CPython 3.10 macOS 13.0+ x86-64

cengal-4.4.0-cp39-none-win_amd64.whl (18.9 kB view details)

Uploaded CPython 3.9 Windows x86-64

cengal-4.4.0-cp39-none-musllinux_1_1_x86_64.whl (18.8 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

cengal-4.4.0-cp39-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

cengal-4.4.0-cp39-none-macosx_13_0_x86_64.whl (19.2 kB view details)

Uploaded CPython 3.9 macOS 13.0+ x86-64

cengal-4.4.0-cp38-none-win_amd64.whl (18.9 kB view details)

Uploaded CPython 3.8 Windows x86-64

cengal-4.4.0-cp38-none-musllinux_1_1_x86_64.whl (18.8 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

cengal-4.4.0-cp38-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.8 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

cengal-4.4.0-cp38-none-macosx_13_0_x86_64.whl (19.2 kB view details)

Uploaded CPython 3.8 macOS 13.0+ x86-64

File details

Details for the file cengal-4.4.0.tar.gz.

File metadata

  • Download URL: cengal-4.4.0.tar.gz
  • Upload date:
  • Size: 43.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.10

File hashes

Hashes for cengal-4.4.0.tar.gz
Algorithm Hash digest
SHA256 e4521b072e591e5497aa1a0a3940258934353469ea1e8576eeb8ca2c7f51634d
MD5 f8e6a2b7c3f277745d0e9dbc76801c9c
BLAKE2b-256 7ed13751c1a8120214388020105e77a1b9c8c354e6f6f0485be2867ff0492267

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-pp310-none-win_amd64.whl.

File metadata

  • Download URL: cengal-4.4.0-pp310-none-win_amd64.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: PyPy, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.11

File hashes

Hashes for cengal-4.4.0-pp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 dfcca6112c823e28a034e791ef14b6d8a1050960b10cb29e970d030e93d46afd
MD5 3dfb1bf0cb43ff4fb3aa0b9b659144df
BLAKE2b-256 59d35c7e8530a3065857b5412727eef3ccfa919cfb3c544fdbe6ce88682af578

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-pp310-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-pp310-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 805a719435cf008321172d7e2438b03aa43603bc13cb93bf190241dc0ea6ea9e
MD5 8f0b302ef681cfe07b9d3c027123cc6e
BLAKE2b-256 71ecfc971ae5ad4705c64050f6263b9cd58cc15c483a918b8574abe175a6ae51

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-pp310-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-pp310-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 1a979ffd2ba00279a9de144828dab37466e327bba68db051dd4424516cee3cb2
MD5 80ad8a4456abf6feb3e98df53224d465
BLAKE2b-256 504dc51e2ca60acfc52ec5f739f036b646024bcb8bdfc9bf3a3e96a07bb7f6a0

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-pp310-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-pp310-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 274a92c626cc26212f41c4337a8dba8683a6e2fd38f93b1183f2c39b5e0289bf
MD5 0d2c8d4f7923360fe6e3f8824baa9990
BLAKE2b-256 d5c67802e7df6228321bd0015ddf27e0870eaeff00a3307555671ab70f89b9ad

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-pp39-none-win_amd64.whl.

File metadata

  • Download URL: cengal-4.4.0-pp39-none-win_amd64.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: PyPy, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.11

File hashes

Hashes for cengal-4.4.0-pp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 946deea35e8d64ebe83ad44872a5953405734aff0c7f6a7ac5db2ad0f12c2b1c
MD5 5b7621153346e610aff3872297ac3d1d
BLAKE2b-256 fb797f64f153a1b72a11e14d015d173ab28fa036b654163ff8bb99584bd8d397

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-pp39-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-pp39-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 de2c669230bfb6a39f73343fde368d0a36c36e6ff42df5d2940091d332ff83ca
MD5 179a25d618894521c371ed44076735ae
BLAKE2b-256 f4152ce975aeba1b08a30bf0c690c72371e320b3268cc18e44a2402d8d59734d

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-pp39-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-pp39-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 df76ecbe8e99323ef64e65fdf646e9df4a2e66ea1a83176ec771657cad1687c0
MD5 2d41364b2875a2ad574f4b9c5643bff8
BLAKE2b-256 7a770ab96089e0477fce0d94e343f7313d1b1c47437d469dc3d72f1abbb40785

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-pp39-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-pp39-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 74ea1e9c58a5cc5015be0cc4c43f963b1dbaad9b8cb6db8e1991f35c60df8062
MD5 737f2d521dad2fb4d138c22be7455956
BLAKE2b-256 da8af673dd08f254017b86963b4e6f42ebe28172b5ca3315480b6859b1aa2123

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-pp38-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-pp38-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4ad93e4dcd0a13ccde46d77c6c7636ade838985ebdd6c9cd68c00ca375daca4b
MD5 0996ab0dbd83baedfcf3948169c75fc5
BLAKE2b-256 59a5f8edc6dce32d301621c7b2eb3fecdf05e2d117057d0e0228a47e2a7c0ff3

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-pp38-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-pp38-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 cde2e0a2b3d4655d6b6832bb2c928fe63f30996a024f0c25ae4d32cf8f85c565
MD5 d4bb76b8f4127cf64fbbbfd9a0ad0366
BLAKE2b-256 aade2f401c8485ca00a8a1ef4ea34aa2fdd2bec44b9d321a19716693624cc825

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-pp38-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-pp38-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 975783582d019c907cfd7e7dd87fdf1eeed6da2c7288ef35c8e4c2dbef757d1d
MD5 3ac40282bcf4da3150695e99781f3889
BLAKE2b-256 dab12c6852b100be19a4c6db0b7e9910a7e2edd232d60c18a8f6c2ff0ab43234

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp312-none-win_amd64.whl.

File metadata

  • Download URL: cengal-4.4.0-cp312-none-win_amd64.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for cengal-4.4.0-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 a7138a1f8272595af1df9f5a3e59f167a25d89b6ba28bf5f887cb90b7a2c93cb
MD5 5e7ee67dd1766369676468df98bb2509
BLAKE2b-256 4ea615fec540b2e252a2d16923026cacddb963a533e8736a28719d6c5f77feb3

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp312-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp312-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f17703a5dd276e12e3108cb1025353cbef23ad4e4b532b254910cdddc49cf3b4
MD5 bcdfe50396086e4274a80106fbeb31b6
BLAKE2b-256 f67fd08e578df51bbda1b99bcb63a31854ec6c47d26f1f78d23ab59b6b2749dd

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp312-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp312-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eca9da73d80206300eb018d0da40abd86ba47c82095d5640c1fb991fb36c6cc8
MD5 67c9b486151480868cee41dea41ea7e2
BLAKE2b-256 c764e35c187cf1db559ab65f275a75e17783d0650de3e0cfa5fd25dc4bf15068

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp312-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp312-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 bbd9c3da05bd31ea64bd618e34a9883dc56d17e0ab7fda87e217d3180de0ac31
MD5 217865478b5de9854925ca44da89ced9
BLAKE2b-256 a61f6b55dddd8b89ee47f7f001b0a7666fb35f30614cd86ffb91fb478df9bdfc

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp312-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp312-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 e2e480ea16552465809fc2afd8d670b77e35d59ae06bd36ad33365a4781698d8
MD5 1cf6da7bc0d1df962c583d38d057397f
BLAKE2b-256 d7688617258de7f60e4aa87e4fd10b517558e27d3b4ed8ee1562eed4d5595511

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp311-none-win_amd64.whl.

File metadata

  • Download URL: cengal-4.4.0-cp311-none-win_amd64.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for cengal-4.4.0-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 bf4f99f20b3382994cd23cec2b927b96844456b36cbfc8ce83cc0e4c124c4a87
MD5 a6136d5162c35495990f80c640293891
BLAKE2b-256 cf236c64b50b2a102d08b2592effdf60205ae6069aa2d493073d430378049d34

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp311-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp311-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3879bbbd4ab4705ccc1415c82a48bd3b4853463dae607b4d2d13ee89a00ff569
MD5 dbb537fc2472ba98e66ad1d672d311fa
BLAKE2b-256 c133928f0a3839eb976609a49a9d121516f5c3c918d92af058331f7904c3cc5b

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp311-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp311-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 541e510e85c41c2c80bfcda9918225fc188c4eb55a9123a28a947199200269d0
MD5 597424c20dae96798e4e6357ce76b00f
BLAKE2b-256 5a9199af67d29d56437a0f1a7c67d876489a5010a38594f522d717fc40d89346

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp311-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp311-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 773b10ddf0d371faaa68839550fa9ec570616a1b4f4c21157f5fb164e8f7e6dd
MD5 39666da1dd18e2519c2056c30484eab4
BLAKE2b-256 403dbcb3dcd53c57697b643266b01c37528c3879f97b8012492ea6a18a8a384b

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp311-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp311-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 faf830d2ff4890ee4de6e302ad1859ef2721e1a40959054a2d28a6d93362a522
MD5 2897d8d25e12ffcaf0dd9b9d84da40df
BLAKE2b-256 36bb00933d7ef2d58cd00c71a820feb5a4a2c136273ee8d234d49cc80c5bff2f

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp310-none-win_amd64.whl.

File metadata

  • Download URL: cengal-4.4.0-cp310-none-win_amd64.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.11

File hashes

Hashes for cengal-4.4.0-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 af6f3638ce7c362bd3d2a5307863baf9db5c43c503a12ad526f6d85c10bf1fb3
MD5 075826d63ccf9ff8ec0adb15d0581c01
BLAKE2b-256 78a48a645212fbf5f70158ac7cfab8efc0b53202737a5ac3f1953fc7d3db4846

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp310-none-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp310-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 477846ab54ed1794c3087a5965a155696bf8e26022d9b7ed8e1216869cc55922
MD5 618952dfc3030f5e4a6db55c56096c92
BLAKE2b-256 72ad73b5f978843ead71aaf8fa2b45b41c29d09f761df244fe581894b7af683e

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp310-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp310-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 66c9c0952d6ae200825bb1a1b54a45293d2119b85a3c5225d0819af43851fe91
MD5 d8561d333ca3aac4abd28193e60152eb
BLAKE2b-256 362d298b53c14b0c8a33494436c29a0497bc727a6af5623643c075737d3210cb

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp310-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp310-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b9ca4cb7bdb4e293c63b26920803df89ae8fa4ca61c568d3aa24c96e3364f04e
MD5 dd476dd7899e0099f19b93d070820254
BLAKE2b-256 05c4aab62a136c586cb8ac21e3c711624afd75591e571b6ba3861703e957069a

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp310-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp310-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 468b3c0500680fb9ba4ef91e31ba74b371db04f8d5b8efb64e8620186a34b63c
MD5 46817f9e97b56e2b8b54904a25e84627
BLAKE2b-256 554054edbb33355c86748013b935ee90870213b34babc0f7c6039dff8080a493

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp39-none-win_amd64.whl.

File metadata

  • Download URL: cengal-4.4.0-cp39-none-win_amd64.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.11

File hashes

Hashes for cengal-4.4.0-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 33a96f4eb2abba437b2b2ba23d3670ddb79159ea8315e973e456cd3d4c63bc9e
MD5 1035872854c2d47c3735e5b0af2f824e
BLAKE2b-256 f0df76701c9bf6b84628460bfac953e68e20400e9a6b0379eb5c04612d3f458a

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp39-none-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp39-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 dc47da12434dfb9b188464ced6190f3844c687558446d495eeb93b9746c8d99b
MD5 e3a03bc2954fd0a119813fadc8f158a8
BLAKE2b-256 2ef0e273cda5db472ad3a5c51a41e4ed461681a3504692f51ea8301433999993

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp39-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp39-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6d38e494625d870f2660195e3383c3a288d61e18daed94545ed4c2f8d91209b4
MD5 b7475b888d2b12b06cdff18fa4820942
BLAKE2b-256 0b299525928a214056b1fd616ac24f289ec8c80243d40db96a93a5cd8eb93f61

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp39-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp39-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 fcad43b6da55249e7b5f3a21e022b5f29d278248f92e52d395b398d6dd8c9ab2
MD5 158b022076e2d5635ff2ce5a22715ae0
BLAKE2b-256 1b17f5e9cfd5e71f163d6f99fe88451814b0fef4c16a024e7531704def349c49

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp38-none-win_amd64.whl.

File metadata

  • Download URL: cengal-4.4.0-cp38-none-win_amd64.whl
  • Upload date:
  • Size: 18.9 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.11

File hashes

Hashes for cengal-4.4.0-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 41f6201291f49c0a91ae4590dfde2e57ae63a816886277cfe8cc28bf60be1964
MD5 3837416920b2f69dd57813a2997a47fc
BLAKE2b-256 b104d1b7f5c8b18dc8fe713933db4c8ea4cf64922e84fa703f87d38afd88feeb

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp38-none-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp38-none-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 b3fc4453e5f6a6e9beded51dd8c90398cc3651276b32a43e339b847e3dd7e783
MD5 dac333a50dffb9945251d2a39a575782
BLAKE2b-256 60010af0439e0280829f9898b8a804824de246f73c2b14e4c19becfa1ebd144b

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp38-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp38-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 95ad7d9e45340c854600f3e7327341ac5de4e50354ff076d3d016e3004179dc5
MD5 b1e493072fb9eb865a285edec483f3ef
BLAKE2b-256 d533a2478dafbd039f3e95c26adbb5018c8b23c52ae50055fe77d6b5725c8864

See more details on using hashes here.

File details

Details for the file cengal-4.4.0-cp38-none-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal-4.4.0-cp38-none-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 d5933f629247c454ca0a15918ed96e2e792fa03d20b913b964c05012ce6b9420
MD5 1c4e8b91aceb0231cfa22214e5cc0d49
BLAKE2b-256 f371ed28d1ce41464e503adcc8653c62c24e4b057dfbde4363199a9f4167871b

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