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_light

This package contains compiled extensions, providing enhanced performance, while omitting mandatory dependency installations.

In order to install Cengal with all requirements execute either:

  • pip install cengal_light[full] - will install Cengal as well as most of requirements
  • pip install cengal - Recommended - will install cengal_light[full] as well as some missed requirements

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_light-4.4.0.tar.gz (928.6 kB view details)

Uploaded Source

Built Distributions

cengal_light-4.4.0-pp310-pypy310_pp73-win_amd64.whl (3.0 MB view details)

Uploaded PyPy Windows x86-64

cengal_light-4.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

cengal_light-4.4.0-pp310-pypy310_pp73-macosx_14_0_arm64.whl (3.3 MB view details)

Uploaded PyPy macOS 14.0+ ARM64

cengal_light-4.4.0-pp310-pypy310_pp73-macosx_13_0_x86_64.whl (3.3 MB view details)

Uploaded PyPy macOS 13.0+ x86-64

cengal_light-4.4.0-pp39-pypy39_pp73-win_amd64.whl (3.0 MB view details)

Uploaded PyPy Windows x86-64

cengal_light-4.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

cengal_light-4.4.0-pp39-pypy39_pp73-macosx_14_0_arm64.whl (3.3 MB view details)

Uploaded PyPy macOS 14.0+ ARM64

cengal_light-4.4.0-pp39-pypy39_pp73-macosx_13_0_x86_64.whl (3.3 MB view details)

Uploaded PyPy macOS 13.0+ x86-64

cengal_light-4.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

cengal_light-4.4.0-pp38-pypy38_pp73-macosx_14_0_arm64.whl (3.3 MB view details)

Uploaded PyPy macOS 14.0+ ARM64

cengal_light-4.4.0-pp38-pypy38_pp73-macosx_13_0_x86_64.whl (3.3 MB view details)

Uploaded PyPy macOS 13.0+ x86-64

cengal_light-4.4.0-cp313-cp313-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.13 Windows x86-64

cengal_light-4.4.0-cp312-cp312-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.12 Windows x86-64

cengal_light-4.4.0-cp312-cp312-musllinux_1_2_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

cengal_light-4.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.7 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

cengal_light-4.4.0-cp312-cp312-macosx_14_0_arm64.whl (8.9 MB view details)

Uploaded CPython 3.12 macOS 14.0+ ARM64

cengal_light-4.4.0-cp312-cp312-macosx_13_0_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.12 macOS 13.0+ x86-64

cengal_light-4.4.0-cp311-cp311-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.11 Windows x86-64

cengal_light-4.4.0-cp311-cp311-musllinux_1_2_x86_64.whl (7.5 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

cengal_light-4.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

cengal_light-4.4.0-cp311-cp311-macosx_14_0_arm64.whl (8.7 MB view details)

Uploaded CPython 3.11 macOS 14.0+ ARM64

cengal_light-4.4.0-cp311-cp311-macosx_13_0_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.11 macOS 13.0+ x86-64

cengal_light-4.4.0-cp310-cp310-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.10 Windows x86-64

cengal_light-4.4.0-cp310-cp310-musllinux_1_1_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

cengal_light-4.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

cengal_light-4.4.0-cp310-cp310-macosx_14_0_arm64.whl (7.8 MB view details)

Uploaded CPython 3.10 macOS 14.0+ ARM64

cengal_light-4.4.0-cp310-cp310-macosx_13_0_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.10 macOS 13.0+ x86-64

cengal_light-4.4.0-cp39-cp39-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.9 Windows x86-64

cengal_light-4.4.0-cp39-cp39-musllinux_1_1_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

cengal_light-4.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

cengal_light-4.4.0-cp39-cp39-macosx_13_0_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.9 macOS 13.0+ x86-64

cengal_light-4.4.0-cp38-cp38-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.8 Windows x86-64

cengal_light-4.4.0-cp38-cp38-musllinux_1_1_x86_64.whl (7.7 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

cengal_light-4.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.4 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

cengal_light-4.4.0-cp38-cp38-macosx_13_0_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.8 macOS 13.0+ x86-64

File details

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

File metadata

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

File hashes

Hashes for cengal_light-4.4.0.tar.gz
Algorithm Hash digest
SHA256 49e8c34d4e64d03d2597851df29c29b398c6319c83b50782e6a168b2496d7c33
MD5 b5f4fc926d8fa79d6f9d178ee7e82299
BLAKE2b-256 c75fa841769560b314467111c304685ed4a4354eea03efa658a730c441f75340

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-pp310-pypy310_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 783fa0d31f00f93e835b011ddfc1b1ebfb4adfe5078a5469ccfd90f24729d161
MD5 d77d744fc40d2a78ba8bcc0de1a7103c
BLAKE2b-256 b00551e48c169fa58859d6081776120c47a007435740a0b14db7a8a0b78fe632

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 420c31c54d3e33cdc869203019b9b72266377e7c17965fa1f2c92fc917946ccb
MD5 a9183d5a32ede038471c4bcdda32b035
BLAKE2b-256 0d512bacc28cba34a84715373e81a1da88ba17bcb9881b4b52e2da841494b3d5

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-pp310-pypy310_pp73-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-pp310-pypy310_pp73-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b449d73606f20c54522d3bbb589c62241a50dd51f5b2732bc731a361fec25c2d
MD5 d5d10aa2c086e3419ee9487d10f5b60f
BLAKE2b-256 c8252f9744784636bb4cdb5f46a4fd166ea4e912c34d6222f73865fe28c2231e

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-pp310-pypy310_pp73-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-pp310-pypy310_pp73-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 3ce7e98d8b318b583f7d61f48094f0afa75f8ad19b91e068e93c2834cca41a2d
MD5 380eba4a3e60f89cb01a7577ce8c11d2
BLAKE2b-256 377149ccdcda9865b68948a6ce61c00be469f688ac979bede64b9a53f7b54f55

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-pp39-pypy39_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 f89aa251c029d9ee55668e69c72a49f502a4e9f9f17f0a2190699f59d4653e9c
MD5 508ba6e80a71cfc7a33c98cce698b70f
BLAKE2b-256 d83692a959546ce74a02633d0215fcb1be215c9dd1d666d31f24293f93db6b57

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4925fb709b27ccbfea8ce14c0945a6a1cbacef2d468baaa338c0f8ce02427a3e
MD5 6a890202b7a641e90eb0c4490ac7e4cb
BLAKE2b-256 dd84f6516f3fc5945ca164e28611a179339ca62c9fafb1f33894d36b144e5cbd

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-pp39-pypy39_pp73-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-pp39-pypy39_pp73-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 41c28c60310df151bea7c9a34e5efef89df177e15f862a8ddee8daff19ad177a
MD5 28be14d1bb03a8a5e0a6f3978631e039
BLAKE2b-256 7b24628fdec5fd9a5e34d80c51ea52048f026feef7828df28aabc6c9c8a8a568

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-pp39-pypy39_pp73-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-pp39-pypy39_pp73-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 2f7b11ba76a8940e70e130fe6ae65e8e5859f414fe75ab32aaea3b6c3494fec8
MD5 f61d3be7a8063254050246dada08c406
BLAKE2b-256 b1bdb9bfef9b07fcb6441ffb8b2d4a958abe9ffc95b26e79430e24024e0cfc50

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 02e395072bff10d45765494fc24b625f95eb48f9f3a4969215eb689540a8e26b
MD5 5b1c89c7f3ca9f4a642725e8e176a1fe
BLAKE2b-256 269b08bd89571c54ae6692f5be412a7e99ac05ef6811ab2cdc4baced965ac585

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-pp38-pypy38_pp73-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-pp38-pypy38_pp73-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b4c3043227dbca8af2c1d272082f1e2d7b0acae8b3094f797db82ea22e801641
MD5 2fdf5864264cf4988f903a1fb5abbdac
BLAKE2b-256 c55b43096d357a9fcf9ef2265f29c7b6dca1ade627cb93a8af0bcb9e169d46d1

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-pp38-pypy38_pp73-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-pp38-pypy38_pp73-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 6f73b524b552d35270bdae2b34ccad8ab85e64942ccb6ca0f756d7a886997b5c
MD5 abf5a4396c37e5fb363e4f47c95bc9e1
BLAKE2b-256 efb8637fbb5e43d220e460be6a2eae4a3517c60e5d4c2a555f9784badd39d66a

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b61b53c2ddfd117fa8d12a9a4a93cf31bf0e25a02e73ca2b54e25ea82e69cead
MD5 461f385ae00305ca5d9d0607cf1c2f15
BLAKE2b-256 84baf7f8828869f69553a737893a0977740c520759249e76494b1dd072de79a6

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 19ac8d6abeaaf3efa357daf2817b17085d32a84809a6c124eb648469359271bc
MD5 b5328bb8dd5e78e4921cb2d27f143cde
BLAKE2b-256 144c28e4b1354405a301a4e7fe65dc58f0ce1a866a152c54a75de9cb4eb9a7e6

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9eff27fea2bf63e017fbd4e3dc5d13be887c5dea886b439227d2f06e7334e1a9
MD5 8f40bc4f642d0b80d02f2a57dd34f1a0
BLAKE2b-256 55f5e6e2d73ae2a3ece15a911d316ffec400fe29037ef759bbf25986a43ede88

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a4d3dd32faeb9b456d8a6fe7e5b0e81de3dc56a91695cab4981780153b366d7a
MD5 cadf4447a98c73278e85b79c02bc6b13
BLAKE2b-256 d306914bdd898bb136175a9e9a4036fdfe8412f2eda90d0764a0efab1c5f3a79

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 2d4866f40367a1204c797ef2cacf1d88942b70d84189b035c9038cdd3e8e5544
MD5 40c82fd3dc9fa59d0270a552f346f094
BLAKE2b-256 b0bfe11bde847a08b2fcdb9c46890ae7c492f3de831d0817224615b6c126f955

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 dac3c03c33575ab4d6b9bf3c5c8007db0df2a57d05e7c093c0bcdcd9ad6ac363
MD5 1abdeb430656a59d9fbb096442dc6884
BLAKE2b-256 10d67abb07bcb0f0425f0b22bc44ed7fb330be06f53abe23ed7b8cdb54c8d115

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9bd36311205261cfc5860fe9b67c8b556fa2a0a2240219b34e682b4a6bd42295
MD5 d54a35e3f923fe3363a5d778921aa586
BLAKE2b-256 8f3bfbb8557ea0f35a36ffe317d4874b5e57f19a5c52623aa6eb373c0e944982

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 18111db25c556b044b49db5df35d5f542fe457cd97ba79882188b34e1680757a
MD5 d236ddbebb7c7c23a1d301dccc111a35
BLAKE2b-256 9c82d81a473505808a962a785edc4488ae1005d6f916eed10c4d25b407a5b0c6

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 36ac724346c3f5eb58aff1f682a51150f51ca406b77bde82cf42e638a2add79f
MD5 707148f6da38075247e91cfc5f257639
BLAKE2b-256 630078ba1d21cbb7679fb11dae179782f2e96678ca7b9dba9128ff7d9262a6da

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 81a293ec1aac9c2126a1cde40ff15beb2f6575e4142d1e7e14795da7809ceb77
MD5 e3c178c37262695247a0881bcb6516d4
BLAKE2b-256 9956010370d6b3bb051cafd68b809ed1afa61a594c7eb17376b08f0fdc87388d

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 28de8ddc5656286f19e66cfa60b4708e60e1af1fb79105a59df6152679454c86
MD5 e8c49b8726ea036718f579be6733dfff
BLAKE2b-256 9b886758d3dc921e414329c74167bc75306f6ff53a154e8f1f08e410e6e9730b

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d66ada8a0cf047b038c53b7862b595d4a06d474ee43f90dac63d9078b14d76af
MD5 04aece21171823a471c2a6752e4109dc
BLAKE2b-256 6baf5106f931aeb1252466f5320ebd2f94c89f0804ec7085ab7ca8a6c1accca3

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c514a68c95bf6e9de96c19a8818d7c53fcc53b4471b1bda85d335ca5e4d60f53
MD5 d30daaed50816cd89cda18854d8c65b1
BLAKE2b-256 df5934780a417c91b50de0ce631c7e020bd42ad469c546d6679cd331268a349f

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e268e1e71fb8ee7562cbd3185b62397dd10a35e5976df357c20c26b3a84c9277
MD5 474e8caaeb97d2499ee1244488fec852
BLAKE2b-256 cb3d2746a698633050f9491919122a09751c395e5e25d068f94d38b2d4e18ca6

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 bb453bd8d9424222acbc23cd609251c824f6102acee752e41c14f16cc5a6f59f
MD5 dcdd2eaca50a86e9b4202e3f5b28f224
BLAKE2b-256 dca5369d8059ba765d0be0456ef12b0e5a0d564b6b744cc1df4e720ff83f743f

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 a40c4e4812694fc64adaa776466c98a57b00d40a2f7375194b7230bbce26700a
MD5 2a39f18dab7ad5fa7b18afb4a31e9a64
BLAKE2b-256 782b47e38f71d6ac84543ef026b0e1dc7e010aabac16e0772ac3d1f97725b3c8

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 95cfd9c4808685b45d31dc0ddcb3c07248ae93c077df30d8ea25eee894793f40
MD5 fcde8d5c2484112578b790e0b19ff872
BLAKE2b-256 7c1e29b0066cf158f3442af01e06dde42c8a52ffbe4a37ac70e335a66b16e371

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 83d5b1673ba8be1471b45c77b8b26d94d8f55174563d5d4301d5a273dc3fc528
MD5 00a3bb97da75b20dbcca915bb9ae20c2
BLAKE2b-256 83b204cdc1c80adb5b4bd95c69f221ea5dcb7d63dd07c7cbe1a617f27ed52f85

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 09683b3392114092efe0a01fd96835c25311b1694d8821ad369a258c22803b59
MD5 592dda058db3899b5baf64077f765ef0
BLAKE2b-256 73509b882ef83fd715353cbd1b1d8ecd5b8e56a56704a20bfa964b5a0601ddfb

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp39-cp39-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp39-cp39-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 e9e2059da86242bc9f97f91d74945efee3b8cc42323a34ac88b998d4f805542a
MD5 1167e7ba5f3cc37188b683b4c15d11d2
BLAKE2b-256 7ac4b9b28ed807134b939073babc0deb415e107d5d27faca3533028a8fb91846

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 90f0cb6cbc575c854f972cf9d185f0f66135997615278c5661437fa4b0e98d33
MD5 374e8219ca8607426ce7f1515d9f3d40
BLAKE2b-256 355300396df694722e7041701a9efb21b321c6c067b16d04c23dcbe6a86297e4

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c2e652b9920de9c83b71dfda9611a9f4a5c82732cad8b37a5a6e1efab397ec8d
MD5 90d64271672e8ab6cb28849358699512
BLAKE2b-256 049ac8768f8782cc56f6e8c283b1eb7830cab41dc88755f866d85a5aefa301ba

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 40326b13a163732522e6badb25928dfab49e97580e8f4f000a45ef87ac6fe295
MD5 7ce17057d3f85edfeef653d8af62deb4
BLAKE2b-256 06aeb51a57638cc4d43bfdd042f367fc0c662500d6f868c2107ccc2fa0a3a3e5

See more details on using hashes here.

File details

Details for the file cengal_light-4.4.0-cp38-cp38-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-4.4.0-cp38-cp38-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 6af9d8aeb1b0d5fff932697dcd2f6a4a13135b9f5071ce94677ede48be42af78
MD5 0f87820813fc01c9978cea5c10e29f06
BLAKE2b-256 851f5e4df14810ffa627d5f989790f02ecd20b1fefe90cb9548ea6308b3df167

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