Rename "blenderpack" module to "bpackage"

Also split code into files by class
This commit is contained in:
gandalf3
2017-07-06 22:58:17 -07:00
parent bc6f5bcdd4
commit bbc1c8b3bf
6 changed files with 62 additions and 62 deletions

3
bpackage/__init__.py Normal file
View File

@@ -0,0 +1,3 @@
import bpackage.exceptions
from .package import Package
from .repository import Repository

14
bpackage/exceptions.py Normal file
View File

@@ -0,0 +1,14 @@
class BadAddon(Exception):
"""
Raised when something expected to be an addon turns out not to be one after all
"""
class RepositoryListError(ValueError):
"""
Raised when something is amiss with the repo.json file
"""
class RepositoryNotFoundError(RepositoryListError):
"""
Raised when looking for a repository which isn't there
"""

39
bpackage/package.py Normal file
View File

@@ -0,0 +1,39 @@
#!/usr/bin/env python3
# HACK: seems 'requests' module bundled with blender isn't bundled with 'idna' module. So force system python for now
# import sys
# sys.path.insert(0, '/usr/lib/python3.6/site-packages')
import logging
log = logging.getLogger(__name__)
class Package:
"""
Stores package methods and metadata
"""
def __init__(self, package_dict:dict = None):
self.from_dict(package_dict)
def to_dict(self) -> dict:
"""
Return a dict representation of the package
"""
return {
'bl_info': self.bl_info,
'url': self.url,
}
def from_dict(self, package_dict: dict):
"""
Get attributes from a dict such as produced by `to_dict`
"""
if package_dict is None:
package_dict = {}
for attr in ('name', 'url', 'bl_info'):
setattr(self, attr, package_dict.get(attr))

66
blenderpack/blenderpack.py → bpackage/repository.py Executable file → Normal file
View File

@@ -1,38 +1,16 @@
#!/usr/bin/env python3
# HACK: seems 'requests' module bundled with blender isn't bundled with 'idna' module. So force system python for now
import sys
sys.path.insert(0, '/usr/lib/python3.6/site-packages')
# import sys
# sys.path.insert(0, '/usr/lib/python3.6/site-packages')
from pathlib import Path
import requests
import json
import os
import pathlib
import ast
import argparse
import zipfile
import logging
from collections import MutableMapping
log = logging.getLogger(__name__)
REQUIRED_KEYS = set(['name', 'blender', 'version'])
SCHEMA_VERSION = 1
class BadAddon(Exception):
"""
Raised when something expected to be an addon turns out not to be
"""
class RepositoryListError(ValueError):
"""
Raised when something is amiss with the repo.json file
"""
class RepositoryNotFoundError(RepositoryListError):
"""
Raised when looking for a repository which isn't there
"""
class Package:
"""
@@ -119,7 +97,7 @@ class Repository:
setattr(self, attr, value)
def dump(self, path: pathlib.Path):
def dump(self, path: Path):
"""
Dump repository as a repo.json file in 'path'
"""
@@ -133,7 +111,7 @@ def refresh(url):
# otherwise no exception will be generated when the other process closes its end.
pipe[0].close()
local_repo_path = pathlib.Path(__file__).parent / 'packages'
local_repo_path = Path(__file__).parent / 'packages'
local_repo_path.mkdir(exist_ok=True)
try:
@@ -143,37 +121,3 @@ def refresh(url):
pipe[1].close()
# class Package:
# def __init__(self):
# self.bl_info = None
# self.url = None
# self.type = None
#
# class Repository:
# def __init__(self, name):
# self.name = name
# self.packages = None
#
# def json(self):
# return json.dumps(self.__dict__)
def main():
pass
# print(args)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Search, install, and manage packages for Blender')
subparsers = parser.add_subparsers()
make = subparsers.add_parser('make')
make.add_argument('path')
make.set_defaults(func=lambda args: make_repo(pathlib.Path(args.path)))
args = parser.parse_args()
args.func(args)
main()

View File

@@ -4,7 +4,7 @@ import unittest
from pathlib import Path
import logging
import json
import blenderpack as BP
import bpackage as BP
logging.basicConfig(level=logging.DEBUG,
format='%(levelname)8s: %(message)s')