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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14

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

Uploaded CPython 3.14

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

Uploaded CPython 3.14macOS 12.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13

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

Uploaded CPython 3.13

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

Uploaded CPython 3.13macOS 12.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12

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

Uploaded CPython 3.12

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

Uploaded CPython 3.12macOS 12.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11

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

Uploaded CPython 3.11

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

Uploaded CPython 3.11macOS 12.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10

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

Uploaded CPython 3.10

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

File metadata

  • Download URL: mxlite_sdk-0.3.6-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.6-cp314-none-win_amd64.whl
Algorithm Hash digest
SHA256 45b60b1d5ad48997e8fa1a9e0cbff096007eaeed808f9284c0f75aed282120c8
MD5 d4d94f8a0093faa8a0dfcf4f6135dae4
BLAKE2b-256 f807fdbd42112228c9bd69de9cac3b664b0d9f01b26506050a0f8963a49e225c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp314-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9067f9c510a991386560cda5e1a046a8d0a032c6fb9acc45b0c5b80d12eda7a9
MD5 f2a8ba433f9622118092c9617d0176ad
BLAKE2b-256 32a9a50fbec2273695d38516dfe635e1e42f218a571e658aea58f1d334fcea04

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp314-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ceeea9994523c2e7fa0bc547a9955def0bece0c794c18224b41ebaff5920c9bb
MD5 fee497fc2ded30a50ae0afffb84849d7
BLAKE2b-256 0054c3f3aee299b6a1bfd907f1a20fd73843046c83039daed26efb7a0d05cd1b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp314-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 3ec4097319cd127d325ea0533c90db1af11f3ecee693e91d2dc460d3d49028c8
MD5 1a1b1122aa84c572c8514bbbbee42a3b
BLAKE2b-256 aee32fb529035885fb70e0b57046f8afef38a8676f5bfae8491a4d977090d4d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp314-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 99b220ce7ccb511e1077effff090fe66b13d16a7433d14f7ca106619a7c01023
MD5 8e23a24ccfe2b6f824407cddaaf37514
BLAKE2b-256 207ec9a57a2fe5694f5ced4e3170a8392a0d4ff30274187e9626e084996e1d37

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.6-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.6-cp313-none-win_amd64.whl
Algorithm Hash digest
SHA256 c5118920f3c342b258493fbae8cc58cb585e57a09eedf910d4af151d5dc37acf
MD5 0c3c7751c49b4393ecdeb9f6f2111bae
BLAKE2b-256 533389d3577a033cbb8b14531d1fde1cd7ed77bcc22ceba31f5e77fe07052c5f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp313-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0fe7330ccda542c4cd4f979925fd66b2a49f266e5647cac1026241e115f4fdaa
MD5 ce566b95437a5caeab2a1b4ea59ae40e
BLAKE2b-256 e7915ff8ced1ab4d6b0486684edee67a695bf7fe7b3f391e72ac13b6601048d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp313-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4d8ce55f5db807cff4f17d0737d9ffb6133e53b76f4bdee444c37c54a7a907f0
MD5 29b7a7295759a23de2511fcda416a03a
BLAKE2b-256 7c75b5d7ad9d07517c1f28388720e97da2e6c1d0ec335fa12253c12e4a506daf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp313-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 e2f32d3f4bc3f98bf160f1b0b14e9d2e1feea99bfa0c48bb5cdb1ed6c2fb32d9
MD5 818c7250d37fbcf5b82ebe53fc307183
BLAKE2b-256 f46c68ec4d8ab17e7490e0998e6a3d0dc14b24173312ceeecdba1aedb90aaf62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp313-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 939c037dbbd15aa9a1a6b664a87120808f6245d7ad170a913fa1a8c1f17f1163
MD5 ae30c000ae261c1dc44cdbc7e45c1864
BLAKE2b-256 32c3db2e26c8aaa1256d3dcdf730948eb9ff73311bbfffe2587fd84c169252cf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.6-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.6-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 19c93b62a9269353d67106c6f966cb0f0119d557c2a1674604f5f7746a3f896c
MD5 0b578ec9d59005d7cfaf928655c4c510
BLAKE2b-256 8939ee76a013ff72118bf0418fe64c5eb53effdda947f7614c86312bc83eaab1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp312-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c1e3fd60420405dfcbffbe3c0621443a44a13e3f92d682bec21a018333a13b66
MD5 4a163b3372468201adbd5c9b837c18ab
BLAKE2b-256 8c392ea9d57440eddb09399e89d096895134cebcb089901f3fb8603de5433be5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp312-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 83527a4fbb0eaeef8cec4092780297fe657e6f1dd87bf22b2e2ed8be052beef8
MD5 0e3fac5feecb103dd2e58a641b2c8319
BLAKE2b-256 aa2c2e64a6311a952049c1bd150916bbf8cc7445916a0da4b400635415d965c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp312-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 e278324df28ce50b663b49baade8d4453645e6829db2390b6bdee3605cd9a9ab
MD5 1b6655557eec1923d3e9b8f3150d7c3c
BLAKE2b-256 d61d9e70da340a85f7b1a2209307e1497af818e1bec83c4ab2217e848704ae27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp312-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 a82f905673cd57cf5f6ef73094263a4f831c430181428f5a4ced4dfc333aaabe
MD5 502817d8498d45eeb2412b6ef740bcb0
BLAKE2b-256 d9761351c5bd77d0b9c20914206c87a441a49b6bffdacbc2da3055500b91cd22

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.6-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.6-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 e6ce1ad6222b3cf98b337946525870b00d5044f37166e9b54911ef925c5ffb6f
MD5 e0917ba37d16ec566fa90e793180b052
BLAKE2b-256 3642f88b1871a79e9d433d46b3ae417bf1bd279f66a8243fb355b94fd38a0e93

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp311-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1c73be0364b88d5d93c5390be697cb17670ab673f1fa92ff013e87b43a591e0b
MD5 4f60bbe4bd6374cb568554dcdbfab390
BLAKE2b-256 e905ee12c2954c3661dfb4e349f25750d824ef6b74f5d334534e98f415f5bd43

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp311-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1a0564a801e080cb0a3070e08525569fe947ce9fdf725d7aa3cd36867dcaf31c
MD5 477ad2ddc695b1b5ae78554de0e63e75
BLAKE2b-256 41a1785b43cc32963a026f7797c5d188fd05c2756a76943d27de2485f5371a12

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp311-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 ec79fda9043b4cbf6e2915154569b77055cde0c39d3a7de4e238f39080baaabd
MD5 9bd5112738a782d5d40c7576feb8042f
BLAKE2b-256 a132c8a3d71989ae8eeede2ca7947e4196032cdce8a6d0efec73f3a4538056d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp311-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 7c847e2a057beb0ee8fe78dd74437b84139726df1bc724df5229c9e9b0abf855
MD5 59bf4ee1459311de30b0f3b83062efa1
BLAKE2b-256 0c3173bd4020b88f041c54ee90073d327a472fe3966006709bd976a3c42f7fef

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mxlite_sdk-0.3.6-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.6-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 bdf8d7c881865d7cf080bc54cf15b089692f9c404e68e197898193d05bb601a6
MD5 0ecb0eb69b987b89e38e10877a91ba72
BLAKE2b-256 c5a15c07764759f2e2eded9350467ef4c846498f453bc98b05aa024918fb2115

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp310-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 050d8aebf75b509805261fa879ed324b7054c6aadca0a9c73f8f0531b05165e8
MD5 0ed84eaf3fe83af1037e03edc41e8a6e
BLAKE2b-256 1dcb4212eb55aca7dd3a58c8a2a00dbec3e2adfedd65a12085dd3db9122f58e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp310-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e4419929663f5a50441e3b14910c1cfb2071204ec4a7fa26b8c40321b0df46fe
MD5 a4f822dc4805b8acfe4c384d3a8b6400
BLAKE2b-256 17ad4568dc7ce7c0c5e476c781afdfe3d2bd8834043ce3213f7afb700a68bbd9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp310-none-macosx_12_0_x86_64.whl
Algorithm Hash digest
SHA256 29101667219a869d78957320a04cfae65025c1c439efd27a2c8875c7b08b3899
MD5 7ea0ccc592c220f4f2e9ad2f8f7e32bc
BLAKE2b-256 206bff7dc60379f916a42825c30452ef0471f11dc6453f2f51c133c985fcb137

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mxlite_sdk-0.3.6-cp310-none-macosx_12_0_arm64.whl
Algorithm Hash digest
SHA256 a3b1bfa2c8d5e51dcac258e3f9ef72c6152a35f420aa20720567ff88936e76b0
MD5 662543afc12ba7d7d75154fef26a8857
BLAKE2b-256 6f52017b07d7dd08af7b8d603cf95b60b3ccafacc6d81cdcd2bddde4a1ab2c51

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