aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3/core/resources
diff options
context:
space:
mode:
authorDavid Medina <davidmedina9@gmail.com>2012-02-03 14:45:32 +0100
committerDavid Medina <davidmedina9@gmail.com>2012-02-03 14:46:54 +0100
commitf01bc94a33d8644da65b5fa895c222e9ee057b50 (patch)
tree3bfc837901a54f97a30f1d24431d8322906de192 /pygithub3/core/resources
parentPypi environment by setuptools (diff)
downloadpython-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__.py87
-rw-r--r--pygithub3/core/resources/users/__init__.py4
-rw-r--r--pygithub3/core/resources/users/emails.py9
-rw-r--r--pygithub3/core/resources/users/followers.py0
-rw-r--r--pygithub3/core/resources/users/keys.py0
-rw-r--r--pygithub3/core/resources/users/user.py25
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