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