As I see it, the *package manager* is called "bpkg", while the *package
manager addon* is called "package_manager".
The *package manager* contains the actual package management code, and
the *package manager addon* provides the interface to use it.
Added a docstring to every class and function, documenting arguments and return values. Also made a couple cleanup changes. Next cleanup-related change will be moving from urllib.requests to the requests module.
Downloading, parsing index.json, and installing add-ons all now are handled asynchronously using the asyncio module. These operations will no longer block Blender, allowing them to run in the background.
- For now, add-ons are downloaded from http://localhost:8000/.
- Add-ons on the index.json (from blender.org gitweb) are only displayed if they are not installed locally, or installed in the USER path.
- Only .py add-ons are supported for now, but .zip add-ons will be supported next commit.
- Add-on directory name was not a proper identifier before.
- index.json was formatted incorrectly (missing commas); new version is generated with updated generate-json.py (which seems to fail for addons_contrib at the moment), and contains data for add-ons in addons repo.