hotzenklotz / pybeerxml

A simple BeerXML parser for Python
MIT License
19 stars 16 forks source link
hacktoberfest

pybeerxml

A simple BeerXML parser for Python

PyPi Version Build Status Code Style

Parses all recipes within a BeerXML file and returns Recipe objects containing all ingredients, style information and metadata. OG, FG, ABV and IBU are calculated from the ingredient list. (your milage may vary)

Installation

pip install pybeerxml

Usage

from pybeerxml.parser import Parser

path_to_beerxml_file = "/tmp/SimcoeIPA.beerxml"

parser = Parser()
recipes = parser.parse(path_to_beerxml_file)

for recipe in recipes:

    # some general recipe properties
    print(recipe.name)
    print(recipe.brewer)

    # calculated properties
    print(recipe.og)
    print(recipe.fg)
    print(recipe.ibu)
    print(recipe.abv)

    # iterate over the ingredients
    for hop in recipe.hops:
        print(hop.name)

    for fermentable in recipe.fermentables:
        print(fermentable.name)

    for yeast in recipe.yeasts:
        print(yeast.name)

    for misc in recipe.miscs:
        print(misc.name)

Testing

Unit tests can be run with PyTest:

python -m pytest tests

Contributing / Development

Community contributions are welcome.

Some kind of virtual environment for Python is recommended. Consider venv, condaor similar. Dependency management is handled through Poetry:

pip install poetry

poetry install

Make sure to Test, Lint, Format, & Type-Check your code before sending a pull request:

python -m pytest tests
python -m black pybeerxml tests/*.py
python -m pylint pybeerxml tests/*.py
python -m mypy pybeerxml tests/*.py

License

MIT