Created
February 16, 2018 02:12
-
-
Save nicktimko/82054c0d342175a2305135e77f56c5dd to your computer and use it in GitHub Desktop.
py 101 feb 15
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from __future__ import unicode_literals | |
import sys | |
import statistics | |
from prompt_toolkit import prompt, AbortAction | |
from prompt_toolkit.history import InMemoryHistory | |
from prompt_toolkit.contrib.completers import WordCompleter | |
import meetup.api | |
def get_names(): | |
client = meetup.api.Client('3f6d3275d3b6314e73453c4aa27') | |
rsvps=client.GetRsvps(event_id='239174106', urlname='_ChiPy_') | |
member_id = ','.join([str(i['member']['member_id']) for i in rsvps.results]) | |
members = client.GetMembers(member_id=member_id) | |
names = [] | |
for member in members.results: | |
try: | |
names.append(member['name']) | |
except: | |
pass # ignore those who do not have a complete profile | |
return names | |
command_completer = WordCompleter(['add'], ignore_case=True) | |
# State | |
class TeamSplitterUpper: | |
def __init__(self): | |
self.people = [] | |
def add(self, rest): | |
name, lines = rest.rsplit(' ', 1) | |
lines = int(lines) | |
self.people.append((lines, name)) | |
def list(self, rest): | |
print('People added so far:') | |
for loc, person in self.people: | |
print(f'{person}, {loc}') | |
# print('{}, {}'.format(person, loc)) | |
print() | |
print(f'Number of people: {len(self.people)}') | |
median = statistics.median([loc for loc, _ in self.people]) | |
print(f'Median line count: {median}') | |
def team(self, rest): | |
people = sorted(self.people) | |
teams = [] | |
most = people.pop() # most experienced | |
least = people.pop(0) # least experienced | |
def execute(state, text): | |
command, *rest = text.split(' ',1) | |
if not rest: | |
rest = ('',) | |
#return command, rest | |
try: | |
command = getattr(state, command) | |
except AttributeError: | |
print('unrecognized command') | |
return | |
command(*rest) | |
# if command == 'add': | |
# state.add(*rest) | |
# elif command == 'list': | |
# state.list(*rest) | |
def main(): | |
history = InMemoryHistory() | |
state = TeamSplitterUpper() | |
while True: | |
try: | |
text = prompt('> ', | |
completer = command_completer, | |
history=history, | |
on_abort=AbortAction.RETRY) | |
messages = execute(state, text) | |
# print(messages) | |
except EOFError: | |
break # Control-D pressed. | |
print(state.people) | |
print('GoodBye!') | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment