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-rc0"

Install default Python webassembly worker:

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

Install default JavaScript webassembly worker:

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

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.4rc0.tar.gz (109.6 kB view details)

Uploaded Source

Built Distributions

lyric_py-0.1.4rc0-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.4rc0-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.4rc0-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.4rc0-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.4rc0-cp312-none-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.12 Windows x86-64

lyric_py-0.1.4rc0-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.4rc0-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.4rc0-cp312-cp312-macosx_11_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

lyric_py-0.1.4rc0-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.4rc0-cp311-none-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.11 Windows x86-64

lyric_py-0.1.4rc0-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.4rc0-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.4rc0-cp311-cp311-macosx_11_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

lyric_py-0.1.4rc0-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.4rc0-cp310-none-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.10 Windows x86-64

lyric_py-0.1.4rc0-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.4rc0-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.4rc0-cp310-cp310-macosx_11_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

lyric_py-0.1.4rc0-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.4rc0-cp39-none-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.9 Windows x86-64

lyric_py-0.1.4rc0-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.4rc0-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.4rc0-cp39-cp39-macosx_11_0_arm64.whl (10.9 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

lyric_py-0.1.4rc0-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.4rc0-cp38-none-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.8 Windows x86-64

lyric_py-0.1.4rc0-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.4rc0-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.4rc0.tar.gz.

File metadata

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

File hashes

Hashes for lyric_py-0.1.4rc0.tar.gz
Algorithm Hash digest
SHA256 3d05aacac49e0d38fe31039f119fdae11ae2ec78308e3f0fb690c3f1803c2d31
MD5 12c22b49a9f0659d85d8d8b43b813044
BLAKE2b-256 f1da63db3a2ae4a598e02d9bdf02bcc035e2b210f1e0b979061e03a0517fa425

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c63a04fb51e54c9988b4514da505b2343c5fffe6a1786adc107035ea003761a4
MD5 936abecf5a290150b74426366fa1cbe8
BLAKE2b-256 981011ddc86c51d42deb91b993bbd6cfeea492687ca19cdc474d84b5bd647955

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8617d584c892ca39d2ae99590443b25cf4ff3abd9db64c64075093d1b179b1f8
MD5 4d769fe84bd6447a928de421fcff5fcf
BLAKE2b-256 7921e2a400d44d4fc17ef6831c85d6a4e3541e20bcab2a5f3897454a170c0149

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 df4db23f40efa9368685f7984d34b48035bc6446f42e6fba8a0395fca7c7a724
MD5 9c384520026762990568b753adeceb5d
BLAKE2b-256 90c788fcb7e7f30f332d9ad05567777885eea428676233bb08416e022f0c61c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e691bfe35a410883d17baeb635104dd84fce4ff3215f5d8a5242477dbc84ab19
MD5 b1a7ad5bed9a9687dcc9520d5f6407f4
BLAKE2b-256 c69a6add5a566cc24df9934781c697bfb101a1c7026ba7ab2671c6a2f9039c94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 a79d5f289d4209f90d387fc9099952bb73e6d102884120f05367279aa234e632
MD5 c408c65a6181ff5077a1b94f1de4afe2
BLAKE2b-256 7481c1bc00f97d491e0fcadcb2e5e43c2f500efb78b3a63388389123da0774d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6c415a5f15fd87fb62f6580c40e8eb3aa3be225c84319f1f084a4b257e78fc65
MD5 603572d58bf953e5351f29b035ba1d11
BLAKE2b-256 1c3d716ff1c0625bdcabbee1547e114c06c0bd6faef7722e2ed8597136d08262

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 17f823ebaf0be27667928d0bf4a2ac1664192cd3433544825a7fdf92af96d1b7
MD5 34524207e4c88e160b5a85f22a78f571
BLAKE2b-256 4ebd1a7d2e50cb0cfbd7ed40ffc1bdf375ef204c2ec925ec4dde50f5c9904822

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cb84fce6f559f1b03530f6b4d7920ecd4437c1718a18a8922656f9907e6cd88c
MD5 8e3ff18aac4879b7008e8a6d2a322802
BLAKE2b-256 f8b051b38cac5dd40a2fbd2d31173af1a7dd5ecdc97f18dd9af754d04b700528

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 58d981b31a401fa2801313eb2d14b96dbd72bcfecddc902da6b3927948424d9c
MD5 411b55e89fd43647b7767fed5e0a7046
BLAKE2b-256 a0c441eaaf03825ad379d49283423994e9820ce45bf76eedbe230995974bb3f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 113c88d877a6345a20f0b8d224df0878db48d061a430c544136a7803f179b23f
MD5 0f981f47636368e8bd25a6713f40972c
BLAKE2b-256 db5ac5462cee0031f6aeda2b2a8be264cdae6f0dc28e6fc5d804df790339e7a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 624d511d7c4f688dbcb1792f6e9abdb6222a943f31f0ca278d358da82bdc9fa6
MD5 df2c1b002d18904f892d631347aeb569
BLAKE2b-256 f6154bd309756e14a632060d97242e80b302b361d5d24832ee970c57de267631

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2a552fdfa527fe15a337f641be8fbb26ccea5c5bc1318435478923897fa0379f
MD5 0d17b8ccb30711a9dc748e54c0aef594
BLAKE2b-256 8cc8f71aac0fce3628ea06bf26bbc4ee54a34a2be7af90c3ed4e8484dc5f5d87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5daf038656a5a3b31cb2fd40d5aa35a9197409f07a1e8c46e2377ef73c9d9358
MD5 b73147236e86df38861b1ce987278a12
BLAKE2b-256 e5e4773bfd407ff2be28f434cf2b9e29980d883f26584d8b44ed3b1aef0ef8ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e4a329016ec243cbffe1172b303a30450e38fa29182e0c48bd0ceef8764ae725
MD5 c5fea31f8852e95ecc1a61fff6bc8b4f
BLAKE2b-256 929d1c9832b71717acaba903dd7dd5bee623d4b82455cc96bfabe63b6ae2776b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 082a644af05f3fb73870fec72b2a812a1d6b7420447354ed75c2519d4f83523c
MD5 c2798c6952301f7f680b236b59a7f9f3
BLAKE2b-256 2e64efa70618432327fd86429cdd1e5575aedbe8266ac29eb035ff20d81f466e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1af5174ba4fa5cd5e43bf4343566d7d869d91d43b0efe9f379583b0b120d798c
MD5 2a2e7a2010043ebcfb3892d3b0e8c141
BLAKE2b-256 215560330a19723a3b77d8072e140811d0e07cc45ab8d5d27245c83cc897a621

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fe6b36f6c4f60e08d04bc59233d7e8599693d31ecae5a1ae8d16a166e86add47
MD5 8620cb3195a604dabd8c1bd180caa8af
BLAKE2b-256 47fedbdd23c2c20a96fa6315a486819310bebb6a389c54462630c26c6daa7b52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 169a3791f92d44035ff35c1e4405781edbb05d4964e768261ac7a0fdf3a5d9f8
MD5 251b0cf05e83522921bb40991a4f6071
BLAKE2b-256 e6fa76adde5c0301384d7b5f7f3b24b91b063b6ea9885f2728e88af1b23e2a7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 81201e42f9b3615099e76cb0ef16151fdbd8b6cee3e083a1f59c01256f4ba462
MD5 dace17949cf4cab258e4f1bc8b0aa5a5
BLAKE2b-256 40431482e411ff8af54409ffd464b4c4c7692a00d69ba94ab9bd437bbe2afb1c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 717327dd856fcc11e5bd97155783ea9ca002dfe4cba1b743f28e3791abc83a59
MD5 94ad4ff65a91f12d13252d77ae298d75
BLAKE2b-256 f1af8975690f33502132b55196293db5ba9dd153a511f9bbe0281cedaefca563

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 adf541a9fce588dde2d6023900a2fb369de23e47b7ee9ca34a19789d470680ac
MD5 f4bb0d933c48438ee76486afe7cc0c9a
BLAKE2b-256 8788d93c50d0145a8856030fdff816f64a7d6532f88f14653d3f9e24ab34cdd2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a0e0cbe0f58bbf5a58d3abec275bbbe4cbd166a0766ced4fb9ff258640383c6a
MD5 25eb32d40c6240a251a2c9f150a7483e
BLAKE2b-256 cb77e44f111a98b05da18df2149ee1b755f9b7d20a4f035cbce6efb006b3c718

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c6d0c14f81edddf8ed5bdfcd673f1b1fb7528648f5318bd09e571f74a121c852
MD5 689766b054917b5dccbe0d006fc26b82
BLAKE2b-256 3d64f9c11a135db4ca52cede50e795f74e18a726362362599a43f0002356f6b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 bed646b9f770df8164e2082f716592421fe467ff1810aeb933ce7f5720e6db41
MD5 57e30cca93f99a19d0b381535ed19375
BLAKE2b-256 56084fc56acdfa9c4a65b5bbe8813ed99534e286a19d3b49965bacaafe02d559

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 3f422732d2aeba29e9b00ef3b242e9e298c09596f05759930fb3106fe4b4fe3e
MD5 4a1ba766137065fbe32d3a098d800326
BLAKE2b-256 5520e5f20384edd173084d057ab385bcaaa882c2b8c0e0183456816359472cc4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 905b5a606cd82f2b53c8c8938709fcc5c455513b67742022d00047133488e386
MD5 697fdb56429f8ba9a85fb5c5264b8043
BLAKE2b-256 86d22443f24eb42fb3aca4d34600c8b8cc81cef189348f2a36a4749587344703

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for lyric_py-0.1.4rc0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6b79388928c315e5c89588d02bde2419df53e1c6562c26b8fa50d2a3d3787f6d
MD5 07a663c37cc5dd6a69406003957fbebd
BLAKE2b-256 678be2d8ae1c3c0844e3e140caa2479b3f843ff8023fe430b87aeb4a784c5383

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