Compare commits

..
Author SHA1 Message Date
Laurens Valk cb84ca87c6 @pybricks/ide-docs v1.4.0 2021-06-23 19:56:31 +02:00
Laurens Valk e1995f9d1b ide: Display note about beta version. 2021-06-23 19:50:51 +02:00
Laurens Valk 7f0b1489a2 ide: Re-enable 3.X features.
These were hidden for the 3.0 release, but we can re-enable them for
the beta release of 3.1.

Revert "v3: Drop parameters Side and Button."

This reverts commit 07c53e9a3d.

Revert "v3: Drop Remote control."

This reverts commit b600f5029e.

Revert "v3: Drop geometry module."

This reverts commit 5f767f3fee.

Revert "v3: Drop Prime Hub and Inventor Hub."

This reverts commit 8db7892f8c.

Revert "v3: Drop IMU documentation."

This reverts commit b325bf4bff.
2021-06-23 19:41:15 +02:00
Laurens Valk aa2019be02 @pybricks/ide-docs v1.3.3 2021-06-23 19:36:00 +02:00
Laurens Valk 1ac78b5b82 @pybricks/ide-docs v1.3.2 2021-06-23 19:35:59 +02:00
Laurens Valk 847a3d5eec @pybricks/ide-docs v1.3.1 2021-06-23 19:35:59 +02:00
Laurens Valk 1a208ddd25 @pybricks/ide-docs v1.3.0 2021-06-23 19:35:59 +02:00
Laurens Valk 07c53e9a3d v3: Drop parameters Side and Button. 2021-06-23 19:35:58 +02:00
Laurens Valk b600f5029e v3: Drop Remote control. 2021-06-23 19:35:58 +02:00
Laurens Valk 5f767f3fee v3: Drop geometry module. 2021-06-23 19:35:57 +02:00
Laurens Valk 8db7892f8c v3: Drop Prime Hub and Inventor Hub. 2021-06-23 19:35:57 +02:00
Laurens Valk b325bf4bff v3: Drop IMU documentation.
This is not officially supported yet, so drop from release docs.
2021-06-23 19:35:57 +02:00
David Lechner 5d355e9892 doc/api/media: fix audio playback
Sphinx changed how filenames are generated which broke media playback.
The file name now includes the MD5 hash of the filename passed to the
:download: directive.

This was done with the following script:

    for f in $(find media/ev3dev-media/ -name "*.wav" -exec bash -c 'echo "$(echo -n ../../'{}' | md5sum)/$(basename '{}')"' \;); do
        sed -i "s,_downloads/$(basename $f),_downloads/$f," doc/api/media.rst;
    done
2021-06-04 12:45:44 -05:00
Laurens Valk 3b20a811cb examples/pup/motor_dc: Add battery box example. 2021-05-21 14:00:57 +02:00
David Lechner 73cc441edb github: add release action
This publishes the Python package to PyPI when a release is created on
GitHub.
2021-05-17 16:42:16 -05:00
David Lechner 7770a88aa0 github: fix build action name
It does more than just build the Python package.
2021-05-17 16:38:58 -05:00
David Lechner f06caa32bc 3.0.0-rc.1 2021-05-17 16:35:37 -05:00
thesynman fb8198fe8f pybricks/robotics.pyi: improve type hint (#60)
* Allow the wheel diameter and axle track of a DriveBase to be an int or a float
2021-05-10 13:08:25 -05:00
David Lechner 3dad15ac11 examples: fix use of OSError
We generally shouldn't be raising OSError from user code since it
represents an error the bubbles up from the OS. Also, when handling
an OSError, we almost always want to check for a specific error code.
2021-04-29 09:38:16 -05:00
Laurens Valk 790fcfa66a examples/pup/iodevices: Add PUPDevice example. 2021-04-29 13:03:34 +02:00
David Lechner d108d7c163 doc/common/conf: use xcode syntax highlighting
This matches the style used in Pybricks Code.
2021-04-28 15:54:11 -05:00
Martyn Boogaarts 7ce3721b48 examples/pup/hub_shared: Update light animation examples.
See https://github.com/pybricks/support/issues/253

* Update light_animate.py

corrected syntax

* Update light_animate.py

corrected syntax

* Update light_animate.py

corrected syntax

* Update light_animate.py

corrected syntax
2021-04-24 21:36:10 +02:00
David Lechner d0bfbcb4d1 js: only apply target="_blank" to IDE build
On the web, we want to be able to navigate between the various Pybricks
subdomains without opening new tabs. But Pybricks Code is treated as an
"app", we don't want links to open in Pybricks Code.
2021-04-20 12:38:33 -05:00
David Lechner 2aadc75f2c poetry: bump version to match current firmware 2021-04-20 12:07:36 -05:00
David Lechner 8bf42c7d2d poetry: Bump RTD and theme versions.
This is mainly to pull in the requirement of docutils < 0.17 from
sphinx-rtd-theme. Just bumping to latest sphinx doc while we are at it.

Issue: https://github.com/pybricks/pybricks-api/issues/55
2021-04-12 11:12:23 +02:00
39 changed files with 820 additions and 232 deletions
@@ -1,7 +1,7 @@
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Python package
name: Build Python package and docs
on: [ push, pull_request ]
+22
View File
@@ -0,0 +1,22 @@
name: Release to PyPI
on:
release:
types: [published]
jobs:
build_and_publish:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.8
- uses: abatilo/actions-poetry@v2.0.0
with:
poetry-version: 1.1.6
- run: poetry install
- run: poetry build
- run: poetry publish
env:
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }}
+49
View File
@@ -0,0 +1,49 @@
:mod:`geometry <pybricks.geometry>` -- Geometry and algebra
============================================================
.. module:: pybricks.geometry
.. autoclass:: pybricks.geometry.Matrix
:no-members:
.. autoattribute:: pybricks.geometry::Matrix.T
.. autoattribute:: pybricks.geometry::Matrix.shape
.. autofunction:: pybricks.geometry.vector
.. autoclass:: pybricks.geometry.Axis
:no-members:
.. _robotframe:
Reference frames
-----------------------
The Pybricks module and this documentation use the following conventions:
- X: Positive means forward. Negative means backward.
- Y: Positive means to the left. Negative means to the right.
- Z: Positive means upward. Negative means downward.
To make sure that all hub measurements (such as acceleration) have the correct
value and sign, you can specify how the hub is mounted in your creation. This
adjust the measurements so that it is easy to see how your *robot* is moving,
rather than how the *hub* is moving.
For example, the hub may be mounted upside down in your design. If you
configure the settings as shown in :numref:`fig_imuexamples`, the hub
measurements will be adjusted accordingly. This way, a positive acceleration
value in the X direction means that your *robot* accelerates forward, even
though the *hub* accelerates backward.
.. _fig_imuexamples:
.. figure:: ../api/images/imuexamples_label.png
:width: 100 %
How to configure the ``top_side`` and ``front_side`` settings for three
different robot designs. The same technique can be applied to other hubs
and other creations, by noting which way the top and
front :class:`Side <Side>` of the hub are pointing. The example
on the left is the default configuration.
+13
View File
@@ -10,6 +10,7 @@
movehub
cityhub
technichub
primehub
ev3brick
.. pybricks-classlink:: MoveHub
@@ -30,6 +31,18 @@
:height: 10 em
:target: technichub.html
.. pybricks-classlink:: PrimeHub
.. figure:: ../../api/images/primehub.png
:height: 10 em
:target: primehub.html
.. pybricks-classlink:: InventorHub
.. figure:: ../../api/images/inventorhub.png
:height: 10 em
:target: primehub.html
.. pybricks-classlink:: EV3Brick
.. figure:: ../../api/images/ev3brick.png
+20
View File
@@ -19,6 +19,12 @@ Move Hub
.. automethod:: pybricks.hubs::MoveHub.light.animate
.. rubric:: Using the IMU
.. automethod:: pybricks.hubs::MoveHub.imu.up
.. automethod:: pybricks.hubs::MoveHub.imu.acceleration
.. rubric:: Using the battery
.. automethod:: pybricks.hubs::MoveHub.battery.voltage
@@ -40,3 +46,17 @@ Making the light blink
.. literalinclude::
../../../examples/pup/hub_movehub/light_blink.py
IMU examples
---------------
Testing which way is up
********************************
.. literalinclude::
../../../examples/pup/hub_movehub/imu_up.py
Reading acceleration
**************************************************
.. literalinclude::
../../../examples/pup/hub_movehub/imu_read_acceleration.py
+210
View File
@@ -0,0 +1,210 @@
Prime Hub / Inventor Hub
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: ../../api/images/primeinventorhub.png
:height: 15 em
.. class:: InventorHub
This class is the same as the ``PrimeHub`` class, shown below. Both classes
work on both hubs.
These hubs are completely identical. They use the same Pybricks firmware.
.. autoclass:: pybricks.hubs.PrimeHub
:no-members:
.. rubric:: Using the hub status light
.. figure:: ../../api/images/primehub_light_label.png
:width: 22 em
.. automethod:: pybricks.hubs::PrimeHub.light.on
.. automethod:: pybricks.hubs::PrimeHub.light.off
.. automethod:: pybricks.hubs::PrimeHub.light.blink
.. automethod:: pybricks.hubs::PrimeHub.light.animate
.. rubric:: Using the light matrix display
.. figure:: ../../api/images/primehub_display_label.png
:width: 22 em
.. automethod:: pybricks.hubs::PrimeHub.display.orientation
.. automethod:: pybricks.hubs::PrimeHub.display.off
.. automethod:: pybricks.hubs::PrimeHub.display.pixel
.. automethod:: pybricks.hubs::PrimeHub.display.image
.. automethod:: pybricks.hubs::PrimeHub.display.animate
.. automethod:: pybricks.hubs::PrimeHub.display.number
.. automethod:: pybricks.hubs::PrimeHub.display.char
.. automethod:: pybricks.hubs::PrimeHub.display.text
.. rubric:: Using the buttons
.. figure:: ../../api/images/primehub_buttons_label.png
:width: 22 em
.. automethod:: pybricks.hubs::PrimeHub.buttons.pressed
.. rubric:: Using the IMU
.. automethod:: pybricks.hubs::PrimeHub.imu.up
.. automethod:: pybricks.hubs::PrimeHub.imu.tilt
.. automethod:: pybricks.hubs::PrimeHub.imu.acceleration
.. automethod:: pybricks.hubs::PrimeHub.imu.angular_velocity
.. automethod:: pybricks.hubs::PrimeHub.imu.heading
.. automethod:: pybricks.hubs::PrimeHub.imu.reset_heading
.. rubric:: Using the speaker
.. automethod:: pybricks.hubs::PrimeHub.speaker.beep
.. automethod:: pybricks.hubs::PrimeHub.speaker.play_notes
.. rubric:: Using the battery
.. automethod:: pybricks.hubs::PrimeHub.battery.voltage
.. automethod:: pybricks.hubs::PrimeHub.battery.current
.. note:: The examples below use the ``PrimeHub`` class. The examples work fine
on both hubs because they are the identical. If you prefer, you can
change this to ``InventorHub``.
Status light examples
---------------------
Turning the light on and off
****************************
.. literalinclude::
../../../examples/pup/hub_primehub/light_off.py
Changing brightness and using custom colors
*******************************************
.. literalinclude::
../../../examples/pup/hub_primehub/light_hsv.py
Making the light blink
**********************
.. literalinclude::
../../../examples/pup/hub_primehub/light_blink.py
Creating light animations
*************************
.. literalinclude::
../../../examples/pup/hub_primehub/light_animate.py
Matrix display examples
-----------------------
Displaying images
*****************
.. literalinclude::
../../../examples/pup/hub_primehub/display_image.py
Displaying numbers
******************
.. literalinclude::
../../../examples/pup/hub_primehub/display_number.py
Displaying text
***************
.. literalinclude::
../../../examples/pup/hub_primehub/display_text.py
Displaying individual pixels
****************************
.. literalinclude::
../../../examples/pup/hub_primehub/display_pixel.py
Changing the display orientation
********************************
.. literalinclude::
../../../examples/pup/hub_primehub/display_orientation.py
.. literalinclude::
../../../examples/pup/hub_primehub/display_orientation_imu.py
Making your own images
**********************
.. literalinclude::
../../../examples/pup/hub_primehub/display_matrix.py
Combining images to make expressions
************************************
.. literalinclude::
../../../examples/pup/hub_primehub/display_expression.py
Displaying animations
*********************
.. literalinclude::
../../../examples/pup/hub_primehub/display_animate.py
Button examples
---------------
Detecting button presses
************************
.. literalinclude::
../../../examples/pup/hub_primehub/button_main.py
IMU examples
---------------
Testing which way is up
********************************
.. literalinclude::
../../../examples/pup/hub_primehub/imu_up.py
Reading the tilt value
********************************
.. literalinclude::
../../../examples/pup/hub_primehub/imu_tilt.py
Using a custom hub orientation
**************************************************
.. literalinclude::
../../../examples/pup/hub_primehub/imu_tilt_blast.py
Reading acceleration and angular velocity vectors
**************************************************
.. literalinclude::
../../../examples/pup/hub_primehub/imu_read_vector.py
Reading acceleration and angular velocity on one axis
*****************************************************
.. literalinclude::
../../../examples/pup/hub_primehub/imu_read_scalar.py
+50 -1
View File
@@ -4,7 +4,8 @@ Technic Hub
.. figure:: ../../api/images/technichub.png
:height: 15 em
.. class:: TechnicHub
.. autoclass:: pybricks.hubs.TechnicHub
:no-members:
.. rubric:: Using the hub status light
@@ -16,6 +17,20 @@ Technic Hub
.. automethod:: pybricks.hubs::TechnicHub.light.animate
.. rubric:: Using the IMU
.. automethod:: pybricks.hubs::TechnicHub.imu.up
.. automethod:: pybricks.hubs::TechnicHub.imu.tilt
.. automethod:: pybricks.hubs::TechnicHub.imu.acceleration
.. automethod:: pybricks.hubs::TechnicHub.imu.angular_velocity
.. automethod:: pybricks.hubs::TechnicHub.imu.heading
.. automethod:: pybricks.hubs::TechnicHub.imu.reset_heading
.. rubric:: Using the battery
.. automethod:: pybricks.hubs::TechnicHub.battery.voltage
@@ -48,3 +63,37 @@ Creating light animations
.. literalinclude::
../../../examples/pup/hub_technichub/light_animate.py
IMU examples
---------------
Testing which way is up
********************************
.. literalinclude::
../../../examples/pup/hub_technichub/imu_up.py
Reading the tilt value
********************************
.. literalinclude::
../../../examples/pup/hub_technichub/imu_tilt.py
Using a custom hub orientation
**************************************************
.. literalinclude::
../../../examples/pup/hub_technichub/imu_tilt_blast.py
Reading acceleration and angular velocity vectors
**************************************************
.. literalinclude::
../../../examples/pup/hub_technichub/imu_read_vector.py
Reading acceleration and angular velocity on one axis
*****************************************************
.. literalinclude::
../../../examples/pup/hub_technichub/imu_read_scalar.py
+1
View File
@@ -70,6 +70,7 @@ findings on our `support page`_ so we can make Pybricks even better.
robotics
media
messaging
geometry
.. toctree::
:maxdepth: 1
+9
View File
@@ -12,3 +12,12 @@ Powered Up Device
.. automethod:: pybricks.iodevices.PUPDevice.read
.. automethod:: pybricks.iodevices.PUPDevice.write
Examples
-------------------
Detecting devices
******************************
.. literalinclude::
../../../examples/pup/iodevices_pupdevice/port_info.py
+105 -105
View File
@@ -236,7 +236,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/boing.wav" type="audio/wav">
<source src="_downloads/b944cb55a5775696298d64ee851ace43/boing.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -247,7 +247,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/boo.wav" type="audio/wav">
<source src="_downloads/ea7e11c484e34fcaf27a69754cd17f2f/boo.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -258,7 +258,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/cheering.wav" type="audio/wav">
<source src="_downloads/ba0b72ad10fdc60cb55cdd148b60d9ca/cheering.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -269,7 +269,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/crunching.wav" type="audio/wav">
<source src="_downloads/98a3c519b10e0678a220d9a8fd4f75c4/crunching.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -280,7 +280,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/crying.wav" type="audio/wav">
<source src="_downloads/2a351015ee7991b3c5cdf091349c42ce/crying.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -291,7 +291,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/fanfare.wav" type="audio/wav">
<source src="_downloads/fe3a5c8cfd539a19d2e125cd3d09925e/fanfare.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -302,7 +302,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/kung_fu.wav" type="audio/wav">
<source src="_downloads/b420a7196ea0e0d448629bf8411d9a18/kung_fu.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -313,7 +313,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/laughing_1.wav" type="audio/wav">
<source src="_downloads/8f344a69525a1363a24197a944e4e889/laughing_1.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -324,7 +324,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/laughing_2.wav" type="audio/wav">
<source src="_downloads/bdc8586f7e1aa11a8f7f59608b258282/laughing_2.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -335,7 +335,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/magic_wand.wav" type="audio/wav">
<source src="_downloads/5b625fd3e50894dd8fd00d7a82abd444/magic_wand.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -346,7 +346,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/ouch.wav" type="audio/wav">
<source src="_downloads/d3190754b2a5a2810ec8e58faad80aa0/ouch.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -357,7 +357,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/shouting.wav" type="audio/wav">
<source src="_downloads/19afb20dc569394df64285240357bcb9/shouting.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -368,7 +368,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/smack.wav" type="audio/wav">
<source src="_downloads/eed7a4c460df736068054a66e3b398eb/smack.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -379,7 +379,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/sneezing.wav" type="audio/wav">
<source src="_downloads/4e6b29e8cd056f9fcdda34b0f586dcca/sneezing.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -390,7 +390,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/snoring.wav" type="audio/wav">
<source src="_downloads/9a8d4ecc97db992cb132d93a7a4870e4/snoring.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -401,7 +401,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/uh-oh.wav" type="audio/wav">
<source src="_downloads/ba1d663a61c1d7c22848061bcf71fd04/uh-oh.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -415,7 +415,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/activate.wav" type="audio/wav">
<source src="_downloads/b732c0bb59841c6d7bd9ae1ac66f2b7a/activate.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -426,7 +426,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/analyze.wav" type="audio/wav">
<source src="_downloads/42a7600ad32aa70f0ae65f6fe87df16a/analyze.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -437,7 +437,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/backwards.wav" type="audio/wav">
<source src="_downloads/d5fccfd2d4bc349992b1d3a769cce852/backwards.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -448,7 +448,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/color.wav" type="audio/wav">
<source src="_downloads/1d94a6f6c9366bdd58ef1ea4e913fa91/color.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -459,7 +459,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/detected.wav" type="audio/wav">
<source src="_downloads/a7f751e62eda2c3cb7305d152baacaec/detected.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -470,7 +470,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/down.wav" type="audio/wav">
<source src="_downloads/29b40c48a495e8642644c8b482edfe9e/down.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -481,7 +481,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/error.wav" type="audio/wav">
<source src="_downloads/b0dfa1c62b0507a0c73f42af7f7d48cf/error.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -492,7 +492,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/error_alarm.wav" type="audio/wav">
<source src="_downloads/12b7e7b80c992edef495d9039fe38c81/error_alarm.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -504,7 +504,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/flashing.wav" type="audio/wav">
<source src="_downloads/e0cda6bd2911871e5d8efe07ddd0204a/flashing.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -515,7 +515,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/forward.wav" type="audio/wav">
<source src="_downloads/d0ca20711ebfaabe03cb19aaa7591a64/forward.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -526,7 +526,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/left.wav" type="audio/wav">
<source src="_downloads/34c75b65be9c243917f710bd3a99b864/left.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -537,7 +537,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/object.wav" type="audio/wav">
<source src="_downloads/1b7b8bd9d98edc72425c0a3d13355a62/object.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -548,7 +548,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/right.wav" type="audio/wav">
<source src="_downloads/df9920c7eab74a1b9b88669cb40cc70c/right.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -559,7 +559,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/searching.wav" type="audio/wav">
<source src="_downloads/1eb1baec8745f4a0258588d048af2faf/searching.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -570,7 +570,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/start.wav" type="audio/wav">
<source src="_downloads/687ce2c79e5dd5e3bf1856769f4dbc66/start.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -581,7 +581,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/stop.wav" type="audio/wav">
<source src="_downloads/2ffaf2c0aea075cd085f7e7e9bfde3da/stop.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -592,7 +592,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/touch.wav" type="audio/wav">
<source src="_downloads/1b2e04632c9d5493e7892e9063f4c774/touch.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -603,7 +603,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/turn.wav" type="audio/wav">
<source src="_downloads/3b93fb451261396cb22803bca32ffc98/turn.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -614,7 +614,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/up.wav" type="audio/wav">
<source src="_downloads/4d57fb9f5016ab031509003bd5e2599e/up.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -627,7 +627,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/bravo.wav" type="audio/wav">
<source src="_downloads/a59280f3dccc7fabe5fec2f08d7a5531/bravo.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -638,7 +638,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/ev3.wav" type="audio/wav">
<source src="_downloads/16e3cba2752b2bd7e7b679554e2af9be/ev3.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -649,7 +649,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/fantastic.wav" type="audio/wav">
<source src="_downloads/5d47bd0472935f4a003b6d5f3ddf689e/fantastic.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -660,7 +660,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/game_over.wav" type="audio/wav">
<source src="_downloads/1608f605abf2147d1e1c24868345140f/game_over.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -671,7 +671,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/go.wav" type="audio/wav">
<source src="_downloads/07ca1a415b549f46fedfae99d1a96aa5/go.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -682,7 +682,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/good_job.wav" type="audio/wav">
<source src="_downloads/8bd379acf75502b828ba914a3bc3e427/good_job.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -693,7 +693,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/good.wav" type="audio/wav">
<source src="_downloads/4bdca05d0338824c9c57123e3688fd4a/good.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -704,7 +704,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/goodbye.wav" type="audio/wav">
<source src="_downloads/94480a85f6482adadc5b42899107915a/goodbye.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -715,7 +715,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/hello.wav" type="audio/wav">
<source src="_downloads/04d29715977ff8744aa96a0c02bee9cc/hello.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -726,7 +726,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/hi.wav" type="audio/wav">
<source src="_downloads/d179305e8c4f3303a4e8d81470d31d66/hi.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -737,7 +737,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/lego.wav" type="audio/wav">
<source src="_downloads/04470100c29fe28963c1ec294155c17f/lego.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -748,7 +748,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/mindstorms.wav" type="audio/wav">
<source src="_downloads/ebfbf138f94b02ee98c0dc4b48024f69/mindstorms.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -759,7 +759,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/morning.wav" type="audio/wav">
<source src="_downloads/a6c1130e01dd511c5db03b44e3b8ca82/morning.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -770,7 +770,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/no.wav" type="audio/wav">
<source src="_downloads/1b17c7c11fbd18719d4ed95896180b41/no.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -781,7 +781,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/okay.wav" type="audio/wav">
<source src="_downloads/c87eda5c4a6f0cc90b15d5298f3fd2e4/okay.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -792,7 +792,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/okey-dokey.wav" type="audio/wav">
<source src="_downloads/63213245edef225194bf8a27d845306c/okey-dokey.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -803,7 +803,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/sorry.wav" type="audio/wav">
<source src="_downloads/51e56126d63130ceab8f3e117883d6c7/sorry.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -814,7 +814,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/thank_you.wav" type="audio/wav">
<source src="_downloads/fa960a507c5c19a5fa3ef68a3bf89006/thank_you.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -825,7 +825,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/yes.wav" type="audio/wav">
<source src="_downloads/d8e1b79be55b12172c3cdb8dae87e500/yes.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -839,7 +839,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/speed_down.wav" type="audio/wav">
<source src="_downloads/9ca3327caddb0984624cf897b3cab7a6/speed_down.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -850,7 +850,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/speed_idle.wav" type="audio/wav">
<source src="_downloads/ebae3bb4b8bea8c307f81454f8871369/speed_idle.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -861,7 +861,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/speed_up.wav" type="audio/wav">
<source src="_downloads/b9ba6804e4fc490b5991de59e18bbc27/speed_up.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -874,7 +874,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/black.wav" type="audio/wav">
<source src="_downloads/4ec641727ef967eae4094713799dcb87/black.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -885,7 +885,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/blue.wav" type="audio/wav">
<source src="_downloads/7c76ecd9d178acd347d180134c163d19/blue.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -896,7 +896,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/brown.wav" type="audio/wav">
<source src="_downloads/9b8576ad237f5a909643c44d0e0f8fdb/brown.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -907,7 +907,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/green.wav" type="audio/wav">
<source src="_downloads/e7db31dd878f95fbd9450330cf307e61/green.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -918,7 +918,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/red.wav" type="audio/wav">
<source src="_downloads/e01ec34c4c304b627ab6cad85cab4f3c/red.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -929,7 +929,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/white.wav" type="audio/wav">
<source src="_downloads/4998b5d327d0ed0c47ed22bd54871d00/white.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -940,7 +940,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/yellow.wav" type="audio/wav">
<source src="_downloads/5978ea64c468fcc6e29ef275bdd05c53/yellow.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -954,7 +954,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/air_release.wav" type="audio/wav">
<source src="_downloads/9995ce699985b42f9e35d316bc1656ff/air_release.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -965,7 +965,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/airbrake.wav" type="audio/wav">
<source src="_downloads/a6ecee4507319bc7f7be0f4cf443f945/airbrake.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -976,7 +976,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/backing_alert.wav" type="audio/wav">
<source src="_downloads/8c9992be9bd53d991a9c68e345419ab4/backing_alert.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -987,7 +987,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/horn_1.wav" type="audio/wav">
<source src="_downloads/c933279fb74362bb2a8212e8a7d3c986/horn_1.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -998,7 +998,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/horn_2.wav" type="audio/wav">
<source src="_downloads/4aff855ecbc8c1d1990644459b9e4691/horn_2.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1009,7 +1009,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/laser.wav" type="audio/wav">
<source src="_downloads/c3dad0070eaf14f37c4fd833ee2582b6/laser.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1020,7 +1020,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/motor_idle.wav" type="audio/wav">
<source src="_downloads/9ad779fa443396bf655fa4941fa00555/motor_idle.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1031,7 +1031,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/motor_start.wav" type="audio/wav">
<source src="_downloads/4170a2f720d8fc69cbeb15884ef8005c/motor_start.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1042,7 +1042,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/motor_stop.wav" type="audio/wav">
<source src="_downloads/e53e1d13274a14350428c97b79cfef8f/motor_stop.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1053,7 +1053,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/ratchet.wav" type="audio/wav">
<source src="_downloads/5f15a075f732ecb59da6a2b567f022be/ratchet.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1064,7 +1064,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/sonar.wav" type="audio/wav">
<source src="_downloads/a3a9f5db7e771598a20e092029414a38/sonar.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1075,7 +1075,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/tick_tack.wav" type="audio/wav">
<source src="_downloads/3d5ed9d439851dc0d9498198e3e607dd/tick_tack.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1089,7 +1089,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/cat_purr.wav" type="audio/wav">
<source src="_downloads/4694c85a42f6a788cef83dbcfd98fcc3/cat_purr.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1100,7 +1100,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/dog_bark_1.wav" type="audio/wav">
<source src="_downloads/c7da3202c16b18c6c8739d645616fc0a/dog_bark_1.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1111,7 +1111,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/dog_bark_2.wav" type="audio/wav">
<source src="_downloads/5041f485aea84ceb556b3651cf28e29f/dog_bark_2.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1122,7 +1122,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/dog_growl.wav" type="audio/wav">
<source src="_downloads/a50921fb985b4c3eb754a7acd0a1db3c/dog_growl.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1133,7 +1133,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/dog_sniff.wav" type="audio/wav">
<source src="_downloads/9aadf239f507defc6ab4b21f294c18e6/dog_sniff.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1144,7 +1144,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/dog_whine.wav" type="audio/wav">
<source src="_downloads/d02000b17efa8a07e5b4c543c9ded1aa/dog_whine.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1155,7 +1155,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/elephant_call.wav" type="audio/wav">
<source src="_downloads/b1c1e431b258f0f6b0fb5bb046948bf2/elephant_call.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1166,7 +1166,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/insect_buzz_1.wav" type="audio/wav">
<source src="_downloads/f2a89bfce31f89c4c0a18f463b283ebd/insect_buzz_1.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1177,7 +1177,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/insect_buzz_2.wav" type="audio/wav">
<source src="_downloads/5913cfa39dc1e67e809f76be8fd65f96/insect_buzz_2.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1188,7 +1188,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/insect_chirp.wav" type="audio/wav">
<source src="_downloads/3addbcfc1952ae61cd9214cba29de3b8/insect_chirp.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1199,7 +1199,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/snake_hiss.wav" type="audio/wav">
<source src="_downloads/20c3a57752c7bf1d0fd8019e334fd326/snake_hiss.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1210,7 +1210,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/snake_rattle.wav" type="audio/wav">
<source src="_downloads/e80fda03977f450bbaf4a2aa6c546a57/snake_rattle.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1221,7 +1221,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/t-rex_roar.wav" type="audio/wav">
<source src="_downloads/04e91ebc628278165a9c5223a43c42d4/t-rex_roar.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1236,7 +1236,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/zero.wav" type="audio/wav">
<source src="_downloads/4a0dd703ccc0a39fa770d7452aceb75a/zero.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1247,7 +1247,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/one.wav" type="audio/wav">
<source src="_downloads/af38ef82b676e52aa3e4e19d8a3b266c/one.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1258,7 +1258,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/two.wav" type="audio/wav">
<source src="_downloads/c7519408a5909c58b42fd5e2550ab3f0/two.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1269,7 +1269,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/three.wav" type="audio/wav">
<source src="_downloads/fcdf73cd26b6b6ae425ecea7b6157a2e/three.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1280,7 +1280,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/four.wav" type="audio/wav">
<source src="_downloads/f6a1e4321548226d3fa425a06f03f6ec/four.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1291,7 +1291,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/five.wav" type="audio/wav">
<source src="_downloads/b89b2ae608016677c214d22660fd1810/five.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1302,7 +1302,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/six.wav" type="audio/wav">
<source src="_downloads/cfbb82133b24cb22b9f6be2f72e8410b/six.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1313,7 +1313,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/seven.wav" type="audio/wav">
<source src="_downloads/b970687710cce4e4a61116e2fe4a165d/seven.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1324,7 +1324,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/eight.wav" type="audio/wav">
<source src="_downloads/e8e13344d41e8e972019eba243905dd4/eight.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1335,7 +1335,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/nine.wav" type="audio/wav">
<source src="_downloads/44877fe3b7ab43f0dfbdb1cb8473e50c/nine.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1346,7 +1346,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/ten.wav" type="audio/wav">
<source src="_downloads/dfc2e6d07ce2e78043833c70a44658be/ten.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1360,7 +1360,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/click.wav" type="audio/wav">
<source src="_downloads/e2b0ba3e2187949a70d98d8586318268/click.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1371,7 +1371,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/confirm.wav" type="audio/wav">
<source src="_downloads/7b517a25eb0c610d0c7b4b75585ca09d/confirm.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1382,7 +1382,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/general_alert.wav" type="audio/wav">
<source src="_downloads/989d1cc35edba4a15f7baf7e89daa950/general_alert.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1393,7 +1393,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/overpower.wav" type="audio/wav">
<source src="_downloads/1132af3a5999cb9f63da3af06cf2e5a0/overpower.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
@@ -1404,7 +1404,7 @@ Sound Files
.. raw:: html
<audio controls="controls">
<source src="_downloads/ready.wav" type="audio/wav">
<source src="_downloads/41b4038c31b97bbed12827b086b14f4a/ready.wav" type="audio/wav">
Your browser does not support the <code>audio</code> element.
</audio>
+3
View File
@@ -12,6 +12,7 @@
color
direction
port
side
stop
.. pybricks-classlink:: Button
@@ -22,5 +23,7 @@
.. pybricks-classlink:: Port
.. pybricks-classlink:: Side
.. pybricks-classlink:: Stop
+55
View File
@@ -0,0 +1,55 @@
Side
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. class:: Side
Side of a hub or a sensor. These devices are
mostly rectangular boxes with six sides:
.. autoattribute:: pybricks.parameters.Side.TOP
:annotation:
.. autoattribute:: pybricks.parameters.Side.BOTTOM
:annotation:
.. autoattribute:: pybricks.parameters.Side.FRONT
:annotation:
.. autoattribute:: pybricks.parameters.Side.BACK
:annotation:
.. autoattribute:: pybricks.parameters.Side.LEFT
:annotation:
.. autoattribute:: pybricks.parameters.Side.RIGHT
:annotation:
Screens or light matrices have only four sides. For those,
``TOP`` is treated the same as ``FRONT``, and ``BOTTOM`` is treated the
same as ``BACK``. The diagrams below define the sides for relevant devices.
**Prime Hub**
.. figure:: ../../api/images/orientation_primehub_label.png
:height: 17 em
**Inventor Hub**
.. figure:: ../../api/images/orientation_inventorhub_label.png
:height: 17 em
**Move Hub**
.. figure:: ../../api/images/orientation_movehub_label.png
:height: 17 em
**Technic Hub**
.. figure:: ../../api/images/orientation_technichub_label.png
:height: 17 em
**Tilt Sensor**
.. figure:: ../../api/images/orientation_tiltsensor_label.png
:height: 17 em
+6
View File
@@ -26,6 +26,12 @@ Motors without Rotation Sensors
Examples
-------------------
Making a train drive forever
************************************
.. literalinclude::
../../../examples/pup/motor_dc/motor_dc_battery_box.py
Making the motor move back and forth
************************************
+7
View File
@@ -18,6 +18,7 @@
ultrasonicsensor
forcesensor
light
remote
.. pybricks-classlink:: DCMotor
@@ -78,3 +79,9 @@
.. figure:: ../../api/images/light.png
:width: 90 %
:target: light.html
.. pybricks-classlink:: Remote
.. figure:: ../../api/images/pupremote.png
:width: 50 %
:target: remote.html
+23
View File
@@ -0,0 +1,23 @@
Remote Control
^^^^^^^^^^^^^^^^^^^^^^^^^
.. warning::
This remote is not yet supported.
Upvote `this issue <https://github.com/pybricks/support/issues/186>`_ if
you want to see this happen.
.. figure:: ../../api/images/pupremote.png
:width: 60 %
.. autoclass:: pybricks.pupdevices.Remote
:no-members:
.. autoattribute:: pybricks.pupdevices::Remote.address
:annotation:
.. automethod:: pybricks.pupdevices::Remote.light.on
.. automethod:: pybricks.pupdevices::Remote.light.off
.. automethod:: pybricks.pupdevices::Remote.buttons.pressed
@@ -1,3 +1,4 @@
// Since Pybricks Code is an "app", all external links get opened in new tab/window
// https://stackoverflow.com/a/62742435/1976323
$(document).ready(function () {
$('a[href^="http://"], a[href^="https://"]').not('a[class*=internal]').attr('target', '_blank');
+1 -6
View File
@@ -91,7 +91,7 @@ version = re.match(r'(v\d+\.\d+)', release)[0]
language = None
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
pygments_style = 'xcode'
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = True
@@ -147,11 +147,6 @@ else:
html_theme = 'sphinx_rtd_theme'
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
# a little extra javascript
html_js_files = [
'js/custom.js'
]
html_context = {
'disclaimer': _DISCLAIMER,
}
+24
View File
@@ -1,3 +1,27 @@
# 1.4.0 - 2021-06-23
## Added:
- Enabled beta content that was hidden for the 3.0 release.
- Added notice about using the latest beta version.
# 1.3.3 - 2021-05-21
## Changed:
- Match example snippet styling to IDE.
- Add more examples.
# 1.3.2 - 2021-04-26
## Changed:
- Theme style fixes.
- Example code fixes
- Match doc version to firmware version.
# 1.3.1 - 2021-04-12
## Changed:
- Upgrade sphinx and rtd-theme to fix style issues.
# 1.3.0 - 2021-04-12
## Removed:
+1
View File
@@ -18,6 +18,7 @@ html_logo = '../common/images/pybricks-logo-rtd.png'
html_show_copyright = False
html_show_sphinx = False
html_css_files = ['css/ide.css']
html_js_files = ['js/ide.js']
imgmath_image_format = 'svg'
imgmath_use_preview = True # requires Sphinx v3
+1
View File
@@ -0,0 +1 @@
.. include:: ../api/geometry.rst
+12
View File
@@ -10,6 +10,7 @@
movehub
cityhub
technichub
primehub
.. pybricks-classlink:: MoveHub
@@ -29,3 +30,14 @@
:height: 10 em
:target: technichub.html
.. pybricks-classlink:: PrimeHub
.. figure:: ../../api/images/primehub.png
:height: 10 em
:target: primehub.html
.. pybricks-classlink:: InventorHub
.. figure:: ../../api/images/inventorhub.png
:height: 10 em
:target: primehub.html
+1
View File
@@ -0,0 +1 @@
.. include:: ../../api/hubs/primehub.rst
+14 -1
View File
@@ -12,6 +12,7 @@ Pybricks Documentation
parameters/index
tools/index
robotics
geometry
.. toctree::
:maxdepth: 1
@@ -21,6 +22,16 @@ Pybricks Documentation
signaltypes
motors
.. note::
**You are using a new beta version of Pybricks!**
This is great for trying the very latest features, but some things
might not work.
If in doubt, use the `latest stable release`_. Please report any
issues via our `support page`_. Thanks!
To begin, install the Pybricks firmware on your hub. Check
`pybricks.com/install`_ to learn how.
@@ -29,7 +40,7 @@ commonly used devices and classes are listed below for quick reference.
.. rubric:: Programmable Hubs
.. figure:: ../api/images/powereduphubs.png
.. figure:: ../api/images/hubsoverview.png
:width: 100 %
:target: hubs/index.html
@@ -40,3 +51,5 @@ commonly used devices and classes are listed below for quick reference.
:target: pupdevices/index.html
.. _pybricks.com/install: https://pybricks.com/install/
.. _latest stable release: https://www.code.pybricks.com/
.. _support page: https://github.com/pybricks/support
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@pybricks/ide-docs",
"version": "1.3.0",
"version": "1.4.0",
"description": "Special build of Pybricks API docs for embedding in an IDE.",
"repository": {
"type": "git",
+1
View File
@@ -0,0 +1 @@
.. include:: ../../api/parameters/button.rst
+1 -23
View File
@@ -1,23 +1 @@
:mod:`parameters <pybricks.parameters>` -- Parameters and Constants
===================================================================
.. automodule:: pybricks.parameters
:no-members:
.. toctree::
:maxdepth: 1
:hidden:
color
direction
port
stop
.. pybricks-classlink:: Color
.. pybricks-classlink:: Direction
.. pybricks-classlink:: Port
.. pybricks-classlink:: Stop
.. include:: ../../api/parameters/index.rst
+1
View File
@@ -0,0 +1 @@
.. include:: ../../api/parameters/side.rst
+1
View File
@@ -0,0 +1 @@
.. include:: ../../api/pupdevices/remote.rst
+1 -1
View File
@@ -13,7 +13,7 @@ device = I2CDevice(Port.S2, 0xD2 >> 1)
# For this device, we can read the Who Am I
# register (0x0F) for the expected value: 211.
if 211 not in device.read(0x0F):
raise OSError("Device is not attached")
raise ValueError("Unexpected I2C device ID")
# To write data, create a bytes object of one
# or more bytes. For example:
+1 -1
View File
@@ -7,7 +7,7 @@ from math import sin, pi
hub = CityHub()
# Make an animation with multiple colors.
hub.light.animate([Color.RED, Color.GREEN, None], interval=500)
hub.light.animate([Color.RED, Color.GREEN, Color.NONE], interval=500)
wait(10000)
+1 -1
View File
@@ -7,7 +7,7 @@ from math import sin, pi
hub = PrimeHub()
# Make an animation with multiple colors.
hub.light.animate([Color.RED, Color.GREEN, None], interval=500)
hub.light.animate([Color.RED, Color.GREEN, Color.NONE], interval=500)
wait(10000)
+1 -1
View File
@@ -8,7 +8,7 @@ from math import sin, pi
hub = ExampleHub()
# Make an animation with multiple colors.
hub.light.animate([Color.RED, Color.GREEN, None], interval=500)
hub.light.animate([Color.RED, Color.GREEN, Color.NONE], interval=500)
wait(10000)
+1 -1
View File
@@ -7,7 +7,7 @@ from math import sin, pi
hub = TechnicHub()
# Make an animation with multiple colors.
hub.light.animate([Color.RED, Color.GREEN, None], interval=500)
hub.light.animate([Color.RED, Color.GREEN, Color.NONE], interval=500)
wait(10000)
@@ -0,0 +1,60 @@
from pybricks.iodevices import PUPDevice
from pybricks.parameters import Port
from uerrno import ENODEV
# Dictionary of device identifiers along with their name.
device_names = {
34: "Wedo 2.0 Tilt Sensor",
35: "Wedo 2.0 Infrared Sensor",
37: "BOOST Color Distance Sensor",
38: "BOOST Interactive Motor",
46: "Technic Large Motor",
47: "Technic Extra Large Motor",
48: "SPIKE Medium Angular Motor",
49: "SPIKE Large Angular Motor",
61: "SPIKE Color Sensor",
62: "SPIKE Ultrasonic Sensor",
63: "SPIKE Force Sensor",
75: "Technic Medium Angular Motor",
76: "Technic Large Angular Motor",
}
# Make a list of known ports.
ports = [Port.A, Port.B]
# On hubs that support it, add more ports.
try:
ports.append(Port.C)
ports.append(Port.D)
except AttributeError:
pass
# On hubs that support it, add more ports.
try:
ports.append(Port.E)
ports.append(Port.F)
except AttributeError:
pass
# Go through all available ports.
for port in ports:
# Try to get the device, if it is attached.
try:
device = PUPDevice(port)
except OSError as ex:
if ex.args[0] == ENODEV:
# No device found on this port.
print(port, ": ---")
continue
else:
raise
# Get the device id
id = device.info()['id']
# Look up the name.
try:
print(port, ":", device_names[id])
except KeyError:
print(port, ":", "Unknown device with ID", id)
@@ -0,0 +1,13 @@
from pybricks.pupdevices import DCMotor
from pybricks.parameters import Port
from pybricks.tools import wait
# Initialize the motor.
train_motor = DCMotor(Port.A)
# Choose the "power" level for your train. Negative means reverse.
train_motor.dc(50)
# Keep doing nothing. The train just keeps going.
while True:
wait(1000)
Generated
+100 -81
View File
@@ -105,16 +105,16 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[[package]]
name = "flake8"
version = "3.8.4"
version = "3.9.0"
description = "the modular source code checker: pep8 pyflakes and co"
category = "dev"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7"
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
[package.dependencies]
mccabe = ">=0.6.0,<0.7.0"
pycodestyle = ">=2.6.0a1,<2.7.0"
pyflakes = ">=2.2.0,<2.3.0"
pycodestyle = ">=2.7.0,<2.8.0"
pyflakes = ">=2.3.0,<2.4.0"
[[package]]
name = "idna"
@@ -134,7 +134,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "jinja2"
version = "2.11.2"
version = "2.11.3"
description = "A very fast and expressive template engine."
category = "dev"
optional = false
@@ -172,7 +172,7 @@ python-versions = "*"
[[package]]
name = "packaging"
version = "20.8"
version = "20.9"
description = "Core utilities for Python packages"
category = "dev"
optional = false
@@ -199,7 +199,7 @@ python-versions = ">=2.6"
[[package]]
name = "pycodestyle"
version = "2.6.0"
version = "2.7.0"
description = "Python style guide checker"
category = "dev"
optional = false
@@ -207,7 +207,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "pyflakes"
version = "2.2.0"
version = "2.3.1"
description = "passive checker of Python programs"
category = "dev"
optional = false
@@ -215,7 +215,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "pygments"
version = "2.7.4"
version = "2.8.1"
description = "Pygments is a syntax highlighting package written in Python."
category = "dev"
optional = false
@@ -231,7 +231,7 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
[[package]]
name = "pytz"
version = "2020.5"
version = "2021.1"
description = "World timezone definitions, modern and historical"
category = "dev"
optional = false
@@ -239,7 +239,7 @@ python-versions = "*"
[[package]]
name = "regex"
version = "2020.11.13"
version = "2021.4.4"
description = "Alternative regular expression module, to replace re."
category = "dev"
optional = false
@@ -261,7 +261,7 @@ urllib3 = ">=1.21.1,<1.27"
[package.extras]
security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"]
socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"]
socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
[[package]]
name = "restructuredtext-lint"
@@ -292,7 +292,7 @@ python-versions = "*"
[[package]]
name = "sphinx"
version = "3.4.3"
version = "3.5.3"
description = "Python documentation generator"
category = "dev"
optional = false
@@ -318,18 +318,19 @@ sphinxcontrib-serializinghtml = "*"
[package.extras]
docs = ["sphinxcontrib-websupport"]
lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.790)", "docutils-stubs"]
lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.800)", "docutils-stubs"]
test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"]
[[package]]
name = "sphinx-rtd-theme"
version = "0.5.1"
version = "0.5.2"
description = "Read the Docs theme for Sphinx"
category = "dev"
optional = false
python-versions = "*"
[package.dependencies]
docutils = "<0.17"
sphinx = "*"
[package.extras]
@@ -443,21 +444,21 @@ python-versions = "*"
[[package]]
name = "urllib3"
version = "1.26.2"
version = "1.26.4"
description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
[package.extras]
brotli = ["brotlipy (>=0.6.0)"]
secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"]
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
brotli = ["brotlipy (>=0.6.0)"]
[metadata]
lock-version = "1.1"
python-versions = "^3.8"
content-hash = "4d6ac2394f202eb7b9e91a510d807c6e2f56ae61ef23c28edeb5d9feaf741fc1"
content-hash = "72f3e4266f045ac29346409478c8545ef3199193c921ca8eb4e6143dc225e0ce"
[metadata.files]
alabaster = [
@@ -473,7 +474,6 @@ babel = [
{file = "Babel-2.9.0.tar.gz", hash = "sha256:da031ab54472314f210b0adcff1588ee5d1d1d0ba4dbd07b94dba82bde791e05"},
]
black = [
{file = "black-20.8b1-py3-none-any.whl", hash = "sha256:70b62ef1527c950db59062cda342ea224d772abdf6adc58b86a45421bab20a6b"},
{file = "black-20.8b1.tar.gz", hash = "sha256:1c02557aa099101b9d21496f8a914e9ed2222ef70336404eeeac8edba836fbea"},
]
certifi = [
@@ -501,8 +501,8 @@ docutils = [
{file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"},
]
flake8 = [
{file = "flake8-3.8.4-py2.py3-none-any.whl", hash = "sha256:749dbbd6bfd0cf1318af27bf97a14e28e5ff548ef8e5b1566ccfb25a11e7c839"},
{file = "flake8-3.8.4.tar.gz", hash = "sha256:aadae8761ec651813c24be05c6f7b4680857ef6afaae4651a4eccaef97ce6c3b"},
{file = "flake8-3.9.0-py2.py3-none-any.whl", hash = "sha256:12d05ab02614b6aee8df7c36b97d1a3b2372761222b19b58621355e82acddcff"},
{file = "flake8-3.9.0.tar.gz", hash = "sha256:78873e372b12b093da7b5e5ed302e8ad9e988b38b063b61ad937f26ca58fc5f0"},
]
idna = [
{file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"},
@@ -513,8 +513,8 @@ imagesize = [
{file = "imagesize-1.2.0.tar.gz", hash = "sha256:b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1"},
]
jinja2 = [
{file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"},
{file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"},
{file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"},
{file = "Jinja2-2.11.3.tar.gz", hash = "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"},
]
markupsafe = [
{file = "MarkupSafe-1.1.1-cp27-cp27m-macosx_10_6_intel.whl", hash = "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"},
@@ -535,20 +535,39 @@ markupsafe = [
{file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"},
{file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"},
{file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"},
{file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d53bc011414228441014aa71dbec320c66468c1030aae3a6e29778a3382d96e5"},
{file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"},
{file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"},
{file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:3b8a6499709d29c2e2399569d96719a1b21dcd94410a586a18526b143ec8470f"},
{file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:84dee80c15f1b560d55bcfe6d47b27d070b4681c699c572af2e3c7cc90a3b8e0"},
{file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:b1dba4527182c95a0db8b6060cc98ac49b9e2f5e64320e2b56e47cb2831978c7"},
{file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"},
{file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bf5aa3cbcfdf57fa2ee9cd1822c862ef23037f5c832ad09cfea57fa846dec193"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:6fffc775d90dcc9aed1b89219549b329a9250d918fd0b8fa8d93d154918422e1"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:a6a744282b7718a2a62d2ed9d993cad6f5f585605ad352c11de459f4108df0a1"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:195d7d2c4fbb0ee8139a6cf67194f3973a6b3042d742ebe0a9ed36d8b6f0c07f"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"},
{file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"},
{file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"},
{file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"},
{file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:acf08ac40292838b3cbbb06cfe9b2cb9ec78fce8baca31ddb87aaac2e2dc3bc2"},
{file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d9be0ba6c527163cbed5e0857c451fcd092ce83947944d6c14bc95441203f032"},
{file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:caabedc8323f1e93231b52fc32bdcde6db817623d33e100708d9a68e1f53b26b"},
{file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"},
{file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"},
{file = "MarkupSafe-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d73a845f227b0bfe8a7455ee623525ee656a9e2e749e4742706d80a6065d5e2c"},
{file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:98bae9582248d6cf62321dcb52aaf5d9adf0bad3b40582925ef7c7f0ed85fceb"},
{file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:2beec1e0de6924ea551859edb9e7679da6e4870d32cb766240ce17e0a0ba2014"},
{file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:7fed13866cf14bba33e7176717346713881f56d9d2bcebab207f7a036f41b850"},
{file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:6f1e273a344928347c1290119b493a1f0303c52f5a5eae5f16d74f48c15d4a85"},
{file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:feb7b34d6325451ef96bc0e36e1a6c0c1c64bc1fbec4b854f4529e51887b1621"},
{file = "MarkupSafe-1.1.1-cp39-cp39-win32.whl", hash = "sha256:22c178a091fc6630d0d045bdb5992d2dfe14e3259760e713c490da5323866c39"},
{file = "MarkupSafe-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7d644ddb4dbd407d31ffb699f1d140bc35478da613b441c582aeb7c43838dd8"},
{file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"},
]
mccabe = [
@@ -560,8 +579,8 @@ mypy-extensions = [
{file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
]
packaging = [
{file = "packaging-20.8-py2.py3-none-any.whl", hash = "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858"},
{file = "packaging-20.8.tar.gz", hash = "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093"},
{file = "packaging-20.9-py2.py3-none-any.whl", hash = "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a"},
{file = "packaging-20.9.tar.gz", hash = "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5"},
]
pathspec = [
{file = "pathspec-0.8.1-py2.py3-none-any.whl", hash = "sha256:aa0cb481c4041bf52ffa7b0d8fa6cd3e88a2ca4879c533c9153882ee2556790d"},
@@ -572,67 +591,67 @@ pbr = [
{file = "pbr-5.5.1.tar.gz", hash = "sha256:5fad80b613c402d5b7df7bd84812548b2a61e9977387a80a5fc5c396492b13c9"},
]
pycodestyle = [
{file = "pycodestyle-2.6.0-py2.py3-none-any.whl", hash = "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367"},
{file = "pycodestyle-2.6.0.tar.gz", hash = "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e"},
{file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"},
{file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"},
]
pyflakes = [
{file = "pyflakes-2.2.0-py2.py3-none-any.whl", hash = "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92"},
{file = "pyflakes-2.2.0.tar.gz", hash = "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8"},
{file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"},
{file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"},
]
pygments = [
{file = "Pygments-2.7.4-py3-none-any.whl", hash = "sha256:bc9591213a8f0e0ca1a5e68a479b4887fdc3e75d0774e5c71c31920c427de435"},
{file = "Pygments-2.7.4.tar.gz", hash = "sha256:df49d09b498e83c1a73128295860250b0b7edd4c723a32e9bc0d295c7c2ec337"},
{file = "Pygments-2.8.1-py3-none-any.whl", hash = "sha256:534ef71d539ae97d4c3a4cf7d6f110f214b0e687e92f9cb9d2a3b0d3101289c8"},
{file = "Pygments-2.8.1.tar.gz", hash = "sha256:2656e1a6edcdabf4275f9a3640db59fd5de107d88e8663c5d4e9a0fa62f77f94"},
]
pyparsing = [
{file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"},
{file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"},
]
pytz = [
{file = "pytz-2020.5-py2.py3-none-any.whl", hash = "sha256:16962c5fb8db4a8f63a26646d8886e9d769b6c511543557bc84e9569fb9a9cb4"},
{file = "pytz-2020.5.tar.gz", hash = "sha256:180befebb1927b16f6b57101720075a984c019ac16b1b7575673bea42c6c3da5"},
{file = "pytz-2021.1-py2.py3-none-any.whl", hash = "sha256:eb10ce3e7736052ed3623d49975ce333bcd712c7bb19a58b9e2089d4057d0798"},
{file = "pytz-2021.1.tar.gz", hash = "sha256:83a4a90894bf38e243cf052c8b58f381bfe9a7a483f6a9cab140bc7f702ac4da"},
]
regex = [
{file = "regex-2020.11.13-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85"},
{file = "regex-2020.11.13-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70"},
{file = "regex-2020.11.13-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee"},
{file = "regex-2020.11.13-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5"},
{file = "regex-2020.11.13-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7"},
{file = "regex-2020.11.13-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31"},
{file = "regex-2020.11.13-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa"},
{file = "regex-2020.11.13-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6"},
{file = "regex-2020.11.13-cp36-cp36m-win32.whl", hash = "sha256:49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e"},
{file = "regex-2020.11.13-cp36-cp36m-win_amd64.whl", hash = "sha256:749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884"},
{file = "regex-2020.11.13-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b"},
{file = "regex-2020.11.13-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88"},
{file = "regex-2020.11.13-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0"},
{file = "regex-2020.11.13-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1"},
{file = "regex-2020.11.13-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0"},
{file = "regex-2020.11.13-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512"},
{file = "regex-2020.11.13-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba"},
{file = "regex-2020.11.13-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538"},
{file = "regex-2020.11.13-cp37-cp37m-win32.whl", hash = "sha256:0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4"},
{file = "regex-2020.11.13-cp37-cp37m-win_amd64.whl", hash = "sha256:1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444"},
{file = "regex-2020.11.13-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f"},
{file = "regex-2020.11.13-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d"},
{file = "regex-2020.11.13-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af"},
{file = "regex-2020.11.13-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f"},
{file = "regex-2020.11.13-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b"},
{file = "regex-2020.11.13-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8"},
{file = "regex-2020.11.13-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5"},
{file = "regex-2020.11.13-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b"},
{file = "regex-2020.11.13-cp38-cp38-win32.whl", hash = "sha256:7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c"},
{file = "regex-2020.11.13-cp38-cp38-win_amd64.whl", hash = "sha256:6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683"},
{file = "regex-2020.11.13-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc"},
{file = "regex-2020.11.13-cp39-cp39-manylinux1_i686.whl", hash = "sha256:4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364"},
{file = "regex-2020.11.13-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e"},
{file = "regex-2020.11.13-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e"},
{file = "regex-2020.11.13-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917"},
{file = "regex-2020.11.13-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b"},
{file = "regex-2020.11.13-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9"},
{file = "regex-2020.11.13-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c"},
{file = "regex-2020.11.13-cp39-cp39-win32.whl", hash = "sha256:f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f"},
{file = "regex-2020.11.13-cp39-cp39-win_amd64.whl", hash = "sha256:a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d"},
{file = "regex-2020.11.13.tar.gz", hash = "sha256:83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562"},
{file = "regex-2021.4.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:619d71c59a78b84d7f18891fe914446d07edd48dc8328c8e149cbe0929b4e000"},
{file = "regex-2021.4.4-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:47bf5bf60cf04d72bf6055ae5927a0bd9016096bf3d742fa50d9bf9f45aa0711"},
{file = "regex-2021.4.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:281d2fd05555079448537fe108d79eb031b403dac622621c78944c235f3fcf11"},
{file = "regex-2021.4.4-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:bd28bc2e3a772acbb07787c6308e00d9626ff89e3bfcdebe87fa5afbfdedf968"},
{file = "regex-2021.4.4-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:7c2a1af393fcc09e898beba5dd59196edaa3116191cc7257f9224beaed3e1aa0"},
{file = "regex-2021.4.4-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:c38c71df845e2aabb7fb0b920d11a1b5ac8526005e533a8920aea97efb8ec6a4"},
{file = "regex-2021.4.4-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:96fcd1888ab4d03adfc9303a7b3c0bd78c5412b2bfbe76db5b56d9eae004907a"},
{file = "regex-2021.4.4-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:ade17eb5d643b7fead300a1641e9f45401c98eee23763e9ed66a43f92f20b4a7"},
{file = "regex-2021.4.4-cp36-cp36m-win32.whl", hash = "sha256:e8e5b509d5c2ff12f8418006d5a90e9436766133b564db0abaec92fd27fcee29"},
{file = "regex-2021.4.4-cp36-cp36m-win_amd64.whl", hash = "sha256:11d773d75fa650cd36f68d7ca936e3c7afaae41b863b8c387a22aaa78d3c5c79"},
{file = "regex-2021.4.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d3029c340cfbb3ac0a71798100ccc13b97dddf373a4ae56b6a72cf70dfd53bc8"},
{file = "regex-2021.4.4-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:18c071c3eb09c30a264879f0d310d37fe5d3a3111662438889ae2eb6fc570c31"},
{file = "regex-2021.4.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:4c557a7b470908b1712fe27fb1ef20772b78079808c87d20a90d051660b1d69a"},
{file = "regex-2021.4.4-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:01afaf2ec48e196ba91b37451aa353cb7eda77efe518e481707e0515025f0cd5"},
{file = "regex-2021.4.4-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:3a9cd17e6e5c7eb328517969e0cb0c3d31fd329298dd0c04af99ebf42e904f82"},
{file = "regex-2021.4.4-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:90f11ff637fe8798933fb29f5ae1148c978cccb0452005bf4c69e13db951e765"},
{file = "regex-2021.4.4-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:919859aa909429fb5aa9cf8807f6045592c85ef56fdd30a9a3747e513db2536e"},
{file = "regex-2021.4.4-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:339456e7d8c06dd36a22e451d58ef72cef293112b559010db3d054d5560ef439"},
{file = "regex-2021.4.4-cp37-cp37m-win32.whl", hash = "sha256:67bdb9702427ceddc6ef3dc382455e90f785af4c13d495f9626861763ee13f9d"},
{file = "regex-2021.4.4-cp37-cp37m-win_amd64.whl", hash = "sha256:32e65442138b7b76dd8173ffa2cf67356b7bc1768851dded39a7a13bf9223da3"},
{file = "regex-2021.4.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1e1c20e29358165242928c2de1482fb2cf4ea54a6a6dea2bd7a0e0d8ee321500"},
{file = "regex-2021.4.4-cp38-cp38-manylinux1_i686.whl", hash = "sha256:314d66636c494ed9c148a42731b3834496cc9a2c4251b1661e40936814542b14"},
{file = "regex-2021.4.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:6d1b01031dedf2503631d0903cb563743f397ccaf6607a5e3b19a3d76fc10480"},
{file = "regex-2021.4.4-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:741a9647fcf2e45f3a1cf0e24f5e17febf3efe8d4ba1281dcc3aa0459ef424dc"},
{file = "regex-2021.4.4-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:4c46e22a0933dd783467cf32b3516299fb98cfebd895817d685130cc50cd1093"},
{file = "regex-2021.4.4-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:e512d8ef5ad7b898cdb2d8ee1cb09a8339e4f8be706d27eaa180c2f177248a10"},
{file = "regex-2021.4.4-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:980d7be47c84979d9136328d882f67ec5e50008681d94ecc8afa8a65ed1f4a6f"},
{file = "regex-2021.4.4-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:ce15b6d103daff8e9fee13cf7f0add05245a05d866e73926c358e871221eae87"},
{file = "regex-2021.4.4-cp38-cp38-win32.whl", hash = "sha256:a91aa8619b23b79bcbeb37abe286f2f408d2f2d6f29a17237afda55bb54e7aac"},
{file = "regex-2021.4.4-cp38-cp38-win_amd64.whl", hash = "sha256:c0502c0fadef0d23b128605d69b58edb2c681c25d44574fc673b0e52dce71ee2"},
{file = "regex-2021.4.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:598585c9f0af8374c28edd609eb291b5726d7cbce16be6a8b95aa074d252ee17"},
{file = "regex-2021.4.4-cp39-cp39-manylinux1_i686.whl", hash = "sha256:ee54ff27bf0afaf4c3b3a62bcd016c12c3fdb4ec4f413391a90bd38bc3624605"},
{file = "regex-2021.4.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7d9884d86dd4dd489e981d94a65cd30d6f07203d90e98f6f657f05170f6324c9"},
{file = "regex-2021.4.4-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:bf5824bfac591ddb2c1f0a5f4ab72da28994548c708d2191e3b87dd207eb3ad7"},
{file = "regex-2021.4.4-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:563085e55b0d4fb8f746f6a335893bda5c2cef43b2f0258fe1020ab1dd874df8"},
{file = "regex-2021.4.4-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:b9c3db21af35e3b3c05764461b262d6f05bbca08a71a7849fd79d47ba7bc33ed"},
{file = "regex-2021.4.4-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:3916d08be28a1149fb97f7728fca1f7c15d309a9f9682d89d79db75d5e52091c"},
{file = "regex-2021.4.4-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:fd45ff9293d9274c5008a2054ecef86a9bfe819a67c7be1afb65e69b405b3042"},
{file = "regex-2021.4.4-cp39-cp39-win32.whl", hash = "sha256:fa4537fb4a98fe8fde99626e4681cc644bdcf2a795038533f9f711513a862ae6"},
{file = "regex-2021.4.4-cp39-cp39-win_amd64.whl", hash = "sha256:97f29f57d5b84e73fbaf99ab3e26134e6687348e95ef6b48cfd2c06807005a07"},
{file = "regex-2021.4.4.tar.gz", hash = "sha256:52ba3d3f9b942c49d7e4bc105bb28551c44065f139a65062ab7912bef10c9afb"},
]
requests = [
{file = "requests-2.25.1-py2.py3-none-any.whl", hash = "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e"},
@@ -650,12 +669,12 @@ snowballstemmer = [
{file = "snowballstemmer-2.1.0.tar.gz", hash = "sha256:e997baa4f2e9139951b6f4c631bad912dfd3c792467e2f03d7239464af90e914"},
]
sphinx = [
{file = "Sphinx-3.4.3-py3-none-any.whl", hash = "sha256:c314c857e7cd47c856d2c5adff514ac2e6495f8b8e0f886a8a37e9305dfea0d8"},
{file = "Sphinx-3.4.3.tar.gz", hash = "sha256:41cad293f954f7d37f803d97eb184158cfd90f51195131e94875bc07cd08b93c"},
{file = "Sphinx-3.5.3-py3-none-any.whl", hash = "sha256:3f01732296465648da43dec8fb40dc451ba79eb3e2cc5c6d79005fd98197107d"},
{file = "Sphinx-3.5.3.tar.gz", hash = "sha256:ce9c228456131bab09a3d7d10ae58474de562a6f79abb3dc811ae401cf8c1abc"},
]
sphinx-rtd-theme = [
{file = "sphinx_rtd_theme-0.5.1-py2.py3-none-any.whl", hash = "sha256:fa6bebd5ab9a73da8e102509a86f3fcc36dec04a0b52ea80e5a033b2aba00113"},
{file = "sphinx_rtd_theme-0.5.1.tar.gz", hash = "sha256:eda689eda0c7301a80cf122dad28b1861e5605cbf455558f3775e1e8200e83a5"},
{file = "sphinx_rtd_theme-0.5.2-py2.py3-none-any.whl", hash = "sha256:4a05bdbe8b1446d77a01e20a23ebc6777c74f43237035e76be89699308987d6f"},
{file = "sphinx_rtd_theme-0.5.2.tar.gz", hash = "sha256:32bd3b5d13dc8186d7a42fc816a23d32e83a4827d7d9882948e7b837c232da5a"},
]
sphinxcontrib-applehelp = [
{file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"},
@@ -727,6 +746,6 @@ typing-extensions = [
{file = "typing_extensions-3.7.4.3.tar.gz", hash = "sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c"},
]
urllib3 = [
{file = "urllib3-1.26.2-py2.py3-none-any.whl", hash = "sha256:d8ff90d979214d7b4f8ce956e80f4028fc6860e4431f731ea4a8c08f23f99473"},
{file = "urllib3-1.26.2.tar.gz", hash = "sha256:19188f96923873c92ccb987120ec4acaa12f0461fa9ce5d3d0772bc965a39e08"},
{file = "urllib3-1.26.4-py2.py3-none-any.whl", hash = "sha256:2f4da4594db7e1e110a944bb1b551fdf4e6c136ad42e4234131391e21eb5b0df"},
{file = "urllib3-1.26.4.tar.gz", hash = "sha256:e7b021f7241115872f92f43c6508082facffbd1c048e3c6e2bb9c2a157e28937"},
]
+3 -3
View File
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: MIT
# Copyright (c) 2020 The Pybricks Authors
from typing import Optional, Tuple, overload
from typing import Optional, Tuple, overload, Union
from ._common import Control, Motor
class DriveBase:
@@ -11,8 +11,8 @@ class DriveBase:
self,
left_motor: Motor,
right_motor: Motor,
wheel_diameter: int,
axle_track: int,
wheel_diameter: Union[int, float],
axle_track: Union[int, float],
): ...
def drive(self, drive_speed: int, turn_rate: int) -> None: ...
def stop(self) -> None: ...
+3 -3
View File
@@ -1,6 +1,6 @@
[tool.poetry]
name = "pybricks"
version = "3.0.0a3"
version = "3.1.0a1"
description = "Documentation and user-API stubs for Pybricks MicroPython"
authors = ["The Pybricks Authors <dev@pybricks.com>"]
maintainers = ["Laurens Valk <laurens@pybricks.com>", "David Lechner <david@pybricks.com>" ]
@@ -22,8 +22,8 @@ python = "^3.8"
black = {version = "^20.8b1", allow-prereleases = true}
doc8 = "^0.8.1"
flake8 = "^3.8.4"
Sphinx = "^3.4.3"
sphinx-rtd-theme = "^0.5.1"
Sphinx = "==3.5.3"
sphinx-rtd-theme = "==0.5.2"
toml = "^0.10.0"
[build-system]
+2 -2
View File
@@ -1,5 +1,5 @@
# This file is strictly for building docs on readthedocs.org
# See pyproject.toml for local development
Sphinx==3.4.3
sphinx-rtd-theme==0.5.1
Sphinx==3.5.3
sphinx-rtd-theme==0.5.2
toml