Skip to main content

Python bindings for Lyric: A Rust-powered secure sandbox for multi-language code execution, leveraging WebAssembly to provide high-performance runtime isolation for AI applications

Project description

Lyric

A Rust-powered secure sandbox for multi-language code execution, leveraging WebAssembly to provide high-performance runtime isolation for AI applications.

✨ Features

  • 🛡️ Secure Isolation: Sandboxed environment based on WebAssembly for reliable runtime isolation
  • 🚀 High Performance: Built with Rust to ensure optimal execution performance
  • 🌐 Multi-language Support: Run Python, JavaScript, and more in a unified environment
  • 🔌 Easy Integration: Clean Python bindings for seamless integration with existing projects
  • 🎯 AI-Optimized: Runtime environment specifically optimized for AI applications

🔧 Requirements

  • Python >= 3.8

🚀 Quick Start

Installation

Install Lyric via pip:

pip install "lyric-py>=0.1.4"

Install default Python webassembly worker:

pip install "lyric-py-worker>=0.1.4"

Install default JavaScript webassembly worker:

pip install "lyric-js-worker>=0.1.4"

Basic Usage

import asyncio
from lyric import DefaultLyricDriver

python_code = """
def add(a, b):
    return a + b
result = add(1, 2)
print(result)
"""

js_code = """
console.log('Hello from JavaScript!');
"""

async def main():
    lcd = DefaultLyricDriver(host="localhost", log_level="ERROR")
    lcd.start()

    # Load workers(default: Python, JavaScript)
    await lcd.lyric.load_default_workers()

    # Execute Python code
    py_res = await lcd.exec(python_code, "python")
    print(py_res)

    # Execute JavaScript code
    js_res = await lcd.exec(js_code, "javascript")
    print(js_res)

    # Stop the driver
    lcd.stop()

asyncio.run(main())

Function Execution

import asyncio
import json
from lyric import DefaultLyricDriver

py_func = """
def message_handler(message_dict):
    user_message = message_dict.get("user_message")
    ai_message = message_dict.get("ai_message")
    return {
        "user": user_message,
        "ai": ai_message,
        "all": [user_message, ai_message],
        "custom": "custom",
        "handler_language": "python",
    }
"""

js_func = """
function message_handler(message_dict) {
    return {
        user: message_dict.user_message,
        ai: message_dict.ai_message,
        all: [message_dict.user_message, message_dict.ai_message],
        custom: "custom",
        handler_language: "javascript",
    };
}
"""
async def main():
    lcd = DefaultLyricDriver(host="localhost", log_level="ERROR")
    lcd.start()

    # Load workers(default: Python, JavaScript)
    await lcd.lyric.load_default_workers()

    input_data = {
        "user_message": "Hello from user",
        "ai_message": "Hello from AI",
    }
    input_bytes = json.dumps(input_data).encode("utf-8")
    
    py_res = await lcd.exec1(py_func, input_bytes, "message_handler", lang="python")
    # Get the result of the function execution
    result_dict = py_res.output
    print("Python result:", result_dict)
    print(f"Full output: {py_res}")

    js_res = await lcd.exec1(js_func, input_bytes, "message_handler", lang="javascript")
    # Get the result of the function execution
    result_dict = js_res.output
    print("JavaScript result:", result_dict)
    print(f"Full output: {js_res}")

    # Stop the driver
    lcd.stop()

asyncio.run(main())

Advanced Usage

Execution With Specific Resources

import asyncio
from lyric import DefaultLyricDriver, PyTaskResourceConfig, PyTaskFsConfig, PyTaskMemoryConfig

lcd = DefaultLyricDriver(host="localhost", log_level="ERROR")
lcd.start()

python_code = """
import os

# List the files in the root directory
root = os.listdir('/tmp/')
print("Files in the root directory:", root)

# Create a new file in the home directory
with open('/home/new_file.txt', 'w') as f:
    f.write('Hello, World!')
"""

async def main():
    # Load workers(default: Python, JavaScript)
    await lcd.lyric.load_default_workers()
    
    dir_read, dir_write = 1, 2
    file_read, file_write = 3, 4
    resources = PyTaskResourceConfig(
        fs=PyTaskFsConfig(
            preopens=[
                # Mount current directory in host to "/tmp" in the sandbox with read permission
                (".", "/tmp", dir_read, file_read),
                # Mount "/tmp" in host to "/home" in the sandbox with read and write permission
                ("/tmp", "/home", dir_read | dir_write, file_read | file_write),
            ]
        ),
        memory=PyTaskMemoryConfig(
            # Set the memory limit to 30MB
            memory_limit=30 * 1024 * 1024  # 30MB in bytes
        )
    )

    py_res = await lcd.exec(python_code, "python", resources=resources)
    assert py_res.exit_code == 0, "Python code should exit with 0"

    # Stop the driver
    lcd.stop()

asyncio.run(main())

Examples

  • Notebook-Qick Start: A Jupyter notebook demonstrating how to use Lyric to execute Python and JavaScript code.
  • Notebook-Sandbox Execution: A Jupyter notebook demonstrating how to use Lyric to execute Python and JavaScript code in a sandboxed environment.

🤝 Contributing

We welcome Issues and Pull Requests! Please check out our Contributing Guidelines for more information.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details

⭐️ Show Your Support

If you find Lyric helpful, please give us a star! It helps others discover this project.

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

lyric_py-0.1.4.tar.gz (134.2 kB view details)

Uploaded Source

Built Distributions

lyric_py-0.1.4-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl (13.1 MB view details)

Uploaded PyPy musllinux: musl 1.2+ x86-64

lyric_py-0.1.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.9 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

lyric_py-0.1.4-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl (13.1 MB view details)

Uploaded PyPy musllinux: musl 1.2+ x86-64

lyric_py-0.1.4-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl (13.1 MB view details)

Uploaded PyPy musllinux: musl 1.2+ x86-64

lyric_py-0.1.4-cp312-none-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.12 Windows x86-64

lyric_py-0.1.4-cp312-cp312-musllinux_1_2_x86_64.whl (13.1 MB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

lyric_py-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.0 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

lyric_py-0.1.4-cp312-cp312-macosx_11_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

lyric_py-0.1.4-cp312-cp312-macosx_10_12_x86_64.whl (11.4 MB view details)

Uploaded CPython 3.12 macOS 10.12+ x86-64

lyric_py-0.1.4-cp311-none-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.11 Windows x86-64

lyric_py-0.1.4-cp311-cp311-musllinux_1_2_x86_64.whl (13.1 MB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

lyric_py-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.9 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

lyric_py-0.1.4-cp311-cp311-macosx_11_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

lyric_py-0.1.4-cp311-cp311-macosx_10_12_x86_64.whl (11.4 MB view details)

Uploaded CPython 3.11 macOS 10.12+ x86-64

lyric_py-0.1.4-cp310-none-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.10 Windows x86-64

lyric_py-0.1.4-cp310-cp310-musllinux_1_2_x86_64.whl (13.1 MB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

lyric_py-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

lyric_py-0.1.4-cp310-cp310-macosx_11_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

lyric_py-0.1.4-cp310-cp310-macosx_10_12_x86_64.whl (11.4 MB view details)

Uploaded CPython 3.10 macOS 10.12+ x86-64

lyric_py-0.1.4-cp39-none-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.9 Windows x86-64

lyric_py-0.1.4-cp39-cp39-musllinux_1_2_x86_64.whl (13.1 MB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

lyric_py-0.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

lyric_py-0.1.4-cp39-cp39-macosx_11_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

lyric_py-0.1.4-cp39-cp39-macosx_10_12_x86_64.whl (11.4 MB view details)

Uploaded CPython 3.9 macOS 10.12+ x86-64

lyric_py-0.1.4-cp38-none-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.8 Windows x86-64

lyric_py-0.1.4-cp38-cp38-musllinux_1_2_x86_64.whl (13.1 MB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

lyric_py-0.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

File details

Details for the file lyric_py-0.1.4.tar.gz.

File metadata

  • Download URL: lyric_py-0.1.4.tar.gz
  • Upload date:
  • Size: 134.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for lyric_py-0.1.4.tar.gz
Algorithm Hash digest
SHA256 59f1a7f5168f2fc6e6ade0f63040cf0eee28c45fe31a32af501cb8d1a5b42e1b
MD5 5fd6c4cd0a4c16ecf61cf62070af480c
BLAKE2b-256 1f70a79d4b010fcd5d5e3d95681452051132bd5b7f2c5acba4bbf896877c8580

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 200875b32160dce7877e6d20f141f68988a7840cc5aac4a0f3104be0e5f61c38
MD5 f486b1f878489f4d3159b0173101951d
BLAKE2b-256 e3a60de55e6158cc8f1e75b5137b0c58936ce0f44a75b224ab4868edb277abbb

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 26ef4832563fa9bb532b1c763bd77739aff99005754216550cd6d57df6be8702
MD5 cb20662d1fd30933ed8e5ea5746d3a81
BLAKE2b-256 98ee91cee29b3387104b31bb6bfe4250e9838ab14a9a3df24352ec8db86817f1

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7355ce7c0831ac9b5a3962af4048dc624b81af26b0902811e92fe49811096493
MD5 1320e18d66bc388e5ce35044f93ab28c
BLAKE2b-256 28767625b2c8f9ec6183a7981c84dbcffd05d01fd7ec2bdd03d6fb10e9a0d6f1

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cc4c4700c3cd2e275399df6646dcb13dbc74a2a5ee2176f7bb55e2351c6abba7
MD5 d44a3f789fb86d0dec72942586ae7628
BLAKE2b-256 95c660004c0a4299cf9cf0996747fe9e67a58610c2c8df0f674f8d990361439e

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp312-none-win_amd64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 4980fee15183aef18fac819b733a4bc259201948d12a23159a17ce1f218d3149
MD5 bdfb1a91c26338e9bb20ba9be96b1488
BLAKE2b-256 f85603b55691ac8e96e25257ebcd7f2924dc9cb710a727fbd0835165acd098d7

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f187bf0e10c418350ebd5f19b9d3c36ba3505c9c36d1e9c6b000986e144948ad
MD5 d00f18d83a9699016e8fa0e27b6e63dd
BLAKE2b-256 6107018d7e56742fabc4764ecfb718bece8f1b28d0f41ec9f357cc05aaa124c2

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b6a45dcba5b8333de4d34b5af8ad040c0ffbecded2125506cb01a39cff207900
MD5 f6275284986be38e653360c6ecf8ef18
BLAKE2b-256 178cafa0f95a1525fb40d54cbc2702aecf93a893e7cd7836b38b6e8107a40a24

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c4a6194a7f6c982b8569b0c99f8dc384e4908a94d71751d8f9d9e669d52abc5a
MD5 776630cc645bb442e160c95238c4f6f4
BLAKE2b-256 c41bdcff68ecce4ee32c6a32caa47da2bba0560de94ca9fd385e0c96669d3b38

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dd8698a36d00242235278857283071d36c672681f2a65db1ebd14b16012385ea
MD5 3b148b73d0c56dc21a19f2029c40d765
BLAKE2b-256 845aa95764188c77106b553b3568e429073c61fb7e3dca50f76574500b630aef

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp311-none-win_amd64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 2b836405b65a0496eb095b70c7648d672b75b44dedaa0e56ef79fb9bcf78b1d0
MD5 90f12940fdf6970f29b0a36a577ae0a0
BLAKE2b-256 5448f501051907b62b22bcdbebf613530ba9e81718c6d402fd3789da4e1b4aa7

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 250b982ca8166eec85e4696e6b10996eef85d094f2b3a2942c78bf36f638e910
MD5 02abfec071fc10a7886e779da16ab67b
BLAKE2b-256 8d906f34a5e4b78f61d18d47b15ca7bca1bdd393d8c4bd638f63a61bb39813f2

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1005a76bc26966387a2843219fd854e638364800d9c0736cc3c408539e9450e4
MD5 cf8d298d46c884b6a8cdc8aed8b2b245
BLAKE2b-256 844fe7421f036a0b35aa627c4250515ecc6c3d9bd970c33641d5a9eea2c812bc

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 22f5f8f22d619f0ec07de996bf323bc95787762ded62dbf725fd82031579a169
MD5 3b641ce88ad838ecdd2bfb7c520b7345
BLAKE2b-256 12cc555bb2f2a64434534616fc94ec41ab9d7b3dc8303b6e94d943a6978a10dc

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5464481302e4cb3e7934e53574e3cff4bf3e0aa65327a085b0f8dca98dc23df9
MD5 e129adf81b6804fd6510ae6af446a5f4
BLAKE2b-256 8ef284f87e766fed2eac43bdf2d239c56afbb88d05d9ca1ad3e40a14cf21ef2f

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp310-none-win_amd64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 c755b5b8b40d1f27c6815a561d2478c62fcac32a9eefdc2f191de78ddeba5dc9
MD5 fc7873ddbf54f2e94d7feacabfe59b49
BLAKE2b-256 e63e8f6761fd17b53513c04ca369d57cf4d466ebdca01c45a4ba9a623aa71197

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c3d90e4bae629cdc088871c204729f601d1bc16ddf4ce00d147372dae5aa567d
MD5 18cc244edf7225c2fa5a23180dec38e9
BLAKE2b-256 afe100333d84f3f839369c574bad6b8d5c90e3bdd208b01a6faeceff37695d23

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6772fcb27c4e332ee6eadbde7f1c72f8a4ed918d45596b6daf6ed59f2fdd4cd6
MD5 c9d56d974f09282b352e4eea4a614fee
BLAKE2b-256 4b218cf2b03cce147b82b7c8db132936fff57106c0a5e1f17b802fee135ad423

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a9ddefd48a412c579424869786c5a41ea8ef04b083494f1e9e2f1cde036010a8
MD5 ab428c4bd0c04271450b2d508f23e681
BLAKE2b-256 5ba5afc68370e187af8af03950b0065e388ec3f85f8ece88448638256f462bb7

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0758815202fb4b7f9571def1a8d09f2023958dc2f0fbba0c597e8d97fc826df4
MD5 ec6100c753bfa38b8065495aa591176f
BLAKE2b-256 4800aca728aced60bfe4fb86257a65fe6894b8504f94712bad6dba27fa0c417b

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp39-none-win_amd64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 9ab0baeb9b8cac40194a151d2852b947590258a1301929dc8406134501c46071
MD5 27ea7790a5e5726692073dbb3c7b0211
BLAKE2b-256 6eeff8dcb0b95c89aafbba3ebce2dd134e8af596e3cd51c1929b63798ec05f49

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 488ca1fb63f1f7acf0a006e277494b1f7b84082e84ce4f2c51bd8de2f49cb08e
MD5 6cd15d10dc2dd0b333bd8bafd5babad9
BLAKE2b-256 89d3a2b18b42faa2470dcb7935aeb2e112edede5ca26e090d04b46175c2ec89a

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cac4f953e51d077a094ab57fde14c27802fecb27016a9b4679436d5e8755b0fe
MD5 fd95e56fb5a839a3689621f161e2b75d
BLAKE2b-256 df73a98d1909ff11c3b14ada8cf80a6a378196c62ff20c5db7f864e82765653c

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8127e51f87989114c8b8ee6b84b50122638fe176adafb9251a63a5c7e3cd2daf
MD5 58a2f164683cfbd9cbc76367c28d1196
BLAKE2b-256 4f4954aa4d363bb398bdc2f5c8fd12c72debdb16a678554e2bf7b91efa1656f8

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fc674a3f465c6b1c1fb95133911a5fd14b6f5e66fc0fedd83d57775c5aa699d6
MD5 62d493c1b77d6c55f065f9d32cdae8fd
BLAKE2b-256 0799c7975b03d84135b1b7158b8a836cb32d59fc716c47c0092d278f1347ab4d

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp38-none-win_amd64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 67881095a534c5e435fbed35e217f8114a3bbe5e707cce53b3d9bd1d00b60ffc
MD5 f794f020e9d87d87437e7088ea0c398c
BLAKE2b-256 60166baff010364b420ae7704d2b40454fad6b6e62347bae240122799fa72ac2

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5e28419ac51f10a022e1adae3a81ecd2ffac8fece9e739be9b80a98dce08413a
MD5 31bac03ddb554bcc07f0a4e36ba71675
BLAKE2b-256 398d60d9e8a60da7473c48afff962e89e6d33f744463c393f4c63f60044c3415

See more details on using hashes here.

File details

Details for the file lyric_py-0.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lyric_py-0.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3b013ea742f12ce52ca759534b9e47ce3f2ca47895fc3df7616a350e61a1da63
MD5 ac00a1f2d940bfc791a2e1bb9846e4a1
BLAKE2b-256 f353cf540231c583cc36d4a84fe2c0e8cb1bfede08d7ca1a124cadb997faa07e

See more details on using hashes here.

Supported by

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