opengradient 0.3.25__tar.gz → 0.3.28__tar.gz
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.
- {opengradient-0.3.25/src/opengradient.egg-info → opengradient-0.3.28}/PKG-INFO +5 -92
- opengradient-0.3.28/pyproject.toml +67 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/cli.py +0 -8
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/client.py +36 -22
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/types.py +2 -3
- {opengradient-0.3.25 → opengradient-0.3.28/src/opengradient.egg-info}/PKG-INFO +5 -92
- opengradient-0.3.28/src/opengradient.egg-info/requires.txt +10 -0
- opengradient-0.3.25/pyproject.toml +0 -154
- opengradient-0.3.25/src/opengradient.egg-info/requires.txt +0 -97
- {opengradient-0.3.25 → opengradient-0.3.28}/LICENSE +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/MANIFEST.in +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/README.md +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/setup.cfg +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/__init__.py +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/abi/ModelExecutorHistorical.abi +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/abi/inference.abi +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/account.py +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/contracts/templates/ModelExecutorHistorical.bin +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/defaults.py +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/exceptions.py +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/llm/__init__.py +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/llm/og_langchain.py +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/llm/og_openai.py +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/mltools/__init__.py +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/mltools/model_tool.py +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/proto/__init__.py +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/proto/infer.proto +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/proto/infer_pb2.py +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/proto/infer_pb2_grpc.py +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/utils.py +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient.egg-info/SOURCES.txt +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient.egg-info/dependency_links.txt +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient.egg-info/entry_points.txt +0 -0
- {opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: opengradient
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.28
|
|
4
4
|
Summary: Python SDK for OpenGradient decentralized model management & inference services
|
|
5
5
|
Author-email: OpenGradient <oliver@opengradient.ai>
|
|
6
6
|
License: MIT License
|
|
@@ -35,103 +35,16 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
35
35
|
Requires-Python: >=3.10
|
|
36
36
|
Description-Content-Type: text/markdown
|
|
37
37
|
License-File: LICENSE
|
|
38
|
-
Requires-Dist: aiohappyeyeballs>=2.4.3
|
|
39
|
-
Requires-Dist: aiohttp>=3.10.8
|
|
40
|
-
Requires-Dist: aiosignal>=1.3.1
|
|
41
|
-
Requires-Dist: annotated-types>=0.7.0
|
|
42
|
-
Requires-Dist: attrs>=24.2.0
|
|
43
|
-
Requires-Dist: bitarray>=2.9.2
|
|
44
|
-
Requires-Dist: CacheControl>=0.14.0
|
|
45
|
-
Requires-Dist: cachetools>=5.5.0
|
|
46
|
-
Requires-Dist: certifi>=2024.8.30
|
|
47
|
-
Requires-Dist: cffi>=1.17.1
|
|
48
|
-
Requires-Dist: charset-normalizer>=3.3.2
|
|
49
|
-
Requires-Dist: ckzg>=2.0.1
|
|
50
|
-
Requires-Dist: cleo>=2.1.0
|
|
51
|
-
Requires-Dist: click>=8.1.7
|
|
52
|
-
Requires-Dist: cramjam>=2.8.4
|
|
53
|
-
Requires-Dist: crashtest>=0.4.1
|
|
54
|
-
Requires-Dist: cryptography>=43.0.1
|
|
55
|
-
Requires-Dist: cytoolz>=0.12.3
|
|
56
|
-
Requires-Dist: distlib>=0.3.8
|
|
57
|
-
Requires-Dist: dulwich>=0.21.7
|
|
58
38
|
Requires-Dist: eth-account>=0.13.4
|
|
59
|
-
Requires-Dist:
|
|
60
|
-
Requires-Dist:
|
|
61
|
-
Requires-Dist: eth-keys>=0.5.1
|
|
62
|
-
Requires-Dist: eth-rlp>=2.1.0
|
|
63
|
-
Requires-Dist: eth-typing>=5.0.0
|
|
64
|
-
Requires-Dist: eth-utils>=5.0.0
|
|
65
|
-
Requires-Dist: eth_abi>=5.1.0
|
|
66
|
-
Requires-Dist: fastjsonschema>=2.20.0
|
|
67
|
-
Requires-Dist: fastparquet>=2024.5.0
|
|
68
|
-
Requires-Dist: filelock>=3.16.1
|
|
39
|
+
Requires-Dist: web3>=7.3.0
|
|
40
|
+
Requires-Dist: click>=8.1.7
|
|
69
41
|
Requires-Dist: firebase-rest-api>=1.11.0
|
|
70
|
-
Requires-Dist: frozenlist>=1.4.1
|
|
71
|
-
Requires-Dist: fsspec>=2024.9.0
|
|
72
|
-
Requires-Dist: google-api-core>=2.20.0
|
|
73
|
-
Requires-Dist: google-auth>=2.35.0
|
|
74
|
-
Requires-Dist: google-cloud-core>=2.4.1
|
|
75
|
-
Requires-Dist: google-cloud-firestore>=2.19.0
|
|
76
|
-
Requires-Dist: google-cloud-storage>=2.18.2
|
|
77
|
-
Requires-Dist: google-crc32c>=1.6.0
|
|
78
|
-
Requires-Dist: google-resumable-media>=2.7.2
|
|
79
|
-
Requires-Dist: googleapis-common-protos>=1.65.0
|
|
80
42
|
Requires-Dist: grpcio>=1.66.2
|
|
81
|
-
Requires-Dist:
|
|
82
|
-
Requires-Dist:
|
|
83
|
-
Requires-Dist: hexbytes>=1.2.1
|
|
84
|
-
Requires-Dist: idna>=3.10
|
|
85
|
-
Requires-Dist: jaraco.classes>=3.4.0
|
|
86
|
-
Requires-Dist: jwcrypto>=1.5.6
|
|
87
|
-
Requires-Dist: keyring>=24.3.1
|
|
43
|
+
Requires-Dist: numpy>=1.26.4
|
|
44
|
+
Requires-Dist: requests>=2.32.3
|
|
88
45
|
Requires-Dist: langchain>=0.3.7
|
|
89
|
-
Requires-Dist: more-itertools>=10.5.0
|
|
90
|
-
Requires-Dist: msgpack>=1.1.0
|
|
91
|
-
Requires-Dist: multidict>=6.1.0
|
|
92
46
|
Requires-Dist: openai>=1.58.1
|
|
93
|
-
Requires-Dist: packaging>=24.1
|
|
94
|
-
Requires-Dist: pandas>=2.2.3
|
|
95
|
-
Requires-Dist: parsimonious>=0.10.0
|
|
96
|
-
Requires-Dist: pathlib>=1.0.1
|
|
97
|
-
Requires-Dist: pexpect>=4.9.0
|
|
98
|
-
Requires-Dist: pkce>=1.0.3
|
|
99
|
-
Requires-Dist: pkginfo>=1.11.1
|
|
100
|
-
Requires-Dist: platformdirs>=4.3.6
|
|
101
|
-
Requires-Dist: proto-plus>=1.24.0
|
|
102
|
-
Requires-Dist: protobuf>=5.28.2
|
|
103
|
-
Requires-Dist: ptyprocess>=0.7.0
|
|
104
|
-
Requires-Dist: pyarrow>=17.0.0
|
|
105
|
-
Requires-Dist: pyasn1>=0.6.1
|
|
106
|
-
Requires-Dist: pyasn1_modules>=0.4.1
|
|
107
|
-
Requires-Dist: pycparser>=2.22
|
|
108
|
-
Requires-Dist: pycryptodome>=3.21.0
|
|
109
47
|
Requires-Dist: pydantic>=2.9.2
|
|
110
|
-
Requires-Dist: pydantic_core>=2.23.4
|
|
111
|
-
Requires-Dist: pyproject_hooks>=1.2.0
|
|
112
|
-
Requires-Dist: python-dateutil>=2.9.0.post0
|
|
113
|
-
Requires-Dist: python-jwt>=4.1.0
|
|
114
|
-
Requires-Dist: pytz>=2024.2
|
|
115
|
-
Requires-Dist: pyunormalize>=16.0.0
|
|
116
|
-
Requires-Dist: RapidFuzz>=3.10.0
|
|
117
|
-
Requires-Dist: regex>=2024.9.11
|
|
118
|
-
Requires-Dist: requests>=2.32.3
|
|
119
|
-
Requires-Dist: requests-toolbelt>=1.0.0
|
|
120
|
-
Requires-Dist: rlp>=4.0.1
|
|
121
|
-
Requires-Dist: rsa>=4.9
|
|
122
|
-
Requires-Dist: shellingham>=1.5.4
|
|
123
|
-
Requires-Dist: six>=1.16.0
|
|
124
|
-
Requires-Dist: tomlkit>=0.13.2
|
|
125
|
-
Requires-Dist: toolz>=0.12.1
|
|
126
|
-
Requires-Dist: trove-classifiers>=2024.9.12
|
|
127
|
-
Requires-Dist: types-requests>=2.32.0.20240914
|
|
128
|
-
Requires-Dist: typing_extensions>=4.12.2
|
|
129
|
-
Requires-Dist: tzdata>=2024.2
|
|
130
|
-
Requires-Dist: urllib3>=2.2.3
|
|
131
|
-
Requires-Dist: web3>=7.3.0
|
|
132
|
-
Requires-Dist: websockets>=13.1
|
|
133
|
-
Requires-Dist: xattr>=1.1.0
|
|
134
|
-
Requires-Dist: yarl>=1.13.1
|
|
135
48
|
|
|
136
49
|
# OpenGradient Python SDK
|
|
137
50
|
Python SDK for the OpenGradient platform provides decentralized model management & inference services. Python SDK allows programmatic access to our model repository and decentralized AI infrastructure.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "opengradient"
|
|
7
|
+
version = "0.3.28"
|
|
8
|
+
description = "Python SDK for OpenGradient decentralized model management & inference services"
|
|
9
|
+
authors = [{name = "OpenGradient", email = "oliver@opengradient.ai"}]
|
|
10
|
+
license = {file = "LICENSE"}
|
|
11
|
+
readme = "README.md"
|
|
12
|
+
requires-python = ">=3.10"
|
|
13
|
+
classifiers = [
|
|
14
|
+
"Development Status :: 3 - Alpha",
|
|
15
|
+
"Intended Audience :: Developers",
|
|
16
|
+
"License :: OSI Approved :: MIT License",
|
|
17
|
+
"Programming Language :: Python :: 3.10",
|
|
18
|
+
"Programming Language :: Python :: 3.11",
|
|
19
|
+
"Programming Language :: Python :: 3.12",
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
dependencies = [
|
|
23
|
+
"eth-account>=0.13.4",
|
|
24
|
+
"web3>=7.3.0",
|
|
25
|
+
"click>=8.1.7",
|
|
26
|
+
"firebase-rest-api>=1.11.0",
|
|
27
|
+
"grpcio>=1.66.2",
|
|
28
|
+
"numpy>=1.26.4",
|
|
29
|
+
"requests>=2.32.3",
|
|
30
|
+
"langchain>=0.3.7",
|
|
31
|
+
"openai>=1.58.1",
|
|
32
|
+
"pydantic>=2.9.2",
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
[project.scripts]
|
|
36
|
+
opengradient = "opengradient.cli:cli"
|
|
37
|
+
|
|
38
|
+
[project.urls]
|
|
39
|
+
Homepage = "https://opengradient.ai"
|
|
40
|
+
|
|
41
|
+
[tool.setuptools.exclude-package-data]
|
|
42
|
+
"*" = ["*.ipynb", "*.pyc", "*.pyo", ".gitignore", "requirements.txt", "conftest.py"]
|
|
43
|
+
|
|
44
|
+
[tool.setuptools]
|
|
45
|
+
package-dir = {"" = "src"}
|
|
46
|
+
include-package-data = true
|
|
47
|
+
|
|
48
|
+
[tool.setuptools.packages.find]
|
|
49
|
+
where = ["src"]
|
|
50
|
+
include = ["opengradient*"] # Explicitly include all opengradient packages
|
|
51
|
+
exclude = ["tests*", "stresstest*"]
|
|
52
|
+
|
|
53
|
+
[tool.setuptools.package-data]
|
|
54
|
+
"opengradient" = [
|
|
55
|
+
"abi/*.abi",
|
|
56
|
+
"proto/*.proto",
|
|
57
|
+
"**/*.py"
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
[tool.ruff]
|
|
61
|
+
line-length = 140
|
|
62
|
+
target-version = "py310"
|
|
63
|
+
select = ["E", "F", "I", "N"]
|
|
64
|
+
ignore = []
|
|
65
|
+
|
|
66
|
+
[tool.ruff.mccabe]
|
|
67
|
+
max-complexity = 10
|
|
@@ -69,14 +69,6 @@ LlmInferenceModes = {
|
|
|
69
69
|
"TEE": LlmInferenceMode.TEE,
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
# Supported LLMs
|
|
73
|
-
LlmModels = {
|
|
74
|
-
"meta-llama/Meta-Llama-3-8B-Instruct",
|
|
75
|
-
"meta-llama/Llama-3.2-3B-Instruct",
|
|
76
|
-
"mistralai/Mistral-7B-Instruct-v0.3",
|
|
77
|
-
"meta-llama/Llama-3.1-70B-Instruct",
|
|
78
|
-
}
|
|
79
|
-
|
|
80
72
|
|
|
81
73
|
def initialize_config(ctx):
|
|
82
74
|
"""Interactively initialize OpenGradient config"""
|
|
@@ -30,6 +30,15 @@ _FIREBASE_CONFIG = {
|
|
|
30
30
|
"databaseURL": "",
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
# How much time we wait for txn to be included in chain
|
|
34
|
+
LLM_TX_TIMEOUT = 60
|
|
35
|
+
INFERENCE_TX_TIMEOUT = 60
|
|
36
|
+
REGULAR_TX_TIMEOUT = 30
|
|
37
|
+
|
|
38
|
+
# How many times we retry a transaction because of nonce conflict
|
|
39
|
+
DEFAULT_MAX_RETRY = 5
|
|
40
|
+
DEFAULT_RETRY_DELAY_SEC = 1
|
|
41
|
+
|
|
33
42
|
|
|
34
43
|
class Client:
|
|
35
44
|
_inference_hub_contract_address: str
|
|
@@ -317,7 +326,7 @@ class Client:
|
|
|
317
326
|
|
|
318
327
|
signed_tx = self._wallet_account.sign_transaction(transaction)
|
|
319
328
|
tx_hash = self._blockchain.eth.send_raw_transaction(signed_tx.raw_transaction)
|
|
320
|
-
tx_receipt = self._blockchain.eth.wait_for_transaction_receipt(tx_hash)
|
|
329
|
+
tx_receipt = self._blockchain.eth.wait_for_transaction_receipt(tx_hash, timeout=INFERENCE_TX_TIMEOUT)
|
|
321
330
|
|
|
322
331
|
if tx_receipt["status"] == 0:
|
|
323
332
|
raise ContractLogicError(f"Transaction failed. Receipt: {tx_receipt}")
|
|
@@ -329,7 +338,7 @@ class Client:
|
|
|
329
338
|
model_output = utils.convert_to_model_output(parsed_logs[0]["args"])
|
|
330
339
|
return tx_hash.hex(), model_output
|
|
331
340
|
|
|
332
|
-
return run_with_retry(execute_transaction, max_retries
|
|
341
|
+
return run_with_retry(execute_transaction, max_retries)
|
|
333
342
|
|
|
334
343
|
def llm_completion(
|
|
335
344
|
self,
|
|
@@ -384,7 +393,8 @@ class Client:
|
|
|
384
393
|
|
|
385
394
|
nonce = self._blockchain.eth.get_transaction_count(self._wallet_account.address, "pending")
|
|
386
395
|
estimated_gas = run_function.estimate_gas({"from": self._wallet_account.address})
|
|
387
|
-
|
|
396
|
+
# Artificially increase required gas for safety
|
|
397
|
+
gas_limit = int(estimated_gas * 1.5)
|
|
388
398
|
|
|
389
399
|
transaction = run_function.build_transaction(
|
|
390
400
|
{
|
|
@@ -397,7 +407,7 @@ class Client:
|
|
|
397
407
|
|
|
398
408
|
signed_tx = self._wallet_account.sign_transaction(transaction)
|
|
399
409
|
tx_hash = self._blockchain.eth.send_raw_transaction(signed_tx.raw_transaction)
|
|
400
|
-
tx_receipt = self._blockchain.eth.wait_for_transaction_receipt(tx_hash)
|
|
410
|
+
tx_receipt = self._blockchain.eth.wait_for_transaction_receipt(tx_hash, timeout=LLM_TX_TIMEOUT)
|
|
401
411
|
|
|
402
412
|
if tx_receipt["status"] == 0:
|
|
403
413
|
raise ContractLogicError(f"Transaction failed. Receipt: {tx_receipt}")
|
|
@@ -409,7 +419,7 @@ class Client:
|
|
|
409
419
|
llm_answer = parsed_logs[0]["args"]["response"]["answer"]
|
|
410
420
|
return tx_hash.hex(), llm_answer
|
|
411
421
|
|
|
412
|
-
return run_with_retry(execute_transaction, max_retries
|
|
422
|
+
return run_with_retry(execute_transaction, max_retries)
|
|
413
423
|
|
|
414
424
|
def llm_chat(
|
|
415
425
|
self,
|
|
@@ -531,7 +541,8 @@ class Client:
|
|
|
531
541
|
|
|
532
542
|
nonce = self._blockchain.eth.get_transaction_count(self._wallet_account.address, "pending")
|
|
533
543
|
estimated_gas = run_function.estimate_gas({"from": self._wallet_account.address})
|
|
534
|
-
|
|
544
|
+
# Artificially increase required gas for safety
|
|
545
|
+
gas_limit = int(estimated_gas * 1.5)
|
|
535
546
|
|
|
536
547
|
transaction = run_function.build_transaction(
|
|
537
548
|
{
|
|
@@ -544,7 +555,7 @@ class Client:
|
|
|
544
555
|
|
|
545
556
|
signed_tx = self._wallet_account.sign_transaction(transaction)
|
|
546
557
|
tx_hash = self._blockchain.eth.send_raw_transaction(signed_tx.raw_transaction)
|
|
547
|
-
tx_receipt = self._blockchain.eth.wait_for_transaction_receipt(tx_hash)
|
|
558
|
+
tx_receipt = self._blockchain.eth.wait_for_transaction_receipt(tx_hash, timeout=LLM_TX_TIMEOUT)
|
|
548
559
|
|
|
549
560
|
if tx_receipt["status"] == 0:
|
|
550
561
|
raise ContractLogicError(f"Transaction failed. Receipt: {tx_receipt}")
|
|
@@ -560,7 +571,7 @@ class Client:
|
|
|
560
571
|
|
|
561
572
|
return tx_hash.hex(), llm_result["finish_reason"], message
|
|
562
573
|
|
|
563
|
-
return run_with_retry(execute_transaction, max_retries
|
|
574
|
+
return run_with_retry(execute_transaction, max_retries)
|
|
564
575
|
|
|
565
576
|
def list_files(self, model_name: str, version: str) -> List[Dict]:
|
|
566
577
|
"""
|
|
@@ -775,7 +786,7 @@ class Client:
|
|
|
775
786
|
|
|
776
787
|
signed_txn = self._wallet_account.sign_transaction(transaction)
|
|
777
788
|
tx_hash = self._blockchain.eth.send_raw_transaction(signed_txn.raw_transaction)
|
|
778
|
-
tx_receipt = self._blockchain.eth.wait_for_transaction_receipt(tx_hash)
|
|
789
|
+
tx_receipt = self._blockchain.eth.wait_for_transaction_receipt(tx_hash, timeout=REGULAR_TX_TIMEOUT)
|
|
779
790
|
contract_address = tx_receipt.contractAddress
|
|
780
791
|
|
|
781
792
|
print(f"✅ Workflow contract deployed at: {contract_address}")
|
|
@@ -820,7 +831,7 @@ class Client:
|
|
|
820
831
|
|
|
821
832
|
signed_scheduler_tx = self._wallet_account.sign_transaction(scheduler_tx)
|
|
822
833
|
scheduler_tx_hash = self._blockchain.eth.send_raw_transaction(signed_scheduler_tx.raw_transaction)
|
|
823
|
-
self._blockchain.eth.wait_for_transaction_receipt(scheduler_tx_hash)
|
|
834
|
+
self._blockchain.eth.wait_for_transaction_receipt(scheduler_tx_hash, timeout=REGULAR_TX_TIMEOUT)
|
|
824
835
|
|
|
825
836
|
print("✅ Automated execution schedule set successfully!")
|
|
826
837
|
print(f" Transaction hash: {scheduler_tx_hash.hex()}")
|
|
@@ -886,7 +897,7 @@ class Client:
|
|
|
886
897
|
|
|
887
898
|
signed_txn = self._wallet_account.sign_transaction(transaction)
|
|
888
899
|
tx_hash = self._blockchain.eth.send_raw_transaction(signed_txn.raw_transaction)
|
|
889
|
-
tx_receipt = self._blockchain.eth.wait_for_transaction_receipt(tx_hash)
|
|
900
|
+
tx_receipt = self._blockchain.eth.wait_for_transaction_receipt(tx_hash, timeout=INFERENCE_TX_TIMEOUT)
|
|
890
901
|
|
|
891
902
|
if tx_receipt.status == 0:
|
|
892
903
|
raise ContractLogicError(f"Run transaction failed. Receipt: {tx_receipt}")
|
|
@@ -896,25 +907,28 @@ class Client:
|
|
|
896
907
|
return result
|
|
897
908
|
|
|
898
909
|
|
|
899
|
-
def run_with_retry(txn_function, max_retries=
|
|
910
|
+
def run_with_retry(txn_function, max_retries=DEFAULT_MAX_RETRY, retry_delay=DEFAULT_RETRY_DELAY_SEC):
|
|
900
911
|
"""
|
|
901
912
|
Execute a blockchain transaction with retry logic.
|
|
902
913
|
|
|
903
914
|
Args:
|
|
904
915
|
txn_function: Function that executes the transaction
|
|
905
916
|
max_retries (int): Maximum number of retry attempts
|
|
917
|
+
retry_delay (float): Delay in seconds between retries for nonce issues
|
|
906
918
|
"""
|
|
907
|
-
|
|
919
|
+
NONCE_TOO_LOW = 'nonce too low'
|
|
920
|
+
NONCE_TOO_HIGH = 'nonce too high'
|
|
921
|
+
|
|
908
922
|
for attempt in range(max_retries):
|
|
909
923
|
try:
|
|
910
924
|
return txn_function()
|
|
911
925
|
except Exception as e:
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
926
|
+
error_msg = str(e).lower()
|
|
927
|
+
|
|
928
|
+
if NONCE_TOO_LOW in error_msg or NONCE_TOO_HIGH in error_msg:
|
|
929
|
+
if attempt == max_retries - 1:
|
|
930
|
+
raise OpenGradientError(f"Transaction failed after {max_retries} attempts: {e}")
|
|
931
|
+
time.sleep(retry_delay)
|
|
932
|
+
continue
|
|
933
|
+
|
|
934
|
+
raise
|
|
@@ -128,17 +128,16 @@ class Abi:
|
|
|
128
128
|
|
|
129
129
|
class LLM(str, Enum):
|
|
130
130
|
"""Enum for available LLM models"""
|
|
131
|
-
|
|
132
131
|
META_LLAMA_3_8B_INSTRUCT = "meta-llama/Meta-Llama-3-8B-Instruct"
|
|
133
132
|
LLAMA_3_2_3B_INSTRUCT = "meta-llama/Llama-3.2-3B-Instruct"
|
|
134
133
|
MISTRAL_7B_INSTRUCT_V3 = "mistralai/Mistral-7B-Instruct-v0.3"
|
|
135
|
-
|
|
134
|
+
QWEN_2_5_72B_INSTRUCT = "Qwen/Qwen2.5-72B-Instruct"
|
|
136
135
|
META_LLAMA_3_1_70B_INSTRUCT = "meta-llama/Llama-3.1-70B-Instruct"
|
|
137
136
|
|
|
138
137
|
|
|
139
138
|
class TEE_LLM(str, Enum):
|
|
140
139
|
"""Enum for LLM models available for TEE execution"""
|
|
141
|
-
|
|
140
|
+
QWEN_2_5_72B_INSTRUCT = "Qwen/Qwen2.5-72B-Instruct"
|
|
142
141
|
META_LLAMA_3_1_70B_INSTRUCT = "meta-llama/Llama-3.1-70B-Instruct"
|
|
143
142
|
|
|
144
143
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: opengradient
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.28
|
|
4
4
|
Summary: Python SDK for OpenGradient decentralized model management & inference services
|
|
5
5
|
Author-email: OpenGradient <oliver@opengradient.ai>
|
|
6
6
|
License: MIT License
|
|
@@ -35,103 +35,16 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
35
35
|
Requires-Python: >=3.10
|
|
36
36
|
Description-Content-Type: text/markdown
|
|
37
37
|
License-File: LICENSE
|
|
38
|
-
Requires-Dist: aiohappyeyeballs>=2.4.3
|
|
39
|
-
Requires-Dist: aiohttp>=3.10.8
|
|
40
|
-
Requires-Dist: aiosignal>=1.3.1
|
|
41
|
-
Requires-Dist: annotated-types>=0.7.0
|
|
42
|
-
Requires-Dist: attrs>=24.2.0
|
|
43
|
-
Requires-Dist: bitarray>=2.9.2
|
|
44
|
-
Requires-Dist: CacheControl>=0.14.0
|
|
45
|
-
Requires-Dist: cachetools>=5.5.0
|
|
46
|
-
Requires-Dist: certifi>=2024.8.30
|
|
47
|
-
Requires-Dist: cffi>=1.17.1
|
|
48
|
-
Requires-Dist: charset-normalizer>=3.3.2
|
|
49
|
-
Requires-Dist: ckzg>=2.0.1
|
|
50
|
-
Requires-Dist: cleo>=2.1.0
|
|
51
|
-
Requires-Dist: click>=8.1.7
|
|
52
|
-
Requires-Dist: cramjam>=2.8.4
|
|
53
|
-
Requires-Dist: crashtest>=0.4.1
|
|
54
|
-
Requires-Dist: cryptography>=43.0.1
|
|
55
|
-
Requires-Dist: cytoolz>=0.12.3
|
|
56
|
-
Requires-Dist: distlib>=0.3.8
|
|
57
|
-
Requires-Dist: dulwich>=0.21.7
|
|
58
38
|
Requires-Dist: eth-account>=0.13.4
|
|
59
|
-
Requires-Dist:
|
|
60
|
-
Requires-Dist:
|
|
61
|
-
Requires-Dist: eth-keys>=0.5.1
|
|
62
|
-
Requires-Dist: eth-rlp>=2.1.0
|
|
63
|
-
Requires-Dist: eth-typing>=5.0.0
|
|
64
|
-
Requires-Dist: eth-utils>=5.0.0
|
|
65
|
-
Requires-Dist: eth_abi>=5.1.0
|
|
66
|
-
Requires-Dist: fastjsonschema>=2.20.0
|
|
67
|
-
Requires-Dist: fastparquet>=2024.5.0
|
|
68
|
-
Requires-Dist: filelock>=3.16.1
|
|
39
|
+
Requires-Dist: web3>=7.3.0
|
|
40
|
+
Requires-Dist: click>=8.1.7
|
|
69
41
|
Requires-Dist: firebase-rest-api>=1.11.0
|
|
70
|
-
Requires-Dist: frozenlist>=1.4.1
|
|
71
|
-
Requires-Dist: fsspec>=2024.9.0
|
|
72
|
-
Requires-Dist: google-api-core>=2.20.0
|
|
73
|
-
Requires-Dist: google-auth>=2.35.0
|
|
74
|
-
Requires-Dist: google-cloud-core>=2.4.1
|
|
75
|
-
Requires-Dist: google-cloud-firestore>=2.19.0
|
|
76
|
-
Requires-Dist: google-cloud-storage>=2.18.2
|
|
77
|
-
Requires-Dist: google-crc32c>=1.6.0
|
|
78
|
-
Requires-Dist: google-resumable-media>=2.7.2
|
|
79
|
-
Requires-Dist: googleapis-common-protos>=1.65.0
|
|
80
42
|
Requires-Dist: grpcio>=1.66.2
|
|
81
|
-
Requires-Dist:
|
|
82
|
-
Requires-Dist:
|
|
83
|
-
Requires-Dist: hexbytes>=1.2.1
|
|
84
|
-
Requires-Dist: idna>=3.10
|
|
85
|
-
Requires-Dist: jaraco.classes>=3.4.0
|
|
86
|
-
Requires-Dist: jwcrypto>=1.5.6
|
|
87
|
-
Requires-Dist: keyring>=24.3.1
|
|
43
|
+
Requires-Dist: numpy>=1.26.4
|
|
44
|
+
Requires-Dist: requests>=2.32.3
|
|
88
45
|
Requires-Dist: langchain>=0.3.7
|
|
89
|
-
Requires-Dist: more-itertools>=10.5.0
|
|
90
|
-
Requires-Dist: msgpack>=1.1.0
|
|
91
|
-
Requires-Dist: multidict>=6.1.0
|
|
92
46
|
Requires-Dist: openai>=1.58.1
|
|
93
|
-
Requires-Dist: packaging>=24.1
|
|
94
|
-
Requires-Dist: pandas>=2.2.3
|
|
95
|
-
Requires-Dist: parsimonious>=0.10.0
|
|
96
|
-
Requires-Dist: pathlib>=1.0.1
|
|
97
|
-
Requires-Dist: pexpect>=4.9.0
|
|
98
|
-
Requires-Dist: pkce>=1.0.3
|
|
99
|
-
Requires-Dist: pkginfo>=1.11.1
|
|
100
|
-
Requires-Dist: platformdirs>=4.3.6
|
|
101
|
-
Requires-Dist: proto-plus>=1.24.0
|
|
102
|
-
Requires-Dist: protobuf>=5.28.2
|
|
103
|
-
Requires-Dist: ptyprocess>=0.7.0
|
|
104
|
-
Requires-Dist: pyarrow>=17.0.0
|
|
105
|
-
Requires-Dist: pyasn1>=0.6.1
|
|
106
|
-
Requires-Dist: pyasn1_modules>=0.4.1
|
|
107
|
-
Requires-Dist: pycparser>=2.22
|
|
108
|
-
Requires-Dist: pycryptodome>=3.21.0
|
|
109
47
|
Requires-Dist: pydantic>=2.9.2
|
|
110
|
-
Requires-Dist: pydantic_core>=2.23.4
|
|
111
|
-
Requires-Dist: pyproject_hooks>=1.2.0
|
|
112
|
-
Requires-Dist: python-dateutil>=2.9.0.post0
|
|
113
|
-
Requires-Dist: python-jwt>=4.1.0
|
|
114
|
-
Requires-Dist: pytz>=2024.2
|
|
115
|
-
Requires-Dist: pyunormalize>=16.0.0
|
|
116
|
-
Requires-Dist: RapidFuzz>=3.10.0
|
|
117
|
-
Requires-Dist: regex>=2024.9.11
|
|
118
|
-
Requires-Dist: requests>=2.32.3
|
|
119
|
-
Requires-Dist: requests-toolbelt>=1.0.0
|
|
120
|
-
Requires-Dist: rlp>=4.0.1
|
|
121
|
-
Requires-Dist: rsa>=4.9
|
|
122
|
-
Requires-Dist: shellingham>=1.5.4
|
|
123
|
-
Requires-Dist: six>=1.16.0
|
|
124
|
-
Requires-Dist: tomlkit>=0.13.2
|
|
125
|
-
Requires-Dist: toolz>=0.12.1
|
|
126
|
-
Requires-Dist: trove-classifiers>=2024.9.12
|
|
127
|
-
Requires-Dist: types-requests>=2.32.0.20240914
|
|
128
|
-
Requires-Dist: typing_extensions>=4.12.2
|
|
129
|
-
Requires-Dist: tzdata>=2024.2
|
|
130
|
-
Requires-Dist: urllib3>=2.2.3
|
|
131
|
-
Requires-Dist: web3>=7.3.0
|
|
132
|
-
Requires-Dist: websockets>=13.1
|
|
133
|
-
Requires-Dist: xattr>=1.1.0
|
|
134
|
-
Requires-Dist: yarl>=1.13.1
|
|
135
48
|
|
|
136
49
|
# OpenGradient Python SDK
|
|
137
50
|
Python SDK for the OpenGradient platform provides decentralized model management & inference services. Python SDK allows programmatic access to our model repository and decentralized AI infrastructure.
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
[build-system]
|
|
2
|
-
requires = ["setuptools>=61.0"]
|
|
3
|
-
build-backend = "setuptools.build_meta"
|
|
4
|
-
|
|
5
|
-
[project]
|
|
6
|
-
name = "opengradient"
|
|
7
|
-
version = "0.3.25"
|
|
8
|
-
description = "Python SDK for OpenGradient decentralized model management & inference services"
|
|
9
|
-
authors = [{name = "OpenGradient", email = "oliver@opengradient.ai"}]
|
|
10
|
-
license = {file = "LICENSE"}
|
|
11
|
-
readme = "README.md"
|
|
12
|
-
requires-python = ">=3.10"
|
|
13
|
-
classifiers = [
|
|
14
|
-
"Development Status :: 3 - Alpha",
|
|
15
|
-
"Intended Audience :: Developers",
|
|
16
|
-
"License :: OSI Approved :: MIT License",
|
|
17
|
-
"Programming Language :: Python :: 3.10",
|
|
18
|
-
"Programming Language :: Python :: 3.11",
|
|
19
|
-
"Programming Language :: Python :: 3.12",
|
|
20
|
-
]
|
|
21
|
-
# Dependencies kept as is...
|
|
22
|
-
dependencies = [
|
|
23
|
-
"aiohappyeyeballs>=2.4.3",
|
|
24
|
-
"aiohttp>=3.10.8",
|
|
25
|
-
"aiosignal>=1.3.1",
|
|
26
|
-
"annotated-types>=0.7.0",
|
|
27
|
-
"attrs>=24.2.0",
|
|
28
|
-
"bitarray>=2.9.2",
|
|
29
|
-
"CacheControl>=0.14.0",
|
|
30
|
-
"cachetools>=5.5.0",
|
|
31
|
-
"certifi>=2024.8.30",
|
|
32
|
-
"cffi>=1.17.1",
|
|
33
|
-
"charset-normalizer>=3.3.2",
|
|
34
|
-
"ckzg>=2.0.1",
|
|
35
|
-
"cleo>=2.1.0",
|
|
36
|
-
"click>=8.1.7",
|
|
37
|
-
"cramjam>=2.8.4",
|
|
38
|
-
"crashtest>=0.4.1",
|
|
39
|
-
"cryptography>=43.0.1",
|
|
40
|
-
"cytoolz>=0.12.3",
|
|
41
|
-
"distlib>=0.3.8",
|
|
42
|
-
"dulwich>=0.21.7",
|
|
43
|
-
"eth-account>=0.13.4",
|
|
44
|
-
"eth-hash>=0.7.0",
|
|
45
|
-
"eth-keyfile>=0.8.1",
|
|
46
|
-
"eth-keys>=0.5.1",
|
|
47
|
-
"eth-rlp>=2.1.0",
|
|
48
|
-
"eth-typing>=5.0.0",
|
|
49
|
-
"eth-utils>=5.0.0",
|
|
50
|
-
"eth_abi>=5.1.0",
|
|
51
|
-
"fastjsonschema>=2.20.0",
|
|
52
|
-
"fastparquet>=2024.5.0",
|
|
53
|
-
"filelock>=3.16.1",
|
|
54
|
-
"firebase-rest-api>=1.11.0",
|
|
55
|
-
"frozenlist>=1.4.1",
|
|
56
|
-
"fsspec>=2024.9.0",
|
|
57
|
-
"google-api-core>=2.20.0",
|
|
58
|
-
"google-auth>=2.35.0",
|
|
59
|
-
"google-cloud-core>=2.4.1",
|
|
60
|
-
"google-cloud-firestore>=2.19.0",
|
|
61
|
-
"google-cloud-storage>=2.18.2",
|
|
62
|
-
"google-crc32c>=1.6.0",
|
|
63
|
-
"google-resumable-media>=2.7.2",
|
|
64
|
-
"googleapis-common-protos>=1.65.0",
|
|
65
|
-
"grpcio>=1.66.2",
|
|
66
|
-
"grpcio-tools>=1.66.2",
|
|
67
|
-
"protobuf>=4.24.0",
|
|
68
|
-
"hexbytes>=1.2.1",
|
|
69
|
-
"idna>=3.10",
|
|
70
|
-
"jaraco.classes>=3.4.0",
|
|
71
|
-
"jwcrypto>=1.5.6",
|
|
72
|
-
"keyring>=24.3.1",
|
|
73
|
-
"langchain>=0.3.7",
|
|
74
|
-
"more-itertools>=10.5.0",
|
|
75
|
-
"msgpack>=1.1.0",
|
|
76
|
-
"multidict>=6.1.0",
|
|
77
|
-
"openai>=1.58.1",
|
|
78
|
-
"packaging>=24.1",
|
|
79
|
-
"pandas>=2.2.3",
|
|
80
|
-
"parsimonious>=0.10.0",
|
|
81
|
-
"pathlib>=1.0.1",
|
|
82
|
-
"pexpect>=4.9.0",
|
|
83
|
-
"pkce>=1.0.3",
|
|
84
|
-
"pkginfo>=1.11.1",
|
|
85
|
-
"platformdirs>=4.3.6",
|
|
86
|
-
"proto-plus>=1.24.0",
|
|
87
|
-
"protobuf>=5.28.2",
|
|
88
|
-
"ptyprocess>=0.7.0",
|
|
89
|
-
"pyarrow>=17.0.0",
|
|
90
|
-
"pyasn1>=0.6.1",
|
|
91
|
-
"pyasn1_modules>=0.4.1",
|
|
92
|
-
"pycparser>=2.22",
|
|
93
|
-
"pycryptodome>=3.21.0",
|
|
94
|
-
"pydantic>=2.9.2",
|
|
95
|
-
"pydantic_core>=2.23.4",
|
|
96
|
-
"pyproject_hooks>=1.2.0",
|
|
97
|
-
"python-dateutil>=2.9.0.post0",
|
|
98
|
-
"python-jwt>=4.1.0",
|
|
99
|
-
"pytz>=2024.2",
|
|
100
|
-
"pyunormalize>=16.0.0",
|
|
101
|
-
"RapidFuzz>=3.10.0",
|
|
102
|
-
"regex>=2024.9.11",
|
|
103
|
-
"requests>=2.32.3",
|
|
104
|
-
"requests-toolbelt>=1.0.0",
|
|
105
|
-
"rlp>=4.0.1",
|
|
106
|
-
"rsa>=4.9",
|
|
107
|
-
"shellingham>=1.5.4",
|
|
108
|
-
"six>=1.16.0",
|
|
109
|
-
"tomlkit>=0.13.2",
|
|
110
|
-
"toolz>=0.12.1",
|
|
111
|
-
"trove-classifiers>=2024.9.12",
|
|
112
|
-
"types-requests>=2.32.0.20240914",
|
|
113
|
-
"typing_extensions>=4.12.2",
|
|
114
|
-
"tzdata>=2024.2",
|
|
115
|
-
"urllib3>=2.2.3",
|
|
116
|
-
"web3>=7.3.0",
|
|
117
|
-
"websockets>=13.1",
|
|
118
|
-
"xattr>=1.1.0",
|
|
119
|
-
"yarl>=1.13.1",
|
|
120
|
-
]
|
|
121
|
-
|
|
122
|
-
[project.scripts]
|
|
123
|
-
opengradient = "opengradient.cli:cli"
|
|
124
|
-
|
|
125
|
-
[project.urls]
|
|
126
|
-
Homepage = "https://opengradient.ai"
|
|
127
|
-
|
|
128
|
-
[tool.setuptools.exclude-package-data]
|
|
129
|
-
"*" = ["*.ipynb", "*.pyc", "*.pyo", ".gitignore", "requirements.txt", "conftest.py"]
|
|
130
|
-
|
|
131
|
-
[tool.setuptools]
|
|
132
|
-
package-dir = {"" = "src"}
|
|
133
|
-
include-package-data = true
|
|
134
|
-
|
|
135
|
-
[tool.setuptools.packages.find]
|
|
136
|
-
where = ["src"]
|
|
137
|
-
include = ["opengradient*"] # Explicitly include all opengradient packages
|
|
138
|
-
exclude = ["tests*", "stresstest*"]
|
|
139
|
-
|
|
140
|
-
[tool.setuptools.package-data]
|
|
141
|
-
"opengradient" = [
|
|
142
|
-
"abi/*.abi",
|
|
143
|
-
"proto/*.proto",
|
|
144
|
-
"**/*.py"
|
|
145
|
-
]
|
|
146
|
-
|
|
147
|
-
[tool.ruff]
|
|
148
|
-
line-length = 140
|
|
149
|
-
target-version = "py310"
|
|
150
|
-
select = ["E", "F", "I", "N"]
|
|
151
|
-
ignore = []
|
|
152
|
-
|
|
153
|
-
[tool.ruff.mccabe]
|
|
154
|
-
max-complexity = 10
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
aiohappyeyeballs>=2.4.3
|
|
2
|
-
aiohttp>=3.10.8
|
|
3
|
-
aiosignal>=1.3.1
|
|
4
|
-
annotated-types>=0.7.0
|
|
5
|
-
attrs>=24.2.0
|
|
6
|
-
bitarray>=2.9.2
|
|
7
|
-
CacheControl>=0.14.0
|
|
8
|
-
cachetools>=5.5.0
|
|
9
|
-
certifi>=2024.8.30
|
|
10
|
-
cffi>=1.17.1
|
|
11
|
-
charset-normalizer>=3.3.2
|
|
12
|
-
ckzg>=2.0.1
|
|
13
|
-
cleo>=2.1.0
|
|
14
|
-
click>=8.1.7
|
|
15
|
-
cramjam>=2.8.4
|
|
16
|
-
crashtest>=0.4.1
|
|
17
|
-
cryptography>=43.0.1
|
|
18
|
-
cytoolz>=0.12.3
|
|
19
|
-
distlib>=0.3.8
|
|
20
|
-
dulwich>=0.21.7
|
|
21
|
-
eth-account>=0.13.4
|
|
22
|
-
eth-hash>=0.7.0
|
|
23
|
-
eth-keyfile>=0.8.1
|
|
24
|
-
eth-keys>=0.5.1
|
|
25
|
-
eth-rlp>=2.1.0
|
|
26
|
-
eth-typing>=5.0.0
|
|
27
|
-
eth-utils>=5.0.0
|
|
28
|
-
eth_abi>=5.1.0
|
|
29
|
-
fastjsonschema>=2.20.0
|
|
30
|
-
fastparquet>=2024.5.0
|
|
31
|
-
filelock>=3.16.1
|
|
32
|
-
firebase-rest-api>=1.11.0
|
|
33
|
-
frozenlist>=1.4.1
|
|
34
|
-
fsspec>=2024.9.0
|
|
35
|
-
google-api-core>=2.20.0
|
|
36
|
-
google-auth>=2.35.0
|
|
37
|
-
google-cloud-core>=2.4.1
|
|
38
|
-
google-cloud-firestore>=2.19.0
|
|
39
|
-
google-cloud-storage>=2.18.2
|
|
40
|
-
google-crc32c>=1.6.0
|
|
41
|
-
google-resumable-media>=2.7.2
|
|
42
|
-
googleapis-common-protos>=1.65.0
|
|
43
|
-
grpcio>=1.66.2
|
|
44
|
-
grpcio-tools>=1.66.2
|
|
45
|
-
protobuf>=4.24.0
|
|
46
|
-
hexbytes>=1.2.1
|
|
47
|
-
idna>=3.10
|
|
48
|
-
jaraco.classes>=3.4.0
|
|
49
|
-
jwcrypto>=1.5.6
|
|
50
|
-
keyring>=24.3.1
|
|
51
|
-
langchain>=0.3.7
|
|
52
|
-
more-itertools>=10.5.0
|
|
53
|
-
msgpack>=1.1.0
|
|
54
|
-
multidict>=6.1.0
|
|
55
|
-
openai>=1.58.1
|
|
56
|
-
packaging>=24.1
|
|
57
|
-
pandas>=2.2.3
|
|
58
|
-
parsimonious>=0.10.0
|
|
59
|
-
pathlib>=1.0.1
|
|
60
|
-
pexpect>=4.9.0
|
|
61
|
-
pkce>=1.0.3
|
|
62
|
-
pkginfo>=1.11.1
|
|
63
|
-
platformdirs>=4.3.6
|
|
64
|
-
proto-plus>=1.24.0
|
|
65
|
-
protobuf>=5.28.2
|
|
66
|
-
ptyprocess>=0.7.0
|
|
67
|
-
pyarrow>=17.0.0
|
|
68
|
-
pyasn1>=0.6.1
|
|
69
|
-
pyasn1_modules>=0.4.1
|
|
70
|
-
pycparser>=2.22
|
|
71
|
-
pycryptodome>=3.21.0
|
|
72
|
-
pydantic>=2.9.2
|
|
73
|
-
pydantic_core>=2.23.4
|
|
74
|
-
pyproject_hooks>=1.2.0
|
|
75
|
-
python-dateutil>=2.9.0.post0
|
|
76
|
-
python-jwt>=4.1.0
|
|
77
|
-
pytz>=2024.2
|
|
78
|
-
pyunormalize>=16.0.0
|
|
79
|
-
RapidFuzz>=3.10.0
|
|
80
|
-
regex>=2024.9.11
|
|
81
|
-
requests>=2.32.3
|
|
82
|
-
requests-toolbelt>=1.0.0
|
|
83
|
-
rlp>=4.0.1
|
|
84
|
-
rsa>=4.9
|
|
85
|
-
shellingham>=1.5.4
|
|
86
|
-
six>=1.16.0
|
|
87
|
-
tomlkit>=0.13.2
|
|
88
|
-
toolz>=0.12.1
|
|
89
|
-
trove-classifiers>=2024.9.12
|
|
90
|
-
types-requests>=2.32.0.20240914
|
|
91
|
-
typing_extensions>=4.12.2
|
|
92
|
-
tzdata>=2024.2
|
|
93
|
-
urllib3>=2.2.3
|
|
94
|
-
web3>=7.3.0
|
|
95
|
-
websockets>=13.1
|
|
96
|
-
xattr>=1.1.0
|
|
97
|
-
yarl>=1.13.1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{opengradient-0.3.25 → opengradient-0.3.28}/src/opengradient/abi/ModelExecutorHistorical.abi
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|