def extract_tweet_data(tweepy_obj, query):
    """ Extract relevant and serializable data from a tweepy Tweet object
        params:
            tweepy_obj: Tweepy Tweet Object
            query: str
        returns dict
    """
    return {
        'user_id': tweepy_obj.user.id,
        'user_name': tweepy_obj.user.name,
        'user_screenname': tweepy_obj.user.screen_name,
        'user_url': tweepy_obj.user.url,
        'user_description': tweepy_obj.user.description,
        'user_followers': tweepy_obj.user.followers_count,
        'user_friends': tweepy_obj.user.friends_count,
        'created': tweepy_obj.created_at.isoformat(),
        'text': tweepy_obj.text,
        'hashtags': [ht.get('text') for ht in
                     tweepy_obj.entities.get('hashtags')],
        'mentions': [(um.get('id'), um.get('screen_name')) for um in
                     tweepy_obj.entities.get('user_mentions')],
        'urls': [url.get('expanded_url') for url in
                 tweepy_obj.entities.get('urls')],
        'tweet_id': tweepy_obj.id,
        'is_quote_status': tweepy_obj.is_quote_status,
        'favorite_count': tweepy_obj.favorite_count,
        'retweet_count': tweepy_obj.retweet_count,
        'reply_status_id': tweepy_obj.in_reply_to_status_id,
        'lang': tweepy_obj.lang,
        'source': tweepy_obj.source,
        'location': tweepy_obj.coordinates,
        'query': query,
    }