Skip to content
Open
Show file tree
Hide file tree
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
26 changes: 13 additions & 13 deletions codeforces/api/codeforces_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ def contest_hacks(self, contest_id):

data = self._data_retriever.get_data('contest.hacks', contestId=contest_id)

return map(Hack, data)
return list(map(Hack, data))

def contest_list(self, gym=False):
"""
Expand All @@ -287,7 +287,7 @@ def contest_list(self, gym=False):
"""
data = self._data_retriever.get_data('contest.list', gym=gym)

return map(Contest, data)
return list(map(Contest, data))

def contest_rating_changes(self, contest_id):
"""
Expand All @@ -299,7 +299,7 @@ def contest_rating_changes(self, contest_id):
"""
data = self._data_retriever.get_data('contest.ratingChanges', contestId=contest_id)

return map(RatingChange, data)
return list(map(RatingChange, data))

def contest_standings(self, contest_id, from_=1, count=None, handles=None, show_unofficial=False):
"""
Expand Down Expand Up @@ -347,8 +347,8 @@ def contest_standings(self, contest_id, from_=1, count=None, handles=None, show_
**{'from': from_})

return {'contest': Contest(data['contest']),
'problems': map(Problem, data['problems']),
'rows': map(RanklistRow, data['rows'])}
'problems': list(map(Problem, data['problems'])),
'rows': list(map(RanklistRow, data['rows']))}

def contest_status(self, contest_id, handle=None, from_=1, count=None):
"""
Expand Down Expand Up @@ -383,7 +383,7 @@ def contest_status(self, contest_id, handle=None, from_=1, count=None):
count=count,
**{'from': from_})

return map(Submission, data)
return list(map(Submission, data))

def problemset_problems(self, tags=None):
"""
Expand All @@ -397,8 +397,8 @@ def problemset_problems(self, tags=None):
"""
data = self._data_retriever.get_data('problemset.problems', tags=tags)

return {'problems': map(Problem, data['problems']),
'problemStatistics': map(ProblemStatistics, data['problemStatistics'])}
return {'problems': list(map(Problem, data['problems'])),
'problemStatistics': list(map(ProblemStatistics, data['problemStatistics']))}

def problemset_recent_status(self, count):
"""
Expand All @@ -415,7 +415,7 @@ def problemset_recent_status(self, count):

data = self._data_retriever.get_data('problemset.recentStatus', count=count)

return map(Submission, data)
return list(map(Submission, data))

def user_info(self, handles):
"""
Expand All @@ -430,7 +430,7 @@ def user_info(self, handles):

data = self._data_retriever.get_data('user.info', handles=handles)

return map(User, data)
return list(map(User, data))

def user_rated_list(self, active_only=False):
"""
Expand All @@ -446,7 +446,7 @@ def user_rated_list(self, active_only=False):

data = self._data_retriever.get_data('user.ratedList', activeOnly=active_only)

return map(User, data)
return list(map(User, data))

def user_rating(self, handle):
"""
Expand All @@ -462,7 +462,7 @@ def user_rating(self, handle):

data = self._data_retriever.get_data('user.rating', handle=handle)

return map(RatingChange, data)
return list(map(RatingChange, data))

def user_status(self, handle, from_=1, count=None):
"""
Expand All @@ -483,4 +483,4 @@ def user_status(self, handle, from_=1, count=None):

data = self._data_retriever.get_data('user.status', handle=handle, count=count, **{'from': from_})

return map(Submission, data)
return list(map(Submission, data))
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import sys

from codeforces import CodeforcesAPI
import six


def main(argv):
Expand All @@ -24,7 +25,7 @@ def main(argv):
participa = str(len(llista))
for p in llista:
tio = p.party.members[0].handle
print(str(id)+' '+str(p.rank))
six.print_((str(id)+' '+str(p.rank)))
concursos = api.user_rating(tio)
cont = 0
for c in concursos:
Expand All @@ -39,4 +40,4 @@ def main(argv):
main(sys.argv)
else:
print("Invalid number of arguments")
print("Usage: python {} [contest id]".format(os.path.basename(sys.argv[0])))
six.print_(("Usage: python {} [contest id]".format(os.path.basename(sys.argv[0]))))
7 changes: 4 additions & 3 deletions examples/load_hacks_for_contest/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import sys

from codeforces import CodeforcesAPI
import six


def main(argv):
Expand All @@ -18,14 +19,14 @@ def main(argv):
hacks = api.contest_hacks(contest_id)

for h in hacks:
print("[{:^30}] hacked [{:^30}], verdict: {}".format(', '.join(member.handle for member in h.hacker.members),
six.print_(("[{:^30}] hacked [{:^30}], verdict: {}".format(', '.join(member.handle for member in h.hacker.members),
', '.join(member.handle for member in h.defender.members),
h.verdict.value))
h.verdict.value)))


if __name__ == '__main__':
if len(sys.argv) == 2:
main(sys.argv)
else:
print("Invalid number of arguments")
print("Usage: python {} [contest id]".format(os.path.basename(sys.argv[0])))
six.print_(("Usage: python {} [contest id]".format(os.path.basename(sys.argv[0]))))
7 changes: 4 additions & 3 deletions examples/load_last_submissions/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import sys

from codeforces import CodeforcesAPI
import six


def main(argv):
Expand All @@ -17,15 +18,15 @@ def main(argv):

submissions = api.problemset_recent_status(count_submissions)

print('{:^20}{}'.format('Submission ID', 'Party members'))
six.print_(('{:^20}{}'.format('Submission ID', 'Party members')))

for s in submissions:
print('{:^20}{}'.format(s.id, ', '.join(member.handle for member in s.author.members)))
six.print_(('{:^20}{}'.format(s.id, ', '.join(member.handle for member in s.author.members))))


if __name__ == '__main__':
if len(sys.argv) == 2:
main(sys.argv)
else:
print("Invalid number of arguments")
print("Usage: python {} [contest id]".format(os.path.basename(sys.argv[0])))
six.print_(("Usage: python {} [contest id]".format(os.path.basename(sys.argv[0]))))
7 changes: 4 additions & 3 deletions examples/load_submissions_for_contest/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import sys

from codeforces import CodeforcesAPI
import six


def main(argv):
Expand All @@ -17,15 +18,15 @@ def main(argv):

submissions = api.contest_status(contest_id)

print('{:^20}{}'.format('Submission ID', 'Party members'))
six.print_(('{:^20}{}'.format('Submission ID', 'Party members')))

for s in submissions:
print('{:^20}{}'.format(s.id, ', '.join(member.handle for member in s.author.members)))
six.print_(('{:^20}{}'.format(s.id, ', '.join(member.handle for member in s.author.members))))


if __name__ == '__main__':
if len(sys.argv) == 2:
main(sys.argv)
else:
print("Invalid number of arguments")
print("Usage: python {} [contest id]".format(os.path.basename(sys.argv[0])))
six.print_(("Usage: python {} [contest id]".format(os.path.basename(sys.argv[0]))))
3 changes: 2 additions & 1 deletion examples/load_users_by_handles/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"""

from codeforces import CodeforcesAPI
import six


def main():
Expand All @@ -15,7 +16,7 @@ def main():
users = api.user_info(handles)

for u in users:
print('{}, rank: {}'.format(u.handle, u.rank))
six.print_(('{}, rank: {}'.format(u.handle, u.rank)))


if __name__ == '__main__':
Expand Down
8 changes: 4 additions & 4 deletions examples/plot_graph_by_hack_count/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

from collections import defaultdict
from collections import Counter
import six


def create_bar(x, y, name, color):
Expand Down Expand Up @@ -123,11 +124,10 @@ def create_bars(hacks_count):
Should have form [(HackVerdictType, [(problem_index, hack_count)]]
:return: iterator of Bars
"""
return map(lambda verdict_problem_count: create_bar(x=[t[0] for t in verdict_problem_count[1]],
return [create_bar(x=[t[0] for t in verdict_problem_count[1]],
y=[t[1] for t in verdict_problem_count[1]],
name=get_verdict_human_readable(verdict_problem_count[0]),
color=get_verdict_color(verdict_problem_count[0])),
hacks_count)
color=get_verdict_color(verdict_problem_count[0])) for verdict_problem_count in hacks_count]


def plot_graph(data, contest_id):
Expand Down Expand Up @@ -169,4 +169,4 @@ def main(argv):
main(sys.argv)
else:
print("Invalid number of arguments")
print("Usage: python {} [contest id]".format(os.path.basename(sys.argv[0])))
six.print_(("Usage: python {} [contest id]".format(os.path.basename(sys.argv[0]))))
4 changes: 3 additions & 1 deletion examples/plot_graph_by_submissions_count/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
from codeforces import ParticipantType

from collections import Counter
from six.moves import filter
import six


def filter_only_contestants(submissions):
Expand Down Expand Up @@ -108,4 +110,4 @@ def main(argv):
main(sys.argv)
else:
print("Invalid number of arguments")
print("Usage: python {} [contest id]".format(os.path.basename(sys.argv[0])))
six.print_(("Usage: python {} [contest id]".format(os.path.basename(sys.argv[0]))))
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#!/usr/bin/env python3

from codeforces import CodeforcesAPI
import six


def get_all_user_handles(ranklist_rows):
Expand All @@ -25,13 +26,13 @@ def main():

print("Users from Ural FU:")
for row in filter_by_organization(ranklist_rows, users, "Ural FU"):
print(' {party}, points: {points}'.format(party=row.party, points=row.points))
six.print_((' {party}, points: {points}'.format(party=row.party, points=row.points)))

print()

print("Users from Mexico:")
for row in filter_by_country(ranklist_rows, users, "Mexico"):
print(' {party}, points: {points}'.format(party=row.party, points=row.points))
six.print_((' {party}, points: {points}'.format(party=row.party, points=row.points)))


if __name__ == '__main__':
Expand Down
12 changes: 7 additions & 5 deletions examples/show_only_unsolved_problems/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
from codeforces import VerdictType
from codeforces import Problem
from codeforces import Contest
from six.moves import filter
import six


def first_or_default(lst, f):
Expand Down Expand Up @@ -63,12 +65,12 @@ def main(argv):
submissions = filter_accepted(api.user_status(handle))
solved_problems = filter_c(submission.problem for submission in submissions)
solved_problems = set(solved_problems)
print('Loaded {} solved C problems'.format(len(solved_problems)))
six.print_(('Loaded {} solved C problems'.format(len(solved_problems))))

print('Loading contests...')
contests = group_by_contest_id(filter_div2(api.contest_list()))

print('Loaded {} Div.2 contests'.format(len(contests)))
six.print_(('Loaded {} Div.2 contests'.format(len(contests))))

print('Loading problemset...')
problemset = api.problemset_problems()
Expand All @@ -83,17 +85,17 @@ def main(argv):


print()
print('{:30}{:15}{}'.format('Name', 'Solved count', 'Url'))
six.print_(('{:30}{:15}{}'.format('Name', 'Solved count', 'Url')))

for stat in stats[:10]:
problem = problems[stat.contest_id][0]
print('{:30}{:<15}{}'.format(problem.name, stat.solved_count, make_url(problem)))
six.print_(('{:30}{:<15}{}'.format(problem.name, stat.solved_count, make_url(problem))))


if __name__ == '__main__':
if len(sys.argv) == 2:
main(sys.argv)
else:
print('Invalid number of arguments')
print('Usage: python3 {} [user handle]'.format(os.path.basename(sys.argv[0])))
six.print_(('Usage: python3 {} [user handle]'.format(os.path.basename(sys.argv[0]))))
sys.exit(1)
14 changes: 8 additions & 6 deletions examples/sort_problems_by_solved_count/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
from codeforces import VerdictType
from codeforces import Problem
from codeforces import Contest
from six.moves import filter
import six


def first_or_default(lst, f):
Expand Down Expand Up @@ -62,12 +64,12 @@ def main(argv):
handle = argv[1]
submissions = filter_accepted(api.user_status(handle))
solved_problems = {submission.problem for submission in submissions}
print('Loaded {} solved problems'.format(len(solved_problems)))
six.print_(('Loaded {} solved problems'.format(len(solved_problems))))

print('Loading contests...')
contests = group_by_contest_id(filter_div2(api.contest_list()))

print('Loaded {} Div.2 contests'.format(len(contests)))
six.print_(('Loaded {} Div.2 contests'.format(len(contests))))

print('Loading problemset...')
problemset = api.problemset_problems()
Expand All @@ -80,20 +82,20 @@ def main(argv):
problems = group_by_contest_id(filter_c(problemset['problems']))

print()
print('{:30}{:10}{:15}{}'.format('Name', 'Is solved', 'Solved count', 'Url'))
six.print_(('{:30}{:10}{:15}{}'.format('Name', 'Is solved', 'Solved count', 'Url')))

for stat in stats[:10]:
problem = problems[stat.contest_id][0]
print('{:30}{!s:10}{:<15}{}'.format(problem.name,
six.print_(('{:30}{!s:10}{:<15}{}'.format(problem.name,
problem in solved_problems,
stat.solved_count,
make_url(problem)))
make_url(problem))))


if __name__ == '__main__':
if len(sys.argv) == 2:
main(sys.argv)
else:
print('Invalid number of arguments')
print('Usage: python3 {} [user handle]'.format(os.path.basename(sys.argv[0])))
six.print_(('Usage: python3 {} [user handle]'.format(os.path.basename(sys.argv[0]))))
sys.exit(1)