Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2f19fe210a | ||
|
|
463b608817 | ||
|
|
49ce1d7829 | ||
|
|
15600c8a2b | ||
|
|
f509178dab | ||
|
|
fd61866f2b | ||
|
|
91bc9a5d60 | ||
|
|
f470f1c510 | ||
|
|
d7f9723f6f | ||
|
|
0d0d479a86 | ||
|
|
252adb3e85 | ||
|
|
36ed5917e9 | ||
|
|
bec6aaa76e | ||
|
|
e7377dff31 | ||
|
|
d935841399 | ||
|
|
3335042218 | ||
|
|
209fba5c7e | ||
|
|
faf11581c0 | ||
|
|
8819446513 | ||
|
|
b97eef8152 | ||
|
|
6bbdccb25f | ||
|
|
578abab24e | ||
|
|
1a49d396d2 | ||
|
|
397663d631 | ||
|
|
821a3e4455 | ||
|
|
41b9ce71dd | ||
|
|
6d69f04fe5 | ||
|
|
00ded2e2a0 | ||
|
|
dd1d167ad9 | ||
|
|
4dc289ad61 | ||
|
|
bc592b4469 | ||
|
|
784c7ec5fc | ||
|
|
9e2bac457a | ||
|
|
61d18ebe6f | ||
|
|
ff0b767e3e | ||
|
|
3274cef849 | ||
|
|
b4ff3af36d | ||
|
|
8e5891d9e8 | ||
|
|
7de67852f7 | ||
|
|
31d3a117d6 | ||
|
|
263fe3a1cb | ||
|
|
db8de447d5 | ||
|
|
46d6189eb1 | ||
|
|
2278c7bcda | ||
|
|
4da3618428 | ||
|
|
5bc11b185d | ||
|
|
be9f99d41b | ||
|
|
870aae83c0 | ||
|
|
9cde749e8a | ||
|
|
8bca5eb6e4 | ||
|
|
95a12a7386 | ||
|
|
d6c78f1f39 | ||
|
|
98f2bb27fe | ||
|
|
fdbd078388 | ||
|
|
ccd2b46819 | ||
|
|
c0cb05dd74 | ||
|
|
b183e1420a | ||
|
|
b311c54261 | ||
|
|
bb37b94f5e | ||
|
|
5b25606afa | ||
|
|
8172d11ef6 | ||
|
|
c415296b71 | ||
|
|
e4650cb1c9 | ||
|
|
91154a394c | ||
|
|
3c36010c04 | ||
|
|
a553df3b03 | ||
|
|
dbd1cc8dc9 | ||
|
|
b40c3989aa | ||
|
|
13612bdb1a | ||
|
|
031e905e12 | ||
|
|
428bca79ab | ||
|
|
0e8b6cfd97 | ||
|
|
eea8ff0924 | ||
|
|
8c673ab280 | ||
|
|
73477169ae | ||
|
|
5ccc60c177 | ||
|
|
93c4fcc884 | ||
|
|
aa72605e99 | ||
|
|
8ee725722f | ||
|
|
236bda5f31 | ||
|
|
36ee3bd9ef | ||
|
|
16a0621e03 | ||
|
|
7c4c5439a4 | ||
|
|
f7314bc1bc | ||
|
|
f14bbc3a36 | ||
|
|
44c6191b2f | ||
|
|
829b0ab97a | ||
|
|
1c5e390e13 | ||
|
|
98e7d814b1 | ||
|
|
0117e50599 | ||
|
|
b4b17d6f55 | ||
|
|
a074c60c9e | ||
|
|
9f80deec4a | ||
|
|
0655d807e4 | ||
|
|
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 | ||
|
|
2a23c2e81d | ||
|
|
fe126de264 | ||
|
|
b290f7dc6b | ||
|
|
9127afdcbc | ||
|
|
7ee1f66556 | ||
|
|
f5422e9c90 | ||
|
|
40fc2588f9 | ||
|
|
96be47f21b | ||
|
|
e1be50181a | ||
|
|
52117157d8 | ||
|
|
7778ce96a5 | ||
|
|
637677dae2 | ||
|
|
abc00df943 | ||
|
|
bfa0b69e93 | ||
|
|
f664757ef3 | ||
|
|
b747520d1c | ||
|
|
dcddf15d15 | ||
|
|
c64458d3b9 | ||
|
|
2a963b2a0b | ||
|
|
6df509b66e | ||
|
|
ac9585b7a5 | ||
|
|
0982d5d65b | ||
|
|
8e7f8c619e | ||
|
|
a0b3ba1d74 | ||
|
|
3dc28579ef | ||
|
|
923f9df3da | ||
|
|
1665b77847 | ||
|
|
96e7e5f3d0 | ||
|
|
1b51d71061 | ||
|
|
9d706d719a | ||
|
|
7c62a2833a | ||
|
|
03ee7f74e8 | ||
|
|
025147680c | ||
|
|
e467bb57c9 | ||
|
|
33d0c9fa49 | ||
|
|
e95386e23e | ||
|
|
a758eaa1db | ||
|
|
470eebd1c5 | ||
|
|
37cdd2a83b | ||
|
|
a2d9c33eb5 | ||
|
|
6d0de1effa | ||
|
|
8e7fc53974 | ||
|
|
e456c8ef91 | ||
|
|
6500440031 | ||
|
|
8ec1b18629 | ||
|
|
26908040eb | ||
|
|
f67c98105a | ||
|
|
877391dea7 | ||
|
|
fb3446ad0d | ||
|
|
31256d70c1 | ||
|
|
f87e1b48ac | ||
|
|
6bcf6117c3 | ||
|
|
c77682f50d | ||
|
|
4c583a9d4e | ||
|
|
0688b8dded | ||
|
|
d1a4327751 | ||
|
|
4aec24a051 | ||
|
|
7bc995d0b6 | ||
|
|
725a07e6e1 | ||
|
|
d43bf94720 | ||
|
|
c6163fcc81 | ||
|
|
34992d5b20 | ||
|
|
c77aedcd8a | ||
|
|
7b9209681c | ||
|
|
7de33c0ce5 | ||
|
|
dbc5d327e3 | ||
|
|
2e39740e4b | ||
|
|
45e0744b3f | ||
|
|
aab6c0d3e0 | ||
|
|
8a4c4a5400 | ||
|
|
ecfbc6ca75 | ||
|
|
c3b6d44c59 | ||
|
|
db71a80f36 | ||
|
|
a80d5cf91e | ||
|
|
515d261bad | ||
|
|
dd54d67720 | ||
|
|
453332201e | ||
|
|
3548ff47ce | ||
|
|
a02b283f3f | ||
|
|
f197531979 | ||
|
|
2167b9d52d | ||
|
|
2be15fdf4d | ||
|
|
aaf3ad1b9c | ||
|
|
bd7806d2d4 | ||
|
|
24f7d7c288 | ||
|
|
5e0ba1de07 | ||
|
|
2f8ba40034 | ||
|
|
c4a09ab62a | ||
|
|
c0c53db5ee | ||
|
|
5e09a6f1bd | ||
|
|
5e9a8c5737 | ||
|
|
f934fdd9bd | ||
|
|
556728937f | ||
|
|
813ea61308 | ||
|
|
2e8e43bcdf | ||
|
|
e4ddd1ffce | ||
|
|
243f2948ef | ||
|
|
81a1379781 | ||
|
|
93a9370790 | ||
|
|
1989561c90 | ||
|
|
4101f9be79 | ||
|
|
0a31bc711f | ||
|
|
d8bd890101 | ||
|
|
2ba7edab0c | ||
|
|
616051149b | ||
|
|
e69c422f83 | ||
|
|
0ceabe8497 | ||
|
|
d3ae4ec9ee | ||
|
|
ffb2f8aa96 | ||
|
|
65c81834c9 | ||
|
|
97002948d1 | ||
|
|
70aa5ee0e2 | ||
|
|
efc1650e7f | ||
|
|
fe60636072 | ||
|
|
a1342f77c9 | ||
|
|
d806fe9fbe | ||
|
|
1259d5d33a | ||
|
|
098b8eb9cb | ||
|
|
c666009511 | ||
|
|
7f4234fc1e | ||
|
|
482289c384 | ||
|
|
30803fc017 | ||
|
|
749eceefc4 | ||
|
|
57f6f0fbef | ||
|
|
e061617c34 | ||
|
|
eb09ecd7c7 | ||
|
|
06a1542613 | ||
|
|
82a8f2ae89 | ||
|
|
7d0fe9cb85 | ||
|
|
1af876ac8f | ||
|
|
718a28c0da | ||
|
|
a2a375cb5c |
@@ -3,24 +3,28 @@
|
||||
|
||||
name: Build Python package and docs
|
||||
|
||||
on: [ push, pull_request ]
|
||||
on:
|
||||
push:
|
||||
tags-ignore:
|
||||
- '**'
|
||||
pull_request:
|
||||
paths:
|
||||
- doc/**
|
||||
- src/**
|
||||
- poetry.lock
|
||||
- poetry.toml
|
||||
- pyproject.toml
|
||||
- setup.cfg
|
||||
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-20.04
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: [3.8, 3.9]
|
||||
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v1
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip install poetry
|
||||
@@ -35,7 +39,7 @@ jobs:
|
||||
run: poetry run doc8
|
||||
- name: Build html docs for Read the Docs
|
||||
run: poetry run make -C doc html
|
||||
- name: Instal IDE docs dependencies
|
||||
- name: Install IDE docs dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install dvisvgm preview-latex-style texlive texlive-fonts-extra texlive-latex-extra
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
name: pybricks_jedi
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
if: github.ref_type != 'tag'
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- run: pipx install poetry
|
||||
- run: poetry install
|
||||
working-directory: ./jedi
|
||||
- run: poetry run pytest -vv
|
||||
working-directory: ./jedi
|
||||
|
||||
publish:
|
||||
if: github.ref_type == 'tag' && startsWith(github.ref_name, 'pybricks_jedi/')
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- run: pipx install poetry
|
||||
- run: poetry install
|
||||
working-directory: ./jedi
|
||||
- run: poetry build
|
||||
working-directory: ./jedi
|
||||
- run: poetry publish
|
||||
working-directory: ./jedi
|
||||
env:
|
||||
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_PYBRICKS_JEDI_TOKEN }}
|
||||
@@ -7,17 +7,17 @@ on:
|
||||
|
||||
jobs:
|
||||
publish_ide_docs:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Ubuntu packages
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y dvisvgm preview-latex-style texlive texlive-fonts-extra texlive-latex-extra
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Set up Python 3.8
|
||||
uses: actions/setup-python@v1
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: 3.8
|
||||
- name: Install dependencies
|
||||
@@ -25,8 +25,8 @@ jobs:
|
||||
pip install poetry
|
||||
poetry run python -m pip install --upgrade pip
|
||||
poetry run python -m pip install --upgrade setuptools
|
||||
poetry install
|
||||
- uses: actions/setup-node@v1
|
||||
poetry install --only=doc
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '14.x'
|
||||
registry-url: 'https://registry.npmjs.org'
|
||||
|
||||
@@ -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 }}
|
||||
@@ -0,0 +1,23 @@
|
||||
name: Release @pybricks/jedi
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- '@pybricks/jedi/**'
|
||||
|
||||
jobs:
|
||||
publish_jedi:
|
||||
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/jedi
|
||||
- run: yarn publish
|
||||
working-directory: npm/jedi/build
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
|
||||
@@ -6,17 +6,10 @@ on:
|
||||
|
||||
jobs:
|
||||
build_and_publish:
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.8
|
||||
- uses: abatilo/actions-poetry@v2.0.0
|
||||
with:
|
||||
poetry-version: 1.1.6
|
||||
- run: poetry install
|
||||
- run: poetry build
|
||||
- run: poetry publish
|
||||
- uses: actions/checkout@v3
|
||||
- run: pipx run poetry build
|
||||
- run: pipx run poetry publish
|
||||
env:
|
||||
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }}
|
||||
|
||||
@@ -26,8 +26,9 @@ build/
|
||||
build-*/
|
||||
_build/
|
||||
|
||||
# Test failure outputs
|
||||
# Tests
|
||||
######################
|
||||
.pytest_cache/
|
||||
tests/*.exp
|
||||
tests/*.out
|
||||
|
||||
@@ -57,3 +58,10 @@ genrst/
|
||||
# Virtual environment
|
||||
######################
|
||||
.venv/
|
||||
.python-version
|
||||
|
||||
# Generated LDRAW output
|
||||
######################
|
||||
stderr-ldview
|
||||
stdout-ldview
|
||||
LPub3D/
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
# .readthedocs.yaml
|
||||
# Read the Docs configuration file
|
||||
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
||||
#
|
||||
# Settings in the readthedocs online dashboard will be ignored.
|
||||
|
||||
# Required
|
||||
version: 2
|
||||
|
||||
# Build documentation in the doc/main directory with Sphinx
|
||||
sphinx:
|
||||
configuration: doc/main/conf.py
|
||||
|
||||
# Build your docs in additional formats such as PDF
|
||||
formats:
|
||||
- pdf
|
||||
|
||||
# Set the version of Python and requirements required to build the docs
|
||||
python:
|
||||
version: 3.8
|
||||
install:
|
||||
- requirements: rtd-requirements.txt
|
||||
@@ -0,0 +1,25 @@
|
||||
# .readthedocs.yaml
|
||||
# Read the Docs configuration file
|
||||
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
||||
|
||||
# Required
|
||||
version: 2
|
||||
|
||||
build:
|
||||
os: "ubuntu-22.04"
|
||||
tools:
|
||||
python: "3.10"
|
||||
jobs:
|
||||
post_create_environment:
|
||||
- pip install poetry
|
||||
- poetry config virtualenvs.create false
|
||||
post_install:
|
||||
- poetry install --only=doc
|
||||
|
||||
# Build documentation in the doc/main/ directory with Sphinx
|
||||
sphinx:
|
||||
configuration: doc/main/conf.py
|
||||
|
||||
# Optionally build your docs in additional formats such as PDF
|
||||
formats:
|
||||
- pdf
|
||||
@@ -4,7 +4,8 @@
|
||||
|
||||
// List of extensions which should be recommended for users of this workspace.
|
||||
"recommendations": [
|
||||
"ms-python.python"
|
||||
"ms-python.python",
|
||||
"ms-python.black-formatter"
|
||||
],
|
||||
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
|
||||
"unwantedRecommendations": [
|
||||
|
||||
@@ -1,10 +1,24 @@
|
||||
{
|
||||
"python.pythonPath": "${workspaceFolder}/.venv",
|
||||
"python.formatting.provider": "black",
|
||||
"python.linting.pycodestyleEnabled": false,
|
||||
"files.exclude": {
|
||||
"**/__pycache__": true,
|
||||
},
|
||||
"python.defaultInterpreterPath": ".venv/bin/python",
|
||||
"python.autoComplete.extraPaths": ["jedi/src"],
|
||||
"python.formatting.provider": "none",
|
||||
"python.linting.pylintEnabled": false,
|
||||
"python.linting.flake8Enabled": true,
|
||||
"python.linting.pycodestyleEnabled": false,
|
||||
"python.linting.enabled": true,
|
||||
"[python]": {
|
||||
"editor.formatOnSave": true,
|
||||
"editor.defaultFormatter": "ms-python.black-formatter"
|
||||
},
|
||||
"python.languageServer": "Pylance",
|
||||
"python.testing.pytestArgs": [
|
||||
"jedi/tests"
|
||||
],
|
||||
"python.testing.unittestEnabled": false,
|
||||
"python.testing.pytestEnabled": true,
|
||||
"files.associations": {"*.inc": "restructuredtext"},
|
||||
"restructuredtext.confPath": "${workspaceFolder}/doc/main",
|
||||
"spellright.language": [
|
||||
@@ -34,5 +48,12 @@
|
||||
"plaintext",
|
||||
"python",
|
||||
"restructuredtext",
|
||||
]
|
||||
],
|
||||
"rewrap.wrappingColumn": 78,
|
||||
"python.analysis.extraPaths": [
|
||||
"jedi/src"
|
||||
],
|
||||
"yaml.schemas": {
|
||||
"https://json.schemastore.org/github-workflow.json": "file:///home/david/work/pybricks/pybricks-api/.github/workflows/build.yml"
|
||||
},
|
||||
}
|
||||
|
||||
@@ -78,3 +78,4 @@ thermistor
|
||||
toctree
|
||||
TODO
|
||||
UART
|
||||
utf-8
|
||||
|
||||
@@ -2,6 +2,138 @@
|
||||
|
||||
<!-- refer to https://keepachangelog.com/en/1.0.0/ for guidance -->
|
||||
|
||||
## Unreleased
|
||||
|
||||
## 3.3.0c1 - 2023-11-20
|
||||
|
||||
## Added
|
||||
- Enabled tilt and orientation config for `MoveHub()`.
|
||||
- Documented `Motor.close()`
|
||||
|
||||
## Fixed
|
||||
- Fixed missing awaitable for `Remote.light` and LWP3 writes.
|
||||
|
||||
## 3.3.0b9 - 2023-10-26
|
||||
|
||||
### Changed
|
||||
- Changed the beta feature for using the hub's gyro. Gyro control can now be
|
||||
toggled using `use_gyro` instead of using a separate `GyroDriveBase` class.
|
||||
- Documentation updates to match firmware 3.3.0b5--3.3.0b9 updates.
|
||||
|
||||
## Added
|
||||
- Added `set` to `ubuiltins` module.
|
||||
- Basic multitasking docs.
|
||||
- Awaitable keyword for awaitable methods and functions.
|
||||
|
||||
## 3.3.0b5 - 2023-05-16
|
||||
|
||||
### Added
|
||||
- Documented new `hub.ble` methods.
|
||||
|
||||
## 3.3.0b4 - 2023-04-21
|
||||
|
||||
### Added
|
||||
- Documented `integral_deadzone` in `Control.pid()`.
|
||||
- Documented `Motor.model`. This can be used to view the estimated motor
|
||||
state and change its settings.
|
||||
- Added `rotation`, `orientation`, `ready`, `stationary` and `settings` methods
|
||||
to `IMU` class.
|
||||
- Added `GyroDriveBase` class to `pybricks.robotics`.
|
||||
|
||||
### Changed
|
||||
- Change implementation status of `IMU.heading` and `IMU.reset_heading`. They
|
||||
are now implemented, with some limitations as noted in a note box.
|
||||
- Moved `Matrix` and `vector` from `pybricks.geometry` to `pybricks.tools`.
|
||||
- Moved `Axis` from `pybricks.geometry` to `pybricks.parameters`.
|
||||
|
||||
### Removed
|
||||
- Removed `pybricks.geometry` module.
|
||||
|
||||
## 3.2.0 - 2022-12-20
|
||||
|
||||
### Changed
|
||||
- Changed module TOC headings to make it easier to find things.
|
||||
|
||||
## 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
|
||||
|
||||
### Added
|
||||
- Code auto-completion for `EssentialHub`.
|
||||
- Added `System.storage` method.
|
||||
|
||||
### Fixed
|
||||
- Fixed some type hints in `parameters` submodule.
|
||||
|
||||
## 3.2.0b1-r3 - 2022-06-26
|
||||
|
||||
### Fixed
|
||||
- Fixed more type hints and improved compatibility with jedi.
|
||||
|
||||
## 3.2.0b1-r2 - 2022-06-24
|
||||
|
||||
### Changed
|
||||
- Moved remaining type hints from `.pyi` files to the python stub modules, and
|
||||
fixed numerous errors in the type hints throughout.
|
||||
|
||||
## 3.2.0b1-r1 - 2022-06-09
|
||||
|
||||
## Added
|
||||
- Added `__init__.py` to `pybricks` package.
|
||||
|
||||
## 3.2.0b1 - 2022-06-02
|
||||
|
||||
### Added
|
||||
- Code auto-completion for `hub.charger`, `hub.imu` and `hub.system`.
|
||||
- Moved typing from several `.pyi` files to the actual python modules.
|
||||
|
||||
### Fixed
|
||||
- Fixed code completion for `DCMotor` and `Motor` classes in MS Python VS Code extension.
|
||||
- Fixed missing `DCMotor` type in `ev3devices`.
|
||||
- Fixed type hint for `Motor.reset_angle()` in `pupdevices`.
|
||||
|
||||
### Changed
|
||||
- Setter for acceleration can now also be used to set acceleration and
|
||||
deceleration to different values, using a two-valued tuple.
|
||||
|
||||
## 3.1.0 - 2021-12-16
|
||||
|
||||
### Added
|
||||
- Added maximum voltage setter for `DCMotor` and `Motor`.
|
||||
- Documented `DriveBase.curve()` method.
|
||||
|
||||
### Changed
|
||||
- Removed `duty` setting from `Control.limits` method.
|
||||
- Removed `integral_range` setting from `Control.pid` method.
|
||||
|
||||
### Fixed
|
||||
- Fixed link to Color Light Matrix page.
|
||||
- Fixed link to Inventor Hub page.
|
||||
|
||||
## 3.1.0rc1 - 2021-11-19
|
||||
|
||||
### Added
|
||||
|
||||
@@ -32,14 +32,91 @@ will actually be implemented.
|
||||
- pybricks.tools.wait: Add example of waiting.
|
||||
- pybricks.pupdevices: Fix all sensor class ports.
|
||||
- umath.sin: Fix spelling of Hypotenuse.
|
||||
- If an import path makes no sense, just use the file path without extensions:
|
||||
- If an import path makes no sense, just use the file path without
|
||||
extensions:
|
||||
- .vscode/settings: Fix file associations.
|
||||
- The subject briefly describes _what_ was changed. Use a short full sentence as in the examples above.
|
||||
- The subject briefly describes _what_ was changed. Use a short full sentence
|
||||
as in the examples above.
|
||||
- The body describes _why_ the change was made, e.g. `The word "sensor" was
|
||||
spelled incorrectly`.
|
||||
|
||||
[commits]: https://github.com/pybricks/pybricks-api/commits/master
|
||||
|
||||
**General docstring principles:**
|
||||
|
||||
The stubs libraries in this repository have two different purposes:
|
||||
1. Auto-generating documentation with Sphinx. For this purpose, the
|
||||
documentation should be concise and clear.
|
||||
2. Provide autocomplete and intellisense in code editors. For this purpose,
|
||||
the code needs to be 100% correct. This way, computers can parse your code
|
||||
correctly and tell you when something is wrong.
|
||||
|
||||
Since these objectives don't always align, we address these separately in the
|
||||
stubs library:
|
||||
|
||||
1. The first line(s) of the docstring contain the function or method signature
|
||||
as it should be displayed in the human-readable documentation.
|
||||
2. The real function signature can be as complex as it needs to be to make it
|
||||
correct for intellisense. Overloads can be uses if needed.
|
||||
|
||||
In the rare case where the docstring signature is the same as the typed
|
||||
version, we'll still include it for consistency.
|
||||
|
||||
**Docstring details:**
|
||||
|
||||
Make sure to look at existing function signatures and docstrings for
|
||||
inspiration when documenting new functionality. As an example, consider:
|
||||
|
||||
```python
|
||||
def run_until_stalled(
|
||||
self,
|
||||
speed: Number,
|
||||
then: Stop = Stop.COAST,
|
||||
duty_limit: Optional[Number] = None,
|
||||
) -> int:
|
||||
"""
|
||||
run_until_stalled(speed, then=Stop.COAST, duty_limit=None) -> int: deg
|
||||
|
||||
Runs the motor at a constant speed until it stalls.
|
||||
|
||||
Arguments:
|
||||
speed (Number, deg/s): Speed of the motor.
|
||||
then (Stop): What to do after coming to a standstill.
|
||||
duty_limit (Number, %): Duty cycle limit during this
|
||||
command. This is useful to avoid applying the full motor
|
||||
torque to a geared or lever mechanism. If it is ``None``, the
|
||||
duty limit won't be changed during this command.
|
||||
|
||||
Returns:
|
||||
Angle at which the motor becomes stalled.
|
||||
"""
|
||||
```
|
||||
The real method signature at the top contains the full detail, including the
|
||||
type of each argument and return value.
|
||||
|
||||
The docstring starts with the signature. Use more than one signature if needed
|
||||
to represent overloaded methods. The signatures are written in the way they
|
||||
should be displayed in the docs:
|
||||
- Argument types are omitted because they are also shown with the argument
|
||||
description below.
|
||||
- Default values should be given (``then=Stop.COAST``).
|
||||
- The return type should be given (``-> int``). When applicable, include
|
||||
the unit of the return value, so it becomes ``-> int: deg``
|
||||
|
||||
Then follows a concise description of what this method, function, or class
|
||||
does.
|
||||
|
||||
Then follows a list of arguments:
|
||||
- For each argument, include the expected type and unit if applicable, e.g.
|
||||
``(int)`` or ``(Number, deg/s)``.
|
||||
- Use ``Number`` when ``int`` and ``float`` are both allowed.
|
||||
- If the description is long, use the indentation shown above.
|
||||
- Make it readable. Instead
|
||||
of ``Union[float, SupportsFloat, complex, SupportsComplex]``,
|
||||
just say _float or complex_.
|
||||
|
||||
Then follows a description of the return value. The type is omitted here since
|
||||
it is already include in the docstring signature.
|
||||
|
||||
**Development environment:**
|
||||
|
||||
@@ -49,8 +126,8 @@ Prerequisites:
|
||||
- [Python 3][python]
|
||||
- [Poetry][poetry]
|
||||
|
||||
Information on installing prerequisites can be found on the [pybricks-micropython
|
||||
wiki][wiki].
|
||||
Information on installing prerequisites can be found on the
|
||||
[pybricks-micropython contributor's guide][contributing].
|
||||
|
||||
Initial setup:
|
||||
|
||||
@@ -90,4 +167,4 @@ Linting:
|
||||
[git]: https://git-scm.com/
|
||||
[python]: https://www.python.org/
|
||||
[poetry]: https://python-poetry.org/
|
||||
[wiki]: https://github.com/pybricks-micropython/wiki
|
||||
[contributing]: https://github.com/pybricks/pybricks-micropython/blob/master/CONTRIBUTING.md
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
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
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -12,6 +12,11 @@ used to generate the `official documentation`_.
|
||||
See the `contributor's guide <CONTRIBUTING.md>`_ for acceptable changes and
|
||||
instructions to build the documentation locally.
|
||||
|
||||
You can use the API stubs in this repository for syntax highlighting and code
|
||||
completion when programming the EV3 with VS Code. To enable, remove the
|
||||
``"python.languageServer"="None"`` line in the ``.vscode/settings.json`` file
|
||||
generated by the *LEGO® MINDSTORMS® EV3 MicroPython* extension.
|
||||
|
||||
For general discussion, please visit the `support`_ issue tracker.
|
||||
|
||||
.. _Pybricks package: pybricks
|
||||
|
||||
@@ -11,13 +11,13 @@ TAG = main
|
||||
|
||||
# Put it first so that "make" without argument is like "make help".
|
||||
help:
|
||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) -t $(TAG) $(O)
|
||||
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(TAG) $(O)
|
||||
|
||||
.PHONY: help Makefile
|
||||
|
||||
diagrams:
|
||||
@$(MAKE) -C "$(SOURCEDIR)"/diagram_source clean
|
||||
@$(MAKE) -C "$(SOURCEDIR)"/diagram_source
|
||||
@$(MAKE) -C "$(SOURCEDIR)"/diagrams_source clean
|
||||
@$(MAKE) -C "$(SOURCEDIR)"/diagrams_source
|
||||
|
||||
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||
|
||||
@@ -40,3 +40,11 @@
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: #182026;
|
||||
}
|
||||
|
||||
html.writer-html5 .rst-content dl.citation,
|
||||
html.writer-html5 .rst-content dl.field-list,
|
||||
html.writer-html5 .rst-content dl.footnote {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
grid-template-columns: unset;
|
||||
}
|
||||
|
||||
@@ -41,3 +41,7 @@ span.caption-number:after {
|
||||
.figure > a.reference.external::after {
|
||||
content: none !important;
|
||||
}
|
||||
|
||||
.wy-side-nav-search > div.version {
|
||||
color: hsla(0, 0%, 100%, 0.75);
|
||||
}
|
||||
|
||||
@@ -27,21 +27,20 @@ from docutils import nodes
|
||||
from docutils.parsers.rst.directives import flag
|
||||
from docutils.parsers.rst import Directive
|
||||
from sphinx.application import Sphinx
|
||||
from sphinx.addnodes import pending_xref
|
||||
from sphinx.environment import BuildEnvironment
|
||||
from sphinx.util.nodes import make_refnode
|
||||
import toml
|
||||
|
||||
TOP_DIR = os.path.abspath(os.path.join('..', '..'))
|
||||
sys.path.insert(0, os.path.join(TOP_DIR, 'src'))
|
||||
sys.path.append(os.path.abspath('../common/extensions'))
|
||||
|
||||
from pybricks.hubs import EV3Brick # noqa E402
|
||||
from pybricks.media.ev3dev import Image # noqa E402
|
||||
from pybricks._common import Speaker # noqa E402
|
||||
TOP_DIR = os.path.abspath(os.path.join("..", ".."))
|
||||
sys.path.insert(0, os.path.join(TOP_DIR, "src"))
|
||||
sys.path.append(os.path.abspath("../common/extensions"))
|
||||
|
||||
# ON_RTD is whether we are on readthedocs.org
|
||||
# this line of code grabbed from docs.readthedocs.org
|
||||
ON_RTD = os.environ.get('READTHEDOCS', None) == 'True'
|
||||
ON_RTD = os.environ.get("READTHEDOCS", None) == "True"
|
||||
|
||||
_pyproject = toml.load(os.path.join(TOP_DIR, 'pyproject.toml'))
|
||||
_pyproject = toml.load(os.path.join(TOP_DIR, "pyproject.toml"))
|
||||
|
||||
# -- General configuration ------------------------------------------------
|
||||
|
||||
@@ -53,27 +52,29 @@ _pyproject = toml.load(os.path.join(TOP_DIR, 'pyproject.toml'))
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
extensions = [
|
||||
'sphinx.ext.autodoc',
|
||||
'sphinx.ext.napoleon',
|
||||
'sphinx.ext.todo',
|
||||
'sphinx.ext.mathjax',
|
||||
'color',
|
||||
'classlink',
|
||||
'requirements',
|
||||
'requirements-static',
|
||||
"sphinx.ext.autodoc",
|
||||
"sphinx.ext.napoleon",
|
||||
"sphinx.ext.todo",
|
||||
"sphinx.ext.mathjax",
|
||||
# Custom Pybricks extensions
|
||||
"color",
|
||||
"classlink",
|
||||
"requirements",
|
||||
"requirements-static",
|
||||
"versionchanged",
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['../common/_templates']
|
||||
templates_path = ["../common/_templates"]
|
||||
|
||||
# The suffix(es) of source filenames.
|
||||
# You can specify multiple suffix as a list of string:
|
||||
#
|
||||
# source_suffix = ['.rst', '.md']
|
||||
source_suffix = '.rst'
|
||||
source_suffix = ".rst"
|
||||
|
||||
# The master toctree document.
|
||||
master_doc = 'index'
|
||||
master_doc = "index"
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
@@ -82,17 +83,17 @@ master_doc = 'index'
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = "v" + _pyproject["tool"]["poetry"]["version"]
|
||||
# The short X.Y version.
|
||||
version = re.match(r'(v\d+\.\d+)', release)[0]
|
||||
version = re.match(r"(v\d+\.\d+)", release)[0]
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
language = None
|
||||
language = "en"
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'xcode'
|
||||
pygments_style = "xcode"
|
||||
|
||||
# If true, `todo` and `todoList` produce output, else they produce nothing.
|
||||
todo_include_todos = True
|
||||
@@ -100,10 +101,10 @@ todo_include_todos = True
|
||||
# Figure numbering
|
||||
numfig = True
|
||||
numfig_format = {
|
||||
'figure': 'Figure %s',
|
||||
'table': 'Table %s',
|
||||
'code-block': 'Listing %s',
|
||||
'section': 'Section %s'
|
||||
"figure": "Figure %s",
|
||||
"table": "Table %s",
|
||||
"code-block": "Listing %s",
|
||||
"section": "Section %s",
|
||||
}
|
||||
|
||||
# Find cross-reference errors
|
||||
@@ -111,59 +112,46 @@ nitpicky = True
|
||||
|
||||
# https://stackoverflow.com/a/30624034/1976323
|
||||
nitpick_ignore = [
|
||||
('py:class', 'bool'),
|
||||
('py:class', 'bytearray'),
|
||||
('py:class', 'bytes'),
|
||||
('py:class', 'callable'),
|
||||
('py:class', 'dict'),
|
||||
('py:class', 'float'),
|
||||
('py:class', 'int'),
|
||||
('py:class', 'iter'),
|
||||
('py:class', 'list'),
|
||||
('py:class', 'object'),
|
||||
('py:class', 'str'),
|
||||
('py:class', 'tuple'),
|
||||
('py:exc', 'OSError'),
|
||||
('py:exc', 'RuntimeError'),
|
||||
('py:exc', 'TypeError'),
|
||||
('py:exc', 'ValueError'),
|
||||
("py:class", "bool"),
|
||||
("py:class", "bytearray"),
|
||||
("py:class", "bytes"),
|
||||
("py:class", "callable"),
|
||||
("py:class", "dict"),
|
||||
("py:class", "float"),
|
||||
("py:class", "int"),
|
||||
("py:class", "iter"),
|
||||
("py:class", "list"),
|
||||
("py:class", "object"),
|
||||
("py:class", "str"),
|
||||
("py:class", "tuple"),
|
||||
("py:exc", "OSError"),
|
||||
("py:exc", "RuntimeError"),
|
||||
("py:exc", "TypeError"),
|
||||
("py:exc", "ValueError"),
|
||||
]
|
||||
|
||||
# not sure why, but this is needed for typing.IO in uselect
|
||||
nitpick_ignore.append(('py:class', 'IO'))
|
||||
|
||||
# Workaround until change below is released.
|
||||
# https://github.com/sphinx-doc/sphinx/commit/86091934db5ec593b4b0c982b7f08f3231ef995b
|
||||
nitpick_ignore.extend([
|
||||
('py:class', '0'),
|
||||
('py:class', '1'),
|
||||
('py:class', '2'),
|
||||
('py:class', '3'),
|
||||
('py:class', 'big'),
|
||||
('py:class', 'little'),
|
||||
])
|
||||
nitpick_ignore.append(("py:obj", "typing.IO"))
|
||||
|
||||
# -- Autodoc options ------------------------------------------------------
|
||||
|
||||
autodoc_member_order = 'bysource'
|
||||
autodoc_member_order = "bysource"
|
||||
autodoc_default_options = {
|
||||
'members': True,
|
||||
'undoc-members': True,
|
||||
"members": True,
|
||||
"undoc-members": True,
|
||||
}
|
||||
autoclass_content = 'both' # This ensures init arguments are not ignored
|
||||
autoclass_content = "both" # This ensures init arguments are not ignored
|
||||
add_module_names = False # Hide module name
|
||||
|
||||
# -- Options for HTML output ----------------------------------------------
|
||||
|
||||
if ON_RTD:
|
||||
html_theme = 'default'
|
||||
else:
|
||||
import sphinx_rtd_theme
|
||||
html_theme = 'sphinx_rtd_theme'
|
||||
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
|
||||
import sphinx_rtd_theme
|
||||
|
||||
html_theme = "sphinx_rtd_theme"
|
||||
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
|
||||
|
||||
html_context = {
|
||||
'disclaimer': _DISCLAIMER,
|
||||
"disclaimer": _DISCLAIMER,
|
||||
}
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
@@ -176,14 +164,15 @@ html_context = {
|
||||
# documentation.
|
||||
#
|
||||
html_theme_options = {
|
||||
'style_external_links': True,
|
||||
'logo_only': True,
|
||||
"style_external_links": True,
|
||||
"logo_only": True,
|
||||
"style_nav_header_background": "#0088ce", # Pybricks blue
|
||||
}
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['../common/_static']
|
||||
html_static_path = ["../common/_static"]
|
||||
|
||||
# Custom sidebar templates, must be a dictionary that maps document names
|
||||
# to template names.
|
||||
@@ -191,9 +180,9 @@ html_static_path = ['../common/_static']
|
||||
# This is required for the alabaster theme
|
||||
# refs: http://alabaster.readthedocs.io/en/latest/installation.html#sidebars
|
||||
html_sidebars = {
|
||||
'**': [
|
||||
'relations.html', # needs 'show_related': True theme option to display
|
||||
'searchbox.html',
|
||||
"**": [
|
||||
"relations.html", # needs 'show_related': True theme option to display
|
||||
"searchbox.html",
|
||||
]
|
||||
}
|
||||
|
||||
@@ -203,7 +192,7 @@ html_scaled_image_link = False
|
||||
# -- Options for HTMLHelp output ------------------------------------------
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'Pybricksdoc'
|
||||
htmlhelp_basename = "Pybricksdoc"
|
||||
|
||||
|
||||
# -- Options for LaTeX output ---------------------------------------------
|
||||
@@ -212,14 +201,12 @@ latex_elements = {
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
#
|
||||
# 'papersize': 'letterpaper',
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#
|
||||
# 'pointsize': '10pt',
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#
|
||||
'preamble': r'''
|
||||
"preamble": r"""
|
||||
\usepackage{CJKutf8}
|
||||
\makeatletter
|
||||
\fancypagestyle{normal}{
|
||||
@@ -239,51 +226,46 @@ latex_elements = {
|
||||
\renewcommand{\footrulewidth}{0.4pt}
|
||||
}
|
||||
\makeatother
|
||||
''' % {
|
||||
'disclaimer': ' '.join((_DISCLAIMER, '©', copyright)),
|
||||
"""
|
||||
% {
|
||||
"disclaimer": " ".join((_DISCLAIMER, "©", copyright)),
|
||||
},
|
||||
|
||||
# Latex figure (float) alignment
|
||||
#
|
||||
# 'figure_align': 'htbp',
|
||||
'extraclassoptions': 'openany,oneside',
|
||||
|
||||
'releasename': 'Version',
|
||||
"extraclassoptions": "openany,oneside",
|
||||
"releasename": "Version",
|
||||
}
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
(master_doc, ''.join([project, '-v', version, '.tex']), _TITLE,
|
||||
author, 'manual'),
|
||||
(master_doc, "".join([project, "-v", version, ".tex"]), _TITLE, author, "manual"),
|
||||
]
|
||||
|
||||
# -- Content control -----------------------------------------------------
|
||||
|
||||
|
||||
exclude_patterns = [
|
||||
'ev3devices.rst',
|
||||
'hubs/ev3brick.rst',
|
||||
'iodevices/analogsensor.rst',
|
||||
'iodevices/dcmotor.rst',
|
||||
'iodevices/ev3devsensor.rst',
|
||||
'iodevices/i2cdevice.rst',
|
||||
'iodevices/lumpdevice.rst',
|
||||
'iodevices/uartdevice.rst',
|
||||
'media.rst',
|
||||
'messaging.rst',
|
||||
'nxtdevices.rst',
|
||||
'tools/datalog.rst'
|
||||
"ev3devices.rst",
|
||||
"hubs/ev3brick.rst",
|
||||
"iodevices/analogsensor.rst",
|
||||
"iodevices/dcmotor.rst",
|
||||
"iodevices/ev3devsensor.rst",
|
||||
"iodevices/i2cdevice.rst",
|
||||
"iodevices/lumpdevice.rst",
|
||||
"iodevices/uartdevice.rst",
|
||||
"media.rst",
|
||||
"messaging.rst",
|
||||
"nxtdevices.rst",
|
||||
"tools/datalog.rst",
|
||||
]
|
||||
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
(master_doc, 'pybricks', 'Pybricks Documentation',
|
||||
[author], 1)
|
||||
]
|
||||
man_pages = [(master_doc, "pybricks", "Pybricks Documentation", [author], 1)]
|
||||
|
||||
|
||||
# -- Options for Texinfo output -------------------------------------------
|
||||
@@ -292,33 +274,100 @@ man_pages = [
|
||||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
(master_doc, 'Pybricks', 'Pybricks Documentation',
|
||||
author, 'Pybricks', 'One line description of project.',
|
||||
'Miscellaneous'),
|
||||
(
|
||||
master_doc,
|
||||
"Pybricks",
|
||||
"Pybricks Documentation",
|
||||
author,
|
||||
"Pybricks",
|
||||
"One line description of project.",
|
||||
"Miscellaneous",
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
# -- .. availability:: directive
|
||||
|
||||
|
||||
class AvailabilityDirective(Directive):
|
||||
has_content = True
|
||||
option_spec = {
|
||||
'movehub': flag,
|
||||
'cityhub': flag,
|
||||
'technichub': flag,
|
||||
'ev3dev-stretch': flag,
|
||||
"movehub": flag,
|
||||
"cityhub": flag,
|
||||
"technichub": flag,
|
||||
"ev3dev-stretch": flag,
|
||||
}
|
||||
|
||||
def run(self):
|
||||
if not self.options:
|
||||
raise self.error('Must specify at least one platform.')
|
||||
raise self.error("Must specify at least one platform.")
|
||||
# TODO: make links to platform pages
|
||||
return [nodes.emphasis(text='Availability: '),
|
||||
nodes.Text(', '.join(self.options))]
|
||||
return [
|
||||
nodes.emphasis(text="Availability: "),
|
||||
nodes.Text(", ".join(self.options)),
|
||||
]
|
||||
|
||||
|
||||
def on_missing_reference(
|
||||
app: Sphinx, env: BuildEnvironment, node: pending_xref, contnode: nodes.Element
|
||||
) -> nodes.Element:
|
||||
# The Number type alias is on the Signals and Units page instead of on the
|
||||
# pybricks.parameters page so normal resolution doesn't work
|
||||
if node["reftype"] == "class" and node["reftarget"] == "Number":
|
||||
return make_refnode(
|
||||
app.builder, node["refdoc"], "signaltypes", "numbers", contnode
|
||||
)
|
||||
|
||||
# References with special characters can't exist, so we have to suppress
|
||||
# warnings when Sphinx tries to cross reference units like deg/s. For
|
||||
# consistency, we also treat units without special characters this way.
|
||||
for unit in [
|
||||
"dBm",
|
||||
"deg",
|
||||
"deg/s",
|
||||
"deg/s²",
|
||||
"mm",
|
||||
"mm/s",
|
||||
"mm/s²",
|
||||
"%",
|
||||
"mV",
|
||||
"mA",
|
||||
"ms",
|
||||
"mNm",
|
||||
"Hz",
|
||||
"°C",
|
||||
"J",
|
||||
"Ω",
|
||||
"N",
|
||||
]:
|
||||
try:
|
||||
# If they match on raw source, we are dealing with argument types.
|
||||
if unit == contnode.rawsource:
|
||||
# Return as-is to suppress missing cross reference warning. We
|
||||
# could make this more fancy by returning an xref node that links
|
||||
# to the signals page.
|
||||
return contnode
|
||||
|
||||
except AttributeError:
|
||||
pass
|
||||
|
||||
# Return types are denoted as "int: deg"
|
||||
try:
|
||||
# Try to unpack the node.
|
||||
ret_type, ret_unit = str(contnode).split(": ")
|
||||
except ValueError:
|
||||
# Not a valid format, so skip.
|
||||
continue
|
||||
|
||||
# If it's a match, we could format the node so it looks a bit nicer.
|
||||
# For now just keep the colon notation as is.
|
||||
if unit == ret_unit:
|
||||
return nodes.Text(f"{ret_type}: {ret_unit}")
|
||||
|
||||
|
||||
def setup(app: Sphinx):
|
||||
app.add_directive('availability', AvailabilityDirective)
|
||||
app.add_directive("availability", AvailabilityDirective)
|
||||
app.connect("missing-reference", on_missing_reference)
|
||||
|
||||
|
||||
# -- Python domain hacks ---------------------------------------------------
|
||||
|
||||
@@ -5,27 +5,31 @@ from docutils.parsers.rst import Directive
|
||||
class PybricksClasslinkDirective(Directive):
|
||||
|
||||
required_arguments = 1
|
||||
optional_arguments = 1
|
||||
|
||||
def run(self):
|
||||
# Get link name from sphinx-directive
|
||||
# Get link and name from sphinx-directive
|
||||
name = self.arguments[0]
|
||||
link = name if len(self.arguments) == 1 else self.arguments[1]
|
||||
|
||||
html = (
|
||||
'<a href="{0}.html">'.format(name.lower()) +
|
||||
'<dl class="py class">' +
|
||||
'<dt>' +
|
||||
'<em class="property">class </em>' +
|
||||
'<code class="sig-name descname">' + name + '</code>' +
|
||||
'</dt>' +
|
||||
'<dd></dd>' +
|
||||
'</dl>' +
|
||||
'</a>'
|
||||
'<a href="{0}.html">'.format(link.lower())
|
||||
+ '<dl class="py class">'
|
||||
+ "<dt>"
|
||||
+ '<em class="property">class </em>'
|
||||
+ '<code class="sig-name descname">'
|
||||
+ name
|
||||
+ "</code>"
|
||||
+ "</dt>"
|
||||
+ "<dd></dd>"
|
||||
+ "</dl>"
|
||||
+ "</a>"
|
||||
)
|
||||
|
||||
# Return the node
|
||||
node = nodes.raw('', html, format="html")
|
||||
node = nodes.raw("", html, format="html")
|
||||
return [node]
|
||||
|
||||
|
||||
def setup(app):
|
||||
app.add_directive_to_domain('py', 'pybricks-classlink', PybricksClasslinkDirective)
|
||||
app.add_directive_to_domain("py", "pybricks-classlink", PybricksClasslinkDirective)
|
||||
|
||||
@@ -16,28 +16,27 @@ class PybricksColorDirective(Directive):
|
||||
color = getattr(Color, name)
|
||||
|
||||
# Convert HSV to RGB
|
||||
r, g, b = hsv_to_rgb(color.h/360, color.s/100, color.v/100)
|
||||
r, g, b = hsv_to_rgb(color.h / 360, color.s / 100, color.v / 100)
|
||||
|
||||
# Convert RGB to HEX
|
||||
rgbhex = '#{0:02x}{1:02x}{2:02x}'.format(
|
||||
round(r*255),
|
||||
round(g*255),
|
||||
round(b*255)
|
||||
rgbhex = "#{0:02x}{1:02x}{2:02x}".format(
|
||||
round(r * 255), round(g * 255), round(b * 255)
|
||||
)
|
||||
|
||||
# Render a small block of the given color
|
||||
css = "background-color: {0}; color: {0}; width: 50px;".format(rgbhex)
|
||||
|
||||
if name == "WHITE":
|
||||
css += "border-style: solid; border-width: 0.5px;" + \
|
||||
"border-color: #666666;"
|
||||
css += (
|
||||
"border-style: solid; border-width: 0.5px;" + "border-color: #666666;"
|
||||
)
|
||||
|
||||
html = '<div id="test" style="{0}">_</div>'.format(css)
|
||||
|
||||
# Return the node
|
||||
node = nodes.raw('', html, format="html")
|
||||
node = nodes.raw("", html, format="html")
|
||||
return [node]
|
||||
|
||||
|
||||
def setup(app):
|
||||
app.add_directive_to_domain('py', 'pybricks-color', PybricksColorDirective)
|
||||
app.add_directive_to_domain("py", "pybricks-color", PybricksColorDirective)
|
||||
|
||||
@@ -10,10 +10,10 @@ FEATURES_SMALL = set()
|
||||
|
||||
# Medium feature set.
|
||||
FEATURES_MEDIUM = FEATURES_SMALL | {
|
||||
'pybricks-geometry',
|
||||
'pybricks-iodevices',
|
||||
'stm32-extra',
|
||||
'stm32-float',
|
||||
"pybricks-common-control",
|
||||
"pybricks-iodevices",
|
||||
"stm32-extra",
|
||||
"stm32-float",
|
||||
}
|
||||
|
||||
# Large feature set.
|
||||
@@ -21,11 +21,12 @@ FEATURES_LARGE = FEATURES_MEDIUM | set()
|
||||
|
||||
# Features per hub.
|
||||
HUB_FEATURES = {
|
||||
'movehub': {'movehub'} | FEATURES_SMALL,
|
||||
'cityhub': {'cityhub'} | FEATURES_MEDIUM,
|
||||
'technichub': {'technichub'} | FEATURES_MEDIUM,
|
||||
'primehub': {'primehub', 'inventorhub'} | FEATURES_LARGE,
|
||||
'inventorhub': {'primehub', 'inventorhub'} | FEATURES_LARGE,
|
||||
"movehub": {"movehub"} | FEATURES_SMALL,
|
||||
"cityhub": {"cityhub"} | FEATURES_MEDIUM,
|
||||
"technichub": {"technichub", "gyro"} | FEATURES_MEDIUM,
|
||||
"primehub": {"primehub", "inventorhub", "light-matrix", "gyro"} | FEATURES_LARGE,
|
||||
"inventorhub": {"primehub", "inventorhub", "light-matrix", "gyro"} | FEATURES_LARGE,
|
||||
"essentialhub": {"essentialhub", "gyro"} | FEATURES_LARGE,
|
||||
}
|
||||
|
||||
|
||||
@@ -40,25 +41,24 @@ class PybricksRequirementsStaticDirective(Directive):
|
||||
# CC BY-SA 4.0 via https://stackoverflow.com/a/63728208
|
||||
env = self.state.document.settings.env
|
||||
|
||||
destdir = path.join(env.app.builder.outdir, '_images')
|
||||
destdir = path.join(env.app.builder.outdir, "_images")
|
||||
if not path.exists(destdir):
|
||||
makedirs(destdir)
|
||||
|
||||
for hub in HUB_FEATURES:
|
||||
for compat in ("true", "false"):
|
||||
uri = 'compat_{0}_{1}_label.png'.format(hub, compat)
|
||||
src_uri = path.join(env.app.builder.srcdir, 'images', uri)
|
||||
build_uri = path.join(env.app.builder.outdir, '_images', uri)
|
||||
copyfile(src_uri, build_uri)
|
||||
uri = "compat_{0}.png".format(hub)
|
||||
src_uri = path.join(env.app.builder.srcdir, "diagrams", uri)
|
||||
build_uri = path.join(env.app.builder.outdir, "_images", uri)
|
||||
copyfile(src_uri, build_uri)
|
||||
|
||||
# Get requirements from sphinx-directive.
|
||||
requirements = set(self.arguments)
|
||||
|
||||
# Cell with image of a hub.
|
||||
hub_cell = """
|
||||
<th><div class="align-default">
|
||||
<img alt="" src="{0}_images/compat_{1}_{2}_label.png">
|
||||
</div></th>
|
||||
<th background="{0}_images/compat_{1}.png" class="requirements-table-th requirements-table-th">
|
||||
{2}
|
||||
</th>
|
||||
"""
|
||||
|
||||
# Determine how far up the tree we are to set correct image path.
|
||||
@@ -67,18 +67,19 @@ class PybricksRequirementsStaticDirective(Directive):
|
||||
depth_path = "../" * depth
|
||||
|
||||
# Table row with hub images.
|
||||
compat_row = "".join([
|
||||
hub_cell.format(
|
||||
depth_path,
|
||||
hub,
|
||||
"true" if requirements <= features else "false")
|
||||
for hub, features in HUB_FEATURES.items()
|
||||
])
|
||||
compat_row = "".join(
|
||||
[
|
||||
hub_cell.format(
|
||||
depth_path, hub, "✅" if requirements <= features else "❌"
|
||||
)
|
||||
for hub, features in HUB_FEATURES.items()
|
||||
]
|
||||
)
|
||||
|
||||
# Generate full table.
|
||||
html = """
|
||||
<div class="wy-table-responsive">
|
||||
<table class="docutils align-default">
|
||||
<table class="docutils align-default requirements-table">
|
||||
<tbody>
|
||||
<tr>
|
||||
{0}
|
||||
@@ -86,16 +87,16 @@ class PybricksRequirementsStaticDirective(Directive):
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
""".format(compat_row)
|
||||
""".format(
|
||||
compat_row
|
||||
)
|
||||
|
||||
# Return the node.
|
||||
node = nodes.raw('', html, format="html")
|
||||
node = nodes.raw("", html, format="html")
|
||||
return [node]
|
||||
|
||||
|
||||
def setup(app):
|
||||
app.add_directive_to_domain(
|
||||
'py',
|
||||
'pybricks-requirements-static',
|
||||
PybricksRequirementsStaticDirective
|
||||
"py", "pybricks-requirements-static", PybricksRequirementsStaticDirective
|
||||
)
|
||||
|
||||
@@ -42,3 +42,19 @@ SOFTWARE. */
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.requirements-table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.requirements-table-th {
|
||||
background-size:contain;
|
||||
background-repeat: no-repeat;
|
||||
text-align: right;
|
||||
padding: 6px !important;
|
||||
}
|
||||
|
||||
.requirements-table-th:after {
|
||||
content: '';
|
||||
display: block;
|
||||
margin-top: 80%;
|
||||
}
|
||||
|
||||
@@ -29,25 +29,25 @@ from sphinx.util.osutil import copyfile
|
||||
from sphinx.util import logging
|
||||
|
||||
|
||||
CSS_FILE = 'requirements.css'
|
||||
JS_FILE = 'requirements.js'
|
||||
CSS_FILE = "requirements.css"
|
||||
JS_FILE = "requirements.js"
|
||||
|
||||
|
||||
class PybricksRequirementsDirective(Directive):
|
||||
has_content = True
|
||||
option_spec = {'header': directives.unchanged}
|
||||
option_spec = {"header": directives.unchanged}
|
||||
|
||||
required_arguments = 0
|
||||
optional_arguments = 10
|
||||
|
||||
def run(self):
|
||||
node = nodes.container()
|
||||
node['classes'].append('toggle-content')
|
||||
node["classes"].append("toggle-content")
|
||||
|
||||
par = nodes.container()
|
||||
par['classes'].append('toggle-header')
|
||||
par["classes"].append("toggle-header")
|
||||
|
||||
content = '.. pybricks-requirements-static:: ' + " ".join(self.arguments)
|
||||
content = ".. pybricks-requirements-static:: " + " ".join(self.arguments)
|
||||
|
||||
self.state.nested_parse(StringList([content]), self.content_offset, node)
|
||||
|
||||
@@ -60,20 +60,20 @@ def add_assets(app):
|
||||
|
||||
|
||||
def copy_assets(app, exception):
|
||||
if app.builder.name not in ['html', 'readthedocs'] or exception:
|
||||
if app.builder.name not in ["html", "readthedocs"] or exception:
|
||||
return
|
||||
logger = logging.getLogger(__name__)
|
||||
logger.info('Copying requirements stylesheet/javascript... ', nonl=True)
|
||||
dest = os.path.join(app.builder.outdir, '_static', CSS_FILE)
|
||||
logger.info("Copying requirements stylesheet/javascript... ", nonl=True)
|
||||
dest = os.path.join(app.builder.outdir, "_static", CSS_FILE)
|
||||
source = os.path.join(os.path.abspath(os.path.dirname(__file__)), CSS_FILE)
|
||||
copyfile(source, dest)
|
||||
dest = os.path.join(app.builder.outdir, '_static', JS_FILE)
|
||||
dest = os.path.join(app.builder.outdir, "_static", JS_FILE)
|
||||
source = os.path.join(os.path.abspath(os.path.dirname(__file__)), JS_FILE)
|
||||
copyfile(source, dest)
|
||||
logger.info('done')
|
||||
logger.info("done")
|
||||
|
||||
|
||||
def setup(app):
|
||||
app.add_directive('pybricks-requirements', PybricksRequirementsDirective)
|
||||
app.connect('builder-inited', add_assets)
|
||||
app.connect('build-finished', copy_assets)
|
||||
app.add_directive("pybricks-requirements", PybricksRequirementsDirective)
|
||||
app.connect("builder-inited", add_assets)
|
||||
app.connect("build-finished", copy_assets)
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
"""This directive hides the builtin directives
|
||||
* versionchanged
|
||||
* versionadded
|
||||
* deprecated
|
||||
when building documentation with the 'ide' tag.
|
||||
"""
|
||||
from docutils import nodes
|
||||
from docutils.parsers.rst import Directive
|
||||
|
||||
|
||||
class PybricksVersionDirective(Directive):
|
||||
|
||||
has_content = True
|
||||
|
||||
def run(self):
|
||||
html = ""
|
||||
node = nodes.raw("", html, format="html")
|
||||
return [node]
|
||||
|
||||
|
||||
def setup(app):
|
||||
if "ide" in app.tags.tags:
|
||||
app.add_directive_to_domain(
|
||||
"py", "deprecated", PybricksVersionDirective, override=True
|
||||
)
|
||||
app.add_directive_to_domain(
|
||||
"py", "versionadded", PybricksVersionDirective, override=True
|
||||
)
|
||||
app.add_directive_to_domain(
|
||||
"py", "versionchanged", PybricksVersionDirective, override=True
|
||||
)
|
||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 11 KiB |
@@ -0,0 +1,62 @@
|
||||
rm output/*
|
||||
cp LPub3D/assem/main-*.png output/all.png
|
||||
cp LPub3D/assem/main_1_ev3devices-*.png output/ev3device-all.png
|
||||
cp LPub3D/assem/main_1_ev3devices_1_ev3device-color-*.png output/ev3device-color.png
|
||||
cp LPub3D/assem/main_1_ev3devices_1_ev3device-ev3-*.png output/ev3device-ev3.png
|
||||
cp LPub3D/assem/main_1_ev3devices_1_ev3device-gyro-*.png output/ev3device-gyro.png
|
||||
cp LPub3D/assem/main_1_ev3devices_1_ev3device-infrared-*.png output/ev3device-infrared.png
|
||||
cp LPub3D/assem/main_1_ev3devices_1_ev3device-motors-*.png output/ev3device-motors.png
|
||||
cp LPub3D/assem/main_1_ev3devices_1_ev3device-touch-*.png output/ev3device-touch.png
|
||||
cp LPub3D/assem/main_1_ev3devices_1_ev3device-ultrasonic-*.png output/ev3device-ultrasonic.png
|
||||
cp LPub3D/assem/main_1_hubs_2_hubs-lwp3-*.png output/hub-lwp3.png
|
||||
cp LPub3D/assem/main_1_hubs-*0_1_1*.png output/hub-spike-inventor.png
|
||||
cp LPub3D/assem/main_1_hubs-*0_1_2*.png output/hub-all.png
|
||||
cp LPub3D/assem/main_1_hubs_1_hub-city-*.png output/hub-city.png
|
||||
cp LPub3D/assem/main_1_hubs_1_hub-essential-*35_-35_0_ABS.png output/hub-essential.png
|
||||
cp LPub3D/assem/main_1_hubs_1_hub-essential-*45_45_0_ABS.png output/hub-essential-orientation.png
|
||||
cp LPub3D/assem/main_1_hubs_1_hub-inventor-*35_-35_0_ABS.png output/hub-inventor.png
|
||||
cp LPub3D/assem/main_1_hubs_1_hub-inventor-*45_45_0_ABS.png output/hub-inventor-orientation.png
|
||||
cp LPub3D/assem/main_1_hubs_1_hub-move-*35_-35_0_ABS.png output/hub-move.png
|
||||
cp LPub3D/assem/main_1_hubs_1_hub-move-*45_45_0_ABS.png output/hub-move-orientation.png
|
||||
cp LPub3D/assem/main_1_hubs_1_hub-move-*35_-125_0_ABS.png output/hub-move-motor-a.png
|
||||
cp LPub3D/assem/main_1_hubs_1_hub-move-*35_55_0_ABS.png output/hub-move-motor-b.png
|
||||
cp LPub3D/assem/main_1_hubs_1_hub-prime-*35_-35_0_ABS.png output/hub-prime.png
|
||||
cp LPub3D/assem/main_1_hubs_1_hub-prime-*45_45_0_ABS.png output/hub-prime-orientation.png
|
||||
cp LPub3D/assem/main_1_hubs_1_hub-prime-*90_0_0_ABS.png output/hub-prime-display.png
|
||||
cp LPub3D/assem/main_1_hubs_1_hub-technic-*35_-35_0_ABS.png output/hub-technic.png
|
||||
cp LPub3D/assem/main_1_hubs_1_hub-technic-*45_45_0_ABS.png output/hub-technic-orientation.png
|
||||
cp LPub3D/assem/main_1_iodevices-*.png output/iodevice-all.png
|
||||
cp LPub3D/assem/main_1_iodevices_1_iodevice-dcmotor-*.png output/iodevice-dcmotor.png
|
||||
cp LPub3D/assem/main_1_iodevices_1_iodevice-pupdevice-*.png output/iodevice-pupdevice.png
|
||||
cp LPub3D/assem/main_1_iodevices_1_iodevice-rj12blue-*.png output/iodevice-rj12blue.png
|
||||
cp LPub3D/assem/main_1_iodevices_1_iodevice-rj12brown-*.png output/iodevice-rj12brown.png
|
||||
cp LPub3D/assem/main_1_iodevices_1_iodevice-rj12cyan-*.png output/iodevice-rj12cyan.png
|
||||
cp LPub3D/assem/main_1_iodevices_1_iodevice-rj12green-*.png output/iodevice-rj12green.png
|
||||
cp LPub3D/assem/main_1_iodevices_1_iodevice-rj12grey-*.png output/iodevice-rj12grey.png
|
||||
cp LPub3D/assem/main_1_iodevices_1_iodevice-rj12pcbbox-*.png output/iodevice-rj12pcbbox.png
|
||||
cp LPub3D/assem/main_1_nxtdevices-*.png output/nxtdevice-all.png
|
||||
cp LPub3D/assem/main_1_nxtdevices_1_nxtdevice-color-*.png output/nxtdevice-color.png
|
||||
cp LPub3D/assem/main_1_nxtdevices_1_nxtdevice-energy-*.png output/nxtdevice-energy.png
|
||||
cp LPub3D/assem/main_1_nxtdevices_1_nxtdevice-light-*.png output/nxtdevice-light.png
|
||||
cp LPub3D/assem/main_1_nxtdevices_1_nxtdevice-nxt-*.png output/nxtdevice-nxt.png
|
||||
cp LPub3D/assem/main_1_nxtdevices_1_nxtdevice-sound-*.png output/nxtdevice-sound.png
|
||||
cp LPub3D/assem/main_1_nxtdevices_1_nxtdevice-temperature-*.png output/nxtdevice-temperature.png
|
||||
cp LPub3D/assem/main_1_nxtdevices_1_nxtdevice-touch-*.png output/nxtdevice-touch.png
|
||||
cp LPub3D/assem/main_1_nxtdevices_1_nxtdevice-ultrasonic-*.png output/nxtdevice-ultrasonic.png
|
||||
cp LPub3D/assem/main_1_pupdcmotors-*.png output/pupdevice-dcmotors.png
|
||||
cp LPub3D/assem/main_1_pupdevices-*.png output/pupdevice-all.png
|
||||
cp LPub3D/assem/main_1_pupdevices_1_pupdevice-color-*0_0.png output/pupdevice-color-front.png
|
||||
cp LPub3D/assem/main_1_pupdevices_1_pupdevice-color-*ABS.png output/pupdevice-color.png
|
||||
cp LPub3D/assem/main_1_pupdevices_1_pupdevice-colordistance-*.png output/pupdevice-colordistance.png
|
||||
cp LPub3D/assem/main_1_pupdevices_1_pupdevice-force-*.png output/pupdevice-force.png
|
||||
cp LPub3D/assem/main_1_pupdevices_1_pupdevice-infrared-*.png output/pupdevice-infrared.png
|
||||
cp LPub3D/assem/main_1_pupdevices_1_pupdevice-light-*.png output/pupdevice-light.png
|
||||
cp LPub3D/assem/main_1_pupdevices_1_pupdevice-lightmatrix-*.png output/pupdevice-lightmatrix.png
|
||||
cp LPub3D/assem/main_1_pupdevices_1_pupdevice-pfmotor-*.png output/pupdevice-pfmotor.png
|
||||
cp LPub3D/assem/main_1_pupdevices_1_pupdevice-remote-*.png output/pupdevice-remote.png
|
||||
cp LPub3D/assem/main_1_pupdevices_1_pupdevice-tilt-*35_-35_0_ABS.png output/pupdevice-tilt.png
|
||||
cp LPub3D/assem/main_1_pupdevices_1_pupdevice-tilt-*45_-135_0_ABS.png output/pupdevice-tilt-orientation.png
|
||||
cp LPub3D/assem/main_1_pupdevices_1_pupdevice-ultrasonic-*0_0.png output/pupdevice-ultrasonic-front.png
|
||||
cp LPub3D/assem/main_1_pupdevices_1_pupdevice-ultrasonic-*ABS.png output/pupdevice-ultrasonic.png
|
||||
cp LPub3D/assem/main_1_pupmotors-*.png output/pupdevice-motors.png
|
||||
cp LPub3D/assem/main_1_imu-orientation-*.png output/imu-orientation.png
|
||||
|
After Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 360 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 140 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 360 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 184 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 132 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 727 KiB |
|
After Width: | Height: | Size: 233 KiB |
|
After Width: | Height: | Size: 63 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 7.6 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 315 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 95 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 623 KiB |
|
After Width: | Height: | Size: 6.0 KiB |
|
After Width: | Height: | Size: 53 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 169 KiB |
|
After Width: | Height: | Size: 63 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 650 KiB |
|
After Width: | Height: | Size: 165 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 59 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 57 KiB |
@@ -4,47 +4,54 @@
|
||||
# Pybricks documentation build configuration file
|
||||
#
|
||||
import os
|
||||
import sys
|
||||
|
||||
# General information about the project.
|
||||
project = 'pybricks'
|
||||
copyright = '2018-2021 The Pybricks Authors'
|
||||
author = ''
|
||||
project = "pybricks"
|
||||
copyright = "2018-2023 The Pybricks Authors"
|
||||
author = ""
|
||||
|
||||
_TITLE = 'Pybricks Modules and Examples'
|
||||
_DISCLAIMER = 'LEGO, the LEGO logo, MINDSTORMS and the MINDSTORMS EV3 logo are\
|
||||
_TITLE = "Pybricks Modules and Examples"
|
||||
_DISCLAIMER = "LEGO, the LEGO logo, MINDSTORMS and the MINDSTORMS EV3 logo are\
|
||||
trademarks and/or copyrights of the LEGO Group of companies \
|
||||
which does not sponsor, authorize or endorse this site.'
|
||||
which does not sponsor, authorize or endorse this site."
|
||||
|
||||
html_favicon = '../common/images/favicon.ico'
|
||||
html_logo = '../common/images/pybricks-logo-rtd.png'
|
||||
latex_logo = '../common/images/pybricks-logo-large.png'
|
||||
html_favicon = "../common/images/favicon.ico"
|
||||
html_logo = "../common/images/pybricks-logo-rtd.png"
|
||||
latex_logo = "../common/images/pybricks-logo-large.png"
|
||||
|
||||
# Build main docs for RTD by default.
|
||||
# Since tags cannot be passed via the TAG make variable on read the docs,
|
||||
# add it manually.
|
||||
if os.environ.get('READTHEDOCS', None) == 'True':
|
||||
tags.add('main') # noqa F821
|
||||
if os.environ.get("READTHEDOCS", None) == "True":
|
||||
tags.add("main") # noqa F821
|
||||
|
||||
# HACK: this allows Number type alias to be imported by Sphinx
|
||||
os.environ["SPHINX_BUILD"] = "True"
|
||||
|
||||
# Addtional configuration of the IDE docs
|
||||
if 'ide' in tags.tags: # noqa F821
|
||||
_DISCLAIMER = ''
|
||||
# Additional configuration of the IDE docs
|
||||
if "ide" in tags.tags: # noqa F821
|
||||
_DISCLAIMER = ""
|
||||
html_show_copyright = False
|
||||
html_show_sphinx = False
|
||||
html_css_files = ['css/ide.css']
|
||||
html_js_files = ['js/ide.js']
|
||||
html_css_files = ["css/ide.css"]
|
||||
html_js_files = ["js/ide.js"]
|
||||
|
||||
imgmath_image_format = 'svg'
|
||||
imgmath_image_format = "svg"
|
||||
imgmath_use_preview = True # requires Sphinx v3
|
||||
imgmath_latex_preamble = r'''
|
||||
imgmath_latex_preamble = r"""
|
||||
\usepackage{newtxsf}
|
||||
'''
|
||||
"""
|
||||
|
||||
exec(open(os.path.abspath("../common/conf.py")).read())
|
||||
|
||||
# Addtional configuration of the IDE docs
|
||||
if 'ide' in tags.tags: # noqa F821
|
||||
# Additional configuration of the IDE docs
|
||||
if "ide" in tags.tags: # noqa F821
|
||||
|
||||
extensions.remove('sphinx.ext.mathjax') # noqa F821
|
||||
extensions.append('sphinx.ext.imgmath') # noqa F821
|
||||
html_theme_options['prev_next_buttons_location'] = None # noqa F821
|
||||
extensions.remove("sphinx.ext.mathjax") # noqa F821
|
||||
extensions.append("sphinx.ext.imgmath") # noqa F821
|
||||
html_theme_options["prev_next_buttons_location"] = None # noqa F821
|
||||
|
||||
# Build hub specific example scripts.
|
||||
sys.path.append(os.path.abspath("../../examples/pup/hub_common"))
|
||||
import make_examples # noqa F401, E402
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
|
||||
SRC_DIR = .
|
||||
OUT_DIR = ../images
|
||||
|
||||
POSTFIX := _label
|
||||
SVG := $(wildcard $(SRC_DIR)/*.svg)
|
||||
DIAGRAMS := $(patsubst $(SRC_DIR)/%.svg,$(OUT_DIR)/%$(POSTFIX).png,$(SVG))
|
||||
DIR := ${CURDIR}
|
||||
|
||||
all: $(DIAGRAMS)
|
||||
|
||||
clean:
|
||||
rm -f $(DIAGRAMS)
|
||||
|
||||
$(OUT_DIR)/%$(POSTFIX).png: $(SRC_DIR)/%.svg
|
||||
if inkscape --version | grep -q "Inkscape 0"; then \
|
||||
inkscape --file=$(DIR)/$< --export-area-drawing --export-png=$(DIR)/$@; \
|
||||
else \
|
||||
inkscape \
|
||||
--export-area-drawing \
|
||||
--export-background=white \
|
||||
--export-background-opacity=1.0 \
|
||||
--export-file=$(DIR)/$@ \
|
||||
$(DIR)/$<; \
|
||||
fi
|
||||
@@ -1,104 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="150"
|
||||
height="135"
|
||||
viewBox="0 0 39.687499 35.718751"
|
||||
version="1.1"
|
||||
id="svg887"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
sodipodi:docname="compat_cityhub_false.svg">
|
||||
<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.959798"
|
||||
inkscape:cx="10.681815"
|
||||
inkscape:cy="89.597718"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1172"
|
||||
inkscape:window-x="1920"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="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" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-261.28123)">
|
||||
<rect
|
||||
style="fill:#fcfcfc;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="rect819"
|
||||
width="39.6875"
|
||||
height="35.71875"
|
||||
x="3.5527137e-15"
|
||||
y="261.28122" />
|
||||
<image
|
||||
sodipodi:absref="../images/cityhub.png"
|
||||
xlink:href="../images/cityhub.png"
|
||||
style="stroke-width:5.6583333"
|
||||
width="30.908323"
|
||||
height="31.75"
|
||||
preserveAspectRatio="none"
|
||||
id="image1470"
|
||||
x="5.2042809"
|
||||
y="263.16479" />
|
||||
<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.5 KiB |
@@ -1,104 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="150"
|
||||
height="135"
|
||||
viewBox="0 0 39.687499 35.718751"
|
||||
version="1.1"
|
||||
id="svg887"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
sodipodi:docname="compat_inventorhub_false.svg">
|
||||
<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.959798"
|
||||
inkscape:cx="10.681815"
|
||||
inkscape:cy="89.597718"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1172"
|
||||
inkscape:window-x="1920"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="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" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-261.28123)">
|
||||
<rect
|
||||
style="fill:#fcfcfc;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="rect819"
|
||||
width="39.6875"
|
||||
height="35.71875"
|
||||
x="0"
|
||||
y="261.28122" />
|
||||
<image
|
||||
sodipodi:absref="../images/inventorhub.png"
|
||||
xlink:href="../images/inventorhub.png"
|
||||
style="stroke-width:5.92592621"
|
||||
width="34.915073"
|
||||
height="35.71875"
|
||||
preserveAspectRatio="none"
|
||||
id="image1481"
|
||||
x="2.6458333"
|
||||
y="261.28122" />
|
||||
<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.5 KiB |
@@ -1,106 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="150"
|
||||
height="135"
|
||||
viewBox="0 0 39.687499 35.718751"
|
||||
version="1.1"
|
||||
id="svg887"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
sodipodi:docname="compat_movehub_false.svg">
|
||||
<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.959798"
|
||||
inkscape:cx="10.681815"
|
||||
inkscape:cy="89.597718"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1172"
|
||||
inkscape:window-x="1920"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="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" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-261.28123)">
|
||||
<rect
|
||||
style="fill:#fcfcfc;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="rect819"
|
||||
width="39.6875"
|
||||
height="35.71875"
|
||||
x="3.5527137e-15"
|
||||
y="261.28122" />
|
||||
<image
|
||||
sodipodi:absref="../images/movehub.png"
|
||||
xlink:href="../images/movehub.png"
|
||||
transform="translate(25.390602,-51.6498)"
|
||||
clip-path="url(#clipPath1545)"
|
||||
style="stroke-width:5.92592621"
|
||||
width="40.183594"
|
||||
height="35.71875"
|
||||
preserveAspectRatio="none"
|
||||
id="image1492"
|
||||
x="-25.506657"
|
||||
y="312.93103" />
|
||||
<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.6 KiB |
@@ -1,96 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="150"
|
||||
height="135"
|
||||
viewBox="0 0 39.687499 35.718751"
|
||||
version="1.1"
|
||||
id="svg887"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
sodipodi:docname="compat_movehub_true.svg">
|
||||
<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.959798"
|
||||
inkscape:cx="69.775738"
|
||||
inkscape:cy="79.243654"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1172"
|
||||
inkscape:window-x="1920"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="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" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-261.28123)">
|
||||
<rect
|
||||
style="fill:#fcfcfc;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="rect819"
|
||||
width="39.6875"
|
||||
height="35.71875"
|
||||
x="7.1054274e-15"
|
||||
y="261.28122" />
|
||||
<image
|
||||
sodipodi:absref="../images/movehub.png"
|
||||
xlink:href="../images/movehub.png"
|
||||
transform="translate(25.390602,-51.6498)"
|
||||
clip-path="url(#clipPath1545)"
|
||||
style="stroke-width:5.92592621"
|
||||
width="40.183594"
|
||||
height="35.71875"
|
||||
preserveAspectRatio="none"
|
||||
id="image1492"
|
||||
x="-25.506657"
|
||||
y="312.93103" />
|
||||
<path
|
||||
style="fill:none;stroke:#84ba4c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 31.147057,265.82725 1.011052,2.9815 3.622948,-4.60003"
|
||||
id="path854"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 3.2 KiB |
@@ -1,104 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="150"
|
||||
height="135"
|
||||
viewBox="0 0 39.687499 35.718751"
|
||||
version="1.1"
|
||||
id="svg887"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
sodipodi:docname="compat_primehub_false.svg">
|
||||
<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.959798"
|
||||
inkscape:cx="10.681815"
|
||||
inkscape:cy="89.597718"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1172"
|
||||
inkscape:window-x="1920"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="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" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-261.28123)">
|
||||
<rect
|
||||
style="fill:#fcfcfc;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="rect819"
|
||||
width="39.6875"
|
||||
height="35.71875"
|
||||
x="0"
|
||||
y="261.28122" />
|
||||
<image
|
||||
sodipodi:absref="../images/primehub.png"
|
||||
xlink:href="../images/primehub.png"
|
||||
style="stroke-width:5.92592621"
|
||||
width="34.915073"
|
||||
height="35.71875"
|
||||
preserveAspectRatio="none"
|
||||
id="image1503"
|
||||
x="2.6458333"
|
||||
y="261.28122" />
|
||||
<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.5 KiB |
@@ -1,104 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="150"
|
||||
height="135"
|
||||
viewBox="0 0 39.687499 35.718751"
|
||||
version="1.1"
|
||||
id="svg887"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
sodipodi:docname="compat_technichub_false.svg">
|
||||
<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.959798"
|
||||
inkscape:cx="10.681815"
|
||||
inkscape:cy="89.597718"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1172"
|
||||
inkscape:window-x="1920"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:snap-global="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" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-261.28123)">
|
||||
<rect
|
||||
style="fill:#fcfcfc;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
|
||||
id="rect819"
|
||||
width="39.6875"
|
||||
height="35.71875"
|
||||
x="0"
|
||||
y="261.28122" />
|
||||
<image
|
||||
sodipodi:absref="../images/technichub.png"
|
||||
xlink:href="../images/technichub.png"
|
||||
style="stroke-width:5.92592621"
|
||||
width="35.71875"
|
||||
height="35.71875"
|
||||
preserveAspectRatio="none"
|
||||
id="image1514"
|
||||
x="2.1503351"
|
||||
y="261.28122" />
|
||||
<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.5 KiB |
@@ -1,6 +0,0 @@
|
||||
0 Name: pupmotors
|
||||
0 Author: Pybricks {laurens@pybricks.com}
|
||||
0 !LICENSE MIT
|
||||
1 15 370 -296 -430 0 0 1 0 1 0 -1 0 0 95658.dat
|
||||
1 15 90 -296 -340 1 0 0 0 1 0 0 0 1 99455.dat
|
||||
1 15 610 -296 -580 0 0 1 0 -1 0 1 0 0 53787.dat
|
||||
|
Before Width: | Height: | Size: 236 KiB |