Add pin_factory to all relevant class docs

Also tell a whole load of lies about what's a keyword-only arg. In the
vast majority of cases, pin_factory (and other args) *aren't*
keyword-only ... but we'd really like them to be, it's just difficult
while maintaining py2 compatibility.
This commit is contained in:
Dave Jones
2017-07-13 21:01:42 +01:00
parent 8958874a77
commit 9fdc093837
6 changed files with 33 additions and 29 deletions

View File

@@ -18,21 +18,21 @@ individually.
LEDBoard LEDBoard
======== ========
.. autoclass:: LEDBoard(\*pins, pwm=False, active_high=True, initial_value=False, \*\*named_pins) .. autoclass:: LEDBoard(\*pins, pwm=False, active_high=True, initial_value=False, pin_factory=None, \*\*named_pins)
:inherited-members: :inherited-members:
:members: :members:
LEDBarGraph LEDBarGraph
=========== ===========
.. autoclass:: LEDBarGraph(\*pins, pwm=False, active_high=True, initial_value=0) .. autoclass:: LEDBarGraph(\*pins, pwm=False, active_high=True, initial_value=0, pin_factory=None)
:inherited-members: :inherited-members:
:members: :members:
ButtonBoard ButtonBoard
=========== ===========
.. autoclass:: ButtonBoard(\*pins, pull_up=True, bounce_time=None, hold_time=1, hold_repeat=False, \*\*named_pins) .. autoclass:: ButtonBoard(\*pins, pull_up=True, bounce_time=None, hold_time=1, hold_repeat=False, pin_factory=None, \*\*named_pins)
:inherited-members: :inherited-members:
:members: :members:
@@ -130,14 +130,14 @@ Energenie
StatusZero StatusZero
========== ==========
.. autoclass:: StatusZero .. autoclass:: StatusZero(\*labels, pwm=False, active_high=True, initial_value=False, pin_factory=None)
:inherited-members: :inherited-members:
:members: :members:
StatusBoard StatusBoard
=========== ===========
.. autoclass:: StatusBoard .. autoclass:: StatusBoard(\*labels, pwm=False, active_high=True, initial_value=False, pin_factory=None)
:inherited-members: :inherited-members:
:members: :members:
@@ -168,17 +168,17 @@ to construct classes for their own devices.
LEDCollection LEDCollection
============= =============
.. autoclass:: LEDCollection .. autoclass:: LEDCollection(\*pins, pwm=False, active_high=True, initial_value=False, pin_factory=None, \*\*named_pins)
:members: :members:
CompositeOutputDevice CompositeOutputDevice
===================== =====================
.. autoclass:: CompositeOutputDevice(\*args, _order=None, \*\*kwargs) .. autoclass:: CompositeOutputDevice(\*args, _order=None, pin_factory=None, \*\*kwargs)
:members: :members:
CompositeDevice CompositeDevice
=============== ===============
.. autoclass:: CompositeDevice(\*args, _order=None, \*\*kwargs) .. autoclass:: CompositeDevice(\*args, _order=None, pin_factory=None, \*\*kwargs)
:members: :members:

View File

@@ -33,7 +33,7 @@ are represented in purple, while abstract classes are shaded lighter):
Device Device
====== ======
.. autoclass:: Device .. autoclass:: Device(\*, pin_factory=None)
:members: close, closed, value, is_active :members: close, closed, value, is_active
ValuesMixin ValuesMixin

View File

@@ -16,35 +16,35 @@ everyday components. Components must be wired up correctly before use in code.
Button Button
====== ======
.. autoclass:: Button(pin, pull_up=True, bounce_time=None, hold_time=1, hold_repeat=False, pin_factory=None) .. autoclass:: Button(pin, \*, pull_up=True, bounce_time=None, hold_time=1, hold_repeat=False, pin_factory=None)
:members: wait_for_press, wait_for_release, pin, is_pressed, is_held, hold_time, held_time, hold_repeat, pull_up, when_pressed, when_released, when_held :members: wait_for_press, wait_for_release, pin, is_pressed, is_held, hold_time, held_time, hold_repeat, pull_up, when_pressed, when_released, when_held
Line Sensor (TRCT5000) Line Sensor (TRCT5000)
====================== ======================
.. autoclass:: LineSensor(pin, queue_len=5, sample_rate=100, threshold=0.5, partial=False, pin_factory=None) .. autoclass:: LineSensor(pin, \*, queue_len=5, sample_rate=100, threshold=0.5, partial=False, pin_factory=None)
:members: wait_for_line, wait_for_no_line, pin, line_detected, when_line, when_no_line :members: wait_for_line, wait_for_no_line, pin, line_detected, when_line, when_no_line
Motion Sensor (D-SUN PIR) Motion Sensor (D-SUN PIR)
========================= =========================
.. autoclass:: MotionSensor(pin, queue_len=1, sample_rate=10, threshold=0.5, partial=False, pin_factory=None) .. autoclass:: MotionSensor(pin, \*, queue_len=1, sample_rate=10, threshold=0.5, partial=False, pin_factory=None)
:members: wait_for_motion, wait_for_no_motion, pin, motion_detected, when_motion, when_no_motion :members: wait_for_motion, wait_for_no_motion, pin, motion_detected, when_motion, when_no_motion
Light Sensor (LDR) Light Sensor (LDR)
================== ==================
.. autoclass:: LightSensor(pin, queue_len=5, charge_time_limit=0.01, threshold=0.1, partial=False, pin_factory=None) .. autoclass:: LightSensor(pin, \*, queue_len=5, charge_time_limit=0.01, threshold=0.1, partial=False, pin_factory=None)
:members: wait_for_light, wait_for_dark, pin, light_detected, when_light, when_dark :members: wait_for_light, wait_for_dark, pin, light_detected, when_light, when_dark
Distance Sensor (HC-SR04) Distance Sensor (HC-SR04)
========================= =========================
.. autoclass:: DistanceSensor(echo, trigger, queue_len=30, max_distance=1, threshold_distance=0.3, partial=False, pin_factory=None) .. autoclass:: DistanceSensor(echo, trigger, \*, queue_len=30, max_distance=1, threshold_distance=0.3, partial=False, pin_factory=None)
:members: wait_for_in_range, wait_for_out_of_range, trigger, echo, when_in_range, when_out_of_range, max_distance, distance, threshold_distance :members: wait_for_in_range, wait_for_out_of_range, trigger, echo, when_in_range, when_out_of_range, max_distance, distance, threshold_distance
Base Classes Base Classes
@@ -63,19 +63,19 @@ to construct classes for their own devices.
DigitalInputDevice DigitalInputDevice
================== ==================
.. autoclass:: DigitalInputDevice(pin, pull_up=False, bounce_time=None, pin_factory=None) .. autoclass:: DigitalInputDevice(pin, \*, pull_up=False, bounce_time=None, pin_factory=None)
:members: :members:
SmoothedInputDevice SmoothedInputDevice
=================== ===================
.. autoclass:: SmoothedInputDevice .. autoclass:: SmoothedInputDevice(pin, \*, pull_up=False, threshold=0.5, queue_len=5, sample_wait=0.0, partial=False, pin_factory=None)
:members: :members:
InputDevice InputDevice
=========== ===========
.. autoclass:: InputDevice(pin, pull_up=False, pin_factory=None) .. autoclass:: InputDevice(pin, \*, pull_up=False, pin_factory=None)
:members: :members:
GPIODevice GPIODevice

View File

@@ -16,44 +16,44 @@ everyday components. Components must be wired up correctly before use in code.
LED LED
=== ===
.. autoclass:: LED(pin, active_high=True, initial_value=False) .. autoclass:: LED(pin, \*, active_high=True, initial_value=False, pin_factory=None)
:members: on, off, toggle, blink, pin, is_lit :members: on, off, toggle, blink, pin, is_lit
PWMLED PWMLED
====== ======
.. autoclass:: PWMLED(pin, active_high=True, initial_value=0, frequency=100) .. autoclass:: PWMLED(pin, \*, active_high=True, initial_value=0, frequency=100, pin_factory=None)
:members: on, off, toggle, blink, pulse, pin, is_lit, value :members: on, off, toggle, blink, pulse, pin, is_lit, value
RGBLED RGBLED
====== ======
.. autoclass:: RGBLED(red, green, blue, active_high=True, initial_value=(0, 0, 0), pwm=True) .. autoclass:: RGBLED(red, green, blue, \*, active_high=True, initial_value=(0, 0, 0), pwm=True, pin_factory=None)
:members: on, off, toggle, blink, pulse, red, green, blue, is_lit, color :members: on, off, toggle, blink, pulse, red, green, blue, is_lit, color
Buzzer Buzzer
====== ======
.. autoclass:: Buzzer(pin, active_high=True, initial_value=False) .. autoclass:: Buzzer(pin, \*, active_high=True, initial_value=False, pin_factory=None)
:members: on, off, toggle, beep, pin, is_active :members: on, off, toggle, beep, pin, is_active
Motor Motor
===== =====
.. autoclass:: Motor(forward, backward, pwm=True) .. autoclass:: Motor(forward, backward, \*, pwm=True, pin_factory=None)
:members: forward, backward, stop :members: forward, backward, stop
Servo Servo
===== =====
.. autoclass:: Servo(pin, initial_value=0, min_pulse_width=1/1000, max_pulse_width=2/1000, frame_width=20/1000) .. autoclass:: Servo(pin, \*, initial_value=0, min_pulse_width=1/1000, max_pulse_width=2/1000, frame_width=20/1000, pin_factory=None)
:inherited-members: :inherited-members:
:members: :members:
AngularServo AngularServo
============ ============
.. autoclass:: AngularServo(pin, initial_angle=0, min_angle=-90, max_angle=90, min_pulse_width=1/1000, max_pulse_width=2/1000, frame_width=20/1000) .. autoclass:: AngularServo(pin, \*, initial_angle=0, min_angle=-90, max_angle=90, min_pulse_width=1/1000, max_pulse_width=2/1000, frame_width=20/1000, pin_factory=None)
:inherited-members: :inherited-members:
:members: :members:
@@ -73,25 +73,25 @@ to construct classes for their own devices.
DigitalOutputDevice DigitalOutputDevice
=================== ===================
.. autoclass:: DigitalOutputDevice(pin, active_high=True, initial_value=False) .. autoclass:: DigitalOutputDevice(pin, \*, active_high=True, initial_value=False, pin_factory=None)
:members: :members:
PWMOutputDevice PWMOutputDevice
=============== ===============
.. autoclass:: PWMOutputDevice(pin, active_high=True, initial_value=0, frequency=100) .. autoclass:: PWMOutputDevice(pin, \*, active_high=True, initial_value=0, frequency=100, pin_factory=None)
:members: :members:
OutputDevice OutputDevice
============ ============
.. autoclass:: OutputDevice(pin, active_high=True, initial_value=False) .. autoclass:: OutputDevice(pin, \*, active_high=True, initial_value=False, pin_factory=None)
:members: :members:
GPIODevice GPIODevice
========== ==========
.. autoclass:: GPIODevice(pin) .. autoclass:: GPIODevice(pin, \*, pin_factory=None)
:members: :members:
:noindex: :noindex:

View File

@@ -64,6 +64,10 @@ omit any arguments from either scheme. The defaults are:
* *clock_pin* defaults to 11, *mosi_pin* defaults to 10, *miso_pin* defaults * *clock_pin* defaults to 11, *mosi_pin* defaults to 10, *miso_pin* defaults
to 9, and *select_pin* defaults to 8. to 9, and *select_pin* defaults to 8.
* As with other GPIO based devices you can optionally specify a *pin_factory*
argument overriding the default pin factory (see :doc:`api_pins` for more
information).
Hence the following constructors are all equivalent:: Hence the following constructors are all equivalent::
from gpiozero import MCP3008 from gpiozero import MCP3008

View File

@@ -961,7 +961,7 @@ class StatusBoard(CompositeOutputDevice):
super(StatusBoard, self).__init__( super(StatusBoard, self).__init__(
_order=labels, pin_factory=pin_factory, **{ _order=labels, pin_factory=pin_factory, **{
label: CompositeOutputDevice( label: CompositeOutputDevice(
button=Button(button), button=Button(button, pin_factory=pin_factory),
lights=LEDBoard( lights=LEDBoard(
red=red, green=green, _order=('red', 'green'), red=red, green=green, _order=('red', 'green'),
pin_factory=pin_factory, **kwargs pin_factory=pin_factory, **kwargs