kinfer 0.3.2__cp312-cp312-macosx_11_0_arm64.whl → 0.3.3__cp312-cp312-macosx_11_0_arm64.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.
@@ -2,19 +2,19 @@
2
2
 
3
3
  import numpy as np
4
4
 
5
- from kinfer import proto as P
5
+ from kinfer import proto as K
6
6
  from kinfer.serialize.utils import dtype_num_bytes
7
7
 
8
8
 
9
- def get_dummy_value(value_schema: P.ValueSchema) -> P.Value:
9
+ def get_dummy_value(value_schema: K.ValueSchema) -> K.Value:
10
10
  value_type = value_schema.WhichOneof("value_type")
11
11
 
12
12
  match value_type:
13
13
  case "joint_positions":
14
- return P.Value(
15
- joint_positions=P.JointPositionsValue(
14
+ return K.Value(
15
+ joint_positions=K.JointPositionsValue(
16
16
  values=[
17
- P.JointPositionValue(
17
+ K.JointPositionValue(
18
18
  joint_name=joint_name,
19
19
  value=0.0,
20
20
  unit=value_schema.joint_positions.unit,
@@ -24,10 +24,10 @@ def get_dummy_value(value_schema: P.ValueSchema) -> P.Value:
24
24
  ),
25
25
  )
26
26
  case "joint_velocities":
27
- return P.Value(
28
- joint_velocities=P.JointVelocitiesValue(
27
+ return K.Value(
28
+ joint_velocities=K.JointVelocitiesValue(
29
29
  values=[
30
- P.JointVelocityValue(
30
+ K.JointVelocityValue(
31
31
  joint_name=joint_name,
32
32
  value=0.0,
33
33
  unit=value_schema.joint_velocities.unit,
@@ -37,10 +37,10 @@ def get_dummy_value(value_schema: P.ValueSchema) -> P.Value:
37
37
  ),
38
38
  )
39
39
  case "joint_torques":
40
- return P.Value(
41
- joint_torques=P.JointTorquesValue(
40
+ return K.Value(
41
+ joint_torques=K.JointTorquesValue(
42
42
  values=[
43
- P.JointTorqueValue(
43
+ K.JointTorqueValue(
44
44
  joint_name=joint_name,
45
45
  value=0.0,
46
46
  unit=value_schema.joint_torques.unit,
@@ -50,10 +50,10 @@ def get_dummy_value(value_schema: P.ValueSchema) -> P.Value:
50
50
  ),
51
51
  )
52
52
  case "joint_commands":
53
- return P.Value(
54
- joint_commands=P.JointCommandsValue(
53
+ return K.Value(
54
+ joint_commands=K.JointCommandsValue(
55
55
  values=[
56
- P.JointCommandValue(
56
+ K.JointCommandValue(
57
57
  joint_name=joint_name,
58
58
  torque=0.0,
59
59
  velocity=0.0,
@@ -69,8 +69,8 @@ def get_dummy_value(value_schema: P.ValueSchema) -> P.Value:
69
69
  ),
70
70
  )
71
71
  case "camera_frame":
72
- return P.Value(
73
- camera_frame=P.CameraFrameValue(
72
+ return K.Value(
73
+ camera_frame=K.CameraFrameValue(
74
74
  data=b"\x00"
75
75
  * (
76
76
  value_schema.camera_frame.width
@@ -80,8 +80,8 @@ def get_dummy_value(value_schema: P.ValueSchema) -> P.Value:
80
80
  ),
81
81
  )
82
82
  case "audio_frame":
83
- return P.Value(
84
- audio_frame=P.AudioFrameValue(
83
+ return K.Value(
84
+ audio_frame=K.AudioFrameValue(
85
85
  data=b"\x00"
86
86
  * (
87
87
  value_schema.audio_frame.channels
@@ -91,24 +91,24 @@ def get_dummy_value(value_schema: P.ValueSchema) -> P.Value:
91
91
  ),
92
92
  )
93
93
  case "imu":
94
- return P.Value(
95
- imu=P.ImuValue(
96
- linear_acceleration=P.ImuAccelerometerValue(x=0.0, y=0.0, z=0.0),
97
- angular_velocity=P.ImuGyroscopeValue(x=0.0, y=0.0, z=0.0),
98
- magnetic_field=P.ImuMagnetometerValue(x=0.0, y=0.0, z=0.0),
94
+ return K.Value(
95
+ imu=K.ImuValue(
96
+ linear_acceleration=K.ImuAccelerometerValue(x=0.0, y=0.0, z=0.0),
97
+ angular_velocity=K.ImuGyroscopeValue(x=0.0, y=0.0, z=0.0),
98
+ magnetic_field=K.ImuMagnetometerValue(x=0.0, y=0.0, z=0.0),
99
99
  ),
100
100
  )
101
101
  case "timestamp":
102
- return P.Value(
103
- timestamp=P.TimestampValue(seconds=1728000000, nanos=0),
102
+ return K.Value(
103
+ timestamp=K.TimestampValue(seconds=1728000000, nanos=0),
104
104
  )
105
105
  case "vector_command":
106
- return P.Value(
107
- vector_command=P.VectorCommandValue(values=[0.0] * value_schema.vector_command.dimensions),
106
+ return K.Value(
107
+ vector_command=K.VectorCommandValue(values=[0.0] * value_schema.vector_command.dimensions),
108
108
  )
109
109
  case "state_tensor":
110
- return P.Value(
111
- state_tensor=P.StateTensorValue(
110
+ return K.Value(
111
+ state_tensor=K.StateTensorValue(
112
112
  data=b"\x00"
113
113
  * np.prod(value_schema.state_tensor.shape)
114
114
  * dtype_num_bytes(value_schema.state_tensor.dtype)
@@ -118,8 +118,8 @@ def get_dummy_value(value_schema: P.ValueSchema) -> P.Value:
118
118
  raise ValueError(f"Invalid value type: {value_type}")
119
119
 
120
120
 
121
- def get_dummy_io(schema: P.IOSchema) -> P.IO:
122
- io_value = P.IO()
121
+ def get_dummy_io(schema: K.IOSchema) -> K.IO:
122
+ io_value = K.IO()
123
123
  for value_schema in schema.values:
124
124
  io_value.values.append(get_dummy_value(value_schema))
125
125
  return io_value
kinfer/serialize/types.py CHANGED
@@ -2,16 +2,16 @@
2
2
 
3
3
  from typing import Type, TypeVar, cast
4
4
 
5
- from kinfer import proto as P
5
+ from kinfer import proto as K
6
6
 
7
7
  T = TypeVar("T")
8
8
 
9
9
 
10
- def to_value_type(enum_value: T) -> P.Value:
10
+ def to_value_type(enum_value: T) -> K.Value:
11
11
  """Convert an enum value to ValueType."""
12
- return cast(P.Value, enum_value)
12
+ return cast(K.Value, enum_value)
13
13
 
14
14
 
15
- def from_value_type(value_type: P.Value, enum_class: Type[T]) -> T:
15
+ def from_value_type(value_type: K.Value, enum_class: Type[T]) -> T:
16
16
  """Convert a ValueType to the specified enum type."""
17
17
  return cast(T, value_type)
kinfer/serialize/utils.py CHANGED
@@ -6,112 +6,112 @@ from typing import Any, Collection
6
6
  import numpy as np
7
7
  import torch
8
8
 
9
- from kinfer import proto as P
9
+ from kinfer import proto as K
10
10
 
11
11
 
12
- def numpy_dtype(dtype: P.DType.ValueType) -> type[np.floating] | type[np.integer]:
12
+ def numpy_dtype(dtype: K.DType.ValueType) -> type[np.floating] | type[np.integer]:
13
13
  match dtype:
14
- case P.DType.FP8:
14
+ case K.DType.FP8:
15
15
  raise NotImplementedError("FP8 is not supported")
16
- case P.DType.FP16:
16
+ case K.DType.FP16:
17
17
  return np.float16
18
- case P.DType.FP32:
18
+ case K.DType.FP32:
19
19
  return np.float32
20
- case P.DType.FP64:
20
+ case K.DType.FP64:
21
21
  return np.float64
22
- case P.DType.INT8:
22
+ case K.DType.INT8:
23
23
  return np.int8
24
- case P.DType.INT16:
24
+ case K.DType.INT16:
25
25
  return np.int16
26
- case P.DType.INT32:
26
+ case K.DType.INT32:
27
27
  return np.int32
28
- case P.DType.INT64:
28
+ case K.DType.INT64:
29
29
  return np.int64
30
- case P.DType.UINT8:
30
+ case K.DType.UINT8:
31
31
  return np.uint8
32
- case P.DType.UINT16:
32
+ case K.DType.UINT16:
33
33
  return np.uint16
34
- case P.DType.UINT32:
34
+ case K.DType.UINT32:
35
35
  return np.uint32
36
- case P.DType.UINT64:
36
+ case K.DType.UINT64:
37
37
  return np.uint64
38
38
  case _:
39
39
  raise ValueError(f"Unsupported dtype: {dtype}")
40
40
 
41
41
 
42
- def pytorch_dtype(dtype: P.DType.ValueType) -> torch.dtype:
42
+ def pytorch_dtype(dtype: K.DType.ValueType) -> torch.dtype:
43
43
  match dtype:
44
- case P.DType.FP8:
44
+ case K.DType.FP8:
45
45
  raise NotImplementedError("FP8 is not supported")
46
- case P.DType.FP16:
46
+ case K.DType.FP16:
47
47
  return torch.float16
48
- case P.DType.FP32:
48
+ case K.DType.FP32:
49
49
  return torch.float32
50
- case P.DType.FP64:
50
+ case K.DType.FP64:
51
51
  return torch.float64
52
- case P.DType.INT8:
52
+ case K.DType.INT8:
53
53
  return torch.int8
54
- case P.DType.INT16:
54
+ case K.DType.INT16:
55
55
  return torch.int16
56
- case P.DType.INT32:
56
+ case K.DType.INT32:
57
57
  return torch.int32
58
- case P.DType.INT64:
58
+ case K.DType.INT64:
59
59
  return torch.int64
60
- case P.DType.UINT8:
60
+ case K.DType.UINT8:
61
61
  return torch.uint8
62
- case P.DType.UINT16:
62
+ case K.DType.UINT16:
63
63
  return torch.uint16
64
- case P.DType.UINT32:
64
+ case K.DType.UINT32:
65
65
  return torch.uint32
66
- case P.DType.UINT64:
66
+ case K.DType.UINT64:
67
67
  return torch.uint64
68
68
  case _:
69
69
  raise ValueError(f"Unsupported dtype: {dtype}")
70
70
 
71
71
 
72
- def parse_bytes(data: bytes, dtype: P.DType.ValueType) -> np.ndarray:
72
+ def parse_bytes(data: bytes, dtype: K.DType.ValueType) -> np.ndarray:
73
73
  return np.frombuffer(data, dtype=numpy_dtype(dtype))
74
74
 
75
75
 
76
- def dtype_num_bytes(dtype: P.DType.ValueType) -> int:
76
+ def dtype_num_bytes(dtype: K.DType.ValueType) -> int:
77
77
  match dtype:
78
- case P.DType.FP8 | P.DType.INT8 | P.DType.UINT8:
78
+ case K.DType.FP8 | K.DType.INT8 | K.DType.UINT8:
79
79
  return 1
80
- case P.DType.FP16 | P.DType.INT16 | P.DType.UINT16:
80
+ case K.DType.FP16 | K.DType.INT16 | K.DType.UINT16:
81
81
  return 2
82
- case P.DType.FP32 | P.DType.INT32 | P.DType.UINT32:
82
+ case K.DType.FP32 | K.DType.INT32 | K.DType.UINT32:
83
83
  return 4
84
- case P.DType.FP64 | P.DType.INT64 | P.DType.UINT64:
84
+ case K.DType.FP64 | K.DType.INT64 | K.DType.UINT64:
85
85
  return 8
86
86
  case _:
87
87
  raise ValueError(f"Unsupported dtype: {dtype}")
88
88
 
89
89
 
90
- def dtype_range(dtype: P.DType.ValueType) -> tuple[int, int]:
90
+ def dtype_range(dtype: K.DType.ValueType) -> tuple[int, int]:
91
91
  match dtype:
92
- case P.DType.FP8:
92
+ case K.DType.FP8:
93
93
  return -1, 1
94
- case P.DType.FP16:
94
+ case K.DType.FP16:
95
95
  return -1, 1
96
- case P.DType.FP32:
96
+ case K.DType.FP32:
97
97
  return -1, 1
98
- case P.DType.FP64:
98
+ case K.DType.FP64:
99
99
  return -1, 1
100
- case P.DType.INT8:
100
+ case K.DType.INT8:
101
101
  return -(2**7), 2**7 - 1
102
- case P.DType.INT16:
102
+ case K.DType.INT16:
103
103
  return -(2**15), 2**15 - 1
104
- case P.DType.INT32:
104
+ case K.DType.INT32:
105
105
  return -(2**31), 2**31 - 1
106
- case P.DType.INT64:
106
+ case K.DType.INT64:
107
107
  return -(2**63), 2**63 - 1
108
- case P.DType.UINT8:
108
+ case K.DType.UINT8:
109
109
  return 0, 2**8 - 1
110
- case P.DType.UINT16:
110
+ case K.DType.UINT16:
111
111
  return 0, 2**16 - 1
112
- case P.DType.UINT32:
112
+ case K.DType.UINT32:
113
113
  return 0, 2**32 - 1
114
- case P.DType.UINT64:
114
+ case K.DType.UINT64:
115
115
  return 0, 2**64 - 1
116
116
  case _:
117
117
  raise ValueError(f"Unsupported dtype: {dtype}")
@@ -119,8 +119,8 @@ def dtype_range(dtype: P.DType.ValueType) -> tuple[int, int]:
119
119
 
120
120
  def convert_torque(
121
121
  value: float,
122
- from_unit: P.JointTorqueUnit.ValueType,
123
- to_unit: P.JointTorqueUnit.ValueType,
122
+ from_unit: K.JointTorqueUnit.ValueType,
123
+ to_unit: K.JointTorqueUnit.ValueType,
124
124
  ) -> float:
125
125
  if from_unit == to_unit:
126
126
  return value
@@ -129,30 +129,30 @@ def convert_torque(
129
129
 
130
130
  def convert_angular_velocity(
131
131
  value: float,
132
- from_unit: P.JointVelocityUnit.ValueType,
133
- to_unit: P.JointVelocityUnit.ValueType,
132
+ from_unit: K.JointVelocityUnit.ValueType,
133
+ to_unit: K.JointVelocityUnit.ValueType,
134
134
  ) -> float:
135
135
  if from_unit == to_unit:
136
136
  return value
137
- if from_unit == P.JointVelocityUnit.DEGREES_PER_SECOND:
138
- assert to_unit == P.JointVelocityUnit.RADIANS_PER_SECOND
137
+ if from_unit == K.JointVelocityUnit.DEGREES_PER_SECOND:
138
+ assert to_unit == K.JointVelocityUnit.RADIANS_PER_SECOND
139
139
  return value * math.pi / 180
140
- if from_unit == P.JointVelocityUnit.RADIANS_PER_SECOND:
141
- assert to_unit == P.JointVelocityUnit.DEGREES_PER_SECOND
140
+ if from_unit == K.JointVelocityUnit.RADIANS_PER_SECOND:
141
+ assert to_unit == K.JointVelocityUnit.DEGREES_PER_SECOND
142
142
  return value * 180 / math.pi
143
143
  raise ValueError(f"Unsupported unit: {from_unit}")
144
144
 
145
145
 
146
146
  def convert_angular_position(
147
147
  value: float,
148
- from_unit: P.JointPositionUnit.ValueType,
149
- to_unit: P.JointPositionUnit.ValueType,
148
+ from_unit: K.JointPositionUnit.ValueType,
149
+ to_unit: K.JointPositionUnit.ValueType,
150
150
  ) -> float:
151
151
  if from_unit == to_unit:
152
152
  return value
153
- if from_unit == P.JointPositionUnit.DEGREES:
153
+ if from_unit == K.JointPositionUnit.DEGREES:
154
154
  return value * math.pi / 180
155
- if from_unit == P.JointPositionUnit.RADIANS:
155
+ if from_unit == K.JointPositionUnit.RADIANS:
156
156
  return value * 180 / math.pi
157
157
  raise ValueError(f"Unsupported unit: {from_unit}")
158
158
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kinfer
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: Tool to make it easier to run a model on a real robot
5
5
  Home-page: https://github.com/kscalelabs/kinfer.git
6
6
  Author: K-Scale Labs
@@ -1,9 +1,9 @@
1
1
  kinfer/requirements.txt,sha256=-xI0a63Os_v2mkO0Cy5bA5envglD-2c4mdSeLG4movA,91
2
- kinfer/__init__.py,sha256=LSRl3lC7SWBk9or4fT1TYYPP92yhEeRca-3gxG8urM0,131
2
+ kinfer/__init__.py,sha256=Mt6PA3d3U9voePY0_GQ7rkc9Dgov93jY_OiFHcNDdBg,311
3
3
  kinfer/requirements-dev.txt,sha256=jZzaEENgXPHkAjbnwdglVCaV_GDkwCWIX2BWX0e3uLc,70
4
4
  kinfer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  kinfer/rust_bindings.pyi,sha256=KFNalMmwkfoS8BwJfVAz5APaqlW1ryp0xpmnbfud5kc,118
6
- kinfer/rust_bindings.cpython-312-darwin.so,sha256=UrAjAA3g9AScLwaUBNueJET4KWt7fO8oT44wbJd_ldI,436120
6
+ kinfer/rust_bindings.cpython-312-darwin.so,sha256=BZR-t6bOln21TcAfBbG52_Fr-PpKF8XannDy1AeULjw,436120
7
7
  kinfer/proto/kinfer_pb2.pyi,sha256=ogFIJ7p2G-ovFig6I0RfIpH4oZ4dd2MkxPznBXENkb8,34151
8
8
  kinfer/proto/__init__.py,sha256=Zz2ApZaHIF375552y54X63XEq3XhZjyujmX_MsNjLmQ,848
9
9
  kinfer/proto/kinfer_pb2.py,sha256=sng4W-ZOdBgCowYK3JcoxoFOmUhPac07YDaoi6noeq0,11968
@@ -16,24 +16,25 @@ kinfer/rust/src/onnx_serializer.rs,sha256=Ti0iLoJi5VPkX_Yq7QPHzmtiJZPXvySUqRw8sy
16
16
  kinfer/rust/src/serializer.rs,sha256=jaSnb6K8DDynCLdgBU4Nl4Ig8ZrZRdQUXjdZF1Ew7qs,6151
17
17
  kinfer/rust/src/model.rs,sha256=5IWOkl_yj8Ea7yZkFug18ALwKrOtUAg17d7RphrMP1Y,5243
18
18
  kinfer/rust/src/tests/onnx_serializer_tests.rs,sha256=KdrysHqhYC27lIdkNTSUJ9CTBs0PN0-8aw2Xe3pqk4E,7481
19
- kinfer/serialize/__init__.py,sha256=zUAaf-EpWtDF3ZTneoP0-wS2TjzhFrp5-5xs_yie1ZA,1281
20
- kinfer/serialize/numpy.py,sha256=g9u51h62-aTosNElSnAc5_8OHxCmDQaGWmeIAwSUm40,16146
21
- kinfer/serialize/types.py,sha256=vWc2QqiMBodu0zUx0u69su6h42J3PTpS8ttPYHaEKlA,427
22
- kinfer/serialize/pytorch.py,sha256=1trcjjdywLh93hLnA-6WB1q558RM7gOopdnluOV6ivk,16169
23
- kinfer/serialize/utils.py,sha256=VzchOS4Wv6zhm1STmth3kGV83ExNtlE0Vio1K3kM_tE,5382
24
- kinfer/serialize/json.py,sha256=fpacSJoyILWrPJPqJyqGJ9HpgweLSpNYokCWb7rXqks,15081
25
- kinfer/serialize/base.py,sha256=rCtfvexmhYGHBXAMxXgltMLE4zkshhqDNhaWu009y2c,16390
26
- kinfer/serialize/schema.py,sha256=xNkY6WQ55sfmZ4QgZy4eg4hxayCEFnAiFxYvyl_ojMQ,4730
27
- kinfer/inference/__init__.py,sha256=fT52B78HnErtXSv2pvipsDVsufZlmnMzvR9Ny0UudoE,22
28
- kinfer/inference/python.py,sha256=RN7bk-41EJjeWaokqMRFXLqw8rpPfLJsrtHmhiIy2OM,3012
29
- kinfer/export/__init__.py,sha256=hxLu7FmRYn01ysoOQalrMa5K_qg4rLNf8OAuoemzd6I,23
30
- kinfer/export/pytorch.py,sha256=xz8DKT1ZBTYITLGh-ef01eEGvWOzQ-SMInRI8ol1RzM,4529
19
+ kinfer/serialize/__init__.py,sha256=-_aNXvBDKh1LrLyF16Kkp3_Rmdd0EeQ3EUy_ZJJs4gk,1997
20
+ kinfer/serialize/numpy.py,sha256=AovEjcWBVTpRk1bERQtTIP6Ac5W0ivx02lkmkbH8lTU,16146
21
+ kinfer/serialize/types.py,sha256=op45q0NVrugS00fh0Zp7RNfETybxhF7daEp3dXhK-nE,427
22
+ kinfer/serialize/pytorch.py,sha256=KO-YRrl1H7pVwx1xWdOvkUSr7Zy6YZVweq16dzcpguI,16169
23
+ kinfer/serialize/utils.py,sha256=ptvNzyQTRe_ZI1Zc--WALVxHTbJRNaRuUE5P2dWREbI,5382
24
+ kinfer/serialize/json.py,sha256=QywCQhYAlsA5AY-tfwzmI_unN0znqQyPo-hBgfVT-m0,15081
25
+ kinfer/serialize/base.py,sha256=2nc0kmWyVqEIbSxpGqRuCgROUp0eciuRLz_-Dgny_YQ,16390
26
+ kinfer/serialize/schema.py,sha256=wx5Y9vykRvMC5BtMkGtKxvAKvjW4-56ZU449NKfETTE,4730
27
+ kinfer/inference/__init__.py,sha256=pn8nc2oy3UXdmD_Fm7BcrgE1Tw-LMrQHbHp7jIzw4d8,55
28
+ kinfer/inference/python.py,sha256=CQanHMPLwQ_LOikaL78wX5daW-lhE0XVSfPJSYIVNBM,2177
29
+ kinfer/inference/base.py,sha256=HHxYSfehICGDgVTfm9babZ1OKbjKyRuNUUDjx7cGmSU,1778
30
+ kinfer/export/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
+ kinfer/export/pytorch.py,sha256=6fBnyS6Q1xL8R5UtD3Zw4fU1sB-Ta6nmpJ8qg9UfryA,4529
31
32
  kinfer/rust_bindings/Cargo.toml,sha256=VZ6MY1QpqUQnDC1ygeSScaf8X-m1zXye6yaODV4RE5o,387
32
33
  kinfer/rust_bindings/pyproject.toml,sha256=jLcJuHCnQRh9HWR_R7a9qLHwj6LMBgnHyeKK_DruO1Y,135
33
34
  kinfer/rust_bindings/src/lib.rs,sha256=rIq7S32Xjv83GXUW1ZNAd5Ex1HwDAYvG0quYJr6VaAQ,405
34
35
  kinfer/rust_bindings/src/bin/stub_gen.rs,sha256=hhoVGnaSfazbSfj5a4x6mPicGPOgWQAfsDmiPej0B6Y,133
35
- kinfer-0.3.2.dist-info/RECORD,,
36
- kinfer-0.3.2.dist-info/LICENSE,sha256=Qw-Z0XTwS-diSW91e_jLeBPX9zZbAatOJTBLdPHPaC0,1069
37
- kinfer-0.3.2.dist-info/WHEEL,sha256=7Wd-yga4fjSiXpUH443rsPZpiZ4h8-uNrXJrYRW_e14,109
38
- kinfer-0.3.2.dist-info/top_level.txt,sha256=6mY_t3PYr3Dm0dpqMk80uSnArbvGfCFkxOh1QWtgDEo,7
39
- kinfer-0.3.2.dist-info/METADATA,sha256=RW4H6claL0CC4hanA2ep3Jp3v_ogINeg6YtXwtospdk,1884
36
+ kinfer-0.3.3.dist-info/RECORD,,
37
+ kinfer-0.3.3.dist-info/LICENSE,sha256=Qw-Z0XTwS-diSW91e_jLeBPX9zZbAatOJTBLdPHPaC0,1069
38
+ kinfer-0.3.3.dist-info/WHEEL,sha256=7Wd-yga4fjSiXpUH443rsPZpiZ4h8-uNrXJrYRW_e14,109
39
+ kinfer-0.3.3.dist-info/top_level.txt,sha256=6mY_t3PYr3Dm0dpqMk80uSnArbvGfCFkxOh1QWtgDEo,7
40
+ kinfer-0.3.3.dist-info/METADATA,sha256=xmI3l8I2s-kqg-Zn_d37XGreHeb3twrEz0bArq1PMKQ,1884
File without changes