Skip to content

DavidPal/bibliography

Repository files navigation

bibliography

CircleCI

Build, lint and test

Beautifier of BibTeX files.

It has the following features:

  • unified indentation and spacing
  • sort entries and fields within entries
  • use braces for field values
  • normalize values of author, editor, pages, year, month fields

Usage

python bibliography.py file.bib

MacOS development setup

  1. Make sure you have brew package manager installed.

  2. Install pyenv, pyenv-virtualenv and poetry:

    brew install pyenv
    brew install pyenv-virtualenv
    brew install poetry
  3. Add the following lines to .zshrc or .bash_profile and restart the terminal:

    # Pyenv settings
    export PYENV_ROOT="$HOME/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init --path)"
    eval "$(pyenv virtualenv-init -)"
  4. Create Python virtual environment with the correct Python version:

    make install-python
    make create-environment
  5. Install all dependencies

    make install-dependecies

If you need to delete the Python virtual environment, you can do so with the command make delete-environment.

Running unit tests and code checks

If you make code change, run unit tests and code checks with the command:

make clean whitespace-format-check isort-check black-check flake8 pydocstyle pylint mypy test coverage

Each make target runs different checks:

  • clean deletes temporary files
  • whitespace-format-check runs whitespace-format checker on all files
  • isort-check runs isort checker of imports in *.py files
  • black-check runs black code format checker on *.py files
  • flake8 runs flake8 code style checker on *.py files
  • pydocstyle runs pydocstyle docstring checker on *.py files
  • pylint runs pylint code checker on *.py files
  • mypy runs mypy type checker on *.py files
  • test runs unit tests
  • coverage generates code coverage report

You can automatically format code with the command:

make isort-format black-format whitespace-format

Modifying dependencies

The list of Python packages that this project depends on is specified in pyproject.toml and in poetry.lock files. The file pyproject.toml can be edited by humans. The file poetry.lock is automatically generated by poetry.

Install a development dependency with the command:

poetry add --dev <some_new_python_tool>

Install a new production dependency with the command:

poetry add <some_python_library>

Manual modification of pyproject.toml

Instead of using poetry add command, you can edit pyproject.toml file. Then, regenerate poetry.lock file with the command:

poetry lock

or the command:

poetry lock --no-update

The latter command does not update already locked packages.

Fixing broken Python environment

If your Python virtual environment becomes broken or polluted with unnecessary packages, delete it, recreate it from scratch and install dependencies a fresh with the following commands:

make delete-environment
make create-environment
make install-dependencies