mirror of
https://github.com/KevinMidboe/python-gpiozero.git
synced 2025-10-29 17:50:37 +00:00
fix various bugs found by the 'prospector' static-analysis tool
This commit is contained in:
@@ -10,11 +10,11 @@ except ImportError:
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from collections import namedtuple
|
|
||||||
from itertools import repeat, cycle, chain
|
from itertools import repeat, cycle, chain
|
||||||
from threading import Lock
|
from threading import Lock
|
||||||
|
|
||||||
from .exc import (
|
from .exc import (
|
||||||
|
DeviceClosed,
|
||||||
GPIOPinMissing,
|
GPIOPinMissing,
|
||||||
EnergenieSocketMissing,
|
EnergenieSocketMissing,
|
||||||
EnergenieBadSocket,
|
EnergenieBadSocket,
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ from itertools import chain
|
|||||||
from types import FunctionType
|
from types import FunctionType
|
||||||
from threading import RLock
|
from threading import RLock
|
||||||
|
|
||||||
from .threads import GPIOThread, _threads_shutdown
|
from .threads import _threads_shutdown
|
||||||
from .mixins import (
|
from .mixins import (
|
||||||
ValuesMixin,
|
ValuesMixin,
|
||||||
SharedMixin,
|
SharedMixin,
|
||||||
@@ -26,7 +26,6 @@ from .exc import (
|
|||||||
GPIOPinMissing,
|
GPIOPinMissing,
|
||||||
GPIOPinInUse,
|
GPIOPinInUse,
|
||||||
GPIODeviceClosed,
|
GPIODeviceClosed,
|
||||||
GPIOBadSourceDelay,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Get a pin implementation to use as the default; we prefer RPi.GPIO's here
|
# Get a pin implementation to use as the default; we prefer RPi.GPIO's here
|
||||||
|
|||||||
@@ -7,12 +7,11 @@ from __future__ import (
|
|||||||
division,
|
division,
|
||||||
)
|
)
|
||||||
|
|
||||||
import warnings
|
|
||||||
from time import sleep, time
|
from time import sleep, time
|
||||||
from threading import Event
|
from threading import Event
|
||||||
|
|
||||||
from .exc import InputDeviceError, GPIODeviceError, DeviceClosed
|
from .exc import InputDeviceError, DeviceClosed
|
||||||
from .devices import GPIODevice, CompositeDevice
|
from .devices import GPIODevice
|
||||||
from .mixins import GPIOQueue, EventsMixin
|
from .mixins import GPIOQueue, EventsMixin
|
||||||
|
|
||||||
|
|
||||||
@@ -560,7 +559,7 @@ class DistanceSensor(SmoothedInputDevice):
|
|||||||
def __init__(
|
def __init__(
|
||||||
self, echo=None, trigger=None, queue_len=30, max_distance=1,
|
self, echo=None, trigger=None, queue_len=30, max_distance=1,
|
||||||
threshold_distance=0.3, partial=False):
|
threshold_distance=0.3, partial=False):
|
||||||
if not (max_distance > 0):
|
if max_distance <= 0:
|
||||||
raise ValueError('invalid maximum distance (must be positive)')
|
raise ValueError('invalid maximum distance (must be positive)')
|
||||||
self._trigger = None
|
self._trigger = None
|
||||||
super(DistanceSensor, self).__init__(
|
super(DistanceSensor, self).__init__(
|
||||||
|
|||||||
@@ -13,13 +13,18 @@ from functools import wraps
|
|||||||
from threading import Event
|
from threading import Event
|
||||||
from collections import deque
|
from collections import deque
|
||||||
try:
|
try:
|
||||||
from statistics import median, mean
|
from statistics import median
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from .compat import median, mean
|
from .compat import median
|
||||||
|
|
||||||
from .threads import GPIOThread
|
from .threads import GPIOThread
|
||||||
from .exc import BadEventHandler, DeviceClosed
|
from .exc import (
|
||||||
|
BadEventHandler,
|
||||||
|
DeviceClosed,
|
||||||
|
GPIOBadSourceDelay,
|
||||||
|
GPIOBadQueueLen,
|
||||||
|
GPIOBadSampleWait,
|
||||||
|
)
|
||||||
|
|
||||||
class ValuesMixin(object):
|
class ValuesMixin(object):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -5,8 +5,6 @@ from __future__ import (
|
|||||||
division,
|
division,
|
||||||
)
|
)
|
||||||
|
|
||||||
import warnings
|
|
||||||
from time import sleep
|
|
||||||
from threading import Lock
|
from threading import Lock
|
||||||
from itertools import repeat, cycle, chain
|
from itertools import repeat, cycle, chain
|
||||||
|
|
||||||
@@ -194,7 +192,7 @@ class DigitalOutputDevice(OutputDevice):
|
|||||||
|
|
||||||
def _blink_device(self, on_time, off_time, n):
|
def _blink_device(self, on_time, off_time, n):
|
||||||
iterable = repeat(0) if n is None else repeat(0, n)
|
iterable = repeat(0) if n is None else repeat(0, n)
|
||||||
for i in iterable:
|
for _ in iterable:
|
||||||
self._write(True)
|
self._write(True)
|
||||||
if self._blink_thread.stopping.wait(on_time):
|
if self._blink_thread.stopping.wait(on_time):
|
||||||
break
|
break
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ str = type('')
|
|||||||
import io
|
import io
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
from ..exc import PinUnknownPi, PinMultiplePins
|
from ..exc import PinUnknownPi, PinMultiplePins, PinNoPins
|
||||||
|
|
||||||
|
|
||||||
# Some useful constants for describing pins
|
# Some useful constants for describing pins
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ try:
|
|||||||
except ImportError:
|
except ImportError:
|
||||||
from ..compat import isclose
|
from ..compat import isclose
|
||||||
|
|
||||||
from . import Pin, PINS_CLEANUP
|
from . import Pin
|
||||||
from ..exc import PinSetInput, PinPWMUnsupported, PinFixedPull
|
from ..exc import PinSetInput, PinPWMUnsupported, PinFixedPull
|
||||||
|
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ class MockPin(Pin):
|
|||||||
try:
|
try:
|
||||||
old_pin = cls._PINS[number]
|
old_pin = cls._PINS[number]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
self = super(Pin, cls).__new__(cls)
|
self = super(MockPin, cls).__new__(cls)
|
||||||
cls._PINS[number] = self
|
cls._PINS[number] = self
|
||||||
self._number = number
|
self._number = number
|
||||||
self._function = 'input'
|
self._function = 'input'
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ from ..exc import (
|
|||||||
PinFixedPull,
|
PinFixedPull,
|
||||||
PinInvalidPull,
|
PinInvalidPull,
|
||||||
PinInvalidBounce,
|
PinInvalidBounce,
|
||||||
|
PinInvalidState,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -135,7 +136,7 @@ class PiGPIOPin(Pin):
|
|||||||
if self._host == 'localhost':
|
if self._host == 'localhost':
|
||||||
return "GPIO%d" % self._number
|
return "GPIO%d" % self._number
|
||||||
else:
|
else:
|
||||||
return "GPIO%d on %s:%d" % (self._host, self._port)
|
return "GPIO%d on %s:%d" % (self._number, self._host, self._port)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def host(self):
|
def host(self):
|
||||||
@@ -182,7 +183,7 @@ class PiGPIOPin(Pin):
|
|||||||
try:
|
try:
|
||||||
self._connection.set_PWM_dutycycle(self._number, int(value * 255))
|
self._connection.set_PWM_dutycycle(self._number, int(value * 255))
|
||||||
except pigpio.error:
|
except pigpio.error:
|
||||||
raise PinInvalidValue('invalid state "%s" for pin %r' % (value, self))
|
raise PinInvalidState('invalid state "%s" for pin %r' % (value, self))
|
||||||
elif self.function == 'input':
|
elif self.function == 'input':
|
||||||
raise PinSetInput('cannot set state of pin %r' % self)
|
raise PinSetInput('cannot set state of pin %r' % self)
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -7,8 +7,6 @@ from __future__ import (
|
|||||||
str = type('')
|
str = type('')
|
||||||
|
|
||||||
|
|
||||||
from threading import Lock
|
|
||||||
|
|
||||||
import RPIO
|
import RPIO
|
||||||
import RPIO.PWM
|
import RPIO.PWM
|
||||||
from RPIO.Exceptions import InvalidChannelException
|
from RPIO.Exceptions import InvalidChannelException
|
||||||
@@ -21,6 +19,8 @@ from ..exc import (
|
|||||||
PinFixedPull,
|
PinFixedPull,
|
||||||
PinInvalidPull,
|
PinInvalidPull,
|
||||||
PinInvalidBounce,
|
PinInvalidBounce,
|
||||||
|
PinInvalidState,
|
||||||
|
PinPWMError,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@ class RPIOPin(Pin):
|
|||||||
|
|
||||||
def _set_state(self, value):
|
def _set_state(self, value):
|
||||||
if not 0 <= value <= 1:
|
if not 0 <= value <= 1:
|
||||||
raise PinInvalidValue('invalid state "%s" for pin %r' % (value, self))
|
raise PinInvalidState('invalid state "%s" for pin %r' % (value, self))
|
||||||
if self._pwm:
|
if self._pwm:
|
||||||
RPIO.PWM.clear_channel_gpio(0, self._number)
|
RPIO.PWM.clear_channel_gpio(0, self._number)
|
||||||
if value == 0:
|
if value == 0:
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ try:
|
|||||||
from itertools import izip as zip
|
from itertools import izip as zip
|
||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
from itertools import count, cycle
|
from itertools import cycle
|
||||||
from math import sin, cos, floor, radians
|
from math import sin, cos, radians
|
||||||
try:
|
try:
|
||||||
from statistics import mean
|
from statistics import mean
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ class SPISoftwareBus(SharedMixin, Device):
|
|||||||
for write_word in data:
|
for write_word in data:
|
||||||
mask = 1 if self.lsb_first else 1 << (self.bits_per_word - 1)
|
mask = 1 if self.lsb_first else 1 << (self.bits_per_word - 1)
|
||||||
read_word = 0
|
read_word = 0
|
||||||
for bit in range(self.bits_per_word):
|
for _ in range(self.bits_per_word):
|
||||||
if self.mosi is not None:
|
if self.mosi is not None:
|
||||||
self.mosi.value = bool(write_word & mask)
|
self.mosi.value = bool(write_word & mask)
|
||||||
self.clock.on()
|
self.clock.on()
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ from __future__ import (
|
|||||||
str = type('')
|
str = type('')
|
||||||
|
|
||||||
|
|
||||||
from .exc import DeviceClosed
|
from .exc import DeviceClosed, InputDeviceError
|
||||||
from .devices import Device
|
from .devices import Device
|
||||||
from .spi import extract_spi_args, SPI
|
from .spi import SPI
|
||||||
|
|
||||||
|
|
||||||
class SPIDevice(Device):
|
class SPIDevice(Device):
|
||||||
@@ -206,7 +206,7 @@ class MCP33xx(MCP3xxx):
|
|||||||
data = data[-2:]
|
data = data[-2:]
|
||||||
result = ((data[0] & 63) << 7) | (data[1] >> 1)
|
result = ((data[0] & 63) << 7) | (data[1] >> 1)
|
||||||
# Account for the sign bit
|
# Account for the sign bit
|
||||||
if self.differential and value > 4095:
|
if self.differential and result > 4095:
|
||||||
result = -(8192 - result)
|
result = -(8192 - result)
|
||||||
assert -4096 <= result < 4096
|
assert -4096 <= result < 4096
|
||||||
return result
|
return result
|
||||||
|
|||||||
@@ -8,11 +8,6 @@ str = type('')
|
|||||||
|
|
||||||
from threading import Thread, Event
|
from threading import Thread, Event
|
||||||
|
|
||||||
from .exc import (
|
|
||||||
GPIOBadQueueLen,
|
|
||||||
GPIOBadSampleWait,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
_THREADS = set()
|
_THREADS = set()
|
||||||
def _threads_shutdown():
|
def _threads_shutdown():
|
||||||
@@ -22,7 +17,9 @@ def _threads_shutdown():
|
|||||||
|
|
||||||
|
|
||||||
class GPIOThread(Thread):
|
class GPIOThread(Thread):
|
||||||
def __init__(self, group=None, target=None, name=None, args=(), kwargs={}):
|
def __init__(self, group=None, target=None, name=None, args=(), kwargs=None):
|
||||||
|
if kwargs is None:
|
||||||
|
kwargs = {}
|
||||||
self.stopping = Event()
|
self.stopping = Event()
|
||||||
super(GPIOThread, self).__init__(group, target, name, args, kwargs)
|
super(GPIOThread, self).__init__(group, target, name, args, kwargs)
|
||||||
self.daemon = True
|
self.daemon = True
|
||||||
|
|||||||
Reference in New Issue
Block a user