Skip to main content

Project: License

Package: PyPI - Python Version PyPI - Version PyPI - Downloads

Development: uv ruff ty pytest CI Code Coverage GitHub commit activity

Contents

Overview

dbrownell_ResumeTools separates a resume's content from its presentation.

Content is written once as JSON Resume data (json or yaml). Presentation is a css or less stylesheet applied to the html generated from that content. Updating a resume is then a matter of editing data rather than editing a document, and restyling one is a matter of changing a stylesheet rather than reformatting every entry by hand.

Text values within the content may be written as markdown, so emphasis, links, and lists live alongside the data that they decorate.

The generated html names what each value is rather than how it is displayed, and references no stylesheet other than the one provided. Layout, icons, fonts, and the resources that provide them are all decided by that stylesheet, so the same content can be presented in completely different ways without the generator being involved.

How to use dbrownell_ResumeTools

Generate html from resume content and a stylesheet:

uv run dbrownell_ResumeTools <content_filename> <style_filename> [<output_directory>]
Argument Description
<content_filename> json or yaml content that conforms to the JSON Resume schema.
<style_filename> A .css or .less stylesheet, provided as a filename or as an http/https url that references one; less content is compiled to css.
<output_directory> Directory populated with the generated index.html and the stylesheet that it references; a temporary directory that is removed once the process exits is used when this argument is not provided.

Sample content and themes are included with the package; this command generates and displays the sample resume when it is run from the directory that contains them:

uv run dbrownell_ResumeTools resume.json standard.less --serve --browser

--serve serves the generated content over http and --browser displays it in a browser, which is served until that browser is closed. Run uv run dbrownell_ResumeTools --help for all available options.

A stylesheet may also be referenced by url, which applies a stylesheet that is not installed locally; the content that is downloaded is written to the output directory alongside the html that references it:

uv run dbrownell_ResumeTools resume.json https://raw.githubusercontent.com/davidbrownell/dbrownell_ResumeTools/main/src/dbrownell_ResumeTools/themes/standard.less --serve --browser

Creating a pdf

Print the displayed content to a pdf from the browser itself (Ctrl+P / Cmd+P, then "Save as PDF"). The bundled stylesheets define @media print rules that compact the content for a printed page, so no separate command is involved. The pdf produced by each bundled stylesheet is linked in the table below.

Writing a stylesheet

The generated html assigns a class to every value that names what the value is: the section that contains it (work, education, skills, ...), its role within that section (section-header, entry, entry-body, detail, ...), and the schema field that produced it (position, startDate, gpa, keyword, ...). Icons are empty icon elements that a stylesheet fills in through ::before. That contract is documented in full at the top of standard.less, and a stylesheet is free to lay those classes out however it likes.

Six stylesheets are bundled to demonstrate the range. All of them are applied to the same resume.json and to the same generated html:

Stylesheet Presentation Sample
standard.less (and the standard.css it compiles to) A single column with a serif display face, a tinted title, and keywords as badges. pdf
brutalist.less Heavy black rules, hard edges, and offset block shadows in one safety-yellow accent, with numbered sections and chips in place of icons. pdf
minimal.less Monochrome and monospaced, set in a nerd font whose glyphs replace the labels that would otherwise introduce a value. pdf
modernist.less A geometric sans face, a tinted block attached to the margin by a heavy bar, entries as cards, and no icon anywhere. pdf
sidebar.less Two columns with a dark sidebar, icons on the profiles alone, right-aligned dates, and keywords as a run of text. pdf
timeline.less A full-width banner, dated entries hung off a vertical rail, and keywords as tags. pdf
Sample resume generated from resume.json and standard.less Sample resume generated from resume.json and brutalist.less
standard.less brutalist.less
Sample resume generated from resume.json and minimal.less Sample resume generated from resume.json and modernist.less
minimal.less modernist.less
Sample resume generated from resume.json and sidebar.less Sample resume generated from resume.json and timeline.less
sidebar.less timeline.less

Installation

Installation Method Command
Via uv uv add dbrownell_ResumeTools
Via pip pip install dbrownell_ResumeTools

Verifying Signed Artifacts

Artifacts are signed and verified using py-minisign and the public key in the file ./minisign_key.pub.

To verify that an artifact is valid, visit the latest release and download the .minisign signature file that corresponds to the artifact, then run the following command, replacing <filename> with the name of the artifact to be verified:

uv run --with py-minisign python -c "import minisign; minisign.PublicKey.from_file('minisign_key.pub').verify_file('<filename>'); print('The file has been verified.')"

Development

Please visit Contributing and Development for information on contributing to this project.

Additional Information

Additional information can be found at these locations.

Title Document Description
Code of Conduct CODE_OF_CONDUCT.md Information about the norms, rules, and responsibilities we adhere to when participating in this open source community.
Contributing CONTRIBUTING.md Information about contributing to this project.
Development DEVELOPMENT.md Information about development activities involved in making changes to this project.
Governance GOVERNANCE.md Information about how this project is governed.
Maintainers MAINTAINERS.md Information about individuals who maintain this project.
Security SECURITY.md Information about how to privately report security issues associated with this project.

License

dbrownell_ResumeTools is licensed under the MIT license.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dbrownell_resumetools-0.11.0.tar.gz (48.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dbrownell_resumetools-0.11.0-py3-none-any.whl (63.0 kB view details)

Uploaded Python 3

File details

Details for the file dbrownell_resumetools-0.11.0.tar.gz.

File metadata

  • Download URL: dbrownell_resumetools-0.11.0.tar.gz
  • Upload date:
  • Size: 48.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for dbrownell_resumetools-0.11.0.tar.gz
Algorithm Hash digest
SHA256 1c8aa908cbcaf49b07c1aa20b310886410fa899e11f6e5da44aff3df9abdb4e7
MD5 df0b6f25207d72f01505055124b3f3d0
BLAKE2b-256 8126d16a9aecf4fb5fbb612309814efc4d896f58772a71c52301d7b482cf1911

See more details on using hashes here.

File details

Details for the file dbrownell_resumetools-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: dbrownell_resumetools-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 63.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for dbrownell_resumetools-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 822c0c87b9e88d707e62e1a9cb09dda99438ed45703cc98458e6f84e5e7d357a
MD5 5ee9b5eb7d5742d501bf1b5ceb7ba328
BLAKE2b-256 ef93bc34da477d4e09c0dc0257816d4e10bee5159055a819c30a3a33bbb1ecfe

See more details on using hashes here.

Release history Release notifications | RSS feed

0.12.0

2 files

This release

0.11.0 This release

2 files

0.10.0

2 files

0.9.1

2 files

0.9.0

2 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page