Campbell Barton
31cb31d736
PyAPI: add-on name-spacing for extension repositories
...
Support name-spaced add-ons, exposed via user configurable extension
repositories.
Directories for add-ons can be added at run-time and are name-spaced to
avoid name-collisions with Python modules or add-ons from other
repositories.
This is exposed as an experimental feature "Extension Repositories".
Details:
- A `bUserExtensionRepo` type which represents a repository which is
listed in the add-ons repository.
- `JunctionModuleHandle` class to manage a package with sub-modules
which can point to arbitrary locations.
- `bpy.app.handlers._extension_repos_update_{pre/post}` internal
callbacks run before/after changes to extension repositories,
callbacks are used to sync the changes to the Python package that
exposes these to add-ons.
- The size of an add-on name has been increased so a user-defined package
prefix can be included without enforcing shorter add-on names.
- Functionality relating to package management has been left out of this
change and will be developed separately.
Further work:
- While a repository can be renamed, enabled add-ons aren't renamed.
Eventually we might want to support this although we could also
disallow renaming repositories with add-ons enabled as the name isn't
all that significant.
- Removing a repository should remove all the add-ons located in this
repository.
- Sub-module names are currently restricted to `[A-Za-z]+[A-Za-z0-9_]*`
we might want to relax this to allow unicode characters (we might
still want to disallow `-` or any characters that would prevent
attribute access in code).
Ref !110869 .
Reviewed By: brecht
2023-08-09 20:24:24 +10:00
..
2023-05-31 16:19:06 +02:00
2023-08-03 20:23:01 +10:00
2023-07-31 13:02:30 +10:00
2023-08-04 08:51:13 +10:00
2023-07-22 11:27:25 +10:00
2023-08-04 08:51:13 +10:00
2023-07-22 11:27:25 +10:00
2023-08-09 11:17:04 +10:00
2023-07-17 10:46:26 +02:00
2023-05-31 16:19:06 +02:00
2023-07-22 11:27:25 +10:00
2023-08-03 14:44:39 +02:00
2023-06-03 08:54:37 +10:00
2023-05-31 16:19:06 +02:00
2023-06-19 20:40:49 +10:00
2023-08-04 08:51:13 +10:00
2023-08-04 08:51:13 +10:00
2023-05-31 16:19:06 +02:00
2023-05-31 16:19:06 +02:00
2023-06-08 10:11:41 +02:00
2023-05-31 16:19:06 +02:00
2023-06-14 13:59:38 +02:00
2023-06-12 15:49:50 +02:00
2023-08-08 10:11:10 +02:00
2023-07-22 11:27:25 +10:00
2023-08-03 17:09:18 +02:00
2023-08-03 17:09:18 +02:00
2023-07-28 18:30:32 +02:00
2023-07-22 11:27:25 +10:00
2023-07-22 11:27:25 +10:00
2023-07-22 11:27:25 +10:00
2023-08-09 20:24:24 +10:00
2023-08-02 17:44:37 +02:00
2023-08-04 08:51:13 +10:00
2023-08-04 08:51:13 +10:00
2023-06-15 13:35:34 +10:00
2023-07-22 11:27:25 +10:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-04 08:51:13 +10:00
2023-07-20 11:55:34 +10:00
2023-07-22 11:27:25 +10:00
2023-07-17 10:46:26 +02:00
2023-07-31 20:01:40 +10:00
2023-07-27 12:21:06 +10:00
2023-07-27 12:21:06 +10:00
2023-08-02 22:14:18 +02:00
2023-05-31 16:19:06 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-09 11:15:27 +02:00
2023-05-31 16:19:06 +02:00
2023-07-20 11:55:34 +10:00
2023-07-31 13:02:30 +10:00
2023-07-11 22:36:10 +02:00
2023-08-04 08:51:13 +10:00
2023-08-05 02:57:52 +02:00
2023-06-15 22:18:28 +02:00
2023-08-03 17:09:18 +02:00
2023-06-15 13:35:34 +10:00
2023-06-03 08:54:37 +10:00
2023-07-22 11:27:25 +10:00
2023-05-31 16:19:06 +02:00
2023-05-31 16:19:06 +02:00
2023-07-17 10:46:26 +02:00
2023-07-20 11:55:34 +10:00
2023-07-22 11:27:25 +10:00
2023-05-31 16:19:06 +02:00
2023-05-31 16:19:06 +02:00
2023-05-31 16:19:06 +02:00
2023-07-25 21:15:52 +02:00
2023-07-11 14:40:47 +10:00
2023-07-31 13:02:30 +10:00
2023-06-16 08:14:25 -04:00
2023-07-09 20:00:17 -04:00
2023-05-31 16:19:06 +02:00
2023-08-03 17:09:18 +02:00
2023-07-22 11:27:25 +10:00
2023-08-04 20:40:05 +02:00
2023-07-31 13:02:30 +10:00
2023-08-04 08:51:13 +10:00
2023-08-08 10:11:10 +02:00
2023-08-03 17:09:18 +02:00
2023-08-03 17:09:18 +02:00
2023-08-02 22:14:18 +02:00
2023-07-17 10:46:26 +02:00
2023-07-31 13:02:30 +10:00
2023-07-24 22:06:55 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-04 08:51:13 +10:00
2023-07-22 11:27:25 +10:00
2023-08-04 08:51:13 +10:00
2023-08-05 02:57:52 +02:00
2023-08-04 08:51:13 +10:00
2023-08-09 10:49:53 +10:00
2023-08-04 08:51:13 +10:00
2023-08-04 08:51:13 +10:00
2023-08-03 17:09:18 +02:00
2023-08-03 17:09:18 +02:00
2023-08-03 17:09:18 +02:00
2023-08-03 17:09:18 +02:00
2023-08-03 17:09:18 +02:00
2023-08-03 17:09:18 +02:00
2023-08-03 17:09:18 +02:00
2023-08-04 20:59:04 +02:00
2023-08-03 17:09:18 +02:00
2023-08-03 17:09:18 +02:00
2023-07-22 11:27:25 +10:00
2023-08-04 08:51:13 +10:00
2023-08-04 08:51:13 +10:00
2023-07-31 19:57:32 +10:00
2023-07-22 11:27:25 +10:00
2023-07-13 18:24:19 +02:00
2023-08-02 14:02:23 +02:00
2023-08-08 11:26:22 +02:00
2023-07-20 11:55:34 +10:00
2023-08-03 16:54:39 +02:00
2023-06-15 13:35:34 +10:00
2023-06-15 13:35:34 +10:00
2023-06-15 13:35:34 +10:00
2023-07-22 11:27:25 +10:00
2023-07-22 11:27:25 +10:00
2023-07-22 11:27:25 +10:00
2023-07-04 17:03:02 +02:00
2023-07-31 13:02:30 +10:00
2023-06-23 15:55:42 +02:00
2023-06-15 13:35:34 +10:00
2023-06-15 13:35:34 +10:00
2023-07-28 09:38:07 +10:00
2023-06-15 13:35:34 +10:00
2023-08-04 08:51:13 +10:00
2023-06-15 22:18:28 +02:00
2023-08-04 08:51:13 +10:00
2023-07-24 11:04:19 +10:00
2023-08-04 08:51:13 +10:00
2023-07-22 11:27:25 +10:00
2023-06-19 20:40:49 +10:00
2023-08-02 22:14:18 +02:00
2023-08-04 08:51:13 +10:00
2023-06-15 13:35:34 +10:00
2023-07-22 11:27:25 +10:00
2023-08-09 11:15:27 +02:00
2023-08-02 17:44:37 +02:00
2023-08-02 22:14:18 +02:00
2023-06-15 13:35:34 +10:00
2023-07-02 19:54:27 +10:00
2023-07-11 15:30:30 +02:00
2023-08-02 17:44:37 +02:00
2023-05-31 16:19:06 +02:00
2023-08-02 17:44:37 +02:00
2023-08-07 18:41:19 +02:00
2023-07-22 11:27:25 +10:00
2023-08-05 02:57:52 +02:00
2023-08-03 19:17:43 +10:00
2023-07-20 11:55:34 +10:00
2023-06-04 19:27:38 +10:00
2023-07-22 11:27:25 +10:00
2023-08-06 21:30:30 +02:00
2023-08-04 08:51:13 +10:00
2023-07-22 11:27:25 +10:00
2023-07-11 15:30:30 +02:00
2023-07-22 11:27:25 +10:00
2023-07-22 11:27:25 +10:00
2023-07-22 11:43:01 +10:00
2023-07-22 11:43:01 +10:00
2023-08-08 17:36:06 +02:00
2023-08-03 16:13:04 +02:00
2023-08-03 17:09:18 +02:00
2023-07-26 15:23:26 +10:00
2023-07-25 21:15:52 +02:00
2023-08-03 17:09:18 +02:00
2023-07-25 21:15:52 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 14:15:27 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-03 16:13:04 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-03 17:09:18 +02:00
2023-08-02 22:14:18 +02:00
2023-07-31 13:02:30 +10:00
2023-07-25 21:15:52 +02:00
2023-08-02 22:14:18 +02:00
2023-08-04 13:42:51 -04:00
2023-08-02 22:14:18 +02:00
2023-08-04 08:51:13 +10:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-07-24 22:06:55 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-03 01:11:28 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-05-31 16:19:06 +02:00
2023-08-04 08:51:13 +10:00
2023-07-11 22:36:10 +02:00
2023-07-11 22:36:10 +02:00
2023-06-16 10:53:11 +02:00
2023-07-11 22:36:10 +02:00
2023-08-09 10:06:31 +02:00
2023-08-08 17:36:06 +02:00
2023-07-11 22:36:10 +02:00
2023-08-07 10:40:29 +02:00
2023-08-04 08:51:13 +10:00
2023-08-03 17:09:18 +02:00
2023-06-13 20:23:39 +02:00
2023-08-06 21:30:30 +02:00
2023-05-31 16:19:06 +02:00
2023-07-17 10:46:26 +02:00
2023-08-09 13:37:37 +10:00
2023-05-31 16:19:06 +02:00
2023-07-22 11:27:25 +10:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-07-22 11:43:01 +10:00
2023-08-03 19:17:43 +10:00
2023-08-09 10:49:53 +10:00
2023-08-04 08:51:13 +10:00
2023-07-28 13:44:01 +02:00
2023-08-02 22:14:18 +02:00
2023-07-28 13:44:01 +02:00
2023-07-27 17:47:34 -04:00
2023-06-15 13:35:34 +10:00
2023-08-02 22:14:18 +02:00
2023-05-31 16:19:06 +02:00
2023-05-31 16:19:06 +02:00
2023-08-02 22:14:18 +02:00
2023-08-04 08:51:13 +10:00
2023-08-03 17:09:18 +02:00
2023-07-17 10:46:26 +02:00
2023-08-09 20:24:24 +10:00
2023-08-04 08:51:13 +10:00
2023-08-09 13:37:37 +10:00
2023-08-09 11:15:27 +02:00
2023-08-03 16:54:39 +02:00
2023-08-04 08:51:13 +10:00
2023-08-02 22:14:18 +02:00
2023-07-28 18:30:32 +02:00
2023-07-29 15:32:45 +10:00
2023-08-09 10:49:53 +10:00
2023-08-09 13:37:37 +10:00
2023-07-17 10:46:26 +02:00
2023-08-03 19:17:43 +10:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-03 01:11:28 +02:00
2023-08-03 19:17:43 +10:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-03 19:17:43 +10:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-08-02 22:14:18 +02:00
2023-07-22 11:27:25 +10:00
2023-07-26 15:23:26 +10:00
2023-07-02 19:54:27 +10:00
2023-07-31 13:02:30 +10:00
2023-06-03 08:54:37 +10:00
2023-05-31 16:19:06 +02:00
2023-05-31 16:19:06 +02:00
2023-07-22 11:27:25 +10:00
2023-07-24 11:04:19 +10:00
2023-05-31 16:19:06 +02:00
2023-07-22 11:27:25 +10:00
2023-07-22 11:27:25 +10:00
2023-05-31 16:19:06 +02:00
2023-08-05 02:57:52 +02:00
2023-08-09 11:17:04 +10:00
2023-07-24 10:13:31 +10:00
2023-07-07 20:37:33 +10:00
2023-07-11 22:36:10 +02:00
2023-06-30 08:49:53 +02:00
2023-07-24 22:06:55 +02:00
2023-07-27 12:21:06 +10:00
2023-07-04 12:02:25 +10:00
2023-07-22 11:27:25 +10:00
2023-07-22 11:46:41 +10:00
2023-06-19 12:40:37 +10:00