diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 695290e8..8a1fe45f 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -19,6 +19,6 @@ Here are some key points to include in your description:
- [ ] I have written new tests for these changes, as needed.
diff --git a/.github/actions/run_tests/action.yaml b/.github/actions/run_tests/action.yaml
index 3f40f2fd..c2242e0c 100644
--- a/.github/actions/run_tests/action.yaml
+++ b/.github/actions/run_tests/action.yaml
@@ -39,23 +39,12 @@ runs:
echo 'DEPS_INSTALLED=true' >> $GITHUB_ENV
shell: bash
- - name: Code formatting (Black)
+ - name: Linting
if: ${{ env.DEPS_INSTALLED == 'true' }}
- run: |
- poetry run black --version
- poetry run black --check --diff .
+ run: poetry run poe ci-lint
shell: bash
- - name: Code Style (flake8)
- if: >
- ${{ env.DEPS_INSTALLED == 'true' }}
- run: |
- poetry run pflake8 --version
- poetry run pflake8 jrnl tests
- shell: bash
-
- - name: Test with pytest
- if: >
- ${{ env.DEPS_INSTALLED == 'true' }}
- run: poetry run pytest --junitxml=reports/pytest/results.xml
+ - name: Testing
+ if: ${{ env.DEPS_INSTALLED == 'true' }}
+ run: poetry run poe ci-test
shell: bash
diff --git a/.github/workflows/changelog.yaml b/.github/workflows/changelog.yaml
index c8d184ec..ba1ad405 100644
--- a/.github/workflows/changelog.yaml
+++ b/.github/workflows/changelog.yaml
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
name: Changelog
on:
@@ -141,8 +144,8 @@ jobs:
- name: Commit
if: env.SOMETHING_CHANGED == 'true'
run: |
- git config user.email "jrnl.bot@gmail.com"
- git config user.name "Jrnl Bot"
+ git config --global user.name "${{ secrets.JRNL_BOT_NAME }}"
+ git config --global user.email "${{ secrets.JRNL_BOT_EMAIL }}"
git add "$FILENAME"
git commit -m "Update changelog [ci skip]"
git push origin $BRANCH
diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml
index ac85f2c0..395ba66f 100644
--- a/.github/workflows/docs.yaml
+++ b/.github/workflows/docs.yaml
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
name: Docs
on:
@@ -39,11 +42,14 @@ jobs:
- name: Setup Node.js environment
uses: actions/setup-node@main
+ - name: Capture full Python version in env
+ run: echo "PYTHON_FULL_VERSION=$(python --version)" >> $GITHUB_ENV
+
- name: poetry cache
uses: actions/cache@v2
with:
path: .venv
- key: ${{ runner.os }}-${{ hashFiles('poetry.lock') }}-${{ matrix.python-version }}
+ key: ${{ runner.os }}-${{ hashFiles('poetry.lock') }}-${{ env.PYTHON_FULL_VERSION }}-${{ secrets.CACHE_STRING }}
- name: npm cache
uses: actions/cache@v2
@@ -60,7 +66,7 @@ jobs:
echo "node_modules/.bin" >> $GITHUB_PATH
- name: Start docs server
- run: poetry run mkdocs serve &
+ run: poetry run poe docs &
- name: Generate sitemap
env:
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
index 5e0169c1..3eb8c8f4 100644
--- a/.github/workflows/release.yaml
+++ b/.github/workflows/release.yaml
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
name: Release
on:
workflow_dispatch:
diff --git a/.github/workflows/testing_prs.yaml b/.github/workflows/testing_prs.yaml
index b5514f19..27126df8 100644
--- a/.github/workflows/testing_prs.yaml
+++ b/.github/workflows/testing_prs.yaml
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
name: Testing
on:
diff --git a/.github/workflows/testing_schedule.yaml b/.github/workflows/testing_schedule.yaml
index 44dd0b69..fd38cd41 100644
--- a/.github/workflows/testing_schedule.yaml
+++ b/.github/workflows/testing_schedule.yaml
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
name: Testing
on:
diff --git a/.gitignore b/.gitignore
index 4def365f..48cbcddc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,7 @@ eggs/
lib64/
parts/
sdist/
+.tox/
var/
# Versioning
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 136eb49a..7c9dfd6c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,22 @@
# Changelog
+## [Unreleased](https://github.com/jrnl-org/jrnl/)
+
+[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v3.0-beta...HEAD)
+
+**Fixed bugs:**
+
+- Adding new entry with date only works with format m.d.Y [\#1509](https://github.com/jrnl-org/jrnl/issues/1509)
+
+**Build:**
+
+- Use tox [\#1361](https://github.com/jrnl-org/jrnl/issues/1361)
+- Stop hardcoding bot info in changelog pipeline [\#1506](https://github.com/jrnl-org/jrnl/pull/1506) ([wren](https://github.com/wren))
+- Fix Poetry caching for accessibility tests [\#1505](https://github.com/jrnl-org/jrnl/pull/1505) ([wren](https://github.com/wren))
+- Implement Tox for testing [\#1504](https://github.com/jrnl-org/jrnl/pull/1504) ([wren](https://github.com/wren))
+- Replace `make` with python alternative \(`poe`\) [\#1503](https://github.com/jrnl-org/jrnl/pull/1503) ([wren](https://github.com/wren))
+- Update copyright year [\#1502](https://github.com/jrnl-org/jrnl/pull/1502) ([wren](https://github.com/wren))
+
## [v3.0-beta](https://pypi.org/project/jrnl/v3.0-beta/) (2022-06-11)
[Full Changelog](https://github.com/jrnl-org/jrnl/compare/v2.8.4...v3.0-beta)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 93b57d7e..bd00f6e2 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,5 +1,8 @@
-
+
+
# Contributing
See "[Contributing](docs/contributing.md)" in the `docs` directory.
diff --git a/Makefile b/Makefile
deleted file mode 100644
index a9833c3e..00000000
--- a/Makefile
+++ /dev/null
@@ -1,39 +0,0 @@
-# A Makefile for commands I run frequently:
-
-clean:
- rm -rf dist
- rm -rf _static
- rm -rf jrnl.egg-info
- rm -rf _build
- rm -rf _sources
- rm -rf _static
- rm -rf site/
- rm -f *.html
-
-html:
- poetry run mkdocs serve
-
-format: ## Format files to match style
- poetry run black .
-
-lint: ## Check style with various tools
- poetry check
- poetry run pflake8 jrnl tests
- poetry run black --check --diff .
-
-unit: # unit tests
- poetry run pytest tests/unit
-
-bdd: # bdd tests
- poetry run pytest tests/bdd --gherkin-terminal-reporter --tb=native
-
-bdd-debug: # bdd tests
- poetry run pytest tests/bdd --gherkin-terminal-reporter --tb=native -x -vv
-
-test: lint unit bdd
-
-build:
- poetry build
-
-install: clean ## install the package to the active Python's site-packages
- poetry install
diff --git a/README.md b/README.md
index cacd8dda..e2809a0f 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,8 @@
+
+
diff --git a/docs/advanced.md b/docs/advanced.md
index c0b1195c..61529fc4 100644
--- a/docs/advanced.md
+++ b/docs/advanced.md
@@ -1,5 +1,7 @@
-
+
# Advanced Usage
diff --git a/docs/contributing.md b/docs/contributing.md
index b12ce7be..650d0cda 100644
--- a/docs/contributing.md
+++ b/docs/contributing.md
@@ -1,5 +1,8 @@
-
+
+
# Contributing to jrnl
We welcome contributions to jrnl, whether it's through reporting bugs, improving the documentation, testing releases, engaging in discussion on features and bugs, or writing code.
@@ -24,7 +27,7 @@ Please report bugs by [opening a new issue](https://github.com/jrnl-org/jrnl/iss
If you find a typo or a mistake in the docs, please fix it right away and send a pull request. If you're unsure what to change but still see a problem, you can [open a new issue](https://github.com/jrnl-org/jrnl/issues/new/choose) with the "Documentation change" type.
-To edit the documentation, edit the `docs/*.md` files on the **develop** branch. You can see the result by running `make html` (or `poetry run mkdocs serve` if on Windows) inside the project's root directory, then navigating your browser to [localhost:8000](http://localhost:8000).
+To edit the documentation, edit the `docs/*.md` files on the **develop** branch. You can see the result by running `poe docs` inside the project's root directory, then navigating your browser to [localhost:8000](http://localhost:8000).
The `gh-pages` branch is automatically maintained and generated after your changes are merged. You should never have to edit that branch.
@@ -82,16 +85,20 @@ In general, pull requests should be made on the `develop` branch.
### Common development commands
-You can find an inventory of commands in the `makefile`. \*nix users can run the commands by typing `make` followed by the name of the command; however, Windows users will need to type out the commands directly, or install a third-party make tool such as [GNU Make for Windows](http://gnuwin32.sourceforge.net/packages/make.htm).
+You can find an inventory of commands in the `pyproject.toml`. Users can run the commands by typing `poe` followed by the name of the command ([Poe the Poet](https://github.com/nat-n/poethepoet) can be installed on its own, or as part of `poetry install`).
A typical development workflow includes:
- * Installing dependencies: `poetry install`
- * Running tests: `make test`
- * Running the source in a virtual environment:
+ * Installing dependencies:
+ * `poetry install`
+ * Activate virtual environment:
* `poetry shell`
+ * Running the source in a virtual environment:
* `jrnl` (with or without arguments as necessary)
- * Linting the code to standardize its style: `make lint`
+ * Running tests:
+ * `poe test`
+ * Formatting the code to standardize its style:
+ * `poe format`
### Updating automated tests
diff --git a/docs/encryption.md b/docs/encryption.md
index 06217f01..e8b86e62 100644
--- a/docs/encryption.md
+++ b/docs/encryption.md
@@ -1,5 +1,8 @@
-
+
+
# Encryption
## A Note on Security
diff --git a/docs/external-editors.md b/docs/external-editors.md
index 8797325a..efa0b55c 100644
--- a/docs/external-editors.md
+++ b/docs/external-editors.md
@@ -1,3 +1,8 @@
+
+
# External editors
Configure your preferred external editor by updating the `editor` option
diff --git a/docs/formats.md b/docs/formats.md
index 99b3e69b..a87c4e8a 100644
--- a/docs/formats.md
+++ b/docs/formats.md
@@ -1,5 +1,8 @@
-
+
+
# Formats
`jrnl` supports a variety of alternate formats. These can be used to display your
diff --git a/docs/installation.md b/docs/installation.md
index a37e21fd..4d2c4c97 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -1,5 +1,8 @@
-
+
+
# Getting started
## Installation
diff --git a/docs/journal-types.md b/docs/journal-types.md
index 65efc143..b2ec78da 100644
--- a/docs/journal-types.md
+++ b/docs/journal-types.md
@@ -1,5 +1,8 @@
-
+
+
# Journal Types
`jrnl` can store your journal in a few different ways:
diff --git a/docs/overview.md b/docs/overview.md
index 57269585..b20c85f9 100644
--- a/docs/overview.md
+++ b/docs/overview.md
@@ -1,5 +1,8 @@
-
+
+
# Overview
`jrnl` is a simple journal application for the command line.
diff --git a/docs/privacy-and-security.md b/docs/privacy-and-security.md
index c2996d25..9030df99 100644
--- a/docs/privacy-and-security.md
+++ b/docs/privacy-and-security.md
@@ -1,5 +1,8 @@
-
+
+
# Privacy and Security
`jrnl` is designed with privacy and security in mind, but like any other
diff --git a/docs/reference-command-line.md b/docs/reference-command-line.md
index bc624fe5..149ae26f 100644
--- a/docs/reference-command-line.md
+++ b/docs/reference-command-line.md
@@ -1,3 +1,8 @@
+
+
# Command Line Reference
## Synopsis
diff --git a/docs/reference-config-file.md b/docs/reference-config-file.md
index e03add1d..80949156 100644
--- a/docs/reference-config-file.md
+++ b/docs/reference-config-file.md
@@ -1,3 +1,8 @@
+
+
# Configuration File Reference
`jrnl` stores its information in a YAML configuration file.
diff --git a/docs/tips-and-tricks.md b/docs/tips-and-tricks.md
index a158916c..c4531798 100644
--- a/docs/tips-and-tricks.md
+++ b/docs/tips-and-tricks.md
@@ -1,5 +1,8 @@
-
+
+
# Tips and Tricks
This page contains tips and tricks for using `jrnl`, often in conjunction
diff --git a/docs/usage.md b/docs/usage.md
index 1a4de2a2..9e8c3ee3 100644
--- a/docs/usage.md
+++ b/docs/usage.md
@@ -1,5 +1,8 @@
-
+
+
# Basic Usage #
`jrnl` has two modes: **composing** and **viewing**. Whenever you don't enter
diff --git a/docs_theme/assets/colors.css b/docs_theme/assets/colors.css
index 93d84b4d..3f8b46a8 100644
--- a/docs_theme/assets/colors.css
+++ b/docs_theme/assets/colors.css
@@ -1,5 +1,7 @@
-/* Copyright (C) 2012-2021 jrnl contributors
- License: https://www.gnu.org/licenses/gpl-3.0.html */
+/*
+Copyright (C) 2012-2022 jrnl contributors
+License: https://www.gnu.org/licenses/gpl-3.0.html
+*/
:root {
/* For dark bg */
diff --git a/docs_theme/assets/highlight.css b/docs_theme/assets/highlight.css
index b7052917..27950c0f 100644
--- a/docs_theme/assets/highlight.css
+++ b/docs_theme/assets/highlight.css
@@ -1,4 +1,7 @@
/*
+Copyright (C) 2012-2022 jrnl contributors
+License: https://www.gnu.org/licenses/gpl-3.0.html
+
Atom One Dark With support for ReasonML by Gidi Morris, based off work by
Daniel Gamage
diff --git a/docs_theme/assets/index.css b/docs_theme/assets/index.css
index a7ed63ee..d6e834e3 100644
--- a/docs_theme/assets/index.css
+++ b/docs_theme/assets/index.css
@@ -1,5 +1,8 @@
-/* Copyright (C) 2012-2021 jrnl contributors
- License: https://www.gnu.org/licenses/gpl-3.0.html */
+/*
+Copyright (C) 2012-2022 jrnl contributors
+License: https://www.gnu.org/licenses/gpl-3.0.html
+*/
+
/* reset */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}
body {
diff --git a/docs_theme/assets/theme.css b/docs_theme/assets/theme.css
index 20c4cd89..152e0521 100644
--- a/docs_theme/assets/theme.css
+++ b/docs_theme/assets/theme.css
@@ -1,5 +1,7 @@
-/* Copyright (C) 2012-2021 jrnl contributors
- License: https://www.gnu.org/licenses/gpl-3.0.html */
+/*
+Copyright (C) 2012-2022 jrnl contributors
+License: https://www.gnu.org/licenses/gpl-3.0.html
+*/
/* ------------------------------------------------------------ */
/* Overrides for jrnl theme */
diff --git a/docs_theme/index.html b/docs_theme/index.html
index b21493d2..57c90c76 100644
--- a/docs_theme/index.html
+++ b/docs_theme/index.html
@@ -1,5 +1,8 @@
-
+
+
diff --git a/docs_theme/main.html b/docs_theme/main.html
index 18a4f1cf..7849dd02 100644
--- a/docs_theme/main.html
+++ b/docs_theme/main.html
@@ -1,3 +1,8 @@
+
+
{% extends "base.html" %}
{%- block search_button %}
diff --git a/docs_theme/search.html b/docs_theme/search.html
index b191fc2a..37bcfe5d 100644
--- a/docs_theme/search.html
+++ b/docs_theme/search.html
@@ -1,3 +1,8 @@
+
+
{% extends "main.html" %}
{% block content %}
diff --git a/jrnl/DayOneJournal.py b/jrnl/DayOneJournal.py
index 1e484365..8034e36b 100644
--- a/jrnl/DayOneJournal.py
+++ b/jrnl/DayOneJournal.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
import datetime
import fnmatch
import os
diff --git a/jrnl/EncryptedJournal.py b/jrnl/EncryptedJournal.py
index fb4ba5ce..e2aec8ed 100644
--- a/jrnl/EncryptedJournal.py
+++ b/jrnl/EncryptedJournal.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
import base64
import hashlib
import logging
diff --git a/jrnl/Entry.py b/jrnl/Entry.py
index c1b3e8e3..a370a21c 100644
--- a/jrnl/Entry.py
+++ b/jrnl/Entry.py
@@ -1,7 +1,6 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
-
import datetime
import re
diff --git a/jrnl/FolderJournal.py b/jrnl/FolderJournal.py
index a381c872..b5cf2e71 100644
--- a/jrnl/FolderJournal.py
+++ b/jrnl/FolderJournal.py
@@ -1,8 +1,6 @@
-# encoding: utf-8
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
-
import codecs
import fnmatch
import os
diff --git a/jrnl/Journal.py b/jrnl/Journal.py
index b2e5383b..301bba76 100644
--- a/jrnl/Journal.py
+++ b/jrnl/Journal.py
@@ -1,7 +1,6 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
-
import datetime
import logging
import os
diff --git a/jrnl/__init__.py b/jrnl/__init__.py
index 550d580f..2fc7e3bf 100644
--- a/jrnl/__init__.py
+++ b/jrnl/__init__.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
try:
diff --git a/jrnl/__main__.py b/jrnl/__main__.py
index 49497161..06ffedaa 100644
--- a/jrnl/__main__.py
+++ b/jrnl/__main__.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
import sys
diff --git a/jrnl/args.py b/jrnl/args.py
index 1f3e3c9a..5fd8e370 100644
--- a/jrnl/args.py
+++ b/jrnl/args.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
import argparse
diff --git a/jrnl/cli.py b/jrnl/cli.py
index 305e4502..e81fb1ce 100644
--- a/jrnl/cli.py
+++ b/jrnl/cli.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
import logging
diff --git a/jrnl/color.py b/jrnl/color.py
index 7cc8df2f..7268d773 100644
--- a/jrnl/color.py
+++ b/jrnl/color.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
import re
from string import punctuation
from string import whitespace
diff --git a/jrnl/commands.py b/jrnl/commands.py
index 7ef9f09c..dd2ce52b 100644
--- a/jrnl/commands.py
+++ b/jrnl/commands.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
"""
Functions in this file are standalone commands. All standalone commands are split into
two categories depending on whether they require the config to be loaded to be able to
@@ -38,7 +41,7 @@ def preconfig_version(_):
version_str = f"""{__title__} version {__version__}
-Copyright (C) 2012-2021 jrnl contributors
+Copyright (C) 2012-2022 jrnl contributors
This is free software, and you are welcome to redistribute it under certain
conditions; for details, see: https://www.gnu.org/licenses/gpl-3.0.html"""
diff --git a/jrnl/config.py b/jrnl/config.py
index c9b860bb..40746d3e 100644
--- a/jrnl/config.py
+++ b/jrnl/config.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
import logging
import os
diff --git a/jrnl/editor.py b/jrnl/editor.py
index 91aa4d52..a6bff5d3 100644
--- a/jrnl/editor.py
+++ b/jrnl/editor.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
import logging
import os
import subprocess
diff --git a/jrnl/exception.py b/jrnl/exception.py
index fdfa61a4..6dfc6593 100644
--- a/jrnl/exception.py
+++ b/jrnl/exception.py
@@ -1,5 +1,6 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
+
from jrnl.messages import Message
from jrnl.output import print_msg
diff --git a/jrnl/install.py b/jrnl/install.py
index 88663d58..a7dc6318 100644
--- a/jrnl/install.py
+++ b/jrnl/install.py
@@ -1,7 +1,6 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
-
import glob
import logging
import os
diff --git a/jrnl/jrnl.py b/jrnl/jrnl.py
index 18ee4ed4..2c5fafae 100644
--- a/jrnl/jrnl.py
+++ b/jrnl/jrnl.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
import logging
diff --git a/jrnl/messages/Message.py b/jrnl/messages/Message.py
index 2c02e8a0..86809192 100644
--- a/jrnl/messages/Message.py
+++ b/jrnl/messages/Message.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
from typing import NamedTuple
from typing import Mapping
diff --git a/jrnl/messages/MsgStyle.py b/jrnl/messages/MsgStyle.py
index 41daa535..b8e15316 100644
--- a/jrnl/messages/MsgStyle.py
+++ b/jrnl/messages/MsgStyle.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
from enum import Enum
from typing import NamedTuple
from typing import Callable
diff --git a/jrnl/messages/MsgText.py b/jrnl/messages/MsgText.py
index f8e85b60..8de0d518 100644
--- a/jrnl/messages/MsgText.py
+++ b/jrnl/messages/MsgText.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
from enum import Enum
diff --git a/jrnl/messages/__init__.py b/jrnl/messages/__init__.py
index 930fbe75..f2eaec4c 100644
--- a/jrnl/messages/__init__.py
+++ b/jrnl/messages/__init__.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
from .Message import Message
from .MsgStyle import MsgStyle
from .MsgText import MsgText
diff --git a/jrnl/os_compat.py b/jrnl/os_compat.py
index 6615b886..1ede4534 100644
--- a/jrnl/os_compat.py
+++ b/jrnl/os_compat.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
import shlex
diff --git a/jrnl/output.py b/jrnl/output.py
index fb21990b..3eae32cc 100644
--- a/jrnl/output.py
+++ b/jrnl/output.py
@@ -1,5 +1,6 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
+
import textwrap
from typing import Union
diff --git a/jrnl/override.py b/jrnl/override.py
index 760b003e..6ef378f4 100644
--- a/jrnl/override.py
+++ b/jrnl/override.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
from .config import update_config, make_yaml_valid_dict
from argparse import Namespace
diff --git a/jrnl/path.py b/jrnl/path.py
index bb465d6e..cf13a2a8 100644
--- a/jrnl/path.py
+++ b/jrnl/path.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
import os.path
diff --git a/jrnl/plugins/__init__.py b/jrnl/plugins/__init__.py
index e3484927..f994e4fc 100644
--- a/jrnl/plugins/__init__.py
+++ b/jrnl/plugins/__init__.py
@@ -1,5 +1,4 @@
-# encoding: utf-8
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
from .fancy_exporter import FancyExporter
diff --git a/jrnl/plugins/dates_exporter.py b/jrnl/plugins/dates_exporter.py
index e032b652..c1c8fd0a 100644
--- a/jrnl/plugins/dates_exporter.py
+++ b/jrnl/plugins/dates_exporter.py
@@ -1,6 +1,6 @@
-# encoding: utf-8
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
+
from collections import Counter
from .text_exporter import TextExporter
diff --git a/jrnl/plugins/fancy_exporter.py b/jrnl/plugins/fancy_exporter.py
index 0c440e96..cdbd4b08 100644
--- a/jrnl/plugins/fancy_exporter.py
+++ b/jrnl/plugins/fancy_exporter.py
@@ -1,5 +1,4 @@
-# encoding: utf-8
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
from jrnl.exception import JrnlException
diff --git a/jrnl/plugins/jrnl_importer.py b/jrnl/plugins/jrnl_importer.py
index cfdee0d7..0468b476 100644
--- a/jrnl/plugins/jrnl_importer.py
+++ b/jrnl/plugins/jrnl_importer.py
@@ -1,5 +1,4 @@
-# encoding: utf-8
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
import sys
diff --git a/jrnl/plugins/json_exporter.py b/jrnl/plugins/json_exporter.py
index 666d9a3d..abce6f50 100644
--- a/jrnl/plugins/json_exporter.py
+++ b/jrnl/plugins/json_exporter.py
@@ -1,5 +1,4 @@
-# encoding: utf-8
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
import json
diff --git a/jrnl/plugins/markdown_exporter.py b/jrnl/plugins/markdown_exporter.py
index 63be85e0..30614746 100644
--- a/jrnl/plugins/markdown_exporter.py
+++ b/jrnl/plugins/markdown_exporter.py
@@ -1,5 +1,4 @@
-# encoding: utf-8
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
import os
diff --git a/jrnl/plugins/tag_exporter.py b/jrnl/plugins/tag_exporter.py
index 1153fa01..9c2b7fb5 100644
--- a/jrnl/plugins/tag_exporter.py
+++ b/jrnl/plugins/tag_exporter.py
@@ -1,5 +1,4 @@
-# encoding: utf-8
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
from .text_exporter import TextExporter
diff --git a/jrnl/plugins/text_exporter.py b/jrnl/plugins/text_exporter.py
index d82a1e40..55c0d83a 100644
--- a/jrnl/plugins/text_exporter.py
+++ b/jrnl/plugins/text_exporter.py
@@ -1,5 +1,4 @@
-# encoding: utf-8
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
import os
diff --git a/jrnl/plugins/util.py b/jrnl/plugins/util.py
index ae49a2a8..a2188306 100644
--- a/jrnl/plugins/util.py
+++ b/jrnl/plugins/util.py
@@ -1,5 +1,4 @@
-# encoding: utf-8
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
diff --git a/jrnl/plugins/xml_exporter.py b/jrnl/plugins/xml_exporter.py
index 9901f4b7..10050b50 100644
--- a/jrnl/plugins/xml_exporter.py
+++ b/jrnl/plugins/xml_exporter.py
@@ -1,5 +1,4 @@
-# encoding: utf-8
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
from xml.dom import minidom
diff --git a/jrnl/plugins/yaml_exporter.py b/jrnl/plugins/yaml_exporter.py
index f78c781b..00a4613b 100644
--- a/jrnl/plugins/yaml_exporter.py
+++ b/jrnl/plugins/yaml_exporter.py
@@ -1,5 +1,4 @@
-# encoding: utf-8
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
import os
diff --git a/jrnl/prompt.py b/jrnl/prompt.py
index 843e7425..4cd38d90 100644
--- a/jrnl/prompt.py
+++ b/jrnl/prompt.py
@@ -1,5 +1,6 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
+
from jrnl.messages import Message
from jrnl.messages import MsgText
from jrnl.messages import MsgStyle
diff --git a/jrnl/time.py b/jrnl/time.py
index f4e7319d..c457c12b 100644
--- a/jrnl/time.py
+++ b/jrnl/time.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
import datetime
diff --git a/jrnl/upgrade.py b/jrnl/upgrade.py
index 5c033534..29ff8eb4 100644
--- a/jrnl/upgrade.py
+++ b/jrnl/upgrade.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
import os
diff --git a/poetry.lock b/poetry.lock
index 88e973cb..2a0abc4c 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -46,7 +46,7 @@ test = ["astroid", "pytest"]
name = "atomicwrites"
version = "1.4.0"
description = "Atomic file writes."
-category = "main"
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
@@ -54,7 +54,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
name = "attrs"
version = "21.4.0"
description = "Classes Without Boilerplate"
-category = "main"
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
@@ -118,7 +118,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}
[[package]]
name = "colorama"
-version = "0.4.4"
+version = "0.4.5"
description = "Cross-platform colored terminal text."
category = "main"
optional = false
@@ -128,7 +128,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
name = "commonmark"
version = "0.9.1"
description = "Python parser for the CommonMark Markdown spec"
-category = "dev"
+category = "main"
optional = false
python-versions = "*"
@@ -162,6 +162,14 @@ category = "dev"
optional = false
python-versions = ">=3.5"
+[[package]]
+name = "distlib"
+version = "0.3.4"
+description = "Distribution utilities"
+category = "dev"
+optional = false
+python-versions = "*"
+
[[package]]
name = "executing"
version = "0.8.3"
@@ -170,6 +178,18 @@ category = "dev"
optional = false
python-versions = "*"
+[[package]]
+name = "filelock"
+version = "3.7.1"
+description = "A platform independent file lock."
+category = "dev"
+optional = false
+python-versions = ">=3.7"
+
+[package.extras]
+docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"]
+testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"]
+
[[package]]
name = "flake8"
version = "4.0.1"
@@ -201,13 +221,13 @@ dev = ["twine", "markdown", "flake8", "wheel"]
name = "glob2"
version = "0.7"
description = "Version of the glob module that can capture patterns and supports recursive wildcards"
-category = "main"
+category = "dev"
optional = false
python-versions = "*"
[[package]]
name = "importlib-metadata"
-version = "4.11.3"
+version = "4.11.4"
description = "Read metadata from Python packages"
category = "main"
optional = false
@@ -225,7 +245,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-
name = "iniconfig"
version = "1.1.1"
description = "iniconfig: brain-dead simple config-ini parsing"
-category = "main"
+category = "dev"
optional = false
python-versions = "*"
@@ -244,7 +264,7 @@ toml = {version = ">=0.10.2", markers = "python_version > \"3.6\""}
[[package]]
name = "ipython"
-version = "8.3.0"
+version = "8.4.0"
description = "IPython: Productive Interactive Computing"
category = "dev"
optional = false
@@ -340,7 +360,7 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-
name = "mako"
version = "1.2.0"
description = "A super-fast templating language that borrows the best ideas from the existing templating languages."
-category = "main"
+category = "dev"
optional = false
python-versions = ">=3.7"
@@ -370,7 +390,7 @@ testing = ["coverage", "pyyaml"]
name = "markupsafe"
version = "2.1.1"
description = "Safely add untrusted strings to HTML/XML markup."
-category = "main"
+category = "dev"
optional = false
python-versions = ">=3.7"
@@ -436,7 +456,7 @@ python-versions = "*"
name = "packaging"
version = "21.3"
description = "Core utilities for Python packages"
-category = "main"
+category = "dev"
optional = false
python-versions = ">=3.6"
@@ -447,7 +467,7 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
name = "parse"
version = "1.19.0"
description = "parse() is the opposite of format()"
-category = "main"
+category = "dev"
optional = false
python-versions = "*"
@@ -455,7 +475,7 @@ python-versions = "*"
name = "parse-type"
version = "0.6.0"
description = "Simplifies to build parse types based on the parse module"
-category = "main"
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*"
@@ -487,6 +507,14 @@ python-versions = ">=3.6"
qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
testing = ["docopt", "pytest (<6.0.0)"]
+[[package]]
+name = "pastel"
+version = "0.2.1"
+description = "Bring colors to your terminal."
+category = "dev"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+
[[package]]
name = "pathspec"
version = "0.9.0"
@@ -530,7 +558,7 @@ test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytes
name = "pluggy"
version = "1.0.0"
description = "plugin and hook calling mechanisms for python"
-category = "main"
+category = "dev"
optional = false
python-versions = ">=3.6"
@@ -538,6 +566,21 @@ python-versions = ">=3.6"
dev = ["pre-commit", "tox"]
testing = ["pytest", "pytest-benchmark"]
+[[package]]
+name = "poethepoet"
+version = "0.13.1"
+description = "A task runner that works well with poetry."
+category = "dev"
+optional = false
+python-versions = ">=3.6.2"
+
+[package.dependencies]
+pastel = ">=0.2.1,<0.3.0"
+tomli = ">=1.2.2"
+
+[package.extras]
+poetry_plugin = ["poetry (>=1.0,<2.0)"]
+
[[package]]
name = "pprintpp"
version = "0.4.0"
@@ -580,7 +623,7 @@ tests = ["pytest"]
name = "py"
version = "1.11.0"
description = "library with cross-python path, ini-parsing, io, code, log facilities"
-category = "main"
+category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
@@ -612,15 +655,15 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
name = "pygments"
version = "2.12.0"
description = "Pygments is a syntax highlighting package written in Python."
-category = "dev"
+category = "main"
optional = false
python-versions = ">=3.6"
[[package]]
name = "pyparsing"
-version = "3.0.8"
+version = "3.0.9"
description = "pyparsing module - Classes and methods to define and execute parsing grammars"
-category = "main"
+category = "dev"
optional = false
python-versions = ">=3.6.8"
@@ -643,7 +686,7 @@ tomli = {version = "*", markers = "python_version < \"3.11\""}
name = "pytest"
version = "7.1.2"
description = "pytest: simple powerful testing with Python"
-category = "main"
+category = "dev"
optional = false
python-versions = ">=3.7"
@@ -664,7 +707,7 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.
name = "pytest-bdd"
version = "5.0.0"
description = "BDD for pytest"
-category = "main"
+category = "dev"
optional = false
python-versions = ">=3.6"
@@ -745,9 +788,9 @@ pyyaml = "*"
[[package]]
name = "rich"
-version = "12.4.0"
+version = "12.4.4"
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
-category = "dev"
+category = "main"
optional = false
python-versions = ">=3.6.3,<4.0.0"
@@ -803,7 +846,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
[[package]]
name = "stack-data"
-version = "0.2.0"
+version = "0.3.0"
description = "Extract data from python stack frames and tracebacks for informative displays"
category = "dev"
optional = false
@@ -829,7 +872,7 @@ python-versions = "*"
name = "toml"
version = "0.10.2"
description = "Python Library for Tom's Obvious, Minimal Language"
-category = "main"
+category = "dev"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
@@ -837,20 +880,42 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
name = "tomli"
version = "2.0.1"
description = "A lil' TOML parser"
-category = "main"
+category = "dev"
optional = false
python-versions = ">=3.7"
+[[package]]
+name = "tox"
+version = "3.25.0"
+description = "tox is a generic virtualenv management and test command line tool"
+category = "dev"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+
+[package.dependencies]
+colorama = {version = ">=0.4.1", markers = "platform_system == \"Windows\""}
+filelock = ">=3.0.0"
+packaging = ">=14"
+pluggy = ">=0.12.0"
+py = ">=1.4.17"
+six = ">=1.14.0"
+toml = ">=0.9.4"
+virtualenv = ">=16.0.0,<20.0.0 || >20.0.0,<20.0.1 || >20.0.1,<20.0.2 || >20.0.2,<20.0.3 || >20.0.3,<20.0.4 || >20.0.4,<20.0.5 || >20.0.5,<20.0.6 || >20.0.6,<20.0.7 || >20.0.7"
+
+[package.extras]
+docs = ["pygments-github-lexers (>=0.0.5)", "sphinx (>=2.0.0)", "sphinxcontrib-autoprogram (>=0.1.5)", "towncrier (>=18.5.0)"]
+testing = ["flaky (>=3.4.0)", "freezegun (>=0.3.11)", "pytest (>=4.0.0)", "pytest-cov (>=2.5.1)", "pytest-mock (>=1.10.0)", "pytest-randomly (>=1.0.0)", "psutil (>=5.6.1)", "pathlib2 (>=2.3.3)"]
+
[[package]]
name = "traitlets"
-version = "5.1.1"
-description = "Traitlets Python configuration system"
+version = "5.3.0"
+description = ""
category = "dev"
optional = false
python-versions = ">=3.7"
[package.extras]
-test = ["pytest"]
+test = ["pre-commit", "pytest"]
[[package]]
name = "typing-extensions"
@@ -871,9 +936,27 @@ python-versions = "*"
[package.dependencies]
pytz = "*"
+[[package]]
+name = "virtualenv"
+version = "20.14.1"
+description = "Virtual Python Environment builder"
+category = "dev"
+optional = false
+python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
+
+[package.dependencies]
+distlib = ">=0.3.1,<1"
+filelock = ">=3.2,<4"
+platformdirs = ">=2,<3"
+six = ">=1.9.0,<2"
+
+[package.extras]
+docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=21.3)"]
+testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"]
+
[[package]]
name = "watchdog"
-version = "2.1.7"
+version = "2.1.9"
description = "Filesystem events monitoring"
category = "dev"
optional = false
@@ -892,11 +975,11 @@ python-versions = "*"
[[package]]
name = "xmltodict"
-version = "0.12.0"
+version = "0.13.0"
description = "Makes working with XML feel like you are working with JSON"
category = "dev"
optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+python-versions = ">=3.4"
[[package]]
name = "yq"
@@ -928,12 +1011,12 @@ docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"]
testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"]
[extras]
-testing = ["pytest", "pytest-bdd", "toml"]
+testing = []
[metadata]
lock-version = "1.1"
python-versions = ">=3.9.0, <3.12"
-content-hash = "8cd80d198bf8208d9e4b2054b89a22f1ce9faccc91aaef3440fb22e1782b0239"
+content-hash = "ceca9186ac31a0b8ec81a6cc134469842080c786971bb8642d9e67d51bd73fca"
[metadata.files]
ansiwrap = [
@@ -1046,8 +1129,8 @@ click = [
{file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
]
colorama = [
- {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
- {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
+ {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"},
+ {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"},
]
commonmark = [
{file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"},
@@ -1081,10 +1164,18 @@ decorator = [
{file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
{file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
]
+distlib = [
+ {file = "distlib-0.3.4-py2.py3-none-any.whl", hash = "sha256:6564fe0a8f51e734df6333d08b8b94d4ea8ee6b99b5ed50613f731fd4089f34b"},
+ {file = "distlib-0.3.4.zip", hash = "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579"},
+]
executing = [
{file = "executing-0.8.3-py2.py3-none-any.whl", hash = "sha256:d1eef132db1b83649a3905ca6dd8897f71ac6f8cac79a7e58a1a09cf137546c9"},
{file = "executing-0.8.3.tar.gz", hash = "sha256:c6554e21c6b060590a6d3be4b82fb78f8f0194d809de5ea7df1c093763311501"},
]
+filelock = [
+ {file = "filelock-3.7.1-py3-none-any.whl", hash = "sha256:37def7b658813cda163b56fc564cdc75e86d338246458c4c28ae84cabefa2404"},
+ {file = "filelock-3.7.1.tar.gz", hash = "sha256:3a0fd85166ad9dbab54c9aec96737b744106dc5f15c0b09a6744a445299fcf04"},
+]
flake8 = [
{file = "flake8-4.0.1-py2.py3-none-any.whl", hash = "sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d"},
{file = "flake8-4.0.1.tar.gz", hash = "sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d"},
@@ -1097,8 +1188,8 @@ glob2 = [
{file = "glob2-0.7.tar.gz", hash = "sha256:85c3dbd07c8aa26d63d7aacee34fa86e9a91a3873bc30bf62ec46e531f92ab8c"},
]
importlib-metadata = [
- {file = "importlib_metadata-4.11.3-py3-none-any.whl", hash = "sha256:1208431ca90a8cca1a6b8af391bb53c1a2db74e5d1cef6ddced95d4b2062edc6"},
- {file = "importlib_metadata-4.11.3.tar.gz", hash = "sha256:ea4c597ebf37142f827b8f39299579e31685c31d3a438b59f469406afd0f2539"},
+ {file = "importlib_metadata-4.11.4-py3-none-any.whl", hash = "sha256:c58c8eb8a762858f49e18436ff552e83914778e50e9d2f1660535ffb364552ec"},
+ {file = "importlib_metadata-4.11.4.tar.gz", hash = "sha256:5d26852efe48c0a32b0509ffbc583fda1a2266545a78d104a6f4aff3db17d700"},
]
iniconfig = [
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
@@ -1108,8 +1199,8 @@ ipdb = [
{file = "ipdb-0.13.9.tar.gz", hash = "sha256:951bd9a64731c444fd907a5ce268543020086a697f6be08f7cc2c9a752a278c5"},
]
ipython = [
- {file = "ipython-8.3.0-py3-none-any.whl", hash = "sha256:341456643a764c28f670409bbd5d2518f9b82c013441084ff2c2fc999698f83b"},
- {file = "ipython-8.3.0.tar.gz", hash = "sha256:807ae3cf43b84693c9272f70368440a9a7eaa2e7e6882dad943c32fbf7e51402"},
+ {file = "ipython-8.4.0-py3-none-any.whl", hash = "sha256:7ca74052a38fa25fe9bedf52da0be7d3fdd2fb027c3b778ea78dfe8c212937d1"},
+ {file = "ipython-8.4.0.tar.gz", hash = "sha256:f2db3a10254241d9b447232cec8b424847f338d9d36f9a577a6192c332a46abd"},
]
jedi = [
{file = "jedi-0.18.1-py2.py3-none-any.whl", hash = "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d"},
@@ -1216,6 +1307,10 @@ parso = [
{file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
{file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
]
+pastel = [
+ {file = "pastel-0.2.1-py2.py3-none-any.whl", hash = "sha256:4349225fcdf6c2bb34d483e523475de5bb04a5c10ef711263452cb37d7dd4364"},
+ {file = "pastel-0.2.1.tar.gz", hash = "sha256:e6581ac04e973cac858828c6202c1e1e81fee1dc7de7683f3e1ffe0bfd8a573d"},
+]
pathspec = [
{file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"},
{file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"},
@@ -1236,6 +1331,10 @@ pluggy = [
{file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
{file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
]
+poethepoet = [
+ {file = "poethepoet-0.13.1-py3-none-any.whl", hash = "sha256:47e7b38c8b5412f840447f7612a9330697e8633e7500a7340b6734f50e26e380"},
+ {file = "poethepoet-0.13.1.tar.gz", hash = "sha256:4f6962f17f5d5a453fd7fa66e3e7897e9191d4289148433efe441c81f2451a46"},
+]
pprintpp = [
{file = "pprintpp-0.4.0-py2.py3-none-any.whl", hash = "sha256:b6b4dcdd0c0c0d75e4d7b2f21a9e933e5b2ce62b26e1a54537f9651ae5a5c01d"},
{file = "pprintpp-0.4.0.tar.gz", hash = "sha256:ea826108e2c7f49dc6d66c752973c3fc9749142a798d6b254e1e301cfdbc6403"},
@@ -1273,8 +1372,8 @@ pygments = [
{file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"},
]
pyparsing = [
- {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"},
- {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"},
+ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"},
+ {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
]
pyproject-flake8 = [
{file = "pyproject-flake8-0.0.1a4.tar.gz", hash = "sha256:8ed9453f1d984cfe94c998f9840275359e29e7f435b8ddd188ae084e2dc1270c"},
@@ -1347,8 +1446,8 @@ pyyaml-env-tag = [
{file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"},
]
rich = [
- {file = "rich-12.4.0-py3-none-any.whl", hash = "sha256:fdf6f447f231289dd446d31e5ee856fb0cc7dccd852a80f3e9d5aeecccabaedc"},
- {file = "rich-12.4.0.tar.gz", hash = "sha256:7aebf67874dc5cc2c89e2cb6ac322c95bd92510df2af0296c8bf494335ef704f"},
+ {file = "rich-12.4.4-py3-none-any.whl", hash = "sha256:d2bbd99c320a2532ac71ff6a3164867884357da3e3301f0240090c5d2fdac7ec"},
+ {file = "rich-12.4.4.tar.gz", hash = "sha256:4c586de507202505346f3e32d1363eb9ed6932f0c2f63184dea88983ff4971e2"},
]
"ruamel.yaml" = [
{file = "ruamel.yaml-0.17.21-py3-none-any.whl", hash = "sha256:742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7"},
@@ -1390,8 +1489,8 @@ six = [
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
]
stack-data = [
- {file = "stack_data-0.2.0-py3-none-any.whl", hash = "sha256:999762f9c3132308789affa03e9271bbbe947bf78311851f4d485d8402ed858e"},
- {file = "stack_data-0.2.0.tar.gz", hash = "sha256:45692d41bd633a9503a5195552df22b583caf16f0b27c4e58c98d88c8b648e12"},
+ {file = "stack_data-0.3.0-py3-none-any.whl", hash = "sha256:aa1d52d14d09c7a9a12bb740e6bdfffe0f5e8f4f9218d85e7c73a8c37f7ae38d"},
+ {file = "stack_data-0.3.0.tar.gz", hash = "sha256:77bec1402dcd0987e9022326473fdbcc767304892a533ed8c29888dacb7dddbc"},
]
textwrap3 = [
{file = "textwrap3-0.9.2-py2.py3-none-any.whl", hash = "sha256:bf5f4c40faf2a9ff00a9e0791fed5da7415481054cef45bb4a3cfb1f69044ae0"},
@@ -1405,9 +1504,13 @@ tomli = [
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
{file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
]
+tox = [
+ {file = "tox-3.25.0-py2.py3-none-any.whl", hash = "sha256:0805727eb4d6b049de304977dfc9ce315a1938e6619c3ab9f38682bb04662a5a"},
+ {file = "tox-3.25.0.tar.gz", hash = "sha256:37888f3092aa4e9f835fc8cc6dadbaaa0782651c41ef359e3a5743fcb0308160"},
+]
traitlets = [
- {file = "traitlets-5.1.1-py3-none-any.whl", hash = "sha256:2d313cc50a42cd6c277e7d7dc8d4d7fedd06a2c215f78766ae7b1a66277e0033"},
- {file = "traitlets-5.1.1.tar.gz", hash = "sha256:059f456c5a7c1c82b98c2e8c799f39c9b8128f6d0d46941ee118daace9eb70c7"},
+ {file = "traitlets-5.3.0-py3-none-any.whl", hash = "sha256:65fa18961659635933100db8ca120ef6220555286949774b9cfc106f941d1c7a"},
+ {file = "traitlets-5.3.0.tar.gz", hash = "sha256:0bb9f1f9f017aa8ec187d8b1b2a7a6626a2a1d877116baba52a129bfa124f8e2"},
]
typing-extensions = [
{file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"},
@@ -1417,39 +1520,44 @@ tzlocal = [
{file = "tzlocal-2.1-py2.py3-none-any.whl", hash = "sha256:e2cb6c6b5b604af38597403e9852872d7f534962ae2954c7f35efcb1ccacf4a4"},
{file = "tzlocal-2.1.tar.gz", hash = "sha256:643c97c5294aedc737780a49d9df30889321cbe1204eac2c2ec6134035a92e44"},
]
+virtualenv = [
+ {file = "virtualenv-20.14.1-py2.py3-none-any.whl", hash = "sha256:e617f16e25b42eb4f6e74096b9c9e37713cf10bf30168fb4a739f3fa8f898a3a"},
+ {file = "virtualenv-20.14.1.tar.gz", hash = "sha256:ef589a79795589aada0c1c5b319486797c03b67ac3984c48c669c0e4f50df3a5"},
+]
watchdog = [
- {file = "watchdog-2.1.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:177bae28ca723bc00846466016d34f8c1d6a621383b6caca86745918d55c7383"},
- {file = "watchdog-2.1.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1d1cf7dfd747dec519486a98ef16097e6c480934ef115b16f18adb341df747a4"},
- {file = "watchdog-2.1.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7f14ce6adea2af1bba495acdde0e510aecaeb13b33f7bd2f6324e551b26688ca"},
- {file = "watchdog-2.1.7-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4d0e98ac2e8dd803a56f4e10438b33a2d40390a72750cff4939b4b274e7906fa"},
- {file = "watchdog-2.1.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:81982c7884aac75017a6ecc72f1a4fedbae04181a8665a34afce9539fc1b3fab"},
- {file = "watchdog-2.1.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0b4a1fe6201c6e5a1926f5767b8664b45f0fcb429b62564a41f490ff1ce1dc7a"},
- {file = "watchdog-2.1.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6e6ae29b72977f2e1ee3d0b760d7ee47896cb53e831cbeede3e64485e5633cc8"},
- {file = "watchdog-2.1.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b9777664848160449e5b4260e0b7bc1ae0f6f4992a8b285db4ec1ef119ffa0e2"},
- {file = "watchdog-2.1.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:19b36d436578eb437e029c6b838e732ed08054956366f6dd11875434a62d2b99"},
- {file = "watchdog-2.1.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b61acffaf5cd5d664af555c0850f9747cc5f2baf71e54bbac164c58398d6ca7b"},
- {file = "watchdog-2.1.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1e877c70245424b06c41ac258023ea4bd0c8e4ff15d7c1368f17cd0ae6e351dd"},
- {file = "watchdog-2.1.7-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d802d65262a560278cf1a65ef7cae4e2bc7ecfe19e5451349e4c67e23c9dc420"},
- {file = "watchdog-2.1.7-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b3750ee5399e6e9c69eae8b125092b871ee9e2fcbd657a92747aea28f9056a5c"},
- {file = "watchdog-2.1.7-py3-none-manylinux2014_aarch64.whl", hash = "sha256:ed6d9aad09a2a948572224663ab00f8975fae242aa540509737bb4507133fa2d"},
- {file = "watchdog-2.1.7-py3-none-manylinux2014_armv7l.whl", hash = "sha256:b26e13e8008dcaea6a909e91d39b629a39635d1a8a7239dd35327c74f4388601"},
- {file = "watchdog-2.1.7-py3-none-manylinux2014_i686.whl", hash = "sha256:0908bb50f6f7de54d5d31ec3da1654cb7287c6b87bce371954561e6de379d690"},
- {file = "watchdog-2.1.7-py3-none-manylinux2014_ppc64.whl", hash = "sha256:bdcbf75580bf4b960fb659bbccd00123d83119619195f42d721e002c1621602f"},
- {file = "watchdog-2.1.7-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:81a5861d0158a7e55fe149335fb2bbfa6f48cbcbd149b52dbe2cd9a544034bbd"},
- {file = "watchdog-2.1.7-py3-none-manylinux2014_s390x.whl", hash = "sha256:03b43d583df0f18782a0431b6e9e9965c5b3f7cf8ec36a00b930def67942c385"},
- {file = "watchdog-2.1.7-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ae934e34c11aa8296c18f70bf66ed60e9870fcdb4cc19129a04ca83ab23e7055"},
- {file = "watchdog-2.1.7-py3-none-win32.whl", hash = "sha256:49639865e3db4be032a96695c98ac09eed39bbb43fe876bb217da8f8101689a6"},
- {file = "watchdog-2.1.7-py3-none-win_amd64.whl", hash = "sha256:340b875aecf4b0e6672076a6f05cfce6686935559bb6d34cebedee04126a9566"},
- {file = "watchdog-2.1.7-py3-none-win_ia64.whl", hash = "sha256:351e09b6d9374d5bcb947e6ac47a608ec25b9d70583e9db00b2fcdb97b00b572"},
- {file = "watchdog-2.1.7.tar.gz", hash = "sha256:3fd47815353be9c44eebc94cc28fe26b2b0c5bd889dafc4a5a7cbdf924143480"},
+ {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330"},
+ {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d"},
+ {file = "watchdog-2.1.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658"},
+ {file = "watchdog-2.1.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591"},
+ {file = "watchdog-2.1.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33"},
+ {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846"},
+ {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3"},
+ {file = "watchdog-2.1.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654"},
+ {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39"},
+ {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7"},
+ {file = "watchdog-2.1.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd"},
+ {file = "watchdog-2.1.9-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3"},
+ {file = "watchdog-2.1.9-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d"},
+ {file = "watchdog-2.1.9-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9"},
+ {file = "watchdog-2.1.9-py3-none-manylinux2014_aarch64.whl", hash = "sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213"},
+ {file = "watchdog-2.1.9-py3-none-manylinux2014_armv7l.whl", hash = "sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892"},
+ {file = "watchdog-2.1.9-py3-none-manylinux2014_i686.whl", hash = "sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153"},
+ {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64.whl", hash = "sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306"},
+ {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412"},
+ {file = "watchdog-2.1.9-py3-none-manylinux2014_s390x.whl", hash = "sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1"},
+ {file = "watchdog-2.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6"},
+ {file = "watchdog-2.1.9-py3-none-win32.whl", hash = "sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1"},
+ {file = "watchdog-2.1.9-py3-none-win_amd64.whl", hash = "sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c"},
+ {file = "watchdog-2.1.9-py3-none-win_ia64.whl", hash = "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428"},
+ {file = "watchdog-2.1.9.tar.gz", hash = "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609"},
]
wcwidth = [
{file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"},
{file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"},
]
xmltodict = [
- {file = "xmltodict-0.12.0-py2.py3-none-any.whl", hash = "sha256:8bbcb45cc982f48b2ca8fe7e7827c5d792f217ecf1792626f808bf41c3b86051"},
- {file = "xmltodict-0.12.0.tar.gz", hash = "sha256:50d8c638ed7ecb88d90561beedbf720c9b4e851a9fa6c47ebd64e99d166d8a21"},
+ {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"},
+ {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"},
]
yq = [
{file = "yq-2.14.0-py3-none-any.whl", hash = "sha256:b6321b29cb39c4e92a4a6f16d47d99a024650211e45e09a02d1906ec45fbaede"},
diff --git a/pyproject.toml b/pyproject.toml
index e37c3767..7733d0e2 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -37,20 +37,12 @@ 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
-# Minimal deps required for testing
-# I don't like repeating deps here, but
-# there's no other way to do this yet until poetry v1.2 releases
-# see: https://github.com/python-poetry/poetry/issues/1644
-pytest = { version = ">=6.2", optional = true }
-pytest-bdd = { version = ">=4.0.1", optional = true }
-toml = { version = ">=0.10", optional = true }
-rich = "^12.2.0"
-
[tool.poetry.dev-dependencies]
mkdocs = ">=1.0,<1.3"
black = { version = ">=21.5b2", allow-prereleases = true }
@@ -58,9 +50,11 @@ 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" ]
@@ -68,6 +62,49 @@ 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
@@ -106,3 +143,25 @@ extend-ignore = "E101,E111,E114,E115,E116,E117,E12,E13,E2,E3,E401,E5,E70,W1,W2,W
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}
+"""
+
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/tests/bdd/features/build.feature b/tests/bdd/features/build.feature
index e9b47b49..d2f5e950 100644
--- a/tests/bdd/features/build.feature
+++ b/tests/bdd/features/build.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Build process
Scenario: Version numbers should stay in sync
diff --git a/tests/bdd/features/change_time.feature b/tests/bdd/features/change_time.feature
index bd8e77f7..7f4a08e3 100644
--- a/tests/bdd/features/change_time.feature
+++ b/tests/bdd/features/change_time.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Change entry times in journal
Scenario Outline: Change time flag changes single entry timestamp
Given we use the config ""
diff --git a/tests/bdd/features/config_file.feature b/tests/bdd/features/config_file.feature
index 168cd7aa..76e93059 100644
--- a/tests/bdd/features/config_file.feature
+++ b/tests/bdd/features/config_file.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Multiple journals
Scenario: Read a journal from an alternate config
diff --git a/tests/bdd/features/core.feature b/tests/bdd/features/core.feature
index 4399341d..7b8de194 100644
--- a/tests/bdd/features/core.feature
+++ b/tests/bdd/features/core.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Functionality of jrnl outside of actually handling journals
Scenario: Displaying the version number
diff --git a/tests/bdd/features/datetime.feature b/tests/bdd/features/datetime.feature
index 1b9d00b9..28d63169 100644
--- a/tests/bdd/features/datetime.feature
+++ b/tests/bdd/features/datetime.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Reading and writing to journal with custom date formats
Scenario: Dates can include a time
diff --git a/tests/bdd/features/delete.feature b/tests/bdd/features/delete.feature
index fe323966..806abb18 100644
--- a/tests/bdd/features/delete.feature
+++ b/tests/bdd/features/delete.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Delete entries from journal
Scenario Outline: Delete flag allows deletion of single entry
Given we use the config ""
diff --git a/tests/bdd/features/encrypt.feature b/tests/bdd/features/encrypt.feature
index 09a80bcc..16c8855c 100644
--- a/tests/bdd/features/encrypt.feature
+++ b/tests/bdd/features/encrypt.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Encrypting and decrypting journals
Scenario: Decrypting a journal
diff --git a/tests/bdd/features/file_storage.feature b/tests/bdd/features/file_storage.feature
index 5cb6ba45..0e54f620 100644
--- a/tests/bdd/features/file_storage.feature
+++ b/tests/bdd/features/file_storage.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Journals iteracting with the file system in a way that users can see
Scenario: Adding entries to a Folder journal should generate date files
diff --git a/tests/bdd/features/format.feature b/tests/bdd/features/format.feature
index ce29a016..9781ff51 100644
--- a/tests/bdd/features/format.feature
+++ b/tests/bdd/features/format.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Custom formats
Scenario Outline: Short printing via --format flag
diff --git a/tests/bdd/features/import.feature b/tests/bdd/features/import.feature
index 920cddf2..3872702e 100644
--- a/tests/bdd/features/import.feature
+++ b/tests/bdd/features/import.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Importing data
Scenario Outline: --import allows new entry from stdin
diff --git a/tests/bdd/features/multiple_journals.feature b/tests/bdd/features/multiple_journals.feature
index 09bd71fd..642149ca 100644
--- a/tests/bdd/features/multiple_journals.feature
+++ b/tests/bdd/features/multiple_journals.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Multiple journals
Scenario: Loading a config with two journals
diff --git a/tests/bdd/features/override.feature b/tests/bdd/features/override.feature
index 90b7e40b..9af459f3 100644
--- a/tests/bdd/features/override.feature
+++ b/tests/bdd/features/override.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Implementing Runtime Overrides for Select Configuration Keys
Scenario: Override configured editor with built-in input === editor:''
diff --git a/tests/bdd/features/password.feature b/tests/bdd/features/password.feature
index 23a08aab..cf00f85c 100644
--- a/tests/bdd/features/password.feature
+++ b/tests/bdd/features/password.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Using the installed keyring
Scenario: Storing a password in keyring
diff --git a/tests/bdd/features/search.feature b/tests/bdd/features/search.feature
index 60b4fefb..239f74d5 100644
--- a/tests/bdd/features/search.feature
+++ b/tests/bdd/features/search.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Searching in a journal
Scenario Outline: Displaying entries using -on today should display entries created today
diff --git a/tests/bdd/features/star.feature b/tests/bdd/features/star.feature
index f59a7ecc..825ee2fa 100644
--- a/tests/bdd/features/star.feature
+++ b/tests/bdd/features/star.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Starring entries
Scenario Outline: Starring an entry will mark it in the journal file
diff --git a/tests/bdd/features/tag.feature b/tests/bdd/features/tag.feature
index a62b5ac8..1d762431 100644
--- a/tests/bdd/features/tag.feature
+++ b/tests/bdd/features/tag.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Tagging
# See search.feature for tag-related searches
# And format.feature for tag-related output
diff --git a/tests/bdd/features/upgrade.feature b/tests/bdd/features/upgrade.feature
index c092dedb..5e53130a 100644
--- a/tests/bdd/features/upgrade.feature
+++ b/tests/bdd/features/upgrade.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Upgrading Journals from 1.x.x to 2.x.x
Scenario: Upgrade and parse journals with square brackets
diff --git a/tests/bdd/features/write.feature b/tests/bdd/features/write.feature
index ede1934b..fe0573ff 100644
--- a/tests/bdd/features/write.feature
+++ b/tests/bdd/features/write.feature
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
Feature: Writing new entries.
Scenario Outline: Multiline entry with punctuation should keep title punctuation
diff --git a/tests/bdd/test_features.py b/tests/bdd/test_features.py
index 04f9d46f..fda146e1 100644
--- a/tests/bdd/test_features.py
+++ b/tests/bdd/test_features.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
from pytest_bdd import scenarios
scenarios("features/build.feature")
diff --git a/tests/conftest.py b/tests/conftest.py
index c4dc5ef5..ed85affa 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
from pytest import mark
diff --git a/tests/lib/fixtures.py b/tests/lib/fixtures.py
index 6fc7cc2a..1ad17708 100644
--- a/tests/lib/fixtures.py
+++ b/tests/lib/fixtures.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
from collections import defaultdict
diff --git a/tests/lib/given_steps.py b/tests/lib/given_steps.py
index 4b545849..6da84643 100644
--- a/tests/lib/given_steps.py
+++ b/tests/lib/given_steps.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
from datetime import datetime
diff --git a/tests/lib/helpers.py b/tests/lib/helpers.py
index ad68cde3..39a24f71 100644
--- a/tests/lib/helpers.py
+++ b/tests/lib/helpers.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
import functools
diff --git a/tests/lib/then_steps.py b/tests/lib/then_steps.py
index 5ec83d3c..08d8ddc7 100644
--- a/tests/lib/then_steps.py
+++ b/tests/lib/then_steps.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
import json
diff --git a/tests/lib/when_steps.py b/tests/lib/when_steps.py
index bc1d742d..759c708d 100644
--- a/tests/lib/when_steps.py
+++ b/tests/lib/when_steps.py
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
from contextlib import ExitStack
diff --git a/tests/unit/test_color.py b/tests/unit/test_color.py
index 527b8e89..800d619a 100644
--- a/tests/unit/test_color.py
+++ b/tests/unit/test_color.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
from colorama import Fore
from colorama import Style
import pytest
diff --git a/tests/unit/test_config_file.py b/tests/unit/test_config_file.py
index f9cdb7ec..0ffb3b38 100644
--- a/tests/unit/test_config_file.py
+++ b/tests/unit/test_config_file.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
import pytest
import os
diff --git a/tests/unit/test_export.py b/tests/unit/test_export.py
index 1ca8856f..c5137794 100644
--- a/tests/unit/test_export.py
+++ b/tests/unit/test_export.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
import pytest
from jrnl.exception import JrnlException
diff --git a/tests/unit/test_install.py b/tests/unit/test_install.py
index bc36b927..8e5db8df 100644
--- a/tests/unit/test_install.py
+++ b/tests/unit/test_install.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
import sys
from unittest import mock
diff --git a/tests/unit/test_jrnl.py b/tests/unit/test_jrnl.py
index f87f6dad..247a9fd1 100644
--- a/tests/unit/test_jrnl.py
+++ b/tests/unit/test_jrnl.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
from unittest import mock
import pytest
diff --git a/tests/unit/test_os_compat.py b/tests/unit/test_os_compat.py
index 02d54716..2a3b0b14 100644
--- a/tests/unit/test_os_compat.py
+++ b/tests/unit/test_os_compat.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
from unittest import mock
import pytest
diff --git a/tests/unit/test_output.py b/tests/unit/test_output.py
index 0fa9f45b..e93ec44a 100644
--- a/tests/unit/test_output.py
+++ b/tests/unit/test_output.py
@@ -1,5 +1,6 @@
-# Copyright (C) 2012-2021 jrnl contributors
+# Copyright (C) 2012-2022 jrnl contributors
# License: https://www.gnu.org/licenses/gpl-3.0.html
+
from unittest.mock import Mock
from unittest.mock import patch
diff --git a/tests/unit/test_override.py b/tests/unit/test_override.py
index 2719e884..438ae03b 100644
--- a/tests/unit/test_override.py
+++ b/tests/unit/test_override.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
import pytest
from jrnl.override import _convert_dots_to_list
diff --git a/tests/unit/test_parse_args.py b/tests/unit/test_parse_args.py
index 7acae571..6c187576 100644
--- a/tests/unit/test_parse_args.py
+++ b/tests/unit/test_parse_args.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
import shlex
import pytest
diff --git a/tests/unit/test_path.py b/tests/unit/test_path.py
index a13b89e5..efc6e54d 100644
--- a/tests/unit/test_path.py
+++ b/tests/unit/test_path.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
import pytest
import random
import string
diff --git a/tests/unit/test_time.py b/tests/unit/test_time.py
index 5f22148e..8bed5f86 100644
--- a/tests/unit/test_time.py
+++ b/tests/unit/test_time.py
@@ -1,3 +1,6 @@
+# Copyright (C) 2012-2022 jrnl contributors
+# License: https://www.gnu.org/licenses/gpl-3.0.html
+
import datetime
from jrnl import time