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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

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

Uploaded PyPyWindows x86-64

cengal_light-5.0.1-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.1-pp311-pypy311_pp73-macosx_26_0_arm64.whl (4.7 MB view details)

Uploaded PyPymacOS 26.0+ ARM64

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

Uploaded PyPyWindows x86-64

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

Uploaded PyPymacOS 26.0+ ARM64

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

Uploaded PyPyWindows x86-64

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

Uploaded PyPymacOS 26.0+ ARM64

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

Uploaded PyPymacOS 26.0+ ARM64

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

Uploaded CPython 3.15Windows x86-64

cengal_light-5.0.1-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.1-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.1-cp315-cp315-macosx_26_0_arm64.whl (5.0 MB view details)

Uploaded CPython 3.15macOS 26.0+ ARM64

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

Uploaded CPython 3.14Windows x86-64

cengal_light-5.0.1-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.1-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.1-cp314-cp314-macosx_26_0_arm64.whl (4.9 MB view details)

Uploaded CPython 3.14macOS 26.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

cengal_light-5.0.1-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.1-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.1-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.1-cp313-cp313-macosx_26_0_arm64.whl (5.0 MB view details)

Uploaded CPython 3.13macOS 26.0+ ARM64

cengal_light-5.0.1-cp312-cp312-win_amd64.whl (6.9 MB view details)

Uploaded CPython 3.12Windows x86-64

cengal_light-5.0.1-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.1-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.1-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.1-cp312-cp312-macosx_26_0_arm64.whl (5.0 MB view details)

Uploaded CPython 3.12macOS 26.0+ ARM64

cengal_light-5.0.1-cp311-cp311-win_amd64.whl (5.6 MB view details)

Uploaded CPython 3.11Windows x86-64

cengal_light-5.0.1-cp311-cp311-musllinux_1_2_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

cengal_light-5.0.1-cp311-cp311-musllinux_1_1_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

cengal_light-5.0.1-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.1-cp311-cp311-macosx_26_0_arm64.whl (4.9 MB view details)

Uploaded CPython 3.11macOS 26.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

cengal_light-5.0.1-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.1-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.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (5.2 MB view details)

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

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

Uploaded CPython 3.10macOS 26.0+ ARM64

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

Uploaded CPython 3.9Windows x86-64

cengal_light-5.0.1-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.1-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.1-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.1-cp38-cp38-win_amd64.whl (5.6 MB view details)

Uploaded CPython 3.8Windows x86-64

cengal_light-5.0.1-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.1-pp311-pypy311_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for cengal_light-5.0.1-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 263d3a2c38a1a2eaf7f738df6a0eac88e0c37aba9712e8b3096070b616aa164d
MD5 ef3c1ff793eff10d4b3778577f1e0830
BLAKE2b-256 2770f2f5baf26a3e8d5b86d3ad6422d4dfdf08b2c34fb0c82565bcd10a5f7ea4

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.1-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.1-pp311-pypy311_pp73-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6e54a0ccdeec57e94935a61615cbd5c25f3732deafeef81a68c047c141ade29a
MD5 9d8f0abc76944c381737fe310ea71f72
BLAKE2b-256 8bede4fdf02c7df6d11bdab403130eb532bfc37c648ca9ef1ccb335842b46c41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-pp311-pypy311_pp73-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 55af0d2db037ec093d9ab5a6d5baa08c5e50abcd837a276e81d975d1d272f25d
MD5 c2ab154bb2b917205f8d9f67ca3c6987
BLAKE2b-256 c2fd76529e59f9f8a5c87890e5afb26fac70bb3fc4bbe0343bd0910e62fd5c15

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 8c56c0e210a94760e7c83ac9ef96d3f77b15f94bc6454870e776c45efed2cb2f
MD5 fb7c5afc797d4aba6c508701131823ea
BLAKE2b-256 be02fa1c283baa6e0c54a636b2c439a3eac9cbf660ed0709cd7e373151b08a9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-pp310-pypy310_pp73-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 3a7cf05f7268a3495b913e752c70c35a38ece42c0048916b3c9603255c744be1
MD5 e12872096b9ac14150026740cb8ef9db
BLAKE2b-256 c2e0be35c119ff0a3eaecb0452e6c220eb941c13884dab258c1044bd6136fde5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 58abee8e4862e069a4db0868d05a83119f6542db43d956a57c7993e75d4f73e7
MD5 7b28daceabba05a807aa90f459b5117c
BLAKE2b-256 1a848ed14b829d85d8713b0d690aa898e3a67820929a3347ca6c12b1263a59ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-pp39-pypy39_pp73-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 b53f98f6a73c2a158537181fe4e2c6f62ea8af93134007187a2282efb45e8471
MD5 ed153f9a00308df547ed001d5ee8a9f5
BLAKE2b-256 2a7da44f97673367fc2a73e48bff7aeadb93685d4f998a5af9c2351e25fa3d36

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-pp38-pypy38_pp73-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 4d4c5a14a00ac5e9d76a0a296b743da177989bf68b920cc591f4258b8cf004c1
MD5 aed5e04e8fc5055d98ccb4ef053f5b4f
BLAKE2b-256 27325394776a04d46ec0646a1561ecc93c01cdd796c831296f53922a840d8b2a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp315-cp315-win_amd64.whl
Algorithm Hash digest
SHA256 369f4b2f9975ea3de1381565d211835098a99073eef7c58c42beeb65d64facdd
MD5 fe3dffc0fb08de5f397b34352bed36a6
BLAKE2b-256 b0d71a7eef17895d658b16dec8ab7de85b396f71690d9b78444a223ee9e3d55a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp315-cp315-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 edf89ea8eb53ba918e243b42c4b55ef917c41f7f12e89f88918fa1d26c55637d
MD5 86ef349b243a1f2ae02d1ab0916073d2
BLAKE2b-256 33659d5ce3e3b04be40a944d71a85f8ca7db0056235904bf0740938f2d31cb5f

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.1-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.1-cp315-cp315-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c30405a6f12a5ebdc9017b476a9c156b6318ce74ac68341f26dbbbc8260d8f94
MD5 18d02b12cf936fda7331a9f07f53796d
BLAKE2b-256 2491439b5de79bc4ecbd51d438b0b7eedaeaa20ab06202a2cf28adfff24b1c9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp315-cp315-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 e435fe6f9fa2eb3484f1572c0dba8c791e9f5677fddc03130b6dbf425f589cbd
MD5 d18fd8fd49acb538d6f1fd252ea3c647
BLAKE2b-256 e17909138422c3c7d3e88fc2e8e3b105a8989ba3d3eeeda34941dddd01f2f5f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 34aa90261697083d1087039a3142f5fda99ebc98d5dc2e4bbc132388341d5c83
MD5 7aadd4345212c859c9bc05b97da417ff
BLAKE2b-256 704f6e059bbddb4bcb628a72f169990d60e8709076dd4e342740ba60899c3013

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 787f0b15104fe917acd78a99768ee5d7673ec2d0551160f0aa0855e259a82829
MD5 79766f0ac880ee311eb673a93feb6828
BLAKE2b-256 669ee07bbb9afe0c79199733709b316f2c9334a3ba9999f04a4574b5449d7f80

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.1-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.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a613a26d1db80a9eedd014f9f8deb0652228b8b4e590466d0c4db1e5525104bc
MD5 438f9dbf4045175de7a6a5143aba5d23
BLAKE2b-256 08e76858e1904d7567f33b18e149d25000fc32d2f914bc61475fbfcf68fbf743

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp314-cp314-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 ef6adb3a970b4fb5f25ae83653f39256f17ba08a3f718f261abcdf4c117e6ac9
MD5 f63106c481b3235c06dcd663ea0e9ce2
BLAKE2b-256 52411d9a9395814cd589bc78743d3ffec06f06c5bd6629b3b69ee4355959c343

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b4f0d7d5fee60c92e1e04cf900212972129725c54fc24c7add597b00d9517a55
MD5 cea923475202f01caba5b969072662f6
BLAKE2b-256 9fe834ed78bc6c59afe834b9652b24ebfcb1977f790c07810a79f4e0fb7da63e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 602e2a027fdeeb81a30a07d76b1a2a4d70d747d0462b7cfcb5227c495a756f7a
MD5 0565cfc16b86ccfb5bc3f244bc669c1b
BLAKE2b-256 714cb84ddd846216903b0317c6c8b35d2bf4e395abee702962462cbe16647cbe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp313-cp313-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ac63ec8a6edb242d9c75134d2a62ab35e0e47faca099f8f5bc061b3c3d5f9ae8
MD5 579e2c9687609fcf708975cc54c09fdf
BLAKE2b-256 632de21f3d7ff58f55904496dc38e67610c4276432e15a3433a2f55e12507895

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.1-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.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 568796d5cbc5c479ece878686e867fa0ea443656e8b4b1c9a98ee10e1fb4168f
MD5 4e8ef61984b03b2ecf8a52634997782e
BLAKE2b-256 441625816a91002d5f1c443f35be2a35bf5b9fef8b8e686dc96b73d7b3712996

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp313-cp313-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 878ae9890c258bf4f773c055dff30bdbf8d532e4e71fb9a360fd6338765e2577
MD5 51f2fc1f76cdb65e3a3a7e8a12cf5096
BLAKE2b-256 a9bd306cd587dfa48b917ab9e9039f968d2f50b572e1150b3acaa688e3bcf7d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1054de950892c6213775141b2b46c612e431c6d0760f0c038c79ef03fd61430e
MD5 a2a6330bae1a62f46cd2ad87781bd0a5
BLAKE2b-256 67acb0e7799ecc0585870ee56a4f1357c5d086d40807aba1a818d7ca04cd944b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d5730ea852bc527fcaa075745ed1591c41065129bd6a0e54379ce4b50a0a7bd8
MD5 128491ea37dfcb0f596127f3ea681906
BLAKE2b-256 3e4d425db9d678cda53d330e1a124b8d2f852c6dc9bc7d71fbdd7cd1aa0de8a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 2442b3bcb614d74d7e7c8e5aeb70092cf0deab1ebbb9d1b546711992d0fa33c4
MD5 a80650ad6b116bbd825098e42224c12b
BLAKE2b-256 e9024f19e75b3564b67940f7168b8344f9c2961e4a17d76db6d21caabcc2ca4a

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.1-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.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bb94c887fbf67b8c580e7c1d581aded2b4facef67588234198de1bcd7ad87589
MD5 9e9a8ea6697c156fc69b81335426c0ef
BLAKE2b-256 c95bb674a346d0dd3387292b46690124ac28c53b8fb9455e4a273135552f2bac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp312-cp312-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 4c2bb8e9b7ab22801a1be1d683c826135dff67e08b187f8fadb42a4d914331a8
MD5 a5d8b4ece74f92ceb1849f643337aa23
BLAKE2b-256 c007b461015c2b31381018565f25eeea572dd8b415c6f7b6df2d46604b8fdacc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d9bd113a9e43b255825286f47cc40be084d6132a8ce137282453f4ff741aef68
MD5 44811a553fa0ff60d11f4d16144d1ba8
BLAKE2b-256 882c5da111332ef9255031a8ca83cd1a811137f429ac9dd691102b7867eb2d6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 50a77d58ba0b1d36adb2c312cf0f7a2d2ab2417fa9fa8738062a5e501285f52f
MD5 21a65e19775ffb760dc6850db67445c1
BLAKE2b-256 27ff263efe9449101829df19f25785f0a3192bc69fab837fbe8ababc3c320c49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 0c45fa1460b2c302045c38859429054fe01b8f25cad61abcd437133c8ec3878c
MD5 9bcf3f3578c659e1041a2eb0447ed600
BLAKE2b-256 c2f3db7d233bb23b26ef2ed937479eec7ffec7cc1a6a7ceca19c383edce83190

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.1-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.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 efb8fa4c0cf995fb4f4a8327b9739a1bfe992f6b84e801d0cb5d5010ca8f94d6
MD5 a591c87bf7a5ccf08fdf2b29a3ddfcda
BLAKE2b-256 d87073a87e762f14b352ec4c5f7b3080f37cfe401cbccece745d4bbab941478f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp311-cp311-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 e0e1967be34c24f0fc59b74fa0ede6966485191794b7147ca22f5e5d1fafe79b
MD5 da11f5d482c27ed4020d411a36d2b1b8
BLAKE2b-256 9f72d315c700add9b9b9ed70acf1ef5f42c610dfd868d500d2aa6d5e285e110e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e359b780d17c57b9b7c4d6e01862f0b6801ab803e662d06efb16ebea79157c07
MD5 6ab7f9b1f16b9ef7b98b82cfe48c02fb
BLAKE2b-256 ac83f9e392ad7d51d42e57a9d17533011edd7be22d101d5115bfc80c210b0f73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fd43f80d30ee6fd6487545d825b4b351f3fd02e16d00e88eb396dfd85f04de1e
MD5 aac1799d43030e7b1013121b326a3886
BLAKE2b-256 92e1b05c88bfa1a9876b75f0c673d689d507bdc56ee697e9356aef3bc29294c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 51b427401e7bca7d8adc46e3bb3287e6eadb6dfa0dfcf083435dc4a783d79de6
MD5 a783f32ff8270d6b7e971762f0749c76
BLAKE2b-256 73f4a9c2ef858296073bbf741c0a9289f8fea81a6626cee9aeb638efbf801ed3

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.1-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.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 20ad645805c0816c652dc479492dbb2370b37ceba8450f69424c3e10596c98a3
MD5 9989425118651c59696a34d1dd1330b0
BLAKE2b-256 a94faaa44582b5686ba5602c36f0dbe911fef2d2f56d87a1ff593c765b47097b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp310-cp310-macosx_26_0_arm64.whl
Algorithm Hash digest
SHA256 46fdf3c51f3a827da0639aae8d4c0ca63a14c8493dcb82239af881f5b40bfb72
MD5 d1576321efecc96bc38d434d3a58f07f
BLAKE2b-256 920be8ec819b8c4e2dd2c19c51d634b8470cd916f72a3a9752a3a089b1ec5579

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cengal_light-5.0.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 6.9 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for cengal_light-5.0.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 67ee281047c0263f262bca507fa9164426f11112587b81de63d64d84f3d5ccf0
MD5 74c4498c481063de0e52587ee27db060
BLAKE2b-256 a32ed8846774acb359a39457c935e0f259238d5e15afe4e02e52d6eb04523a25

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b4405f290471a10856f8a8749a995f449ac395a3a2eeb23fddf4a0de81aeb7be
MD5 196b9d517576954eed54e8c854523c8b
BLAKE2b-256 2aa40b4b638c7ca97541c84c65771a7613b19c5f728361a95a46e0d48bb602cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 500e9525c2403793299cf7c2fcb9a550ac90eacfeea0c22b53337259e0c9b5b5
MD5 246f15def8d367d74ac5d311aa09df39
BLAKE2b-256 0edd4c195f8c9087cd6c18f041cb0d97b3a236ca26931d95c3dadceb223f3304

See more details on using hashes here.

File details

Details for the file cengal_light-5.0.1-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.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 46807f0ccd11d3710a3ec6cff6e8f87a14106daf0d3696fb0d787fae3d15ee54
MD5 54b694fc44efe559ded515872a3a4fbd
BLAKE2b-256 5e9d8914bf54ead706f7901e18c4ea71e069181c7e884b9363e909e3e41fc4a3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cengal_light-5.0.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 5.6 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.6

File hashes

Hashes for cengal_light-5.0.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a438e0d2b4325260a238eb1a77e2c1c30d8ff93983e888ef8f75e857d2be7fd4
MD5 ef91e5e41bd30eee88a0e972424b2948
BLAKE2b-256 6435a6065e9a21fc0c3afa34d97bc8489a87089f0d9803f0504672774f0ccaba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cengal_light-5.0.1-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 e46b47df7ac7e2807049f8f958122059223898930d6fa89821235378eb0c3460
MD5 3cd08f539b1fe6615c627454054d86c6
BLAKE2b-256 ab44e0da5fb4fe2331245e90bb4e676197bb235bc858f6069145a393903fc259

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