Fabio Manganiello
a005958317
[Assistant] Added `assistant` entity type.
continuous-integration/drone/push Build is passing
Details
2023-10-23 16:02:05 +02:00
Fabio Manganiello
fd26f7fef3
[UI Nav] Fixed position of the connected status dot.
2023-10-23 15:57:47 +02:00
Fabio Manganiello
5c22271e88
[UI] Expose the `connected` flag on the root element level.
2023-10-23 15:03:36 +02:00
Fabio Manganiello
4c0e3a16b6
Removed Alexa/AVS integration.
...
The integration was based on my old fork of the AVS service, which is no
longer functional given the changes the the Amazon's backend side.
A new `avs-device-sdk` is now available, but it seems that it requires
lengthy compilation processes which are RaspberryPi-specific.
Further investigation is needed for a new Alexa plugin - see #334 .
2023-10-23 00:23:10 +02:00
Fabio Manganiello
fb017a8b35
[`assistant.google`] Added doc on how to configure audio devices.
2023-10-22 22:49:41 +02:00
Fabio Manganiello
2c8b06e471
Remove Snowboy integration.
...
It hurts to see it go, as I really believed in this project.
But the website of the project went away in 2020, the Github project
hasn't seen any activity since 2021, and the fork that is supposed to be
used as a replacement for training .pmdl models hasn't been updated
since 2021 - and it only supports Python 2 on Ubuntu 16.04 or 18.04.
One day I may dedicate some efforts to bring Snowboy back to life, but
until then it's definitely not in a state where it's usable for a
Platypush integration.
2023-10-22 22:33:22 +02:00
Fabio Manganiello
645e8c8f77
Added updated configuration snippet for `assistant.google` plugin.
2023-10-22 21:53:15 +02:00
Fabio Manganiello
b46c00f015
Removed deprecated `google.assistant.pushtotalk` plugin.
...
It only existed as a back-compatibility layer with armv6, since there
was no build of the assistant library that worked on Raspberry Pi Zero.
But that API layer has been discontinued by Google and it's no longer
functional, so only the `assistant.google` integration (on x86_64 and
armv7) is currently supported.
2023-10-22 19:57:55 +02:00
Fabio Manganiello
cce6c4c5ad
[ #284 ] Merged `assistant.google` plugin and backend.
...
This removes the deprecated `assistant.google` backend and also adds a
new `conversation_start_sound` parameter.
2023-10-22 19:55:11 +02:00
Fabio Manganiello
e24438980a
[`sound`] Better logic for default sound device auto-detection.
continuous-integration/drone/push Build is passing
Details
2023-10-22 18:07:25 +02:00
Fabio Manganiello
4d582bb6bc
Ensure that the application always terminates on Ctrl+C.
continuous-integration/drone/push Build is passing
Details
2023-10-22 02:33:15 +02:00
Fabio Manganiello
f75a2159c7
[platyvenv] Add the venv bin directory to the PATH.
...
After creating the virtual environment, we should add `<VENV_DIR>/bin`
to the `PATH` variable, so any next `python`/`pip` commands will be
executed in the new environment.
2023-10-22 02:28:31 +02:00
Fabio Manganiello
a909dc5f0f
[Fix] The base per-OS requirements filename is always lowercase.
2023-10-22 01:45:23 +02:00
Fabio Manganiello
e65eef34d3
[`application`] `application.install` should redirect stderr->stdout.
2023-10-22 01:44:39 +02:00
Fabio Manganiello
8b5871af0e
[Fix] `platyvenv` should also execute the `before` and `after` blocks.
...
Before this fix, `platyvenv`, unlike `platydock`, didn't take into
account any extra before/after installation commands that individual
integrations may instruct to run in their manifest files.
2023-10-22 01:41:19 +02:00
Fabio Manganiello
02049030d0
`paho` module added to automocks.
2023-10-21 19:55:50 +02:00
Fabio Manganiello
4883f49b19
Removed unused `travisci` events.
2023-10-21 19:15:34 +02:00
Fabio Manganiello
cd87cc3e43
Minor docstring fixes.
2023-10-21 18:08:29 +02:00
Fabio Manganiello
8634572c34
Small docstring fix.
2023-10-20 01:41:30 +02:00
Fabio Manganiello
0eae6fd48d
Misc dependencies and mock fixes.
...
continuous-integration/drone/push Build is passing
Details
- `iputils` should be an explicit system dependency for `ping`.
Some minimal systems (like some Docker images) may not have the `ping`
command installed out of the box.
- `hid` and `marshmallow_dataclass` should be among the auto-mocked
modules.
2023-10-20 01:02:35 +02:00
Fabio Manganiello
ed2a56de42
`paho.mqtt` should also be added to the mock modules
continuous-integration/drone/push Build is passing
Details
2023-10-20 00:00:07 +02:00
Fabio Manganiello
e1fc38e014
[Automatic] Updated UI files
continuous-integration/drone/push Build is failing
Details
2023-10-19 17:52:56 +00:00
Fabio Manganiello
2c37596478
Updated UI files
continuous-integration/drone/push Build is failing
Details
2023-10-19 19:52:50 +02:00
dependabot[bot]
569db13a9b
Bump @babel/traverse in /platypush/backend/http/webapp
...
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse ) from 7.22.8 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases )
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md )
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse )
---
updated-dependencies:
- dependency-name: "@babel/traverse"
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
2023-10-19 11:30:24 +00:00
Fabio Manganiello
4c6d966038
[Doc fix] Fixed indent in the documentation of the `application.install` action.
continuous-integration/drone/push Build is passing
Details
2023-10-19 12:13:08 +02:00
Fabio Manganiello
7eaf8dbdc0
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing
Details
2023-10-18 22:53:48 +00:00
Fabio Manganiello
38c5172316
[UI] Show the connected/disconnected status in the `Nav` icon.
continuous-integration/drone/push Build is passing
Details
2023-10-19 00:33:17 +02:00
Fabio Manganiello
f3c5c2fdfa
[Extensions UI] Added `RestartButton` to the `Install` tab.
...
It should be possible to easily restart the service after installing the
dependencies for a new integration.
2023-10-18 23:52:49 +02:00
Fabio Manganiello
b724e80ee2
[Settings UI] Added `Stop` and `Restart` application buttons.
2023-10-18 23:45:46 +02:00
Fabio Manganiello
2a76a6baa6
[Extensions UI] Added current config to extension panel.
...
If an extension is configured and enabled, then the UI will now include
a tick next to its name and the currently loaded configuration in the
`Configuration` tab.
2023-10-18 22:51:30 +02:00
Fabio Manganiello
f0255549c8
[`utils`] Added `utils.to_yaml` action.
2023-10-18 22:50:52 +02:00
Fabio Manganiello
c7acc03c8f
[`inspect`] Added `get_enabled_plugins` and `get_enabled_backends` actions.
2023-10-18 22:10:32 +02:00
Fabio Manganiello
c05d887551
[`application`] Added `application.install` action.
...
continuous-integration/drone/push Build is passing
Details
It can be used to programmatically install extensions.
2023-10-18 19:33:00 +02:00
Fabio Manganiello
e2e349a2ad
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing
Details
2023-10-18 01:01:06 +00:00
Fabio Manganiello
922297bf58
[Extensions UI] Support for initializing an extension from URL.
continuous-integration/drone/push Build was killed
Details
2023-10-18 03:00:54 +02:00
Fabio Manganiello
137855b4fc
[Entities UI] Fixed collapse toggling logic.
2023-10-18 03:00:54 +02:00
Fabio Manganiello
26b912fae4
[Execute UI]
...
- If an action is passed over the URL, then initialize the UI with it.
- Added link from the actions back to their plugins.
2023-10-18 03:00:54 +02:00
Fabio Manganiello
e5d84242bb
[Extensions UI] Action URLs now point to the `Execute` panel.
2023-10-18 03:00:53 +02:00
Fabio Manganiello
6f01c35a0f
[UI] Added utilities to get and set args on the URL fragment.
2023-10-18 03:00:53 +02:00
Fabio Manganiello
a30c07fbb5
[Execute UI] Make sure that the list of arguments doesn't overflow.
2023-10-18 03:00:53 +02:00
Fabio Manganiello
0c54c8f885
[UI] Refresh the loaded panel when the URL fragment changes.
2023-10-18 03:00:53 +02:00
Fabio Manganiello
6289eb47ab
[Extensions UI] Added `Actions` and `Events` sections to `Doc`.
2023-10-18 03:00:53 +02:00
Fabio Manganiello
6383030e96
[Extensions UI] Added notifications in case of install errors.
2023-10-18 03:00:52 +02:00
Fabio Manganiello
3107df5eba
[UI Nav] Moved `Extensions` panel from the plugins list to the footer.
2023-10-18 03:00:52 +02:00
Fabio Manganiello
81e99a0e22
[`shell`] Better buffering for the output sent to websockets.
2023-10-18 03:00:52 +02:00
Fabio Manganiello
a652bd9df8
[Extensions UI] Install extensions deps from the UI.
...
- Added `Install` button
- Added interactive output panel
2023-10-18 03:00:52 +02:00
Fabio Manganiello
033317e0a7
[Extensions UI] Passing `config_file` to the configuration tab.
2023-10-18 03:00:51 +02:00
Fabio Manganiello
66cba233e5
[`config`] Added `config.get_config_file` action.
2023-10-18 03:00:51 +02:00
Fabio Manganiello
20a2203e7e
[Shell plugin] Added support for async output over websockets.
2023-10-18 03:00:51 +02:00
Fabio Manganiello
2806e943c3
[Extensions UI] Added `Install` tab.
2023-10-18 03:00:51 +02:00
Fabio Manganiello
e40a74f11c
Added `install_cmds` to the JSON representation of a manifest.
2023-10-18 03:00:50 +02:00
Fabio Manganiello
9769520e88
[UI] Use `.min.css` file for the Highlight.js styles.
2023-10-18 03:00:50 +02:00
Fabio Manganiello
3366732fa8
[UI] Expand `Tab` width on mobile.
2023-10-18 03:00:50 +02:00
Fabio Manganiello
12f7b190b9
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing
Details
2023-10-16 00:30:42 +00:00
Fabio Manganiello
99e98f70f4
[Integrations UI] Added configuration tab.
continuous-integration/drone/push Build is passing
Details
2023-10-16 02:30:30 +02:00
Fabio Manganiello
b19725c72c
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing
Details
2023-10-15 23:18:08 +00:00
Fabio Manganiello
398d64c53f
[Integrations UI] Added new `Integrations` panel.
continuous-integration/drone/push Build is passing
Details
2023-10-16 01:16:10 +02:00
Fabio Manganiello
0055acad9d
[UI] Fixed `Autocomplete` behaviour on empty filter.
2023-10-16 01:12:56 +02:00
Fabio Manganiello
c88a9da3e6
[UI] Refactored layout classes.
2023-10-16 01:12:05 +02:00
Fabio Manganiello
d1afb88b80
[Reflection] Expand RST extensions from object docstrings too.
2023-10-16 00:21:49 +02:00
Fabio Manganiello
0fe1c2768b
[Fix] Some minor docstring indentation fixes.
2023-10-16 00:20:39 +02:00
Fabio Manganiello
e242b2134e
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing
Details
2023-10-14 12:38:25 +00:00
Fabio Manganiello
3cfd72b649
[UI Nav] Ensure that `entities` and `execute` tabs are always on top.
continuous-integration/drone/push Build is passing
Details
2023-10-14 14:38:08 +02:00
Fabio Manganiello
6d53a3f80f
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing
Details
2023-10-14 12:09:13 +00:00
Fabio Manganiello
a3643c285e
[UI] A friendlier representation of an integration's name.
continuous-integration/drone/push Build is passing
Details
2023-10-14 14:02:17 +02:00
Fabio Manganiello
0aecb50590
[Entities UI] Don't hide variables with null values.
...
Otherwise, the `variables` panel will still appear, but empty, and
offering no way of actually removing or resetting those variables.
2023-10-14 14:02:17 +02:00
Fabio Manganiello
01c7d230f1
[Entities UI] Added `Expand`/`Collapse` and `Hide` actions to groups.
...
Also, replaced all the deprecated `::v-deep` SCSS notations with
`:deep`.
2023-10-14 14:02:17 +02:00
Fabio Manganiello
dbe19042bc
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing
Details
2023-10-13 21:13:00 +00:00
Fabio Manganiello
891e05a219
[Execute UI] Added syntax highlight to JSON and shell snippets.
continuous-integration/drone/push Build is passing
Details
2023-10-13 23:12:04 +02:00
Fabio Manganiello
8b9ac59167
`parse_numpy` should also catch `AttributeError`.
continuous-integration/drone/push Build is passing
Details
2023-10-12 03:24:03 +02:00
Fabio Manganiello
12f38281e1
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing
Details
2023-10-12 00:58:53 +00:00
Fabio Manganiello
e382ad7650
Invert `@ensure_initialized` and `@action` annotations.
...
Otherwise, we won't be able to access the wrapped function from the
inspection logic.
2023-10-12 00:57:31 +00:00
Fabio Manganiello
0a13b4605e
[Execute panel] Procedures merged into actions.
...
continuous-integration/drone/push Build is passing
Details
Plus, a last big refactor/redesign for the panel's components.
2023-10-12 02:49:51 +02:00
Fabio Manganiello
e760f8e23a
[Execute panel] Introduced a common `Response` component.
continuous-integration/drone/push Build is passing
Details
2023-10-11 16:57:04 +02:00
Fabio Manganiello
b47e729012
[Execute panel] Added cURL snippet modal.
continuous-integration/drone/push Build is passing
Details
2023-10-11 16:38:38 +02:00
Fabio Manganiello
fc21e9740b
[Execute panel] Better rendering of responses and errors.
continuous-integration/drone/push Build is failing
Details
2023-10-11 15:28:49 +02:00
Fabio Manganiello
21820bb185
Big refactor of the `Execute` panel.
continuous-integration/drone/push Build is failing
Details
2023-10-11 14:31:46 +02:00
Fabio Manganiello
1b6e9b4df9
Fixed a broken docstring reference.
2023-10-10 22:18:36 +02:00
Fabio Manganiello
ff07623803
Auto-focus the first parameter after selecting an action.
2023-10-10 21:31:14 +02:00
Fabio Manganiello
07f0535504
Migrated `Execute` panel to the new `Autocomplete` widget.
2023-10-10 21:13:54 +02:00
Fabio Manganiello
a717235453
Added `autofocus` support to `Autocomplete` element.
2023-10-10 20:51:09 +02:00
Fabio Manganiello
923eb7cadb
`Autocomplete` is now its own component.
2023-10-10 18:42:41 +02:00
Fabio Manganiello
f6bf9438b9
Several improvements for the `Execute` panel.
2023-10-10 01:45:35 +02:00
Fabio Manganiello
434855ffdd
A better logic to process relative references in docstrings.
2023-10-10 01:35:37 +02:00
Fabio Manganiello
5726c6985f
Added utility function to get the defining class of a method.
2023-10-10 01:35:01 +02:00
Fabio Manganiello
2af304f478
Replaced radio buttons on the `Execute` panel with buttons.
2023-10-10 00:40:20 +02:00
Fabio Manganiello
84efef710e
Added `Tabs` and `Tab` UI elements.
2023-10-10 00:39:27 +02:00
Fabio Manganiello
0c818d3fe0
`.. schema::` JSON arguments should be comma-separated.
2023-10-10 00:38:23 +02:00
Fabio Manganiello
b225b056b0
`ParseContext` should also process `kwonlyargs`.
2023-10-10 00:37:08 +02:00
Fabio Manganiello
52e353dc14
Expose the wrapped function in `@action`.
...
Added a `wrapped` "hidden" parameter to the function returned by the
`@action` decorator.
We need this to access the underlying decorated function when e.g. we
need to access its specs or decorators.
2023-10-09 22:35:08 +02:00
Fabio Manganiello
1e93af86f4
Fixed some broken docstring references.
continuous-integration/drone/push Build is passing
Details
2023-10-09 01:33:45 +02:00
Fabio Manganiello
53bdcb9604
A major rewrite of the `inspect` plugin.
...
- The `inspect` plugin and the Sphinx inspection extensions now use the
same underlying logic.
- Moved all the common inspection logic under
`platypush.common.reflection`.
- Faster scanning of the available integrations and components through a
pool of threads.
- Added `doc_url` parameters.
- Migrated events and responses metadata scanning logic.
- Now expanding some custom Sphinx tag instead of returning errors when
running outside of the Sphinx context - it includes `:class:`,
`:meth:` and `.. schema::`.
2023-10-09 01:33:45 +02:00
Fabio Manganiello
9acd71944c
Skip numpy types serialization errors on Message.Encoder.
2023-10-09 01:33:45 +02:00
Fabio Manganiello
e5a5ac5ffb
Added `doc_url` parameter to integration metadata.
2023-10-09 01:33:45 +02:00
Fabio Manganiello
d872835093
New API to check if a table class exists before defining it.
...
- Check if it's part of the metadata through a function call rather than
checking `Base.metadata` in every single module.
- Make it possible to override them (mostly for doc generation logic
that needs to be able to import those classes).
- Make it possible to extend them.
2023-10-09 01:33:44 +02:00
Fabio Manganiello
608844ca0c
[WIP] Large refactor of the inspection plugin and models.
2023-10-09 01:33:44 +02:00
Fabio Manganiello
841643f3ff
Added `cachedir` to configuration.
2023-10-09 01:33:44 +02:00
Fabio Manganiello
40557f5d5d
Replaced one more occurrence of `<type> | None` syntax.
2023-10-09 01:33:44 +02:00
Fabio Manganiello
4da3c13976
First WIP commit for the new Integrations panel.
2023-10-09 01:33:44 +02:00
Fabio Manganiello
4d52fd35b9
Skip `None` responses in the RSS plugin.
continuous-integration/drone/push Build is passing
Details
2023-10-04 22:08:11 +02:00
Fabio Manganiello
40d3ad1150
Removed `<type> | None` type hints.
...
continuous-integration/drone/push Build is passing
Details
They break on Python < 3.10.
2023-10-03 01:15:13 +02:00
Fabio Manganiello
3086dd86fc
LINT+Black+stability fixes for some plugins that hadn't been touched in a while.
...
continuous-integration/drone/push Build is passing
Details
- media.mplayer
- media.omxplayer
- media.vlc
- music.mpd
- music.snapcast
2023-10-01 22:55:06 +02:00
Fabio Manganiello
2aefc4e5c8
Several improvements for the Google integrations.
...
1. Improved documentation. Every plugin now reports the exact steps to
get the integration up and running with the right API scopes.
2. All Google plugins now have a standard process to get (and reuse) the
client secret. Except for PubSub, Translate and Maps (which have
their own flows), all the Google plugins now read the client secrets
from `<WORKDIR>/credentials/google/client_secret.json` by default.
3. Black/LINT for some of those plugins, which hadn't been touched in a
while.
4. The interface to pass API scopes is now leaner. It's now possible to
pass a scope directly as e.g. `calendar.readonly` rather than
`https://www.googleapis.com/auth/calendar.readonly `.
5. Improved the logic to retrieve the right scope tokens file. If e.g.
an integration requires the role `A`, and a credentials file exists
for the roles `A` and `B`, then this file will be used rather than
prompting the user to authenticate again.
2023-10-01 15:37:20 +02:00
Fabio Manganiello
5ca3757834
A more readable configuration for the `calendar` plugin.
...
The old type configuration
(`platypush.plugins.calendar.name.CalendarNamePlugin`) is a bit clunky.
Instead, since the type will always be a plugin, we should encourage
the use of `calendar.name` directly to identify the type.
2023-10-01 01:09:15 +02:00
Fabio Manganiello
966a6ce29e
httplib2 should be an explicit dependency for Google integrations.
...
Plus, some misc LINT/Black chores.
2023-10-01 00:52:59 +02:00
Fabio Manganiello
a7bb81553c
Regex fix.
continuous-integration/drone/push Build is passing
Details
2023-09-30 15:11:09 +02:00
Fabio Manganiello
9e489bb5cf
Propagate the default/required properties of a parameter upon merge.
continuous-integration/drone/push Build is passing
Details
2023-09-30 14:57:11 +02:00
Fabio Manganiello
1732bfa82c
Fixed _default_docstring regex.
2023-09-30 14:36:08 +02:00
Fabio Manganiello
532f5479b3
Added full YAML example for `chat.irc` configuration.
2023-09-30 14:34:54 +02:00
Fabio Manganiello
ecffbf29bf
Skip vararg/varkw parameters from the config snippet.
continuous-integration/drone/push Build is passing
Details
2023-09-30 13:53:33 +02:00
Fabio Manganiello
4f5ccda353
Better documentation for the `calendar` plugin.
2023-09-30 13:31:41 +02:00
Fabio Manganiello
c82f7bbfbe
Ignore the default docstring text for __init__.
...
If no docstring is specified for a constructor, Python usually pre-fills
a standard text - "Initialize self. See help(type(self))".
We don't need this default text in our plugins documentation.
2023-09-30 13:29:49 +02:00
Fabio Manganiello
15d06fa5c2
Improved docstring parser logic.
continuous-integration/drone/push Build is failing
Details
2023-09-30 12:35:31 +02:00
Fabio Manganiello
343972b520
New `IntegrationMetadata` generic util class.
...
continuous-integration/drone/push Build is passing
Details
This object is in charge of parsing all the metadata of a
plugin/backend.
2023-09-30 02:28:20 +02:00
Fabio Manganiello
905d6632e0
Misc documentation improvements.
2023-09-29 18:09:15 +02:00
Fabio Manganiello
0a3ec4b9f1
Merge branch 'master' into 311/auto-generate-deps-docs
2023-09-28 01:25:29 +02:00
Fabio Manganiello
b76f141b61
Catch response write errors in the MQTT callback.
...
continuous-integration/drone/push Build is passing
Details
If the client that forwarded the request is no longer available (either
because an exception or a timeout was raised) then its I/O buffer and
event loop may be closed.
In this case, the response callback should handle and report the
exception, and still set the event, so that any other threads waiting
for the response can move on.
2023-09-27 11:23:55 +02:00
Fabio Manganiello
ca7f042ccc
We shouldn't call dateutil.parser if t has already been deserialized to a datetime.
2023-09-27 11:20:10 +02:00
Fabio Manganiello
c311987741
Removed `typing.Final` from some of the most commonly used modules.
...
continuous-integration/drone/push Build is passing
Details
`typing.Final` is not defined on Python < 3.8.
2023-09-26 23:50:10 +02:00
Fabio Manganiello
9298f52443
Moved `BluetoothPlugin` to `__init__.py`.
...
continuous-integration/drone/push Build is passing
Details
This is for consistency with other plugins, that all have their main
plugin class definition inside of `__init__.py`.
2023-09-24 19:21:53 +02:00
Fabio Manganiello
c3337ccc6c
[ #311 ] Docs deps autogen sphinx plugin.
...
continuous-integration/drone/push Build is passing
Details
Added an `add_dependencies` plugin to the Sphinx build process that
parses the manifest files of the scanned backends and plugins and
automatically generates the documentation for the required dependencies
and triggered events.
This means that those dependencies are no longer required to be listed
in the docstring of the class itself.
Also in this commit:
- Black/LINT for some integrations that hadn't been touched in a long
time.
- Deleted some leftovers from previous refactors (deprecated
`backend.mqtt`, `backend.zwave.mqtt`, `backend.http.request.rss`).
- Deleted deprecated `inotify` backend - replaced by `file.monitor` (see
#289 ).
2023-09-24 17:00:08 +02:00
Fabio Manganiello
059f7a4b11
Merge branch 'master' into 316/rpm-support
continuous-integration/drone/push Build is passing
Details
2023-09-23 16:21:48 +02:00
Fabio Manganiello
2b981f6b68
Added python-croniter dependency to Fedora.
...
Plus, some clean up of the variables on .drone.yaml.
2023-09-23 16:20:28 +02:00
Fabio Manganiello
b797add90d
Modify shebang header for Mercury JS script.
...
The RPM build process wants an absolute path.
2023-09-23 16:16:13 +02:00
Fabio Manganiello
a872d6f554
Added Fedora to the available Docker base images.
2023-09-22 19:02:13 +02:00
Fabio Manganiello
79e24461cb
Coalesce to empty list if `zigbee.mqtt.devices` returns null.
continuous-integration/drone/push Build is passing
Details
2023-09-22 17:00:53 +02:00
Fabio Manganiello
55965e962c
Store the Philips Hue bridge configuration under our workdir.
...
By default, the `phue` library will store the file containing the token
and the bridge configuration under `~/.python_hue`.
That's outside of our application folder, and it can't easily be copied
around or added to Docker volumes.
We should instead have it under `<WORKDIR>/light.hue/config.json`, in
line with what the other plugins do, and if `~/.python_hue` is available
but `<WORKDIR>/light.hue/config.json` isn't then we should copy the
legacy file to the new one.
2023-09-22 16:58:44 +02:00
Fabio Manganiello
761f2768cb
[ #316 ] Added RPM dependencies.
continuous-integration/drone/push Build is passing
Details
2023-09-21 23:20:06 +02:00
Fabio Manganiello
453b6becae
FIX: We shouldn't expand `cfgfile` if it's empty.
continuous-integration/drone/push Build is passing
Details
2023-09-21 01:18:15 +02:00
Fabio Manganiello
bdbe263905
Added croniter to system dependencies.
...
The python-croniter package has now been added both to Arch's and
Debian's official repos, so we can install it via pacman or apt rather
than pip.
2023-09-21 01:07:49 +02:00
Fabio Manganiello
648b4224bb
[ #285 ] Removed old covid19 backend.
...
continuous-integration/drone/push Build is passing
Details
Those endpoints aren't even working anymore.
Closes : #285
2023-09-21 00:26:35 +02:00
Fabio Manganiello
5d6d37785e
[ #288 ] Removed legacy `http.poll` backend.
...
continuous-integration/drone/push Build is passing
Details
Closes : #288
2023-09-20 23:53:12 +02:00
Fabio Manganiello
7ba9a8930a
[ #291 ] Removed deprecated `light.hue` backend.
...
continuous-integration/drone/push Build is passing
Details
Closes : #291
2023-09-20 23:46:40 +02:00
Fabio Manganiello
a6efaad26d
[ #306 ] Removed Travis CI integration.
...
continuous-integration/drone/push Build is passing
Details
I've tried my best to keep it around, but the endpoints seem to be
broken, they no longer have a link to their API v3 documentation, and
the API Explorer that was supposed to be in the dashboard is gone.
2023-09-20 23:31:58 +02:00
Fabio Manganiello
3970470e17
Removed typing-inspect dependenccy
continuous-integration/drone/push Build is passing
Details
2023-09-18 14:25:50 +02:00
Fabio Manganiello
3e8d6bb01e
Removed `typing-extensions` dependency.
...
continuous-integration/drone/push Build is failing
Details
The package isn't present on older versions of Debian.
2023-09-18 14:05:39 +02:00
Fabio Manganiello
07c88c9530
Added logic to prevent socket leakage from paho-mqtt upon client stop.
continuous-integration/drone/push Build is passing
Details
2023-09-17 23:43:56 +02:00
Fabio Manganiello
3f4168eb69
Support for new `Quality` enumeration constants on `tidalapi`.
continuous-integration/drone/push Build is passing
Details
2023-09-17 22:40:26 +02:00
Fabio Manganiello
c6cda86b1c
LINT/regex fix for ESP plugin.
2023-09-17 17:10:40 +02:00
Fabio Manganiello
4c4a33dc7c
Added Bluetooth example configuration to sample config.yaml.
continuous-integration/drone/push Build is passing
Details
2023-09-17 03:25:21 +02:00
Fabio Manganiello
46167a6c2a
Removed legacy zwave backend.
2023-09-17 02:46:24 +02:00
Fabio Manganiello
190cfa21b5
Fixed documentation references to some non-existing events.
2023-09-17 02:41:55 +02:00
Fabio Manganiello
0421325b26
Support to register/unregister custom handlers on the bus.
2023-09-17 02:29:11 +02:00
Fabio Manganiello
2e004c1a1e
`get_all_plugins` should use `Message.Encoder` for encoding the response.
...
continuous-integration/drone/push Build is passing
Details
Some plugin information may include enums, tuples and other types that
aren't serializable by the default JSON serializer.
2023-09-17 02:11:52 +02:00
Fabio Manganiello
fa2b84a269
Updated example configuration for mqtt and mqtt-based plugins.
continuous-integration/drone/push Build is passing
Details
2023-09-16 15:26:07 +02:00
Fabio Manganiello
2fcd623c51
Migrated zwave.mqtt integration.
...
continuous-integration/drone/push Build is passing
Details
Merged the zwave.mqtt plugin with the listener and removed the
leftovers of the legacy zwave plugin.
2023-09-16 03:58:19 +02:00
Fabio Manganiello
52cb1afb4b
Don't break words in entity value frames.
2023-09-16 02:58:17 +02:00
Fabio Manganiello
e947cb1e67
Updated web dist files
2023-09-15 16:22:40 +02:00
Fabio Manganiello
4223576016
We should always update the entities cache on addEntity.
...
continuous-integration/drone/push Build is passing
Details
Updating the entity cache only when we receive an event from a root
entity means that we lose events sent by individual child entities.
2023-09-15 00:45:38 +02:00
Fabio Manganiello
1020b63da7
All EntityMixin components should be allowed to emit `loading` events.
2023-09-15 00:34:29 +02:00
Fabio Manganiello
2c93049ee5
Catch all the exceptions in a plugin action wrapper.
...
The @action decorator should capture all the exceptions,
log them and return them on `Response.errors`.
This ensures that uncaught exceptions from plugin
actions won't unwind out of control, and also that they
are logged and treated consistently across all the
integrations.
2023-09-14 23:08:23 +02:00
Fabio Manganiello
ac72b2f7a8
Fixed management of state on `zigbee.mqtt`.
...
Before the merge of the plugin and the listener those components
used to have their own separate state, which led to inconsistencies.
2023-09-14 23:05:27 +02:00
Fabio Manganiello
5a514fdcce
Only support the `run_topic` logic on the MQTT plugin.
...
Plugins that extend `MqttPlugin` shouldn't run messages as
requests, even if the parent MQTT plugin is configured to
do so.
2023-09-14 01:09:03 +02:00
Fabio Manganiello
4cb5aa7acb
Prepend the class name to the string used to generate the MQTT client_id hash.
...
If we include the class name by default then we won't have to
explicitly modify the client_id in the implementation classes
in order to prevent clashes.
2023-09-14 01:06:53 +02:00
Fabio Manganiello
3104a59f44
Better processing of configuration file parameters.
...
- Do `abspath`+`expanduser` on the configuration file path before
checking if it exists.
- If the path doesn't exist, but the user explicitly passed a
configuration file, then copy/create the default configuration
under the specified directory.
2023-09-14 00:24:52 +02:00
Fabio Manganiello
ddd8f1afdc
`base_topic` param in `zigbee.mqtt` renamed to `topic_prefix`.
...
This is for sake of consistency with other integrations (like
`zwave.mqtt`) that also use the same parameter name for the MQTT topic
prefix.
2023-09-07 21:32:56 +02:00
Fabio Manganiello
8ab7b6bebc
Removed deprecated `zigbee.mqtt` backend.
...
continuous-integration/drone/push Build is passing
Details
Closes : #322
2023-09-06 02:54:48 +02:00
Fabio Manganiello
3de510da68
Migrated `zigbee.mqtt` integration.
...
continuous-integration/drone/push Build is passing
Details
The plugin has been migrated to the new `mqtt` API and the legacy
listener that extended `MqttBackend` has been removed and merged into
the plugin.
2023-09-06 02:44:56 +02:00
Fabio Manganiello
33a1ef39e4
Refactored and merged `backend.mqtt` logic into `mqtt` plugin.
2023-09-06 02:43:45 +02:00
Fabio Manganiello
b746d0b402
Moved `get_message_response` to `platypush.utils`.
...
continuous-integration/drone/push Build is passing
Details
It is general-purpose enough to be used by all the integrations, not
only by the HTTP backend.
2023-09-05 13:03:30 +02:00
Fabio Manganiello
f1acff00e9
Put the join back on `CommandStream.__exit__`.
...
continuous-integration/drone/push Build is passing
Details
We want to give the process a bit of slack between the terminate and the
close, or we'll be guaranteed to get race conditions upon close.
2023-09-04 11:01:34 +02:00
Fabio Manganiello
b3c82fe0d1
More resilient termination logic for `CommandStream`.
continuous-integration/drone/push Build is passing
Details
2023-09-04 02:47:18 +02:00
Fabio Manganiello
c69f97c0a5
Updated default config.yaml.
...
continuous-integration/drone/push Build is passing
Details
The new configuration:
- Enables `backend.http` by default
- Removes the extra `config.auto.yaml` dependency
- Includes many more examples, lots of updates for existing examples,
and extensive comments.
2023-09-04 02:22:46 +02:00
Fabio Manganiello
07c2eee890
Changed (fixed) default location for config dir if not existing.
...
Following some common UNIX conventions, if no configuration file is
specified and none exists under the default locations, then a new
configuration directory should be created under:
```
- if root: /etc/platypush
- else:
- if XDG_CONFIG_HOME:
- $XDG_CONFIG_HOME/platypush
- else:
- ~/.config/platypush
```
2023-09-04 02:19:13 +02:00
Fabio Manganiello
b6c0ff799b
Rewritten the `http.webpage` plugin.
2023-09-03 17:33:25 +02:00
Fabio Manganiello
669f2eb2d2
LINT/black for `tts.mimic3` plugin.
2023-09-02 12:40:34 +02:00
snyk-bot
46c40f6fa6
fix: upgrade sass from 1.64.2 to 1.65.1
...
Snyk has created this PR to upgrade sass from 1.64.2 to 1.65.1.
See this package in npm:
https://www.npmjs.com/package/sass
See this project in Snyk:
https://app.snyk.io/org/blacklight/project/96bfd125-5816-4d9e-83c6-94d1569ab0f1?utm_source=github&utm_medium=referral&page=upgrade-pr
2023-09-01 23:15:47 +00:00
Fabio Manganiello
35416f3ee3
Some LINT on the old `http.request.rss` plugin.
2023-09-02 01:01:16 +02:00
Fabio Manganiello
9aaf2559fa
Added `utils.is_root` method.
2023-08-31 23:21:32 +02:00
Fabio Manganiello
e6b5abe909
Added SIGTERM handler for clean termination in Docker contexts.
continuous-integration/drone/push Build is failing
Details
2023-08-31 02:09:23 +02:00
Fabio Manganiello
4dd713ffd2
Refactored Platydock and Platyvenv.
...
The two scripts now share the same command interface, behaviour and base
class.
Also, Platydock now builds a Docker image instead of just printing a
Dockerfile, unless the `--print` option is passed.
2023-08-31 01:16:56 +02:00
Fabio Manganiello
429658e7c8
Refactored `PackageManager` classes.
...
continuous-integration/drone/push Build is passing
Details
Instead of having a custom `get_installed` callable field, with
replicated code for each package manager, the field has now been
promoted to a class method containing the common logic, and the
instances now expect a `list` field (base command to list the installed
packages using the specified package manager) and a `parse_list_line`
callback field (to extract the base package name given a raw line from
the command above).
Also, we shouldn't run the list command if we're running within a Docker
context - the host and container environments will be different.
2023-08-28 01:26:19 +02:00
Fabio Manganiello
86e5f74645
platyvenv should generate (and document) a run.sh helper script.
2023-08-27 23:20:03 +02:00
Fabio Manganiello
9e6430a9ac
Clone git repo if platyvenv is not running from a srcdir
2023-08-23 20:02:04 +02:00
Fabio Manganiello
dafd65dc21
Added new platyvenv Python script.
2023-08-23 11:55:25 +02:00
Fabio Manganiello
f230fa79bb
`to_pkg_install_commands` should skip already installed sys packages.
2023-08-23 11:51:53 +02:00
Fabio Manganiello
449821673c
Added `PackageManager.get_installed`.
2023-08-23 10:50:29 +02:00
Fabio Manganiello
b10ccdb313
Added get_src_root utility function.
2023-08-23 02:53:31 +02:00
Fabio Manganiello
1ef0d804db
Added `full_command` argument to `to_pip_install_commands`.
...
This is useful if we just want to get the list of pip dependencies and
create our own pip command.
2023-08-23 02:19:54 +02:00
Fabio Manganiello
2bff4c9cf1
Exclude python-* system packages when installing in a venv.
2023-08-23 02:17:19 +02:00
Fabio Manganiello
cddf318fa7
Dependencies.from_config should include the base system deps.
2023-08-23 02:16:33 +02:00
Fabio Manganiello
8f39231d31
Added new utility methods to the Dependencies class.
2023-08-23 02:15:50 +02:00
Fabio Manganiello
ce68250b4d
Refactor/documentation round for platydock.
2023-08-22 02:49:05 +02:00
Fabio Manganiello
10c0e5fcad
Added default_os field to PackageManagers enum elements.
...
This is useful to determine which is the default set of scripts that
should be used by the installer depending on the detected installed
package manager.
2023-08-20 21:21:37 +02:00
Fabio Manganiello
2c46b6fe14
Added git a required manifest dependency when needed.
...
It is needed for packages that install pip packages via git.
2023-08-20 21:19:15 +02:00
Fabio Manganiello
a28dcb7a8d
Remove /var/cache/apk from container image after installation.
2023-08-20 14:19:04 +02:00
Fabio Manganiello
a6752ed034
Fixed wrong event path in a manifest file.
2023-08-20 14:08:22 +02:00
Fabio Manganiello
700b8e1d16
Added header and footer to generated Dockerfile.
2023-08-20 14:05:22 +02:00
Fabio Manganiello
a6f8021150
`PackageManager` has both `install` and `uninstall`.
continuous-integration/drone/push Build is passing
Details
2023-08-20 13:33:49 +02:00
Fabio Manganiello
5efcae64c1
Better Dockerfile logic to retrieve sources.
...
If the /install folder on the container doesn't contain a copy of the
source files, then the git repository will be cloned under that folder.
The user can specify via `-r/--ref` option which tag/branch/commit they
want to install.
2023-08-20 13:31:13 +02:00
Fabio Manganiello
28ba042810
If no configuration file is passed to platydock generate a minimal Dockerfile.
continuous-integration/drone/push Build was killed
Details
2023-08-20 03:36:34 +02:00
Fabio Manganiello
199ac5f0f7
New way of managing installation scripts and dependencies.
...
Created `platypush/install` folder that contains:
- Dockerfiles for the supported distros
- Lists of required base dependencies for the supported distros
- Install and run scripts
- Added Debian to supported base images
2023-08-20 02:28:10 +02:00
Fabio Manganiello
71c5291190
Refactored the interface of Platydock and manifest utils.
2023-08-19 22:46:37 +02:00
Fabio Manganiello
a99ffea37c
Fixed apt dependencies for `mpd` plugin.
2023-08-19 21:46:08 +02:00
Fabio Manganiello
980af16984
Rewritten platydock utility.
...
Platydock now will only print out a Dockerfile given a configuration
file.
No more maintaining the state of containers, storing separate workdirs
and configuration directories etc. - that introduced way too much
overhead over Docker.
2023-08-19 13:47:43 +02:00
Fabio Manganiello
9002f3034a
Tweaked package managers install command arguments.
2023-08-19 13:46:08 +02:00
Fabio Manganiello
69706eaabe
`s/logger/_logger/` in the `plugins` module.
...
The `logger` name may clash with the context of an action, where
`logger` may have been set to something else.
2023-08-19 13:32:19 +02:00
Fabio Manganiello
1cb686bdab
Updated the `inspect` plugin to the new manifest utils interface.
2023-08-19 13:31:48 +02:00
Fabio Manganiello
043f303761
`s/HttpBackend._DEFAULT_HTTP_PORT/HttpBackend.DEFAULT_HTTP_PORT/g`
2023-08-19 13:30:51 +02:00
Fabio Manganiello
dd3a701a2e
Full rewrite of `platypush.utils.manifest`.
...
The new version encapsulates all the utility functions into three
classes - `Manifest`, `Manifests` and `Dependencies`.
2023-08-19 13:28:40 +02:00
Fabio Manganiello
a8255f3621
Pass the configuration file used by the application to the Alembic process.
...
The database settings could also be overridden in the configuration file
besides the command line.
We should therefore pass the path to the runtime configuration file, so
the Alembic process can initialize its configuration from the same file
and use the same settings.
2023-08-19 13:23:20 +02:00
Fabio Manganiello
1825b492b3
Replaced `Config.workdir` with `Config.get_workdir()`.
...
Again, Python < 3.9 doesn't like class properties.
2023-08-19 13:21:24 +02:00
Fabio Manganiello
a8836f95f5
Support explicit `workdir` parameter override in `Config` constructor.
2023-08-19 13:15:29 +02:00
Fabio Manganiello
5bc82dfe64
s/Config._cfgfile/Config.config_file/g
2023-08-19 13:13:36 +02:00
Fabio Manganiello
181da63c89
Pass the database engine to the Alembic process as an extra argument.
...
If the path of the default database engine is overridden via `--workdir`
option then it won't be visible to the new `python` subprocess spawned
for Alembic.
2023-08-19 13:02:05 +02:00
Fabio Manganiello
c2b3ec8ce3
Fixed manifest files with outdated formats.
2023-08-19 12:54:33 +02:00
Fabio Manganiello
e463a52435
Use `sys.executable` rather than `'python'` to launch the application.
2023-08-19 12:40:57 +02:00
Fabio Manganiello
0a5fc40dc5
Merge branch 'master' into 276/better-docker
2023-08-18 17:34:56 +02:00
Fabio Manganiello
2cab836bdf
`Entity.columns` class property replaced by `Entity.get_columns` method.
...
continuous-integration/drone/push Build is passing
Details
Again, Python < 3.9 doesn't like the combination of `@property` +
`@classmethod`.
2023-08-18 17:20:53 +02:00
Fabio Manganiello
a9cdff900e
_variable should be an external global function rather than a class property.
...
The combination of `@property` + `@classmethod` isn't supported on
Python < 3.9.
2023-08-18 16:16:47 +02:00
Fabio Manganiello
d0c89f88a8
Fixed parenthesised multi-with statement.
...
This syntax is not supported on Python < 3.9, and therefore it should be
broken down as a multi-line statement.
2023-08-18 16:10:31 +02:00
Fabio Manganiello
ca95490412
Added timeout parameter to requests.get in the rss plugin.
continuous-integration/drone/push Build is passing
Details
2023-08-18 15:53:30 +02:00
Fabio Manganiello
5dd7345c0b
Sync the latest parse timestamps in main instead of __init__ in rss.
...
We should load the latest timestamps from the db when the thread starts
instead of doing it in the constructor.
The constructor may be invoked when the entities engine hasn't been
initialized yet, and result in deadlocks.
2023-08-18 15:51:11 +02:00
Fabio Manganiello
ec64b0ef8b
Added `--device_id` command line option.
continuous-integration/drone/push Build is failing
Details
2023-08-17 23:16:24 +02:00
Fabio Manganiello
ac83b43f98
Support for custom key-value overrides on `Config.init`.
2023-08-17 22:03:39 +02:00
Fabio Manganiello
657b2cc87d
Create the default configuration file even if --config is supplied but the file doesn't exist.
continuous-integration/drone/push Build is failing
Details
2023-08-17 11:25:49 +02:00
Fabio Manganiello
24b04d9103
s/--config-file/--config/ option in Dockerfile.
continuous-integration/drone/push Build is failing
Details
2023-08-17 10:35:40 +02:00
Fabio Manganiello
bf7d060b81
Added `@ensure_initialized` decorator to actions in `variable`.
...
continuous-integration/drone/push Build is passing
Details
The `variable` plugin may break in the constructor the first time the
application is started.
That's because it tries to initialize the cache of stored variables, but
the local database hasn't yet been initialized.
That's because plugins are registered _before_ the entities engine is
initialized, as the entities engine assumes that it already has plugins
to scan for entities.
Therefore, the initialization of the `variable` plugin's cache should be
lazy (only done upon the first call to `get`/`set` etc.), in order to
prevent deadlock situations where the plugin waits for the engine to
start, but the engine will be initialized only after the plugin is
ready.
And the lazy initialization logic should also ensure that the entities
engine has been properly started (and emit a `TimeoutError` if that's
not the case), in order to prevent race conditions.
2023-08-17 02:47:30 +02:00
Fabio Manganiello
adfedfa2dd
s/TimeoutError/AssertionError/ if get_entities_engine times out.
2023-08-17 02:36:40 +02:00
Fabio Manganiello
ec2b8da983
Ignore Redis errors when a backend sends an unregister notify event.
...
When that happens, it's most likely that the application is already
stopping and the Redis service has already been terminated.
2023-08-17 01:49:41 +02:00
Fabio Manganiello
3bf068e0b2
The __main__ function should take no arguments.
...
setup.py won't pass any arguments to `main()`, so the default entry
point should get them itself from `sys.argv`.
2023-08-17 01:35:39 +02:00
Fabio Manganiello
98e9abde18
Extended manifest files with Python system packages (if available).
...
continuous-integration/drone/push Build is passing
Details
- If a Python optional dependency is available as a system package on
the target system, try and install it that route rather than pip. It's
usually faster and it decreases the risk of breaking system packages.
- Added support for apk dependencies in manifest files. This brings the
number of distros officially supported by all the extensions to four:
- Alpine
- Arch
- Debian
- Ubuntu
2023-08-16 22:43:51 +02:00
Fabio Manganiello
00863a176e
Added `application` plugin.
continuous-integration/drone/push Build is failing
Details
2023-08-15 11:20:24 +02:00
Fabio Manganiello
f51beb271e
Large refactor + stability fixes for the external process control logic.
2023-08-15 11:12:21 +02:00
Fabio Manganiello
46245e851f
Synchronize with the currently running stop thread (if any) in `Backend.wait_stop`.
2023-08-15 02:08:47 +02:00
Fabio Manganiello
a8a7ceb2ac
Implemented `HttpBackend._stop_workers`.
...
The Tornado WSGI container won't guarantee the termination of the
spawned workers upon termination, so the code of the backend has to take
care of it and terminate all the children processes of the server
process when it terminates.
This also means that `psutil` is now a required base dependency, as we
need to expand the process subtree under the webserver launcher.
2023-08-15 00:13:34 +02:00
Fabio Manganiello
04921c759f
Added `wait_stop` method to the entities engine and cron scheduler.
2023-08-14 23:49:47 +02:00
Fabio Manganiello
ceb9d6d1ba
Removed redundant `Backend._get_redis()` method.
...
It was used only once, and it could easily be replaced by
`platypush.utils.get_redis()`.
2023-08-14 23:37:38 +02:00
Fabio Manganiello
7157936b87
Added get_remaining_timeout utility function.
2023-08-14 23:17:50 +02:00
Fabio Manganiello
dc1a152433
Added `get_default_pid_file` utility method.
2023-08-14 10:47:25 +02:00
Fabio Manganiello
c11bc69a66
Handle `KeyboardInterrupt` and process return code in the main.
2023-08-13 23:55:40 +02:00
Fabio Manganiello
8819a0ed4c
Added `CommandStream` to the main `Application`.
...
The stream will be used to communicate command messages from the
application to its runner.
2023-08-13 23:51:21 +02:00
Fabio Manganiello
06111587f7
Added `CommandStream` class.
...
This abstraction is used to write and read commands over a UNIX socket.
2023-08-13 23:37:51 +02:00
Fabio Manganiello
c89f992867
Added `StopCommand` and `RestartCommand`.
2023-08-13 23:36:36 +02:00
Fabio Manganiello
b1f244a812
Added `ControllableProcess` class.
...
This class can be used to easily control the execution of underlying
processes.
2023-08-13 23:33:08 +02:00
Fabio Manganiello
efef9d7bc0
Added `commands` module.
2023-08-13 23:21:36 +02:00
Fabio Manganiello
97adc3f775
Moved application argument parser to an external `platypush.cli` module.
2023-08-13 22:27:16 +02:00
Fabio Manganiello
1819ee75ef
`s/Application.stop_app/Application.stop/g`
2023-08-13 22:23:15 +02:00
Fabio Manganiello
827b564006
Using a single constant for DEFAULT_REDIS_QUEUE.
...
Also, catch `AttributeError` on `self._proc.terminate` in the
`HttpBackend`, since the process may already have been terminated and
set to null by another worker process.
2023-08-13 22:20:16 +02:00
Fabio Manganiello
4062ddbcf0
More improvements to the `inspect` plugin.
...
continuous-integration/drone/push Build is passing
Details
- Support for distinct `type` field on constructor and method arguments.
- Added `has_varargs` field.
- Added `required` field.
- Better logic for parsing arguments `default` values.
2023-08-08 20:47:27 +02:00
Fabio Manganiello
9beb0a7af3
Skip `:type:` annotations from docstring args documentation.
2023-08-08 20:47:27 +02:00
Fabio Manganiello
2a30f060b4
Parse the arguments list from `obj_type.__init__.__doc__` too.
2023-08-08 20:47:27 +02:00
Fabio Manganiello
1474685cc0
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing
Details
2023-08-06 22:51:57 +00:00
Fabio Manganiello
26b4dcba46
Reduced padding of ConfirmDialog body element.
continuous-integration/drone/push Build is passing
Details
2023-08-07 00:50:10 +02:00
Fabio Manganiello
5184543a3e
Normalize the size of the camera frame container from window size.
...
continuous-integration/drone/push Build is failing
Details
If the window is smaller than the camera resolution, then we should
scale down the container size accordingly.
2023-08-07 00:38:19 +02:00
Fabio Manganiello
dd313c6371
[Automatic] Updated UI files
continuous-integration/drone/push Build was killed
Details
2023-08-06 21:50:25 +00:00
Fabio Manganiello
2f007888fc
[Automatic] Updated UI files
continuous-integration/drone/push Build is failing
Details
2023-08-06 21:48:33 +00:00
Fabio Manganiello
609a8c6052
[Automatic] Updated UI files
continuous-integration/drone/push Build is failing
Details
2023-08-06 21:46:44 +00:00
Fabio Manganiello
276a9a7421
[Automatic] Updated UI files
continuous-integration/drone/push Build is failing
Details
2023-08-06 21:44:51 +00:00
Fabio Manganiello
715cdcfcff
More consistent style for the buttons on the tokens settings page.
continuous-integration/drone/push Build is failing
Details
2023-08-06 23:42:50 +02:00