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.7-cp314-none-win_amd64.whl (9.0 MB view details)

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14

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

Uploaded CPython 3.14

mxlite_sdk-0.3.7-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.7-cp314-none-macosx_12_0_arm64.whl (9.3 MB view details)

Uploaded CPython 3.14macOS 12.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13

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

Uploaded CPython 3.13

mxlite_sdk-0.3.7-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.7-cp313-none-macosx_12_0_arm64.whl (9.3 MB view details)

Uploaded CPython 3.13macOS 12.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12

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

Uploaded CPython 3.12

mxlite_sdk-0.3.7-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.7-cp312-none-macosx_12_0_arm64.whl (9.3 MB view details)

Uploaded CPython 3.12macOS 12.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11

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

Uploaded CPython 3.11

mxlite_sdk-0.3.7-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.7-cp311-none-macosx_12_0_arm64.whl (9.3 MB view details)

Uploaded CPython 3.11macOS 12.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10

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

Uploaded CPython 3.10

mxlite_sdk-0.3.7-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.7-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.7-cp314-none-win_amd64.whl.

File metadata

  • Download URL: mxlite_sdk-0.3.7-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.7-cp314-none-win_amd64.whl
Algorithm Hash digest
SHA256 7bb6823d78d67a37bb966917d169f86e0c807176f69053f73706ac247db166e7
MD5 55d7a415c0a8306f7cc0bf35edb295f8
BLAKE2b-256 8c8b68bf281b5e76214cb9240cff069f0d15fa531d5462a4760245ca78b4f9fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp314-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4d365a66f24bdc4ac5e27cfcd51cc668c6ef69d33f12bb865e1b746dd9d9c4c6
MD5 1943efaf07db6f146b194d483675ab10
BLAKE2b-256 bd2523f84ae6708cf6e5458ba644ad031fb5d3c2be92c207da680315973b8fcf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp314-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ee449505ef386a28edb2f3f7c3365fc675117788f7968054c8bc1f9c41e7d384
MD5 c587f098bf96c4df493c367f2bc6a413
BLAKE2b-256 3abc7f869f84d19e188b406f702a51d51ae2d2fdac56f14f01ff5ce9e2053d39

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp314-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 a2f51d433500fe576ff1e30bbe8bdf5a6e3bc2a1f4aa6b01a138f916a7610bc5
MD5 9c52ea3c1529ab4c045deaa25a3885ce
BLAKE2b-256 af91502a1208eddeb6ca988a5b1a0db5b193264464b1d9b3767575651ec8df3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp314-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 5da40aaae886116dc8169b94546813e76f2e4ab6096425145ee6a1efde20905c
MD5 1c9ce5aea7b1949fcb2a06cf3a4dd986
BLAKE2b-256 408ef3ad3c31e9ea609508928bd7a57a9db566586a97258f3427c5f877a32030

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.7-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.7-cp313-none-win_amd64.whl
Algorithm Hash digest
SHA256 737652d00e1bd841fd850f45990a92455530e91fb2554613c8cd18e634f783f4
MD5 939abad4c345aa66030d28103c33c168
BLAKE2b-256 76913efbd4dbe628f054ec7f68293386bca0186645b4698699963f2feda91d28

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp313-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 76b68b6d2e79546b35a13ca75dfc94d5555fe89655dd9daa19334a4a9d5bde6e
MD5 af20ed8dc651816174468054e0c8386b
BLAKE2b-256 93331f55e82a84df04d920656191eb3c94b9927723c292c02f8e4efa72d85338

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp313-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c6c67cfc2fd421a76941e4f0a062d5f0c8383111608f1686921f2ae8c305c960
MD5 9d64df5858402e2925fb2a3aef627316
BLAKE2b-256 8b69cc4cec4357a069d0431dfe255d67d6fb758ce8d334a4f8676149a812be1f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp313-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 9e9fe05ce2cfcabd606e37437bb90d162710f9bfa9db5b1a87069b960b1a6b5c
MD5 26079d740e2a003a145ad589f00c2275
BLAKE2b-256 a05470ee676f3616b337ba1c9c2232ffb16b188341a5a50f7fbb0642f60cef5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp313-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 dceaa8def922b3ca6a2ac9c949e9fc91f2057f0a2e22e53d2fe082536a069e3f
MD5 da907c7c4b1497a5316fe9e103a47483
BLAKE2b-256 dfadfd08b2d1779a7386db85def933beff57826e8e5fca946dafe1155d0e967e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.7-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.7-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 fcc1ad42b41ba1820c9700a02be8299ed3dc4cb0d46640e4355ba4598970c97b
MD5 c89616e792db14862846198c3632b7ca
BLAKE2b-256 77e5d9dcf0e9cdaa43f15eafbae822985eb5199a3e5d77d33b7ed30982721187

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp312-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 790157072424624892ace323eacb69894a04ae097a882d619692916c165e600d
MD5 c8946931697de0d8254eae40ff0799a0
BLAKE2b-256 7fe551940a9b63d7003a6fc9cfa4faf33e8012e71b423e78283cd6e47ae9b10d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp312-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6415619e1be57d618561cf64896e07f95bbb787fc69190420d5689288c2cb2b8
MD5 67fb7ab400d12aafbaf170b01738126a
BLAKE2b-256 d80a45982bc01a3c5df1cfe945ba9a245c4a35ac98704c56ccb42ced641c35fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp312-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 9b53ad9827cf8cad536a17f8ddb8c204885009fad827bcc3468196be3bbebd20
MD5 2f37715b012c6372c81dd0daacea3b70
BLAKE2b-256 7b7cfbfe821bcecc36565d5e3f32e14516817d583dfd91a1cc01cd392aca74a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp312-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 f469c7cda55ba6f85bedb26882e03de6a1c77a773340d52a3153b88981b826a7
MD5 29120fa597303ff25a63403ee9319049
BLAKE2b-256 399d7013a65d46c7664f5feff72018ac2c9d9ad516579aa23fa29bc6377cd779

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.7-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.7-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 21c3c06de183da31123b9474c8c9bdb9d7847fc9f507f8d13e0853e90fe8c88b
MD5 86b30a017d448fcab4787695b1897273
BLAKE2b-256 e2d2d30659c217ee8f1551fb30423d3d659d30172e4e787eced2e6d60ef5bedc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp311-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 84a11c4e98f679e6fe3839e384432abc7a55a29e52fe4d869e94c8a32f54cdef
MD5 cbce5032ddcc11e7ef40c80daac7d4c9
BLAKE2b-256 1331c6db8e1b915244af7106329ea38fda979dad9036a82178fdf27f4524e132

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp311-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 42661067b4b116220a41346a0010d3324bd0f3fe0d3131a6ad89f5a2d48c172a
MD5 3c5a644bcc06eee09ce78a59f41767f1
BLAKE2b-256 5232b33b51e48b5ab65d95c049385ed8c006f1a7fdffa414ac4ffcb75882a23b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp311-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 963ef30c0af8cf03fce8d75434a78803a5682adcf162cd9b4c39032fb7fb1b69
MD5 47ba762ca14baf31f26cc5569f89561a
BLAKE2b-256 7305b30f8e0a030f27bf7f5665db7617b1705ed31d724b4d8e7d85c961d27b67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp311-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 1742a8d3b5f448630f5ab589e1649272a139421dec7338056caf04a77b7c6fb9
MD5 3349c1a438a5ee1cc5dec48cc87938b4
BLAKE2b-256 2044e48935b61414e98a8edf12c10f698a55b74c855933a7b6b72d6f2c55c886

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.7-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.7-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 7025f81a28e4adbdf1f4c7543aaf37e26469a8ddb399f2fdf0ccd58f7c758bfe
MD5 d1f6ed15152c2f8f6714331338e22646
BLAKE2b-256 7ba20be5b3f63dfe9f1a143b13e3fd125db72be59014e1ffbc622578947e0990

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp310-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1dc100d6b34abea912ad1f4c1ceb09218a0332876ff4d43bddd0f136a3a1631f
MD5 3d2c65ac7215289cf2e89058a808a73b
BLAKE2b-256 f70766663ae553d51bbaf9dce46ee67aabec17265b105b663d17ed9cfb1979c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp310-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cf4685b5e6a0ae72b50871d897349034165db28965ebe2910d338691f117439b
MD5 02a35e9ce25437bef22d8a3768363e60
BLAKE2b-256 0b5f97101d74a1434854fd20a1a887eceb9b8508e2aafe8083db6587d7cc6c8c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp310-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 ea17612b4622f39e9c318109d3fb208bb866305ca917c7b3b0c9b40566583eaa
MD5 3f3eedb53b930f5d5cb75698bbfe2f54
BLAKE2b-256 9206b823019340125190af53bc9bd85e023a588c99aaae8b935213052fa0e5db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.7-cp310-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 1daf5d99e19e5bdda03766772cfc3e9e8bea69290d1bab5bffa2a74345bd6ee1
MD5 65c015a677b156fe515fccc4a7e53754
BLAKE2b-256 d8cbd1fef14131fe62168a5db076fca1a8063e0871854917bd1b513b9f82dafa

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