@@ -182,16 +182,16 @@ def sync_teams_members(self, dry: bool = False) -> None: # pylint: disable=too-
182
182
self ._get_org_members ()
183
183
184
184
# Get open invitations
185
- open_invitations = [user .login for user in self .org .invitations ()]
185
+ open_invitations = [user .login . lower () for user in self .org .invitations ()]
186
186
187
187
for team , team_attrs in self .current_teams .items ():
188
188
# Update current team members with dict[NamedUser, str (role)]
189
189
team_attrs ["members" ] = self ._get_current_team_members (team )
190
190
191
191
# For the rest of the function however, we use just the login name
192
- # for each current user
192
+ # for each current user. All lower-case
193
193
current_team_members = {
194
- user .login : role for user , role in team_attrs ["members" ].items ()
194
+ user .login . lower () : role for user , role in team_attrs ["members" ].items ()
195
195
}
196
196
197
197
# Handle the team not being configured locally
@@ -209,16 +209,17 @@ def sync_teams_members(self, dry: bool = False) -> None: # pylint: disable=too-
209
209
else :
210
210
team_configuration = {}
211
211
212
- # Analog to team_attrs["members"], add members and maintainers to shared
213
- # dict with respective role, while maintainer role dominates
212
+ # Analog to team_attrs["members"], add members and maintainers to
213
+ # shared dict with respective role, while maintainer role dominates.
214
+ # All user names shall be lower-case to ease comparison
214
215
configured_users : dict [str , str ] = {}
215
216
for config_role in ("member" , "maintainer" ):
216
217
team_members = self ._get_configured_team_members (
217
218
team_configuration , team .name , config_role
218
219
)
219
220
for team_member in team_members :
220
- # Add user with role to dict
221
- configured_users .update ({team_member : config_role })
221
+ # Add user with role to dict, in lower-case
222
+ configured_users .update ({team_member . lower () : config_role })
222
223
223
224
# Consider all GitHub organisation team maintainers if they are member of the team
224
225
# This is because GitHub API returns them as maintainers even if they are just members
@@ -227,7 +228,7 @@ def sync_teams_members(self, dry: bool = False) -> None: # pylint: disable=too-
227
228
logging .debug (
228
229
"Overriding role of organisation owner '%s' to maintainer" , user .login
229
230
)
230
- configured_users [user .login ] = "maintainer"
231
+ configured_users [user .login . lower () ] = "maintainer"
231
232
232
233
# Only make edits to the team membership if the current state differs from config
233
234
if configured_users == current_team_members :
@@ -278,8 +279,11 @@ def sync_teams_members(self, dry: bool = False) -> None: # pylint: disable=too-
278
279
# Loop through all current members. Remove them if they are not configured
279
280
for current_user in current_team_members :
280
281
if current_user not in configured_users :
282
+ logging .debug ("User '%s' not found within configured users" , current_user )
281
283
# Turn user to GitHub object, trying to find them
282
284
if not (gh_user := self ._resolve_gh_username (current_user , team .name )):
285
+ # If the user cannot be found for some reason, log an
286
+ # error and skip this loop
283
287
continue
284
288
if team .has_in_members (gh_user ):
285
289
logging .info (
@@ -567,7 +571,7 @@ def _get_configured_repos_and_user_perms(self):
567
571
)
568
572
)
569
573
else :
570
- self .configured_repos_collaborators [repo ][team_member ] = perm
574
+ self .configured_repos_collaborators [repo ][team_member . lower () ] = perm
571
575
572
576
def _convert_graphql_perm_to_rest (self , permission : str ) -> str :
573
577
"""Convert a repo permission coming from the GraphQL API to the ones
@@ -633,12 +637,12 @@ def _fetch_collaborators_of_repo(self, repo: Repository):
633
637
634
638
# Extract relevant data
635
639
for collaborator in collaborators :
636
- login = collaborator ["node" ]["login" ]
640
+ login : str = collaborator ["node" ]["login" ]
637
641
# Skip entry if collaborator is org owner, which is "admin" anyway
638
- if login in [user .login for user in self .org_owners ]:
642
+ if login . lower () in [user .login . lower () for user in self .org_owners ]:
639
643
continue
640
644
permission = self ._convert_graphql_perm_to_rest (collaborator ["permission" ])
641
- self .current_repos_collaborators [repo ][login ] = permission
645
+ self .current_repos_collaborators [repo ][login . lower () ] = permission
642
646
643
647
def _get_current_repos_and_user_perms (self ):
644
648
"""Get all repos, their current collaborators and their permissions"""
0 commit comments