Compare commits

..
Author SHA1 Message Date
David Lechner b4b17d6f55 jedi/pyproject: bump version to v1.6.0
Getting ready to publish to PyPI.
2022-12-09 15:19:53 -06:00
David Lechner a074c60c9e jedi/pyproject: fix authors
The expected format is "Name <email>".
2022-12-09 15:18:56 -06:00
David Lechner 9f80deec4a jedi/pyproject: bump pybricks package to v3.2.0c1 2022-12-09 15:17:12 -06:00
David Lechner 0655d807e4 github: fix job name in publish-jedi workflow
Fixes: https://github.com/pybricks/pybricks-api/issues/124
2022-12-09 15:13:41 -06:00
David Lechner ef7fa7bcfc @pybricks/ide-docs v2.6.0 2022-12-09 15:11:03 -06:00
David Lechner edf0f56675 github: simplify release-to-pypi action
We can just let pipx install poetry for us and we don't need a special
Python install or to run `poetry install`.

Also update action versions while we are touching this.
2022-12-09 15:05:10 -06:00
David Lechner 00f1c95ab2 pyproject: v3.2.0c1
Update `pybricks` package version for release to PyPI.
2022-12-09 15:03:27 -06:00
dependabot[bot] 72d55bdbd8 build(deps): bump certifi from 2022.9.24 to 2022.12.7
Bumps [certifi](https://github.com/certifi/python-certifi) from 2022.9.24 to 2022.12.7.
- [Release notes](https://github.com/certifi/python-certifi/releases)
- [Commits](https://github.com/certifi/python-certifi/compare/2022.09.24...2022.12.07)

---
updated-dependencies:
- dependency-name: certifi
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-09 09:21:17 -06:00
Laurens Valk 585b1b8ba3 pybricks.parameters.Side: Change Technic Hub orientation.
This makes it consistent with other hubs.

See: https://github.com/pybricks/support/issues/848

The IMU section was not included in V3.1 so it is not a breaking change,
but we add a versionchanged comment just in case.
2022-12-09 14:23:01 +01:00
Laurens Valk d9dfd0e370 doc/common/extensions: Separate checkmark from image.
This makes it easier to see when the images are small.

Fixes: https://github.com/pybricks/support/issues/838
2022-12-09 08:35:33 +01:00
David Lechner 8bfc2e10c8 doc: Use Pybricks blue.
This changes the navbar background color to use the official Pybricks
blue color.
2022-12-08 17:16:32 -06:00
Laurens Valk e2710157f0 doc/main/hubs: Use width to set scale.
Fixes https://github.com/pybricks/support/issues/844
2022-12-08 20:07:11 +01:00
Laurens Valk 96a3c04836 doc/main/index: Drop links from menu.
Table of contents can't be hidden based on tags, so we just remove them.

Instead, add a note in the body of the standalone version.

Fixes: https://github.com/pybricks/support/issues/839
2022-12-08 09:47:04 +01:00
Laurens Valk 72f5cb6827 micropython: Use separate keys for CTRL + C.
Since each :kbd: key is rendered as a button, it is more intuitive to
render them separately. (There is no CTRL-C button.)

Fixes https://github.com/pybricks/pybricks-api/issues/125
2022-12-08 09:32:08 +01:00
David Lechner e939c14fee docs/main/{prime,essential}hub: Remove beta note.
We are close to final release, so these are no longer considered beta.
2022-12-07 16:31:19 -06:00
David Lechner 3418c8320c doc/common/css/ide: improve styling of field list
The default style of using a grid with two columns wastes space when
displayed in a narrow pane, like in Pybricks Code. Using flex with
column direction makes it flow from top to bottom.

Fixes: https://github.com/pybricks/support/issues/832
2022-12-07 20:21:47 +01:00
Laurens Valk 4da4ce8f7c pybricks.robotics.DriveBase: Add clarifying comments.
Fixes https://github.com/pybricks/support/issues/698
2022-12-06 16:38:31 +01:00
Laurens Valk 6640fba104 npm/jedi: v1.5.0 2022-12-02 15:20:08 +01:00
Laurens Valk ecbfbcfccc jedi/pyproject: v1.5.0 2022-12-02 15:18:10 +01:00
Laurens Valk eff6eaa253 jedi: Add ustruct, json modules. 2022-12-02 15:17:55 +01:00
Laurens Valk f7984a4816 @pybricks/ide-docs v2.5.0 2022-12-02 14:37:50 +01:00
Laurens Valk eac3535d92 npm/jedi: v1.4.0
Update pybricks_jedi Python package to v1.4.0.
2022-12-02 14:36:21 +01:00
70 changed files with 267 additions and 778 deletions
+1 -1
View File
@@ -6,7 +6,7 @@ on:
- '@pybricks/jedi/**'
jobs:
publish_ide_docs:
publish_jedi:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
+4 -11
View File
@@ -6,17 +6,10 @@ on:
jobs:
build_and_publish:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.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
- uses: actions/checkout@v3
- run: pipx run poetry build
- run: pipx run poetry publish
env:
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }}
+6
View File
@@ -4,6 +4,12 @@
## Unreleased
## 3.2.0c1 - 2022-12-09
### Changed
- Updated "front" side of the Technic Hub to be consistent with
the Prime Hub.
## 3.2.0b6 - 2022-12-02
### Added
+2 -2
View File
@@ -16,8 +16,8 @@ help:
.PHONY: help Makefile
diagrams:
@$(MAKE) -C "$(SOURCEDIR)"/diagram_source clean
@$(MAKE) -C "$(SOURCEDIR)"/diagram_source
@$(MAKE) -C "$(SOURCEDIR)"/diagrams_source clean
@$(MAKE) -C "$(SOURCEDIR)"/diagrams_source
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
+8
View File
@@ -40,3 +40,11 @@
::-webkit-scrollbar-thumb:hover {
background: #182026;
}
html.writer-html5 .rst-content dl.citation,
html.writer-html5 .rst-content dl.field-list,
html.writer-html5 .rst-content dl.footnote {
display: flex;
flex-direction: column;
grid-template-columns: unset;
}
@@ -41,3 +41,7 @@ span.caption-number:after {
.figure > a.reference.external::after {
content: none !important;
}
.wy-side-nav-search > div.version {
color: hsla(0, 0%, 100%, 0.75);
}
+1
View File
@@ -169,6 +169,7 @@ html_context = {
html_theme_options = {
"style_external_links": True,
"logo_only": True,
"style_nav_header_background": "#0088ce", # Pybricks blue
}
# Add any paths that contain custom static files (such as style sheets) here,
+9 -10
View File
@@ -47,20 +47,19 @@ class PybricksRequirementsStaticDirective(Directive):
makedirs(destdir)
for hub in HUB_FEATURES:
for compat in ("true", "false"):
uri = "compat_{0}_{1}.png".format(hub, compat)
src_uri = path.join(env.app.builder.srcdir, "diagrams", uri)
build_uri = path.join(env.app.builder.outdir, "_images", uri)
copyfile(src_uri, build_uri)
uri = "compat_{0}.png".format(hub)
src_uri = path.join(env.app.builder.srcdir, "diagrams", uri)
build_uri = path.join(env.app.builder.outdir, "_images", uri)
copyfile(src_uri, build_uri)
# Get requirements from sphinx-directive.
requirements = set(self.arguments)
# Cell with image of a hub.
hub_cell = """
<th><div class="align-default">
<img alt="" src="{0}_images/compat_{1}_{2}.png">
</div></th>
<th background="{0}_images/compat_{1}.png" class="requirements-table-th requirements-table-th">
{2}
</th>
"""
# Determine how far up the tree we are to set correct image path.
@@ -72,7 +71,7 @@ class PybricksRequirementsStaticDirective(Directive):
compat_row = "".join(
[
hub_cell.format(
depth_path, hub, "true" if requirements <= features else "false"
depth_path, hub, "" if requirements <= features else ""
)
for hub, features in HUB_FEATURES.items()
]
@@ -81,7 +80,7 @@ class PybricksRequirementsStaticDirective(Directive):
# Generate full table.
html = """
<div class="wy-table-responsive">
<table class="docutils align-default">
<table class="docutils align-default requirements-table">
<tbody>
<tr>
{0}
+16
View File
@@ -42,3 +42,19 @@ SOFTWARE. */
margin-bottom: 0px;
}
.requirements-table {
width: 100%;
}
.requirements-table-th {
background-size:contain;
background-repeat: no-repeat;
text-align: right;
padding: 6px !important;
}
.requirements-table-th:after {
content: '';
display: block;
margin-top: 80%;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 11 KiB

+1 -1
View File
@@ -24,7 +24,7 @@ cp LPub3D/assem/main_1_hubs_1_hub-prime-*35_-35_0_ABS.png output/hub-prime.png
cp LPub3D/assem/main_1_hubs_1_hub-prime-*45_45_0_ABS.png output/hub-prime-orientation.png
cp LPub3D/assem/main_1_hubs_1_hub-prime-*90_0_0_ABS.png output/hub-prime-display.png
cp LPub3D/assem/main_1_hubs_1_hub-technic-*35_-35_0_ABS.png output/hub-technic.png
cp LPub3D/assem/main_1_hubs_1_hub-technic-*45_-135_0_ABS.png output/hub-technic-orientation.png
cp LPub3D/assem/main_1_hubs_1_hub-technic-*45_45_0_ABS.png output/hub-technic-orientation.png
cp LPub3D/assem/main_1_iodevices-*.png output/iodevice-all.png
cp LPub3D/assem/main_1_iodevices_1_iodevice-dcmotor-*.png output/iodevice-dcmotor.png
cp LPub3D/assem/main_1_iodevices_1_iodevice-pupdevice-*.png output/iodevice-pupdevice.png
+2 -1
View File
@@ -163,7 +163,7 @@
1 71 0 0 0 1 0 0 0 1 0 0 0 1 22127.dat
0 ROTSTEP 35 -35 0 ABS
1 71 0 0 0 1 0 0 0 1 0 0 0 1 22127.dat
0 ROTSTEP 45 -135 0 ABS
0 ROTSTEP 45 45 0 ABS
0 NOFILE
0
0 FILE hub-prime.ldr
@@ -837,5 +837,6 @@
1 0 40 0 220 1 0 0 0 1 0 0 0 1 hub-city.ldr
1 0 450 0 -40 1 0 0 0 1 0 0 0 1 hub-move.ldr
0 ROTSTEP 40 -35 0 ABS
0
0
0
Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 64 KiB

@@ -8,7 +8,7 @@
version="1.1"
id="svg887"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="compat_cityhub_true.svg"
sodipodi:docname="compat_cityhub.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
@@ -40,15 +40,15 @@
inkscape:pageshadow="2"
inkscape:zoom="3.3219805"
inkscape:cx="34.617903"
inkscape:cy="95.726028"
inkscape:cy="95.575516"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1920"
inkscape:window-height="1163"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-width="1856"
inkscape:window-height="1136"
inkscape:window-x="64"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:snap-global="false"
inkscape:pagecheckerboard="0" />
@@ -75,10 +75,5 @@
y="265.09711"
width="23.382999"
height="26.799999" />
<path
style="fill:none;stroke:#84ba4c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 31.147057,265.82725 1.011052,2.9815 3.622948,-4.60003"
id="path854"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -1,94 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="150"
height="135"
viewBox="0 0 39.687499 35.718751"
version="1.1"
id="svg887"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="compat_cityhub_false.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs881">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1545">
<rect
style="fill:#fe2020;fill-opacity:0.48022599;stroke:none;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect1547"
width="39.6875"
height="35.71875"
x="-25.390602"
y="312.93103" />
</clipPath>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="3.0825819"
inkscape:cx="78.505619"
inkscape:cy="101.70046"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1856"
inkscape:window-height="1136"
inkscape:window-x="64"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:snap-global="false"
inkscape:pagecheckerboard="0" />
<metadata
id="metadata884">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-261.28123)">
<image
xlink:href="../cad/output/hub-city.png"
id="image1470"
x="8.0035677"
y="265.09711"
width="23.382999"
height="26.799999" />
<g
id="g862"
transform="matrix(0.84064533,0,0,0.84993509,-12.416361,243.07822)"
style="stroke-width:1.18304348">
<path
inkscape:connector-curvature="0"
id="path856"
d="m 51.33389,24.998882 5.622395,5.622396"
style="fill:none;stroke:#e2302f;stroke-width:1.18304348;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#e2302f;stroke-width:1.18304348;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 56.956285,24.998882 51.33389,30.621278"
id="path858"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

@@ -8,7 +8,7 @@
version="1.1"
id="svg887"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="compat_essentialhub_true.svg"
sodipodi:docname="compat_essentialhub.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
@@ -38,9 +38,9 @@
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="2.3960249"
inkscape:cx="-130.63303"
inkscape:cy="93.696856"
inkscape:zoom="3.4759103"
inkscape:cx="134.0656"
inkscape:cy="60.84737"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
@@ -75,10 +75,5 @@
y="267.43524"
width="25.393"
height="22.579" />
<path
style="fill:none;stroke:#84ba4c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 31.147057,265.82725 1.011052,2.9815 3.622948,-4.60003"
id="path854"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -1,94 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="150"
height="135"
viewBox="0 0 39.687499 35.718751"
version="1.1"
id="svg887"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="compat_essentialhub_false.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs881">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1545">
<rect
style="fill:#fe2020;fill-opacity:0.48022599;stroke:none;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect1547"
width="39.6875"
height="35.71875"
x="-25.390602"
y="312.93103" />
</clipPath>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="1.8719138"
inkscape:cx="1.0684253"
inkscape:cy="79.330578"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1856"
inkscape:window-height="1136"
inkscape:window-x="64"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:snap-global="false"
inkscape:pagecheckerboard="0" />
<metadata
id="metadata884">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-261.28123)">
<image
xlink:href="../cad/output/hub-essential.png"
id="image1470"
x="6.9396734"
y="267.43524"
width="25.393"
height="22.579" />
<g
id="g862"
transform="matrix(0.84064533,0,0,0.84993509,-12.416361,243.07822)"
style="stroke-width:1.18304348">
<path
inkscape:connector-curvature="0"
id="path856"
d="m 51.33389,24.998882 5.622395,5.622396"
style="fill:none;stroke:#e2302f;stroke-width:1.18304348;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#e2302f;stroke-width:1.18304348;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 56.956285,24.998882 51.33389,30.621278"
id="path858"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

@@ -8,7 +8,7 @@
version="1.1"
id="svg887"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="compat_inventorhub_true.svg"
sodipodi:docname="compat_inventorhub.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
@@ -38,9 +38,9 @@
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="3.959798"
inkscape:cx="30.052038"
inkscape:cy="63.260803"
inkscape:zoom="2.6570037"
inkscape:cx="57.583661"
inkscape:cy="87.504583"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
@@ -75,10 +75,5 @@
y="262.86874"
width="34.237"
height="31.087999" />
<path
style="fill:none;stroke:#84ba4c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 31.147057,265.82725 1.011052,2.9815 3.622948,-4.60003"
id="path854"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -1,94 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="150"
height="135"
viewBox="0 0 39.687499 35.718751"
version="1.1"
id="svg887"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="compat_inventorhub_false.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs881">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1545">
<rect
style="fill:#fe2020;fill-opacity:0.48022599;stroke:none;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect1547"
width="39.6875"
height="35.71875"
x="-25.390602"
y="312.93103" />
</clipPath>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="3.0079775"
inkscape:cx="56.183931"
inkscape:cy="42.387285"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1856"
inkscape:window-height="1136"
inkscape:window-x="64"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:snap-global="false"
inkscape:pagecheckerboard="0" />
<metadata
id="metadata884">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-261.28123)">
<image
xlink:href="../cad/output/hub-inventor.png"
id="image1481"
x="2.6458333"
y="262.86874"
width="34.237"
height="31.087999" />
<g
id="g862"
transform="matrix(0.84064533,0,0,0.84993509,-12.416361,243.07822)"
style="stroke-width:1.18304348">
<path
inkscape:connector-curvature="0"
id="path856"
d="m 51.33389,24.998882 5.622395,5.622396"
style="fill:none;stroke:#e2302f;stroke-width:1.18304348;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#e2302f;stroke-width:1.18304348;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 56.956285,24.998882 51.33389,30.621278"
id="path858"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

@@ -8,7 +8,7 @@
version="1.1"
id="svg887"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="compat_movehub_true.svg"
sodipodi:docname="compat_movehub.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
@@ -38,9 +38,9 @@
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="3.959798"
inkscape:cx="-61.114229"
inkscape:cy="79.170705"
inkscape:zoom="1.4539184"
inkscape:cx="101.79388"
inkscape:cy="158.5371"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
@@ -75,10 +75,5 @@
y="261.79425"
width="38.50182"
height="34.867249" />
<path
style="fill:none;stroke:#84ba4c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 31.147057,265.82725 1.011052,2.9815 3.622948,-4.60003"
id="path854"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -1,95 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="150"
height="135"
viewBox="0 0 39.687499 35.718751"
version="1.1"
id="svg887"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="compat_movehub_false.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs881">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1545">
<rect
style="fill:#fe2020;fill-opacity:0.48022599;stroke:none;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect1547"
width="39.6875"
height="35.71875"
x="-25.390602"
y="312.93103" />
</clipPath>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="3.1282845"
inkscape:cx="30.687746"
inkscape:cy="7.8317686"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1856"
inkscape:window-height="1136"
inkscape:window-x="64"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:snap-global="false"
inkscape:pagecheckerboard="0"
showguides="false" />
<metadata
id="metadata884">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-261.28123)">
<image
xlink:href="../cad/output/hub-move.png"
id="image1492"
x="0.67666757"
y="261.79425"
width="38.50182"
height="34.867249" />
<g
id="g862"
transform="matrix(0.84064533,0,0,0.84993509,-12.416361,243.07822)"
style="stroke-width:1.18304348">
<path
inkscape:connector-curvature="0"
id="path856"
d="m 51.33389,24.998882 5.622395,5.622396"
style="fill:none;stroke:#e2302f;stroke-width:1.18304348;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#e2302f;stroke-width:1.18304348;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 56.956285,24.998882 51.33389,30.621278"
id="path858"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

@@ -8,7 +8,7 @@
version="1.1"
id="svg887"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="compat_primehub_true.svg"
sodipodi:docname="compat_primehub.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
@@ -38,9 +38,9 @@
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="3.959798"
inkscape:cx="-15.152288"
inkscape:cy="104.67706"
inkscape:zoom="2.5665087"
inkscape:cx="-39.742706"
inkscape:cy="115.13696"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
@@ -75,10 +75,5 @@
y="263.1333"
width="34.237"
height="31.087999" />
<path
style="fill:none;stroke:#84ba4c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 31.147057,265.82725 1.011052,2.9815 3.622948,-4.60003"
id="path854"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

@@ -1,94 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="150"
height="135"
viewBox="0 0 39.687499 35.718751"
version="1.1"
id="svg887"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="compat_primehub_false.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs881">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1545">
<rect
style="fill:#fe2020;fill-opacity:0.48022599;stroke:none;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect1547"
width="39.6875"
height="35.71875"
x="-25.390602"
y="312.93103" />
</clipPath>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="3.4544425"
inkscape:cx="52.975264"
inkscape:cy="68.173085"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1856"
inkscape:window-height="1136"
inkscape:window-x="64"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:snap-global="false"
inkscape:pagecheckerboard="0" />
<metadata
id="metadata884">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-261.28123)">
<image
xlink:href="../cad/output/hub-prime.png"
id="image1503"
x="2.6458333"
y="263.1333"
width="34.237"
height="31.087999" />
<g
id="g862"
transform="matrix(0.84064533,0,0,0.84993509,-12.416361,243.07822)"
style="stroke-width:1.18304348">
<path
inkscape:connector-curvature="0"
id="path856"
d="m 51.33389,24.998882 5.622395,5.622396"
style="fill:none;stroke:#e2302f;stroke-width:1.18304348;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#e2302f;stroke-width:1.18304348;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 56.956285,24.998882 51.33389,30.621278"
id="path858"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

@@ -8,7 +8,7 @@
version="1.1"
id="svg887"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="compat_technichub_true.svg"
sodipodi:docname="compat_technichub.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
@@ -38,9 +38,9 @@
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="3.959798"
inkscape:cx="51.517779"
inkscape:cy="94.82807"
inkscape:zoom="1.8594069"
inkscape:cx="-63.461097"
inkscape:cy="62.116582"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
@@ -75,10 +75,5 @@
y="263.52396"
width="35.710999"
height="30.552" />
<path
style="fill:none;stroke:#84ba4c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 31.147057,265.82725 1.011052,2.9815 3.622948,-4.60003"
id="path854"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

@@ -1,94 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="150"
height="135"
viewBox="0 0 39.687499 35.718751"
version="1.1"
id="svg887"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="compat_technichub_false.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<defs
id="defs881">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1545">
<rect
style="fill:#fe2020;fill-opacity:0.48022599;stroke:none;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect1547"
width="39.6875"
height="35.71875"
x="-25.390602"
y="312.93103" />
</clipPath>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="3.0468564"
inkscape:cx="34.461749"
inkscape:cy="66.133737"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:window-width="1856"
inkscape:window-height="1136"
inkscape:window-x="64"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:snap-global="false"
inkscape:pagecheckerboard="0" />
<metadata
id="metadata884">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-261.28123)">
<image
xlink:href="../cad/output/hub-technic.png"
id="image1514"
x="2.0608866"
y="263.52396"
width="35.710999"
height="30.552" />
<g
id="g862"
transform="matrix(0.84064533,0,0,0.84993509,-12.416361,243.07822)"
style="stroke-width:1.18304348">
<path
inkscape:connector-curvature="0"
id="path856"
d="m 51.33389,24.998882 5.622395,5.622396"
style="fill:none;stroke:#e2302f;stroke-width:1.18304348;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#e2302f;stroke-width:1.18304348;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 56.956285,24.998882 51.33389,30.621278"
id="path858"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

@@ -66,9 +66,9 @@
inkscape:window-height="1136"
id="namedview4"
showgrid="false"
inkscape:zoom="1.0710043"
inkscape:cx="253.96723"
inkscape:cy="270.30703"
inkscape:zoom="0.70516005"
inkscape:cx="286.45979"
inkscape:cy="338.22109"
inkscape:window-x="64"
inkscape:window-y="27"
inkscape:window-maximized="1"
@@ -76,36 +76,37 @@
inkscape:snap-global="false"
inkscape:pagecheckerboard="0" />
<image
width="362.92642"
height="317.47708"
width="360.79803"
height="329.56876"
preserveAspectRatio="none"
xlink:href="../cad/output/hub-technic-orientation.png"
id="image1727"
x="92.506996"
y="67.242409" />
id="image861"
x="102.51701"
y="59.175568"
style="stroke-width:1.505" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect873"
width="94.047379"
height="42.092525"
x="369.40115"
y="235.02014" />
x="372.33868"
y="256.1105" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect875"
width="94.047379"
height="4"
x="369.40115"
y="235.02014" />
x="372.33868"
y="256.1105" />
<text
id="text879"
y="265.60547"
x="379.37143"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
y="286.69583"
x="382.30896"
style="font-style:normal;font-weight:normal;font-size:24.1944px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.604861"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="265.60547"
x="379.37143"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.604861"
y="286.69583"
x="382.30896"
id="tspan877"
sodipodi:role="line">RIGHT</tspan></text>
<path
@@ -165,90 +166,90 @@
y="303.26227"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">BACK</tspan></text>
<rect
y="157.47092"
x="232.60791"
y="144.53636"
x="254.17665"
height="42.092525"
width="67.413025"
id="rect4648"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="157.47092"
x="232.60791"
y="144.53636"
x="254.17665"
height="4"
width="67.413025"
id="rect4650"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="243.7567"
y="188.05624"
style="font-style:normal;font-weight:normal;font-size:24.1944px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.604861"
x="265.32544"
y="175.12169"
id="text4654"><tspan
sodipodi:role="line"
id="tspan4652"
x="243.7567"
y="188.05624"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">TOP</tspan></text>
x="265.32544"
y="175.12169"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.604861">TOP</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path987"
d="m 218.40482,122.94083 c -16.91553,4.34545 -0.82755,-60.207095 -43.66667,-57.999995"
d="m 209.97456,140.94286 c -16.91553,4.34545 -0.82755,-60.207095 -43.66667,-57.999995"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="42.940842"
x="100.96023"
y="60.942871"
x="92.529968"
height="42.092525"
width="80.376648"
id="rect932"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="42.940842"
x="100.96023"
y="60.942871"
x="92.529968"
height="4"
width="80.376648"
id="rect934"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="113.1997"
y="73.526169"
style="font-style:normal;font-weight:normal;font-size:24.1944px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.604861"
x="104.76944"
y="91.528198"
id="text938"><tspan
sodipodi:role="line"
id="tspan936"
x="113.1997"
y="73.526169"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">LEFT</tspan></text>
x="104.76944"
y="91.528198"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.604861">LEFT</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path1114"
d="m 352.17398,396.21985 c -30.79693,19.2617 -138.39669,37.9659 -117.51303,-31.272"
d="m 364.20393,405.65488 c -30.79693,19.2617 -138.39669,37.9659 -117.51303,-31.272"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.52250361;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.5225;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1116"
width="117.09069"
height="42.092525"
x="340.08701"
y="371.42603" />
x="352.11694"
y="380.86105" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.52250361;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.5225;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1118"
width="117.09069"
height="4"
x="340.08701"
y="371.42603" />
x="352.11694"
y="380.86105" />
<text
id="text1122"
y="402.01135"
x="349.49805"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
y="411.44638"
x="361.52798"
style="font-style:normal;font-weight:normal;font-size:24.1944px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.604861"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="402.01135"
x="349.49805"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.604861"
y="411.44638"
x="361.52798"
id="tspan1120"
sodipodi:role="line">BOTTOM</tspan></text>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

+1 -1
View File
@@ -4,7 +4,7 @@ City Hub
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: ../../main/cad/output/hub-city.png
:height: 15 em
:width: 30%
.. autoclass:: pybricks.hubs.CityHub
:no-members:
-8
View File
@@ -6,14 +6,6 @@ Essential Hub
.. figure:: ../../main/cad/output/hub-essential.png
:width: 30%
.. note:: Pybricks support for this hub is in beta.
Check the `installation instructions`_ to try it out.
The following functions may change before the final release.
.. _installation instructions: https://pybricks.com/install/
.. autoclass:: pybricks.hubs.EssentialHub
:no-members:
+1 -1
View File
@@ -2,7 +2,7 @@ MINDSTORMS EV3 Brick
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: ../../main/cad/output/ev3device-ev3.png
:height: 15 em
:width: 50%
.. autoclass:: pybricks.hubs.EV3Brick
:no-members:
+6 -6
View File
@@ -18,35 +18,35 @@
.. pybricks-classlink:: MoveHub
.. figure:: ../../main/cad/output/hub-move.png
:width: 30%
:width: 40%
:target: movehub.html
.. pybricks-classlink:: CityHub
.. figure:: ../../main/cad/output/hub-city.png
:width: 20%
:width: 25%
:target: cityhub.html
.. pybricks-classlink:: TechnicHub
.. figure:: ../../main/cad/output/hub-technic.png
:width: 25%
:width: 35%
:target: technichub.html
.. pybricks-classlink:: InventorHub PrimeHub
.. figure:: ../../main/cad/output/hub-inventor.png
:width: 25%
:width: 35%
:target: primehub.html
.. pybricks-classlink:: PrimeHub
.. figure:: ../../main/cad/output/hub-prime.png
:width: 25%
:width: 35%
:target: primehub.html
.. pybricks-classlink:: EssentialHub
.. figure:: ../../main/cad/output/hub-essential.png
:width: 20%
:width: 25%
:target: essentialhub.html
+1 -1
View File
@@ -6,7 +6,7 @@ Move Hub
.. _fig_movehub:
.. figure:: ../../main/diagrams/movehub.png
:height: 15 em
:width: 100%
.. autoclass:: pybricks.hubs.MoveHub
:no-members:
+1 -8
View File
@@ -4,12 +4,7 @@ Prime Hub / Inventor Hub
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: ../../main/cad/output/hub-spike-inventor.png
:height: 15 em
.. note:: Pybricks support for these hubs is in beta.
Check the `installation instructions`_ to try it out.
The following functions may change before the final release.
:width: 80%
.. class:: InventorHub
@@ -257,5 +252,3 @@ Turning the hub off
.. literalinclude::
../../../examples/pup/hub_common/build/system_shutdown_primehub.py
.. _installation instructions: https://pybricks.com/install/
+1 -1
View File
@@ -4,7 +4,7 @@ Technic Hub
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: ../../main/cad/output/hub-technic.png
:height: 15 em
:width: 40%
.. autoclass:: pybricks.hubs.TechnicHub
:no-members:
+10 -16
View File
@@ -8,14 +8,22 @@ directly on the hub, and get full control of your motors and sensors.
Pybricks runs on LEGO® BOOST, City, Technic, MINDSTORMS®, and SPIKE®. You
can code using Windows, Mac, Linux, Chromebook, and Android.
To run Pybricks MicroPython scripts, you must install the Pybricks firmware
on your hub. Check `pybricks.com/install`_ to learn how.
Click on any device below to see its documentation. Use the menu on the left
to find documentation for additional modules. You may need to click the ☰ icon
above to reveal this menu.
.. only:: main
.. note:: You are viewing the stand-alone version of the documentation. To
learn more about Pybricks and to start coding, visit
the `Pybricks website`_
.. note:: Are you using LEGO MINDSTORMS EV3? Check out the
`EV3 documentation`_ instead.
.. _EV3 documentation: https://pybricks.com/ev3-micropython/
.. _Pybricks website: https://pybricks.com/
.. rubric:: Programmable hubs
.. figure:: ../main/cad/output/hub-all.png
@@ -36,25 +44,11 @@ on your hub. Check `pybricks.com/install`_ to learn how.
:width: 70 %
:target: pupdevices/dcmotor.html
.. _support page: https://github.com/pybricks/support/issues/
.. _EV3 documentation: https://pybricks.com/ev3-micropython/
.. _Pybricks website: https://pybricks.com/
.. _pybricks.com/install: https://pybricks.com/install/
.. _latest stable release: https://www.code.pybricks.com/
.. toctree::
:maxdepth: 1
:caption: Table of contents
:hidden:
.. toctree::
:maxdepth: 1
:caption: Pybricks
:hidden:
Home page <https://pybricks.com>
Installation <https://pybricks.com/install/>
.. toctree::
:maxdepth: 1
:caption: Pybricks modules
+10 -6
View File
@@ -34,29 +34,33 @@ Side
**Prime Hub**
.. figure:: ../../main/diagrams/orientation_primehub.png
:height: 17 em
:width: 60%
**Inventor Hub**
.. figure:: ../../main/diagrams/orientation_inventorhub.png
:height: 17 em
:width: 60%
**Essential Hub**
.. figure:: ../../main/diagrams/orientation_essentialhub.png
:height: 17 em
:width: 60%
**Move Hub**
.. figure:: ../../main/diagrams/orientation_movehub.png
:height: 17 em
:width: 60%
**Technic Hub**
.. figure:: ../../main/diagrams/orientation_technichub.png
:height: 17 em
:width: 60%
.. versionchanged:: 3.2
Changed which side is the front.
**Tilt Sensor**
.. figure:: ../../main/diagrams/orientation_tiltsensor.png
:height: 17 em
:width: 50%
+7
View File
@@ -52,6 +52,8 @@
.. automethod:: pybricks.robotics.DriveBase.stalled
.. _measuring:
.. rubric:: Measuring and validating the robot dimensions
As a first estimate, you can measure the ``wheel_diameter`` and the
@@ -59,6 +61,11 @@
effectively touch the ground, you can estimate the ``axle_track`` as
the distance between the midpoint of the wheels.
If you don't have a ruler, you can use a LEGO beam to measure. The
center-to-center distance of the holes is 8 mm. For some tyres, the
diameter is printed on the side. For example, 62.4 x 20 means that the
diameter is 62.4mm and that the width is 20 mm.
In practice, most wheels compress slightly under the weight of your robot.
To verify, make your robot drive 1000 mm using ``my_robot.straight(1000)``
and measure how far it really traveled. Compensate as follows:
+10
View File
@@ -4,6 +4,16 @@
## Unreleased
## 1.6.0 - 2022-12-09
### Changed
- Updated `pybricks` package to v3.2.0c1.
## 1.5.0 - 2022-12-02
### Changed
- Added `ujson` and `ustruct` modules.
## 1.4.0 - 2022-12-02
### Changed
+3 -3
View File
@@ -10,7 +10,7 @@ python-versions = ">=3.5"
dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"]
docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"]
tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"]
tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"]
tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"]
[[package]]
name = "black"
@@ -180,7 +180,7 @@ testing = ["pytest", "pytest-benchmark"]
[[package]]
name = "pybricks"
version = "3.2.0b6"
version = "3.2.0c1"
description = "Documentation and user-API stubs for Pybricks MicroPython"
category = "main"
optional = false
@@ -257,7 +257,7 @@ python-versions = ">=3.7"
[metadata]
lock-version = "1.1"
python-versions = ">= 3.10, < 3.11"
content-hash = "a0626d7e1cf972e4716f8122865c1d4b6355e1a5104b6f538da2c1cb44ba792c"
content-hash = "971c6d0dddd9bb8e33a942e2360905a7d80a1a9d33015c0defc08345df5c1019"
[metadata.files]
attrs = [
+3 -3
View File
@@ -1,13 +1,13 @@
[tool.poetry]
name = "pybricks_jedi"
version = "1.4.0"
version = "1.6.0"
description = "Code completion for Pybricks."
authors = ["The Pybricks Authors"]
authors = ["The Pybricks Authors <team@pybricks.com>"]
license = "MIT"
[tool.poetry.dependencies]
python = ">= 3.10, < 3.11"
pybricks = "3.2.0b6"
pybricks = "3.2.0c1"
jedi = "0.18.1"
typing-extensions = "4.2.0"
docstring-parser = "0.14.1"
+2
View File
@@ -21,9 +21,11 @@ PYBRICKS_CODE_PACKAGES = {
"pybricks.tools",
"uerrno",
"uio",
"ujson",
"umath",
"urandom",
"uselect",
"ustruct",
"usys",
}
+27
View File
@@ -18,9 +18,11 @@ def test_from():
"pybricks",
"uerrno",
"uio",
"ujson",
"umath",
"urandom",
"uselect",
"ustruct",
"usys",
]
@@ -186,6 +188,19 @@ def test_from_uio_import():
]
def test_from_ujson_import():
code = "from ujson import "
completions: list[CompletionItem] = json.loads(complete(code, 1, len(code) + 1))
assert [c["insertText"] for c in completions] == [
"decode", # FIXME: Shouldn't be here
"dump",
"dumps",
"encode", # FIXME: Shouldn't be here
"load",
"loads",
]
def test_from_umath_import():
code = "from umath import "
completions: list[CompletionItem] = json.loads(complete(code, 1, len(code) + 1))
@@ -247,6 +262,18 @@ def test_from_uselect_import():
]
def test_from_ustruct_import():
code = "from ustruct import "
completions: list[CompletionItem] = json.loads(complete(code, 1, len(code) + 1))
assert [c["insertText"] for c in completions] == [
"calcsize",
"pack",
"pack_into",
"unpack",
"unpack_from",
]
def test_from_usys_import():
code = "from usys import "
completions: list[CompletionItem] = json.loads(complete(code, 1, len(code) + 1))
+10
View File
@@ -2,6 +2,16 @@
<!-- refer to https://keepachangelog.com/en/1.0.0/ for guidance -->
## 2.6.0 - 2022-12-09
### Changed
- Updated docs to v3.2.0c1.
## 2.5.0 - 2022-12-02
### Changed
- Updated docs to v3.2.0b6.
## 2.4.0 - 2022-11-11
### Changed
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@pybricks/ide-docs",
"version": "2.4.0",
"version": "2.6.0",
"description": "Special build of Pybricks API docs for embedding in an IDE.",
"repository": {
"type": "git",
+10
View File
@@ -2,6 +2,16 @@
<!-- refer to https://keepachangelog.com/en/1.0.0/ for guidance -->
## 1.5.0 - 2022-12-02
### Changed
- Updated `pybricks_jedi` Python package to v1.5.0.
## 1.4.0 - 2022-12-02
### Changed
- Updated `pybricks_jedi` Python package to v1.4.0.
## 1.3.0 - 2022-11-11
### Changed
+2 -2
View File
@@ -12,7 +12,7 @@ BUILD_DIR = (pathlib.Path(__file__).parent / "build").resolve()
package_json = {
"name": "@pybricks/jedi",
"version": "1.3.0",
"version": "1.5.0",
"description": "Binary distribution of pybricks-jedi Python package and dependencies for use with Pyodide.",
"repository": {
"type": "git",
@@ -38,7 +38,7 @@ subprocess.check_call(
"pip",
"download",
"--only-binary=any",
"pybricks-jedi==1.3.0",
"pybricks-jedi==1.5.0",
],
cwd=BUILD_DIR,
)
Generated
+7 -7
View File
@@ -41,7 +41,7 @@ uvloop = ["uvloop (>=0.15.2)"]
[[package]]
name = "certifi"
version = "2022.9.24"
version = "2022.12.7"
description = "Python package for providing Mozilla's CA Bundle."
category = "dev"
optional = false
@@ -64,7 +64,7 @@ optional = false
python-versions = ">=3.6.0"
[package.extras]
unicode_backport = ["unicodedata2"]
unicode-backport = ["unicodedata2"]
[[package]]
name = "click"
@@ -293,7 +293,7 @@ urllib3 = ">=1.21.1,<1.27"
[package.extras]
socks = ["PySocks (>=1.5.6,!=1.5.7)"]
use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"]
use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
[[package]]
name = "restructuredtext-lint"
@@ -324,7 +324,7 @@ python-versions = "*"
[[package]]
name = "Sphinx"
version = "5.1.0.dev20221202"
version = "5.1.0.dev20221209"
description = "Python documentation generator"
category = "dev"
optional = false
@@ -353,7 +353,7 @@ sphinxcontrib-serializinghtml = ">=1.1.5"
[package.extras]
docs = ["sphinxcontrib-websupport"]
lint = ["docutils-stubs", "flake8 (>=3.5.0)", "isort", "mypy (>=0.950)", "types-requests", "types-typed-ast"]
test = ["cython", "html5lib", "pytest (>=4.6)", "typed_ast"]
test = ["cython", "html5lib", "pytest (>=4.6)", "typed-ast"]
[package.source]
type = "git"
@@ -545,8 +545,8 @@ black = [
{file = "black-22.10.0.tar.gz", hash = "sha256:f513588da599943e0cde4e32cc9879e825d58720d6557062d1098c5ad80080e1"},
]
certifi = [
{file = "certifi-2022.9.24-py3-none-any.whl", hash = "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"},
{file = "certifi-2022.9.24.tar.gz", hash = "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14"},
{file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"},
{file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"},
]
chardet = [
{file = "chardet-5.1.0-py3-none-any.whl", hash = "sha256:362777fb014af596ad31334fde1e8c327dfdb076e1960d1694662d46a6917ab9"},
+3 -1
View File
@@ -1,6 +1,6 @@
[tool.poetry]
name = "pybricks"
version = "3.2.0b6"
version = "3.2.0c1"
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>" ]
@@ -18,9 +18,11 @@ packages = [
{ include = "micropython", from = "src" },
{ include = "uerrno", from = "src" },
{ include = "uio", from = "src" },
{ include = "ujson", from = "src" },
{ include = "umath", from = "src" },
{ include = "urandom", from = "src" },
{ include = "uselect", from = "src" },
{ include = "ustruct", from = "src" },
{ include = "usys", from = "src" },
]
+2 -2
View File
@@ -177,9 +177,9 @@ def kbd_intr(chr: int) -> None:
"""
kbd_intr(chr)
Sets the character that raises a ``KeyboardInterrupt`` exception when
Sets the character that triggers a ``KeyboardInterrupt`` exception when
you type it in the input window. By default it is set to ``3``,
corresponding to :kbd:`Ctrl-C`.
which corresponds to pressing :kbd:`Ctrl` :kbd:`C`.
Arguments:
chr (int): Character that should raise the ``KeyboardInterrupt``.
+9 -1
View File
@@ -28,8 +28,12 @@ class DriveBase:
**Positive** angles and turn rates mean turning **right**.
**Negative** means **left**. So when viewed from the top,
positive means clockwise and negative means counterclockwise.
positive means clockwise and negative means counterclockwise. If desired,
you can flip this convention by reversing the ``left_motor`` and
``right_motor`` when you initialize this class.
See the `measuring`_ section for tips to measure and adjust the diameter
and axle track values.
"""
distance_control = _common.Control()
@@ -139,6 +143,10 @@ class DriveBase:
If you give no arguments, this returns the current values as a tuple.
The default values are automatically configured based on your wheel
diameter and axle track. They are selected such that your robot
drives at about 40% of its maximum speed.
Arguments:
straight_speed (Number, mm/s): Straight-line speed of the robot.
straight_acceleration (Number, mm/s²): Straight-line
+1 -1
View File
@@ -1399,7 +1399,7 @@ class KeyError(LookupError):
class KeyboardInterrupt(BaseException):
"""
Raised when the user hits the interrupt key (normally :kbd:`Control-C`).
Raised when the user hits the interrupt key (normally :kbd:`Ctrl` :kbd:`C`).
"""
-4
View File
@@ -11,10 +11,6 @@ Convert between Python objects and the JSON data format.
from typing import IO, Any, Tuple
import json
json.dump
def dump(object: Any, stream: IO, separators: Tuple[str, str] = (", ", ": ")):
"""