Skip to main content

Python SDK for mxlite

Project description

MXLite SDK

PyPI version Python Versions License: Apache-2.0

MXLite SDK 是 MXLite 的官方 Python SDK,为服务器部署和系统管理提供了全面的编程接口。该 SDK 封装了 MXD 服务的核心功能,使开发者能够通过简洁的 API 实现系统安装、网络配置、文件传输和远程命令执行等操作。

特性

  • 全异步 API 设计:支持高效的并发操作,同时提供同步接口以兼容不同的使用场景
  • 自动平台适配:自动检测并使用适合当前平台的二进制文件
  • 多平台支持:兼容 Linux、macOS 和 Windows 等主流操作系统
  • 内置 MXD 服务管理:可以自动启动、监控和关闭 MXD 服务
  • 远程 MXA 部署:通过 SSH 将 MXA 客户端部署到远程服务器,支持多种复杂的网络结构和模式(甚至支持堡垒机后的服务器的部署)
  • 全面的系统部署工具:提供从系统安装到网络配置的完整工作流
  • 代码类型提示:完善的类型注解支持,提高开发效率

安装

从 PyPI 安装

# 基本安装
pip install mxlite-sdk

# 包含远程部署功能的安装
pip install "mxlite-sdk[deploy]"

快速入门

mxlite-sdk 支持连接已启动的 mxd 服务,也支持后台直接运行一个 mxd 服务,默认为使用 MXDRunner 运行一个 mxd 服务并作为子进程使用

基本使用示例(内建服务)

import asyncio
from mxlite import MXLite

async def main():
    # 使用异步上下文管理器自动管理资源
    async with MXLite() as mxc:
        # 启动 MXD 服务,注意,程序会自动获取一个可用的端口,并在此端口提供服务
        mxc.start_mxd()
        
        # 获取主机列表
        hosts, status = await mxc.get_host_list()
        print(f"找到 {len(hosts.sessions)} 个主机")
        
        if hosts.sessions:
            # 在远程主机上执行命令
            host_id = hosts.sessions[0]  # 使用第一个主机
            result, status = await mxc.command_exec(host_id, "ls -la")
            task_id = result.task_id
            
            # 等待任务完成
            task_result = await mxc.until_task_complete(host_id, task_id)
            print(f"命令输出:\n{task_result.payload.payload.stdout}")

if __name__ == "__main__":
    asyncio.run(main())

连接到外部 MXD 服务

如果您已经有一个运行中的 MXD 服务,可以直接连接到它而不是启动新实例:

import asyncio
from mxlite import MXLite

async def main():
    # 创建连接到外部服务的客户端
    client = MXLite(
        host="server-ip-address",  # 外部服务器地址
        http_port=8080,           # MXD HTTP 端口
        token="your-token-here"   # 认证令牌
    )
    
    try:
        # 确保连接成功
        connected = await client.connect_mxd()
        if not connected:
            print("连接到 MXD 服务失败")
            return
        
        # 执行操作...
        hosts, status = await client.get_host_list()
        print(f"成功连接到 MXD 服务,发现 {len(hosts.sessions)} 个主机")
        
    finally:
        # 关闭客户端
        await client.close()

if __name__ == "__main__":
    asyncio.run(main())

使用高级配置启动 MXD

在部分情况下,您可能需要使用 Https、设置指定端口或预置设置一些安全性配置,您可以传入 MXLiteConfig 实例

import asyncio
from mxlite import MXLite, MXLiteConfig

async def main():
    # 创建配置对象
    config = MXLiteConfig(
        root_dir="/path/to/certificates",  # 证书文件所在目录
        http_port=8080,                    # HTTP 端口
        https_port=8443,                   # HTTPS 端口
        token="your-token",                # 认证令牌
        verbose=True                       # 启用详细日志
    )

    async with MXLite(config) as mxc:
        # 启动 MXD 服务,注意,程序会自动获取一个可用的端口,并在此端口提供服务
        mxc.start_mxd()
        
        # 获取主机列表
        hosts, status = await mxc.get_host_list()
        print(f"找到 {len(hosts.sessions)} 个主机")
        
        if hosts.sessions:
            # 在远程主机上执行命令
            host_id = hosts.sessions[0]  # 使用第一个主机
            result, status = await mxc.command_exec(host_id, "ls -la")
            task_id = result.task_id
            
            # 等待任务完成
            task_result = await mxc.until_task_complete(host_id, task_id)
            print(f"命令输出:\n{task_result.payload.payload.stdout}")

if __name__ == "__main__":
    asyncio.run(main())

使用MXADeployer部署MXA到远程服务器

考虑到部分用户的网络环境较为复杂,或存在已经安装好的系统,我们提供了一个 MXADeployer 类来帮助用户将 MXA 部署到远程服务器。MXADeployer 类封装了 SSH 连接、MXA 部署和运行的逻辑,简化了部署过程。目前支持三种连接模式:

  1. 自动发现模式:MXA自动扫描网络寻找MXD
  2. 直连模式(使用端口转发):MXA通过WebSocket连接到通过端口转发的MXD
  3. 直连模式(指定地址):MXA通过WebSocket直接连接到指定URL

注意:需要安装带deploy扩展的包 pip install "mxlite-sdk[deploy]"

自动发现模式部署示例

在自动发现模式下,MXA会自动扫描网络查找MXD服务,适用于在同一子网内运行MXD(部署服务器)和MXA(被部署服务器)的情况。

import asyncio
import logging
from mxlite import MXADeployer, MXLite

# 设置日志
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

async def deploy_discovery_mode(ssh_host, ssh_user, ssh_password):
    mxc = MXLite()
    mxc.start_mxd()
    mxd_port = mxc.config.http_port
    logger.info(f"MXD已启动, 监听端口: {mxd_port}")
    try:
        # 使用异步上下文管理器自动管理SSH连接
        async with MXADeployer(ssh_host, ssh_user, ssh_password) as deployer:
            # 部署MXA
            success = await deployer.deploy_mxa()
            if not success:
                print("MXA部署失败")
                return

            # 使用自动发现模式运行MXA (默认模式)
            success, _ = await deployer.systemd_run_mxa(discovery_mode=True)
            if success:
                print("MXA服务已启动,使用自动发现模式")
            else:
                print("MXA服务启动失败")
            
            # 等待连接建立
            host_list, _ = await mxc.get_host_list()
            max_attempts = 120  # 最多等待600秒
            attempts = 0
            
            while not host_list.sessions and attempts < max_attempts:
                attempts += 1
                logger.info(f"等待主机列表... (尝试 {attempts}/{max_attempts})")
                host_list, _ = await mxc.get_host_list()
                if host_list.sessions:
                    break
                await asyncio.sleep(5)
            
            if not host_list.sessions:
                logger.warning("等待超时, 未检测到连接的主机")
                return
                
            # 获取并显示主机信息
            host_id = host_list.sessions[0]
            logger.info(f"主机已连接, ID: {host_id}")
            host_info, _ = await mxc.get_host_info(host_id)
            logger.info(f"主机信息: {host_info}")
            
            # 在这里添加您的业务逻辑
            # 例如执行命令、传输文件等
            result, _ = await mxc.command_exec(host_id, "uname -a")
            task_id = result.task_id
            task_result = await mxc.until_task_complete(host_id, task_id)
            print(f"命令输出: {task_result.payload.payload.stdout}")
    except Exception as e:
        print(f"部署过程中出错: {e}")
    finally:
        await deployer.systemd_remove_mxa()
        logger.info("MXA服务已成功移除")

        # 关闭MXD服务
        await mxc.close()
        logger.info("MXD已停止")
        # 关闭SSH连接
        await deployer.close()
        logger.info("SSH连接已关闭")


if __name__ == "__main__":    
    asyncio.run(deploy_discovery_mode(
        ssh_host="192.168.1.100",  # 远程主机地址
        ssh_user="ubuntu",         # SSH用户名
        ssh_password="password"    # SSH密码
    ))

直连模式(使用端口转发)部署示例

在直连模式下,MXA会通过WebSocket直接连接到MXD。这种方式适用于MXD与MXA在不同网络,或者需要避免自动发现的情况。

import asyncio
import logging
from mxlite import MXLite, MXADeployer

# 设置日志级别
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

async def deploy_port_forward(ssh_host, ssh_user, ssh_password):
    # 创建本地MXD服务
    mxc = MXLite()
    mxc.start_mxd()
    mxd_port = mxc.config.http_port
    logger.info(f"MXD已启动, 监听端口: {mxd_port}")

    try:
        # 使用异步上下文管理器自动管理SSH连接
        async with MXADeployer(ssh_host, ssh_user, ssh_password) as deployer:
            # 部署MXA
            success = await deployer.deploy_mxa()
            if not success:
                logger.error("MXA部署失败")
                return

            # 使用直连模式运行MXA, 并建立端口转发
            success, forwarded_port = await deployer.systemd_run_mxa(
                discovery_mode=False,
                local_mxd_port=mxd_port
            )
            
            if not success or forwarded_port is None:
                logger.error("MXA服务启动失败")
                return
                
            logger.info(f"MXA服务已启动, 远程端口 {forwarded_port} 已转发到本地 {mxd_port}")
            
            # 等待连接建立
            host_list, _ = await mxc.get_host_list()
            max_attempts = 120  # 最多等待600秒
            attempts = 0
            
            while not host_list.sessions and attempts < max_attempts:
                attempts += 1
                logger.info(f"等待主机列表... (尝试 {attempts}/{max_attempts})")
                host_list, _ = await mxc.get_host_list()
                if host_list.sessions:
                    break
                await asyncio.sleep(5)
            
            if not host_list.sessions:
                logger.warning("等待超时, 未检测到连接的主机")
                return
                
            # 获取并显示主机信息
            host_id = host_list.sessions[0]
            logger.info(f"主机已连接, ID: {host_id}")
            host_info, _ = await mxc.get_host_info(host_id)
            logger.info(f"主机信息: {host_info}")
            
            # 在这里添加您的业务逻辑
            # 例如执行命令、传输文件等
            result, _ = await mxc.command_exec(host_id, "uname -a")
            task_id = result.task_id
            task_result = await mxc.until_task_complete(host_id, task_id)
            print(f"命令输出: {task_result.payload.payload.stdout}")
            
    finally:
        await deployer.systemd_remove_mxa()
        logger.info("MXA服务已成功移除")

        # 关闭MXD服务
        await mxc.close()
        logger.info("MXD已停止")
        
        # 关闭SSH连接
        await deployer.close()
        logger.info("SSH连接已关闭")


if __name__ == "__main__":
    asyncio.run(deploy_port_forward(
        ssh_host="192.168.1.100",  # 远程主机地址
        ssh_user="ubuntu",         # SSH用户名
        ssh_password="password"    # SSH密码
    ))

直连模式(指定WebSocket URL)部署示例

当MXD服务器已经存在并可以从远程访问时,可以直接指定WebSocket URL。

import asyncio
import logging
from mxlite import MXADeployer, MXLite

# 设置日志
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

async def deploy_with_direct_url(ssh_host, ssh_user, ssh_password):
    ws_url = "ws://mxd-server.example.com:8080/ws"  # 指定的WebSocket URL
    
    mxc = MXLite()
    mxc.start_mxd()
    mxd_port = mxc.config.http_port
    logger.info(f"MXD已启动, 监听端口: {mxd_port}")

    try:
        # 使用异步上下文管理器自动管理SSH连接
        async with MXADeployer(ssh_host, ssh_user, ssh_password) as deployer:
            # 检测远程主机架构
            arch = await deployer.detect_arch()
            print(f"检测到架构: {arch}")
            
            # 部署MXA
            success = await deployer.deploy_mxa()
            if not success:
                print("MXA部署失败")
                return
                
            # 使用指定WebSocket URL运行MXA
            success, _ = await deployer.systemd_run_mxa(ws_url=ws_url)
            if success:
                print(f"MXA服务已启动,直接连接到: {ws_url}")
            else:
                print("MXA服务启动失败")
            
            # 等待连接建立
            host_list, _ = await mxc.get_host_list()
            max_attempts = 120  # 最多等待600秒
            attempts = 0
            
            while not host_list.sessions and attempts < max_attempts:
                attempts += 1
                logger.info(f"等待主机列表... (尝试 {attempts}/{max_attempts})")
                host_list, _ = await mxc.get_host_list()
                if host_list.sessions:
                    break
                await asyncio.sleep(5)
            
            if not host_list.sessions:
                logger.warning("等待超时, 未检测到连接的主机")
                return
                
            # 获取并显示主机信息
            host_id = host_list.sessions[0]
            logger.info(f"主机已连接, ID: {host_id}")
            host_info, _ = await mxc.get_host_info(host_id)
            logger.info(f"主机信息: {host_info}")
            
            # 在这里添加您的业务逻辑
            # 例如执行命令、传输文件等
            result, _ = await mxc.command_exec(host_id, "uname -a")
            task_id = result.task_id
            task_result = await mxc.until_task_complete(host_id, task_id)
            print(f"命令输出: {task_result.payload.payload.stdout}")

    except Exception as e:
        print(f"部署过程中出错: {e}")
    finally:
        await deployer.systemd_remove_mxa()
        logger.info("MXA服务已成功移除")

        # 关闭MXD服务
        await mxc.close()
        logger.info("MXD已停止")
        
        # 关闭SSH连接
        await deployer.close()
        logger.info("SSH连接已关闭")


if __name__ == "__main__":
    asyncio.run(deploy_with_direct_url(
        ssh_host="192.168.1.100",  # 远程主机地址
        ssh_user="ubuntu",         # SSH用户名
        ssh_password="password"    # SSH密码
    ))

API 文档

MXLiteConfig

配置类,用于设置 MXLite 客户端参数。

config = MXLiteConfig(
    root_dir=None,         # 根目录,一般为证书文件所在的父级目录,默认为当前目录
    http_port=None,        # HTTP 端口,None 则随机选择
    https_port=None,       # HTTPS 端口,None 则随机选择
    token=None,            # 认证令牌
    certificates_dir=None, # 证书目录
    verbose=False,         # 是否输出详细日志
    host="127.0.0.1"       # 主机地址
)

MXLite

MXLite 客户端类,提供 MXD 服务管理和 API 操作。

# 创建客户端
mxlite = MXLite(
    config=None,             # MXLiteConfig 配置对象
    host=None,               # 外部 MXD 服务主机地址
    http_port=None,          # 外部 MXD 服务 HTTP 端口
    token=None,              # 外部 MXD 服务认证令牌
    auto_connect=True        # 是否自动连接到外部 MXD 服务
)

# 启动和关闭 MXD 服务
mxlite.start_mxd()
mxlite.kill_mxd()

# 连接与断开外部 MXD 服务
mxlite.connect_mxd()
mxlite.disconnect_mxd()

# 主机管理
hosts, status = await mxlite.get_host_list()  # 获取主机列表
host_info, status = await mxlite.get_host_info(host_id)  # 获取主机信息
host_list_info, status = await mxlite.get_host_list_info()  # 获取主机列表详细信息

# 任务管理
task_result, status = await mxlite.get_task_result(host_id, task_id)  # 获取任务结果
result = await mxlite.until_task_complete(host_id, task_id, interval=1)  # 等待任务完成

# 命令执行
result, status = await mxlite.command_exec(host_id, command)  # 在远程主机执行命令

# 文件操作
await mxlite.upload_file(host_id, src_path, target_url)  # 上传文件
await mxlite.download_file(host_id, src_url, target_path)  # 下载文件
await mxlite.add_file_map(file, publish_name)  # 添加文件映射
await mxlite.add_dir_map(dirname, publish_name)  # 添加目录映射
await mxlite.remove_file_map(file)  # 移除文件映射
maps, _ = await mxlite.get_file_map()  # 获取文件映射列表

# 文件系统操作
files, status = await mxlite.lsdir(path)  # 列出目录内容
content, status = await mxlite.read_file(path, max_size)  # 读取文件内容
hash_value = await mxlite.get_file_hash(file, algorithm)  # 获取文件哈希值

# 资源释放
await mxlite.close()  # 异步方式关闭
mxlite.close_sync()  # 同步方式关闭

MXADeployer

MXA部署类,提供通过SSH将MXA部署到远程服务器的能力。

# 创建MXA部署器
deployer = MXADeployer(
    ssh_host,      # SSH主机地址
    ssh_user,      # SSH用户名
    ssh_password,  # SSH密码 (与ssh_key二选一)
    ssh_key=None   # SSH密钥文件路径 (与ssh_password二选一)
)

# 检测远程主机架构
arch = await deployer.detect_arch()

# 检测是否有sudo权限
has_sudo = await deployer.detect_sudo()

# 部署MXA到远程主机
success = await deployer.deploy_mxa()

# 使用systemd运行MXA - 支持三种模式
# 1. 自动发现模式
success, _ = await deployer.systemd_run_mxa(discovery_mode=True)

# 2. 直连模式(使用端口转发)
success, forwarded_port = await deployer.systemd_run_mxa(
    discovery_mode=False,  
    local_mxd_port=8080    # 本地MXD的HTTP端口
)

# 3. 直连模式(指定WebSocket URL)
success, _ = await deployer.systemd_run_mxa(
    ws_url="ws://mxd-server.example.com:8080/ws"  # 指定的WebSocket URL
)

# 停止并删除MXA服务
success = await deployer.systemd_remove_mxa()

# 管理端口转发
listener = await deployer.create_port_forward(local_port, remote_host, remote_port)
success = await deployer.stop_port_forward(local_port, remote_host, remote_port)
await deployer.stop_all_forwards()

# 关闭连接
await deployer.close()

在本地开发

构建平台特定的 wheel 包

# 准备二进制文件
# 在 mxlite/bin 目录中放置适当的可执行文件,例如:
# - mxd-linux-x86_64, mxa-linux-x86_64         # Linux x86_64
# - mxd-macos-arm64, mxa-macos-arm64           # macOS ARM64
# - mxd-windows-x86_64.exe, mxa-windows-x86_64.exe  # Windows x86_64

# 构建 wheel
python setup.py bdist_wheel

系统要求

  • Python 3.10+
  • 基本依赖包:
    • aiohttp >= 3.11.18
    • pydantic >= 2.10.0
  • 部署功能依赖(仅当使用 [deploy] 扩展时必需):
    • asyncssh >= 2.14.0

许可证

本项目采用 Apache 2.0 许可证。详情请参见 LICENSE 文件。

相关链接

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.

mxlite_sdk-0.3.9-cp314-none-win_amd64.whl (9.0 MB view details)

Uploaded CPython 3.14Windows x86-64

mxlite_sdk-0.3.9-cp314-none-manylinux2014_x86_64.whl (9.7 MB view details)

Uploaded CPython 3.14

mxlite_sdk-0.3.9-cp314-none-manylinux2014_aarch64.whl (9.5 MB view details)

Uploaded CPython 3.14

mxlite_sdk-0.3.9-cp314-none-macosx_12_0_x86_64.whl (9.4 MB view details)

Uploaded CPython 3.14macOS 12.0+ x86-64

mxlite_sdk-0.3.9-cp314-none-macosx_12_0_arm64.whl (9.3 MB view details)

Uploaded CPython 3.14macOS 12.0+ ARM64

mxlite_sdk-0.3.9-cp313-none-win_amd64.whl (9.0 MB view details)

Uploaded CPython 3.13Windows x86-64

mxlite_sdk-0.3.9-cp313-none-manylinux2014_x86_64.whl (9.7 MB view details)

Uploaded CPython 3.13

mxlite_sdk-0.3.9-cp313-none-manylinux2014_aarch64.whl (9.5 MB view details)

Uploaded CPython 3.13

mxlite_sdk-0.3.9-cp313-none-macosx_12_0_x86_64.whl (9.4 MB view details)

Uploaded CPython 3.13macOS 12.0+ x86-64

mxlite_sdk-0.3.9-cp313-none-macosx_12_0_arm64.whl (9.3 MB view details)

Uploaded CPython 3.13macOS 12.0+ ARM64

mxlite_sdk-0.3.9-cp312-none-win_amd64.whl (9.0 MB view details)

Uploaded CPython 3.12Windows x86-64

mxlite_sdk-0.3.9-cp312-none-manylinux2014_x86_64.whl (9.7 MB view details)

Uploaded CPython 3.12

mxlite_sdk-0.3.9-cp312-none-manylinux2014_aarch64.whl (9.5 MB view details)

Uploaded CPython 3.12

mxlite_sdk-0.3.9-cp312-none-macosx_12_0_x86_64.whl (9.4 MB view details)

Uploaded CPython 3.12macOS 12.0+ x86-64

mxlite_sdk-0.3.9-cp312-none-macosx_12_0_arm64.whl (9.3 MB view details)

Uploaded CPython 3.12macOS 12.0+ ARM64

mxlite_sdk-0.3.9-cp311-none-win_amd64.whl (9.0 MB view details)

Uploaded CPython 3.11Windows x86-64

mxlite_sdk-0.3.9-cp311-none-manylinux2014_x86_64.whl (9.7 MB view details)

Uploaded CPython 3.11

mxlite_sdk-0.3.9-cp311-none-manylinux2014_aarch64.whl (9.5 MB view details)

Uploaded CPython 3.11

mxlite_sdk-0.3.9-cp311-none-macosx_12_0_x86_64.whl (9.4 MB view details)

Uploaded CPython 3.11macOS 12.0+ x86-64

mxlite_sdk-0.3.9-cp311-none-macosx_12_0_arm64.whl (9.3 MB view details)

Uploaded CPython 3.11macOS 12.0+ ARM64

mxlite_sdk-0.3.9-cp310-none-win_amd64.whl (9.0 MB view details)

Uploaded CPython 3.10Windows x86-64

mxlite_sdk-0.3.9-cp310-none-manylinux2014_x86_64.whl (9.7 MB view details)

Uploaded CPython 3.10

mxlite_sdk-0.3.9-cp310-none-manylinux2014_aarch64.whl (9.5 MB view details)

Uploaded CPython 3.10

mxlite_sdk-0.3.9-cp310-none-macosx_12_0_x86_64.whl (9.4 MB view details)

Uploaded CPython 3.10macOS 12.0+ x86-64

mxlite_sdk-0.3.9-cp310-none-macosx_12_0_arm64.whl (9.3 MB view details)

Uploaded CPython 3.10macOS 12.0+ ARM64

File details

Details for the file mxlite_sdk-0.3.9-cp314-none-win_amd64.whl.

File metadata

  • Download URL: mxlite_sdk-0.3.9-cp314-none-win_amd64.whl
  • Upload date:
  • Size: 9.0 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for mxlite_sdk-0.3.9-cp314-none-win_amd64.whl
Algorithm Hash digest
SHA256 d62a6411924bb002c98734050e8f6a929f2e161f423cdb6c10c2bf6fd6081003
MD5 1f4d3467d678cbabafb4319e715760a2
BLAKE2b-256 7d693e631641f582b84bdce855df1804af6886200d2952dc6f31af827865b251

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp314-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp314-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 359172dfabe5a2262b9a8876402d6c288e78bb74504cff889a3cf44777b5aade
MD5 88290da0be8fc24e72226d8cc3f595ef
BLAKE2b-256 2b18abd2a01bfcb2796d95d10e406902c93983ea53ce66c152dc19b3a7b8c162

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp314-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp314-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 587bec59e6b8c39bc42415ea4b7b3585b7df3bf99bac1a85edaf4b4d17400bdc
MD5 0dbfbec6b1456ea1e9d11296bc40334a
BLAKE2b-256 d9003cfdb992728e72994e393d48eb17e339c652476e5197041914c758951b12

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp314-none-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp314-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 3839e2aa8ea4f8bab6e6fa86751922a21281a46bdec72f54ab92f57135aae964
MD5 28a6ff46c56a161af528d2ae9afd2a7d
BLAKE2b-256 adba51005e73da7791618fda4c971ece59bd909faed8c7a105b2c0eadf1bd8f9

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp314-none-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp314-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 9a62f0cbd4e0c061366c195e0e3122f7032de9af15cfbec634fa1720924373e0
MD5 93f9936eb4765c4b81be41e536a60a12
BLAKE2b-256 406e41522385fd8ed84a740ebc210898193aa205d645f4c398d80e9bb3146f2c

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp313-none-win_amd64.whl.

File metadata

  • Download URL: mxlite_sdk-0.3.9-cp313-none-win_amd64.whl
  • Upload date:
  • Size: 9.0 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for mxlite_sdk-0.3.9-cp313-none-win_amd64.whl
Algorithm Hash digest
SHA256 c9c4bd25eb0b784cffa43937c00c540e19b0d104b839360e5f7a93345340df15
MD5 9027705077526a42768026faa9c7e5db
BLAKE2b-256 49972b93b6e8096bce868a07d7f1c754d45a817c66234f597b7fd6e880f172a5

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp313-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp313-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 96348b62feb9390c6406cee8ca5dd2b683bd80fbcfa1810576825bc2834fef05
MD5 5d4f9da6a8d0e491e5f3f5e029a14b06
BLAKE2b-256 792d83348b21ccbb2a5f192948d455655671163fd85eff84130901cc32981120

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp313-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp313-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9c99e3451393052d3c5a8a4726567e4e117b9fc1a0a3d52d15b0f6c753772f13
MD5 ca212ce6c7cbf2efe35c1cdac425a8bd
BLAKE2b-256 99467a52e37fa0c78e6056869c09813a3b6bb5b4aa9ad36a26be887bd1711661

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp313-none-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp313-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 3ce0faf498156965b908bc881f7a42c0b27d08af81197161da81c6100fc29499
MD5 3e8ec1886cb2ad9c968fcfdd35993425
BLAKE2b-256 a29a1707cc5b946bb7d4f0579d398978b116187adc0af2b105e82cc83bbf2772

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp313-none-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp313-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 5fc8f0f85a1dcfb0e9dbb36a033207a4c1916205442cb1e44deb330f564ebec8
MD5 6a6a0c7303080d62b2e011797f4e80c6
BLAKE2b-256 aedb50672ebdbcfd71314e8b0a22527a783ce28ccf4037667e97c9cf9d1f8ed2

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp312-none-win_amd64.whl.

File metadata

  • Download URL: mxlite_sdk-0.3.9-cp312-none-win_amd64.whl
  • Upload date:
  • Size: 9.0 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for mxlite_sdk-0.3.9-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 bed7d3354b5553b92d40a58d6af26d874a9f90b37344c9a49235ec0c7ed59bc6
MD5 f0f2dd669bb5c85a3d649e466231d551
BLAKE2b-256 5ee608dfaf8121731f8894115263c19a93684c306ba00fe7da0c389344294509

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp312-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp312-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2ecd0cd64a58efff5310ca7aa18a79b0a7979318109715e74c688ef20b425824
MD5 43eb5a079309fbe9e43b18b7e3ec2438
BLAKE2b-256 d4d1c5f9a32848c9b38b219cec8e509c60a9a13cae4deab024bfea326201dacf

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp312-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp312-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 73038b84a5352aca78b23127f263884b5266f6a36bf2dd77c94226103c85e9b9
MD5 7d58b79a9483f63f97ccfe8dba4b5527
BLAKE2b-256 ef2d2ef96ac8bb7f646e566dff3d24e430a22700caa7c2119abe22074866373c

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp312-none-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp312-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 77668f364faf544568103397b90ba278d8d6c9b558dd9eff89205aa8d4d1caf0
MD5 25eba1322c29355e6882845b2316df82
BLAKE2b-256 0316ba06f89e6a8dd34dfb59b855714016d2b3f8cd67f963e206dae2e8dcc679

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp312-none-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp312-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 c0c58692636e1dc51fc24199f3bf189b6ed8a25d89acc0a3b335ec91f836ee93
MD5 61a68121aa5765e518309c5b2a715744
BLAKE2b-256 a26f5cf9f40f61110f799c5390ffe2aaf2f98827480485f0f144198f08907d85

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp311-none-win_amd64.whl.

File metadata

  • Download URL: mxlite_sdk-0.3.9-cp311-none-win_amd64.whl
  • Upload date:
  • Size: 9.0 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for mxlite_sdk-0.3.9-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 ca17e1b985aa7401499e95a760858a187c037848cb0d78d2226aac33ed2a2625
MD5 da824b31e92088316457bc8d85bb28c9
BLAKE2b-256 9a9c9d6b1102016cf63f5a00567cb6fd3990f04364018c6b9b23599cb683e71a

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp311-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp311-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f3d9c40702b0b516d17b894beaa751681255beb41ca11a1c59d431601e2e19b5
MD5 504ece6c4693051f87be2ebd88c89421
BLAKE2b-256 137fbe09f573791875f6f6bea86f33a4a8a27b2bc05ac72fe08a9b6b1f3443f1

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp311-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp311-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9011a8d50ad72332ec0af51069eaf8d87a9894a68a177129afc96022dc531ae1
MD5 42021485c91032444098ea09daa3ac64
BLAKE2b-256 c4cf199b77de18f614ab0024f53cfff33d68731108c0e5ab588ee5546e2629ea

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp311-none-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp311-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 c8fab844e6c105b115d9baf1da1bee8ef41191d3fb01bd23aadcc31df03790fe
MD5 deb6de066b62193face2d81375af1c95
BLAKE2b-256 ceccc0a269018cfab7be3c980ad5830cbb36ab0907058cb07c8d415007395bb5

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp311-none-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp311-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 46bb6c036bc4f8256cc40def86edeceaef6c3c50bda88cb156090c9a7179a991
MD5 9cc6145991442ea1cf62d8ca6bedd51a
BLAKE2b-256 bee9d1724dc8a02d03ce9a54a38b640333c55a3f1b05bc891875cf1d2822e602

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp310-none-win_amd64.whl.

File metadata

  • Download URL: mxlite_sdk-0.3.9-cp310-none-win_amd64.whl
  • Upload date:
  • Size: 9.0 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.16

File hashes

Hashes for mxlite_sdk-0.3.9-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 8be6e8b780f8d15ff3e3f8678552d85af2c2f94e1681fcccb17b6d9ada021421
MD5 56435481d09ee4dc3931ad1865bb730b
BLAKE2b-256 b5eb8ade8c4302f4c63563027897cd2356275d59b85da0cf0d43a60056b4887a

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp310-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp310-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5051bdc0de2445bf5c5355fe0baca5b34d97d944a7d665f606cd37ff9029d9e3
MD5 ea03eb3792de121473caf80dc2280af3
BLAKE2b-256 1e82ada44a163774ca68eef26c8d7b231dfbb0e0373695bf0ccf60bd98abbaf8

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp310-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp310-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c1d1990398a6a7a28f79c6379843630a40ab5fe0b8474398cd9e772025717c21
MD5 2c44629c587c6663713578ada697ceee
BLAKE2b-256 f6259f796d37ee0763a85ab7a311d139ee6b145d14ed415f8b26ab95a4347fb0

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp310-none-macosx_12_0_x86_64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp310-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 86df93ea314f5ce0384f0b4357aa98c46c8532ed38e398c0d457b8b9e003e96a
MD5 62611b2832192f47ff482f25d32d9d43
BLAKE2b-256 bcd06279944e4a57a91532775cf38db1f0d2b5e82344aedac7831d6303f225e0

See more details on using hashes here.

File details

Details for the file mxlite_sdk-0.3.9-cp310-none-macosx_12_0_arm64.whl.

File metadata

File hashes

Hashes for mxlite_sdk-0.3.9-cp310-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 06c48ec2244818e3cd40377641497e4927b597a141aac150cf3143a74126f8f8
MD5 4c295dc8a1b63cffd0dad160203ff7c3
BLAKE2b-256 8863d77c5d37d7f42749a1fd5a44bf5c30d4c9d5bf87de9e7aaa039aeab5263a

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