mirror of
https://github.com/ARM-software/devlib.git
synced 2025-11-14 12:45:17 +00:00
2650a534f3d3c86d6c8d84b10ab9547895c5c1a8
Unpickling of BaseException is done by feeding self.args to the exception type.
This self.args attribute is initialized in two places: in
BaseException.__new__ (before __init__ is called) and in BaseException.__init__
as well.
The following code ends up with self.args == ('hello',), instead of (1, 2):
class MyExcep(BaseException):
def __init__(self, foo, bar):
print('before super().__init__()', self.args)
super().__init__('hello')
print('after super().__init__()', self.args)
MyExcep(1, 2)
# Prints:
# before super().__init__() (1, 2)
# after super().__init__() ('hello',)
When unplickling such instance, ('hello',) will be fed to MyExcep.__init__(),
which will fail with a TypeError since it requires 2 positional arguments.
In order to fix that, super().__init__() needs to be handwritten instead of
getting the one from BaseException:
class MyBase(BaseException):
def __init__(self, msg):
self.msg = msg
class MyExcep(MyBase):
def __init__(self, foo, bar):
print('before super().__init__()', self.args)
super().__init__('hello')
print('after super().__init__()', self.args)
MyExcep(1, 2)
# Prints:
# before super().__init__() (1, 2)
# after super().__init__() (1, 2)
This will correctly initialize self.args == (1, 2), allowing unpickling to work.
devlib
======
``devlib`` exposes an interface for interacting with and collecting
measurements from a variety of devices (such as mobile phones, tablets and
development boards) running a Linux-based operating system.
Installation
------------
::
sudo -H pip install devlib
Usage
-----
Please refer to the "Overview" section of the `documentation <http://devlib.readthedocs.io/en/latest/>`_.
License
-------
This package is distributed under `Apache v2.0 License <http://www.apache.org/licenses/LICENSE-2.0>`_.
Feedback, Contrubutions and Support
-----------------------------------
- Please use the GitHub Issue Tracker associated with this repository for
feedback.
- ARM licensees may contact ARM directly via their partner managers.
- We welcome code contributions via GitHub Pull requests. Please try to
stick to the style in the rest of the code for your contributions.
Description
Languages
Python
96%
Shell
1.8%
C
1.4%
Java
0.5%
Dockerfile
0.3%