Package: one_resume
OneResumé is a data-driven resumé generator for text and Microsoft Word
documents.  Write your resumé content inYAMLand quickly and easily generate
multiple versions and formats of your resumé using this program.Free and open-source software: ASL2 licenseBlog:http://virantha.com/category/projects/one_resumeDocumentation:http://virantha.github.io/one_resume/htmlSource:https://github.com/virantha/one_resumeFeaturesKeep your resumé content in simple text files and automatically generate
different versions of your resumés in multiple formats (currently supports
generating text and Microsoft Word .docx format resumés)Allows you to break up your resumé content into multiple files, so you can
pick and choose the sections you want for each generated version. For
example, if you want one resumé with your publications, but want to skip them
for a shorter version, you can maintain the publications list in a separate
input file, and keep both generated resumés synchronized with the other
content.Plugin architecture, so you can easily extend to other formats (LaTex coming soon)Usage:OneResumé can be run in single resumé mode, or batch mode (in order to generate multiple different resumés in one go).  The former usage is shown
below:one_resume.py single -t template_filename -y resumé_content_filename -o output_filename -f TextThe-foption is the format you want to use, currently eitherTextorWord.  The templates and content files
will be discussed in the next section.If you want to run in batch mode:one_resume.py batch -c config.ymlTheconfig.ymlconfiguration file is aYAMLfile structured as follows:-data:sources/resumé1.yamloutputs:-format:Wordtemplate:sources/resumé-template1.docxoutput:generated/Resumé_standard.docx-data:sources/resumé1.yamloutputs:-format:Texttemplate:sources/resumé-template1.txtoutput:generated/Resumé_standard.txt-data:sources/resumé1.ymloutputs:-format:Wordtemplate:sources/resumé-template-short.docxoutput:generated/Resumé_short.docx-data:sources/resumé-jobseeker.ymloutputs:-format:Wordtemplate:sources/resumé-template-jobseeker.docxoutput:generated/Resumé_jobseeker.docxIn this example, we are generating 4 different resumés, 3 of which are Word format, and 1 of which is text.  Three of them
use the same resumé content, with one of them presumably using that content to generate a shortened version (with a different template file).
The fourth one uses a customized resumé content, perhaps with different wording, to generate a specialized resumé.Now, let’s take a look at how the resumé content and output text files are structured.Writing Resumé ContentResumé content is written using theYAMLformat.  The content is broken up into sections, with each section consisting of a list (can be just a single item list)
of content.  The example below is pretty self-explanatory:contact:-name:S. Holmesaddress:221B Baker Street, St Marylebone, London, Englandphone:Noneemail:sherlock@holmesconsulting.comwww:http://www.gotcrime.comskills:-type:Currentskill_list:>Crime solving, cigarette-ash classification, crypto-analysis, disguise-type:Pastskill_list:>Fencing, violineducation:-degree:BAuniversity:Christ Church Collegeaddress:Oxford, Englandfield:Chemistrydate:1876gpa:5.0-degree:MAuniversity:Sidney Sussexaddress:Cambridgedate:1878field:Criminologygpa:3.9experience:-company:Baker Street Detectiveslocation:Londonposition:Consulting Detectivedate:"1880to1903"summary:>Brought several notorious criminals to justice.  Supported the intelligence services and recovered keygovernment property.-company:Beekeeping Solutionslocation:Sussex Downsposition:Beekeeperdate:"1904-1914"summary:>Made honey.You can also split the content up into several different files.  For example, the top level file could just be written as:contact:-name:S. Holmesaddress:221B Baker Street, St Marylebone, London, Englandphone:Noneemail:sherlock@holmesconsulting.comwww:http://www.gotcrime.comskills:!includedata_skills.ymleducation:!includedata_education.ymlexperience:!includedata_experience.ymlWriting Templates for Text ResumésThe text resumé generator uses theMakotemplating engine.  Here’s an example template that can be used to output
the above data content into a text file:%forcontactind["contact"]:${contact['name']}${contact['phone']}${contact['email']}${contact['www']}%endfor=========================================SKILLS:-------%forskillind["skills"]:${skill['type']}:${s._wrap(2,skill['skill_list'])}%endforEDUCATION:----------%foreind['education']:${e['degree']}from${e['university']}in${e['field']}(${e['date']})%endforEXPERIENCE:----------%foreind['experience']:${e['position']}(${e['date']})${e['company']},${e['location']}-----------------------------------${s._wrap(2,e['summary'])}%endforThe main things to note are:The resume content from the YAML file is stored as a dictionary ind.Each top-level entry in this dictionary is a list that can be iterated over using Mako syntax.There is a helper function calleds._wrapthat can be used to indent some text with the
given number of spaces.Using this template, and the data content above, would yield the following text:S. Holmes
12-3456
sherlock@holmesconsulting.com
http://www.gotcrime.com
=========================================

SKILLS:
-------
  Current:
    Crime solving, cigarette-ash classification, crypto-analysis, disguise
  Past:
    Fencing, violin

EDUCATION:
----------
  BA from Christ Church College in Chemistry (1876)
  MA from Sidney Sussex in Criminology (1878)

EXPERIENCE:
----------
  Consulting Detective (1880 to 1903)
  Baker Street Detectives, London
  -----------------------------------
    Brought several notorious criminals to justice.  Supported the
    intelligence services and recovered key government property.

  Beekeeper (1904-1914)
  Beekeeping Solutions, Sussex Downs
  -----------------------------------
    Made honey.Writing Templates for Word ResumésWord templates are just regular.docxfiles. Please note that you cannot use the old
Word 97.docformat.    You can format it however you want, including bullets and styles.  However, tables
arenotsupported at this time.  Here’s some simple content you might type into a word document to generate
a resume from the above YAML:[!Contact]

<[name]
[email]
[www]
[phone]
>

[Experience]
<[company] – [location] [date]
[position]
[summary]
>
[Education]
<[degree] ([university]) in [field] [date]
>
[Skills|Mad Skillls]
<[type] – [skill_list]>The syntax is as follows:Section and item names are enclosed in brackets ([and])Looping over sections is done using the<character for starting the loop, and>for closing the loopAny section name with a!preceding it will not generate the section text (for instance, no textContactwill appear in the generated resume).Using a|symbol in a section header will use the proceeding text instead of the section name in the outputted resume. So, the final section above will be rendered with a title ofMad Skillsinstead ofSkills.Here’s a screenshot of the template .docx (you can also find this in therepository):And, running OneResumé on it will generate the following:InstallationPlease note that the lxml python library requires a C compiler.  On Mac OS X, you need to make
sure you have XCode plus the the XCode command line utilities installed:$ xcode-select --installThen, it’s simply a matter of:$ pip install one_resumeDisclaimerThe software is distributed on an “AS IS” BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.