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}")
    
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:
        # 确保在任何情况下都会清理
        if 'deployer' in locals():
            await deployer.systemd_remove_mxa()
            logger.info("MXA服务已成功移除")

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

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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14

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

Uploaded CPython 3.14

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

Uploaded CPython 3.14macOS 12.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13

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

Uploaded CPython 3.13

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

Uploaded CPython 3.13macOS 12.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12

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

Uploaded CPython 3.12

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

Uploaded CPython 3.12macOS 12.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11

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

Uploaded CPython 3.11

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

Uploaded CPython 3.11macOS 12.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10

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

Uploaded CPython 3.10

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

File metadata

  • Download URL: mxlite_sdk-0.3.5-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.5-cp314-none-win_amd64.whl
Algorithm Hash digest
SHA256 88e49268f5bf49fe48d40efba37681fcea67ec093b9ee7aec0421da486518982
MD5 fa55bb53e7058e8a9f6592d1007a5512
BLAKE2b-256 e3e182c40a7c4f5aa4fbf0ae5944833cd911b8c6e6bf5d93454c232049cfaad7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp314-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 58b82083c0947ec445539049ef1b27e9f5180cc82bf64043a64161b88dda333f
MD5 12296b38a93a9dd604389b927c2842ce
BLAKE2b-256 3981c33dec2c8004553bedd825f6c73913c1e394a9e5389e25dd86ca5ac09af7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp314-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b442f2e317fdf83d64f3030204ddaa15ec2e75e1865da88dca477bc5e0da0a56
MD5 6b5b82ba26edf7755d4f54cfce9ee71c
BLAKE2b-256 c6fd8911d5142913a67856c537f4fec679d46b25d188c687cf4c0e980eaf22bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp314-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 332d0e58f1b8b984c17774420edac917424b4e30745e9ac8a2b062e63284cff8
MD5 4bae32f00d721bcdd455512f5760bbed
BLAKE2b-256 10bc1b410f542de6d8839fa618ab97acbfa69542a7af40bf9833e695128c38fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp314-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 9f9b1495376a76d2e3d8e8f95e67ac01a0a09d92c8d538e4f108bb0951a7228d
MD5 6b18182684ae1372a53aa0ea28b4a7ef
BLAKE2b-256 9260f17905e9f9ff1a73b74ee454145637dc1b46492f7a17b93f662779a32dbe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.5-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.5-cp313-none-win_amd64.whl
Algorithm Hash digest
SHA256 11872ad505961b9d5155698ce86fa42dd95f62d2605c791cba548c5abf43f435
MD5 36f9267c35b853c924222e8112a41f92
BLAKE2b-256 ec2f7fc0f53a70016386431f5eb76818a10b09e4057c45ca2f99a285e8831af1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp313-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c3c8dff184a6ba59672de2ae82e071ae07b6f2d056349feadfb41f542b8f1fa3
MD5 5189eba616c03c0fd4669daf4dcd2019
BLAKE2b-256 8d7c3f4c8428e42aee083bd7278aed6b90088c76ff2893e8b217f8d81447aa1e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp313-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ba1d827bd6f2368af9fe36b1af3e11811aa58be8ed7d25926e72580e0226a718
MD5 25e325e9e90564572c17b251f0d74264
BLAKE2b-256 a236dbebed03f6615d7e56f1dbf368aad86d20ef25b9eb32a19201bf0304c8b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp313-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 1754a856e72d03036a7b89d6b9d0bc76e0a43fc1ff433bd95de5eeb449dbf2d4
MD5 56822200423e4fda963b4d36a7119ff4
BLAKE2b-256 017df4d9229f5dab83d3de8f0f41713a238322898e345c1075ec17eeaa6770d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp313-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 82407f7db399f07078d16068cf560e4f57bb6c968f6e8533ed92805d4cb6e5b1
MD5 3abf9d8fb8db074294c39d4ef344f603
BLAKE2b-256 ceaec62685c849d56bfff034caad307790dcab9d053b64bc14f6e39c578de4b7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.5-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.5-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 a0c7843e128eabb2a569537f333237e97f9b76072c619367427a61b0bd2d039b
MD5 989be4dab74d5b98d04237612e4bc16b
BLAKE2b-256 53f417b3fed642164b82362d1650d23dcb56469166a747de7fbbb22466606f41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp312-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0eddf5ae5434e272d90db7728a29ec5d3e334bc7184cf50dd4b07f1594eca373
MD5 1d0bff9ee192a3c4b4723320ad86f3d9
BLAKE2b-256 9b18234673e7d36826e097264c13cac032f337ba879780db089ae308eef74d40

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp312-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a2680f45700829df8448d40c93930163376be7231673555ce1fc935a464c5fad
MD5 e1f9d98c1c65b275f42023f515734336
BLAKE2b-256 95df6600618af74c7919dbe2312028d9bffa35d9c2c58f19fc17d0522cf4f729

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp312-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 3c332dfe649c9d66d3e155aee0c42ce6c3776bcfceddea5981b27e0dd7d25986
MD5 73735ac5d016dd06df38a05b261926c0
BLAKE2b-256 11c019e50edd86c87b739c3201444010330e2e6a6bde8b49294e2d878a875536

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp312-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 b4eb198455c7b12610cd2c076c6330fd4b346b6bd731c3dd3da7ad20a13638c8
MD5 3542902ffeba5c1f2e2f5ad74f7e2e4a
BLAKE2b-256 0778264d224ff51734df9b609f997d7312144e709986b2980585ffecd3558675

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.5-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.5-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 cf9d26f4016a2675e28c58b3daa8e27a273d3e16b28c752b00b9d79f96e30e2d
MD5 413bad427d579318033b1e2b5988866c
BLAKE2b-256 ae153df18bc99f145c4b078197a69ed72b30a99e3d9e84fc29ef020e10f61907

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp311-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 45d86b975fe7c7c612ca159a4fb008378048d4c88bde96f6c0e2f37bf610e7e1
MD5 6de6d5ca2f08a4927b11fef418d5dc49
BLAKE2b-256 1ca24e7bae0ef56d1514fbe9348a4248a337d3894c13b20339c81f91cefe25c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp311-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 36415f8c60b5f25fd9ef7bc11b253c9af0ccdb74058e7563a46c032c8d667374
MD5 453bea5e3e5bc78566210f2af4e46d04
BLAKE2b-256 1a52adc0fe91849f445d0fb68952342fbc53335bbc4b3c0701bc39f8aef07915

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp311-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 488056edf0043198635b9749fbefdb3ac886599be21c8b64b08ea665adfd096b
MD5 55274dc37948652a40754729d8088f77
BLAKE2b-256 a447e20b8e19ba9d58b76590d1bf9bed49ae8e1af58c360d3f5534b2e05447a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp311-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 2039749c31c8ad457adfe8eb2f9228ff360a242ceeeec361cccbd0610caa2cc8
MD5 3daa50fc6932bf83eb8e072d3783d7f8
BLAKE2b-256 20a782e223da5ddeab6a43947afc76b56e415f951a1cba4648c7d1836b700230

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.5-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.5-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 0490107a85fb02e8e7f93e240a2e3ba0c9e365dafec6edaba7af4a49ca0eb05d
MD5 a2887d6565006da2dbe03102c7253090
BLAKE2b-256 4f857879b48618123feb19c5d293ab0b478ffae37c612260943dcbc436c93282

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp310-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0b95c3bef14ee03133061ec7c4876111738ce0de44d5088aef6502ef89295fdb
MD5 0bd2347bdd61ae3f327c8513fb084284
BLAKE2b-256 607ad28a283994dfde805c70b447baaf7431d4fce7f4088d991df94d2f919313

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp310-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9c015725b247b3dcf69bfa3b3a7045d6a759ea32c08f46e681302dda2f3e181a
MD5 b3d6e1bb3054255741b14cdf0b87029b
BLAKE2b-256 953bbdc80eb7600e07274eb1b2c891299d964989e954448bc093887f93a18308

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp310-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 6c1a8500b4fb4388f5e75b2347259a3512a59c65eb0786248613a3789c2ab380
MD5 2c5dc3b8186667560137dbd6c3b475d3
BLAKE2b-256 838760c781db254b3aece08c108fe583f536df3594e3511e880806ba97f976e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.5-cp310-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 ee7410d0a72a39001adc7aec3ee49220d6ccc1d153d010e989c1bad193cff985
MD5 0e7fc530ed00b7eb116c361139515cb8
BLAKE2b-256 8785ca7c8495d36ef6fa7eff9711df49705558599e2560d8b4872dab0b76b901

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