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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14

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

Uploaded CPython 3.14

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

Uploaded CPython 3.14macOS 12.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13

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

Uploaded CPython 3.13

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

Uploaded CPython 3.13macOS 12.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12

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

Uploaded CPython 3.12

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

Uploaded CPython 3.12macOS 12.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11

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

Uploaded CPython 3.11

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

Uploaded CPython 3.11macOS 12.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10

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

Uploaded CPython 3.10

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

File metadata

  • Download URL: mxlite_sdk-0.3.8-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.8-cp314-none-win_amd64.whl
Algorithm Hash digest
SHA256 441f349d9b924a8e633d9314e0b9e76dfb05ea108a79aa317f28a585966978b1
MD5 d8fa1e32ce772ddf3f719107bddcc789
BLAKE2b-256 d15a82260ee402390d92da3a108fcd7d6d0eec6228a5bde7d27f8c660f03cafb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp314-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 383bd8fced62bf0e03c1e638cabe0bb68c90e26be466d92d3db5ca98746781be
MD5 6de70b444174eeee2edfa544c1ee2641
BLAKE2b-256 b0bce8c9c06c1ae219af010f2f7f98f970e1b9cec4394b3730451bd9c3b68605

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp314-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 93cf06dd92a2243ca83075ac35dd780d37d2765105a647017cc49e4bfa0ff4e7
MD5 4f13cfc001f551ee52c292c21eb02a17
BLAKE2b-256 362c4d45094ae6414e0bd967338a7ef0218bf28c5421e8696580b5011aca377a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp314-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 3fee4a8a945a88e6a85f644eab7dd0e86aa8a12e87569ef55ac9ec039055f675
MD5 54832fd34a66b809e2363697728fd6f7
BLAKE2b-256 a7b6f3bedfb78b44fb21ae21639ede8bdea6f05c9e9c9cdf9f33ae5bc5b7bf2a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp314-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 f153ccc9a60186fc4e4e9b84b88f4fc8f4e49d8749e490748b5806061ee3a8c7
MD5 ebfc8f80c7d7bb5f3410cfc84858ca86
BLAKE2b-256 c6fd1c2b0984e7de6418bf20aad177165526be8cc45001d57cdf6f242e3d601c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.8-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.8-cp313-none-win_amd64.whl
Algorithm Hash digest
SHA256 abbc3ffaec0dd02512e5c3e89136fe755299b2996cd658ada75aeff7c3956db4
MD5 93f2fa3d9cd6402fc1ea5ef6b572cb07
BLAKE2b-256 6b7b2824903888426bac5ecab8d4b10286b663417f67051f06166e1c54dc6e41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp313-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 78167ff6d5f572e46c5143537ce6d65204e38b792d8f1370fb18d712075b7ec0
MD5 ad107435dcc151a77252516aa4c5452a
BLAKE2b-256 12f46f0f6a89da4b77b23323696e306cc5b7b1ec2256676462edd09c255432c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp313-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2c5991639ce5764c3873ec8597050377c2be7b5b10443736a1ff05a6494e860f
MD5 3dfec6c31d66c2656ff497d8e9c99f65
BLAKE2b-256 14e6bd92232879160dc3a4d332088eae6fbf0e50cb47ba7f1cf61b87e9b37c44

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp313-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 b1dca09fcf9a35a2cb689e2149d777c8d6727de07d1ef7e8372c02279eaed5f8
MD5 936f1a1fbee7baa59a6fd25c085fec36
BLAKE2b-256 8e43d6ca6a69902a17494df525383d1f14c6abf3b318155b3b32f1f957c4bb85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp313-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 351be0d341e8f6a9a415ff207e62c003a10385011dcc74be566f0c058dca6ed1
MD5 af0b83d79b6fd8f4b7a86d387e5fa851
BLAKE2b-256 a53c20e7f818b735ebf828d0f601ec1753c1400db3f4e5789a9b6361f3d5a19c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.8-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.8-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 1d4d1d2109058b87fe0573c9ea56f7a70829e7480b058430c5b6b01a51a76fe0
MD5 4eb1060984e934dae18f182857dba5c8
BLAKE2b-256 4782511d64c197fd9d779cd245ef9a2fef403a97483f97dce43f9f141e12fe47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp312-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f449d2d4fde45204cb441ebc9f31804e6ffcddb9c332e5d59253ed05717b5b7c
MD5 b4553fbfd5e13dac30537655edb32dc8
BLAKE2b-256 46755846707b1e320471462269ba96f6bb0597680b31684bb3893a17668f5a1d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp312-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bca269c3da0475825c400b09a5b279395da9880a7140e666b73fa791117f2130
MD5 b36b73ee48885aa05b0c160cf0a42aa4
BLAKE2b-256 1943b0f89e87f44ed7db5711b60aa920cc526635ec1fed87e6137585b42609a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp312-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 21e605000a70539aa9335dffd17947f0cc59679ceb6f796005c42ad3b9ba7ed4
MD5 b8f5a23299b721cca44f5824066cf8b0
BLAKE2b-256 ca6e57129e366643c6718c0680ba02c7d98214e97ca417212eba02a0691a081d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp312-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 13c1a79dac604554cc13aff991cc1bc348ed4d39891a037f2f0bc8874ee83a26
MD5 06352c34ebaa8c15d402e377266f8fcf
BLAKE2b-256 92d43d73b4b3634d996a60b9eedcbb23e60ab13eb93c0d77a2a90225f89418eb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.8-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.8-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 dcf83bc07482fe73602614bceebc51e7b4f9789a83ea7e158b15280b4419dba9
MD5 564790f9e6770cbccc5a446bddda70e6
BLAKE2b-256 94066b5856dc2749cb6e9923200a75b5bd85ccce1e000ba34c5aad716e28a501

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp311-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 66deaaaee72088c383e5e8a46a11cdc3d2249130357360f8021e6ed4dcf4151d
MD5 0c8ed9f9a737819fc2649cc1d2274f21
BLAKE2b-256 ff970febef16b602679a46c8994544b0be07d8baec6cc7d8250b29ed735db85b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp311-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ad664c083231fb6578f8c489f6fb19f6faee12321a25be9e12a45d783526fa3d
MD5 72a1e81bfd319b0a98a4d1b23b6ad821
BLAKE2b-256 4cec5e92d91bd54df97941555e952bdb1427a7fada93e8316180b05b8af1b645

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp311-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 a560605a8bbea6dccbcbba159685a299a87bcd653cc061f532f894bc8720da8e
MD5 b2ada35d0cd600a252a1b690a399f611
BLAKE2b-256 737a1abd45e26b0c2864217a4fa04aed60479529b060450aa0332815a88aa7ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp311-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 e3ecae174ffca62aafe49beba524eb2df1e89e4ab02331eb6de6bee610c7c32b
MD5 e4d011e6ceab2d20a65f85baa3a5c65f
BLAKE2b-256 fa8223ce8d6c083c0bc47ab0595f61043e581d1243e82cc76dd79be3e54a9aa4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.8-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.8-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 57a283be3702eaa36cdf6ffa4b59234f019159730201322577595106190b7ad2
MD5 b88c48bd083336ca2fe8191dfeea0dc1
BLAKE2b-256 f51da42ac853521e7ff67dc1b3cd07ce8905025fe6bec712fb7a9b43640e7590

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp310-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8b01d8753f10013974e4c81d782ac853cece4b36ee4154d97f9b2ff4bf91ff05
MD5 6d9e1498695a18d140e65ab5f7082762
BLAKE2b-256 52cba329caaa3e96b9aa478dc8791f7324ee87e8a8c65356f3d0821fcaf892c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp310-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c7ca91c47a4a5bd72198c9484dbd19d278d896e47f0cf68f51fcc3a832fdd86d
MD5 a3fe4d796dca02d9b4a9128c5fa46ee6
BLAKE2b-256 53e8ae07e88e0ab8f1fe5b615d9b7b391057748a37b9b163e4255ddfd3c5fb17

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp310-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 e0aaf06a55846723f8f7cf06f811f57538fda62c9df37319871d97a153eedee8
MD5 35b05e4833611028deff101199d98b58
BLAKE2b-256 f5fafa1cfb0a4161876d21c997e9832702768f06c416365c50d8fb1742a11164

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.8-cp310-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 51d4ade07cc51ccec9c09fa41a45467c90a85d02a4b3d544503648b9c2e0d219
MD5 a1ffbfdfaa8b3bc3a4e14030f255d80f
BLAKE2b-256 d1397d397c58f56286b01ca61aa79a4dc972a11ef9e0b4bd3ed76a1124ec6cd9

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