Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions homeassistant/components/github/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,11 @@
ATTR_OPEN_PULL_REQUESTS = "open_pull_requests"
ATTR_PATH = "path"
ATTR_STARGAZERS = "stargazers"
ATTR_FORKS = "forks"
ATTR_CLONES = "clones"
ATTR_CLONES_UNIQUE = "clones_unique"
ATTR_VIEWS = "views"
ATTR_VIEWS_UNIQUE = "views_unique"

DEFAULT_NAME = "GitHub"

Expand Down Expand Up @@ -86,6 +91,11 @@ def __init__(self, github_data):
self._pull_request_count = None
self._latest_open_pr_url = None
self._stargazers = None
self._forks = None
self._clones = None
self._clones_unique = None
self._views = None
self._views_unique = None
self._github_data = github_data

@property
Expand Down Expand Up @@ -122,6 +132,11 @@ def device_state_attributes(self):
ATTR_LATEST_OPEN_PULL_REQUEST_URL: self._latest_open_pr_url,
ATTR_OPEN_PULL_REQUESTS: self._pull_request_count,
ATTR_STARGAZERS: self._stargazers,
ATTR_FORKS: self._forks,
ATTR_CLONES: self._clones,
ATTR_CLONES_UNIQUE: self._clones_unique,
ATTR_VIEWS: self._views,
ATTR_VIEWS_UNIQUE: self._views_unique,
}
if self._latest_release_tag is not None:
attrs[ATTR_LATEST_RELEASE_TAG] = self._latest_release_tag
Expand Down Expand Up @@ -154,6 +169,11 @@ def update(self):
self._pull_request_count = self._github_data.pull_request_count
self._latest_open_pr_url = self._github_data.latest_open_pr_url
self._stargazers = self._github_data.stargazers
self._forks = self._github_data.forks
self._clones = self._github_data.clones
self._clones_unique = self._github_data.clones_unique
self._views = self._github_data.views
self._views_unique = self._github_data.views_unique


class GitHubData:
Expand Down Expand Up @@ -190,13 +210,19 @@ def __init__(self, repository, access_token=None, server_url=None):
self.pull_request_count = None
self.latest_open_pr_url = None
self.stargazers = None
self.forks = None
self.clones = None
self.clones_unique = None
self.views = None
self.views_unique = None

def update(self):
"""Update GitHub Sensor."""
try:
repo = self._github_obj.get_repo(self.repository_path)

self.stargazers = repo.stargazers_count
self.forks = repo.forks_count

open_issues = repo.get_issues(state="open", sort="created")
if open_issues is not None:
Expand All @@ -218,6 +244,16 @@ def update(self):
if releases and releases.totalCount > 0:
self.latest_release_url = releases[0].html_url

clones = repo.get_clones_traffic()
if clones is not None:
self.clones = clones.get("count")
self.clones_unique = clones.get("uniques")

views = repo.get_views_traffic()
if views is not None:
self.views = views.get("count")
self.views_unique = views.get("uniques")

self.available = True
except self._github.GithubException as err:
_LOGGER.error("GitHub error for %s: %s", self.repository_path, err)
Expand Down