For the python illiterate, here is my pdf resume. If I have your curiousity, download this script python_resume.py and run it on your own machine.

#!/usr/bin/read resume
from Australia import Engineer, ProductionEngineer
class Lachlan(Engineer):
    """An enthusiastic well rounded engineer. Specialising in automated testing of hardware and software"""

    def __init__(self, **kwargs):

        self.skills = {
            'Python': 'Excellent',
            'Electronics': 'Better than most',
            'Communication Skills': 'Top Notch',
            'Afraid of other languages': 'Nothing I can\'t work out. I have experience in C, Java, MATLAB'
                                         'and a little bit of HDL in Verilog.'
        }

        self.qualities = {
            'Dedicated': True,
            'Desire to learn': True,
            'Desire to teach': True,
            'Creative': True
        }

        self.degree = 'Bachelor of Engineering'
        self.university = 'ANU'
        self.dob = datetime(year=1993, month=7, day=3)  # 25 Years old

        self.current_employment = ProductionEngineer(location='NetComm Wireless', duration='2 years')

        self.contact_info = {'email': 'LachlanJamesBell@gmail.com',
                             'phone': '+61 421 782 527',
                             'linkedin': 'www.linkedin.com/in/lachlanbell'}

        # I have many other attributes, call me and you I'll let you know.
        for key, value in zip(kwargs.keys(), kwargs.values()):
            setattr(self, key, value)

    def engineering_experience(self):
        """Worked at """
        NetComm = { 'start': datetime(year=2016, month=8),
                    'end': datetime(year=2018, month=10),
                    'position': 'Production Engineer',
                    'Responsibilities': ['Writing automation test software for use in production line',
                                        'Designing production line systems',
                                        'Aiding design of new products with automated systems',
                                        'Travelling to China to oversea production',
                                        'Training junior engineers'],
                    'website': 'www.netcommwireless.com'
                    }

        Pesce = {   'start': datetime(year=2016, month=1),
                    'end': datetime(year=2016, month=7),
                    'position': 'Production Engineer',
                    'Responsibilities': ['Development of new systems',
                                        'Helping with installation of new PLC systems',
                                        'Ladder coding stuff of PLC'],
                    'website': 'www.pesce.com.au'
                   }

        TheShop = { 'start': datetime(year=2010, month=7),
                    'end': datetime(year=2016, month=7),
                    'position': 'Shop assistant',
                    'Responsibilities': ['Managing staff',
                                        'Ordering stock',
                                        'Backend support for POS',
                                        'Optimizing shop processes via the use of code and automation',
                                        'Being an awesome barista'],
                    'website': 'www.thechifleygrocer.com'
                    }

        return [NetComm, Pesce, TheShop]

    def generate_reference_list(self):
        """
        NetComm: Alex Hu; Production manager
                 Charlie Warren; Technical lead

        Pesce:  Michael McKay; Senior Engineer/Owner

        TheShop: Jodie Farrah; Shop Owner
                 Chris G; Shop Owner

        """

        NetComm = {'Alex Hu': ['alex.hu@netcommwireless.com', '123'],
                   'Charlie Warren': ['charlie.warren@netcommwireless.com', '123']}

        Pesce = {'Michael': ['alex.hu@netcommwireless.com', '123']}

        TheShop = {'Jodie Farrah': ['alex.hu@netcommwireless.com', '123'],
                   'Chris G': ['charlie.warren@netcommwireless.com', '123']}

        return [NetComm, Pesce, TheShop]

    def get_green_card_status(self, willing_to_wait=True):
        """Full working rights by 2018-10-26!"""

        green_card_date = datetime(year=2018, month=10, day=26)
        now = datetime.now()
        delta = green_card_date - now
        if delta.total_seconds() < 0:
            return True
        elif not willing_to_wait:
            return None
        if willing_to_wait:
            print('{} Days until visa granted'.format(delta.days))
            print('Waiting {} seconds for green card  to be approved...'.format(delta.total_seconds()))
            sleep(delta.total_seconds())
            return True

    def should_hire(self):
        return True

    def contact(self, use_email=True):

        if use_email:
            webbrowser.open('mailto:{}?subject=I read your resume...'.format(self.contact_info['email']), new=1)
        else:
            input('Type in {} into your phone, I\'ll wait here until you are done'.format(self.contact_info['phone']))

    def __str__(self):
        return 'Lachlan Bell'


if __name__ == '__main__':

    future_employee = Lachlan()

    print("Considering hiring {}?".format(future_employee))
    ans = input('Would you like to email {}? [y/n]'.format(future_employee))

    if ans:
        future_employee.contact()

    if future_employee.should_hire():
        if future_employee.get_green_card_status(willing_to_wait=True):
            future_employee.contact()
            future_employee.current_employment = 'YOU'

Postamble

I’m not sure if this is a cliche thing or not to do, but it was fun making this informative class and making sure that it actually still runs. One thing that would have made this a little more clearer is if I were to use data classes introduced with 3.7. But I want this code to be able to be ran on any computer, not just those who have adopted 3.7. With that in mind, I have tested this with 2.7, 3.5, 3.6 and 3.7 (all of the CPython interpreters on my machine).