http://codereview.appspot.com/5536049/diff/2002/samples/apps/list_group_members.py#newcode17
samples/apps/list_group_members.py:17: """Sample to list all the user
members of a group.
s/user //
http://codereview.appspot.com/5536049/diff/2002/samples/apps/list_group_members.py#newcode37
samples/apps/list_group_members.py:37: """Get an OAuth 2.0 for the given
credentials.
"Get an OAuth 2.0 token using the provided client_id and client_secret."
Also, add a link to the API console explaining how to get those 2
values.
http://codereview.appspot.com/5536049/diff/2002/samples/apps/list_group_members.py#newcode40
samples/apps/list_group_members.py:40: client_id: String client id of
the developer.
s/String/String,/
Same below.
http://codereview.appspot.com/5536049/diff/2002/samples/apps/list_group_members.py#newcode58
samples/apps/list_group_members.py:58: """Lists all user members
including the users from member groups.
"Lists all members including members of sub-groups."
http://codereview.appspot.com/5536049/diff/2002/samples/apps/list_group_members.py#newcode67
samples/apps/list_group_members.py:67: group_members =
group_client.RetrieveAllMembers(group_id)
Add try/except block to catch API errors.
Also, out of curiosity, does this handle paging?
http://codereview.appspot.com/5536049/diff/2002/samples/apps/list_group_members.py#newcode71
samples/apps/list_group_members.py:71: # Assuming there is no cycle,
i.e. groups are not members of each other
As an improvement, you can use a set of visited group ID in order to
avoid cycles and maybe use a max_depth variable as well.
http://codereview.appspot.com/5536049/diff/2002/samples/apps/list_group_members.py#newcode79
samples/apps/list_group_members.py:79: usage = 'Usage: %prog [options]'
If the arguments are mandatory, there are not options. Please change the
usage.
http://codereview.appspot.com/5536049/diff/2002/samples/apps/list_group_members.py#newcode92
samples/apps/list_group_members.py:92: and options.GROUP_ID):
Fix indentation.
http://codereview.appspot.com/5536049/diff/2002/samples/apps/list_group_members.py#newcode31
samples/apps/list_group_members.py:31:
2 lines between imports and first statement
http://codereview.appspot.com/5536049/diff/2002/samples/apps/list_group_members.py#newcode56
samples/apps/list_group_members.py:56:
Again, 2 lines between all top-level members.
http://codereview.appspot.com/5536049/diff/2002/samples/apps/list_group_members.py#newcode78
samples/apps/list_group_members.py:78: def main():
docstring