Skip to content

Commit 0141a9a

Browse files
authored
record the start and end date of the query (#90)
* record the start and end date of the query * add cli argument
1 parent 1ddbda9 commit 0141a9a

File tree

3 files changed

+29
-11
lines changed

3 files changed

+29
-11
lines changed

devstats/__main__.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import collections
2+
import datetime
23
import json
34
import os
45
import re
@@ -36,7 +37,14 @@ def cli():
3637
help="Output directory",
3738
show_default=True,
3839
)
39-
def query(repo_owner, repo_name, outdir):
40+
@click.option(
41+
"-d",
42+
"--start-date",
43+
default="2020-01-01T00:00:00Z",
44+
help="Start date for query",
45+
show_default=True,
46+
)
47+
def query(repo_owner, repo_name, outdir, start_date):
4048
"""Download and save issue and pr data for `repo_owner`/`repo_name`"""
4149
os.makedirs(outdir, exist_ok=True)
4250

@@ -74,6 +82,7 @@ def query(repo_owner, repo_name, outdir):
7482
headers,
7583
repo_owner=repo_owner,
7684
repo_name=repo_name,
85+
start_date=start_date,
7786
)
7887
data.get()
7988
ftype = {"issues": "issues", "pullRequests": "PRs"}
@@ -91,18 +100,22 @@ def query(repo_owner, repo_name, outdir):
91100

92101
if response.status_code == 200:
93102
stargazers = response.json()
94-
with open(f"{outdir}/{repo_name}_stars.json", "w") as outf:
95-
simplified = [
96-
{"starred_at": user["starred_at"], "login": user["user"]["login"]}
97-
for user in stargazers
98-
]
99-
json.dump(simplified, outf)
100103
else:
101104
print(
102105
"Request failed for collecting start with status code "
103106
f"{response.status_code}"
104107
)
105108

109+
with open(f"{outdir}/{repo_name}_misc.json", "w") as outf:
110+
misc_data = {}
111+
misc_data["query_start_date"] = start_date
112+
misc_data["query_end_date"] = str(datetime.datetime.now())
113+
misc_data["repo_stars"] = [
114+
{"starred_at": user["starred_at"], "login": user["user"]["login"]}
115+
for user in stargazers
116+
]
117+
json.dump(misc_data, outf)
118+
106119

107120
cli.add_command(template)
108121
cli.add_command(publish)

devstats/queries/issue_activity_since_date.gql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
query {
22
repository(owner: "_REPO_OWNER_", name: "_REPO_NAME_") {
3-
issues(first: 100, filterBy: { since: "2020-01-01T00:00:00Z" }) {
3+
issues(first: 100, filterBy: { since: "_START_DATE_" }) {
44
totalCount
55
edges {
66
cursor

devstats/query.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
endpoint = r"https://api.github.com/graphql"
77

88

9-
def load_query_from_file(fname, repo_owner="numpy", repo_name="numpy"):
9+
def load_query_from_file(fname, repo_owner, repo_name, start_date):
1010
"""
1111
Load an 'issue' query from file and set the target repository, where
1212
the target repository has the format:
@@ -39,6 +39,7 @@ def load_query_from_file(fname, repo_owner="numpy", repo_name="numpy"):
3939
# Set target repo from template
4040
query = query.replace("_REPO_OWNER_", repo_owner)
4141
query = query.replace("_REPO_NAME_", repo_name)
42+
query = query.replace("_START_DATE_", start_date)
4243
return query
4344

4445

@@ -178,7 +179,7 @@ class GithubGrabber:
178179
"""
179180

180181
def __init__(
181-
self, query_fname, query_type, headers, repo_owner="numpy", repo_name="numpy"
182+
self, query_fname, query_type, headers, repo_owner, repo_name, start_date
182183
):
183184
"""
184185
Create an object to send/recv queries related to the issue tracker
@@ -206,11 +207,15 @@ def __init__(
206207
self.repo_owner = repo_owner
207208
self.repo_name = repo_name
208209
self.raw_data = None
210+
self.start_date = start_date
209211
self.load_query()
210212

211213
def load_query(self):
212214
self.query = load_query_from_file(
213-
self.query_fname, self.repo_owner, self.repo_name
215+
self.query_fname,
216+
self.repo_owner,
217+
self.repo_name,
218+
start_date=self.start_date,
214219
)
215220

216221
def get(self):

0 commit comments

Comments
 (0)