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.
- kinfer/__init__.py +5 -1
- kinfer/export/__init__.py +0 -1
- kinfer/export/pytorch.py +3 -3
- kinfer/inference/__init__.py +2 -1
- kinfer/inference/base.py +64 -0
- kinfer/inference/python.py +9 -35
- kinfer/rust_bindings.cpython-312-darwin.so +0 -0
- kinfer/serialize/__init__.py +28 -4
- kinfer/serialize/base.py +61 -61
- kinfer/serialize/json.py +61 -61
- kinfer/serialize/numpy.py +62 -62
- kinfer/serialize/pytorch.py +55 -55
- kinfer/serialize/schema.py +31 -31
- kinfer/serialize/types.py +4 -4
- kinfer/serialize/utils.py +58 -58
- {kinfer-0.3.2.dist-info → kinfer-0.3.3.dist-info}/METADATA +1 -1
- {kinfer-0.3.2.dist-info → kinfer-0.3.3.dist-info}/RECORD +20 -19
- {kinfer-0.3.2.dist-info → kinfer-0.3.3.dist-info}/LICENSE +0 -0
- {kinfer-0.3.2.dist-info → kinfer-0.3.3.dist-info}/WHEEL +0 -0
- {kinfer-0.3.2.dist-info → kinfer-0.3.3.dist-info}/top_level.txt +0 -0
kinfer/serialize/schema.py
CHANGED
@@ -2,19 +2,19 @@
|
|
2
2
|
|
3
3
|
import numpy as np
|
4
4
|
|
5
|
-
from kinfer import proto as
|
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:
|
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
|
15
|
-
joint_positions=
|
14
|
+
return K.Value(
|
15
|
+
joint_positions=K.JointPositionsValue(
|
16
16
|
values=[
|
17
|
-
|
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
|
28
|
-
joint_velocities=
|
27
|
+
return K.Value(
|
28
|
+
joint_velocities=K.JointVelocitiesValue(
|
29
29
|
values=[
|
30
|
-
|
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
|
41
|
-
joint_torques=
|
40
|
+
return K.Value(
|
41
|
+
joint_torques=K.JointTorquesValue(
|
42
42
|
values=[
|
43
|
-
|
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
|
54
|
-
joint_commands=
|
53
|
+
return K.Value(
|
54
|
+
joint_commands=K.JointCommandsValue(
|
55
55
|
values=[
|
56
|
-
|
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
|
73
|
-
camera_frame=
|
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
|
84
|
-
audio_frame=
|
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
|
95
|
-
imu=
|
96
|
-
linear_acceleration=
|
97
|
-
angular_velocity=
|
98
|
-
magnetic_field=
|
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
|
103
|
-
timestamp=
|
102
|
+
return K.Value(
|
103
|
+
timestamp=K.TimestampValue(seconds=1728000000, nanos=0),
|
104
104
|
)
|
105
105
|
case "vector_command":
|
106
|
-
return
|
107
|
-
vector_command=
|
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
|
111
|
-
state_tensor=
|
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:
|
122
|
-
io_value =
|
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
|
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) ->
|
10
|
+
def to_value_type(enum_value: T) -> K.Value:
|
11
11
|
"""Convert an enum value to ValueType."""
|
12
|
-
return cast(
|
12
|
+
return cast(K.Value, enum_value)
|
13
13
|
|
14
14
|
|
15
|
-
def from_value_type(value_type:
|
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
|
9
|
+
from kinfer import proto as K
|
10
10
|
|
11
11
|
|
12
|
-
def numpy_dtype(dtype:
|
12
|
+
def numpy_dtype(dtype: K.DType.ValueType) -> type[np.floating] | type[np.integer]:
|
13
13
|
match dtype:
|
14
|
-
case
|
14
|
+
case K.DType.FP8:
|
15
15
|
raise NotImplementedError("FP8 is not supported")
|
16
|
-
case
|
16
|
+
case K.DType.FP16:
|
17
17
|
return np.float16
|
18
|
-
case
|
18
|
+
case K.DType.FP32:
|
19
19
|
return np.float32
|
20
|
-
case
|
20
|
+
case K.DType.FP64:
|
21
21
|
return np.float64
|
22
|
-
case
|
22
|
+
case K.DType.INT8:
|
23
23
|
return np.int8
|
24
|
-
case
|
24
|
+
case K.DType.INT16:
|
25
25
|
return np.int16
|
26
|
-
case
|
26
|
+
case K.DType.INT32:
|
27
27
|
return np.int32
|
28
|
-
case
|
28
|
+
case K.DType.INT64:
|
29
29
|
return np.int64
|
30
|
-
case
|
30
|
+
case K.DType.UINT8:
|
31
31
|
return np.uint8
|
32
|
-
case
|
32
|
+
case K.DType.UINT16:
|
33
33
|
return np.uint16
|
34
|
-
case
|
34
|
+
case K.DType.UINT32:
|
35
35
|
return np.uint32
|
36
|
-
case
|
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:
|
42
|
+
def pytorch_dtype(dtype: K.DType.ValueType) -> torch.dtype:
|
43
43
|
match dtype:
|
44
|
-
case
|
44
|
+
case K.DType.FP8:
|
45
45
|
raise NotImplementedError("FP8 is not supported")
|
46
|
-
case
|
46
|
+
case K.DType.FP16:
|
47
47
|
return torch.float16
|
48
|
-
case
|
48
|
+
case K.DType.FP32:
|
49
49
|
return torch.float32
|
50
|
-
case
|
50
|
+
case K.DType.FP64:
|
51
51
|
return torch.float64
|
52
|
-
case
|
52
|
+
case K.DType.INT8:
|
53
53
|
return torch.int8
|
54
|
-
case
|
54
|
+
case K.DType.INT16:
|
55
55
|
return torch.int16
|
56
|
-
case
|
56
|
+
case K.DType.INT32:
|
57
57
|
return torch.int32
|
58
|
-
case
|
58
|
+
case K.DType.INT64:
|
59
59
|
return torch.int64
|
60
|
-
case
|
60
|
+
case K.DType.UINT8:
|
61
61
|
return torch.uint8
|
62
|
-
case
|
62
|
+
case K.DType.UINT16:
|
63
63
|
return torch.uint16
|
64
|
-
case
|
64
|
+
case K.DType.UINT32:
|
65
65
|
return torch.uint32
|
66
|
-
case
|
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:
|
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:
|
76
|
+
def dtype_num_bytes(dtype: K.DType.ValueType) -> int:
|
77
77
|
match dtype:
|
78
|
-
case
|
78
|
+
case K.DType.FP8 | K.DType.INT8 | K.DType.UINT8:
|
79
79
|
return 1
|
80
|
-
case
|
80
|
+
case K.DType.FP16 | K.DType.INT16 | K.DType.UINT16:
|
81
81
|
return 2
|
82
|
-
case
|
82
|
+
case K.DType.FP32 | K.DType.INT32 | K.DType.UINT32:
|
83
83
|
return 4
|
84
|
-
case
|
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:
|
90
|
+
def dtype_range(dtype: K.DType.ValueType) -> tuple[int, int]:
|
91
91
|
match dtype:
|
92
|
-
case
|
92
|
+
case K.DType.FP8:
|
93
93
|
return -1, 1
|
94
|
-
case
|
94
|
+
case K.DType.FP16:
|
95
95
|
return -1, 1
|
96
|
-
case
|
96
|
+
case K.DType.FP32:
|
97
97
|
return -1, 1
|
98
|
-
case
|
98
|
+
case K.DType.FP64:
|
99
99
|
return -1, 1
|
100
|
-
case
|
100
|
+
case K.DType.INT8:
|
101
101
|
return -(2**7), 2**7 - 1
|
102
|
-
case
|
102
|
+
case K.DType.INT16:
|
103
103
|
return -(2**15), 2**15 - 1
|
104
|
-
case
|
104
|
+
case K.DType.INT32:
|
105
105
|
return -(2**31), 2**31 - 1
|
106
|
-
case
|
106
|
+
case K.DType.INT64:
|
107
107
|
return -(2**63), 2**63 - 1
|
108
|
-
case
|
108
|
+
case K.DType.UINT8:
|
109
109
|
return 0, 2**8 - 1
|
110
|
-
case
|
110
|
+
case K.DType.UINT16:
|
111
111
|
return 0, 2**16 - 1
|
112
|
-
case
|
112
|
+
case K.DType.UINT32:
|
113
113
|
return 0, 2**32 - 1
|
114
|
-
case
|
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:
|
123
|
-
to_unit:
|
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:
|
133
|
-
to_unit:
|
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 ==
|
138
|
-
assert to_unit ==
|
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 ==
|
141
|
-
assert to_unit ==
|
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:
|
149
|
-
to_unit:
|
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 ==
|
153
|
+
if from_unit == K.JointPositionUnit.DEGREES:
|
154
154
|
return value * math.pi / 180
|
155
|
-
if from_unit ==
|
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,9 +1,9 @@
|
|
1
1
|
kinfer/requirements.txt,sha256=-xI0a63Os_v2mkO0Cy5bA5envglD-2c4mdSeLG4movA,91
|
2
|
-
kinfer/__init__.py,sha256=
|
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=
|
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
|
20
|
-
kinfer/serialize/numpy.py,sha256=
|
21
|
-
kinfer/serialize/types.py,sha256=
|
22
|
-
kinfer/serialize/pytorch.py,sha256=
|
23
|
-
kinfer/serialize/utils.py,sha256=
|
24
|
-
kinfer/serialize/json.py,sha256=
|
25
|
-
kinfer/serialize/base.py,sha256=
|
26
|
-
kinfer/serialize/schema.py,sha256=
|
27
|
-
kinfer/inference/__init__.py,sha256=
|
28
|
-
kinfer/inference/python.py,sha256=
|
29
|
-
kinfer/
|
30
|
-
kinfer/export/
|
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.
|
36
|
-
kinfer-0.3.
|
37
|
-
kinfer-0.3.
|
38
|
-
kinfer-0.3.
|
39
|
-
kinfer-0.3.
|
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
|
File without changes
|
File without changes
|