Module jumpscale.clients.github.github
Expand source code
from gevent import sleep
from jumpscale.clients.base import Client
from jumpscale.core.base import Base, fields
from jumpscale.loader import j
from github import Github, GithubObject
from .repo import GithubRepo
from .helper import retry
NotSet = GithubObject.NotSet
class GithubClient(Client):
username = fields.String()
password = fields.String()
accesstoken = fields.String()
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.__client = None
@property
def github_client(self):
if not self.__client:
if self.accesstoken:
self.__client = Github(self.accesstoken)
else:
self.__client = Github(login_or_token=self.username, password=self.password)
return self.__client
@retry
def get_repo(self, repo_full_name):
return GithubRepo(self.github_client, repo_full_name)
@retry
def get_repos(self):
l = []
for r in self.github_client.get_user().get_repos():
l.append(GithubRepo(self.github_client, r.full_name))
return l
@retry
def get_orgs(self):
l = []
for o in self.github_client.get_user().get_orgs():
l.append(o.login)
return l
@retry
def get_userdata(self):
u = self.github_client.get_user()
el = []
for e in u.get_emails():
el.append(e)
return {"name": u.name, "emails": el, "id": u.id, "avatar_url": u.avatar_url}
@retry
def create_repo(
self,
name,
description=NotSet,
homepage=NotSet,
private=NotSet,
has_issues=NotSet,
has_wiki=NotSet,
has_downloads=NotSet,
auto_init=NotSet,
gitignore_template=NotSet,
):
return self.github_client.get_user().create_repo(
name,
description=description,
homepage=homepage,
private=private,
has_issues=has_issues,
has_wiki=has_wiki,
has_downloads=has_downloads,
auto_init=auto_init,
gitignore_template=gitignore_template,
)
@retry
def delete_repo(self, repo_name):
return self.github_client.get_user().get_repo(repo_name).delete()
Classes
class GithubClient (*args, **kwargs)
-
A simple attribute-based namespace.
SimpleNamespace(**kwargs)
base class implementation for any class with fields which supports getting/setting raw data for any instance fields.
any instance can have an optional name and a parent.
class Person(Base): name = fields.String() age = fields.Float() p = Person(name="ahmed", age="19") print(p.name, p.age)
Args
parent_
:Base
, optional- parent instance. Defaults to None.
instance_name_
:str
, optional- instance name. Defaults to None.
**values
- any given field values to initiate the instance with
Expand source code
class GithubClient(Client): username = fields.String() password = fields.String() accesstoken = fields.String() def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.__client = None @property def github_client(self): if not self.__client: if self.accesstoken: self.__client = Github(self.accesstoken) else: self.__client = Github(login_or_token=self.username, password=self.password) return self.__client @retry def get_repo(self, repo_full_name): return GithubRepo(self.github_client, repo_full_name) @retry def get_repos(self): l = [] for r in self.github_client.get_user().get_repos(): l.append(GithubRepo(self.github_client, r.full_name)) return l @retry def get_orgs(self): l = [] for o in self.github_client.get_user().get_orgs(): l.append(o.login) return l @retry def get_userdata(self): u = self.github_client.get_user() el = [] for e in u.get_emails(): el.append(e) return {"name": u.name, "emails": el, "id": u.id, "avatar_url": u.avatar_url} @retry def create_repo( self, name, description=NotSet, homepage=NotSet, private=NotSet, has_issues=NotSet, has_wiki=NotSet, has_downloads=NotSet, auto_init=NotSet, gitignore_template=NotSet, ): return self.github_client.get_user().create_repo( name, description=description, homepage=homepage, private=private, has_issues=has_issues, has_wiki=has_wiki, has_downloads=has_downloads, auto_init=auto_init, gitignore_template=gitignore_template, ) @retry def delete_repo(self, repo_name): return self.github_client.get_user().get_repo(repo_name).delete()
Ancestors
Instance variables
var accesstoken
-
getter method this property
will call
_get_value
, which would if the value is already defined and will get the default value if notReturns
any
- the field value
Expand source code
def getter(self): """ getter method this property will call `_get_value`, which would if the value is already defined and will get the default value if not Returns: any: the field value """ return self._get_value(name, field)
var github_client
-
Expand source code
@property def github_client(self): if not self.__client: if self.accesstoken: self.__client = Github(self.accesstoken) else: self.__client = Github(login_or_token=self.username, password=self.password) return self.__client
var password
-
getter method this property
will call
_get_value
, which would if the value is already defined and will get the default value if notReturns
any
- the field value
Expand source code
def getter(self): """ getter method this property will call `_get_value`, which would if the value is already defined and will get the default value if not Returns: any: the field value """ return self._get_value(name, field)
var username
-
getter method this property
will call
_get_value
, which would if the value is already defined and will get the default value if notReturns
any
- the field value
Expand source code
def getter(self): """ getter method this property will call `_get_value`, which would if the value is already defined and will get the default value if not Returns: any: the field value """ return self._get_value(name, field)
Methods
def create_repo(self, *args, **kwargs)
-
Expand source code
def wrapper(self, *args, **kwargs): for _ in range(6): try: result = function(self, *args, **kwargs) break except Exception as e: j.logger.warning(f"Failed to execute {function.__name__} due to error: {str(e)}") sleep(1) else: raise j.exceptions.Runtime(f"Failed to execute {function.__name__} after multiple retries") return result
def delete_repo(self, *args, **kwargs)
-
Expand source code
def wrapper(self, *args, **kwargs): for _ in range(6): try: result = function(self, *args, **kwargs) break except Exception as e: j.logger.warning(f"Failed to execute {function.__name__} due to error: {str(e)}") sleep(1) else: raise j.exceptions.Runtime(f"Failed to execute {function.__name__} after multiple retries") return result
def get_orgs(self, *args, **kwargs)
-
Expand source code
def wrapper(self, *args, **kwargs): for _ in range(6): try: result = function(self, *args, **kwargs) break except Exception as e: j.logger.warning(f"Failed to execute {function.__name__} due to error: {str(e)}") sleep(1) else: raise j.exceptions.Runtime(f"Failed to execute {function.__name__} after multiple retries") return result
def get_repo(self, *args, **kwargs)
-
Expand source code
def wrapper(self, *args, **kwargs): for _ in range(6): try: result = function(self, *args, **kwargs) break except Exception as e: j.logger.warning(f"Failed to execute {function.__name__} due to error: {str(e)}") sleep(1) else: raise j.exceptions.Runtime(f"Failed to execute {function.__name__} after multiple retries") return result
def get_repos(self, *args, **kwargs)
-
Expand source code
def wrapper(self, *args, **kwargs): for _ in range(6): try: result = function(self, *args, **kwargs) break except Exception as e: j.logger.warning(f"Failed to execute {function.__name__} due to error: {str(e)}") sleep(1) else: raise j.exceptions.Runtime(f"Failed to execute {function.__name__} after multiple retries") return result
def get_userdata(self, *args, **kwargs)
-
Expand source code
def wrapper(self, *args, **kwargs): for _ in range(6): try: result = function(self, *args, **kwargs) break except Exception as e: j.logger.warning(f"Failed to execute {function.__name__} due to error: {str(e)}") sleep(1) else: raise j.exceptions.Runtime(f"Failed to execute {function.__name__} after multiple retries") return result
Inherited members