opengradient 0.3.23__py3-none-any.whl → 0.3.25__py3-none-any.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.
opengradient/utils.py CHANGED
@@ -1,7 +1,7 @@
1
+ import json
1
2
  import logging
2
3
  from decimal import Decimal
3
4
  from typing import Dict, List, Tuple
4
- import json
5
5
 
6
6
  import numpy as np
7
7
  from web3.datastructures import AttributeDict
@@ -17,20 +17,21 @@ def convert_to_fixed_point(number: float) -> Tuple[int, int]:
17
17
  # Converting number to string in case this is a numpy float
18
18
  decimal_val = Decimal(str(number)).normalize()
19
19
  sign, digits, exponent = decimal_val.as_tuple()
20
- value = int(''.join(map(str, digits)))
20
+ value = int("".join(map(str, digits)))
21
21
  if sign:
22
22
  value = -value
23
-
23
+
24
24
  if exponent >= 0:
25
- value *= 10 ** exponent
25
+ value *= 10**exponent
26
26
  decimals = 0
27
27
  else:
28
28
  decimals = -exponent
29
-
29
+
30
30
  logging.debug(f"Converted number {number} to fixed point value={value} decimals={decimals}")
31
31
  logging.debug(f"Types value={type(value)} decimals={type(decimals)}")
32
32
  return value, decimals
33
33
 
34
+
34
35
  def convert_to_float32(value: int, decimals: int) -> np.float32:
35
36
  """
36
37
  Converts fixed point back into floating point
@@ -39,9 +40,8 @@ def convert_to_float32(value: int, decimals: int) -> np.float32:
39
40
  """
40
41
  return np.float32(Decimal(value) / (10 ** Decimal(decimals)))
41
42
 
42
- def convert_to_model_input(
43
- inputs: Dict[str, np.ndarray]
44
- ) -> Tuple[List[Tuple[str, List[Tuple[int, int]]]], List[Tuple[str, List[str]]]]:
43
+
44
+ def convert_to_model_input(inputs: Dict[str, np.ndarray]) -> Tuple[List[Tuple[str, List[Tuple[int, int]]]], List[Tuple[str, List[str]]]]:
45
45
  """
46
46
  Expect SDK input to be a dict with the format
47
47
  key: tensor name
@@ -66,9 +66,7 @@ def convert_to_model_input(
66
66
 
67
67
  # Check if type is np array
68
68
  if not isinstance(tensor_data, np.ndarray):
69
- raise TypeError(
70
- "Inference input must be list, numpy array, or type (str, int, float): %s"
71
- % type(tensor_data))
69
+ raise TypeError("Inference input must be list, numpy array, or type (str, int, float): %s" % type(tensor_data))
72
70
 
73
71
  # Flatten list and retain shape
74
72
  shape = tensor_data.shape
@@ -78,16 +76,16 @@ def convert_to_model_input(
78
76
  # Parse into number and string tensors
79
77
  if issubclass(tensor_data.dtype.type, np.floating):
80
78
  # Convert to fixed-point tuples
81
- data_type = np.dtype([('value', int), ('decimal', int)])
79
+ data_type = np.dtype([("value", int), ("decimal", int)])
82
80
  converted_tensor_data = np.array([convert_to_fixed_point(i) for i in flat_data], dtype=data_type)
83
-
81
+
84
82
  input = (tensor_name, converted_tensor_data.tolist(), shape)
85
83
  logging.debug("\tFloating tensor input: %s", input)
86
84
 
87
85
  number_tensors.append(input)
88
86
  elif issubclass(tensor_data.dtype.type, np.integer):
89
87
  # Convert to fixed-point tuples
90
- data_type = np.dtype([('value', int), ('decimal', int)])
88
+ data_type = np.dtype([("value", int), ("decimal", int)])
91
89
  converted_tensor_data = np.array([convert_to_fixed_point(int(i)) for i in flat_data], dtype=data_type)
92
90
 
93
91
  input = (tensor_name, converted_tensor_data.tolist(), shape)
@@ -102,16 +100,17 @@ def convert_to_model_input(
102
100
  string_tensors.append(input)
103
101
  else:
104
102
  raise TypeError(f"Data type {tensor_data.dtype.type} not recognized")
105
-
103
+
106
104
  logging.debug("Number tensors: %s", number_tensors)
107
105
  logging.debug("Number tensor types: %s", [type(item) for item in number_tensors])
108
106
  logging.debug("String tensors: %s", string_tensors)
109
107
  logging.debug("String tensor types: %s", [type(item) for item in string_tensors])
110
108
  return number_tensors, string_tensors
111
109
 
110
+
112
111
  def convert_to_model_output(event_data: AttributeDict) -> Dict[str, np.ndarray]:
113
112
  """
114
- Converts inference output into a user-readable output.
113
+ Converts inference output into a user-readable output.
115
114
  Expects the inference node to return a dict with the format:
116
115
  key: output_name (str)
117
116
  value: (output_array (list), shape (list)) (tuple)
@@ -120,24 +119,24 @@ def convert_to_model_output(event_data: AttributeDict) -> Dict[str, np.ndarray]:
120
119
  back into its original shape.
121
120
  """
122
121
  logging.debug(f"Parsing event data: {event_data}")
123
-
122
+
124
123
  output_dict = {}
125
124
 
126
- output = event_data.get('output', {})
125
+ output = event_data.get("output", {})
127
126
  logging.debug(f"Output data: {output}")
128
127
 
129
128
  if isinstance(output, AttributeDict):
130
129
  # Parse numbers
131
- for tensor in output.get('numbers', []):
130
+ for tensor in output.get("numbers", []):
132
131
  logging.debug(f"Processing number tensor: {tensor}")
133
132
  if isinstance(tensor, AttributeDict):
134
- name = tensor.get('name')
135
- shape = tensor.get('shape')
133
+ name = tensor.get("name")
134
+ shape = tensor.get("shape")
136
135
  values = []
137
136
  # Convert from fixed point back into np.float32
138
- for v in tensor.get('values', []):
137
+ for v in tensor.get("values", []):
139
138
  if isinstance(v, AttributeDict):
140
- values.append(convert_to_float32(value=int(v.get('value')), decimals=int(v.get('decimals'))))
139
+ values.append(convert_to_float32(value=int(v.get("value")), decimals=int(v.get("decimals"))))
141
140
  else:
142
141
  logging.warning(f"Unexpected number type: {type(v)}")
143
142
  output_dict[name] = np.array(values).reshape(shape)
@@ -145,22 +144,22 @@ def convert_to_model_output(event_data: AttributeDict) -> Dict[str, np.ndarray]:
145
144
  logging.warning(f"Unexpected tensor type: {type(tensor)}")
146
145
 
147
146
  # Parse strings
148
- for tensor in output.get('strings', []):
147
+ for tensor in output.get("strings", []):
149
148
  logging.debug(f"Processing string tensor: {tensor}")
150
149
  if isinstance(tensor, AttributeDict):
151
- name = tensor.get('name')
152
- shape = tensor.get('shape')
153
- values = tensor.get('values', [])
150
+ name = tensor.get("name")
151
+ shape = tensor.get("shape")
152
+ values = tensor.get("values", [])
154
153
  output_dict[name] = np.array(values).reshape(shape)
155
154
  else:
156
155
  logging.warning(f"Unexpected tensor type: {type(tensor)}")
157
156
 
158
157
  # Parse JSON dicts
159
- for tensor in output.get('jsons', []):
158
+ for tensor in output.get("jsons", []):
160
159
  logging.debug(f"Processing JSON tensor: {tensor}")
161
160
  if isinstance(tensor, AttributeDict):
162
- name = tensor.get('name')
163
- value = tensor.get('value')
161
+ name = tensor.get("name")
162
+ value = tensor.get("value")
164
163
  output_dict[name] = np.array(json.loads(value))
165
164
  else:
166
165
  logging.warning(f"Unexpected tensor type: {type(tensor)}")
@@ -170,4 +169,4 @@ def convert_to_model_output(event_data: AttributeDict) -> Dict[str, np.ndarray]:
170
169
 
171
170
  logging.debug(f"Parsed output: {output_dict}")
172
171
 
173
- return output_dict
172
+ return output_dict
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: opengradient
3
- Version: 0.3.23
3
+ Version: 0.3.25
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
@@ -0,0 +1,26 @@
1
+ opengradient/__init__.py,sha256=j52gE9yLsig3og9_EKhV12K-VzFpZLORmM0msm2zJB0,12858
2
+ opengradient/account.py,sha256=5wrYpws_1lozjOFjLCTHtxgoxK-LmObDAaVy9eDcJY4,1145
3
+ opengradient/cli.py,sha256=uRvzICY_QqWor025-pQvovL4xuCmOSk0Z2uyHsJtS3g,25582
4
+ opengradient/client.py,sha256=YmNrDjn9Zd71O0M_pgmnKQ3CqWFPfIDp0004UpRFt_A,41064
5
+ opengradient/defaults.py,sha256=VK3a4B4d6ZpGRqfpMe20PTUMXACjH2TdbCkiWLld8WU,398
6
+ opengradient/exceptions.py,sha256=88tfegboGtlehQcwhxsl6ZzhLJWZWlkf_bkHTiCtXpo,3391
7
+ opengradient/types.py,sha256=rjnn6d7ugv4kO2tJw87QWiC4aBvei8renVw2NMVNhEo,3989
8
+ opengradient/utils.py,sha256=hf1dQvOHdCFthrAr_Wif_PNn6-C3zZaa3QCZX1HMWoA,6911
9
+ opengradient/abi/ModelExecutorHistorical.abi,sha256=Z-2CQRG2BO5R-Ix1OLgQD9GCcHZw8w6-Zth3rzNX0TU,3278
10
+ opengradient/abi/inference.abi,sha256=MR5u9npZ-Yx2EqRW17_M-UnGgFF3mMEMepOwaZ-Bkgc,7040
11
+ opengradient/contracts/templates/ModelExecutorHistorical.bin,sha256=J_bHglQOXEsv44BkBkMvA9uWz7c9c8gdqqSb0KxIzkI,34924
12
+ opengradient/llm/__init__.py,sha256=b_msjZstmTRD20LOaZbBxxigtnL7vxh7CziiyVlqpAo,1104
13
+ opengradient/llm/og_langchain.py,sha256=F9gdrwqMFPjLUakUfSjc4Obx8qIvf7HIphe6eM3ObZo,4322
14
+ opengradient/llm/og_openai.py,sha256=9MA3HDotjcJbbcGJ7DYZUA990QHQLdWpxAYhJSsTiz0,3708
15
+ opengradient/mltools/__init__.py,sha256=JU1VDzYb-rpko_hn9IlwjOvy_dfW1hvxBCBC2xrnvUM,147
16
+ opengradient/mltools/model_tool.py,sha256=dNoznwAiauff961EzM_9raYGdwcPLIqxIsPE1yCuWPU,5086
17
+ opengradient/proto/__init__.py,sha256=AhaSmrqV0TXGzCKaoPV8-XUvqs2fGAJBM2aOmDpkNbE,55
18
+ opengradient/proto/infer.proto,sha256=13eaEMcppxkBF8yChptsX9HooWFwJKze7oLZNl-LEb8,1217
19
+ opengradient/proto/infer_pb2.py,sha256=sGWDDVumYhXoCJTG9rLyvKu4XyaEjPE_b038kbNlj7w,3484
20
+ opengradient/proto/infer_pb2_grpc.py,sha256=q42_eZ7OZCMTXdWocYA4Ka3B0c3B74dOhfqdaIOO5AU,6700
21
+ opengradient-0.3.25.dist-info/LICENSE,sha256=xEcvQ3AxZOtDkrqkys2Mm6Y9diEnaSeQRKvxi-JGnNA,1069
22
+ opengradient-0.3.25.dist-info/METADATA,sha256=hX9dG02z0mVY5wKqwR48upLDje_24e_gGtsQb0Ry1IU,8754
23
+ opengradient-0.3.25.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
24
+ opengradient-0.3.25.dist-info/entry_points.txt,sha256=yUKTaJx8RXnybkob0J62wVBiCp_1agVbgw9uzsmaeJc,54
25
+ opengradient-0.3.25.dist-info/top_level.txt,sha256=oC1zimVLa2Yi1LQz8c7x-0IQm92milb5ax8gHBHwDqU,13
26
+ opengradient-0.3.25.dist-info/RECORD,,
@@ -1,26 +0,0 @@
1
- opengradient/__init__.py,sha256=uU_Onxf-4JMQ9gHMQPbJDbU93kbB8qNayBLrnZnRFzg,12742
2
- opengradient/account.py,sha256=2B7rtCXQDX-yF4U69h8B9-OUreJU4IqoGXG_1Hn9nWs,1150
3
- opengradient/cli.py,sha256=vYE_zr1oKYOkiAEWRyW3cR6jJQr6xKterjI1grhmROg,26399
4
- opengradient/client.py,sha256=Dybu7g5kP7rJKQq0NbNjamJUVNTYLdSFdEd3ZA6fiaQ,42668
5
- opengradient/defaults.py,sha256=6tsW9Z84z6YtITCsULTTgnN0KRUZjfSoeWJZqdWkYCo,384
6
- opengradient/exceptions.py,sha256=v4VmUGTvvtjhCZAhR24Ga42z3q-DzR1Y5zSqP_yn2Xk,3366
7
- opengradient/types.py,sha256=Z8HFmCxNiC4Pr8qVoALF_jYOAqIJuKsiJSgq96q-sxQ,4175
8
- opengradient/utils.py,sha256=lUDPmyPqLwpZI-owyN6Rm3QvUjOn5pLN5G1QyriVm-E,6994
9
- opengradient/abi/ModelExecutorHistorical.abi,sha256=Z-2CQRG2BO5R-Ix1OLgQD9GCcHZw8w6-Zth3rzNX0TU,3278
10
- opengradient/abi/inference.abi,sha256=MR5u9npZ-Yx2EqRW17_M-UnGgFF3mMEMepOwaZ-Bkgc,7040
11
- opengradient/contracts/templates/ModelExecutorHistorical.bin,sha256=J_bHglQOXEsv44BkBkMvA9uWz7c9c8gdqqSb0KxIzkI,34924
12
- opengradient/llm/__init__.py,sha256=J1W_AKPntqlDqLeflhn2x7A0i-dkMT-ol3jlEdFgMWU,1135
13
- opengradient/llm/og_langchain.py,sha256=-QBGFdQJ1cdSCTUUerajHXNvV5Xi9yaVpa3BeAqKZbQ,4541
14
- opengradient/llm/og_openai.py,sha256=3oaQOQnA7RzQ-LcFw-AQRn2RON8tsprSa9bGtyD88OE,3853
15
- opengradient/mltools/__init__.py,sha256=cfzf6lZmqLNN1efa5K_pCa7k1D5PnRkB6LNyJ9UeJvk,162
16
- opengradient/mltools/model_tool.py,sha256=q1k3Zq7jmRe-8HqP_-ia-p7ocDRcSn18T4gbNM9xlD0,5237
17
- opengradient/proto/__init__.py,sha256=AhaSmrqV0TXGzCKaoPV8-XUvqs2fGAJBM2aOmDpkNbE,55
18
- opengradient/proto/infer.proto,sha256=13eaEMcppxkBF8yChptsX9HooWFwJKze7oLZNl-LEb8,1217
19
- opengradient/proto/infer_pb2.py,sha256=wg2vjLQCNv6HRhYuIqgj9xivi3nO4IPz6E5wh2dhDqY,3446
20
- opengradient/proto/infer_pb2_grpc.py,sha256=y5GYwD1EdNs892xx58jdfyA0fO5QC7k3uZOtImTHMiE,6891
21
- opengradient-0.3.23.dist-info/LICENSE,sha256=xEcvQ3AxZOtDkrqkys2Mm6Y9diEnaSeQRKvxi-JGnNA,1069
22
- opengradient-0.3.23.dist-info/METADATA,sha256=EhqCC5WEHRypug84TG0flHH-MsMDKKRN9B5D2DydaJY,8754
23
- opengradient-0.3.23.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
24
- opengradient-0.3.23.dist-info/entry_points.txt,sha256=yUKTaJx8RXnybkob0J62wVBiCp_1agVbgw9uzsmaeJc,54
25
- opengradient-0.3.23.dist-info/top_level.txt,sha256=oC1zimVLa2Yi1LQz8c7x-0IQm92milb5ax8gHBHwDqU,13
26
- opengradient-0.3.23.dist-info/RECORD,,