Skip to main content

Dunimd Middleware Service - A high-performance Rust middleware framework with modular architecture

Project description

DMSCDunimd Middleware Service

English | 简体中文

Help Documentation | Changelog | Security | Contributing | Code of Conduct

X BiliBili GitHub Gitee GitCode Hugging Face ModelScope Crates.io PyPI C/C++ Maven Central

DMSC (Dunimd Middleware Service) — A high-performance Rust middleware framework that unifies backend infrastructure. Built for enterprise-scale with modular architecture, built-in observability, and distributed systems support.

🏗️ Core Architecture

📐 Modular Design

DMSC adopts a highly modular architecture with 18 core modules, enabling on-demand composition and seamless extension:

Module Description
auth Authentication & authorization (JWT, OAuth, permissions)
cache Multi-backend cache abstraction (Memory, Redis, Hybrid)
config Multi-source configuration management with hot reload
core Runtime, error handling, and service context
database Database abstraction with PostgreSQL, MySQL, SQLite support
device Device control, discovery, and intelligent scheduling
fs Secure file system operations and management
gateway API gateway with load balancing, rate limiting, and circuit breaking
grpc gRPC server and client support with Python bindings (requires grpc feature)
hooks Lifecycle event hooks (Startup, Shutdown, etc.)
log Structured logging with tracing context integration
module_rpc Inter-module RPC communication for distributed method calls
observability Metrics, tracing, and Grafana integration
database.orm Type-safe ORM with repository pattern, query builder, and Python bindings
protocol Protocol abstraction layer for multi-protocol support (requires pyo3 feature)
queue Distributed queue abstraction (Kafka, RabbitMQ, Redis, Memory)
service_mesh Service discovery, health checking, and traffic management
validation Input validation and data sanitization utilities
ws WebSocket server support with Python bindings (requires websocket feature)
c C/C++ FFI bindings for cross-language integration (requires c feature)
java Java JNI bindings for Java application integration (requires java feature)

Note: Some modules require specific feature flags:

  • grpc: gRPC support (--features grpc)
  • websocket: WebSocket support (--features websocket)
  • protocol: Protocol abstraction layer (--features protocol or full)
  • c: C/C++ FFI bindings (--features c)
  • java: Java JNI bindings (--features java)

🚀 Key Features

🔍 Distributed Tracing

  • W3C Trace Context standard implementation
  • Full-chain TraceID/SpanID propagation
  • Baggage data transmission for business context
  • Multi-language compatibility (Java, Go, Python)
  • Automatic span creation via #[tracing::instrument] attribute

📊 Enterprise Observability

  • Native Prometheus metrics export
  • Counter, Gauge, Histogram, Summary metric types
  • Out-of-the-box Grafana dashboard integration
  • Real-time performance statistics with quantile calculation
  • Full-stack metrics (CPU, memory, I/O, network)

🤖 Intelligent Device Management

  • Auto-discovery and registration
  • Efficient resource pool management
  • Policy-based scheduling with priority support
  • Dynamic load balancing
  • Complete device lifecycle management

📝 Structured Logging

  • JSON and text format support
  • Configurable sampling rates
  • Intelligent log rotation
  • Automatic tracing context inclusion
  • DEBUG/INFO/WARN/ERROR log levels

⚙️ Flexible Configuration

  • Multi-source loading (files, environment variables, runtime)
  • Hot configuration updates
  • Modular architecture for on-demand composition
  • Plugin-based extension mechanism

📁 Secure File System

  • Unified project root directory management
  • Atomic file operations
  • Categorized directory structure
  • JSON data persistence
  • Secure path handling

🛠️ Installation & Environment

Prerequisites

  • Rust: 1.65+ (2021 Edition)
  • Cargo: 1.65+
  • Platforms: Linux (x64, arm64), macOS (x64, arm64), Windows (x64, arm64), Android (arm64-v8a, armeabi-v7a, x86_64)

Build Dependencies

Some features require additional system dependencies:

Dependency Required For Installation
protoc etcd feature (Protocol Buffers) Protocol Buffers
CMake + C++ compiler kafka feature (rdkafka) See instructions below

Installing protoc

Windows:

# Using chocolatey
choco install protoc

# Or download from GitHub releases
# https://github.com/protocolbuffers/protobuf/releases

macOS:

brew install protobuf

Linux (Ubuntu/Debian):

sudo apt-get update
sudo apt-get install -y protobuf-compiler

Linux (CentOS/RHEL):

sudo yum install -y protobuf-compiler

Installing CMake and C++ compiler (for Kafka support)

Windows:

# CMake is usually installed with Visual Studio
# Or download from: https://cmake.org/download/

# Using chocolatey
choco install cmake

macOS:

# CMake and C++ compiler (Xcode Command Line Tools)
xcode-select --install

# Or using Homebrew
brew install cmake

Linux (Ubuntu/Debian):

sudo apt-get update
sudo apt-get install -y cmake build-essential

Linux (CentOS/RHEL):

sudo yum install -y cmake gcc-c++ make

Quick Setup

Add DMSC to your project's Cargo.toml:

[dependencies]
dmsc = "0.1.8"

Or use cargo add:

cargo add dmsc

⚡ Quick Start

Core API Usage

use dmsc::prelude::*;

#[tokio::main]
async fn main() -> DMSCResult<()> {
    // Build service runtime
    let app = DMSCAppBuilder::new()
        .with_config("config.yaml")?
        .with_logging(DMSCLogConfig::default())
        .with_observability(DMSCObservabilityConfig::default())
        .build()?;
    
    // Run business logic
    app.run(|ctx: &DMSCServiceContext| async move {
        ctx.logger().info("service", "DMSC service started")?;
        // Your business code here
        Ok(())
    }).await
}

Observability Example

use dmsc::prelude::*;
use dmsc::observability::{DMSCTracer, DMSCSpanKind, DMSCSpanStatus};

#[tracing::instrument(name = "user_service", skip(ctx))]
async fn get_user(ctx: &DMSCServiceContext, user_id: u64) -> DMSCResult<User> {
    let user = fetch_user_from_db(user_id).await?;
    Ok(user)
}

Or using DMSCTracer directly:

use dmsc::prelude::*;
use dmsc::observability::DMSCTracer;

async fn get_user(ctx: &DMSCServiceContext, user_id: u64) -> DMSCResult<User> {
    let tracer = DMSCTracer::new(1.0);
    let _span = tracer.span("get_user")
        .with_attribute("user_id", user_id.to_string())
        .start();
    let user = fetch_user_from_db(user_id).await?;
    Ok(user)
}

🔧 Configuration

Configuration Example

# config.yaml
service:
  name: "my-service"
  version: "1.0.0"

logging:
  level: "info"
  file_format: "json"
  file_enabled: true
  console_enabled: true

observability:
  metrics_enabled: true
  tracing_enabled: true
  prometheus_port: 9090

resource:
  providers: ["cpu", "gpu", "memory"]
  scheduling_policy: "priority_based"

Configuration Sources

DMSC supports multiple configuration sources in order of priority (lowest to highest):

  1. Configuration files (YAML, TOML, JSON)
  2. Custom configuration via code
  3. Environment variables (prefixed with DMSC_)

🧪 Development & Testing

Running Tests

Multi-Language Testing

DMSC provides comprehensive testing across all supported languages:

  • Rust: Core library tests with cargo test
  • Python: Python binding tests with pytest
  • Java: JNI binding tests with standard Java test runner
  • C/C++: C API tests with native compilers

Test Coverage

The tests verify:

  • ✅ Builder pattern behavior in all languages
  • ✅ Method chaining returns appropriate instances (language-specific)
  • ✅ Runtime creation and lifecycle management
  • ✅ Error handling and edge cases
  • ✅ Cross-language API consistency

Running Rust Tests

# Run all Rust tests
cargo test

# Run specific test modules
cargo test --lib app_builder
cargo test --lib app_runtime

# Run with verbose output
cargo test -- --nocapture

# Run with all features
cargo test --all-features

Running Python Tests

# Install Python package in development mode
cd python
pip install -e .

# Run all Python tests
python -m pytest tests/Python/ -v

# Run specific test classes
python -m pytest tests/Python/test_core.py::TestDMSCAppBuilderWrapper -v
python -m pytest tests/Python/test_core.py::TestDMSCAppRuntimeWrapper -v

Running Java Tests

# Build JNI library
cargo build --release --no-default-features --features java

# Compile and run Java tests
cd java
javac -d build/classes/java/test -cp build/classes/java/main \
  src/test/java/TestAll.java src/test/java/TestAppBuilder.java

java -cp build/classes/java/test:build/classes/java/main \
  -Djava.library.path=../target/release TestAll

API Behavior Across Languages

Language Builder Pattern Method Chaining Reason
Rust Returns Self Consumes original Native builder pattern
Python Returns self Same instance Pythonic wrapper for PyO3
Java Returns new instance Immutable builder Java best practice
C Returns new pointer Memory management C idioms

❓ Frequently Asked Questions

Q: How to add a new module? A: Implement the DMSCModule trait and register it via DMSCAppBuilder::with_module.

Q: How to configure logging level? A: Set logging.level in the configuration file, supporting DEBUG/INFO/WARN/ERROR levels.

Q: How to enable metrics export? A: Set observability.metrics_enabled: true and configure prometheus_port in the configuration file.

Q: How to extend configuration sources? A: Implement a custom configuration loader and register it with DMSCConfigManager.

Q: How to handle asynchronous tasks? A: Use DMSCAppBuilder::with_async_module to add async modules, the framework handles async lifecycle automatically.

🌏 Community & Citation

📄 License & Open Source Agreements

🏛️ Project License

Apache License 2.0

This project uses Apache License 2.0 open source agreement, see LICENSE file.

📋 Dependency Package Open Source Agreements

Open source packages and their agreement information used by this project:

Dependencies License

📦 Package 📜 License 📦 Package 📜 License
serde MIT/Apache-2.0 serde_json MIT/Apache-2.0
serde_yaml MIT/Apache-2.0 tokio MIT
futures MIT/Apache-2.0 futures-util MIT/Apache-2.0
http MIT/Apache-2.0 hyper MIT
prometheus MIT/Apache-2.0 redis MIT
lapin MIT/Apache-2.0 rdkafka MIT
yaml-rust MIT/Apache-2.0 toml MIT/Apache-2.0
etcd-client MIT sysinfo MIT
async-trait MIT/Apache-2.0 dashmap MIT
chrono MIT uuid MIT/Apache-2.0
rand MIT/Apache-2.0 notify CC0-1.0
jsonwebtoken MIT reqwest MIT/Apache-2.0
urlencoding MIT parking_lot MIT/Apache-2.0
log MIT/Apache-2.0 tracing MIT
pyo3 MIT/Apache-2.0 jni MIT/Apache-2.0
safer-ffi MIT tempfile MIT/Apache-2.0
thiserror MIT/Apache-2.0 hex MIT/Apache-2.0
base64 MIT/Apache-2.0 regex MIT/Apache-2.0
url MIT/Apache-2.0 aes-gcm MIT/Apache-2.0
ring ISC lazy_static MIT/Apache-2.0
libloading ISC zeroize MIT/Apache-2.0
zeroize_derive MIT/Apache-2.0 secrecy MIT
erased-serde MIT data-encoding MIT
crc32fast MIT/Apache-2.0 generic-array MIT
bincode MIT typenum MIT/Apache-2.0
html-escape MIT rustls MIT/Apache-2.0
rustls-pemfile MIT/Apache-2.0 webpki ISC
rustls-native-certs MIT/Apache-2.0 tokio-rustls MIT/Apache-2.0
bytes MIT tonic MIT
prost MIT/Apache-2.0 prost-types MIT/Apache-2.0
tokio-stream MIT tower MIT
async-stream MIT tokio-tungstenite MIT
tungstenite MIT num-bigint MIT/Apache-2.0
oqs MIT/Apache-2.0 sm-crypto MIT
openssl-sys Apache-2.0 tokio-postgres MIT/Apache-2.0
rusqlite MIT sqlx MIT/Apache-2.0
criterion MIT/Apache-2.0

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.

dmsc-0.1.8-cp314-cp314-win_arm64.whl (7.1 MB view details)

Uploaded CPython 3.14Windows ARM64

dmsc-0.1.8-cp314-cp314-win_amd64.whl (7.7 MB view details)

Uploaded CPython 3.14Windows x86-64

dmsc-0.1.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

dmsc-0.1.8-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

dmsc-0.1.8-cp314-cp314-macosx_11_0_arm64.whl (13.2 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

dmsc-0.1.8-cp314-cp314-macosx_10_12_x86_64.whl (13.2 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

dmsc-0.1.8-cp313-cp313-win_arm64.whl (7.1 MB view details)

Uploaded CPython 3.13Windows ARM64

dmsc-0.1.8-cp313-cp313-win_amd64.whl (7.7 MB view details)

Uploaded CPython 3.13Windows x86-64

dmsc-0.1.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

dmsc-0.1.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

dmsc-0.1.8-cp313-cp313-macosx_11_0_arm64.whl (13.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

dmsc-0.1.8-cp313-cp313-macosx_10_12_x86_64.whl (13.2 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

dmsc-0.1.8-cp312-cp312-win_arm64.whl (7.1 MB view details)

Uploaded CPython 3.12Windows ARM64

dmsc-0.1.8-cp312-cp312-win_amd64.whl (7.7 MB view details)

Uploaded CPython 3.12Windows x86-64

dmsc-0.1.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

dmsc-0.1.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

dmsc-0.1.8-cp312-cp312-macosx_11_0_arm64.whl (13.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

dmsc-0.1.8-cp312-cp312-macosx_10_12_x86_64.whl (13.2 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

dmsc-0.1.8-cp311-cp311-win_arm64.whl (7.1 MB view details)

Uploaded CPython 3.11Windows ARM64

dmsc-0.1.8-cp311-cp311-win_amd64.whl (7.7 MB view details)

Uploaded CPython 3.11Windows x86-64

dmsc-0.1.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

dmsc-0.1.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

dmsc-0.1.8-cp311-cp311-macosx_11_0_arm64.whl (13.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

dmsc-0.1.8-cp311-cp311-macosx_10_12_x86_64.whl (13.3 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

dmsc-0.1.8-cp310-cp310-win_amd64.whl (7.7 MB view details)

Uploaded CPython 3.10Windows x86-64

dmsc-0.1.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

dmsc-0.1.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

dmsc-0.1.8-cp310-cp310-macosx_11_0_arm64.whl (13.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

dmsc-0.1.8-cp310-cp310-macosx_10_12_x86_64.whl (13.3 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

dmsc-0.1.8-cp39-cp39-win_amd64.whl (7.7 MB view details)

Uploaded CPython 3.9Windows x86-64

dmsc-0.1.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

dmsc-0.1.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

dmsc-0.1.8-cp39-cp39-macosx_11_0_arm64.whl (13.2 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

dmsc-0.1.8-cp39-cp39-macosx_10_12_x86_64.whl (13.3 MB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

dmsc-0.1.8-cp38-cp38-win_amd64.whl (7.7 MB view details)

Uploaded CPython 3.8Windows x86-64

dmsc-0.1.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.4 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

dmsc-0.1.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (10.3 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

dmsc-0.1.8-cp38-cp38-macosx_11_0_arm64.whl (13.2 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

dmsc-0.1.8-cp38-cp38-macosx_10_12_x86_64.whl (13.3 MB view details)

Uploaded CPython 3.8macOS 10.12+ x86-64

File details

Details for the file dmsc-0.1.8-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: dmsc-0.1.8-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for dmsc-0.1.8-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 c48428f7e160c4335c0f9a00956f3af2a94540bd191bead33703d5fd2d2c62ac
MD5 18afeddde6c158bb37d5e97a2b376050
BLAKE2b-256 005ce29be62a6dfe9bc8b2bf9202031844d00cb9eaa67c100496c3da2fafefc0

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: dmsc-0.1.8-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for dmsc-0.1.8-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 fd4b763f214cdc4529e61c1931840648151301827d91ca904b28ed894cebdd29
MD5 db76cf7e7c0175ba3cfdc61a783c883a
BLAKE2b-256 92ad7ebf3d87945918f547ea17b41d24f41d7f8b8e5a7a3da3e1e94074ee8ef3

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4e3a8cd600ba9b85b9187b182eab4889a1dc1b6b6aaafcccf3ec418cddc4a402
MD5 4ac25e5c3008fac74a1dd56154fd2b90
BLAKE2b-256 13905b069f77a16ee41f814d40b4d6fe65a2cd4b26f09dfed5d79afb305830bc

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9e0424137242cba9343335d9c1e81469f36b697fe0aa9441e9e8d6ff1841c7c2
MD5 56005087527904fb9857841a91ac1d6f
BLAKE2b-256 09714772983784e13713c50221461e8139973819aa74ab83cde329055b04e01a

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0bd093d737c1031c799b8e9c99400fbc7ffdd293cbfca9ae8fdb7413790f9768
MD5 47bd72c6095f00b9b0a2764dd20d38fe
BLAKE2b-256 ad7656cd4e33be82a05862987a6bcddbfc804925c1614984cb056cb4b61384b5

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 880fca436b72a1d187f42dc2ccff03a0789f50d2d6764c7cbfd6e17a5962627c
MD5 4fd41f17be058e770d328cc0fe777fb7
BLAKE2b-256 9bbe1ab36518bcb6f297bf128b82a0cdd4c7c1617d90b725605e7036df20e4a7

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: dmsc-0.1.8-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for dmsc-0.1.8-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 7ef74be08cb1a834b2971d6c6efa56c060c7857c3ad3145b39cddcee3d2e860e
MD5 253e882e418774ca4fb5fe5f2741d3ad
BLAKE2b-256 5b4df7086de5fa3d34badc592e0a5bae150f9aa760e50391e312d75c10842f1b

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: dmsc-0.1.8-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for dmsc-0.1.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 7fae9a5f91d752c0400a066a93549a05a49e848ecb3a932878ad80e6b59bfdd5
MD5 93ec395a1541687cd3059c983af1a415
BLAKE2b-256 249304137d15b965be5b044f10bfeac0af4d269ecc3c9fa4350845358408e8ac

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ffeb30939af9b5e441187afcf5fe06266c642fdce273f713a6a0d73608fb4674
MD5 315bff86e16072aee75e13881642b857
BLAKE2b-256 2328340f1dba7088298b709bc3e3965dc0f45766e46ca05745dff5d669d75e9b

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 caff499eefbb1a3181e527edd0781508b0ddbc2b97f6f4e86db236f23fcf1008
MD5 77fd29b1957e4146e55c0dcfd5c6c10d
BLAKE2b-256 18146a396307f0dbfb04c7b3016fdc42b054c34467b1ecce53eb1c8c9c6bee4c

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 593054a84a29987814fa868e0cf1ce52e614069768dce6aa83c6fc9085e8cba0
MD5 d2feb61bd422a656d1f2268c5ceb5476
BLAKE2b-256 abd323349fb22e6e297462c3487a0881ff12e7fab45e373039be3efbb643386f

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7ef68cf3ef9193413872bfba3da73fb89e52d7108c363f01a9e9d5a46c682f59
MD5 1e0e4b8c531814b3d3b9ce9fa5c7f332
BLAKE2b-256 d180c61e6f34c008c894ee51c96c07d4d592a2798bc5fc33780c8abf6afd54bb

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: dmsc-0.1.8-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for dmsc-0.1.8-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 b6cf06ebd87e49b58a265d622b34db5c5aa3e20038326df844a3f0a5a38a85c8
MD5 a1f6946567990a7afe8cfd755d70f966
BLAKE2b-256 fc18bf394014156b84c6431969c129d2f47485cc446ce82e0d210ff472aed603

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: dmsc-0.1.8-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for dmsc-0.1.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7839cccfe9ca6849c910e782858b124e5a43d7b99b79576fab6cff7783f508e7
MD5 530b67d73c1a5f91c2d704cec7c16755
BLAKE2b-256 5b303c24db538471147531e29b4fcf9940b345772e56f8c22b41cb920bf87280

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 883eb35559a3ea25630ee004e42a56fd3563b194804097da0e3ba3c565e1f267
MD5 efc68560a156688aac37a67fb243496c
BLAKE2b-256 678d8b7123499610f67e895aa5c398cde4f0617b989deca31a449af01121daab

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9ea1667ccf7c7ccb9c503bf012bf849fc6b17dfe64feefb97d66090fbd3f8b3b
MD5 b70fe718bfa6b3f9b05ab9730b97ad80
BLAKE2b-256 a7e2b2dbaa8c0a1274d45e50702440ac0c6aaa48c9284e24f76477675f321077

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b719f2f9c520114395c19f3678df4f968271d30c8bc946eec731f02fabe247a8
MD5 647102b3396f9094c893ac341df058f7
BLAKE2b-256 887f2db42ff8c7c02f1628461d43e60cc32bba4198e97ee32a8fb82a89202cb7

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f69407b20611948247836e84741a379cad63a86036310ab0684c1e2e65641e2f
MD5 8049852a2e633c0acd9ea7ae932e05e2
BLAKE2b-256 5cc79b146c7cbf254f52258f681a5bbeac7822d2a2c3146ec48167dbf204cddc

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: dmsc-0.1.8-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for dmsc-0.1.8-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 03af664eebc416309c337d255a155e68313e284ca9a3f1e9d4d8dfa3b068bf53
MD5 4a8462973d46dc65601bce4cfcd10306
BLAKE2b-256 a3590d9c395104f6da1aa4420072a35b9b91ecc52016be7c63a6626804425b60

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: dmsc-0.1.8-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for dmsc-0.1.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 624fb2e21cc6671f322cf65c8aa8e41c1e5b21abe0fb2504861071278fc79fbe
MD5 308585c60c6de29313d10b37a3330881
BLAKE2b-256 f5c842333ca25cf6e4856fae8d648e7d8af93c6e031b97352cfb41d4a4ef766d

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f001ea5892687f049fb94f17605f189e45cc594546c413400ab2e0092ba76a34
MD5 520de456fb706675c6ba0ccbe516903f
BLAKE2b-256 aa7ee5afb6147a2890f7144f5090dc590fe5cec80e2797f8ba0205dc816f1e59

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d0ef6717ed91c66cce73150dd8552653d0e8196a0a8d38f747f719485c73f151
MD5 57f41da03dc4df510ac68da13dc537ef
BLAKE2b-256 8fdb2d08bb49ebeee8df88be704b7aa682100d1e40b51abe3fcf5aed0e158633

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b1a9dae7d2f058555a56fb9ce557cb360aebcecb05985338aa34b3130113ec34
MD5 b8e29fe737752e6ed3f8c4e0bb3280a3
BLAKE2b-256 4446d0b430fdcbd0f7fd36df26044a2c2b5d716fb320125a7dcdc8d0d22e3ce6

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c7d386872949139fa5e04072cdc8197df8d37f9428c169aa3fee4d9cfde1a862
MD5 1edd10e2626307bf69f1c6f52f8f1967
BLAKE2b-256 359652ca62c46e40d8d95b07d27358283fe2ce4f7fba9837b6f4c66124d3ce3f

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: dmsc-0.1.8-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for dmsc-0.1.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d43b01ba3ad96be37a106cd0fc8ecf8267805363bfdc1f8c4bbe3415582a01f1
MD5 7a2eb5acce2a97bf7d1a27255b2a1ef6
BLAKE2b-256 1391686516bf6c4ae2d1e21f39ae50df024de91a513347c5ed060575e31e5511

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 987a9acd9fe8dfdd716d651acab5184956108ba955cf3e4b3e848901740a75de
MD5 00211bba91d222fd2620dde60cffec0c
BLAKE2b-256 5011a056c3667f1d81815e3acd4d9cf9835ae89517cd5181c3736e73e8fd0250

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2ad78c4e5ce6c5718d53ae495a99edff33f4077de931d030f54c7b34691af17e
MD5 1d3b5e76925d9b620094f28667ddc7af
BLAKE2b-256 cd1045c60e60cc401292e47cd4eb2efbcd201a9870a1a301bf8997ba5548706f

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c679ebd6b748d327efc98e17473ae0332b501c1354f9c277791e7d53a62cfca
MD5 e369d70577f488c5728bbeff72aa53ea
BLAKE2b-256 e66d7615d3ad737ba55401830df6d90f2350dad7f64b756c784975f32eb92e28

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 247624f0edec4e839c485b86b3c7c180c5c7ebd548d21566711e8a193754d837
MD5 96eb36a2f911207a9fdb6941f67b9795
BLAKE2b-256 8d9682a4e6eaf3557bbd9e1fc277c9e44dc35cebe7be53a5e8aee1b8803a5b27

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: dmsc-0.1.8-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for dmsc-0.1.8-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 c0d371c8d0601a28a1e093ca39d3eb5dfe878e011f3a342b948aa4d449721d2d
MD5 114c6a46d3b700cdbd6013c343353d5d
BLAKE2b-256 a79c91b63f55964565b925d7bdaf8a1e159ae7dbe914085c46c86240b3e4444a

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4dbf01857c861e37fdc6873ae96a3f4357611fc9e04c8a64c1864f0260ee39a2
MD5 b7e223b036bfcf191a47c8c41ad44528
BLAKE2b-256 f480f6d0993240b590aa9a9eadfdad17cd488932a491ed5a567a029eb8ed71a1

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b572dddc3ddd361a2fe01d680c44a581c282590e7d56e800bf7253761ec6779d
MD5 c0c51a89b107055a41a487bced01ead6
BLAKE2b-256 72e91cf058f689c7b64d20192056375f2448ac180c6b38dfe14ee38f140843b8

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: dmsc-0.1.8-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 13.2 MB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for dmsc-0.1.8-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a03cab6b993e8d8369e1952c034563b4aa865c1f15904aa3e882179b321a1725
MD5 79142e0f4041a3d877203e36441bf6d2
BLAKE2b-256 e09ef4e953c8f251903fd2d4f591bde716b2ddc40bcdd72f8db30df8b2f2dc12

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4d2afb1433b501e383c7d71686ca53f130de5eebb82f89df8ca669fe65eee63b
MD5 0d641accfc133a11f45a89c9f141313d
BLAKE2b-256 99e8c50c9aaba5ca5d2b5099147adee0c2e67ca7ad676a05d070398268bb74b7

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: dmsc-0.1.8-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for dmsc-0.1.8-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 60ccddbbc3f6a659c888037762dbec50f1301c62bf466601015e261c53f2ef35
MD5 84b44f7c284838915412381fd42107dc
BLAKE2b-256 69e6ad6e583ce5eb6a93c7b4ff29545efccb20191de9f69de0c7440e4477c9a0

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3c326f046d5561f8b982b49a4a925e066032f53b12faabafa2b974c673919c3a
MD5 a282a1d8cd73a40232949fe956805845
BLAKE2b-256 ff012e3c79e4a945c3759209db580f4140d2827cca3d4634d36185f058658a97

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0dd7d43aa0dac87410f66468f59957525605af422859d98844db77e7d5b70653
MD5 e5f5582127ef5c8036a1deb99cd974a3
BLAKE2b-256 56d3b597319837c644f87633ecff0c06c06bed56437be24257aa0463f7c12338

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

  • Download URL: dmsc-0.1.8-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 13.2 MB
  • Tags: CPython 3.8, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for dmsc-0.1.8-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6089dec2651030e2d93997a190791f822c48c9c232ae657d88497421c682bccd
MD5 5a34dfb6027683d5a02e4504e68ab8bc
BLAKE2b-256 980bbd5ddc624a3a0a97e95a58b6ac9180a9f0d438842a5f4840232e0cd6f2d3

See more details on using hashes here.

File details

Details for the file dmsc-0.1.8-cp38-cp38-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dmsc-0.1.8-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 82bfd0dca4369a3bf99f78f7684b61c762e1a8b075e552aaa65476f36eaf7be6
MD5 a2b4481d1b3f174d3d806eb7bc901385
BLAKE2b-256 6f1ecbc2722f244a7d923e7eea510de64ad15273a399af974b5e02a4b0e0796d

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