Skip to content

Instantly share code, notes, and snippets.

@nicktimko
Created February 16, 2018 02:12
Show Gist options
  • Save nicktimko/82054c0d342175a2305135e77f56c5dd to your computer and use it in GitHub Desktop.
Save nicktimko/82054c0d342175a2305135e77f56c5dd to your computer and use it in GitHub Desktop.
py 101 feb 15
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