dexcomm 0.4.0__cp310-cp310-manylinux_2_34_x86_64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dexcomm/__init__.py +42 -0
- dexcomm/_core.cpython-310-x86_64-linux-gnu.so +0 -0
- dexcomm/impl.so +0 -0
- dexcomm/py.typed +0 -0
- dexcomm-0.4.0.dist-info/METADATA +316 -0
- dexcomm-0.4.0.dist-info/RECORD +7 -0
- dexcomm-0.4.0.dist-info/WHEEL +4 -0
- dexcomm-0.4.0.dist-info/licenses/LICENSE +141 -0
dexcomm/__init__.py
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Pre-compiled for IP protection - All Python code is compiled to native binary
|
|
2
|
+
import sys
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
import importlib.machinery
|
|
5
|
+
import importlib.util
|
|
6
|
+
|
|
7
|
+
# Find the compiled implementation module
|
|
8
|
+
_module_dir = Path(__file__).parent
|
|
9
|
+
_impl_so = _module_dir / 'impl.so' if (_module_dir / 'impl.so').exists() else _module_dir / 'impl.pyd'
|
|
10
|
+
|
|
11
|
+
if not _impl_so.exists():
|
|
12
|
+
raise ImportError('Implementation module not found')
|
|
13
|
+
|
|
14
|
+
# Load the implementation module
|
|
15
|
+
loader = importlib.machinery.ExtensionFileLoader('dexcomm', str(_impl_so))
|
|
16
|
+
_spec = importlib.util.spec_from_loader('dexcomm', loader, origin=str(_impl_so), is_package=True)
|
|
17
|
+
_impl_module = importlib.util.module_from_spec(_spec)
|
|
18
|
+
|
|
19
|
+
# Add to sys.modules under a different name to avoid recursion
|
|
20
|
+
sys.modules['_dexcomm_impl'] = _impl_module
|
|
21
|
+
|
|
22
|
+
# Execute the module
|
|
23
|
+
try:
|
|
24
|
+
_spec.loader.exec_module(_impl_module)
|
|
25
|
+
except Exception as e:
|
|
26
|
+
raise ImportError(f'Failed to load implementation module: {e}') from e
|
|
27
|
+
|
|
28
|
+
# Import Rust core FIRST (these are the optimized implementations)
|
|
29
|
+
from dexcomm._core import *
|
|
30
|
+
from dexcomm._core import __all__ as _core_all
|
|
31
|
+
|
|
32
|
+
# Import from implementation module (flattened package structure)
|
|
33
|
+
# Get all functions/classes that aren't already in globals from _core
|
|
34
|
+
for _name in dir(_impl_module):
|
|
35
|
+
if not _name.startswith('_') and _name not in globals():
|
|
36
|
+
globals()[_name] = getattr(_impl_module, _name)
|
|
37
|
+
|
|
38
|
+
# Build __all__ from both _core and implementation module
|
|
39
|
+
__all__ = list(_core_all)
|
|
40
|
+
for _name in dir(_impl_module):
|
|
41
|
+
if not _name.startswith('_') and _name not in __all__:
|
|
42
|
+
__all__.append(_name)
|
|
Binary file
|
dexcomm/impl.so
ADDED
|
Binary file
|
dexcomm/py.typed
ADDED
|
File without changes
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: dexcomm
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Classifier: Development Status :: 4 - Beta
|
|
5
|
+
Classifier: Intended Audience :: Developers
|
|
6
|
+
Classifier: Intended Audience :: Science/Research
|
|
7
|
+
Classifier: License :: Other/Proprietary License
|
|
8
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
9
|
+
Classifier: Operating System :: MacOS :: MacOS X
|
|
10
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Topic :: Scientific/Engineering
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
|
+
Classifier: Topic :: System :: Distributed Computing
|
|
20
|
+
Classifier: Topic :: System :: Networking
|
|
21
|
+
Requires-Dist: numpy>=1.26.0
|
|
22
|
+
Requires-Dist: orjson>=3.11.3
|
|
23
|
+
Requires-Dist: zstandard>=0.25.0
|
|
24
|
+
Requires-Dist: pytest>=7.0.0 ; extra == 'dev'
|
|
25
|
+
Requires-Dist: ruff>=0.1.0 ; extra == 'dev'
|
|
26
|
+
Requires-Dist: protobuf>=6.32.1 ; extra == 'dev'
|
|
27
|
+
Requires-Dist: pillow>=9.0.0 ; extra == 'dev'
|
|
28
|
+
Requires-Dist: maturin>=1.9.6 ; extra == 'dev'
|
|
29
|
+
Requires-Dist: patchelf>=0.17 ; sys_platform == 'linux' and extra == 'dev'
|
|
30
|
+
Provides-Extra: dev
|
|
31
|
+
License-File: LICENSE
|
|
32
|
+
Summary: Accelerated communication library using Zenoh for robotics and AI
|
|
33
|
+
Keywords: communication,robotics,AI,zenoh,high-performance
|
|
34
|
+
Home-Page: https://github.com/dexmate-ai/dexcomm
|
|
35
|
+
Author-email: Dexmate <contact@dexmate.ai>
|
|
36
|
+
Maintainer-email: Dexmate <contact@dexmate.ai>
|
|
37
|
+
License-Expression: LicenseRef-Proprietary
|
|
38
|
+
Requires-Python: >=3.10
|
|
39
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
40
|
+
|
|
41
|
+
# DexComm - High-Performance Communication Library
|
|
42
|
+
|
|
43
|
+
A high-performance communication library providing three levels of abstraction for distributed systems. Designed for robotics, AI, and real-time applications with minimal latency and maximum throughput.
|
|
44
|
+
|
|
45
|
+
## Features
|
|
46
|
+
|
|
47
|
+
- **Three Abstraction Levels**:
|
|
48
|
+
- **Raw API**: Direct publisher/subscriber for simple scripts
|
|
49
|
+
- **Node Pattern**: ROS-like component organization with namespaces
|
|
50
|
+
- **Manager Pattern**: Dynamic topic management for gateways and monitoring
|
|
51
|
+
- **Efficient Resource Management**: Shared session management for optimal resource usage
|
|
52
|
+
- **High-Precision Rate Limiting**: Nanosecond-precision rate control with adaptive processing compensation
|
|
53
|
+
- **Flexible Configuration**: Comprehensive configuration options with file and environment variable support
|
|
54
|
+
- **Quality of Service**: Configurable reliability, congestion control, and priority
|
|
55
|
+
- **Service Support**: Request-reply pattern with timeout and async calls
|
|
56
|
+
|
|
57
|
+
## Installation
|
|
58
|
+
|
|
59
|
+
### System Requirements
|
|
60
|
+
|
|
61
|
+
DexComm requires FFmpeg and libjpeg-turbo libraries to be installed on your system **before** installing the Python package.
|
|
62
|
+
|
|
63
|
+
#### Linux (Ubuntu/Debian)
|
|
64
|
+
```bash
|
|
65
|
+
sudo apt-get update
|
|
66
|
+
sudo apt-get install ffmpeg libjpeg-turbo8 -y
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
#### macOS
|
|
70
|
+
```bash
|
|
71
|
+
brew install ffmpeg libjpeg-turbo
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### Windows
|
|
75
|
+
|
|
76
|
+
**Option 1 - Automated (Easiest):**
|
|
77
|
+
```powershell
|
|
78
|
+
# Run in PowerShell (as Administrator)
|
|
79
|
+
irm https://raw.githubusercontent.com/dexmate-ai/dexcomm/main/scripts/setup_windows_dependencies.ps1 | iex
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Option 2 - Using Chocolatey:**
|
|
83
|
+
```powershell
|
|
84
|
+
choco install ffmpeg libjpeg-turbo -y
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Install DexComm
|
|
88
|
+
|
|
89
|
+
After installing system dependencies:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
pip install dexcomm
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Platform Support
|
|
96
|
+
|
|
97
|
+
- **Python**: 3.10, 3.11, 3.12, 3.13
|
|
98
|
+
- **Operating Systems**: Linux, macOS, Windows
|
|
99
|
+
- **Architectures**: x86_64, ARM64 (Apple Silicon), AArch64 (Linux)
|
|
100
|
+
|
|
101
|
+
## Quick Start
|
|
102
|
+
|
|
103
|
+
> **Important**: All imports are available directly from the `dexcomm` module, regardless of which pattern you use.
|
|
104
|
+
|
|
105
|
+
### Choosing the Right Pattern
|
|
106
|
+
|
|
107
|
+
| Use Case | Recommended Pattern | Why |
|
|
108
|
+
|----------|-------------------|-----|
|
|
109
|
+
| Simple script with 1-2 topics | Raw API | Minimal code, direct control |
|
|
110
|
+
| Robot/device controller | Node | Component encapsulation, namespaces |
|
|
111
|
+
| ROS/ROS2 migration | Node | Familiar interface |
|
|
112
|
+
| Data logger/recorder | Manager | Dynamic topic management |
|
|
113
|
+
| Gateway/bridge service | Manager | Runtime topic addition/removal |
|
|
114
|
+
|
|
115
|
+
### Pattern 1: Raw API (Simplest)
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
from dexcomm import Publisher, Subscriber
|
|
119
|
+
from dexcomm.codecs import PickleDataCodec
|
|
120
|
+
|
|
121
|
+
# Create publisher with AutoData encoding
|
|
122
|
+
pub = Publisher("sensor/temperature", encoder=PickleDataCodec.encode)
|
|
123
|
+
pub.publish(25.5)
|
|
124
|
+
|
|
125
|
+
# Create subscriber with AutoData decoding
|
|
126
|
+
sub = Subscriber("sensor/temperature",
|
|
127
|
+
decoder=PickleDataCodec.decode,
|
|
128
|
+
callback=lambda msg: print(f"Temp: {msg}°C"))
|
|
129
|
+
|
|
130
|
+
# For raw bytes (default), no encoder/decoder needed
|
|
131
|
+
raw_pub = Publisher("sensor/raw")
|
|
132
|
+
raw_pub.publish(b"raw sensor data")
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Pattern 2: Node-based (ROS-like)
|
|
136
|
+
|
|
137
|
+
```python
|
|
138
|
+
from dexcomm import Node
|
|
139
|
+
from dexcomm.codecs import PickleDataCodec
|
|
140
|
+
|
|
141
|
+
class RobotController:
|
|
142
|
+
def __init__(self):
|
|
143
|
+
# Create node with namespace
|
|
144
|
+
self.node = Node("controller", namespace="robot1")
|
|
145
|
+
|
|
146
|
+
# Publishers and subscribers are namespaced
|
|
147
|
+
self.cmd_pub = self.node.create_publisher("cmd_vel", encoder=PickleDataCodec.encode)
|
|
148
|
+
self.odom_sub = self.node.create_subscriber("odometry",
|
|
149
|
+
self.on_odometry,
|
|
150
|
+
decoder=PickleDataCodec.decode)
|
|
151
|
+
|
|
152
|
+
# Services
|
|
153
|
+
self.node.create_service("reset", self.handle_reset,
|
|
154
|
+
request_decoder=PickleDataCodec.decode,
|
|
155
|
+
response_encoder=PickleDataCodec.encode)
|
|
156
|
+
|
|
157
|
+
def on_odometry(self, msg):
|
|
158
|
+
# Process odometry and publish commands
|
|
159
|
+
self.cmd_pub.publish({"linear": 0.5, "angular": 0.0})
|
|
160
|
+
|
|
161
|
+
def handle_reset(self, request):
|
|
162
|
+
# Reset robot state
|
|
163
|
+
return {"success": True}
|
|
164
|
+
|
|
165
|
+
def run(self):
|
|
166
|
+
self.node.spin() # Process callbacks
|
|
167
|
+
|
|
168
|
+
# Usage
|
|
169
|
+
controller = RobotController()
|
|
170
|
+
controller.run()
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Pattern 3: Manager Pattern (Dynamic Topics)
|
|
174
|
+
|
|
175
|
+
```python
|
|
176
|
+
from dexcomm import SubscriberManager
|
|
177
|
+
from dexcomm.codecs import PickleDataCodec
|
|
178
|
+
|
|
179
|
+
class DataLogger:
|
|
180
|
+
def __init__(self):
|
|
181
|
+
self.subscribers = SubscriberManager()
|
|
182
|
+
self.recording = {}
|
|
183
|
+
|
|
184
|
+
def start_recording(self, topics):
|
|
185
|
+
"""Dynamically subscribe to topics"""
|
|
186
|
+
for topic in topics:
|
|
187
|
+
self.subscribers.add(
|
|
188
|
+
topic,
|
|
189
|
+
callback=lambda msg, t=topic: self.record(t, msg),
|
|
190
|
+
decoder=PickleDataCodec.decode,
|
|
191
|
+
buffer_size=100
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
def record(self, topic, msg):
|
|
195
|
+
if topic not in self.recording:
|
|
196
|
+
self.recording[topic] = []
|
|
197
|
+
self.recording[topic].append(msg)
|
|
198
|
+
|
|
199
|
+
def stop_recording(self, topic):
|
|
200
|
+
"""Dynamically unsubscribe"""
|
|
201
|
+
self.subscribers.remove(topic)
|
|
202
|
+
|
|
203
|
+
def get_stats(self):
|
|
204
|
+
"""Get statistics for all subscribers"""
|
|
205
|
+
return self.subscribers.get_stats()
|
|
206
|
+
|
|
207
|
+
# Usage
|
|
208
|
+
logger = DataLogger()
|
|
209
|
+
logger.start_recording(["sensors/lidar", "sensors/camera", "robot/pose"])
|
|
210
|
+
# Topics can be added/removed at runtime
|
|
211
|
+
logger.start_recording(["sensors/imu"])
|
|
212
|
+
logger.stop_recording("sensors/camera")
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## Configuration
|
|
216
|
+
|
|
217
|
+
### Network Configuration
|
|
218
|
+
|
|
219
|
+
```python
|
|
220
|
+
from dexcomm import Publisher, ZenohConfig
|
|
221
|
+
|
|
222
|
+
# Peer mode (default) - automatic peer discovery
|
|
223
|
+
config = ZenohConfig.default_peer()
|
|
224
|
+
|
|
225
|
+
# Client mode - connect to router
|
|
226
|
+
config = ZenohConfig.default_client("tcp/localhost:7447")
|
|
227
|
+
|
|
228
|
+
# Use config with any component
|
|
229
|
+
pub = Publisher("my/topic", config=config)
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Quality of Service
|
|
233
|
+
|
|
234
|
+
Configure reliability, congestion control, and priority:
|
|
235
|
+
|
|
236
|
+
```python
|
|
237
|
+
from dexcomm import Publisher
|
|
238
|
+
|
|
239
|
+
# Critical: guaranteed delivery, highest priority
|
|
240
|
+
pub = Publisher("robot/emergency_stop", encoder=PickleDataCodec.encode,
|
|
241
|
+
qos={"reliability": "reliable", "congestion_control": "block", "priority": "real_time"})
|
|
242
|
+
|
|
243
|
+
# Sensors: fast delivery, drop old data
|
|
244
|
+
pub = Publisher("sensors/lidar", encoder=PickleDataCodec.encode,
|
|
245
|
+
qos={"reliability": "best_effort", "congestion_control": "drop", "priority": "data_high"})
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**Parameters:** `reliability` (best_effort/reliable), `congestion_control` (drop/block), `priority` (background → real_time)
|
|
249
|
+
|
|
250
|
+
### Rate Limiting
|
|
251
|
+
|
|
252
|
+
```python
|
|
253
|
+
from dexcomm.utils import RateLimiter
|
|
254
|
+
from dexcomm import RateLimitedPublisher
|
|
255
|
+
|
|
256
|
+
# High-precision rate limiter
|
|
257
|
+
limiter = RateLimiter(rate_hz=30.0) # 30 Hz
|
|
258
|
+
for data in sensor_stream:
|
|
259
|
+
limiter.sleep() # Maintain 30 Hz
|
|
260
|
+
process(data)
|
|
261
|
+
|
|
262
|
+
# Adaptive mode - automatically compensates for processing time
|
|
263
|
+
limiter = RateLimiter(rate_hz=30.0, adaptive=True)
|
|
264
|
+
for data in sensor_stream:
|
|
265
|
+
limiter.sleep() # Automatically learns and adjusts
|
|
266
|
+
result = heavy_processing(data) # Variable 10-50ms
|
|
267
|
+
|
|
268
|
+
# Rate-limited publisher - built-in rate limiting
|
|
269
|
+
pub = RateLimitedPublisher("sensor/data", rate=20.0)
|
|
270
|
+
for data in stream:
|
|
271
|
+
pub.publish(data) # Automatically rate-limited to 20 Hz
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## Services
|
|
275
|
+
|
|
276
|
+
```python
|
|
277
|
+
from dexcomm import Service, ServiceClient
|
|
278
|
+
from dexcomm.codecs import PickleDataCodec
|
|
279
|
+
|
|
280
|
+
# Create service with AutoData encoding/decoding
|
|
281
|
+
service = Service("math/add",
|
|
282
|
+
lambda req: {"sum": req["a"] + req["b"]},
|
|
283
|
+
request_decoder=PickleDataCodec.decode,
|
|
284
|
+
response_encoder=PickleDataCodec.encode)
|
|
285
|
+
|
|
286
|
+
# Call service
|
|
287
|
+
client = ServiceClient("math/add",
|
|
288
|
+
request_encoder=PickleDataCodec.encode,
|
|
289
|
+
response_decoder=PickleDataCodec.decode)
|
|
290
|
+
result = client.call({"a": 5, "b": 3})
|
|
291
|
+
print(result) # {"sum": 8}
|
|
292
|
+
|
|
293
|
+
# For raw bytes (default), no encoder/decoder needed
|
|
294
|
+
raw_service = Service("echo", lambda req: req)
|
|
295
|
+
raw_client = ServiceClient("echo")
|
|
296
|
+
result = raw_client.call(b"hello")
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### Using Configuration Files
|
|
300
|
+
|
|
301
|
+
DexComm can load network configuration from JSON files via environment variables:
|
|
302
|
+
|
|
303
|
+
```bash
|
|
304
|
+
# using ZENOH_CONFIG (fallback)
|
|
305
|
+
export ZENOH_CONFIG=/path/to/config.json
|
|
306
|
+
python your_script.py
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
## License
|
|
310
|
+
|
|
311
|
+
This project is licensed under a Proprietary Software License - see the `LICENSE` file for details.
|
|
312
|
+
|
|
313
|
+
Copyright (c) 2025 Dexmate. All rights reserved.
|
|
314
|
+
|
|
315
|
+
For licensing inquiries, please contact: contact@dexmate.ai
|
|
316
|
+
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
dexcomm/__init__.py,sha256=XoEX6xDz415YwftoiGVdF4yaN5ClHR34usrdcdVmiuc,97
|
|
2
|
+
dexcomm/_core.cpython-310-x86_64-linux-gnu.so,sha256=qEUYTVy55KBtoPba7ss14QFj7jp-Rv1podXRwLfBLbY,11704736
|
|
3
|
+
dexcomm/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
dexcomm-0.4.0.dist-info/METADATA,sha256=4CRySxaQg-awFj_e-I9g-syrjhP0ilnvMCQ_av1_kVQ,10230
|
|
5
|
+
dexcomm-0.4.0.dist-info/WHEEL,sha256=wWeP6JRxAL_oJlqLsckA512CC09LPG7OAdt_mycafo4,109
|
|
6
|
+
dexcomm-0.4.0.dist-info/licenses/LICENSE,sha256=L3u-nH8UAJf5kHGTPZjYeXYX63HwVSBD3e-FYqxE3A8,21307
|
|
7
|
+
dexcomm-0.4.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
PROPRIETARY SOFTWARE LICENSE AGREEMENT
|
|
2
|
+
Copyright (c) 2025 Dexmate. All rights reserved.
|
|
3
|
+
This Proprietary Software License Agreement ("Agreement") is entered into as of the date of your acceptance ("Effective Date") by and between Dexmate, a Delaware corporation with its principal place of business at [Address] ("Company," "we," "us," or "our"), and the individual or entity accepting this Agreement ("Licensee," "you," or "your").
|
|
4
|
+
This software and associated documentation files (the "Software") are proprietary and confidential to Company.
|
|
5
|
+
BY INSTALLING, COPYING, OR OTHERWISE USING THE SOFTWARE, YOU AGREE TO BE BOUND BY THE TERMS OF THIS AGREEMENT. IF YOU DO NOT AGREE TO THESE TERMS, DO NOT USE THE SOFTWARE.
|
|
6
|
+
|
|
7
|
+
1. DEFINITIONS
|
|
8
|
+
1.1 "Documentation" means the user manuals, technical documentation, and other materials provided by Company relating to the Software.
|
|
9
|
+
1.2 "Authorized Users" means your employees, contractors, and agents who have a legitimate need to access the Software for the Permitted Use and who are bound by confidentiality obligations no less restrictive than those in this Agreement.
|
|
10
|
+
1.3 "Permitted Use" means use of the Software solely for your internal business purposes in connection with robotic systems and automation workflows, subject to the restrictions set forth herein.
|
|
11
|
+
|
|
12
|
+
2. GRANT OF LICENSE
|
|
13
|
+
2.1 License Grant. Subject to your compliance with the terms and conditions of this Agreement and payment of applicable fees, Company grants you a limited, non-exclusive, non-transferable, non-sublicensable, revocable license during the Term to:
|
|
14
|
+
a) Install and use the Software solely for the Permitted Use;
|
|
15
|
+
b) Use the Documentation in support of your authorized use of the Software.
|
|
16
|
+
2.2 License Limitations. The license granted is subject to the following limitations unless otherwise specified in a separate written agreement:
|
|
17
|
+
a) Users: Limited to the number of Authorized Users specified in your Order Form or account registration;
|
|
18
|
+
b) Deployment: Limited to the number of robotic systems, devices, or installations specified in your Order Form;
|
|
19
|
+
c) Territory: Worldwide, subject to compliance with applicable export laws;
|
|
20
|
+
d) Environment: Production, development, and testing environments as specified in your Order Form.
|
|
21
|
+
|
|
22
|
+
3. RESTRICTIONS
|
|
23
|
+
3.1 Prohibited Actions. You may NOT:
|
|
24
|
+
a) Copy, modify, adapt, translate, or create derivative works of the Software, except as expressly permitted in Section 2.1;
|
|
25
|
+
b) Reverse engineer, decompile, disassemble, or otherwise attempt to derive the source code of the Software, except to the extent such restriction is expressly prohibited by applicable law;
|
|
26
|
+
c) Distribute, sublicense, rent, lease, lend, sell, or otherwise transfer the Software or any rights therein to any third party;
|
|
27
|
+
d) Remove, alter, or obscure any proprietary notices (including copyright and trademark notices) on or in the Software or Documentation;
|
|
28
|
+
e) Use the Software for any purpose other than the Permitted Use or in any manner that violates applicable laws or regulations;
|
|
29
|
+
f) Share access credentials or allow unauthorized access to the Software;
|
|
30
|
+
g) Use the Software to develop a competing product or service;
|
|
31
|
+
h) Publicly disseminate performance information or analysis of the Software (including benchmarking results) without prior written consent from Company;
|
|
32
|
+
i) Use the Software to process, store, or transmit any data in violation of applicable law or that infringes third-party rights;
|
|
33
|
+
j) Attempt to circumvent any license keys, usage limitations, or other security measures in the Software.
|
|
34
|
+
3.2 Third-Party Components. The Software may include third-party open source components subject to separate license terms, as identified in the Documentation. You agree to comply with all such third-party license terms.
|
|
35
|
+
|
|
36
|
+
4. OWNERSHIP AND INTELLECTUAL PROPERTY
|
|
37
|
+
4.1 Company Ownership. The Software is licensed, not sold. Company and its licensors retain all right, title, and interest in and to the Software and Documentation, including all intellectual property rights therein. This Agreement does not grant you any rights to Company's trademarks, service marks, trade names, or logos.
|
|
38
|
+
4.2 Licensee Data. As between the parties, you retain all right, title, and interest in and to any data, content, or materials that you submit to or process through the Software ("Licensee Data"). You grant Company a limited license to use Licensee Data solely to provide the Software and services to you.
|
|
39
|
+
4.3 Feedback. If you provide Company with any suggestions, enhancement requests, recommendations, or other feedback regarding the Software ("Feedback"), Company shall have the right to use such Feedback without restriction or compensation to you. You hereby assign all right, title, and interest in such Feedback to Company.
|
|
40
|
+
4.4 Usage Data. Company may collect and use technical data and related information—including but not limited to technical information about your devices, system and application software, and peripherals—for purposes of improving Company's products and services. Company will not disclose such information in a form that personally identifies you.
|
|
41
|
+
|
|
42
|
+
5. FEES AND PAYMENT
|
|
43
|
+
5.1 Fees. You agree to pay all fees specified in your Order Form or as otherwise agreed in writing. All fees are non-refundable except as expressly provided in this Agreement.
|
|
44
|
+
5.2 Payment Terms. Unless otherwise specified, fees are due within thirty (30) days of invoice date. Late payments will accrue interest at the rate of 1.5% per month or the maximum rate permitted by law, whichever is less.
|
|
45
|
+
5.3 Taxes. All fees are exclusive of taxes, duties, and similar governmental charges. You are responsible for all such taxes except those based on Company's net income.
|
|
46
|
+
|
|
47
|
+
6. TERM AND TERMINATION
|
|
48
|
+
6.1 Term. This Agreement commences on the Effective Date and continues for the period specified in your Order Form (the "Initial Term"). Unless either party provides written notice of non-renewal at least thirty (30) days prior to the end of the then-current term, this Agreement will automatically renew for successive renewal periods equal to the Initial Term (each a "Renewal Term," and together with the Initial Term, the "Term").
|
|
49
|
+
6.2 Termination for Convenience. Either party may terminate this Agreement for convenience upon sixty (60) days' prior written notice to the other party.
|
|
50
|
+
6.3 Termination for Cause. Either party may terminate this Agreement immediately upon written notice if:
|
|
51
|
+
a) The other party materially breaches this Agreement and fails to cure such breach within thirty (30) days after receiving written notice thereof; or
|
|
52
|
+
b) The other party becomes insolvent, makes an assignment for the benefit of creditors, or has a petition in bankruptcy filed by or against it.
|
|
53
|
+
6.4 Effect of Termination. Upon termination or expiration of this Agreement:
|
|
54
|
+
a) All licenses granted hereunder immediately terminate;
|
|
55
|
+
b) You must immediately cease all use of the Software and Documentation;
|
|
56
|
+
c) You must destroy or return to Company all copies of the Software and Documentation in your possession or control and certify such destruction or return in writing;
|
|
57
|
+
d) Company will, upon your written request made within thirty (30) days after termination, make Licensee Data available to you for export for a period of thirty (30) days, after which Company may delete such data;
|
|
58
|
+
e) If you terminate for Company's uncured material breach, Company will refund any prepaid fees for the unused portion of the Term;
|
|
59
|
+
f) All provisions that by their nature should survive termination shall survive, including Sections 3, 4, 5, 8, 9, 10, 11, and 12.
|
|
60
|
+
|
|
61
|
+
7. CONFIDENTIALITY
|
|
62
|
+
7.1 Confidential Information. "Confidential Information" means the Software, Documentation, and any other non-public technical, business, or financial information disclosed by one party ("Disclosing Party") to the other party ("Receiving Party"), whether disclosed orally, in writing, or by inspection of tangible objects, that is designated as "Confidential" or that reasonably should be understood to be confidential given the nature of the information and circumstances of disclosure.
|
|
63
|
+
7.2 Obligations. The Receiving Party shall:
|
|
64
|
+
a) Protect the Confidential Information using at least the same degree of care it uses to protect its own confidential information, but no less than reasonable care;
|
|
65
|
+
b) Not disclose Confidential Information to any third party except to Authorized Users who have a need to know and who are bound by confidentiality obligations no less restrictive than those herein;
|
|
66
|
+
c) Not use Confidential Information except as necessary to exercise its rights or perform its obligations under this Agreement.
|
|
67
|
+
7.3 Exceptions. Confidential Information does not include information that:
|
|
68
|
+
a) Is or becomes publicly available through no breach of this Agreement;
|
|
69
|
+
b) Was rightfully known to the Receiving Party without confidentiality restrictions prior to disclosure;
|
|
70
|
+
c) Is rightfully received by the Receiving Party from a third party without confidentiality restrictions;
|
|
71
|
+
d) Is independently developed by the Receiving Party without use of or reference to the Confidential Information; or
|
|
72
|
+
e) Is required to be disclosed by law or court order, provided the Receiving Party gives the Disclosing Party prompt notice and reasonable assistance in contesting such disclosure.
|
|
73
|
+
|
|
74
|
+
8. WARRANTIES AND DISCLAIMERS
|
|
75
|
+
8.1 Limited Warranties. Company warrants that:
|
|
76
|
+
a) The Software will, for a period of ninety (90) days from initial delivery ("Warranty Period"), substantially conform to the functionality described in the Documentation when used in accordance with the Documentation;
|
|
77
|
+
b) Company has the right to license the Software as provided in this Agreement;
|
|
78
|
+
c) To Company's knowledge, the Software does not contain any malicious code, viruses, or other harmful components intentionally introduced by Company.
|
|
79
|
+
8.2 Exclusive Remedy. For any breach of the warranty in Section 8.1(a) during the Warranty Period, your exclusive remedy and Company's entire liability shall be, at Company's option: (i) repair or replacement of the non-conforming Software; or (ii) if Company determines that repair or replacement is not commercially reasonable, termination of this Agreement and refund of fees paid for the non-conforming Software in the twelve (12) months preceding the warranty claim.
|
|
80
|
+
8.3 Disclaimer. EXCEPT FOR THE EXPRESS WARRANTIES IN SECTION 8.1, THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, COMPANY AND ITS LICENSORS DISCLAIM ALL OTHER WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, AND WARRANTIES ARISING FROM COURSE OF DEALING OR USAGE OF TRADE. COMPANY DOES NOT WARRANT THAT THE SOFTWARE WILL BE ERROR-FREE, UNINTERRUPTED, OR FREE FROM VULNERABILITIES OR SECURITY ISSUES, OR THAT IT WILL MEET YOUR REQUIREMENTS.
|
|
81
|
+
|
|
82
|
+
9. INDEMNIFICATION
|
|
83
|
+
9.1 Company Indemnification. Company shall defend, indemnify, and hold you harmless from and against any third-party claims, damages, liabilities, costs, and expenses (including reasonable attorneys' fees) arising out of or related to any claim that the Software, when used as authorized under this Agreement, infringes or misappropriates any third party's intellectual property rights, provided that you:
|
|
84
|
+
a) Promptly notify Company in writing of such claim;
|
|
85
|
+
b) Grant Company sole control of the defense and settlement of the claim; and
|
|
86
|
+
c) Provide reasonable cooperation in the defense at Company's expense.
|
|
87
|
+
Company shall have no obligation under this Section 9.1 to the extent a claim arises from: (i) your modification of the Software; (ii) your combination of the Software with products, services, or data not provided by Company; (iii) your use of the Software in violation of this Agreement; or (iv) your continued use of the Software after being notified of allegedly infringing activity.
|
|
88
|
+
If the Software becomes, or in Company's opinion is likely to become, the subject of an infringement claim, Company may, at its option and expense: (i) procure the right for you to continue using the Software; (ii) replace or modify the Software to make it non-infringing; or (iii) if options (i) and (ii) are not commercially reasonable, terminate this Agreement and refund any prepaid fees for the unused portion of the Term.
|
|
89
|
+
9.2 Licensee Indemnification. You shall defend, indemnify, and hold Company harmless from and against any third-party claims, damages, liabilities, costs, and expenses (including reasonable attorneys' fees) arising out of or related to:
|
|
90
|
+
a) Your breach of this Agreement;
|
|
91
|
+
b) Your unauthorized use, misuse, or alteration of the Software;
|
|
92
|
+
c) Your violation of applicable laws or regulations in connection with your use of the Software;
|
|
93
|
+
d) Any claim that Licensee Data infringes or misappropriates any third party's intellectual property rights or violates applicable privacy or data protection laws;
|
|
94
|
+
e) Your negligence or willful misconduct; or
|
|
95
|
+
f) Your use of the Software in combination with products, services, or data not provided or authorized by Company;
|
|
96
|
+
provided that Company: (i) promptly notifies you in writing of such claim; (ii) grants you sole control of the defense and settlement of the claim; and (iii) provides reasonable cooperation in the defense at your expense.
|
|
97
|
+
9.3 Exclusive Remedy. This Section 9 states each party's entire liability and exclusive remedy for intellectual property infringement claims covered by this Agreement.
|
|
98
|
+
|
|
99
|
+
10. LIMITATION OF LIABILITY
|
|
100
|
+
10.1 Exclusion of Damages. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL COMPANY, ITS AFFILIATES, OR ITS LICENSORS BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES, OR ANY LOSS OF PROFITS, REVENUE, DATA, USE, GOODWILL, OR OTHER INTANGIBLE LOSSES, WHETHER BASED ON CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY, OR OTHERWISE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, RESULTING FROM:
|
|
101
|
+
a) Your use or inability to use the Software or Documentation;
|
|
102
|
+
b) Any unauthorized access to, use of, or alteration of the Software or your data;
|
|
103
|
+
c) Any bugs, viruses, trojan horses, or other harmful components transmitted through or in connection with the Software;
|
|
104
|
+
d) The cost of procurement of substitute goods or services;
|
|
105
|
+
e) Any interruption or cessation of transmission to or from the Software;
|
|
106
|
+
f) Any matter relating to the Software or this Agreement.
|
|
107
|
+
10.2 Liability Cap. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, COMPANY'S TOTAL AGGREGATE LIABILITY ARISING OUT OF OR RELATED TO THIS AGREEMENT, WHETHER IN CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, SHALL NOT EXCEED THE GREATER OF: (i) THE TOTAL FEES PAID BY YOU TO COMPANY FOR THE SOFTWARE DURING THE TWELVE (12) MONTHS IMMEDIATELY PRECEDING THE EVENT GIVING RISE TO LIABILITY; OR (ii) FIVE HUNDRED DOLLARS ($500).
|
|
108
|
+
10.3 Exceptions. The limitations in Sections 10.1 and 10.2 shall not apply to:
|
|
109
|
+
a) Either party's indemnification obligations under Section 9;
|
|
110
|
+
b) Your breach of Section 3 (Restrictions) or Section 7 (Confidentiality);
|
|
111
|
+
c) Your payment obligations;
|
|
112
|
+
d) Liability arising from gross negligence, willful misconduct, or fraud; or
|
|
113
|
+
e) Liability that cannot be excluded or limited under applicable law.
|
|
114
|
+
10.4 Essential Purpose. You acknowledge that the fees paid reflect the allocation of risk set forth in this Agreement and that Company would not enter into this Agreement without these limitations on liability.
|
|
115
|
+
|
|
116
|
+
11. AUDIT RIGHTS
|
|
117
|
+
Company may, upon thirty (30) days' prior written notice and no more than once per calendar year, audit your use of the Software to verify compliance with this Agreement. Such audits will be conducted during regular business hours and in a manner that does not unreasonably interfere with your business operations. You agree to provide reasonable cooperation and access to relevant records. If an audit reveals underpayment of fees or unauthorized use, you shall promptly pay any shortfall plus interest. If the underpayment or unauthorized use exceeds five percent (5%) of the fees owed, you shall also reimburse Company's reasonable audit costs.
|
|
118
|
+
|
|
119
|
+
12. GENERAL PROVISIONS
|
|
120
|
+
12.1 Governing Law and Venue. This Agreement shall be governed by and construed in accordance with the laws of the State of California, without regard to its conflict of laws principles. The parties expressly exclude the application of the United Nations Convention on Contracts for the International Sale of Goods. Any legal action or proceeding arising out of or related to this Agreement shall be brought exclusively in the state or federal courts located in Santa Clara County, California, and each party irrevocably consents to such jurisdiction and venue.
|
|
121
|
+
12.2 Export Compliance. The Software and related technical data may be subject to U.S. and international export control laws and regulations, including the Export Administration Regulations (EAR) and sanctions programs administered by the Office of Foreign Assets Control (OFAC). You agree to comply with all applicable export and import laws and regulations and shall not export, re-export, or transfer the Software, directly or indirectly, to any prohibited country, entity, or person, or for any prohibited end-use, without required government authorization.
|
|
122
|
+
12.3 Government End Users. If you are a U.S. Government end user, the Software and Documentation qualify as "commercial computer software" and "commercial computer software documentation," respectively, under FAR 12.212 or DFARS 227.7202, as applicable. Use, reproduction, and disclosure are subject to the terms of this Agreement.
|
|
123
|
+
12.4 Assignment. You may not assign, transfer, or delegate this Agreement or any rights or obligations hereunder, whether by operation of law or otherwise, without Company's prior written consent. Any attempted assignment in violation of this Section shall be void. Company may assign this Agreement without consent in connection with a merger, acquisition, corporate reorganization, or sale of all or substantially all of its assets. Subject to the foregoing, this Agreement shall bind and inure to the benefit of the parties and their respective successors and permitted assigns.
|
|
124
|
+
12.5 Force Majeure. Neither party shall be liable for any failure or delay in performance (except for payment obligations) due to causes beyond its reasonable control, including acts of God, war, terrorism, labor disputes, natural disasters, internet or telecommunications failures, or government actions.
|
|
125
|
+
12.6 Notices. All notices required or permitted under this Agreement shall be in writing and sent to the addresses specified in the Order Form or, in the absence of an Order Form, to the contact information provided during registration. Notices shall be deemed given: (a) upon delivery if delivered personally or by confirmed email; (b) one business day after deposit with an overnight courier service; or (c) three business days after mailing by certified or registered mail.
|
|
126
|
+
12.7 Entire Agreement. This Agreement, together with any Order Form and exhibits referenced herein, constitutes the entire agreement between the parties concerning the subject matter hereof and supersedes all prior or contemporaneous agreements, whether written or oral, relating to such subject matter. Any terms in your purchase order or similar documents shall be null and void.
|
|
127
|
+
12.8 Amendments. Company may modify this Agreement by posting a revised version on its website or by providing notice to you. If you continue to use the Software after the effective date of the revised Agreement, you accept the modifications. For material changes that adversely affect your rights, you may terminate this Agreement within thirty (30) days of receiving notice of the change.
|
|
128
|
+
12.9 Waiver. No waiver of any provision of this Agreement shall be effective unless in writing and signed by the waiving party. No failure or delay in exercising any right or remedy shall constitute a waiver of such right or remedy.
|
|
129
|
+
12.10 Severability. If any provision of this Agreement is held to be invalid, illegal, or unenforceable, the remaining provisions shall continue in full force and effect, and such provision shall be reformed only to the extent necessary to make it enforceable.
|
|
130
|
+
12.11 Relationship of Parties. The parties are independent contractors. This Agreement does not create any partnership, joint venture, employment, or agency relationship between the parties.
|
|
131
|
+
12.12 Attorneys' Fees. In any action or proceeding to enforce or interpret this Agreement, the prevailing party shall be entitled to recover its reasonable attorneys' fees and costs from the other party.
|
|
132
|
+
12.13 Counterparts. This Agreement may be executed in counterparts, each of which shall be deemed an original and all of which together shall constitute one and the same instrument. Electronic signatures shall have the same force and effect as original signatures.
|
|
133
|
+
|
|
134
|
+
13. CONTACT INFORMATION
|
|
135
|
+
|
|
136
|
+
For questions about this Agreement, licensing inquiries, or permissions, please contact:
|
|
137
|
+
Dexmate
|
|
138
|
+
Email: contact@dexmate.ai
|
|
139
|
+
Website: https://dexmate.ai
|
|
140
|
+
|
|
141
|
+
UNAUTHORIZED USE, REPRODUCTION, OR DISTRIBUTION OF THIS SOFTWARE, OR ANY PORTION OF IT, MAY RESULT IN SEVERE CIVIL AND CRIMINAL PENALTIES, AND WILL BE PROSECUTED TO THE MAXIMUM EXTENT POSSIBLE UNDER THE LAW.
|