def new_label( repo: Repository, label_color: str,) -> Label: """Get the Label object or create it with given features.""" try: label_to_add = repo.get_label('hacktoberfest') except UnknownObjectException: label_to_add = repo.create_label( name='hacktoberfest', color=label_color, description="Issues for contributing during the period of hacktoberfest") return label_to_add
def _label_sync(repo: Repository): """ Sync labels to settings in config file. :param repo: Github repository object to sync labels :returns: None """ config = _load_config(repo=repo.name) base_labels = [x for x in config['labels']] repo_labels = [{'name': x.name, 'color': x.color, 'description': x.description} for x in repo.get_labels()] #: smart sync only changes that are necessary (add or delete) for diff in list(filterfalse(lambda x: x in base_labels, repo_labels)) + list( filterfalse(lambda x: x in repo_labels, base_labels) ): try: repo.get_label(name=diff['name']).delete() except Exception: print(json.dumps(diff)) finally: repo.create_label(name=diff['name'], color=diff['color'], description=diff['description'])
def get_or_create_label( repo: Repository, edit_label: str, edit_label_color: str, edit_label_description: str, ) -> Label: """Get the Label object or create it with given features.""" try: label_to_add = repo.get_label(edit_label) except UnknownObjectException: label_to_add = repo.create_label( name=edit_label, color=edit_label_color, description=edit_label_description, ) return label_to_add
def _get_label_by_name(repository: Repository, label: str) -> Optional[Label]: try: return repository.get_label(label) except UnknownObjectException: return None
def _has_in_labels(repo: ghr.Repository, lname: str) -> bool: try: repo.get_label(lname) return True except github.UnknownObjectException: return False