mirror of
https://github.com/kennethreitz/python-github3.git
synced 2026-06-05 15:00:21 +00:00
datetypes
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
github3.structures
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
This module contains the specific github data types.
|
||||
"""
|
||||
|
||||
|
||||
class KeyedListResource(object):
|
||||
"""docstring for ListResource"""
|
||||
|
||||
def __init__(self, items=None):
|
||||
super(KeyedListResource, self).__init__()
|
||||
|
||||
self._h = None
|
||||
self._items = items or list()
|
||||
self._obj = None
|
||||
|
||||
def __repr__(self):
|
||||
return repr(self._items)
|
||||
|
||||
def __iter__(self):
|
||||
for item in self._items:
|
||||
yield item
|
||||
|
||||
def __getitem__(self, key):
|
||||
|
||||
# Support index operators.
|
||||
if isinstance(key, int):
|
||||
if abs(key) <= len(self._items):
|
||||
return self._items[key]
|
||||
|
||||
v = self.get(key)
|
||||
|
||||
if v is None:
|
||||
raise KeyError(key)
|
||||
|
||||
return v
|
||||
|
||||
def add(self, *args, **kwargs):
|
||||
|
||||
try:
|
||||
return self[0].new(*args, **kwargs)
|
||||
except IndexError:
|
||||
o = self._obj()
|
||||
o._h = self._h
|
||||
|
||||
return o.new(*args, **kwargs)
|
||||
|
||||
|
||||
def remove(self, key):
|
||||
if hasattr(self[0], 'delete'):
|
||||
return self[key].delete()
|
||||
|
||||
def get(self, key):
|
||||
for item in self:
|
||||
if key in item._ids:
|
||||
return item
|
||||
|
||||
def __delitem__(self, key):
|
||||
self[key].delete()
|
||||
|
||||
|
||||
|
||||
# class ProcessListResource(KeyedListResource):
|
||||
# """KeyedListResource with basic filtering for process types."""
|
||||
|
||||
# def __init__(self, *args, **kwargs):
|
||||
# super(ProcessListResource, self).__init__(*args, **kwargs)
|
||||
|
||||
# def __getitem__(self, key):
|
||||
|
||||
# try:
|
||||
# return super(ProcessListResource, self).__getitem__(key)
|
||||
# except KeyError, why:
|
||||
|
||||
# c = [p for p in self._items if key == p.type]
|
||||
|
||||
# if c:
|
||||
# return ProcessTypeListResource(items=c)
|
||||
# else:
|
||||
# raise why
|
||||
|
||||
|
||||
# class ProcessTypeListResource(ProcessListResource):
|
||||
# """KeyedListResource with basic filtering for process types."""
|
||||
|
||||
# def __init__(self, *args, **kwargs):
|
||||
|
||||
# super(ProcessTypeListResource, self).__init__(*args, **kwargs)
|
||||
|
||||
# def scale(self, quantity):
|
||||
# return self[0].scale(quantity)
|
||||
|
||||
|
||||
|
||||
# class SSHKeyListResource(KeyedListResource):
|
||||
# """KeyedListResource with clearing for ssh keys."""
|
||||
|
||||
# def __init__(self, *args, **kwargs):
|
||||
|
||||
# super(SSHKeyListResource, self).__init__(*args, **kwargs)
|
||||
|
||||
# def clear(self):
|
||||
# """Removes all SSH keys from a user's system."""
|
||||
|
||||
# r = self._h._http_resource(
|
||||
# method='DELETE',
|
||||
# resource=('user', 'keys'),
|
||||
# )
|
||||
|
||||
# return r.ok
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user