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

CengalLogo

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.

Cengal features an extensive codebase with over 200 projects and more than 80,000 lines of code. I am continually focused on developing new features and making improvements. Contributions are very welcome, especially Pull Requests that include unit tests and documentation enhancements.

If you have any questions or would like to participate in discussions, feel free to join the Cengal Discord. Your support and involvement are greatly appreciated as Cengal evolves.

Github repository

Github repository is a curated public mirror of the project. Active development (including experimental code and private research notes) happens in a private repository; selected snapshots are published here periodically.

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 Discord

Cengal Documentation

For example 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.cpu.info 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.

Throughput GiB/s

Dict increments per second

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

Throughput

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

Shared Dict Performance

Approach increments/s
InterProcessPyObjects - IntEnumListStruct 1189730
InterProcessPyObjects - Dataclass 143091
UltraDict 76214
InterProcessPyObjects - Dict 44285
shared_memory_dict 42862
multiprocessing.Manager - dict 2751

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 available).
        • "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 available 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 available
  • "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 available) or python implementation of points (1D, 2D, 3D, nD)
      • "vector" - numpy (if available) 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 available
  • "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 available)
        • "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

Install and add the required folders to PATH (the list of folders to add is provided either on the corresponding web pages or in the installers' output):

Linux, macOS:

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

Windows:

For compilation with Visual Studio (recommended), use Developer Command Prompt for VS xxxx terminal (or an appropriate profile in Terminal App). Different Python version require different Visual Studio versions.

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

prepare_visual_studio_terminal.cmd - Optional. Switches the terminal and Python interpreter to Unicode mode during the package build process, and sets Visual Studio to English language mode. This ensures that text output by Visual Studio utilities (such as error messages) remains readable even on non-English setups.

Windows native:

  • 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). For Windows with Visual Studio compiler: replace cc = gcc with cc = vcc in config\nim.cfg (in Nim installation dir).
  • Go installed (Optional)

Windows + Linux under WSL:

  • 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)
  • 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)
  • InterProcessPyObjects - High-performance package delivers blazing-fast inter-process communication through shared memory, enabling Python objects to be shared across processes with exceptional efficiency.
  • 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-2026 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-5.0.0.tar.gz (1.9 MB view details)

Uploaded Source

Built Distributions

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

cengal_light-5.0.0-pp311-pypy311_pp73-win_amd64.whl (4.7 MB view details)

Uploaded PyPyWindows x86-64

cengal_light-5.0.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cengal_light-5.0.0-pp311-pypy311_pp73-macosx_26_0_arm64.whl (4.7 MB view details)

Uploaded PyPymacOS 26.0+ ARM64

cengal_light-5.0.0-pp310-pypy310_pp73-win_amd64.whl (4.6 MB view details)

Uploaded PyPyWindows x86-64

cengal_light-5.0.0-pp310-pypy310_pp73-macosx_26_0_arm64.whl (4.7 MB view details)

Uploaded PyPymacOS 26.0+ ARM64

cengal_light-5.0.0-pp39-pypy39_pp73-win_amd64.whl (4.6 MB view details)

Uploaded PyPyWindows x86-64

cengal_light-5.0.0-pp39-pypy39_pp73-macosx_26_0_arm64.whl (4.7 MB view details)

Uploaded PyPymacOS 26.0+ ARM64

cengal_light-5.0.0-pp38-pypy38_pp73-macosx_26_0_arm64.whl (4.6 MB view details)

Uploaded PyPymacOS 26.0+ ARM64

cengal_light-5.0.0-cp315-cp315-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.15Windows x86-64

cengal_light-5.0.0-cp315-cp315-musllinux_1_2_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.15musllinux: musl 1.2+ x86-64

cengal_light-5.0.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cengal_light-5.0.0-cp315-cp315-macosx_26_0_arm64.whl (4.9 MB view details)

Uploaded CPython 3.15macOS 26.0+ ARM64

cengal_light-5.0.0-cp314-cp314-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.14Windows x86-64

cengal_light-5.0.0-cp314-cp314-musllinux_1_2_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

cengal_light-5.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cengal_light-5.0.0-cp314-cp314-macosx_26_0_arm64.whl (4.9 MB view details)

Uploaded CPython 3.14macOS 26.0+ ARM64

cengal_light-5.0.0-cp313-cp313-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.13Windows x86-64

cengal_light-5.0.0-cp313-cp313-musllinux_1_2_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

cengal_light-5.0.0-cp313-cp313-musllinux_1_1_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.1+ x86-64

cengal_light-5.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cengal_light-5.0.0-cp313-cp313-macosx_26_0_arm64.whl (4.9 MB view details)

Uploaded CPython 3.13macOS 26.0+ ARM64

cengal_light-5.0.0-cp312-cp312-win_amd64.whl (10.9 MB view details)

Uploaded CPython 3.12Windows x86-64

cengal_light-5.0.0-cp312-cp312-musllinux_1_2_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

cengal_light-5.0.0-cp312-cp312-musllinux_1_1_x86_64.whl (5.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

cengal_light-5.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cengal_light-5.0.0-cp312-cp312-macosx_26_0_arm64.whl (5.0 MB view details)

Uploaded CPython 3.12macOS 26.0+ ARM64

cengal_light-5.0.0-cp311-cp311-win_amd64.whl (9.5 MB view details)

Uploaded CPython 3.11Windows x86-64

cengal_light-5.0.0-cp311-cp311-musllinux_1_2_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

cengal_light-5.0.0-cp311-cp311-musllinux_1_1_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

cengal_light-5.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cengal_light-5.0.0-cp311-cp311-macosx_26_0_arm64.whl (4.9 MB view details)

Uploaded CPython 3.11macOS 26.0+ ARM64

cengal_light-5.0.0-cp310-cp310-win_amd64.whl (8.2 MB view details)

Uploaded CPython 3.10Windows x86-64

cengal_light-5.0.0-cp310-cp310-musllinux_1_2_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

cengal_light-5.0.0-cp310-cp310-musllinux_1_1_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

cengal_light-5.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cengal_light-5.0.0-cp310-cp310-macosx_26_0_arm64.whl (4.9 MB view details)

Uploaded CPython 3.10macOS 26.0+ ARM64

cengal_light-5.0.0-cp39-cp39-win_amd64.whl (6.9 MB view details)

Uploaded CPython 3.9Windows x86-64

cengal_light-5.0.0-cp39-cp39-musllinux_1_2_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

cengal_light-5.0.0-cp39-cp39-musllinux_1_1_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

cengal_light-5.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

cengal_light-5.0.0-cp38-cp38-win_amd64.whl (5.6 MB view details)

Uploaded CPython 3.8Windows x86-64

cengal_light-5.0.0-cp38-cp38-musllinux_1_1_x86_64.whl (9.6 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

File details

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

File metadata

  • Download URL: cengal_light-5.0.0.tar.gz
  • Upload date:
  • Size: 1.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for cengal_light-5.0.0.tar.gz
Algorithm Hash digest
SHA256 0da5928a44d21b94602a4145beb0c70d72189507bb5e5425e8907d098aa3df4e
MD5 cce512dfd8d269d9c09ea2d8729c5492
BLAKE2b-256 c6e37d91e5e7a64ed76bb9c4381f008123a79d801cdf8023e872d198290e873f

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-pp311-pypy311_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 32ca745de41011dc0cb75b860df398d7739077fb3bbdbebc08b196873c83dda7
MD5 086bf88bb72cf70292495256c6b1f53b
BLAKE2b-256 1914f07dbb136786163770555114e9d0c0f053074a2723dba6be7dca5a577f83

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 de998c6954c1f824d1870900f32c677530d5ece0066841474a086c74067cb372
MD5 49e9743a4eb843788f7645003ffe8c59
BLAKE2b-256 cc37eec584da8d6bf38fe98b937e5bdbe3e0427177c0f5c0d4f11b8aa2169344

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-pp311-pypy311_pp73-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-pp311-pypy311_pp73-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 432234ed52d3fb899c328b0298a0012496ba1101a1eeb5090d0e6959be735f83
MD5 bf149c9e7344fe3526fc3974f0a1fbc1
BLAKE2b-256 5573df4a59fc30f54ae744b839a62bc4ec31c1410ace71138f5a383fea2a9498

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.0-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 48c22321bff6f2e0e656267b540703a465506728770bbb5edd44606d6c2e5ed2
MD5 978a59ea35f00e8116cfb4ee3ff73a81
BLAKE2b-256 24682c24dc1794c7a604e5ee92138017839de302595167b4aa7cd8ca479190cd

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-pp310-pypy310_pp73-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-pp310-pypy310_pp73-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 5ca4fce314ffbd42d63c9e29e3d120034c81c5ac2ca8a5e63ef295b118e64388
MD5 5f5f9bfbae2e1266b4a86d200d6f6970
BLAKE2b-256 dee482ad97af564102e98e9dc338a39c42c2cd3ab185effdbb0132c38d83a37a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 471285af20a9adb7dd596c2578fa97cc0de6fb4bfc776510e07c430ca634210f
MD5 c10abdec64fff21f4a31b117fb73e400
BLAKE2b-256 dbce941f04024ff123d492ac280d06dd3193ac480ca9bae4a2b1cc16f24f42fa

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-pp39-pypy39_pp73-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-pp39-pypy39_pp73-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 39daca3158fb43db23ef241d96d64076dc15370ea420e3b956e4ec194b8afaba
MD5 4774d494f647ee3e9717e3c209744e2d
BLAKE2b-256 42a91db7a8b727ad525ec6fb13e7c631cb766802e3a367b8e8a0e577163f62c1

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-pp38-pypy38_pp73-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-pp38-pypy38_pp73-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 32e3800646201532b2545e7a60ce1019e6b21bd594c20527c949e17a00c15575
MD5 7501693ff2eefdf61bd26b695d1a8445
BLAKE2b-256 6401ff367829586bfe526880ba5ec1eda31473c2310bae310de81cb4ccf39ce2

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp315-cp315-win_amd64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp315-cp315-win_amd64.whl
Algorithm Hash digest
SHA256 001f9e64cf72b7276ff4e1b5febdc48cbf12774d50b6dcc5a0af047d15e36c72
MD5 b32b11dc2ea5f9235d3e041f1921b564
BLAKE2b-256 0daeb259877f9dcad03602e909a08ce19554ec3558397234bfb7d6efc7580a45

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp315-cp315-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp315-cp315-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0de3836a024090bc9cb4e019f04387ed37027883fd716a1ba84acec122d1832f
MD5 fffee2c8afb76a4cd905b37ae922a047
BLAKE2b-256 1845ccc044faf9844eb01c46463fcce677550379955d0d72c0cbb7c6da837494

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 16ab79891050a8db7378bf7d8b5587749de3a014bb1092fac81006cc7e151a74
MD5 1185c26b990423e09c3d1d9517c1ae2b
BLAKE2b-256 d727ba963d7a8334122ad9b5a7aa9801f64818bc839de14dcbc9754e687a5c53

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp315-cp315-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp315-cp315-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 190c3d42f46c7d3daf7db35a1efde5a5784b5a058e18f258c488e8ab2d731353
MD5 f6c8f193b60e841ed6ddd32a21ffeb3a
BLAKE2b-256 a30e4988cc16eda833bb5dfa3b0409311dad8d5fe8c12177819f46e919d4dff5

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ba380df57423f4e6ce0dbcc8b50fa7352a635226012546432d691c1908e9428e
MD5 55bf785852821b82636e8115dbb5a0fe
BLAKE2b-256 cd1a766d5603a54e8900715df893aab91a23038aeec91d0bc47305d5ea65c812

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ac499768d75ae65e62ab846bd38df9f375b464b8e984cc7663c81f6ab0f639fa
MD5 e1464ebd9c136459093f2d6854dca745
BLAKE2b-256 15b05ff685d78578a7d9ea434433d7c8161fe61b45120892ec2da4a082196284

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0a14d636927bbd282ee2df1b269c6b069a166d4f41242d4a4f833262a30545de
MD5 ed9108de572c9619bcf17d71f5a1ea2e
BLAKE2b-256 e2ddf5e60e099eb0ca5793334e989035f46f63db966391266319eda47589a148

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp314-cp314-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp314-cp314-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 53e116dd4d10f4a7b512a6f060fecd9d86b79268fafe71aeae47d085b717d00c
MD5 0902d89b686a48b58f6b00ce09b1b055
BLAKE2b-256 41df1021afd4aee72cf29cdc1a32d42303f1f285f2761157008466c7f638ca2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 5a89091a9f4aa9422eba014746b6dc3625866ce37ee09753ad6439018e0f23cf
MD5 40f8b072b728836a9fad9979a5dd1ed5
BLAKE2b-256 1c1e48db49d3e89c96f73e7e646ee946e24c28a37e31d88707d373fd9f8acb44

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6ba7599af030ef9067208a83659d34c477979c88e13747e33f3063349c7f88c8
MD5 a6ec80602d8c26b1f38d3e0f67cea1c8
BLAKE2b-256 0480d812dff66f273b560f7a217ae4f6db0c774440fa9b1ccb96311db71b1f50

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp313-cp313-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp313-cp313-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 537ca6b48792d12cf1c0bce666d24538a3ea3c9123c54161a835da78328aa198
MD5 41dbfba6dedc652255ab6ca7d65f29d3
BLAKE2b-256 eb265cb65de9af56cb80c15c22e54633660c252a4b17699f90f8f75a9b0bf741

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 56fb5d1fb9b39b7fb7ee2ec1ba7757ee1e765e4c1be1edf8984e9ccae1a8c88a
MD5 2cdc4e95ae68c3a4b55c50684f287c38
BLAKE2b-256 ff421ad09b40f28d452e5193b8ab1e636b2d101de10b468d8bf86a07e9a41363

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp313-cp313-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp313-cp313-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 f06348609eb8a5465b8a7f5bad0971ebe6c17a5f0e237eed2fedfd052d5db889
MD5 0d119b086850fa5b093a61041f0f7517
BLAKE2b-256 f6a21d9d2153a2402b6fe485c8e4acd577e328630c2b3d3b73cf1e88ed0b94f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 beaf41e698a261d4e5c951aab28368ada44e22a7c21ac6b9b0064f6af69011e1
MD5 64c273e2a77aa2fe3637bf48276325b1
BLAKE2b-256 8b556c5c0f8679e9a288dca1d500af6ff08b6faa90f0e048ad67424c6dd11be3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 73eab391fd1369a3df8f24181b8b81552884f3ca9a0fcbd0111342de34d37864
MD5 ba7b4772296e1be3ba464ab669104fa0
BLAKE2b-256 6b441de6fb4aa5d382fc3eca5c6a23a46a45dce1866cd12628ac41f29cb3d245

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 99eeb5c6093d06103de3f9c561ac0599b9d3a20dfe11aeb7989f1a5fe8437bfc
MD5 f9acb06badb8e684a2a6b70c32cf0a42
BLAKE2b-256 7ece012a97c76f04387dfb282d82da52cb49b89e0a6017d79cc087b5d54dbf35

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5213d16fba5293447fd9983f9e6f3d78fdb07360770b730764caa20de18797b5
MD5 fe99840d78319d9d92abc0bb8ea56e69
BLAKE2b-256 52ea401928b6e96f243d5e02db8cc1635532c6ffb321785a667233a23ad1dfd6

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp312-cp312-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp312-cp312-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 5a6ffb163f703602570b12a4c67b98277ef327c4442b8bd126b82e1dc3b11e5c
MD5 70ac98216720e8e29cb9bdcd65cd41f2
BLAKE2b-256 ef240e0606751fe569a96b5024d415e9193cf327c30d0328a81aa07405a3f615

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2170734e130f9993765c57d8cbfab1b8b0a6cc5ca462b74244e401fb0d184ca7
MD5 802708e69afd8ab63529026e6c2b3902
BLAKE2b-256 3f3c09867b030d58e6f5289757d38b764489cdbc4d9288ce14c7986893845dc1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 52c434d3e874452479b4888929e97875056d703d40b4d699c1ad4b7f86cb238b
MD5 d19125fd0faa3e7e4def2778fd3a26c4
BLAKE2b-256 89868220678921931ee7b00e0246faf392af7b721270ac4f27f3183d56a51325

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 eeb088778457afd1952df54ca0e34ad0f6065915a87acd6f4650060aab73e375
MD5 1e0f3b04a6fcaa9850dcc9546fba6130
BLAKE2b-256 56f209063f1e0aade716b2c9b5bc2a871881e68ec74282ffae009a9ff1fe55cc

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5a64755dde7097bd790cf0bac2c4c528377bc885268df8e93a9eb83ba699adb1
MD5 0b5db403fb8a65794804796706d4fb0d
BLAKE2b-256 5ff580beda218bf24e9a6f8e623ddb6426d88714ff6dc1ac8ae66ff470097611

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp311-cp311-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp311-cp311-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 037f48a493eeb1b518d96a6ce9fa0ff55200248e8f0c8b1e960ca7b79c6cf3b7
MD5 06bb0e35cd66c12cfc7bdd938618a46b
BLAKE2b-256 c46dd38a472375a2008985bb4f5ecfbcaa5b0e1c1046d6606960e5fc234b5f56

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1589a731fec130652b9030cd50e944ae0b2bb0b3b1156cccb2956b394d1a0c26
MD5 33cfcf784fe70b8725b3da8fcfaac571
BLAKE2b-256 89294017831e203481bb37758000babc25bc50fab435dfbef57dfae612b8c62d

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e7050f1032533308373f8b55b463f6d3c726552a33b1e2dc1bf751c37e8fe87a
MD5 f54b8fb6aae9bcf3fc2183c76109b42c
BLAKE2b-256 8d7e8875caf6c3dc1a95add1f415a51f61f60d9f7f0587e5587b30d898406736

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 97d3ebcce9b1208a949ebae9e0927062ed0a8693085412402b5d8e82c02d158d
MD5 6d0c8d7ffa26646aae58beb02813e25d
BLAKE2b-256 834f7776e168bc0bb4d34593f708ec8d5eb751324974b64046d398115c48a308

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cbab3131b8be9d5f28559c38a84b39c5d7dcd9c8fee3a616c8614d0e96cf5534
MD5 5c92e2cf964fecdda80b7dac3f9d84ed
BLAKE2b-256 ac87f3751c469188e6776baf862137764f0dce0c85eeb93c099ebba3a4d1154b

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp310-cp310-macosx_26_0_arm64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp310-cp310-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 8cf271d91aa56f38e959ff5e3a2efe43c386972ccef6ba52903b88f7714f46df
MD5 b4c64a2603e29957d4afad5cf47ca7f8
BLAKE2b-256 9d07d30c01b9696125cabee4f0a227bd3b860280b7864a1f1f6bbb69e68d19d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1860ba877dca386ce42ac1bc6f04ae4373b59b76a83b188d3e3ead017b6d596e
MD5 288ec1289070b83832c750eb4c36852d
BLAKE2b-256 73894c65143d02e8af4bd25a33ef6699b4defeee05493db8ba5e19148f87d177

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a721dce480ddb37d3a5097081330f0e4067e555f28ae08e28f2c660927bda93e
MD5 6fca45e354b77251085df67826586a05
BLAKE2b-256 56b96b909160b1baed63bffd2a91b42f7a7e5b2b4932942315e9b3f8ee66c64b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 0306e13384b8dd345834133afc8200756864e8aa9152d98b77dbe3314c1f2c19
MD5 233ad345402a8be806461161da288182
BLAKE2b-256 6de4826d566f5513ab60114e743ea6dc4a07d39e648a1cae9cae36b0aaf88b4a

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8771b35b543c8ab03a79fbf75d351bd50bc64651f228f370e9f98ae9e01e9882
MD5 bcfda9238cc6fd42d387ed1d98a92638
BLAKE2b-256 2eb404bf6cb177e2f19c17331f89208240e8b9df510a892aa09efa889ebb8f8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 f7d62ea1a85ddc0a0604d260286a86432899ef2a0fc93bcf4c8bb2de61ea9657
MD5 72c266124ae0aed36f293fb409117e8b
BLAKE2b-256 d6a4a2f0fa8521b550d98fd38eea74bb97b909cc255cbab9ba7321513b7d5cc5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.0-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 9943e53330373085c6add4c273240fa41666533034eeea4ba5d7a280848d1727
MD5 ed30d8429d26a67d385a19bbaf931d3b
BLAKE2b-256 9a11674e15e4dc34734585797280066eaecd8aabcc2e7149dce5c46dfb4f8734

See more details on using hashes here.

Supported by

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