[project] name = "jrnl" version = "v4.2" description = "Collect your thoughts and notes without leaving the command line." authors = [ { name = "jrnl contributors", email = "maintainers@jrnl.sh" }, { name = "Manuel Ebert", email = "manuel@1450.me" }, { name = "Jonathan Wren", email = "jonathan@nowandwren.com" }, { name = "Micah Ellison", email = "micahellison@gmail.com" }, ] maintainers = [ { name = "Jonathan Wren and Micah Ellison", email = "maintainers@jrnl.sh" }, ] 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" ] [project.urls] "Documentation" = "https://jrnl.sh" "Issue Tracker" = "https://github.com/jrnl-org/jrnl/issues" "Funding" = "https://opencollective.com/jrnl" [project.scripts] jrnl = 'jrnl.main:run' [tool.poetry.dependencies] python = ">=3.10.0, <3.14" 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.22" rich = ">=12.2.0, <14.0.0" # dayone-only deps tzlocal = ">=4.0" # https://github.com/regebro/tzlocal/blob/master/CHANGES.txt [tool.poetry.group.dev.dependencies] black = { version = ">=21.5b2", allow-prereleases = true } ipdb = "*" mkdocs = ">=1.4" parse-type = ">=0.6.0" poethepoet = "*" pytest = ">=6.2,<=8.1" pytest-bdd = ">=6.0" pytest-clarity = "*" pytest-xdist = ">=2.5.0" requests = "*" ruff = ">=0.0.276" toml = ">=0.10" tox = "*" xmltodict = "*" [tool.poe.tasks] docs-check.default_item_type = "script" docs-check.sequence = [ "tasks:delete_files(['sitemap.xml', 'config.json'])", "tasks:generate_sitemap", "tasks:output_file('sitemap.xml')", "tasks:generate_pa11y_config_from_sitemap", "tasks:output_file('config.json')", "tasks:run_shell('npx pa11y-ci -c config.json')", "tasks:delete_files(['sitemap.xml', 'config.json'])", ] docs-run = [ {cmd = "mkdocs serve"}, ] test-run = [ {cmd = "tox -q -e py --"}, ] # Groups of tasks format.default_item_type = "cmd" format.sequence = [ "ruff check . --select I --fix", # equivalent to "isort ." "black .", ] lint.default_item_type = "cmd" lint.sequence = [ "poetry --version", "poetry check", "ruff --version", "ruff check .", "black --version", "black --check ." ] test = [ "lint", "test-run", ] [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", "--tb=native", "-n=auto", ] filterwarnings = [ "ignore::DeprecationWarning", "ignore:[WinError 32].*", "ignore:[WinError 5].*" ] [tool.ruff] line-length = 88 target-version = "py310" # https://beta.ruff.rs/docs/rules/ lint.select = [ 'F', # Pyflakes 'E', # pycodestyle errors 'W', # pycodestyle warnings 'I', # isort 'ASYNC', # flake8-async 'S110', # try-except-pass 'S112', # try-except-continue 'EM', # flake8-errmsg 'ISC', # flake8-implicit-str-concat 'Q', # flake8-quotes 'RSE', # flake8-raise 'TID', # flake8-tidy-imports 'TCH', # flake8-type-checking 'T100', # debugger, don't allow break points 'ICN' # flake8-import-conventions ] exclude = [".git", ".tox", ".venv", "node_modules"] [tool.ruff.lint.isort] force-single-line = true known-first-party = ["jrnl", "tests"] [tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401"] # unused imports [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 isolated_build = True [testenv] deps = pytest >=6.2,<=8.1 pytest-bdd >=6.0 pytest-xdist >=2.5.0 parse-type >=0.6.0 toml >=0.10 commands = pytest {posargs} passenv = HOME """