jrnl/pyproject.toml
Jonathan Wren 7dccc469b5
Implement Tox for testing (#1504)
* Get rid of `make` in favor of `poe`
This moves the tasks that were previously in Makefile, into
pyproject.toml (with all the other config)

This is also more inclusive of Windows developers since they only need
Python, and no longer have to install make separately.

* update docs
* don't make code blocks also links
* implement tox for testing
* update command to use new task runner
2022-06-18 11:54:28 -07:00

167 lines
3.7 KiB
TOML

[tool.poetry]
name = "jrnl"
version = "v3.0-beta"
description = "Collect your thoughts and notes without leaving the command line."
authors = [
"jrnl contributors <jrnl-sh@googlegroups.com>",
"Manuel Ebert <manuel@1450.me>",
"Jonathan Wren <jonathan@nowandwren.com>",
"Micah Ellison <micahellison@gmail.com>"
]
maintainers = [
"Jonathan Wren and Micah Ellison <jrnl-sh@googlegroups.com>",
]
license = "GPL-3.0-only"
readme = "README.md"
homepage = "https://jrnl.sh"
repository = "https://github.com/jrnl-org/jrnl"
classifiers = [
"Topic :: Office/Business :: News/Diary",
"Environment :: Console",
"Operating System :: OS Independent"
]
[tool.poetry.urls]
"Documentation" = "https://jrnl.sh"
"Issue Tracker" = "https://github.com/jrnl-org/jrnl/issues"
"Funding" = "https://opencollective.com/jrnl"
[tool.poetry.dependencies]
python = ">=3.9.0, <3.12"
ansiwrap = "^0.8.4"
colorama = ">=0.4" # https://github.com/tartley/colorama/blob/master/CHANGELOG.rst
cryptography = ">=3.0" # https://cryptography.io/en/latest/api-stability.html
keyring = ">=21.0" # https://github.com/jaraco/keyring#integration
parsedatetime = ">=2.6"
python-dateutil = "^2.8" # https://github.com/dateutil/dateutil/blob/master/RELEASING
pyxdg = ">=0.27.0"
"ruamel.yaml" = "^0.17.21"
rich = "^12.2.0"
# dayone-only deps
pytz = ">=2020" # https://pythonhosted.org/pytz/#issues-limitations
tzlocal = ">2.0, <3.0" # https://github.com/regebro/tzlocal/blob/master/CHANGES.txt
[tool.poetry.dev-dependencies]
mkdocs = ">=1.0,<1.3"
black = { version = ">=21.5b2", allow-prereleases = true }
toml = ">=0.10"
pytest = ">=6.2"
pytest-bdd = ">=4.0.1"
ipdb = "*"
poethepoet = "*"
pytest-clarity = "*"
pyproject-flake8 = "*"
yq = "*"
tox = "*"
[tool.poetry.extras]
testing = [ "pytest", "pytest-bdd", "toml" ]
[tool.poetry.scripts]
jrnl = 'jrnl.cli:cli'
[tool.poe.tasks]
format = "black ."
format-check = "black --check --diff ."
format-version = "black --version"
style-check = "pflake8 jrnl tests"
style-version = "pflake8 --version"
docs = "mkdocs serve"
test-unit = "tox -q -e unit --"
test-bdd = "tox -q -e bdd --"
test-all = "tox -e py --"
installer-check = "poetry check"
installer-version = "poetry --version"
# Groups of tasks
lint = [
"installer-check",
"style-check",
"format-check",
]
test = [
"lint",
"test-unit",
"test-bdd",
]
ci-lint = [
"installer-version",
"installer-check",
"style-version",
"style-check",
"format-version",
"format-check",
]
ci-test = [
"test-all",
]
[tool.isort]
multi_line_output = 7
force_single_line = true
line_length = 88
known_first_party = ["jrnl"]
force_sort_within_sections = true
[tool.pytest.ini_options]
minversion = "6.0"
required_plugins = [
"pytest-bdd"
]
markers = [
"todo",
"skip_win",
"skip_posix",
"on_win",
"on_posix",
]
addopts = [
"--pdbcls=IPython.terminal.debugger:Pdb"
]
filterwarnings = [
"ignore::DeprecationWarning",
"ignore:Flag style will be deprecated in.*",
"ignore:[WinError 32].*",
"ignore:[WinError 5].*"
]
[tool.flake8]
# ignore formatting warnings and errors because we use Black to autoformat
extend-ignore = "E101,E111,E114,E115,E116,E117,E12,E13,E2,E3,E401,E5,E70,W1,W2,W3,W5"
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
[tool.tox]
# see: https://tox.wiki/en/latest/example/basic.html
legacy_tox_ini = """
[tox]
envlist = py-{unit,bdd}
isolated_build = True
[testenv]
deps =
pytest >= 6.2
pytest-bdd >=4.0.1
toml >=0.10
commands = pytest --junitxml=reports/pytest/results.xml {posargs}
passenv = HOME
[testenv:unit]
commands = pytest tests/unit {posargs}
[testenv:bdd]
commands = pytest tests/bdd --gherkin-terminal-reporter --tb=native {posargs}
"""