本文整理汇总了Python中github.GitHub.get_user_info方法的典型用法代码示例。如果您正苦于以下问题:Python GitHub.get_user_info方法的具体用法?Python GitHub.get_user_info怎么用?Python GitHub.get_user_info使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.GitHub
的用法示例。
在下文中一共展示了GitHub.get_user_info方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from github import GitHub [as 别名]
# 或者: from github.GitHub import get_user_info [as 别名]
class Repo:
def __init__(self, config):
self.myaddress = config.get('lilac', 'email')
self.mymaster = config.get('lilac', 'master')
self.repomail = config.get('repository', 'email')
self.name = config.get('repository', 'name')
self.trim_ansi_codes = not config.getboolean(
'smtp', 'use_ansi', fallback=False)
self.repodir = Path(config.get('repository', 'repodir')).expanduser()
self.ms = MailService(config)
github_token = config.get('lilac', 'github_token', fallback=None)
if github_token:
self.gh = GitHub(config.get('lilac', 'github_token', fallback=None))
else:
self.gh = None
self.mods: LilacMods = {} # to be filled by self.load_all_lilac_and_report()
@lru_cache()
def maintainer_from_github(self, username: str) -> Optional[Maintainer]:
if self.gh is None:
raise ValueError('未设置 github token,无法从 GitHub 取得用户 Email 地址')
userinfo = self.gh.get_user_info(username)
if userinfo['email']:
return Maintainer(userinfo['name'], userinfo['email'], username)
else:
return None
@lru_cache()
def find_maintainers(self, mod: LilacMod) -> List[Maintainer]:
ret = []
errors = []
maintainers: List[Dict[str, str]] = getattr(mod, 'maintainers', None)
if maintainers is not None:
for m in maintainers:
if 'github' in m and 'email' in m:
ret.append(
Maintainer.from_email_address(m['email'], m['github'])
)
elif 'github' in m:
try:
u = self.maintainer_from_github(m['github'])
except Exception as e:
errors.append(f'从 GitHub 获取用户 Email 地址时出错:{e!r}')
else:
if u is None:
errors.append(f'GitHub 用户 {m["github"]} 未公开 Email 地址')
else:
ret.append(u)
else:
logger.error('unsupported maintainer info: %r', m)
errors.append(f'不支持的格式:{m!r}')
continue
if not ret or errors:
# fallback to git
dir = self.repodir / mod.pkgbase
git_maintainer = self.find_maintainer_by_git(dir)
if errors:
error_str = '\n'.join(errors)
self.sendmail(
git_maintainer,
subject = f'{mod.pkgbase} 的 maintainers 信息有误',
msg = f"以下 maintainers 信息有误,请修正。\n\n{error_str}\n",
)
if not ret:
logger.warning("lilac doesn't give out maintainers for %s, "
"fallback to git.", mod.pkgbase)
return [git_maintainer]
else:
return ret
def find_maintainer_by_git(
self,
dir: Path = Path('.'),
file: str = '*',
) -> Maintainer:
me = self.myaddress
cmd = [
"git", "log", "--format=%H %an <%ae>", "--", file,
]
p = subprocess.Popen(
cmd, stdout=subprocess.PIPE, universal_newlines=True,
cwd = dir,
)
try:
while True:
line = p.stdout.readline()
commit, author = line.rstrip().split(None, 1)
if me not in author:
return Maintainer.from_email_address(author)
#.........这里部分代码省略.........