Fabio Manganiello
5726c6985f
Added utility function to get the defining class of a method.
2023-10-10 01:35:01 +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
608844ca0c
[WIP] Large refactor of the inspection plugin and models.
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
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
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
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
a872d6f554
Added Fedora to the available Docker base images.
2023-09-22 19:02:13 +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
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
9aaf2559fa
Added `utils.is_root` method.
2023-08-31 23:21:32 +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
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
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
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
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
71c5291190
Refactored the interface of Platydock and manifest utils.
2023-08-19 22:46:37 +02:00
Fabio Manganiello
9002f3034a
Tweaked package managers install command arguments.
2023-08-19 13:46:08 +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
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
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
e9a568fdd2
Unified interface to retrieve the Redis bus configuration.
...
A common `utils.get_redis_conf` has been created to handle the cascade
fallback logic used to retrive the default Redis configuration.
2023-07-24 01:04:13 +02:00
Fabio Manganiello
3e3d47aa44
Check first the configuration of the Redis plugin and then that of the backend.
2023-07-24 00:26:49 +02:00
Fabio Manganiello
0dc380fa94
Removed dependency from prctl.
...
Also, black'd and LINT-fixed some files that hadn't been touched in a
while.
2023-07-23 19:17:30 +02:00
Fabio Manganiello
61ea3d79e4
Large refactor for the `inspect` plugin.
...
More common logic has been extracted and all the methods and classes
have been documented and black'd.
2023-05-17 00:05:22 +02:00
Fabio Manganiello
42d468c895
`get_lock` should raise a TimeoutError if `lock.acquire` is False
2023-03-31 22:31:32 +02:00
Fabio Manganiello
1efaff878e
Rewritten `serial` plugin.
...
`backend.serial` has been removed and the polling logic merged into the
`serial` plugin.
The `serial` plugin now supports the new entity engine as well.
2023-03-31 14:31:45 +02:00
Fabio Manganiello
fde834c1b1
More LINT fixes + refactors
2023-02-05 22:00:50 +01:00
Fabio Manganiello
4849e14414
LINT fixes for the `utils` module + additional documentation
2023-02-05 18:05:41 +01:00
Fabio Manganiello
5a47308516
Merge branch 'master' into 29-generic-entities-support
2022-12-10 15:57:28 +01:00
Fabio Manganiello
5ba3fa1b5b
FIX: Parenthesized context managers are only available in Python >= 3.10
...
Since Parenthesized context managers are only supported on very recent
versions of Python (thanks black for breaking back-compatibility), we
should still use the old multiline syntax - it's not worth breaking
compatibility with Python >= 3.6 and < 3.10 just to avoid typing a
backslash.
2022-12-08 12:28:36 +01:00
Fabio Manganiello
ba1681fc22
Merge branch 'master' into 29-generic-entities-support
2022-11-21 12:36:01 +01:00
Fabio Manganiello
a2c8e27bd8
Removed PyJWT dependency.
...
PyJWT is a very brittle and cumbersome dependency that expects several
cryptography libraries to be already installed on the system, and it can
lead to hard-to-debug errors when ported to different systems.
Moreover, it installs the whole `cryptography` package, which is several
MBs in size, takes time to compile, and it requires a Rust compiler to
be present on the target machine.
Platypush will now use the Python-native `rsa` module to handle JWT
tokens.
2022-11-21 12:30:38 +01:00
Fabio Manganiello
26ffc0b0e1
Use Redis instead of an in-process map to store the entity/plugin registry
...
This is particularly useful when we want to access the registry from
another process, like the web server or an external script.
2022-04-07 00:18:11 +02:00
Fabio Manganiello
1914322fda
FIX: get_plugin methods should never swallow errors in case of failed initialization
2022-02-07 01:47:38 +01:00
Fabio Manganiello
195ae5c488
Create application ngrok tunnel method moved to utils
2021-11-07 11:35:47 +01:00
Fabio Manganiello
64c402b1c0
[ #115 ] Added `google.maps.get_travel_time` method
2021-10-16 22:35:37 +02:00
Fabio Manganiello
3bfc5b83ef
Moved to manifest files for describing plugins and backends and their dependencies
2021-09-16 17:53:40 +02:00