diff options
author | 2012-02-03 14:45:32 +0100 | |
---|---|---|
committer | 2012-02-03 14:46:54 +0100 | |
commit | f01bc94a33d8644da65b5fa895c222e9ee057b50 (patch) | |
tree | 3bfc837901a54f97a30f1d24431d8322906de192 /pygithub3/core/resources | |
parent | Pypi environment by setuptools (diff) | |
download | python-github3-f01bc94a33d8644da65b5fa895c222e9ee057b50.tar.xz python-github3-f01bc94a33d8644da65b5fa895c222e9ee057b50.zip |
Fix imports to new environment
Absolute imports as PEP8 tells
Diffstat (limited to 'pygithub3/core/resources')
-rw-r--r-- | pygithub3/core/resources/__init__.py | 87 | ||||
-rw-r--r-- | pygithub3/core/resources/users/__init__.py | 4 | ||||
-rw-r--r-- | pygithub3/core/resources/users/emails.py | 9 | ||||
-rw-r--r-- | pygithub3/core/resources/users/followers.py | 0 | ||||
-rw-r--r-- | pygithub3/core/resources/users/keys.py | 0 | ||||
-rw-r--r-- | pygithub3/core/resources/users/user.py | 25 |
6 files changed, 125 insertions, 0 deletions
diff --git a/pygithub3/core/resources/__init__.py b/pygithub3/core/resources/__init__.py new file mode 100644 index 0000000..bca9607 --- /dev/null +++ b/pygithub3/core/resources/__init__.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import re + +ABS_IMPORT_PREFIX = 'pygithub3.core.resources' + + +class UriNotFound(Exception): + pass + + +class UriInvalid(Exception): + pass + + +class Resource(object): + """ """ + + def __init__(self, args): + """ """ + self.args = args + self.validate() + self.uri = self.set_uri() + + def validate(self, args): + raise NotImplementedError + + def set_uri(self): + raise NotImplementedError + + def get_uri(self): + return str(self.uri).strip('/') + + def get_model(self): + return getattr(self, 'model', '') + + def __getattr__(self, name): + return self.args.get(name) + + def __str__(self): + return self.get_uri() + + +class Factory(object): + """ """ + + import_pattern = re.compile(r'^(\w+\.)+\w+$') + + def __init__(self, **kwargs): + self.args = kwargs + + def __validate(func): + """ """ + + def wrapper(self, resource_path): + if not Factory.import_pattern.match(resource_path): + raise UriInvalid("'%s' isn't valid form" % resource_path) + return func(self, resource_path.lower()) + return wrapper + + def __dispatch(func): + """ """ + + from importlib import import_module + + def wrapper(self, resource_path): + module_chunk, s, uri_chunk = resource_path.rpartition('.') + try: + # TODO: CamelCase and under_score support, now only Class Name + module = import_module('%s.%s' + % (ABS_IMPORT_PREFIX, module_chunk)) + uri = getattr(module, uri_chunk.capitalize()) + except ImportError: + raise UriNotFound("'%s' module does not exists" % module_chunk) + except AttributeError: + raise UriNotFound("'%s' uri doesn't exists into '%s' module" + % (uri_chunk.capitalize(), module_chunk)) + return func(self, uri) + return wrapper + + @__validate + @__dispatch + def __call__(self, resource_class=''): + resource = resource_class(self.args) + assert isinstance(resource, Resource) + return resource diff --git a/pygithub3/core/resources/users/__init__.py b/pygithub3/core/resources/users/__init__.py new file mode 100644 index 0000000..84759a2 --- /dev/null +++ b/pygithub3/core/resources/users/__init__.py @@ -0,0 +1,4 @@ +# -*- encoding: utf-8 -*- + +from pygithub3.core.resources import Resource +from user import * diff --git a/pygithub3/core/resources/users/emails.py b/pygithub3/core/resources/users/emails.py new file mode 100644 index 0000000..18d520c --- /dev/null +++ b/pygithub3/core/resources/users/emails.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from . import Resource +#from pygithub3.models. + + +class List(Resource): + pass diff --git a/pygithub3/core/resources/users/followers.py b/pygithub3/core/resources/users/followers.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/pygithub3/core/resources/users/followers.py diff --git a/pygithub3/core/resources/users/keys.py b/pygithub3/core/resources/users/keys.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/pygithub3/core/resources/users/keys.py diff --git a/pygithub3/core/resources/users/user.py b/pygithub3/core/resources/users/user.py new file mode 100644 index 0000000..1399ff8 --- /dev/null +++ b/pygithub3/core/resources/users/user.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from . import Resource +from pygithub3.models.users import User + +__all__ = ('Get', 'Update') + + +class Get(Resource): + + model = User + + def validate(self): + pass + + def set_uri(self): + if self.user: + return 'users/%s' % self.user + else: + return 'user' + + +class Update(Resource): + pass |