Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ef7fa7bcfc | ||
|
|
edf0f56675 | ||
|
|
00f1c95ab2 | ||
|
|
72d55bdbd8 | ||
|
|
585b1b8ba3 | ||
|
|
d9dfd0e370 | ||
|
|
8bfc2e10c8 | ||
|
|
e2710157f0 | ||
|
|
96a3c04836 | ||
|
|
72f5cb6827 | ||
|
|
e939c14fee | ||
|
|
3418c8320c | ||
|
|
4da4ce8f7c | ||
|
|
6640fba104 | ||
|
|
ecbfbcfccc | ||
|
|
eff6eaa253 | ||
|
|
f7984a4816 | ||
|
|
eac3535d92 | ||
|
|
7fd508cc84 | ||
|
|
3a12de4766 | ||
|
|
5535da5b38 | ||
|
|
ab4d4cc848 | ||
|
|
82340c3eec | ||
|
|
14a4fc0d74 | ||
|
|
99d5210313 | ||
|
|
e6d2ce7f62 | ||
|
|
c3802d38c2 | ||
|
|
ac23a9bb59 | ||
|
|
631cf31a07 | ||
|
|
115ae0d856 | ||
|
|
eec6d2ff85 | ||
|
|
4d360d2b01 | ||
|
|
52cb0fe81e | ||
|
|
961cebe48b | ||
|
|
87c2802b17 | ||
|
|
3c0aaea207 | ||
|
|
553490874b | ||
|
|
31d3872405 | ||
|
|
6f55e90365 | ||
|
|
76f129f6d1 | ||
|
|
d4d7971a56 | ||
|
|
64b0489a73 | ||
|
|
87ed7353b4 | ||
|
|
aca23197a1 | ||
|
|
69a2a2b8a2 | ||
|
|
f5d9a4f1c6 | ||
|
|
71ce165a46 | ||
|
|
56ab509630 | ||
|
|
9608a16d95 | ||
|
|
9b314777e0 | ||
|
|
1ae0a9005f | ||
|
|
1d5956a58a | ||
|
|
73c4a449ab | ||
|
|
aeeed159d7 | ||
|
|
104fd7d70f | ||
|
|
e9e5f48756 | ||
|
|
8260d71cd7 | ||
|
|
ac43f8a29f | ||
|
|
f6f87fec95 | ||
|
|
d1081229b3 | ||
|
|
8a73e916e7 | ||
|
|
17c45c3245 | ||
|
|
0ecf1cabde | ||
|
|
ba8d9806f7 | ||
|
|
99b289aa58 | ||
|
|
334b91f128 | ||
|
|
f7380b8bb0 | ||
|
|
6ad229c7c0 | ||
|
|
94dfbbf7c1 | ||
|
|
88b2502eb3 | ||
|
|
cd2e53f70b | ||
|
|
e009ff2cbc | ||
|
|
4816b58914 | ||
|
|
875a433182 | ||
|
|
dc8d029e96 | ||
|
|
af80c4770e | ||
|
|
ddcdc6f745 | ||
|
|
81ac996deb | ||
|
|
84d1d7bf3b | ||
|
|
9578fc1035 | ||
|
|
25f427d8bf | ||
|
|
725b6d672c | ||
|
|
4bc53b17f4 | ||
|
|
666f2a6b52 | ||
|
|
cbf6eb9578 | ||
|
|
7dd3edaee4 | ||
|
|
ef57dbf4a1 | ||
|
|
3a60d40bac | ||
|
|
cb0dee3e99 | ||
|
|
19673da32e | ||
|
|
b8b5652cb6 | ||
|
|
7b4953bc5f | ||
|
|
62f6fc85a5 | ||
|
|
d2b1b2183b | ||
|
|
a236609ebf | ||
|
|
6c893c136e | ||
|
|
f4212f232e | ||
|
|
3a805b0ca9 | ||
|
|
c52627cc8f | ||
|
|
b84fed1de9 | ||
|
|
d49bc548c7 | ||
|
|
492d6cd2d4 | ||
|
|
be3558167e | ||
|
|
4573fd2760 |
@@ -0,0 +1,23 @@
|
|||||||
|
name: Release @pybricks/images
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- '@pybricks/images/**'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish_ide_docs:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
# Setup .npmrc file to publish to npm
|
||||||
|
- uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: '16.x'
|
||||||
|
registry-url: 'https://registry.npmjs.org'
|
||||||
|
- run: ./build.py
|
||||||
|
working-directory: npm/images
|
||||||
|
- run: yarn publish
|
||||||
|
working-directory: npm/images/build
|
||||||
|
env:
|
||||||
|
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
|
||||||
@@ -6,17 +6,10 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build_and_publish:
|
build_and_publish:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- uses: actions/setup-python@v2
|
- run: pipx run poetry build
|
||||||
with:
|
- run: pipx run poetry publish
|
||||||
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:
|
env:
|
||||||
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }}
|
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"files.exclude": {
|
"files.exclude": {
|
||||||
"**/__pycache__": true,
|
"**/__pycache__": true,
|
||||||
},
|
},
|
||||||
|
"python.defaultInterpreterPath": ".venv/bin/python",
|
||||||
"python.autoComplete.extraPaths": ["jedi/src"],
|
"python.autoComplete.extraPaths": ["jedi/src"],
|
||||||
"python.formatting.provider": "black",
|
"python.formatting.provider": "black",
|
||||||
"python.linting.pylintEnabled": false,
|
"python.linting.pylintEnabled": false,
|
||||||
|
|||||||
@@ -4,6 +4,32 @@
|
|||||||
|
|
||||||
## Unreleased
|
## 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
|
||||||
|
- Documented ``Stop.NONE`` and ``Stop.COAST_SMART``.
|
||||||
|
- Documented ``ujson`` module.
|
||||||
|
- Added `done` and `stalled` methods for `DriveBase`.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Changed `PrimeHub.display.image()` to `PrimeHub.display.icon()` and renamed
|
||||||
|
its kwarg from `image` to `icon`.
|
||||||
|
- Improved presentation and docstrings of the ``ubuiltins`` and other
|
||||||
|
MicroPython modules
|
||||||
|
- Moved the random numbers example for Move Hub to the Move Hub page.
|
||||||
|
- Moved `done()`, `stalled()`, `load()` from `Control` to `Motor` object.
|
||||||
|
|
||||||
|
## 3.2.0b5 - 2022-11-11
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed Jedi code completion for `Color` and `Icon` classes in `pybricks.parameters`.
|
||||||
|
|
||||||
## 3.2.0b4 - 2022-10-21
|
## 3.2.0b4 - 2022-10-21
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2018-2021 The Pybricks Authors
|
Copyright (c) 2018-2022 The Pybricks Authors
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ help:
|
|||||||
.PHONY: help Makefile
|
.PHONY: help Makefile
|
||||||
|
|
||||||
diagrams:
|
diagrams:
|
||||||
@$(MAKE) -C "$(SOURCEDIR)"/diagram_source clean
|
@$(MAKE) -C "$(SOURCEDIR)"/diagrams_source clean
|
||||||
@$(MAKE) -C "$(SOURCEDIR)"/diagram_source
|
@$(MAKE) -C "$(SOURCEDIR)"/diagrams_source
|
||||||
|
|
||||||
# Catch-all target: route all unknown targets to Sphinx using the new
|
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||||
|
|||||||
@@ -40,3 +40,11 @@
|
|||||||
::-webkit-scrollbar-thumb:hover {
|
::-webkit-scrollbar-thumb:hover {
|
||||||
background: #182026;
|
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 {
|
.figure > a.reference.external::after {
|
||||||
content: none !important;
|
content: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.wy-side-nav-search > div.version {
|
||||||
|
color: hsla(0, 0%, 100%, 0.75);
|
||||||
|
}
|
||||||
|
|||||||
@@ -169,6 +169,7 @@ html_context = {
|
|||||||
html_theme_options = {
|
html_theme_options = {
|
||||||
"style_external_links": True,
|
"style_external_links": True,
|
||||||
"logo_only": True,
|
"logo_only": True,
|
||||||
|
"style_nav_header_background": "#0088ce", # Pybricks blue
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add any paths that contain custom static files (such as style sheets) here,
|
# Add any paths that contain custom static files (such as style sheets) here,
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ FEATURES_SMALL = set()
|
|||||||
# Medium feature set.
|
# Medium feature set.
|
||||||
FEATURES_MEDIUM = FEATURES_SMALL | {
|
FEATURES_MEDIUM = FEATURES_SMALL | {
|
||||||
"pybricks-geometry",
|
"pybricks-geometry",
|
||||||
|
"pybricks-common-control",
|
||||||
"pybricks-iodevices",
|
"pybricks-iodevices",
|
||||||
"stm32-extra",
|
"stm32-extra",
|
||||||
"stm32-float",
|
"stm32-float",
|
||||||
@@ -24,8 +25,8 @@ HUB_FEATURES = {
|
|||||||
"movehub": {"movehub"} | FEATURES_SMALL,
|
"movehub": {"movehub"} | FEATURES_SMALL,
|
||||||
"cityhub": {"cityhub"} | FEATURES_MEDIUM,
|
"cityhub": {"cityhub"} | FEATURES_MEDIUM,
|
||||||
"technichub": {"technichub"} | FEATURES_MEDIUM,
|
"technichub": {"technichub"} | FEATURES_MEDIUM,
|
||||||
"primehub": {"primehub", "inventorhub"} | FEATURES_LARGE,
|
"primehub": {"primehub", "inventorhub", "light-matrix"} | FEATURES_LARGE,
|
||||||
"inventorhub": {"primehub", "inventorhub"} | FEATURES_LARGE,
|
"inventorhub": {"primehub", "inventorhub", "light-matrix"} | FEATURES_LARGE,
|
||||||
"essentialhub": {"essentialhub"} | FEATURES_LARGE,
|
"essentialhub": {"essentialhub"} | FEATURES_LARGE,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,20 +47,19 @@ class PybricksRequirementsStaticDirective(Directive):
|
|||||||
makedirs(destdir)
|
makedirs(destdir)
|
||||||
|
|
||||||
for hub in HUB_FEATURES:
|
for hub in HUB_FEATURES:
|
||||||
for compat in ("true", "false"):
|
uri = "compat_{0}.png".format(hub)
|
||||||
uri = "compat_{0}_{1}.png".format(hub, compat)
|
src_uri = path.join(env.app.builder.srcdir, "diagrams", uri)
|
||||||
src_uri = path.join(env.app.builder.srcdir, "diagrams", uri)
|
build_uri = path.join(env.app.builder.outdir, "_images", uri)
|
||||||
build_uri = path.join(env.app.builder.outdir, "_images", uri)
|
copyfile(src_uri, build_uri)
|
||||||
copyfile(src_uri, build_uri)
|
|
||||||
|
|
||||||
# Get requirements from sphinx-directive.
|
# Get requirements from sphinx-directive.
|
||||||
requirements = set(self.arguments)
|
requirements = set(self.arguments)
|
||||||
|
|
||||||
# Cell with image of a hub.
|
# Cell with image of a hub.
|
||||||
hub_cell = """
|
hub_cell = """
|
||||||
<th><div class="align-default">
|
<th background="{0}_images/compat_{1}.png" class="requirements-table-th requirements-table-th">
|
||||||
<img alt="" src="{0}_images/compat_{1}_{2}_label.png">
|
{2}
|
||||||
</div></th>
|
</th>
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Determine how far up the tree we are to set correct image path.
|
# Determine how far up the tree we are to set correct image path.
|
||||||
@@ -71,7 +71,7 @@ class PybricksRequirementsStaticDirective(Directive):
|
|||||||
compat_row = "".join(
|
compat_row = "".join(
|
||||||
[
|
[
|
||||||
hub_cell.format(
|
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()
|
for hub, features in HUB_FEATURES.items()
|
||||||
]
|
]
|
||||||
@@ -80,7 +80,7 @@ class PybricksRequirementsStaticDirective(Directive):
|
|||||||
# Generate full table.
|
# Generate full table.
|
||||||
html = """
|
html = """
|
||||||
<div class="wy-table-responsive">
|
<div class="wy-table-responsive">
|
||||||
<table class="docutils align-default">
|
<table class="docutils align-default requirements-table">
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
{0}
|
{0}
|
||||||
|
|||||||
@@ -42,3 +42,19 @@ SOFTWARE. */
|
|||||||
margin-bottom: 0px;
|
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%;
|
||||||
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 11 KiB |
@@ -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-*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-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-*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-*.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-dcmotor-*.png output/iodevice-dcmotor.png
|
||||||
cp LPub3D/assem/main_1_iodevices_1_iodevice-pupdevice-*.png output/iodevice-pupdevice.png
|
cp LPub3D/assem/main_1_iodevices_1_iodevice-pupdevice-*.png output/iodevice-pupdevice.png
|
||||||
|
|||||||
@@ -163,7 +163,7 @@
|
|||||||
1 71 0 0 0 1 0 0 0 1 0 0 0 1 22127.dat
|
1 71 0 0 0 1 0 0 0 1 0 0 0 1 22127.dat
|
||||||
0 ROTSTEP 35 -35 0 ABS
|
0 ROTSTEP 35 -35 0 ABS
|
||||||
1 71 0 0 0 1 0 0 0 1 0 0 0 1 22127.dat
|
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 NOFILE
|
||||||
0
|
0
|
||||||
0 FILE hub-prime.ldr
|
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 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
|
1 0 450 0 -40 1 0 0 0 1 0 0 0 1 hub-move.ldr
|
||||||
0 ROTSTEP 40 -35 0 ABS
|
0 ROTSTEP 40 -35 0 ABS
|
||||||
|
0
|
||||||
0
|
0
|
||||||
0
|
0
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 9.0 KiB |
|
Before Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 9.7 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 121 KiB |
|
After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 64 KiB |
@@ -8,7 +8,7 @@
|
|||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg887"
|
id="svg887"
|
||||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
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:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
@@ -40,15 +40,15 @@
|
|||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="3.3219805"
|
inkscape:zoom="3.3219805"
|
||||||
inkscape:cx="34.617903"
|
inkscape:cx="34.617903"
|
||||||
inkscape:cy="95.726028"
|
inkscape:cy="95.575516"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
units="px"
|
units="px"
|
||||||
inkscape:window-width="1920"
|
inkscape:window-width="1856"
|
||||||
inkscape:window-height="1163"
|
inkscape:window-height="1136"
|
||||||
inkscape:window-x="1920"
|
inkscape:window-x="64"
|
||||||
inkscape:window-y="0"
|
inkscape:window-y="27"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
inkscape:snap-global="false"
|
inkscape:snap-global="false"
|
||||||
inkscape:pagecheckerboard="0" />
|
inkscape:pagecheckerboard="0" />
|
||||||
@@ -75,10 +75,5 @@
|
|||||||
y="265.09711"
|
y="265.09711"
|
||||||
width="23.382999"
|
width="23.382999"
|
||||||
height="26.799999" />
|
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>
|
</g>
|
||||||
</svg>
|
</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"
|
version="1.1"
|
||||||
id="svg887"
|
id="svg887"
|
||||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
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:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
@@ -38,9 +38,9 @@
|
|||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:pageopacity="1"
|
inkscape:pageopacity="1"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="2.3960249"
|
inkscape:zoom="3.4759103"
|
||||||
inkscape:cx="-130.63303"
|
inkscape:cx="134.0656"
|
||||||
inkscape:cy="93.696856"
|
inkscape:cy="60.84737"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
@@ -75,10 +75,5 @@
|
|||||||
y="267.43524"
|
y="267.43524"
|
||||||
width="25.393"
|
width="25.393"
|
||||||
height="22.579" />
|
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>
|
</g>
|
||||||
</svg>
|
</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"
|
version="1.1"
|
||||||
id="svg887"
|
id="svg887"
|
||||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
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:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
@@ -38,9 +38,9 @@
|
|||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:pageopacity="1"
|
inkscape:pageopacity="1"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="3.959798"
|
inkscape:zoom="2.6570037"
|
||||||
inkscape:cx="30.052038"
|
inkscape:cx="57.583661"
|
||||||
inkscape:cy="63.260803"
|
inkscape:cy="87.504583"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
@@ -75,10 +75,5 @@
|
|||||||
y="262.86874"
|
y="262.86874"
|
||||||
width="34.237"
|
width="34.237"
|
||||||
height="31.087999" />
|
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>
|
</g>
|
||||||
</svg>
|
</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"
|
version="1.1"
|
||||||
id="svg887"
|
id="svg887"
|
||||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
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:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
@@ -38,9 +38,9 @@
|
|||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:pageopacity="1"
|
inkscape:pageopacity="1"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="3.959798"
|
inkscape:zoom="1.4539184"
|
||||||
inkscape:cx="-61.114229"
|
inkscape:cx="101.79388"
|
||||||
inkscape:cy="79.170705"
|
inkscape:cy="158.5371"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
@@ -75,10 +75,5 @@
|
|||||||
y="261.79425"
|
y="261.79425"
|
||||||
width="38.50182"
|
width="38.50182"
|
||||||
height="34.867249" />
|
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>
|
</g>
|
||||||
</svg>
|
</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"
|
version="1.1"
|
||||||
id="svg887"
|
id="svg887"
|
||||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
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:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
@@ -38,9 +38,9 @@
|
|||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:pageopacity="1"
|
inkscape:pageopacity="1"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="3.959798"
|
inkscape:zoom="2.5665087"
|
||||||
inkscape:cx="-15.152288"
|
inkscape:cx="-39.742706"
|
||||||
inkscape:cy="104.67706"
|
inkscape:cy="115.13696"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
@@ -75,10 +75,5 @@
|
|||||||
y="263.1333"
|
y="263.1333"
|
||||||
width="34.237"
|
width="34.237"
|
||||||
height="31.087999" />
|
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>
|
</g>
|
||||||
</svg>
|
</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"
|
version="1.1"
|
||||||
id="svg887"
|
id="svg887"
|
||||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
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:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
@@ -38,9 +38,9 @@
|
|||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:pageopacity="1"
|
inkscape:pageopacity="1"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="3.959798"
|
inkscape:zoom="1.8594069"
|
||||||
inkscape:cx="51.517779"
|
inkscape:cx="-63.461097"
|
||||||
inkscape:cy="94.82807"
|
inkscape:cy="62.116582"
|
||||||
inkscape:document-units="px"
|
inkscape:document-units="px"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
@@ -75,10 +75,5 @@
|
|||||||
y="263.52396"
|
y="263.52396"
|
||||||
width="35.710999"
|
width="35.710999"
|
||||||
height="30.552" />
|
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>
|
</g>
|
||||||
</svg>
|
</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 |
@@ -0,0 +1,86 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
width="525"
|
||||||
|
height="525"
|
||||||
|
viewBox="0 0 525 525"
|
||||||
|
sodipodi:docname="icon_cityhub.svg"
|
||||||
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||||
|
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/">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<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>
|
||||||
|
<defs
|
||||||
|
id="defs6">
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath860">
|
||||||
|
<rect
|
||||||
|
style="fill:#6ab0de;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect862"
|
||||||
|
width="589.10107"
|
||||||
|
height="96.333336"
|
||||||
|
x="235.33333"
|
||||||
|
y="-236.00002" />
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath1040">
|
||||||
|
<rect
|
||||||
|
style="fill:#1e1e1e;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect1042"
|
||||||
|
width="128.5101"
|
||||||
|
height="19.934668"
|
||||||
|
x="827.15656"
|
||||||
|
y="74.666672" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#fcfcfc"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="1"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1856"
|
||||||
|
inkscape:window-height="1136"
|
||||||
|
id="namedview4"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.9950413"
|
||||||
|
inkscape:cx="301.49502"
|
||||||
|
inkscape:cy="344.20682"
|
||||||
|
inkscape:window-x="64"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg2"
|
||||||
|
inkscape:snap-global="false"
|
||||||
|
inkscape:pagecheckerboard="0" />
|
||||||
|
<image
|
||||||
|
width="349"
|
||||||
|
height="400"
|
||||||
|
preserveAspectRatio="none"
|
||||||
|
xlink:href="../cad/output/hub-city.png"
|
||||||
|
id="image834"
|
||||||
|
x="90"
|
||||||
|
y="55" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.5 KiB |
@@ -0,0 +1,86 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
width="525"
|
||||||
|
height="525"
|
||||||
|
viewBox="0 0 525 525"
|
||||||
|
sodipodi:docname="icon_essentialhub.svg"
|
||||||
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||||
|
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/">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<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>
|
||||||
|
<defs
|
||||||
|
id="defs6">
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath860">
|
||||||
|
<rect
|
||||||
|
style="fill:#6ab0de;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect862"
|
||||||
|
width="589.10107"
|
||||||
|
height="96.333336"
|
||||||
|
x="235.33333"
|
||||||
|
y="-236.00002" />
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath1040">
|
||||||
|
<rect
|
||||||
|
style="fill:#1e1e1e;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect1042"
|
||||||
|
width="128.5101"
|
||||||
|
height="19.934668"
|
||||||
|
x="827.15656"
|
||||||
|
y="74.666672" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#fcfcfc"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="1"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1856"
|
||||||
|
inkscape:window-height="1136"
|
||||||
|
id="namedview4"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.9950413"
|
||||||
|
inkscape:cx="301.49502"
|
||||||
|
inkscape:cy="344.20682"
|
||||||
|
inkscape:window-x="64"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg2"
|
||||||
|
inkscape:snap-global="false"
|
||||||
|
inkscape:pagecheckerboard="0" />
|
||||||
|
<image
|
||||||
|
width="379"
|
||||||
|
height="338"
|
||||||
|
preserveAspectRatio="none"
|
||||||
|
xlink:href="../cad/output/hub-essential.png"
|
||||||
|
id="image1283"
|
||||||
|
x="80"
|
||||||
|
y="80" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.5 KiB |
@@ -0,0 +1,86 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
width="525"
|
||||||
|
height="525"
|
||||||
|
viewBox="0 0 525 525"
|
||||||
|
sodipodi:docname="icon_inventorhub.svg"
|
||||||
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||||
|
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/">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<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>
|
||||||
|
<defs
|
||||||
|
id="defs6">
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath860">
|
||||||
|
<rect
|
||||||
|
style="fill:#6ab0de;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect862"
|
||||||
|
width="589.10107"
|
||||||
|
height="96.333336"
|
||||||
|
x="235.33333"
|
||||||
|
y="-236.00002" />
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath1040">
|
||||||
|
<rect
|
||||||
|
style="fill:#1e1e1e;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect1042"
|
||||||
|
width="128.5101"
|
||||||
|
height="19.934668"
|
||||||
|
x="827.15656"
|
||||||
|
y="74.666672" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#fcfcfc"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="1"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1856"
|
||||||
|
inkscape:window-height="1136"
|
||||||
|
id="namedview4"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.9950413"
|
||||||
|
inkscape:cx="301.49502"
|
||||||
|
inkscape:cy="344.20682"
|
||||||
|
inkscape:window-x="64"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg2"
|
||||||
|
inkscape:snap-global="false"
|
||||||
|
inkscape:pagecheckerboard="0" />
|
||||||
|
<image
|
||||||
|
width="513"
|
||||||
|
height="465"
|
||||||
|
preserveAspectRatio="none"
|
||||||
|
xlink:href="../cad/output/hub-inventor.png"
|
||||||
|
id="image1430"
|
||||||
|
x="7"
|
||||||
|
y="21" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.5 KiB |
@@ -0,0 +1,87 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
width="525"
|
||||||
|
height="525"
|
||||||
|
viewBox="0 0 525 525"
|
||||||
|
sodipodi:docname="icon_movehub.svg"
|
||||||
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||||
|
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/">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<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>
|
||||||
|
<defs
|
||||||
|
id="defs6">
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath860">
|
||||||
|
<rect
|
||||||
|
style="fill:#6ab0de;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect862"
|
||||||
|
width="589.10107"
|
||||||
|
height="96.333336"
|
||||||
|
x="235.33333"
|
||||||
|
y="-236.00002" />
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath1040">
|
||||||
|
<rect
|
||||||
|
style="fill:#1e1e1e;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect1042"
|
||||||
|
width="128.5101"
|
||||||
|
height="19.934668"
|
||||||
|
x="827.15656"
|
||||||
|
y="74.666672" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#fcfcfc"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="1"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1856"
|
||||||
|
inkscape:window-height="1136"
|
||||||
|
id="namedview4"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.9950413"
|
||||||
|
inkscape:cx="301.49502"
|
||||||
|
inkscape:cy="344.20682"
|
||||||
|
inkscape:window-x="64"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg2"
|
||||||
|
inkscape:snap-global="false"
|
||||||
|
inkscape:pagecheckerboard="0" />
|
||||||
|
<image
|
||||||
|
width="525"
|
||||||
|
height="475.44"
|
||||||
|
preserveAspectRatio="none"
|
||||||
|
xlink:href="../cad/output/hub-move.png"
|
||||||
|
id="image1015"
|
||||||
|
x="0"
|
||||||
|
y="18"
|
||||||
|
style="stroke-width:1.19048" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.5 KiB |
@@ -0,0 +1,86 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
width="525"
|
||||||
|
height="525"
|
||||||
|
viewBox="0 0 525 525"
|
||||||
|
sodipodi:docname="icon_primehub.svg"
|
||||||
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||||
|
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/">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<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>
|
||||||
|
<defs
|
||||||
|
id="defs6">
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath860">
|
||||||
|
<rect
|
||||||
|
style="fill:#6ab0de;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect862"
|
||||||
|
width="589.10107"
|
||||||
|
height="96.333336"
|
||||||
|
x="235.33333"
|
||||||
|
y="-236.00002" />
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath1040">
|
||||||
|
<rect
|
||||||
|
style="fill:#1e1e1e;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect1042"
|
||||||
|
width="128.5101"
|
||||||
|
height="19.934668"
|
||||||
|
x="827.15656"
|
||||||
|
y="74.666672" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#fcfcfc"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="1"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1856"
|
||||||
|
inkscape:window-height="1136"
|
||||||
|
id="namedview4"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.9950413"
|
||||||
|
inkscape:cx="301.49502"
|
||||||
|
inkscape:cy="344.20682"
|
||||||
|
inkscape:window-x="64"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg2"
|
||||||
|
inkscape:snap-global="false"
|
||||||
|
inkscape:pagecheckerboard="0" />
|
||||||
|
<image
|
||||||
|
width="513"
|
||||||
|
height="465"
|
||||||
|
preserveAspectRatio="none"
|
||||||
|
xlink:href="../cad/output/hub-prime.png"
|
||||||
|
id="image1329"
|
||||||
|
x="7"
|
||||||
|
y="21" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.5 KiB |
@@ -0,0 +1,87 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
version="1.1"
|
||||||
|
id="svg2"
|
||||||
|
width="525"
|
||||||
|
height="525"
|
||||||
|
viewBox="0 0 525 525"
|
||||||
|
sodipodi:docname="icon_technichub.svg"
|
||||||
|
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||||
|
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/">
|
||||||
|
<metadata
|
||||||
|
id="metadata8">
|
||||||
|
<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>
|
||||||
|
<defs
|
||||||
|
id="defs6">
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath860">
|
||||||
|
<rect
|
||||||
|
style="fill:#6ab0de;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect862"
|
||||||
|
width="589.10107"
|
||||||
|
height="96.333336"
|
||||||
|
x="235.33333"
|
||||||
|
y="-236.00002" />
|
||||||
|
</clipPath>
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath1040">
|
||||||
|
<rect
|
||||||
|
style="fill:#1e1e1e;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="rect1042"
|
||||||
|
width="128.5101"
|
||||||
|
height="19.934668"
|
||||||
|
x="827.15656"
|
||||||
|
y="74.666672" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#fcfcfc"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="1"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1856"
|
||||||
|
inkscape:window-height="1136"
|
||||||
|
id="namedview4"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="0.9950413"
|
||||||
|
inkscape:cx="301.49502"
|
||||||
|
inkscape:cy="344.20682"
|
||||||
|
inkscape:window-x="64"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg2"
|
||||||
|
inkscape:snap-global="false"
|
||||||
|
inkscape:pagecheckerboard="0" />
|
||||||
|
<image
|
||||||
|
width="525"
|
||||||
|
height="447.47662"
|
||||||
|
preserveAspectRatio="none"
|
||||||
|
xlink:href="../cad/output/hub-technic.png"
|
||||||
|
id="image985"
|
||||||
|
x="0"
|
||||||
|
y="35.996998"
|
||||||
|
style="stroke-width:1.01905" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.5 KiB |
@@ -66,9 +66,9 @@
|
|||||||
inkscape:window-height="1136"
|
inkscape:window-height="1136"
|
||||||
id="namedview4"
|
id="namedview4"
|
||||||
showgrid="false"
|
showgrid="false"
|
||||||
inkscape:zoom="1.0710043"
|
inkscape:zoom="0.70516005"
|
||||||
inkscape:cx="253.96723"
|
inkscape:cx="286.45979"
|
||||||
inkscape:cy="270.30703"
|
inkscape:cy="338.22109"
|
||||||
inkscape:window-x="64"
|
inkscape:window-x="64"
|
||||||
inkscape:window-y="27"
|
inkscape:window-y="27"
|
||||||
inkscape:window-maximized="1"
|
inkscape:window-maximized="1"
|
||||||
@@ -76,36 +76,37 @@
|
|||||||
inkscape:snap-global="false"
|
inkscape:snap-global="false"
|
||||||
inkscape:pagecheckerboard="0" />
|
inkscape:pagecheckerboard="0" />
|
||||||
<image
|
<image
|
||||||
width="362.92642"
|
width="360.79803"
|
||||||
height="317.47708"
|
height="329.56876"
|
||||||
preserveAspectRatio="none"
|
preserveAspectRatio="none"
|
||||||
xlink:href="../cad/output/hub-technic-orientation.png"
|
xlink:href="../cad/output/hub-technic-orientation.png"
|
||||||
id="image1727"
|
id="image861"
|
||||||
x="92.506996"
|
x="102.51701"
|
||||||
y="67.242409" />
|
y="59.175568"
|
||||||
|
style="stroke-width:1.505" />
|
||||||
<rect
|
<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"
|
id="rect873"
|
||||||
width="94.047379"
|
width="94.047379"
|
||||||
height="42.092525"
|
height="42.092525"
|
||||||
x="369.40115"
|
x="372.33868"
|
||||||
y="235.02014" />
|
y="256.1105" />
|
||||||
<rect
|
<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"
|
id="rect875"
|
||||||
width="94.047379"
|
width="94.047379"
|
||||||
height="4"
|
height="4"
|
||||||
x="369.40115"
|
x="372.33868"
|
||||||
y="235.02014" />
|
y="256.1105" />
|
||||||
<text
|
<text
|
||||||
id="text879"
|
id="text879"
|
||||||
y="265.60547"
|
y="286.69583"
|
||||||
x="379.37143"
|
x="382.30896"
|
||||||
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"
|
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
|
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"
|
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="265.60547"
|
y="286.69583"
|
||||||
x="379.37143"
|
x="382.30896"
|
||||||
id="tspan877"
|
id="tspan877"
|
||||||
sodipodi:role="line">RIGHT</tspan></text>
|
sodipodi:role="line">RIGHT</tspan></text>
|
||||||
<path
|
<path
|
||||||
@@ -165,90 +166,90 @@
|
|||||||
y="303.26227"
|
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>
|
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
|
<rect
|
||||||
y="157.47092"
|
y="144.53636"
|
||||||
x="232.60791"
|
x="254.17665"
|
||||||
height="42.092525"
|
height="42.092525"
|
||||||
width="67.413025"
|
width="67.413025"
|
||||||
id="rect4648"
|
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
|
<rect
|
||||||
y="157.47092"
|
y="144.53636"
|
||||||
x="232.60791"
|
x="254.17665"
|
||||||
height="4"
|
height="4"
|
||||||
width="67.413025"
|
width="67.413025"
|
||||||
id="rect4650"
|
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
|
<text
|
||||||
xml:space="preserve"
|
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"
|
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="243.7567"
|
x="265.32544"
|
||||||
y="188.05624"
|
y="175.12169"
|
||||||
id="text4654"><tspan
|
id="text4654"><tspan
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan4652"
|
id="tspan4652"
|
||||||
x="243.7567"
|
x="265.32544"
|
||||||
y="188.05624"
|
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.60486054">TOP</tspan></text>
|
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
|
<path
|
||||||
sodipodi:nodetypes="cc"
|
sodipodi:nodetypes="cc"
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
id="path987"
|
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" />
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
<rect
|
<rect
|
||||||
y="42.940842"
|
y="60.942871"
|
||||||
x="100.96023"
|
x="92.529968"
|
||||||
height="42.092525"
|
height="42.092525"
|
||||||
width="80.376648"
|
width="80.376648"
|
||||||
id="rect932"
|
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
|
<rect
|
||||||
y="42.940842"
|
y="60.942871"
|
||||||
x="100.96023"
|
x="92.529968"
|
||||||
height="4"
|
height="4"
|
||||||
width="80.376648"
|
width="80.376648"
|
||||||
id="rect934"
|
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
|
<text
|
||||||
xml:space="preserve"
|
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"
|
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="113.1997"
|
x="104.76944"
|
||||||
y="73.526169"
|
y="91.528198"
|
||||||
id="text938"><tspan
|
id="text938"><tspan
|
||||||
sodipodi:role="line"
|
sodipodi:role="line"
|
||||||
id="tspan936"
|
id="tspan936"
|
||||||
x="113.1997"
|
x="104.76944"
|
||||||
y="73.526169"
|
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.60486054">LEFT</tspan></text>
|
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
|
<path
|
||||||
sodipodi:nodetypes="cc"
|
sodipodi:nodetypes="cc"
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
id="path1114"
|
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" />
|
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
||||||
<rect
|
<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"
|
id="rect1116"
|
||||||
width="117.09069"
|
width="117.09069"
|
||||||
height="42.092525"
|
height="42.092525"
|
||||||
x="340.08701"
|
x="352.11694"
|
||||||
y="371.42603" />
|
y="380.86105" />
|
||||||
<rect
|
<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"
|
id="rect1118"
|
||||||
width="117.09069"
|
width="117.09069"
|
||||||
height="4"
|
height="4"
|
||||||
x="340.08701"
|
x="352.11694"
|
||||||
y="371.42603" />
|
y="380.86105" />
|
||||||
<text
|
<text
|
||||||
id="text1122"
|
id="text1122"
|
||||||
y="402.01135"
|
y="411.44638"
|
||||||
x="349.49805"
|
x="361.52798"
|
||||||
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"
|
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
|
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"
|
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="402.01135"
|
y="411.44638"
|
||||||
x="349.49805"
|
x="361.52798"
|
||||||
id="tspan1120"
|
id="tspan1120"
|
||||||
sodipodi:role="line">BOTTOM</tspan></text>
|
sodipodi:role="line">BOTTOM</tspan></text>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
@@ -26,6 +26,10 @@ Motors
|
|||||||
|
|
||||||
.. automethod:: pybricks.ev3devices.Motor.reset_angle
|
.. automethod:: pybricks.ev3devices.Motor.reset_angle
|
||||||
|
|
||||||
|
.. automethod:: pybricks.ev3devices.Motor.load
|
||||||
|
|
||||||
|
.. automethod:: pybricks.ev3devices.Motor.stalled
|
||||||
|
|
||||||
.. rubric:: Stopping
|
.. rubric:: Stopping
|
||||||
|
|
||||||
.. automethod:: pybricks.ev3devices.Motor.stop
|
.. automethod:: pybricks.ev3devices.Motor.stop
|
||||||
@@ -34,10 +38,14 @@ Motors
|
|||||||
|
|
||||||
.. automethod:: pybricks.ev3devices.Motor.hold
|
.. automethod:: pybricks.ev3devices.Motor.hold
|
||||||
|
|
||||||
.. rubric:: Action
|
.. rubric:: Running forever
|
||||||
|
|
||||||
.. automethod:: pybricks.ev3devices.Motor.run
|
.. automethod:: pybricks.ev3devices.Motor.run
|
||||||
|
|
||||||
|
.. automethod:: pybricks.ev3devices.Motor.dc
|
||||||
|
|
||||||
|
.. rubric:: Running by a fixed amount
|
||||||
|
|
||||||
.. automethod:: pybricks.ev3devices.Motor.run_time
|
.. automethod:: pybricks.ev3devices.Motor.run_time
|
||||||
|
|
||||||
.. automethod:: pybricks.ev3devices.Motor.run_angle
|
.. automethod:: pybricks.ev3devices.Motor.run_angle
|
||||||
@@ -48,31 +56,14 @@ Motors
|
|||||||
|
|
||||||
.. automethod:: pybricks.ev3devices.Motor.run_until_stalled
|
.. automethod:: pybricks.ev3devices.Motor.run_until_stalled
|
||||||
|
|
||||||
.. automethod:: pybricks.ev3devices.Motor.dc
|
.. automethod:: pybricks.ev3devices.Motor.done
|
||||||
|
|
||||||
.. rubric:: Motor status
|
|
||||||
|
|
||||||
.. attribute:: control.scale
|
|
||||||
|
|
||||||
Number of degrees that the motor turns to complete one degree at the
|
|
||||||
output of the gear train. This is the gear ratio determined from the
|
|
||||||
``gears`` argument when initializing the motor.
|
|
||||||
|
|
||||||
.. automethod:: pybricks.ev3devices.Motor.control.done
|
|
||||||
|
|
||||||
.. automethod:: pybricks.ev3devices.Motor.control.stalled
|
|
||||||
|
|
||||||
.. automethod:: pybricks.ev3devices.Motor.control.load
|
|
||||||
|
|
||||||
.. rubric:: Motor settings
|
.. rubric:: Motor settings
|
||||||
|
|
||||||
You can only change these settings while the controller is stopped. For
|
|
||||||
example, you can change them at the start of your program. Alternatively,
|
|
||||||
first call :meth:`stop() <pybricks.ev3devices.Motor.stop>`, and then change
|
|
||||||
the settings.
|
|
||||||
|
|
||||||
.. automethod:: pybricks.ev3devices.Motor.settings
|
.. automethod:: pybricks.ev3devices.Motor.settings
|
||||||
|
|
||||||
|
.. rubric:: Control settings
|
||||||
|
|
||||||
.. automethod:: pybricks.ev3devices.Motor.control.limits
|
.. automethod:: pybricks.ev3devices.Motor.control.limits
|
||||||
|
|
||||||
.. automethod:: pybricks.ev3devices.Motor.control.pid
|
.. automethod:: pybricks.ev3devices.Motor.control.pid
|
||||||
@@ -81,6 +72,12 @@ Motors
|
|||||||
|
|
||||||
.. automethod:: pybricks.ev3devices.Motor.control.stall_tolerances
|
.. automethod:: pybricks.ev3devices.Motor.control.stall_tolerances
|
||||||
|
|
||||||
|
.. attribute:: control.scale
|
||||||
|
|
||||||
|
Number of degrees that the motor turns to complete one degree at the
|
||||||
|
output of the gear train. This is the gear ratio determined from the
|
||||||
|
``gears`` argument when initializing the motor.
|
||||||
|
|
||||||
Touch Sensor
|
Touch Sensor
|
||||||
^^^^^^^^^^^^
|
^^^^^^^^^^^^
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ City Hub
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
.. figure:: ../../main/cad/output/hub-city.png
|
.. figure:: ../../main/cad/output/hub-city.png
|
||||||
:height: 15 em
|
:width: 30%
|
||||||
|
|
||||||
.. autoclass:: pybricks.hubs.CityHub
|
.. autoclass:: pybricks.hubs.CityHub
|
||||||
:no-members:
|
:no-members:
|
||||||
@@ -35,6 +35,10 @@ City Hub
|
|||||||
|
|
||||||
.. automethod:: pybricks.hubs::CityHub.system.storage
|
.. automethod:: pybricks.hubs::CityHub.system.storage
|
||||||
|
|
||||||
|
You can store up to 128 bytes of data on this hub. The data is cleared
|
||||||
|
when you update the Pybricks firmware or if you restore the original
|
||||||
|
firmware.
|
||||||
|
|
||||||
.. automethod:: pybricks.hubs::CityHub.system.shutdown
|
.. automethod:: pybricks.hubs::CityHub.system.shutdown
|
||||||
|
|
||||||
.. automethod:: pybricks.hubs::CityHub.system.reset_reason
|
.. automethod:: pybricks.hubs::CityHub.system.reset_reason
|
||||||
|
|||||||
@@ -6,14 +6,6 @@ Essential Hub
|
|||||||
.. figure:: ../../main/cad/output/hub-essential.png
|
.. figure:: ../../main/cad/output/hub-essential.png
|
||||||
:width: 30%
|
: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
|
.. autoclass:: pybricks.hubs.EssentialHub
|
||||||
:no-members:
|
:no-members:
|
||||||
|
|
||||||
@@ -67,6 +59,8 @@ Essential Hub
|
|||||||
|
|
||||||
.. automethod:: pybricks.hubs::EssentialHub.system.storage
|
.. automethod:: pybricks.hubs::EssentialHub.system.storage
|
||||||
|
|
||||||
|
You can store up to 512 bytes of data on this hub.
|
||||||
|
|
||||||
.. automethod:: pybricks.hubs::EssentialHub.system.shutdown
|
.. automethod:: pybricks.hubs::EssentialHub.system.shutdown
|
||||||
|
|
||||||
.. automethod:: pybricks.hubs::EssentialHub.system.reset_reason
|
.. automethod:: pybricks.hubs::EssentialHub.system.reset_reason
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ MINDSTORMS EV3 Brick
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
.. figure:: ../../main/cad/output/ev3device-ev3.png
|
.. figure:: ../../main/cad/output/ev3device-ev3.png
|
||||||
:height: 15 em
|
:width: 50%
|
||||||
|
|
||||||
.. autoclass:: pybricks.hubs.EV3Brick
|
.. autoclass:: pybricks.hubs.EV3Brick
|
||||||
:no-members:
|
:no-members:
|
||||||
|
|||||||
@@ -18,35 +18,35 @@
|
|||||||
.. pybricks-classlink:: MoveHub
|
.. pybricks-classlink:: MoveHub
|
||||||
|
|
||||||
.. figure:: ../../main/cad/output/hub-move.png
|
.. figure:: ../../main/cad/output/hub-move.png
|
||||||
:width: 30%
|
:width: 40%
|
||||||
:target: movehub.html
|
:target: movehub.html
|
||||||
|
|
||||||
.. pybricks-classlink:: CityHub
|
.. pybricks-classlink:: CityHub
|
||||||
|
|
||||||
.. figure:: ../../main/cad/output/hub-city.png
|
.. figure:: ../../main/cad/output/hub-city.png
|
||||||
:width: 20%
|
:width: 25%
|
||||||
:target: cityhub.html
|
:target: cityhub.html
|
||||||
|
|
||||||
.. pybricks-classlink:: TechnicHub
|
.. pybricks-classlink:: TechnicHub
|
||||||
|
|
||||||
.. figure:: ../../main/cad/output/hub-technic.png
|
.. figure:: ../../main/cad/output/hub-technic.png
|
||||||
:width: 25%
|
:width: 35%
|
||||||
:target: technichub.html
|
:target: technichub.html
|
||||||
|
|
||||||
.. pybricks-classlink:: InventorHub PrimeHub
|
.. pybricks-classlink:: InventorHub PrimeHub
|
||||||
|
|
||||||
.. figure:: ../../main/cad/output/hub-inventor.png
|
.. figure:: ../../main/cad/output/hub-inventor.png
|
||||||
:width: 25%
|
:width: 35%
|
||||||
:target: primehub.html
|
:target: primehub.html
|
||||||
|
|
||||||
.. pybricks-classlink:: PrimeHub
|
.. pybricks-classlink:: PrimeHub
|
||||||
|
|
||||||
.. figure:: ../../main/cad/output/hub-prime.png
|
.. figure:: ../../main/cad/output/hub-prime.png
|
||||||
:width: 25%
|
:width: 35%
|
||||||
:target: primehub.html
|
:target: primehub.html
|
||||||
|
|
||||||
.. pybricks-classlink:: EssentialHub
|
.. pybricks-classlink:: EssentialHub
|
||||||
|
|
||||||
.. figure:: ../../main/cad/output/hub-essential.png
|
.. figure:: ../../main/cad/output/hub-essential.png
|
||||||
:width: 20%
|
:width: 25%
|
||||||
:target: essentialhub.html
|
:target: essentialhub.html
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ Move Hub
|
|||||||
.. _fig_movehub:
|
.. _fig_movehub:
|
||||||
|
|
||||||
.. figure:: ../../main/diagrams/movehub.png
|
.. figure:: ../../main/diagrams/movehub.png
|
||||||
:height: 15 em
|
:width: 100%
|
||||||
|
|
||||||
.. autoclass:: pybricks.hubs.MoveHub
|
.. autoclass:: pybricks.hubs.MoveHub
|
||||||
:no-members:
|
:no-members:
|
||||||
@@ -47,6 +47,10 @@ Move Hub
|
|||||||
|
|
||||||
.. automethod:: pybricks.hubs::MoveHub.system.storage
|
.. automethod:: pybricks.hubs::MoveHub.system.storage
|
||||||
|
|
||||||
|
You can store up to 128 bytes of data on this hub. The data is cleared
|
||||||
|
when you update the Pybricks firmware or if you restore the original
|
||||||
|
firmware.
|
||||||
|
|
||||||
.. automethod:: pybricks.hubs::MoveHub.system.shutdown
|
.. automethod:: pybricks.hubs::MoveHub.system.shutdown
|
||||||
|
|
||||||
.. automethod:: pybricks.hubs::MoveHub.system.reset_reason
|
.. automethod:: pybricks.hubs::MoveHub.system.reset_reason
|
||||||
@@ -95,3 +99,16 @@ Turning the hub off
|
|||||||
|
|
||||||
.. literalinclude::
|
.. literalinclude::
|
||||||
../../../examples/pup/hub_common/build/system_shutdown_movehub.py
|
../../../examples/pup/hub_common/build/system_shutdown_movehub.py
|
||||||
|
|
||||||
|
Making random numbers
|
||||||
|
**************************************************
|
||||||
|
|
||||||
|
The Move Hub does not include the :mod:`urandom` module. If you need random
|
||||||
|
numbers in your application, you can try a variation of the following example.
|
||||||
|
|
||||||
|
To make it work better, change the initial value of ``_rand`` to something
|
||||||
|
that is truly random in your application. You could use the IMU acceleration
|
||||||
|
or a sensor value, for example.
|
||||||
|
|
||||||
|
.. literalinclude::
|
||||||
|
../../../examples/pup/hub_movehub/randint_implementation.py
|
||||||
|
|||||||
@@ -4,12 +4,7 @@ Prime Hub / Inventor Hub
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
.. figure:: ../../main/cad/output/hub-spike-inventor.png
|
.. figure:: ../../main/cad/output/hub-spike-inventor.png
|
||||||
:height: 15 em
|
:width: 80%
|
||||||
|
|
||||||
|
|
||||||
.. 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.
|
|
||||||
|
|
||||||
.. class:: InventorHub
|
.. class:: InventorHub
|
||||||
|
|
||||||
@@ -45,7 +40,7 @@ Prime Hub / Inventor Hub
|
|||||||
|
|
||||||
.. automethod:: pybricks.hubs::PrimeHub.display.pixel
|
.. automethod:: pybricks.hubs::PrimeHub.display.pixel
|
||||||
|
|
||||||
.. automethod:: pybricks.hubs::PrimeHub.display.image
|
.. automethod:: pybricks.hubs::PrimeHub.display.icon
|
||||||
|
|
||||||
.. automethod:: pybricks.hubs::PrimeHub.display.animate
|
.. automethod:: pybricks.hubs::PrimeHub.display.animate
|
||||||
|
|
||||||
@@ -106,6 +101,8 @@ Prime Hub / Inventor Hub
|
|||||||
|
|
||||||
.. automethod:: pybricks.hubs::PrimeHub.system.storage
|
.. automethod:: pybricks.hubs::PrimeHub.system.storage
|
||||||
|
|
||||||
|
You can store up to 512 bytes of data on this hub.
|
||||||
|
|
||||||
.. automethod:: pybricks.hubs::PrimeHub.system.shutdown
|
.. automethod:: pybricks.hubs::PrimeHub.system.shutdown
|
||||||
|
|
||||||
.. automethod:: pybricks.hubs::PrimeHub.system.reset_reason
|
.. automethod:: pybricks.hubs::PrimeHub.system.reset_reason
|
||||||
@@ -177,13 +174,15 @@ Changing the display orientation
|
|||||||
.. literalinclude::
|
.. literalinclude::
|
||||||
../../../examples/pup/hub_primehub/display_orientation_imu.py
|
../../../examples/pup/hub_primehub/display_orientation_imu.py
|
||||||
|
|
||||||
|
.. _make_icons:
|
||||||
|
|
||||||
Making your own images
|
Making your own images
|
||||||
**********************
|
**********************
|
||||||
|
|
||||||
.. literalinclude::
|
.. literalinclude::
|
||||||
../../../examples/pup/hub_primehub/display_matrix.py
|
../../../examples/pup/hub_primehub/display_matrix.py
|
||||||
|
|
||||||
Combining images to make expressions
|
Combining icons to make expressions
|
||||||
************************************
|
************************************
|
||||||
|
|
||||||
.. literalinclude::
|
.. literalinclude::
|
||||||
@@ -253,5 +252,3 @@ Turning the hub off
|
|||||||
.. literalinclude::
|
.. literalinclude::
|
||||||
../../../examples/pup/hub_common/build/system_shutdown_primehub.py
|
../../../examples/pup/hub_common/build/system_shutdown_primehub.py
|
||||||
|
|
||||||
.. _installation instructions: https://pybricks.com/install/
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Technic Hub
|
|||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
.. figure:: ../../main/cad/output/hub-technic.png
|
.. figure:: ../../main/cad/output/hub-technic.png
|
||||||
:height: 15 em
|
:width: 40%
|
||||||
|
|
||||||
.. autoclass:: pybricks.hubs.TechnicHub
|
.. autoclass:: pybricks.hubs.TechnicHub
|
||||||
:no-members:
|
:no-members:
|
||||||
@@ -49,6 +49,10 @@ Technic Hub
|
|||||||
|
|
||||||
.. automethod:: pybricks.hubs::TechnicHub.system.storage
|
.. automethod:: pybricks.hubs::TechnicHub.system.storage
|
||||||
|
|
||||||
|
You can store up to 128 bytes of data on this hub. The data is cleared
|
||||||
|
when you update the Pybricks firmware or if you restore the original
|
||||||
|
firmware.
|
||||||
|
|
||||||
.. automethod:: pybricks.hubs::TechnicHub.system.shutdown
|
.. automethod:: pybricks.hubs::TechnicHub.system.shutdown
|
||||||
|
|
||||||
.. automethod:: pybricks.hubs::TechnicHub.system.reset_reason
|
.. automethod:: pybricks.hubs::TechnicHub.system.reset_reason
|
||||||
|
|||||||
@@ -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
|
Pybricks runs on LEGO® BOOST, City, Technic, MINDSTORMS®, and SPIKE®. You
|
||||||
can code using Windows, Mac, Linux, Chromebook, and Android.
|
can code using Windows, Mac, Linux, Chromebook, and Android.
|
||||||
|
|
||||||
To run Pybricks MicroPython scripts, you must install the Pybricks firmware
|
Click on any device below to see its documentation. Use the menu on the left
|
||||||
on your hub. Check `pybricks.com/install`_ to learn how.
|
to find documentation for additional modules. You may need to click the ☰ icon
|
||||||
|
above to reveal this menu.
|
||||||
|
|
||||||
.. only:: main
|
.. 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
|
.. note:: Are you using LEGO MINDSTORMS EV3? Check out the
|
||||||
`EV3 documentation`_ instead.
|
`EV3 documentation`_ instead.
|
||||||
|
|
||||||
|
.. _EV3 documentation: https://pybricks.com/ev3-micropython/
|
||||||
|
.. _Pybricks website: https://pybricks.com/
|
||||||
|
|
||||||
.. rubric:: Programmable hubs
|
.. rubric:: Programmable hubs
|
||||||
|
|
||||||
.. figure:: ../main/cad/output/hub-all.png
|
.. figure:: ../main/cad/output/hub-all.png
|
||||||
@@ -36,25 +44,11 @@ on your hub. Check `pybricks.com/install`_ to learn how.
|
|||||||
:width: 70 %
|
:width: 70 %
|
||||||
:target: pupdevices/dcmotor.html
|
: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::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
:caption: Table of contents
|
:caption: Table of contents
|
||||||
:hidden:
|
:hidden:
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:maxdepth: 1
|
|
||||||
:caption: Pybricks
|
|
||||||
:hidden:
|
|
||||||
|
|
||||||
Home page <https://pybricks.com>
|
|
||||||
Installation <https://pybricks.com/install/>
|
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
:caption: Pybricks modules
|
:caption: Pybricks modules
|
||||||
@@ -79,7 +73,9 @@ on your hub. Check `pybricks.com/install`_ to learn how.
|
|||||||
micropython/micropython
|
micropython/micropython
|
||||||
micropython/uerrno
|
micropython/uerrno
|
||||||
micropython/uio
|
micropython/uio
|
||||||
|
micropython/ujson
|
||||||
micropython/umath
|
micropython/umath
|
||||||
micropython/urandom
|
micropython/urandom
|
||||||
micropython/uselect
|
micropython/uselect
|
||||||
|
micropython/ustruct
|
||||||
micropython/usys
|
micropython/usys
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
.. pybricks-requirements:: stm32-extra
|
||||||
|
|
||||||
:mod:`micropython` -- MicroPython internals
|
:mod:`micropython` -- MicroPython internals
|
||||||
===========================================
|
===========================================
|
||||||
|
|
||||||
@@ -6,16 +8,20 @@
|
|||||||
|
|
||||||
.. autofunction:: micropython.const
|
.. autofunction:: micropython.const
|
||||||
|
|
||||||
.. autofunction:: micropython.opt_level
|
.. autofunction:: micropython.heap_lock
|
||||||
|
|
||||||
|
.. autofunction:: micropython.heap_unlock
|
||||||
|
|
||||||
|
.. autofunction:: micropython.kbd_intr
|
||||||
|
|
||||||
.. autofunction:: micropython.mem_info
|
.. autofunction:: micropython.mem_info
|
||||||
|
|
||||||
|
.. autofunction:: micropython.opt_level
|
||||||
|
|
||||||
.. autofunction:: micropython.qstr_info
|
.. autofunction:: micropython.qstr_info
|
||||||
|
|
||||||
.. autofunction:: micropython.stack_use
|
.. autofunction:: micropython.stack_use
|
||||||
|
|
||||||
.. autofunction:: micropython.kbd_intr
|
|
||||||
|
|
||||||
|
|
||||||
Examples
|
Examples
|
||||||
---------------------
|
---------------------
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
.. pybricks-requirements:: stm32-extra
|
||||||
|
|
||||||
:mod:`uio` -- Input/output streams
|
:mod:`uio` -- Input/output streams
|
||||||
==================================
|
==================================
|
||||||
|
|
||||||
.. note:: This module is not available on the BOOST Move Hub.
|
|
||||||
|
|
||||||
.. automodule:: uio
|
.. automodule:: uio
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
.. pybricks-requirements:: stm32-extra
|
||||||
|
|
||||||
|
:mod:`ujson` -- JSON encoding and decoding
|
||||||
|
===========================================
|
||||||
|
|
||||||
|
.. automodule:: ujson
|
||||||
|
:no-members:
|
||||||
|
|
||||||
|
.. autofunction:: ujson.dump
|
||||||
|
|
||||||
|
.. autofunction:: ujson.dumps
|
||||||
|
|
||||||
|
.. autofunction:: ujson.load
|
||||||
|
|
||||||
|
.. autofunction:: ujson.loads
|
||||||
@@ -1,4 +1,30 @@
|
|||||||
|
.. pybricks-requirements:: stm32-extra
|
||||||
|
|
||||||
:mod:`urandom` -- Pseudo-random numbers
|
:mod:`urandom` -- Pseudo-random numbers
|
||||||
================================================
|
================================================
|
||||||
|
|
||||||
.. automodule:: urandom
|
.. automodule:: urandom
|
||||||
|
:no-members:
|
||||||
|
|
||||||
|
.. rubric:: Basic random numbers
|
||||||
|
|
||||||
|
.. autofunction:: randint
|
||||||
|
|
||||||
|
.. autofunction:: random
|
||||||
|
|
||||||
|
.. rubric:: Random numbers from a range
|
||||||
|
|
||||||
|
.. autofunction:: getrandbits
|
||||||
|
|
||||||
|
.. autofunction:: randrange
|
||||||
|
|
||||||
|
.. autofunction:: uniform
|
||||||
|
|
||||||
|
.. rubric:: Random elements from a sequence
|
||||||
|
|
||||||
|
.. autofunction:: choice
|
||||||
|
|
||||||
|
.. rubric:: Updating the random seed
|
||||||
|
|
||||||
|
.. autofunction:: seed
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,41 @@
|
|||||||
|
.. pybricks-requirements:: stm32-extra
|
||||||
|
|
||||||
:mod:`uselect` -- Wait for events
|
:mod:`uselect` -- Wait for events
|
||||||
=================================
|
=================================
|
||||||
|
|
||||||
.. automodule:: uselect
|
.. automodule:: uselect
|
||||||
|
:no-members:
|
||||||
|
|
||||||
|
.. rubric:: Poll instance and class
|
||||||
|
|
||||||
|
.. autofunction:: poll
|
||||||
|
|
||||||
|
.. autoclass:: Poll
|
||||||
|
:no-members:
|
||||||
|
|
||||||
|
.. automethod:: register
|
||||||
|
|
||||||
|
.. automethod:: unregister
|
||||||
|
|
||||||
|
.. automethod:: modify
|
||||||
|
|
||||||
|
.. automethod:: poll
|
||||||
|
|
||||||
|
.. automethod:: ipoll
|
||||||
|
|
||||||
|
.. rubric:: Event mask flags
|
||||||
|
|
||||||
|
.. autodata:: POLLIN
|
||||||
|
|
||||||
|
.. autodata:: POLLOUT
|
||||||
|
|
||||||
|
.. autodata:: POLLERR
|
||||||
|
|
||||||
|
.. autodata:: POLLHUP
|
||||||
|
|
||||||
|
Examples
|
||||||
|
---------------
|
||||||
|
|
||||||
|
See the `projects website`_ for a demo that uses this module.
|
||||||
|
|
||||||
|
.. _projects website: https://pybricks.com/projects/tutorials/wireless/hub-to-device/pc-keyboard/
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
.. pybricks-requirements:: stm32-extra
|
||||||
|
|
||||||
|
:mod:`ustruct` -- Pack and unpack binary data
|
||||||
|
====================================================
|
||||||
|
|
||||||
|
.. automodule:: ustruct
|
||||||
|
|
||||||
|
The following byte orders are supported:
|
||||||
|
|
||||||
|
+-----------+------------------------+----------+-----------+
|
||||||
|
| Character | Byte order | Size | Alignment |
|
||||||
|
+===========+========================+==========+===========+
|
||||||
|
| @ | native | native | native |
|
||||||
|
+-----------+------------------------+----------+-----------+
|
||||||
|
| < | little-endian | standard | none |
|
||||||
|
+-----------+------------------------+----------+-----------+
|
||||||
|
| > | big-endian | standard | none |
|
||||||
|
+-----------+------------------------+----------+-----------+
|
||||||
|
| ! | network (= big-endian) | standard | none |
|
||||||
|
+-----------+------------------------+----------+-----------+
|
||||||
|
|
||||||
|
The following data types are supported:
|
||||||
|
|
||||||
|
+--------+--------------------+-------------+---------------+
|
||||||
|
| Format | C Type | Python type | Standard size |
|
||||||
|
+========+====================+=============+===============+
|
||||||
|
| b | signed char | integer | 1 |
|
||||||
|
+--------+--------------------+-------------+---------------+
|
||||||
|
| B | unsigned char | integer | 1 |
|
||||||
|
+--------+--------------------+-------------+---------------+
|
||||||
|
| h | short | integer | 2 |
|
||||||
|
+--------+--------------------+-------------+---------------+
|
||||||
|
| H | unsigned short | integer | 2 |
|
||||||
|
+--------+--------------------+-------------+---------------+
|
||||||
|
| i | int | integer | 4 |
|
||||||
|
+--------+--------------------+-------------+---------------+
|
||||||
|
| I | unsigned int | integer | 4 |
|
||||||
|
+--------+--------------------+-------------+---------------+
|
||||||
|
| l | long | integer (1) | 4 |
|
||||||
|
+--------+--------------------+-------------+---------------+
|
||||||
|
| L | unsigned long | integer (1) | 4 |
|
||||||
|
+--------+--------------------+-------------+---------------+
|
||||||
|
| q | long long | integer (1) | 8 |
|
||||||
|
+--------+--------------------+-------------+---------------+
|
||||||
|
| Q | unsigned long long | integer (1) | 8 |
|
||||||
|
+--------+--------------------+-------------+---------------+
|
||||||
|
| f | float | float | 4 |
|
||||||
|
+--------+--------------------+-------------+---------------+
|
||||||
|
| d | double | float | 8 |
|
||||||
|
+--------+--------------------+-------------+---------------+
|
||||||
|
| s | char[] | bytes | |
|
||||||
|
+--------+--------------------+-------------+---------------+
|
||||||
|
| P | void * | integer | |
|
||||||
|
+--------+--------------------+-------------+---------------+
|
||||||
|
|
||||||
|
- \(1\) Supports values up to +/-1073741823
|
||||||
@@ -5,6 +5,8 @@
|
|||||||
|
|
||||||
This MicroPython module is a subset of the `sys module`_ in Python.
|
This MicroPython module is a subset of the `sys module`_ in Python.
|
||||||
|
|
||||||
|
.. rubric:: Input and output streams
|
||||||
|
|
||||||
.. module:: usys
|
.. module:: usys
|
||||||
|
|
||||||
.. autodata:: usys.stdin
|
.. autodata:: usys.stdin
|
||||||
@@ -16,4 +18,37 @@ This MicroPython module is a subset of the `sys module`_ in Python.
|
|||||||
.. autodata:: usys.stderr
|
.. autodata:: usys.stderr
|
||||||
:annotation:
|
:annotation:
|
||||||
|
|
||||||
|
.. rubric:: Version info
|
||||||
|
|
||||||
|
.. autodata:: implementation
|
||||||
|
:annotation:
|
||||||
|
|
||||||
|
.. autodata:: version
|
||||||
|
:annotation:
|
||||||
|
|
||||||
|
.. autodata:: version_info
|
||||||
|
:annotation:
|
||||||
|
|
||||||
|
Examples
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Version information
|
||||||
|
*******************************
|
||||||
|
|
||||||
|
.. literalinclude::
|
||||||
|
../../../examples/micropython/usys/pybricks_version.py
|
||||||
|
|
||||||
|
.. literalinclude::
|
||||||
|
../../../examples/micropython/usys/micropython_version.py
|
||||||
|
|
||||||
|
Standard input and output
|
||||||
|
*******************************
|
||||||
|
|
||||||
|
The ``stdin`` stream can be used to capture input via the Pybricks Code
|
||||||
|
input/output window. See the `keyboard input`_ project to learn how this works.
|
||||||
|
This approach can be extended to exchange data with any `other device`_ as well.
|
||||||
|
|
||||||
|
.. _keyboard input: https://pybricks.com/projects/tutorials/wireless/hub-to-device/pc-keyboard/
|
||||||
|
.. _other device: https://pybricks.com/projects/tutorials/wireless/hub-to-device/
|
||||||
|
|
||||||
.. _sys module: https://docs.python.org/3.5/library/sys.html
|
.. _sys module: https://docs.python.org/3.5/library/sys.html
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
.. pybricks-requirements:: light-matrix
|
||||||
|
|
||||||
|
Icon
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. autoclass:: pybricks.parameters.Icon
|
||||||
|
|
||||||
|
See the :ref:`make_icons` section for examples.
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
button
|
button
|
||||||
color
|
color
|
||||||
direction
|
direction
|
||||||
|
icon
|
||||||
port
|
port
|
||||||
side
|
side
|
||||||
stop
|
stop
|
||||||
@@ -23,6 +24,8 @@
|
|||||||
|
|
||||||
.. pybricks-classlink:: Direction
|
.. pybricks-classlink:: Direction
|
||||||
|
|
||||||
|
.. pybricks-classlink:: Icon
|
||||||
|
|
||||||
.. pybricks-classlink:: Port
|
.. pybricks-classlink:: Port
|
||||||
|
|
||||||
.. pybricks-classlink:: Side
|
.. pybricks-classlink:: Side
|
||||||
|
|||||||
@@ -34,29 +34,33 @@ Side
|
|||||||
**Prime Hub**
|
**Prime Hub**
|
||||||
|
|
||||||
.. figure:: ../../main/diagrams/orientation_primehub.png
|
.. figure:: ../../main/diagrams/orientation_primehub.png
|
||||||
:height: 17 em
|
:width: 60%
|
||||||
|
|
||||||
**Inventor Hub**
|
**Inventor Hub**
|
||||||
|
|
||||||
.. figure:: ../../main/diagrams/orientation_inventorhub.png
|
.. figure:: ../../main/diagrams/orientation_inventorhub.png
|
||||||
:height: 17 em
|
:width: 60%
|
||||||
|
|
||||||
**Essential Hub**
|
**Essential Hub**
|
||||||
|
|
||||||
.. figure:: ../../main/diagrams/orientation_essentialhub.png
|
.. figure:: ../../main/diagrams/orientation_essentialhub.png
|
||||||
:height: 17 em
|
:width: 60%
|
||||||
|
|
||||||
**Move Hub**
|
**Move Hub**
|
||||||
|
|
||||||
.. figure:: ../../main/diagrams/orientation_movehub.png
|
.. figure:: ../../main/diagrams/orientation_movehub.png
|
||||||
:height: 17 em
|
:width: 60%
|
||||||
|
|
||||||
**Technic Hub**
|
**Technic Hub**
|
||||||
|
|
||||||
.. figure:: ../../main/diagrams/orientation_technichub.png
|
.. figure:: ../../main/diagrams/orientation_technichub.png
|
||||||
:height: 17 em
|
:width: 60%
|
||||||
|
|
||||||
|
.. versionchanged:: 3.2
|
||||||
|
|
||||||
|
Changed which side is the front.
|
||||||
|
|
||||||
**Tilt Sensor**
|
**Tilt Sensor**
|
||||||
|
|
||||||
.. figure:: ../../main/diagrams/orientation_tiltsensor.png
|
.. figure:: ../../main/diagrams/orientation_tiltsensor.png
|
||||||
:height: 17 em
|
:width: 50%
|
||||||
|
|||||||
@@ -10,14 +10,20 @@ Stop
|
|||||||
.. autoattribute:: pybricks.parameters.Stop.COAST
|
.. autoattribute:: pybricks.parameters.Stop.COAST
|
||||||
:annotation:
|
:annotation:
|
||||||
|
|
||||||
|
.. autoattribute:: pybricks.parameters.Stop.COAST_SMART
|
||||||
|
:annotation:
|
||||||
|
|
||||||
.. autoattribute:: pybricks.parameters.Stop.BRAKE
|
.. autoattribute:: pybricks.parameters.Stop.BRAKE
|
||||||
:annotation:
|
:annotation:
|
||||||
|
|
||||||
.. autoattribute:: pybricks.parameters.Stop.HOLD
|
.. autoattribute:: pybricks.parameters.Stop.HOLD
|
||||||
:annotation:
|
:annotation:
|
||||||
|
|
||||||
The following table shows how each stop type adds an extra level of
|
.. autoattribute:: pybricks.parameters.Stop.NONE
|
||||||
resistance to motion. In these examples, ``m`` is a
|
:annotation:
|
||||||
|
|
||||||
|
The following table shows how each of the basic stop types add an extra
|
||||||
|
level of resistance to motion. In these examples, ``m`` is a
|
||||||
:class:`Motor <pybricks.pupdevices.Motor>` and
|
:class:`Motor <pybricks.pupdevices.Motor>` and
|
||||||
and ``d`` is a :class:`DriveBase <pybricks.robotics.DriveBase>`. The
|
and ``d`` is a :class:`DriveBase <pybricks.robotics.DriveBase>`. The
|
||||||
examples also show how running at zero speed compares to these stop types.
|
examples also show how running at zero speed compares to these stop types.
|
||||||
|
|||||||
@@ -24,6 +24,10 @@ Motors with rotation sensors
|
|||||||
|
|
||||||
.. automethod:: pybricks.pupdevices.Motor.reset_angle
|
.. automethod:: pybricks.pupdevices.Motor.reset_angle
|
||||||
|
|
||||||
|
.. automethod:: pybricks.pupdevices.Motor.load
|
||||||
|
|
||||||
|
.. automethod:: pybricks.pupdevices.Motor.stalled
|
||||||
|
|
||||||
.. rubric:: Stopping
|
.. rubric:: Stopping
|
||||||
|
|
||||||
.. automethod:: pybricks.pupdevices.Motor.stop
|
.. automethod:: pybricks.pupdevices.Motor.stop
|
||||||
@@ -32,10 +36,14 @@ Motors with rotation sensors
|
|||||||
|
|
||||||
.. automethod:: pybricks.pupdevices.Motor.hold
|
.. automethod:: pybricks.pupdevices.Motor.hold
|
||||||
|
|
||||||
.. rubric:: Action
|
.. rubric:: Running forever
|
||||||
|
|
||||||
.. automethod:: pybricks.pupdevices.Motor.run
|
.. automethod:: pybricks.pupdevices.Motor.run
|
||||||
|
|
||||||
|
.. automethod:: pybricks.pupdevices.Motor.dc
|
||||||
|
|
||||||
|
.. rubric:: Running by a fixed amount
|
||||||
|
|
||||||
.. automethod:: pybricks.pupdevices.Motor.run_time
|
.. automethod:: pybricks.pupdevices.Motor.run_time
|
||||||
|
|
||||||
.. automethod:: pybricks.pupdevices.Motor.run_angle
|
.. automethod:: pybricks.pupdevices.Motor.run_angle
|
||||||
@@ -46,11 +54,33 @@ Motors with rotation sensors
|
|||||||
|
|
||||||
.. automethod:: pybricks.pupdevices.Motor.run_until_stalled
|
.. automethod:: pybricks.pupdevices.Motor.run_until_stalled
|
||||||
|
|
||||||
.. automethod:: pybricks.pupdevices.Motor.dc
|
.. automethod:: pybricks.pupdevices.Motor.done
|
||||||
|
|
||||||
.. _settings:
|
.. _settings:
|
||||||
|
|
||||||
.. rubric:: Motor status
|
.. rubric:: Motor settings
|
||||||
|
|
||||||
|
.. automethod:: pybricks.pupdevices.Motor.settings
|
||||||
|
|
||||||
|
.. rubric:: Control settings
|
||||||
|
|
||||||
|
.. pybricks-requirements:: pybricks-common-control
|
||||||
|
|
||||||
|
.. automethod:: pybricks.pupdevices.Motor.control.limits
|
||||||
|
|
||||||
|
.. pybricks-requirements:: pybricks-common-control
|
||||||
|
|
||||||
|
.. automethod:: pybricks.pupdevices.Motor.control.pid
|
||||||
|
|
||||||
|
.. pybricks-requirements:: pybricks-common-control
|
||||||
|
|
||||||
|
.. automethod:: pybricks.pupdevices.Motor.control.target_tolerances
|
||||||
|
|
||||||
|
.. pybricks-requirements:: pybricks-common-control
|
||||||
|
|
||||||
|
.. automethod:: pybricks.pupdevices.Motor.control.stall_tolerances
|
||||||
|
|
||||||
|
.. pybricks-requirements:: pybricks-common-control
|
||||||
|
|
||||||
.. attribute:: control.scale
|
.. attribute:: control.scale
|
||||||
|
|
||||||
@@ -58,27 +88,10 @@ Motors with rotation sensors
|
|||||||
output of the gear train. This is the gear ratio determined from the
|
output of the gear train. This is the gear ratio determined from the
|
||||||
``gears`` argument when initializing the motor.
|
``gears`` argument when initializing the motor.
|
||||||
|
|
||||||
.. automethod:: pybricks.pupdevices.Motor.control.done
|
.. versionchanged:: 3.2
|
||||||
|
|
||||||
.. automethod:: pybricks.pupdevices.Motor.control.stalled
|
The :meth:`done`, :meth:`stalled` and :meth:`load` methods have been
|
||||||
|
moved.
|
||||||
.. automethod:: pybricks.pupdevices.Motor.control.load
|
|
||||||
|
|
||||||
.. rubric:: Motor settings
|
|
||||||
|
|
||||||
You can only change these settings while the controller is stopped. For
|
|
||||||
example, you can change them at the start of your program. Alternatively,
|
|
||||||
first call :meth:`stop() <pybricks.pupdevices.Motor.stop>`, and then change the settings.
|
|
||||||
|
|
||||||
.. automethod:: pybricks.pupdevices.Motor.settings
|
|
||||||
|
|
||||||
.. automethod:: pybricks.pupdevices.Motor.control.limits
|
|
||||||
|
|
||||||
.. automethod:: pybricks.pupdevices.Motor.control.pid
|
|
||||||
|
|
||||||
.. automethod:: pybricks.pupdevices.Motor.control.target_tolerances
|
|
||||||
|
|
||||||
.. automethod:: pybricks.pupdevices.Motor.control.stall_tolerances
|
|
||||||
|
|
||||||
Initialization examples
|
Initialization examples
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
.. autoclass:: pybricks.robotics.DriveBase
|
.. autoclass:: pybricks.robotics.DriveBase
|
||||||
:no-members:
|
:no-members:
|
||||||
|
|
||||||
.. rubric:: Driving for a given distance or by an angle
|
.. rubric:: Driving by a given distance or angle
|
||||||
|
|
||||||
Use the following commands to drive a given distance, or turn by a
|
Use the following commands to drive a given distance, or turn by a
|
||||||
given angle.
|
given angle.
|
||||||
@@ -26,6 +26,8 @@
|
|||||||
|
|
||||||
.. automethod:: pybricks.robotics.DriveBase.settings
|
.. automethod:: pybricks.robotics.DriveBase.settings
|
||||||
|
|
||||||
|
.. automethod:: pybricks.robotics.DriveBase.done
|
||||||
|
|
||||||
.. rubric:: Drive forever
|
.. rubric:: Drive forever
|
||||||
|
|
||||||
Use :meth:`.drive` to begin driving at a desired speed and steering.
|
Use :meth:`.drive` to begin driving at a desired speed and steering.
|
||||||
@@ -48,6 +50,10 @@
|
|||||||
|
|
||||||
.. automethod:: pybricks.robotics.DriveBase.reset
|
.. automethod:: pybricks.robotics.DriveBase.reset
|
||||||
|
|
||||||
|
.. automethod:: pybricks.robotics.DriveBase.stalled
|
||||||
|
|
||||||
|
.. _measuring:
|
||||||
|
|
||||||
.. rubric:: Measuring and validating the robot dimensions
|
.. rubric:: Measuring and validating the robot dimensions
|
||||||
|
|
||||||
As a first estimate, you can measure the ``wheel_diameter`` and the
|
As a first estimate, you can measure the ``wheel_diameter`` and the
|
||||||
@@ -55,6 +61,11 @@
|
|||||||
effectively touch the ground, you can estimate the ``axle_track`` as
|
effectively touch the ground, you can estimate the ``axle_track`` as
|
||||||
the distance between the midpoint of the wheels.
|
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.
|
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)``
|
To verify, make your robot drive 1000 mm using ``my_robot.straight(1000)``
|
||||||
and measure how far it really traveled. Compensate as follows:
|
and measure how far it really traveled. Compensate as follows:
|
||||||
@@ -80,15 +91,11 @@
|
|||||||
|
|
||||||
.. rubric:: Using the DriveBase motors individually
|
.. rubric:: Using the DriveBase motors individually
|
||||||
|
|
||||||
Suppose you make a :class:`.DriveBase` object using two ``Motor`` objects called
|
After creating a :class:`.DriveBase` object, you can still use its two
|
||||||
``left_motor`` and ``right_motor``. You **cannot** use these motors
|
motors individually. If you start one motor, the other motor will
|
||||||
individually while the DriveBase is **active**.
|
automatically stop. Likewise, if a motor is already running and you make
|
||||||
|
the drive base move, the original maneuver is cancelled and the drive base
|
||||||
The DriveBase is active if it is driving, but also when it is actively
|
will take over.
|
||||||
holding the wheels in place after a :meth:`.straight` or
|
|
||||||
:meth:`.turn` command.
|
|
||||||
To deactivate the :class:`.DriveBase`, call :meth:`.stop`.
|
|
||||||
|
|
||||||
|
|
||||||
.. rubric:: Advanced settings
|
.. rubric:: Advanced settings
|
||||||
|
|
||||||
@@ -104,3 +111,16 @@
|
|||||||
|
|
||||||
.. autoattribute:: pybricks.robotics.DriveBase.heading_control
|
.. autoattribute:: pybricks.robotics.DriveBase.heading_control
|
||||||
:annotation:
|
:annotation:
|
||||||
|
|
||||||
|
.. versionchanged:: 3.2
|
||||||
|
|
||||||
|
The :meth:`done` and :meth:`stalled` methods have been moved.
|
||||||
|
|
||||||
|
Examples
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Driving straight and turning in place
|
||||||
|
**********************************************
|
||||||
|
|
||||||
|
.. literalinclude::
|
||||||
|
../../examples/pup/robotics/drivebase_basics.py
|
||||||
|
|||||||
@@ -260,5 +260,3 @@ Fahrenheit (°F) or Kelvin (K), you can use the following conversion formulas:
|
|||||||
hue: deg
|
hue: deg
|
||||||
--------------
|
--------------
|
||||||
Hue of a color (0-359 degrees).
|
Hue of a color (0-359 degrees).
|
||||||
|
|
||||||
TODO: diagram
|
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
import usys
|
||||||
|
|
||||||
|
# ('micropython', (1, 19, 1), 'SPIKE Essential Hub with STM32F413RG', 6)
|
||||||
|
print(usys.implementation)
|
||||||
|
|
||||||
|
# '3.4.0; Pybricks MicroPython v3.2.0b5 on 2022-11-11'
|
||||||
|
print(usys.version)
|
||||||
|
|
||||||
|
# (3, 4, 0)
|
||||||
|
print(usys.version_info)
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
from pybricks import version
|
||||||
|
|
||||||
|
# ('essentialhub', '3.2.0b5', 'v3.2.0b5 on 2022-11-11')
|
||||||
|
print(version)
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
from pybricks.hubs import MoveHub
|
||||||
|
|
||||||
|
# Initialize the hub.
|
||||||
|
hub = MoveHub()
|
||||||
|
|
||||||
|
# Initialize "random" seed.
|
||||||
|
_rand = hub.battery.voltage() + hub.battery.current()
|
||||||
|
|
||||||
|
|
||||||
|
# Return a random integer N such that a <= N <= b.
|
||||||
|
def randint(a, b):
|
||||||
|
global _rand
|
||||||
|
_rand = 75 * _rand % 65537 # Lehmer
|
||||||
|
return _rand * (b - a + 1) // 65537 + a
|
||||||
|
|
||||||
|
|
||||||
|
# Generate a few example numbers.
|
||||||
|
for i in range(5):
|
||||||
|
print(randint(0, 1000))
|
||||||
@@ -12,7 +12,7 @@ while not any(pressed):
|
|||||||
wait(10)
|
wait(10)
|
||||||
|
|
||||||
# Display a circle.
|
# Display a circle.
|
||||||
hub.display.image(Icon.CIRCLE)
|
hub.display.icon(Icon.CIRCLE)
|
||||||
|
|
||||||
# Wait for all buttons to be released.
|
# Wait for all buttons to be released.
|
||||||
while any(hub.buttons.pressed()):
|
while any(hub.buttons.pressed()):
|
||||||
@@ -20,10 +20,10 @@ while any(hub.buttons.pressed()):
|
|||||||
|
|
||||||
# Display an arrow to indicate which button was pressed.
|
# Display an arrow to indicate which button was pressed.
|
||||||
if Button.LEFT in pressed:
|
if Button.LEFT in pressed:
|
||||||
hub.display.image(Icon.ARROW_LEFT_DOWN)
|
hub.display.icon(Icon.ARROW_LEFT_DOWN)
|
||||||
elif Button.RIGHT in pressed:
|
elif Button.RIGHT in pressed:
|
||||||
hub.display.image(Icon.ARROW_RIGHT_DOWN)
|
hub.display.icon(Icon.ARROW_RIGHT_DOWN)
|
||||||
elif Button.BLUETOOTH in pressed:
|
elif Button.BLUETOOTH in pressed:
|
||||||
hub.display.image(Icon.ARROW_RIGHT_UP)
|
hub.display.icon(Icon.ARROW_RIGHT_UP)
|
||||||
|
|
||||||
wait(3000)
|
wait(3000)
|
||||||
|
|||||||
@@ -24,11 +24,9 @@ while True:
|
|||||||
|
|
||||||
for i in range(3):
|
for i in range(3):
|
||||||
# Display eyes open plus the random brows.
|
# Display eyes open plus the random brows.
|
||||||
hub.display.image(Icon.EYE_LEFT + Icon.EYE_RIGHT + brows)
|
hub.display.icon(Icon.EYE_LEFT + Icon.EYE_RIGHT + brows)
|
||||||
wait(2000)
|
wait(2000)
|
||||||
|
|
||||||
# Display eyes blinked plus the random brows.
|
# Display eyes blinked plus the random brows.
|
||||||
hub.display.image(
|
hub.display.icon(Icon.EYE_LEFT_BLINK * 0.7 + Icon.EYE_RIGHT_BLINK * 0.7 + brows)
|
||||||
Icon.EYE_LEFT_BLINK * 0.7 + Icon.EYE_RIGHT_BLINK * 0.7 + brows
|
|
||||||
)
|
|
||||||
wait(200)
|
wait(200)
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ from pybricks.parameters import Icon
|
|||||||
hub = PrimeHub()
|
hub = PrimeHub()
|
||||||
|
|
||||||
# Display a big arrow pointing up.
|
# Display a big arrow pointing up.
|
||||||
hub.display.image(Icon.UP)
|
hub.display.icon(Icon.UP)
|
||||||
|
|
||||||
# Wait so we can see what is displayed.
|
# Wait so we can see what is displayed.
|
||||||
wait(2000)
|
wait(2000)
|
||||||
|
|
||||||
# Display a heart at half brightness.
|
# Display a heart at half brightness.
|
||||||
hub.display.image(Icon.HEART / 2)
|
hub.display.icon(Icon.HEART / 2)
|
||||||
|
|
||||||
# Wait so we can see what is displayed.
|
# Wait so we can see what is displayed.
|
||||||
wait(2000)
|
wait(2000)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ SQUARE = Matrix(
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Display the square.
|
# Display the square.
|
||||||
hub.display.image(SQUARE)
|
hub.display.icon(SQUARE)
|
||||||
wait(3000)
|
wait(3000)
|
||||||
|
|
||||||
# Make an image using a Python list comprehension. In this image, the
|
# Make an image using a Python list comprehension. In this image, the
|
||||||
@@ -26,5 +26,5 @@ wait(3000)
|
|||||||
GRADIENT = Matrix([[(r + c) for c in range(5)] for r in range(5)]) * 12.5
|
GRADIENT = Matrix([[(r + c) for c in range(5)] for r in range(5)]) * 12.5
|
||||||
|
|
||||||
# Display the generated gradient.
|
# Display the generated gradient.
|
||||||
hub.display.image(GRADIENT)
|
hub.display.icon(GRADIENT)
|
||||||
wait(3000)
|
wait(3000)
|
||||||
|
|||||||
@@ -14,6 +14,6 @@ while True:
|
|||||||
hub.display.orientation(up_side)
|
hub.display.orientation(up_side)
|
||||||
|
|
||||||
# Display something, like an arrow.
|
# Display something, like an arrow.
|
||||||
hub.display.image(Icon.UP)
|
hub.display.icon(Icon.UP)
|
||||||
|
|
||||||
wait(10)
|
wait(10)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ gripper_motor.run_angle(200, 720, wait=False)
|
|||||||
|
|
||||||
# While one or both of the motors are not done yet,
|
# While one or both of the motors are not done yet,
|
||||||
# do something else. In this example, just wait.
|
# do something else. In this example, just wait.
|
||||||
while not track_motor.control.done() or not gripper_motor.control.done():
|
while not track_motor.done() or not gripper_motor.done():
|
||||||
wait(10)
|
wait(10)
|
||||||
|
|
||||||
print("Both motors are done!")
|
print("Both motors are done!")
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
from pybricks.pupdevices import Motor
|
||||||
|
from pybricks.parameters import Port, Direction
|
||||||
|
from pybricks.robotics import DriveBase
|
||||||
|
|
||||||
|
# Initialize both motors. In this example, the motor on the
|
||||||
|
# left must turn counterclockwise to make the robot go forward.
|
||||||
|
left_motor = Motor(Port.A, Direction.COUNTERCLOCKWISE)
|
||||||
|
right_motor = Motor(Port.B)
|
||||||
|
|
||||||
|
# Initialize the drive base. In this example, the wheel diameter is 56mm.
|
||||||
|
# The distance between the two wheel-ground contact points is 112mm.
|
||||||
|
drive_base = DriveBase(left_motor, right_motor, wheel_diameter=56, axle_track=112)
|
||||||
|
|
||||||
|
# Drive forward by 500mm (half a meter).
|
||||||
|
drive_base.straight(500)
|
||||||
|
|
||||||
|
# Turn around clockwise (180 degrees)
|
||||||
|
drive_base.turn(180)
|
||||||
|
|
||||||
|
# Drive forward again to drive back.
|
||||||
|
drive_base.straight(500)
|
||||||
|
|
||||||
|
# Turn around counterclockwise.
|
||||||
|
drive_base.turn(-180)
|
||||||
@@ -4,6 +4,24 @@
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
## 1.5.0 - 2022-12-02
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Added `ujson` and `ustruct` modules.
|
||||||
|
|
||||||
|
## 1.4.0 - 2022-12-02
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Updated `pybricks` package to v3.2.0b6.
|
||||||
|
|
||||||
|
## 1.3.0 - 2022-11-11
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Updated `pybricks` package to v3.2.0b5.
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Fixed code completion for `Color` and `Icon` classes in `pybricks.parameters`.
|
||||||
|
|
||||||
## 1.2.0 - 2022-10-21
|
## 1.2.0 - 2022-10-21
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@@ -1,39 +1,31 @@
|
|||||||
[[package]]
|
|
||||||
name = "atomicwrites"
|
|
||||||
version = "1.4.0"
|
|
||||||
description = "Atomic file writes."
|
|
||||||
category = "dev"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "attrs"
|
name = "attrs"
|
||||||
version = "21.4.0"
|
version = "22.1.0"
|
||||||
description = "Classes Without Boilerplate"
|
description = "Classes Without Boilerplate"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
python-versions = ">=3.5"
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six", "sphinx", "sphinx-notfound-page", "zope.interface"]
|
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"]
|
docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"]
|
||||||
tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six", "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", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six"]
|
tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "black"
|
name = "black"
|
||||||
version = "22.3.0"
|
version = "22.10.0"
|
||||||
description = "The uncompromising code formatter."
|
description = "The uncompromising code formatter."
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6.2"
|
python-versions = ">=3.7"
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
click = ">=8.0.0"
|
click = ">=8.0.0"
|
||||||
mypy-extensions = ">=0.4.3"
|
mypy-extensions = ">=0.4.3"
|
||||||
pathspec = ">=0.9.0"
|
pathspec = ">=0.9.0"
|
||||||
platformdirs = ">=2"
|
platformdirs = ">=2"
|
||||||
tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
|
tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""}
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
colorama = ["colorama (>=0.4.3)"]
|
colorama = ["colorama (>=0.4.3)"]
|
||||||
@@ -54,11 +46,11 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "colorama"
|
name = "colorama"
|
||||||
version = "0.4.5"
|
version = "0.4.6"
|
||||||
description = "Cross-platform colored terminal text."
|
description = "Cross-platform colored terminal text."
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "docstring-parser"
|
name = "docstring-parser"
|
||||||
@@ -68,6 +60,17 @@ category = "main"
|
|||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6,<4.0"
|
python-versions = ">=3.6,<4.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "exceptiongroup"
|
||||||
|
version = "1.0.4"
|
||||||
|
description = "Backport of PEP 654 (exception groups)"
|
||||||
|
category = "dev"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.7"
|
||||||
|
|
||||||
|
[package.extras]
|
||||||
|
test = ["pytest (>=6)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "flake8"
|
name = "flake8"
|
||||||
version = "4.0.1"
|
version = "4.0.1"
|
||||||
@@ -145,23 +148,23 @@ testing = ["docopt", "pytest (<6.0.0)"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pathspec"
|
name = "pathspec"
|
||||||
version = "0.9.0"
|
version = "0.10.2"
|
||||||
description = "Utility library for gitignore style pattern matching of file paths."
|
description = "Utility library for gitignore style pattern matching of file paths."
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
|
python-versions = ">=3.7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "platformdirs"
|
name = "platformdirs"
|
||||||
version = "2.5.2"
|
version = "2.5.4"
|
||||||
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx (>=4)", "sphinx-autodoc-typehints (>=1.12)"]
|
docs = ["furo (>=2022.9.29)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.4)"]
|
||||||
test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"]
|
test = ["appdirs (==1.4.4)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pluggy"
|
name = "pluggy"
|
||||||
@@ -175,17 +178,9 @@ python-versions = ">=3.6"
|
|||||||
dev = ["pre-commit", "tox"]
|
dev = ["pre-commit", "tox"]
|
||||||
testing = ["pytest", "pytest-benchmark"]
|
testing = ["pytest", "pytest-benchmark"]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "py"
|
|
||||||
version = "1.11.0"
|
|
||||||
description = "library with cross-python path, ini-parsing, io, code, log facilities"
|
|
||||||
category = "dev"
|
|
||||||
optional = false
|
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pybricks"
|
name = "pybricks"
|
||||||
version = "3.2.0b4"
|
version = "3.2.0b6"
|
||||||
description = "Documentation and user-API stubs for Pybricks MicroPython"
|
description = "Documentation and user-API stubs for Pybricks MicroPython"
|
||||||
category = "main"
|
category = "main"
|
||||||
optional = false
|
optional = false
|
||||||
@@ -225,21 +220,20 @@ diagrams = ["jinja2", "railroad-diagrams"]
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pytest"
|
name = "pytest"
|
||||||
version = "7.1.2"
|
version = "7.2.0"
|
||||||
description = "pytest: simple powerful testing with Python"
|
description = "pytest: simple powerful testing with Python"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.7"
|
python-versions = ">=3.7"
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
|
|
||||||
attrs = ">=19.2.0"
|
attrs = ">=19.2.0"
|
||||||
colorama = {version = "*", markers = "sys_platform == \"win32\""}
|
colorama = {version = "*", markers = "sys_platform == \"win32\""}
|
||||||
|
exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
|
||||||
iniconfig = "*"
|
iniconfig = "*"
|
||||||
packaging = "*"
|
packaging = "*"
|
||||||
pluggy = ">=0.12,<2.0"
|
pluggy = ">=0.12,<2.0"
|
||||||
py = ">=1.8.2"
|
tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
|
||||||
tomli = ">=1.0.0"
|
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"]
|
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"]
|
||||||
@@ -263,54 +257,52 @@ python-versions = ">=3.7"
|
|||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "1.1"
|
lock-version = "1.1"
|
||||||
python-versions = ">= 3.10, < 3.11"
|
python-versions = ">= 3.10, < 3.11"
|
||||||
content-hash = "f3cd92de360fc68d8bc8ad0999eb5d0591e7f33dc5f20a32409b3787cac71965"
|
content-hash = "a0626d7e1cf972e4716f8122865c1d4b6355e1a5104b6f538da2c1cb44ba792c"
|
||||||
|
|
||||||
[metadata.files]
|
[metadata.files]
|
||||||
atomicwrites = [
|
|
||||||
{file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"},
|
|
||||||
{file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
|
|
||||||
]
|
|
||||||
attrs = [
|
attrs = [
|
||||||
{file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"},
|
{file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"},
|
||||||
{file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"},
|
{file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"},
|
||||||
]
|
]
|
||||||
black = [
|
black = [
|
||||||
{file = "black-22.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09"},
|
{file = "black-22.10.0-1fixedarch-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:5cc42ca67989e9c3cf859e84c2bf014f6633db63d1cbdf8fdb666dcd9e77e3fa"},
|
||||||
{file = "black-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb"},
|
{file = "black-22.10.0-1fixedarch-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5d8f74030e67087b219b032aa33a919fae8806d49c867846bfacde57f43972ef"},
|
||||||
{file = "black-22.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3556168e2e5c49629f7b0f377070240bd5511e45e25a4497bb0073d9dda776a"},
|
{file = "black-22.10.0-1fixedarch-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:197df8509263b0b8614e1df1756b1dd41be6738eed2ba9e9769f3880c2b9d7b6"},
|
||||||
{file = "black-22.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67c8301ec94e3bcc8906740fe071391bce40a862b7be0b86fb5382beefecd968"},
|
{file = "black-22.10.0-1fixedarch-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:2644b5d63633702bc2c5f3754b1b475378fbbfb481f62319388235d0cd104c2d"},
|
||||||
{file = "black-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:fd57160949179ec517d32ac2ac898b5f20d68ed1a9c977346efbac9c2f1e779d"},
|
{file = "black-22.10.0-1fixedarch-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:e41a86c6c650bcecc6633ee3180d80a025db041a8e2398dcc059b3afa8382cd4"},
|
||||||
{file = "black-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc1e1de68c8e5444e8f94c3670bb48a2beef0e91dddfd4fcc29595ebd90bb9ce"},
|
{file = "black-22.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2039230db3c6c639bd84efe3292ec7b06e9214a2992cd9beb293d639c6402edb"},
|
||||||
{file = "black-22.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2fc92002d44746d3e7db7cf9313cf4452f43e9ea77a2c939defce3b10b5c82"},
|
{file = "black-22.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ff67aec0a47c424bc99b71005202045dc09270da44a27848d534600ac64fc7"},
|
||||||
{file = "black-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a6342964b43a99dbc72f72812bf88cad8f0217ae9acb47c0d4f141a6416d2d7b"},
|
{file = "black-22.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:819dc789f4498ecc91438a7de64427c73b45035e2e3680c92e18795a839ebb66"},
|
||||||
{file = "black-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:328efc0cc70ccb23429d6be184a15ce613f676bdfc85e5fe8ea2a9354b4e9015"},
|
{file = "black-22.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b9b29da4f564ba8787c119f37d174f2b69cdfdf9015b7d8c5c16121ddc054ae"},
|
||||||
{file = "black-22.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06f9d8846f2340dfac80ceb20200ea5d1b3f181dd0556b47af4e8e0b24fa0a6b"},
|
{file = "black-22.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b49776299fece66bffaafe357d929ca9451450f5466e997a7285ab0fe28e3b"},
|
||||||
{file = "black-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4efa5fad66b903b4a5f96d91461d90b9507a812b3c5de657d544215bb7877a"},
|
{file = "black-22.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:21199526696b8f09c3997e2b4db8d0b108d801a348414264d2eb8eb2532e540d"},
|
||||||
{file = "black-22.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8477ec6bbfe0312c128e74644ac8a02ca06bcdb8982d4ee06f209be28cdf163"},
|
{file = "black-22.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e464456d24e23d11fced2bc8c47ef66d471f845c7b7a42f3bd77bf3d1789650"},
|
||||||
{file = "black-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:637a4014c63fbf42a692d22b55d8ad6968a946b4a6ebc385c5505d9625b6a464"},
|
{file = "black-22.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9311e99228ae10023300ecac05be5a296f60d2fd10fff31cf5c1fa4ca4b1988d"},
|
||||||
{file = "black-22.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:863714200ada56cbc366dc9ae5291ceb936573155f8bf8e9de92aef51f3ad0f0"},
|
{file = "black-22.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fba8a281e570adafb79f7755ac8721b6cf1bbf691186a287e990c7929c7692ff"},
|
||||||
{file = "black-22.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dbe6e6d2988049b4655b2b739f98785a884d4d6b85bc35133a8fb9a2233176"},
|
{file = "black-22.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:915ace4ff03fdfff953962fa672d44be269deb2eaf88499a0f8805221bc68c87"},
|
||||||
{file = "black-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:cee3e11161dde1b2a33a904b850b0899e0424cc331b7295f2a9698e79f9a69a0"},
|
{file = "black-22.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:444ebfb4e441254e87bad00c661fe32df9969b2bf224373a448d8aca2132b395"},
|
||||||
{file = "black-22.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5891ef8abc06576985de8fa88e95ab70641de6c1fca97e2a15820a9b69e51b20"},
|
{file = "black-22.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:974308c58d057a651d182208a484ce80a26dac0caef2895836a92dd6ebd725e0"},
|
||||||
{file = "black-22.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:30d78ba6bf080eeaf0b7b875d924b15cd46fec5fd044ddfbad38c8ea9171043a"},
|
{file = "black-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ef3925f30e12a184889aac03d77d031056860ccae8a1e519f6cbb742736383"},
|
||||||
{file = "black-22.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee8f1f7228cce7dffc2b464f07ce769f478968bfb3dd1254a4c2eeed84928aad"},
|
{file = "black-22.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:432247333090c8c5366e69627ccb363bc58514ae3e63f7fc75c54b1ea80fa7de"},
|
||||||
{file = "black-22.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ee227b696ca60dd1c507be80a6bc849a5a6ab57ac7352aad1ffec9e8b805f21"},
|
{file = "black-22.10.0-py3-none-any.whl", hash = "sha256:c957b2b4ea88587b46cf49d1dc17681c1e672864fd7af32fc1e9664d572b3458"},
|
||||||
{file = "black-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:9b542ced1ec0ceeff5b37d69838106a6348e60db7b8fdd245294dc1d26136265"},
|
{file = "black-22.10.0.tar.gz", hash = "sha256:f513588da599943e0cde4e32cc9879e825d58720d6557062d1098c5ad80080e1"},
|
||||||
{file = "black-22.3.0-py3-none-any.whl", hash = "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72"},
|
|
||||||
{file = "black-22.3.0.tar.gz", hash = "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79"},
|
|
||||||
]
|
]
|
||||||
click = [
|
click = [
|
||||||
{file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
|
{file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
|
||||||
{file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
|
{file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
|
||||||
]
|
]
|
||||||
colorama = [
|
colorama = [
|
||||||
{file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"},
|
{file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
|
||||||
{file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"},
|
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
||||||
]
|
]
|
||||||
docstring-parser = [
|
docstring-parser = [
|
||||||
{file = "docstring_parser-0.14.1-py3-none-any.whl", hash = "sha256:14ac6ec1f1ba6905c4d8cb90fd0bc55394f5678183752c90e44812bf28d7a515"},
|
{file = "docstring_parser-0.14.1-py3-none-any.whl", hash = "sha256:14ac6ec1f1ba6905c4d8cb90fd0bc55394f5678183752c90e44812bf28d7a515"},
|
||||||
{file = "docstring_parser-0.14.1.tar.gz", hash = "sha256:2c77522e31b7c88b1ab457a1f3c9ae38947ad719732260ba77ee8a3deb58622a"},
|
{file = "docstring_parser-0.14.1.tar.gz", hash = "sha256:2c77522e31b7c88b1ab457a1f3c9ae38947ad719732260ba77ee8a3deb58622a"},
|
||||||
]
|
]
|
||||||
|
exceptiongroup = [
|
||||||
|
{file = "exceptiongroup-1.0.4-py3-none-any.whl", hash = "sha256:542adf9dea4055530d6e1279602fa5cb11dab2395fa650b8674eaec35fc4a828"},
|
||||||
|
{file = "exceptiongroup-1.0.4.tar.gz", hash = "sha256:bd14967b79cd9bdb54d97323216f8fdf533e278df937aa2a90089e7d6e06e5ec"},
|
||||||
|
]
|
||||||
flake8 = [
|
flake8 = [
|
||||||
{file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"},
|
{file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"},
|
||||||
{file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"},
|
{file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"},
|
||||||
@@ -340,21 +332,17 @@ parso = [
|
|||||||
{file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
|
{file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
|
||||||
]
|
]
|
||||||
pathspec = [
|
pathspec = [
|
||||||
{file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"},
|
{file = "pathspec-0.10.2-py3-none-any.whl", hash = "sha256:88c2606f2c1e818b978540f73ecc908e13999c6c3a383daf3705652ae79807a5"},
|
||||||
{file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"},
|
{file = "pathspec-0.10.2.tar.gz", hash = "sha256:8f6bf73e5758fd365ef5d58ce09ac7c27d2833a8d7da51712eac6e27e35141b0"},
|
||||||
]
|
]
|
||||||
platformdirs = [
|
platformdirs = [
|
||||||
{file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"},
|
{file = "platformdirs-2.5.4-py3-none-any.whl", hash = "sha256:af0276409f9a02373d540bf8480021a048711d572745aef4b7842dad245eba10"},
|
||||||
{file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"},
|
{file = "platformdirs-2.5.4.tar.gz", hash = "sha256:1006647646d80f16130f052404c6b901e80ee4ed6bef6792e1f238a8969106f7"},
|
||||||
]
|
]
|
||||||
pluggy = [
|
pluggy = [
|
||||||
{file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
|
{file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
|
||||||
{file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
|
{file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
|
||||||
]
|
]
|
||||||
py = [
|
|
||||||
{file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
|
|
||||||
{file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
|
|
||||||
]
|
|
||||||
pybricks = []
|
pybricks = []
|
||||||
pycodestyle = [
|
pycodestyle = [
|
||||||
{file = "pycodestyle-2.8.0-py2.py3-none-any.whl", hash = "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20"},
|
{file = "pycodestyle-2.8.0-py2.py3-none-any.whl", hash = "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20"},
|
||||||
@@ -369,8 +357,8 @@ pyparsing = [
|
|||||||
{file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
|
{file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
|
||||||
]
|
]
|
||||||
pytest = [
|
pytest = [
|
||||||
{file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"},
|
{file = "pytest-7.2.0-py3-none-any.whl", hash = "sha256:892f933d339f068883b6fd5a459f03d85bfcb355e4981e146d2c7616c21fef71"},
|
||||||
{file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"},
|
{file = "pytest-7.2.0.tar.gz", hash = "sha256:c4014eb40e10f11f355ad4e3c2fb2c6c6d1919c73f3b5a433de4708202cade59"},
|
||||||
]
|
]
|
||||||
tomli = [
|
tomli = [
|
||||||
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
|
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "pybricks_jedi"
|
name = "pybricks_jedi"
|
||||||
version = "1.2.0"
|
version = "1.5.0"
|
||||||
description = "Code completion for Pybricks."
|
description = "Code completion for Pybricks."
|
||||||
authors = ["The Pybricks Authors"]
|
authors = ["The Pybricks Authors"]
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
python = ">= 3.10, < 3.11"
|
python = ">= 3.10, < 3.11"
|
||||||
pybricks = "3.2.0b4"
|
pybricks = "3.2.0b6"
|
||||||
jedi = "0.18.1"
|
jedi = "0.18.1"
|
||||||
typing-extensions = "4.2.0"
|
typing-extensions = "4.2.0"
|
||||||
docstring-parser = "0.14.1"
|
docstring-parser = "0.14.1"
|
||||||
|
|||||||
@@ -21,9 +21,11 @@ PYBRICKS_CODE_PACKAGES = {
|
|||||||
"pybricks.tools",
|
"pybricks.tools",
|
||||||
"uerrno",
|
"uerrno",
|
||||||
"uio",
|
"uio",
|
||||||
|
"ujson",
|
||||||
"umath",
|
"umath",
|
||||||
"urandom",
|
"urandom",
|
||||||
"uselect",
|
"uselect",
|
||||||
|
"ustruct",
|
||||||
"usys",
|
"usys",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,9 +18,11 @@ def test_from():
|
|||||||
"pybricks",
|
"pybricks",
|
||||||
"uerrno",
|
"uerrno",
|
||||||
"uio",
|
"uio",
|
||||||
|
"ujson",
|
||||||
"umath",
|
"umath",
|
||||||
"urandom",
|
"urandom",
|
||||||
"uselect",
|
"uselect",
|
||||||
|
"ustruct",
|
||||||
"usys",
|
"usys",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -149,6 +151,8 @@ def test_from_micropython_import():
|
|||||||
completions: list[CompletionItem] = json.loads(complete(code, 1, len(code) + 1))
|
completions: list[CompletionItem] = json.loads(complete(code, 1, len(code) + 1))
|
||||||
assert [c["insertText"] for c in completions] == [
|
assert [c["insertText"] for c in completions] == [
|
||||||
"const",
|
"const",
|
||||||
|
"heap_lock",
|
||||||
|
"heap_unlock",
|
||||||
"kbd_intr",
|
"kbd_intr",
|
||||||
"mem_info",
|
"mem_info",
|
||||||
"opt_level",
|
"opt_level",
|
||||||
@@ -184,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():
|
def test_from_umath_import():
|
||||||
code = "from umath import "
|
code = "from umath import "
|
||||||
completions: list[CompletionItem] = json.loads(complete(code, 1, len(code) + 1))
|
completions: list[CompletionItem] = json.loads(complete(code, 1, len(code) + 1))
|
||||||
@@ -236,8 +253,8 @@ def test_from_uselect_import():
|
|||||||
code = "from uselect import "
|
code = "from uselect import "
|
||||||
completions: list[CompletionItem] = json.loads(complete(code, 1, len(code) + 1))
|
completions: list[CompletionItem] = json.loads(complete(code, 1, len(code) + 1))
|
||||||
assert [c["insertText"] for c in completions] == [
|
assert [c["insertText"] for c in completions] == [
|
||||||
"poll",
|
|
||||||
"Poll",
|
"Poll",
|
||||||
|
"poll",
|
||||||
"POLLERR",
|
"POLLERR",
|
||||||
"POLLHUP",
|
"POLLHUP",
|
||||||
"POLLIN",
|
"POLLIN",
|
||||||
@@ -245,11 +262,26 @@ 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():
|
def test_from_usys_import():
|
||||||
code = "from usys import "
|
code = "from usys import "
|
||||||
completions: list[CompletionItem] = json.loads(complete(code, 1, len(code) + 1))
|
completions: list[CompletionItem] = json.loads(complete(code, 1, len(code) + 1))
|
||||||
assert [c["insertText"] for c in completions] == [
|
assert [c["insertText"] for c in completions] == [
|
||||||
|
"implementation",
|
||||||
"stderr",
|
"stderr",
|
||||||
"stdin",
|
"stdin",
|
||||||
"stdout",
|
"stdout",
|
||||||
|
"version",
|
||||||
|
"version_info",
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -27,113 +27,16 @@ def _create_snippet(line: str) -> str:
|
|||||||
return "\n".join((IMPORT, CREATE_INSTANCE, line))
|
return "\n".join((IMPORT, CREATE_INSTANCE, line))
|
||||||
|
|
||||||
|
|
||||||
def test_hub_dot():
|
# Everything else is the same as the Prime Hub.
|
||||||
line = "hub."
|
|
||||||
code = _create_snippet(line)
|
|
||||||
completions: list[CompletionItem] = json.loads(complete(code, 3, len(line) + 1))
|
|
||||||
assert [c["insertText"] for c in completions] == [
|
|
||||||
"battery",
|
|
||||||
"buttons",
|
|
||||||
"charger",
|
|
||||||
"display",
|
|
||||||
"imu",
|
|
||||||
"light",
|
|
||||||
"speaker",
|
|
||||||
"system",
|
|
||||||
]
|
|
||||||
|
|
||||||
|
from test_complete_prime_hub import ( # noqa F401
|
||||||
def test_hub_dot_battery_dot():
|
test_hub_dot,
|
||||||
line = "hub.battery."
|
test_hub_dot_battery_dot,
|
||||||
code = _create_snippet(line)
|
test_hub_dot_buttons_dot,
|
||||||
completions: list[CompletionItem] = json.loads(complete(code, 3, len(line) + 1))
|
test_hub_dot_charger_dot,
|
||||||
assert [c["insertText"] for c in completions] == [
|
test_hub_dot_display_dot,
|
||||||
"current",
|
test_hub_dot_imu_dot,
|
||||||
"voltage",
|
test_hub_dot_light_dot,
|
||||||
]
|
test_hub_dot_speaker_dot,
|
||||||
|
test_hub_dot_system_dot,
|
||||||
|
)
|
||||||
def test_hub_dot_buttons_dot():
|
|
||||||
line = "hub.buttons."
|
|
||||||
code = _create_snippet(line)
|
|
||||||
completions: list[CompletionItem] = json.loads(complete(code, 3, len(line) + 1))
|
|
||||||
assert [c["insertText"] for c in completions] == [
|
|
||||||
"pressed",
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def test_hub_dot_charger_dot():
|
|
||||||
line = "hub.charger."
|
|
||||||
code = _create_snippet(line)
|
|
||||||
completions: list[CompletionItem] = json.loads(complete(code, 3, len(line) + 1))
|
|
||||||
assert [c["insertText"] for c in completions] == [
|
|
||||||
"connected",
|
|
||||||
"current",
|
|
||||||
"status",
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def test_hub_dot_display_dot():
|
|
||||||
line = "hub.display."
|
|
||||||
code = _create_snippet(line)
|
|
||||||
completions: list[CompletionItem] = json.loads(complete(code, 3, len(line) + 1))
|
|
||||||
assert [c["insertText"] for c in completions] == [
|
|
||||||
"animate",
|
|
||||||
"char",
|
|
||||||
"image",
|
|
||||||
"number",
|
|
||||||
"off",
|
|
||||||
"orientation",
|
|
||||||
"pixel",
|
|
||||||
"text",
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def test_hub_dot_imu_dot():
|
|
||||||
line = "hub.imu."
|
|
||||||
code = _create_snippet(line)
|
|
||||||
completions: list[CompletionItem] = json.loads(complete(code, 3, len(line) + 1))
|
|
||||||
assert [c["insertText"] for c in completions] == [
|
|
||||||
"acceleration",
|
|
||||||
"angular_velocity",
|
|
||||||
"heading",
|
|
||||||
"reset_heading",
|
|
||||||
"tilt",
|
|
||||||
"up",
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def test_hub_dot_light_dot():
|
|
||||||
line = "hub.light."
|
|
||||||
code = _create_snippet(line)
|
|
||||||
completions: list[CompletionItem] = json.loads(complete(code, 3, len(line) + 1))
|
|
||||||
assert [c["insertText"] for c in completions] == [
|
|
||||||
"animate",
|
|
||||||
"blink",
|
|
||||||
"off",
|
|
||||||
"on",
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def test_hub_dot_speaker_dot():
|
|
||||||
line = "hub.speaker."
|
|
||||||
code = _create_snippet(line)
|
|
||||||
completions: list[CompletionItem] = json.loads(complete(code, 3, len(line) + 1))
|
|
||||||
assert [c["insertText"] for c in completions] == [
|
|
||||||
"beep",
|
|
||||||
"play_notes",
|
|
||||||
"volume",
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
def test_hub_dot_system_dot():
|
|
||||||
line = "hub.system."
|
|
||||||
code = _create_snippet(line)
|
|
||||||
completions: list[CompletionItem] = json.loads(complete(code, 3, len(line) + 1))
|
|
||||||
assert [c["insertText"] for c in completions] == [
|
|
||||||
"name",
|
|
||||||
"reset_reason",
|
|
||||||
"set_stop_button",
|
|
||||||
"shutdown",
|
|
||||||
"storage",
|
|
||||||
]
|
|
||||||
|
|||||||
@@ -0,0 +1,139 @@
|
|||||||
|
import json
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from pybricks_jedi import CompletionItem, complete
|
||||||
|
|
||||||
|
|
||||||
|
def _create_snippet(class_name: str) -> str:
|
||||||
|
"""
|
||||||
|
Creates a code snippet::
|
||||||
|
|
||||||
|
from pybricks.parameters import {class_name}
|
||||||
|
{class_name}.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
line: The value substituted for ``{class_name}``
|
||||||
|
"""
|
||||||
|
return "\n".join(
|
||||||
|
(f"from pybricks.parameters import {class_name}", f"{class_name}.")
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
ENUMS = [
|
||||||
|
pytest.param(
|
||||||
|
"Button",
|
||||||
|
[
|
||||||
|
"BEACON",
|
||||||
|
"BLUETOOTH",
|
||||||
|
"CENTER",
|
||||||
|
"DOWN",
|
||||||
|
"LEFT",
|
||||||
|
"LEFT_DOWN",
|
||||||
|
"LEFT_MINUS",
|
||||||
|
"LEFT_PLUS",
|
||||||
|
"LEFT_UP",
|
||||||
|
"RIGHT",
|
||||||
|
"RIGHT_DOWN",
|
||||||
|
"RIGHT_MINUS",
|
||||||
|
"RIGHT_PLUS",
|
||||||
|
"RIGHT_UP",
|
||||||
|
"UP",
|
||||||
|
],
|
||||||
|
),
|
||||||
|
pytest.param(
|
||||||
|
"Color",
|
||||||
|
[
|
||||||
|
"BLACK",
|
||||||
|
"BLUE",
|
||||||
|
"BROWN",
|
||||||
|
"CYAN",
|
||||||
|
"GRAY",
|
||||||
|
"GREEN",
|
||||||
|
"MAGENTA",
|
||||||
|
"NONE",
|
||||||
|
"ORANGE",
|
||||||
|
"RED",
|
||||||
|
"VIOLET",
|
||||||
|
"WHITE",
|
||||||
|
"YELLOW",
|
||||||
|
],
|
||||||
|
),
|
||||||
|
pytest.param("Direction", ["CLOCKWISE", "COUNTERCLOCKWISE"]),
|
||||||
|
pytest.param(
|
||||||
|
"Icon",
|
||||||
|
[
|
||||||
|
"ARROW_DOWN",
|
||||||
|
"ARROW_LEFT",
|
||||||
|
"ARROW_LEFT_DOWN",
|
||||||
|
"ARROW_LEFT_UP",
|
||||||
|
"ARROW_RIGHT",
|
||||||
|
"ARROW_RIGHT_DOWN",
|
||||||
|
"ARROW_RIGHT_UP",
|
||||||
|
"ARROW_UP",
|
||||||
|
"CIRCLE",
|
||||||
|
"CLOCKWISE",
|
||||||
|
"COUNTERCLOCKWISE",
|
||||||
|
"DOWN",
|
||||||
|
"EMPTY",
|
||||||
|
"EYE_LEFT",
|
||||||
|
"EYE_LEFT_BLINK",
|
||||||
|
"EYE_LEFT_BROW",
|
||||||
|
"EYE_LEFT_BROW_UP",
|
||||||
|
"EYE_RIGHT",
|
||||||
|
"EYE_RIGHT_BLINK",
|
||||||
|
"EYE_RIGHT_BROW",
|
||||||
|
"EYE_RIGHT_BROW_UP",
|
||||||
|
"FALSE",
|
||||||
|
"FULL",
|
||||||
|
"HAPPY",
|
||||||
|
"HEART",
|
||||||
|
"LEFT",
|
||||||
|
"PAUSE",
|
||||||
|
"RIGHT",
|
||||||
|
"SAD",
|
||||||
|
"SQUARE",
|
||||||
|
"TRIANGLE_DOWN",
|
||||||
|
"TRIANGLE_LEFT",
|
||||||
|
"TRIANGLE_RIGHT",
|
||||||
|
"TRIANGLE_UP",
|
||||||
|
"TRUE",
|
||||||
|
"UP",
|
||||||
|
],
|
||||||
|
),
|
||||||
|
pytest.param("Port", ["A", "B", "C", "D", "E", "F", "S1", "S2", "S3", "S4"]),
|
||||||
|
pytest.param("Side", ["BACK", "BOTTOM", "FRONT", "LEFT", "RIGHT", "TOP"]),
|
||||||
|
pytest.param("Stop", ["BRAKE", "COAST", "COAST_SMART", "HOLD", "NONE"]),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("class_name,members", ENUMS)
|
||||||
|
def test_get_parameter_class_member_completion(class_name: str, members: list[str]):
|
||||||
|
|
||||||
|
code = _create_snippet(class_name)
|
||||||
|
completions: list[CompletionItem] = json.loads(
|
||||||
|
complete(code, 2, len(class_name) + 2)
|
||||||
|
)
|
||||||
|
assert [c["insertText"] for c in completions] == members
|
||||||
|
|
||||||
|
|
||||||
|
def test_get_parameter_color_completion():
|
||||||
|
code = "\n".join(["from pybricks.parameters import Color", "Color.RED."])
|
||||||
|
completions: list[CompletionItem] = json.loads(complete(code, 2, 11))
|
||||||
|
assert [c["insertText"] for c in completions] == [
|
||||||
|
"BLACK",
|
||||||
|
"BLUE",
|
||||||
|
"BROWN",
|
||||||
|
"CYAN",
|
||||||
|
"GRAY",
|
||||||
|
"GREEN",
|
||||||
|
"h",
|
||||||
|
"MAGENTA",
|
||||||
|
"NONE",
|
||||||
|
"ORANGE",
|
||||||
|
"RED",
|
||||||
|
"s",
|
||||||
|
"v",
|
||||||
|
"VIOLET",
|
||||||
|
"WHITE",
|
||||||
|
"YELLOW",
|
||||||
|
]
|
||||||
@@ -80,7 +80,7 @@ def test_hub_dot_display_dot():
|
|||||||
assert [c["insertText"] for c in completions] == [
|
assert [c["insertText"] for c in completions] == [
|
||||||
"animate",
|
"animate",
|
||||||
"char",
|
"char",
|
||||||
"image",
|
"icon",
|
||||||
"number",
|
"number",
|
||||||
"off",
|
"off",
|
||||||
"orientation",
|
"orientation",
|
||||||
|
|||||||