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 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)
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,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: maturin (1.11.5)
3
+ Root-Is-Purelib: false
4
+ Tag: cp310-cp310-manylinux_2_34_x86_64
@@ -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.