Project Maintainer Notes

Code Testing

pytest and coverage are used to execute the Font Bakery test suite and line coverage assessment, respectively.

Use the following command to run all tests:

$ pytest -x tests

The coverage report can be found at the end of the test results that are printed to the standard output/error stream.

Continuous integration testing is performed on GitHub Actions. Test jobs can be found at

Updating the distribution package

Releases to PyPI are performed by running the following commands (with the proper version number and date):

# Update the local copy
git checkout main
git fetch upstream
git rebase upstream/main

# Be sure that there's no leftover code-changes in the local copy
git status

# Create a branch for the final tweaks prior to release:
git checkout -b preparing_v0_8_2

# Update the cached list of vendor IDs:
wget --output-document=Lib/fontbakery/data/fontbakery-microsoft-vendorlist.cache
git add -p

# If something changed, commit it:
git commit -m "Updating cache of vendor IDs list from Microsoft's website"

# Check whether ttfautohint has a newer version available at
# and manually update the LATEST_TTFAUTOHINT_VERSION number, if needed:
vim Lib/fontbakery/
git add -p
git commit -m "Updating LATEST_TTFAUTOHINT_VERSION"

# update the docs so that
# displays the correct version number
vim docs/source/
git add -p
git commit -m "update version on docs/source/"

git add -p
git commit -m "update CHANGELOG in preparation for new release"

# send these changes to the public GitHub repo
git push upstream preparing_v0_8_2

# Open a pull request and wait for all code-tests to pass
# or make additional commits until the build is finally green

# Update the local copy
git checkout main
git fetch upstream
git rebase upstream/main

## Optionally run our code tests locally
pytest -x tests

# If all is good, then make the actual release:
# Register a git tag for this release and publish it
git tag -a v0.8.2 -m "Font Bakery version 0.8.2 (2021-Sep-01)"
git push upstream --tags

# A GitHub Action will be triggered by the version tag and will
# generate the package and automatically publish it on PyPI.
# A GitHub release will also be created automatically.

# We need to manually set this release to be considered the latest one.
# And also uncheck its "pre-release" checkbox!

# Close the current milestone on the GitHub issue tracker
# moving to a future milestone any of its issue that we've
# not been able to close yet.

# And after a new release is also a good moment to update the versions
# of dependencies on requirements.txt ;-)

Cached Vendor ID data

This project hosts a copy of the Microsoft’s Vendor ID list at Lib/fontbakery/Lib/data/fontbakery-microsoft-vendorlist.cache

This is meant only as a caching mechanism. The latest data can always be fetched from Microsoft’s website directly at: