python-ipmi 0.5.5__py3-none-any.whl → 0.5.7__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.
pyipmi/bmc.py CHANGED
@@ -24,6 +24,9 @@ class Bmc(object):
24
24
  def get_device_id(self):
25
25
  return DeviceId(self.send_message_with_name('GetDeviceId'))
26
26
 
27
+ def get_device_guid(self):
28
+ return DeviceGuid(self.send_message_with_name('GetDeviceGuid'))
29
+
27
30
  def cold_reset(self):
28
31
  self.send_message_with_name('ColdReset')
29
32
 
@@ -121,6 +124,7 @@ class DeviceId(State):
121
124
  string += ' ipmi: %s' % self.ipmi_version
122
125
  string += ' manufacturer: %d' % self.manufacturer_id
123
126
  string += ' product: %d' % self.product_id
127
+ string += ' functions: %s' % ','.join(self.supported_functions)
124
128
  return string
125
129
 
126
130
  def supports_function(self, name):
@@ -164,3 +168,14 @@ class DeviceId(State):
164
168
  self.aux = None
165
169
  if rsp.auxiliary is not None:
166
170
  self.aux = list(rsp.auxiliary)
171
+
172
+
173
+ class DeviceGuid(State):
174
+ def __str__(self):
175
+ return 'Device GUID: %s' % self.device_guid_string
176
+
177
+ def _from_response(self, rsp):
178
+ self.device_guid = rsp.device_guid
179
+ self.device_guid_string = \
180
+ '%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-' \
181
+ '%02x%02x%02x%02x%02x%02x' % tuple(reversed(self.device_guid))
pyipmi/interfaces/ipmb.py CHANGED
@@ -45,10 +45,6 @@ class IpmbHeader(object):
45
45
  *-------*--------------*----------*-------*---------------*-------*
46
46
  """
47
47
 
48
- def __init__(self, data=None):
49
- if data:
50
- self.decode(data)
51
-
52
48
  rs_sa = None
53
49
  rs_lun = None
54
50
  rq_sa = None
@@ -58,6 +54,17 @@ class IpmbHeader(object):
58
54
  cmdid = None
59
55
  checksum = None
60
56
 
57
+ def __init__(self, data=None):
58
+ if data:
59
+ self.decode(data)
60
+
61
+ def __str__(self):
62
+ return f'rs_sa=0x{self.rs_sa:02x}, rs_lun={self.rs_lun}, ' \
63
+ f'rq_sa=0x{self.rq_sa:02x}, rq_lun={self.rq_lun}, ' \
64
+ f'rq_seq={self.rq_seq}, ' \
65
+ f'netfn=0x{self.netfn:02x}, ' \
66
+ f'cmdid=0x{self.cmdid:02x}'
67
+
61
68
 
62
69
  class IpmbHeaderReq(IpmbHeader):
63
70
  """Representation of the IPMI request message header."""
@@ -214,7 +221,8 @@ def decode_bridged_message(rx_data):
214
221
  return rx_data
215
222
 
216
223
 
217
- def rx_filter(header, data):
224
+ def rx_filter(header, data, rq_sa=False, rs_sa=False, rq_lun=False,
225
+ rs_lun=True, rq_seq=True):
218
226
  """Check if the message in rx_data matches to the information in header.
219
227
 
220
228
  The following checks are done:
@@ -234,15 +242,26 @@ def rx_filter(header, data):
234
242
  checks = [
235
243
  (checksum(data[0:3]), 0, 'Header checksum failed'),
236
244
  (checksum(data[3:]), 0, 'payload checksum failed'),
237
- # rsp_header.rq_sa, header.rq_sa, 'slave address mismatch'),
238
245
  (rsp_header.netfn, header.netfn | 1, 'NetFn mismatch'),
239
- # rsp_header.rs_sa, header.rs_sa, 'target address mismatch'),
240
- # rsp_header.rq_lun, header.rq_lun, 'request LUN mismatch'),
241
- (rsp_header.rs_lun, header.rs_lun, 'responder LUN mismatch'),
242
- (rsp_header.rq_seq, header.rq_seq, 'sequence number mismatch'),
243
246
  (rsp_header.cmdid, header.cmdid, 'command id mismatch'),
244
247
  ]
245
248
 
249
+ # optional checks
250
+ if rq_sa:
251
+ checks.append((rsp_header.rq_sa, header.rq_sa, 'slave address mismatch'))
252
+
253
+ if rs_sa:
254
+ checks.append((rsp_header.rs_sa, header.rs_sa, 'target address mismatch'))
255
+
256
+ if rq_lun:
257
+ checks.append((rsp_header.rq_lun, header.rq_lun, 'request LUN mismatch'))
258
+
259
+ if rs_lun:
260
+ checks.append((rsp_header.rs_lun, header.rs_lun, 'responder LUN mismatch'))
261
+
262
+ if rq_seq:
263
+ checks.append((rsp_header.rq_seq, header.rq_seq, 'sequence number mismatch'))
264
+
246
265
  match = True
247
266
 
248
267
  for left, right, msg in checks:
@@ -42,12 +42,17 @@ class Ipmitool(object):
42
42
  IPMITOOL_PATH = 'ipmitool'
43
43
  supported_interfaces = ['lan', 'lanplus', 'serial-terminal', 'open']
44
44
 
45
- def __init__(self, interface_type='lan'):
45
+ def __init__(self, interface_type='lan', cipher=None):
46
46
  if interface_type in self.supported_interfaces:
47
47
  self._interface_type = interface_type
48
48
  else:
49
49
  raise RuntimeError('interface type %s not supported' %
50
50
  interface_type)
51
+ if cipher is not None and int(cipher) not in range(0, 255):
52
+ raise RuntimeError('cipher %s not in allowed range [0-255]' %
53
+ cipher)
54
+ else:
55
+ self._cipher = cipher
51
56
 
52
57
  self.re_completion_code = re.compile(
53
58
  r"Unable to send RAW command \(.*rsp=(0x[0-9a-f]+)\)")
@@ -233,6 +238,8 @@ class Ipmitool(object):
233
238
 
234
239
  cmd += self._build_ipmitool_priv_level(self._session.priv_level)
235
240
 
241
+ if self._cipher:
242
+ cmd += (' -C %s' % self._cipher)
236
243
  if self._session.auth_type == Session.AUTH_TYPE_NONE:
237
244
  cmd += ' -P ""'
238
245
  elif self._session.auth_type == Session.AUTH_TYPE_PASSWORD:
pyipmi/interfaces/rmcp.py CHANGED
@@ -380,6 +380,16 @@ class Rmcp(object):
380
380
  interface="rmcp",
381
381
  quirks_cfg={'rmcp_ignore_sdu_length': True}
382
382
  )
383
+
384
+ - `rmcp_ignore_rq_seq: bool` wheater or not to verify the req_seq field
385
+ for rx_filter. The default value is `False`.
386
+
387
+ Example:
388
+
389
+ interfaces.create_interface(
390
+ interface="rmcp",
391
+ quirks_cfg={'rmcp_ignore_rq_seq': True}
392
+ )
383
393
  """
384
394
  self.host = None
385
395
  self.port = None
@@ -396,6 +406,7 @@ class Rmcp(object):
396
406
  self.transaction_lock = threading.Lock()
397
407
  self.quirks_cfg = quirks_cfg
398
408
  self.ignore_sdu_length = quirks_cfg.get('rmcp_ignore_sdu_length', False)
409
+ self.ignore_rq_seq = quirks_cfg.get('rmcp_ignore_rq_seq', False)
399
410
 
400
411
  def _send_rmcp_msg(self, sdu, class_of_msg):
401
412
  rmcp = RmcpMsg(class_of_msg)
@@ -476,8 +487,7 @@ class Rmcp(object):
476
487
  req = create_request_by_name('ActivateSession')
477
488
  req.target = self.host_target
478
489
  req.authentication.type = session.auth_type
479
- req.privilege_level.maximum_requested =\
480
- Session.PRIV_LEVEL_ADMINISTRATOR
490
+ req.privilege_level.maximum_requested = session.priv_level
481
491
  req.challenge_string = challenge
482
492
  req.session_id = self._session.sid
483
493
  req.initial_outbound_sequence_number = random.randrange(1, 0xffffffff)
@@ -610,7 +620,8 @@ class Rmcp(object):
610
620
  # it's not really a retry
611
621
  continue
612
622
 
613
- received = rx_filter(header, rx_data)
623
+ received = rx_filter(header, rx_data,
624
+ rq_seq=not self.ignore_rq_seq)
614
625
 
615
626
  if not received:
616
627
  self._q.put(rx_data)
pyipmi/ipmitool.py CHANGED
@@ -488,6 +488,7 @@ Aardvark interface options:
488
488
 
489
489
  Ipmitool interface options:
490
490
  interface_type Set the interface type to be used (lan, lanplus, serial, open)
491
+ cipher Set the cipher to be used (0-255)
491
492
 
492
493
  Ipmbdev interface options:
493
494
  port=<path> Specify path to Linux IPMB device (/dev/ipmb-0 by default)
@@ -533,6 +534,8 @@ def parse_interface_options(interface_name, options):
533
534
  elif interface_name == 'ipmitool':
534
535
  if name == 'interface_type':
535
536
  interface_options['interface_type'] = value
537
+ elif name == 'cipher':
538
+ interface_options['cipher'] = value
536
539
  else:
537
540
  print('Warning: unknown option %s' % name)
538
541
  elif interface_name == 'ipmbdev':
pyipmi/msgs/bmc.py CHANGED
@@ -14,9 +14,6 @@
14
14
  # License along with this library; if not, write to the Free Software
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
- from __future__ import absolute_import
18
-
19
-
20
17
  from . import constants
21
18
  from . import register_message_class
22
19
  from . import Message
@@ -174,17 +171,19 @@ class GetAcpiPowerStateRsp(Message):
174
171
 
175
172
 
176
173
  @register_message_class
177
- class GetDeviceGuideReq(Message):
174
+ class GetDeviceGuidReq(Message):
178
175
  __cmdid__ = constants.CMDID_GET_DEVICE_GUID
179
176
  __netfn__ = constants.NETFN_APP
180
- __not_implemented__ = True
181
177
 
182
178
 
183
179
  @register_message_class
184
- class GetDeviceGuideRsp(Message):
180
+ class GetDeviceGuidRsp(Message):
185
181
  __cmdid__ = constants.CMDID_GET_DEVICE_GUID
186
182
  __netfn__ = constants.NETFN_APP | 1
187
- __not_implemented__ = True
183
+ __fields__ = (
184
+ CompletionCode(),
185
+ ByteArray('device_guid', 16),
186
+ )
188
187
 
189
188
 
190
189
  @register_message_class
pyipmi/msgs/chassis.py CHANGED
@@ -1,4 +1,3 @@
1
- from __future__ import absolute_import
2
1
  # Copyright (c) 2014 Kontron Europe GmbH
3
2
  #
4
3
  # This library is free software; you can redistribute it and/or
pyipmi/msgs/dcmi.py CHANGED
@@ -14,8 +14,6 @@
14
14
  # License along with this library; if not, write to the Free Software
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
- from __future__ import absolute_import
18
-
19
17
 
20
18
  from . import constants
21
19
  from . import register_message_class
pyipmi/msgs/event.py CHANGED
@@ -1,4 +1,3 @@
1
- from __future__ import absolute_import
2
1
  # Copyright (c) 2014 Kontron Europe GmbH
3
2
  #
4
3
  # This library is free software; you can redistribute it and/or
pyipmi/msgs/fru.py CHANGED
@@ -1,4 +1,3 @@
1
- from __future__ import absolute_import
2
1
  # Copyright (c) 2014 Kontron Europe GmbH
3
2
  #
4
3
  # This library is free software; you can redistribute it and/or
pyipmi/msgs/hpm.py CHANGED
@@ -1,4 +1,3 @@
1
- from __future__ import absolute_import
2
1
  # Copyright (c) 2014 Kontron Europe GmbH
3
2
  #
4
3
  # This library is free software; you can redistribute it and/or
pyipmi/msgs/lan.py CHANGED
@@ -1,4 +1,3 @@
1
- from __future__ import absolute_import
2
1
  # Copyright (c) 2014 Kontron Europe GmbH
3
2
  #
4
3
  # This library is free software; you can redistribute it and/or
pyipmi/msgs/message.py CHANGED
@@ -14,9 +14,6 @@
14
14
  # License along with this library; if not, write to the Free Software
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
-
18
- from __future__ import absolute_import
19
-
20
17
  from array import array
21
18
 
22
19
  from . import constants
@@ -73,7 +70,7 @@ class ByteArray(BaseField):
73
70
  if self.default is not None:
74
71
  return array('B', self.default)
75
72
  else:
76
- return array('B', self.length * '\x00')
73
+ return array('B', self.length * b'\x00')
77
74
 
78
75
 
79
76
  class VariableByteArray(ByteArray):
pyipmi/msgs/picmg.py CHANGED
@@ -14,8 +14,6 @@
14
14
  # License along with this library; if not, write to the Free Software
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
- from __future__ import absolute_import
18
-
19
17
  from . import constants
20
18
  from . import register_message_class
21
19
  from . import Message
pyipmi/msgs/registry.py CHANGED
@@ -14,7 +14,6 @@
14
14
  # License along with this library; if not, write to the Free Software
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
-
18
17
  from functools import partial
19
18
  from ..errors import DescriptionError
20
19
 
pyipmi/msgs/sdr.py CHANGED
@@ -13,7 +13,6 @@
13
13
  # You should have received a copy of the GNU Lesser General Public
14
14
  # License along with this library; if not, write to the Free Software
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
- from __future__ import absolute_import
17
16
 
18
17
  from . import constants
19
18
  from . import register_message_class
pyipmi/msgs/sel.py CHANGED
@@ -1,4 +1,3 @@
1
- from __future__ import absolute_import
2
1
  # Copyright (c) 2014 Kontron Europe GmbH
3
2
  #
4
3
  # This library is free software; you can redistribute it and/or
pyipmi/msgs/sensor.py CHANGED
@@ -1,4 +1,3 @@
1
- from __future__ import absolute_import
2
1
  # Copyright (c) 2014 Kontron Europe GmbH
3
2
  #
4
3
  # This library is free software; you can redistribute it and/or
pyipmi/msgs/vita.py CHANGED
@@ -14,8 +14,6 @@
14
14
  # License along with this library; if not, write to the Free Software
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
- from __future__ import absolute_import
18
-
19
17
  from . import constants
20
18
  from . import register_message_class
21
19
  from . import Message
pyipmi/version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  # This file was autogenerated by setup.py
2
- __version__ = '0.5.5'
2
+ __version__ = '0.5.7'
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-ipmi
3
- Version: 0.5.5
3
+ Version: 0.5.7
4
4
  Summary: Pure python IPMI library
5
5
  Home-page: https://github.com/kontron/python-ipmi
6
- Download-URL: https://github.com/kontron/python-ipmi/tarball/0.5.5
6
+ Download-URL: https://github.com/kontron/python-ipmi/tarball/0.5.7
7
7
  Author: Michael Walle, Heiko Thiery
8
8
  Author-email: michael.walle@kontron.com, heiko.thiery@kontron.com
9
9
  License: LGPLv2+
@@ -20,6 +20,7 @@ Classifier: Programming Language :: Python :: 3.9
20
20
  Classifier: Programming Language :: Python :: 3.10
21
21
  Classifier: Programming Language :: Python :: 3.11
22
22
  Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
23
24
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
25
  License-File: COPYING
25
26
  License-File: AUTHORS
@@ -105,6 +106,7 @@ Example with lan interface:
105
106
 
106
107
  connection.session.set_session_type_rmcp('10.0.0.1', port=623)
107
108
  connection.session.set_auth_type_user('admin', 'admin')
109
+ connection.session.set_priv_level("ADMINISTRATOR")
108
110
  connection.session.establish()
109
111
 
110
112
  connection.get_device_id()
@@ -113,7 +115,7 @@ ipmitool command:
113
115
 
114
116
  .. code:: shell
115
117
 
116
- ipmitool -I lan -H 10.0.0.1 -p 623 -U "admin" -P "admin" -t 0x82 -b 0 -l 0 raw 0x06 0x01
118
+ ipmitool -I lan -H 10.0.0.1 -p 623 -L "ADMINISTRATOR" -U "admin" -P "admin" -t 0x82 -b 0 -l 0 raw 0x06 0x01
117
119
 
118
120
 
119
121
  Example with serial interface:
@@ -1,5 +1,5 @@
1
1
  pyipmi/__init__.py,sha256=fKok5-j0Yc57qmnOioSB703BhoG7qpT_9ye9uDQNgKc,7779
2
- pyipmi/bmc.py,sha256=or2Dh0gDquDHYPMICWmxhgpuvz54JIGLbwyut4v-3Ds,6178
2
+ pyipmi/bmc.py,sha256=fgMR2GkPPvXDWeZ4wjwd1kKNcZE3GGZ00fVU5p5_7kA,6714
3
3
  pyipmi/chassis.py,sha256=pWxPm5Vtc6NlTNWyV2lqOR-73UUOf3hJ4pXypC_uV3k,9977
4
4
  pyipmi/constants.py,sha256=3Opcz-XtjcxvYRCV5JCPkIYcNLkEutYwdk8XE2bHm9U,1421
5
5
  pyipmi/dcmi.py,sha256=9hPYe7gfFqtX-VOkZ0cKG-LLVkwqOlYXS4UQLcny8zE,2359
@@ -10,7 +10,7 @@ pyipmi/fields.py,sha256=CmbJ6OCSLgFkwVLCBr4wYXNzUzApHhfeFqAe7vGJuZ4,3570
10
10
  pyipmi/fru.py,sha256=6FzX8UNZgptpHnO-c14v4AZcU-ToPC1C5mWWeX_xgxo,16518
11
11
  pyipmi/helper.py,sha256=UcmwJ4ATMzxvkz7u3xXjSqkYgTi0K-vSzTAyb0JuslM,4673
12
12
  pyipmi/hpm.py,sha256=W5tlU-zlEkIuz3-UYfTWnHApOV4HHdJ0jDaDKLCkYsc,26069
13
- pyipmi/ipmitool.py,sha256=S0irUDzOUUBUol0N8AAAJboFwzL_YW4bzP1QMNlvcBM,24330
13
+ pyipmi/ipmitool.py,sha256=18sW-VytJQUgrlrUQw-e1DMJcUcXSj-miTIc2B01aGc,24471
14
14
  pyipmi/lan.py,sha256=sC-hsKohIJ-i84Tm-VKwiElalmJSr77b8ckmNgAznpo,9592
15
15
  pyipmi/logger.py,sha256=AKzJVgn9MWUE54jQjfDNWmUccYy7r-YsGKSU_-lr2QE,1067
16
16
  pyipmi/messaging.py,sha256=t2pcH0HDPaMu3lMgthKNrRdXMS52q0P_B2grPziyNhM,7404
@@ -21,36 +21,36 @@ pyipmi/sensor.py,sha256=J8uULOg_JUhRlRQymKQxeSAnEwI92i8qPtlCMEXft8k,8528
21
21
  pyipmi/session.py,sha256=RGVl4BtN1QXR_Rs1RUGPzN8NZPEsm2qcm-aZSSFg2_M,4175
22
22
  pyipmi/state.py,sha256=_gKAN1P-8wjDyn7cbn5ibKdusHNBlQqushOrAb5PCBo,615
23
23
  pyipmi/utils.py,sha256=-CVekdRcG70Wrosx4InplKGd18U6acaLbVdInw2JE1c,4862
24
- pyipmi/version.py,sha256=YmCwXMhmfj68EZx9jcxGphvl079mMItVt-sflF5hjTY,64
24
+ pyipmi/version.py,sha256=Zpsc3qx6s3BxrUHtnAMbK4aRwvzfDaaNO4tJoykTXdQ,64
25
25
  pyipmi/interfaces/__init__.py,sha256=T8xUc-ymnmgkdZZ-yNIJBPSf2aEme5dhbx-jFMyXaC8,1238
26
26
  pyipmi/interfaces/aardvark.py,sha256=gReGcWjhgtEhpYw61UExtNZ52b-uI2ONkT_TeGLspMI,7266
27
- pyipmi/interfaces/ipmb.py,sha256=kKFbaAIy8MoSiKaIUOCwhXPD1QRfkwIpnEL8sXDHSyg,7800
27
+ pyipmi/interfaces/ipmb.py,sha256=JbQylQ-2CyrcukOtGWE81ZDaR2EJdI3ye3V2N8SGvIk,8342
28
28
  pyipmi/interfaces/ipmbdev.py,sha256=uBVKGloOUDig6nK2V8Gi6tJJimzGFo30CtP2RLV7gQU,5346
29
- pyipmi/interfaces/ipmitool.py,sha256=oN9_N1jh7ts77Kc2AqTEYmmmLSBS5h97ZaSQPmPpC8g,10539
29
+ pyipmi/interfaces/ipmitool.py,sha256=160FxDqQoRUKrFBIgBPZfExz6lH11wN4XivQNdB2hNA,10851
30
30
  pyipmi/interfaces/mock.py,sha256=5IPQd7VlWVTFvvhppCs7SPiDkJAmAjG6v0RXeXjTEFs,363
31
- pyipmi/interfaces/rmcp.py,sha256=fxYeR4U03uz5Df98kzyPRmLIRp0c8CAWnpEFbwdmIHA,22587
31
+ pyipmi/interfaces/rmcp.py,sha256=wXb7gfedWWuJQdApR2jLjtre3tPPVY-XGifvhKJUfek,23011
32
32
  pyipmi/msgs/__init__.py,sha256=wGyXNh3MmElwTjgi2Mi1rhFaORz1UcSoD82BJD5-U7Q,2334
33
- pyipmi/msgs/bmc.py,sha256=6uBIScBm7gMKHHsq5qNcgf_ZkTaVlCG8dTf1sSdyyE0,8105
34
- pyipmi/msgs/chassis.py,sha256=UcxGNkfiwbe_2JVNpi3pHwHcP4uev9X6vuHzvDhsDTY,6338
33
+ pyipmi/msgs/bmc.py,sha256=pVpgSpX-GrKxkXQQlLAde_avuvN1O-VD7kjRAqk3PQI,8089
34
+ pyipmi/msgs/chassis.py,sha256=OVZSnN3_EOmChSpTzewKj6qAkUgW70GK9d-w7RPZm-A,6299
35
35
  pyipmi/msgs/constants.py,sha256=spdEf-tXN8E8zwrgfKzwBX_blhJmynPCqFb3FnuDi10,16342
36
- pyipmi/msgs/dcmi.py,sha256=M6OWg0NFibToibn4j4Gv08Dvuc7lwMQZ7LoxpJgNr7g,8285
36
+ pyipmi/msgs/dcmi.py,sha256=avf3JC4oD_iFm3AcBX2xIvY_q2SoVeilPI0MxAGgFzE,8245
37
37
  pyipmi/msgs/device_messaging.py,sha256=sPzEsh6zDck_leqI-4o0-V7_jQnr62wMOVGenvgnpMM,16413
38
- pyipmi/msgs/event.py,sha256=tGja_XhFeXhefQ5QTWFxj8VeSbMly6y_rICf7eVdpIo,2187
39
- pyipmi/msgs/fru.py,sha256=0H-EztVb-tJwdWoxCTOpqlyIeAWQvdf_vYc5UGwNSpI,2764
40
- pyipmi/msgs/hpm.py,sha256=BiO2LwkuWflhEuI2na6ncgxBaKXZ8PpTArLEaA5BWWc,10471
41
- pyipmi/msgs/lan.py,sha256=hC-uX5h9yD2qI_Nk76NRkldK4X9nYM-TRiLOrU4ndq4,2607
42
- pyipmi/msgs/message.py,sha256=xWk7073-kgwDl0n9JgFsKuJ3zE3REsvCkEkHOUcbhNk,12252
43
- pyipmi/msgs/picmg.py,sha256=oZIlKDdq1r0qBl-dliAsRTiLRJOwZXNQVpsW3aWnjaE,25995
44
- pyipmi/msgs/registry.py,sha256=oifolLJgg0DQwpCte2CbNM7Ua4XGABzGiWYJIFfgijQ,3640
45
- pyipmi/msgs/sdr.py,sha256=JZ-p5-BbjDg4R2YpwdTz11arQcRMyAvOGg0VuSq6jn8,6662
46
- pyipmi/msgs/sel.py,sha256=ON5YRoI9-WVMT09IqduK0AR28-rPcXOSzSWS3rcYBzw,5988
47
- pyipmi/msgs/sensor.py,sha256=nP1JohRg5jSz23SFoOMQONojROodOSRCuaDR8tpCxjI,10663
38
+ pyipmi/msgs/event.py,sha256=Ljo7I4UZDSGwzFQYkZZ35ER9kH0Guct1zX15NRc6xxo,2148
39
+ pyipmi/msgs/fru.py,sha256=88FsQ6f-mNM-abtnj0rEJbLRHTxwNC5gCKdSTDkK7J0,2725
40
+ pyipmi/msgs/hpm.py,sha256=fUIgu9Sr6Lu_vwkKUOepUdLp18vTqo3VSn0G9I_6IkA,10432
41
+ pyipmi/msgs/lan.py,sha256=uUTkDTh9zkxy4GjmmRufQrJOYrGAk5bJtn0124nE0FU,2568
42
+ pyipmi/msgs/message.py,sha256=YFhNk-RUrHN7qhsFBRMp0rullZ_DRR7BzbByYQXiEdE,12212
43
+ pyipmi/msgs/picmg.py,sha256=_t0qye3mNUlZ-0v5hCOBW0xWOAQUnmij4S-Nq1WFL2U,25955
44
+ pyipmi/msgs/registry.py,sha256=oAfyJzev7nMFWELPq6kwc7kScYweh86keVjhD0O4Vsg,3639
45
+ pyipmi/msgs/sdr.py,sha256=NJcGN5QvieDSQ5KbOFvp_ZfsonQhrM5lwEoXzf89Qnw,6623
46
+ pyipmi/msgs/sel.py,sha256=1KgWUgc7W46sZJbLToxdi9mFYwDESfXoEUPJbcWg_oo,5949
47
+ pyipmi/msgs/sensor.py,sha256=mEa9nYkqC2Zh7t7uCGmjKHDx1hMQ9nwQ9Rq1yl25U-A,10624
48
48
  pyipmi/msgs/session.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
- pyipmi/msgs/vita.py,sha256=7NgFaB1Gy2vlerzM4pzZtpEs5Tc4T0_1EZqu2_K2fMw,19910
50
- python_ipmi-0.5.5.dist-info/AUTHORS,sha256=VHH-OfOeVpe3OMDYh_z0IvLpVeVw6gqyswTIQIFFmfE,82
51
- python_ipmi-0.5.5.dist-info/COPYING,sha256=AKibDRiqzUEU3s95Ei24e_Nb3a8rxQ44PJyfTCYzkLI,24486
52
- python_ipmi-0.5.5.dist-info/METADATA,sha256=MrYP4DtPchuUNo-dA9R3DNMf2r2Pg9MyvcbGNdOAeW8,6801
53
- python_ipmi-0.5.5.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
54
- python_ipmi-0.5.5.dist-info/entry_points.txt,sha256=2FOtnrLsQRRQDmQbVn_jInKHMch43rHzGZpyQ-TU3PM,53
55
- python_ipmi-0.5.5.dist-info/top_level.txt,sha256=ssvC5TF8PN_MCctWAT9Z8jKsKsP2ulOTm6JN_I3EoDM,7
56
- python_ipmi-0.5.5.dist-info/RECORD,,
49
+ pyipmi/msgs/vita.py,sha256=qcLdPZoERdYKxAkiWprRS-MWiINFovcTUKaJNG0L62A,19870
50
+ python_ipmi-0.5.7.dist-info/AUTHORS,sha256=VHH-OfOeVpe3OMDYh_z0IvLpVeVw6gqyswTIQIFFmfE,82
51
+ python_ipmi-0.5.7.dist-info/COPYING,sha256=AKibDRiqzUEU3s95Ei24e_Nb3a8rxQ44PJyfTCYzkLI,24486
52
+ python_ipmi-0.5.7.dist-info/METADATA,sha256=IznGHhQ2sVbEZN_Gp1XERw4IchTHreiMFjW31IdVUSE,6926
53
+ python_ipmi-0.5.7.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
54
+ python_ipmi-0.5.7.dist-info/entry_points.txt,sha256=2FOtnrLsQRRQDmQbVn_jInKHMch43rHzGZpyQ-TU3PM,53
55
+ python_ipmi-0.5.7.dist-info/top_level.txt,sha256=ssvC5TF8PN_MCctWAT9Z8jKsKsP2ulOTm6JN_I3EoDM,7
56
+ python_ipmi-0.5.7.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: setuptools (75.3.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5