Skip to content

Commit e2065bc

Browse files
authored
Merge pull request #407 from github-community-projects/fix-new-contributor-init
fix: store new_contributor parameter in __init__
2 parents a92b6e0 + f8d2b7c commit e2065bc

6 files changed

Lines changed: 21 additions & 48 deletions

File tree

contributor_stats.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ class ContributorStats:
2323
2424
Attributes:
2525
username (str): The username of the contributor
26-
new_contributor (bool): Whether the contributor is new or returning
2726
avatar_url (str): The url of the contributor's avatar
2827
contribution_count (int): The number of contributions the contributor has made
2928
commit_url (str): The url of the contributor's commits
3029
sponsor_info (str): The url of the contributor's sponsor page
30+
new_contributor (bool): Whether the contributor is new or returning
3131
3232
"""
3333

@@ -38,30 +38,29 @@ def __new__(cls, *args, **kwargs): # pylint: disable=unused-argument
3838
def __init__(
3939
self,
4040
username: str,
41-
new_contributor: bool,
4241
avatar_url: str,
4342
contribution_count: int,
4443
commit_url: str,
4544
sponsor_info: str,
45+
new_contributor: bool = False,
4646
):
4747
"""Initialize the contributor_stats object"""
48-
new_contributor = False
4948
self.username = username
50-
self.new_contributor = new_contributor
5149
self.avatar_url = avatar_url
5250
self.contribution_count = contribution_count
5351
self.commit_url = commit_url
5452
self.sponsor_info = sponsor_info
53+
self.new_contributor = new_contributor
5554

5655
def __repr__(self) -> str:
5756
"""Return the representation of the contributor_stats object"""
5857
return (
5958
f"contributor_stats(username={self.username}, "
60-
f"new_contributor={self.new_contributor}, "
6159
f"avatar_url={self.avatar_url}, "
6260
f"contribution_count={self.contribution_count}, "
6361
f"commit_url={self.commit_url}, "
64-
f"sponsor_info={self.sponsor_info})"
62+
f"sponsor_info={self.sponsor_info}, "
63+
f"new_contributor={self.new_contributor})"
6564
)
6665

6766
def __eq__(self, other) -> bool:

contributors.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,6 @@ def get_contributors(repo: object, start_date: str, end_date: str, ghe: str):
181181
commit_url = f"{endpoint}/{repo.full_name}/commits?author={username}&since={start_date}&until={end_date}"
182182
contributor = contributor_stats.ContributorStats(
183183
username,
184-
False,
185184
data["avatar_url"],
186185
data["contribution_count"],
187186
commit_url,
@@ -195,7 +194,6 @@ def get_contributors(repo: object, start_date: str, end_date: str, ghe: str):
195194
commit_url = f"{endpoint}/{repo.full_name}/commits?author={user.login}"
196195
contributor = contributor_stats.ContributorStats(
197196
user.login,
198-
False,
199197
user.avatar_url,
200198
user.contributions_count,
201199
commit_url,

test_contributor_stats.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,26 @@ def setUp(self):
2222
"""
2323
self.contributor = ContributorStats(
2424
"zkoppert",
25-
False,
2625
"https://avatars.githubusercontent.com/u/29484535?v=4",
2726
1261,
2827
"commit_url5",
2928
"",
3029
)
3130

31+
def test_init_new_contributor_true(self):
32+
"""
33+
Test that new_contributor=True is preserved by __init__.
34+
"""
35+
contributor = ContributorStats(
36+
"new_user",
37+
avatar_url="https://example.com/avatar.png",
38+
contribution_count=1,
39+
commit_url="commit_url_new",
40+
sponsor_info="",
41+
new_contributor=True,
42+
)
43+
self.assertTrue(contributor.new_contributor)
44+
3245
def test_init(self):
3346
"""
3447
Test the __init__ method of the ContributorStats class.
@@ -49,11 +62,11 @@ def test_repr(self):
4962
"""Test the __repr__ method includes key fields."""
5063
expected = (
5164
"contributor_stats(username=zkoppert, "
52-
"new_contributor=False, "
5365
"avatar_url=https://avatars.githubusercontent.com/u/29484535?v=4, "
5466
"contribution_count=1261, "
5567
"commit_url=commit_url5, "
56-
"sponsor_info=)"
68+
"sponsor_info=, "
69+
"new_contributor=False)"
5770
)
5871
self.assertEqual(repr(self.contributor), expected)
5972

@@ -63,23 +76,20 @@ def test_merge_contributors(self):
6376
"""
6477
contributor1 = ContributorStats(
6578
"user1",
66-
False,
6779
"https://avatars.githubusercontent.com/u/29484535?v=4",
6880
100,
6981
"commit_url1",
7082
"",
7183
)
7284
contributor2 = ContributorStats(
7385
"user2",
74-
False,
7586
"https://avatars.githubusercontent.com/u/29484535?v=4",
7687
200,
7788
"commit_url2",
7889
"",
7990
)
8091
contributor3 = ContributorStats(
8192
"user1",
82-
False,
8393
"https://avatars.githubusercontent.com/u/29484535?v=4",
8494
150,
8595
"commit_url3",
@@ -95,15 +105,13 @@ def test_merge_contributors(self):
95105
expected_result = [
96106
ContributorStats(
97107
"user1",
98-
False,
99108
"https://avatars.githubusercontent.com/u/29484535?v=4",
100109
250,
101110
"commit_url1, commit_url3",
102111
"",
103112
),
104113
ContributorStats(
105114
"user2",
106-
False,
107115
"https://avatars.githubusercontent.com/u/29484535?v=4",
108116
200,
109117
"commit_url2",
@@ -123,15 +131,13 @@ def test_is_new_contributor_true(self):
123131
returning_contributors = [
124132
ContributorStats(
125133
username="user1",
126-
new_contributor=False,
127134
avatar_url="https://avatars.githubusercontent.com/u/",
128135
contribution_count=100,
129136
commit_url="url1",
130137
sponsor_info="",
131138
),
132139
ContributorStats(
133140
username="user2",
134-
new_contributor=False,
135141
avatar_url="https://avatars.githubusercontent.com/u/",
136142
contribution_count=200,
137143
commit_url="url2",
@@ -151,15 +157,13 @@ def test_is_new_contributor_false(self):
151157
returning_contributors = [
152158
ContributorStats(
153159
username="user1",
154-
new_contributor=False,
155160
avatar_url="https://avatars.githubusercontent.com/u/",
156161
contribution_count=100,
157162
commit_url="url1",
158163
sponsor_info="",
159164
),
160165
ContributorStats(
161166
username="user2",
162-
new_contributor=False,
163167
avatar_url="https://avatars.githubusercontent.com/u/",
164168
contribution_count=200,
165169
commit_url="url2",
@@ -189,7 +193,6 @@ def test_fetch_sponsor_info(self, mock_post):
189193
returning_contributors = [
190194
ContributorStats(
191195
username=user,
192-
new_contributor=False,
193196
avatar_url="https://avatars.githubusercontent.com/u/",
194197
contribution_count=100,
195198
commit_url="url1",
@@ -237,7 +240,6 @@ def test_fetch_sponsor_info_raises_on_error(self, mock_post):
237240
contributors = [
238241
ContributorStats(
239242
username="user1",
240-
new_contributor=False,
241243
avatar_url="https://avatars.githubusercontent.com/u/",
242244
contribution_count=100,
243245
commit_url="url1",

test_contributors.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ def test_get_contributors(self, mock_contributor_stats):
3737
)
3838
mock_contributor_stats.assert_called_once_with(
3939
"user",
40-
False,
4140
"https://avatars.githubusercontent.com/u/12345678?v=4",
4241
1,
4342
"https://github.com/owner/repo/commits?author=user&since=2022-01-01&until=2022-12-31",
@@ -57,7 +56,6 @@ def test_get_all_contributors_with_organization(self, mock_get_contributors):
5756
mock_get_contributors.return_value = [
5857
ContributorStats(
5958
"user",
60-
False,
6159
"https://avatars.githubusercontent.com/u/29484535?v=4",
6260
100,
6361
"commit_url",
@@ -75,7 +73,6 @@ def test_get_all_contributors_with_organization(self, mock_get_contributors):
7573
[
7674
ContributorStats(
7775
"user",
78-
False,
7976
"https://avatars.githubusercontent.com/u/29484535?v=4",
8077
200,
8178
"commit_url, commit_url",
@@ -96,7 +93,6 @@ def test_get_all_contributors_with_repository(self, mock_get_contributors):
9693
mock_get_contributors.return_value = [
9794
ContributorStats(
9895
"user",
99-
False,
10096
"https://avatars.githubusercontent.com/u/29484535?v=4",
10197
100,
10298
"commit_url2",
@@ -114,7 +110,6 @@ def test_get_all_contributors_with_repository(self, mock_get_contributors):
114110
[
115111
ContributorStats(
116112
"user",
117-
False,
118113
"https://avatars.githubusercontent.com/u/29484535?v=4",
119114
100,
120115
"commit_url2",
@@ -152,7 +147,6 @@ def test_get_contributors_with_single_commit(self, mock_contributor_stats):
152147
)
153148
mock_contributor_stats.assert_called_once_with(
154149
"user",
155-
False,
156150
"https://avatars.githubusercontent.com/u/12345678?v=4",
157151
1,
158152
"https://github.com/owner/repo/commits?author=user&since=2022-01-01&until=2022-12-31",
@@ -203,7 +197,6 @@ def test_get_contributors_no_commit_end_date(self, mock_contributor_stats):
203197
mock_repo.commits.assert_not_called()
204198
mock_contributor_stats.assert_called_once_with(
205199
"user",
206-
False,
207200
"https://avatars.githubusercontent.com/u/12345678?v=4",
208201
100,
209202
"https://github.com/owner/repo/commits?author=user",
@@ -338,7 +331,6 @@ def test_main_sets_new_contributor_flag(self):
338331
"""Test main sets new_contributor when start/end dates are provided."""
339332
contributor = ContributorStats(
340333
"user1",
341-
False,
342334
"https://avatars.githubusercontent.com/u/1",
343335
10,
344336
"commit_url",
@@ -389,15 +381,13 @@ def test_main_fetches_sponsor_info_when_enabled(self):
389381
"""Test main fetches sponsor information when sponsor_info is enabled."""
390382
contributor = ContributorStats(
391383
"user1",
392-
False,
393384
"https://avatars.githubusercontent.com/u/1",
394385
10,
395386
"commit_url",
396387
"",
397388
)
398389
sponsored_contributor = ContributorStats(
399390
"user1",
400-
False,
401391
"https://avatars.githubusercontent.com/u/1",
402392
10,
403393
"commit_url",

test_json_writer.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ def test_write_to_json(self):
3838
contributors = (
3939
ContributorStats(
4040
username="test_user",
41-
new_contributor=False,
4241
avatar_url="https://test_url.com",
4342
contribution_count=10,
4443
commit_url="https://test_commit_url.com",

0 commit comments

Comments
 (0)